センダ/レシーバインターフェースを提供するソフトウェアコンポーネントには、そのインターフェースを介してデ ータを送信するランナブルエンティティを1つ以上定義する必要があります。
ランナブルは以下の2通りの方法でデータを送信できます。
明示的な送信 - RTEは明示的なAPIコールを生成します。この呼び出しは最適化機能によってマク ロ化することができ、送信データのキューイングの有無も指定できます。
暗黙的な送信 - RTEは暗黙的なAPIコールを生成します。この呼び出しも最適化機能によってマク ロ化することができますが、送信データのキューイングは行えません。
センダにとってはランナブルエンティティがどのようにトリガされるかは問題ではないので、ランナブルエンティ ティの起動にはどのイベントでも使用できます。
7.4.1 明示的な送信
ポートへの明示的な送信を行う:
“Software Component Editor for: Swc”ウィンドウの“Specification”タブから、
6.1.1項「Pポート」で作成したPポート Senderを選択します。
このPポート Senderをドラッグし、ソフトウェアコンポーネントSwcのブロッ
基本ブロックRTE Accessを選択してソフトウェアコンポーネントSwcのブロ ックダイアグラム上に配置します。
RTE Access演算子の出力をSenderポートのデータエレメントSpeedに 接続します。
ツリーペイン内のランナブルRunnableEntityを選択し、データエレメント Speedのシーケンスコールをダブルクリックします。
ASCETはランナブルエンティティRunnableEntity内でデータエレメント Speedが送信されるように、シーケンス番号(ここでは5)を自動的に割り当 てます。
値が120のリテラルをダイアグラムに追加し、このリテラルをRTE Access 演算子の入力に接続します。
これで、ASCET-SEでコードを生成できるようになりました。
図40: 値120をセンダポートに明示的に送信する
データを送信するランナブルエンティティには、<DATA-SEND-POINT>で所定のインターフェースに送信する データアイテムを定義する必要があります。
センダにとっては、ランナブルエンティティがどのようにトリガされるかは問題ではないので、ランナブルエンティ ティの起動にはどのイベントでも使用できます。
<DATA-SEND-POINT>の名前は<SHORT-NAME>エレメントで定義されます。この名前はこのデータ送信ポイ ントを参照する他のエレメントの中で使用されます。このショート名は有効なC識別子である必要はありません。
ASCETが生成するコードについては、9.3.1項「センダ/レシーバ通信」を参照してください。
7.4.2 暗黙的な送信
ランナブルエンティティは、暗黙的なデータ送信を行うこともできます。このような設定は、C関数の呼び出しで はなく、RTEに定義されているグローバル変数にアクセスするシンプルなマクロとして実装されます。
ASCETで暗黙的な送信をモデリングするには以下の2通りの方法があります。
1. RTEアクセスをExplicitからImplicitに変更する
2. RTEアクセス演算子を使用せずに暗黙的通信をモデリングする RTEアクセスをImplicitに変更する:
7.4.1項「明示的な送信」の例にあるRTE Access演算子を選択します。
次の図のように、ショートカットメニューから Access → Implicit を選択しま す。
図41: RTE Access演算子のアクセスを“Implicit”に変更する
ポートへの暗黙的な送信を行う:
“Software Component Editor for: Swc”ウィンドウの“Specification”タブから、
6.1.1項「Pポート」で作成したPポート Senderを選択します。
Pポート SenderをドラッグしてソフトウェアコンポーネントSwcのブロックダ イアグラム上にドロップします。
値が120のリテラルを追加し、このリテラルをPポート Senderのデータエ レメントSpeedに接続します。
ツリーペイン内のランナブルRunnableEntityを選択し、データエレメント Speedのシーケンスコールをダブルクリックします。
ASCETはランナブルエンティティRunnableEntity内でデータエレメント Speedが送信されるように、シーケンス番号(ここでは10)を自動的に割り当 てます。
図42: 値120をセンダポートに暗黙的に送信する
暗黙的な送信の設定は明示的な送信の場合とほとんど同じですが、暗黙的な送信の定義には<DATA-SEND-POINT>エレメントの代わりに<DATA-WRITE-ACCESS>エレメントが使用されます。
ASCETが生成するコードについては、9.3.1項「センダ/レシーバ通信」を参照してください。