イーサネット変数交換
このセクションでは、イーサネット変数交換 (ETH VE) プロトコル コンポーネントに関する基本情報を提供します。
Ethernet Variable Exchange (ETH VE) は、イーサネット経由でデータを交換するための TCP/UDP に基づいたシンプルなプロトコルです。
TCP/UDP は、Xilinx が提供する Lightweight IP (lwIP) ライブラリを利用します。
このプロトコルは、保証された確定的な実行速度を持つベアメタル アプリケーションとして実行されます。
Ethernet Variable Exchange は、Typhoon HIL デバイス(HIL402、HIL101、HIL404、HIL602+、HIL604、HIL506、HIL606)でサポートされています。
ETH VE セットアップ
ETH VE セットアップ コンポーネントとダイアログ ウィンドウを表 1に示します。
成分 | コンポーネントダイアログ | コンポーネントのプロパティ |
---|---|---|
ETH VE セットアップ |
|
コンポーネントのプロパティについては表 2で説明します。
物件名 | 説明 |
---|---|
HILデバイスIDをオーバーライドする | デバイスIDが存在しないデバイス(HIL402など)にHILデバイスIDを指定できます。HILデバイスIDはMACアドレスの最後の1桁として使用されるため、一意である必要があります。例えば、2台のHIL402がETH VE経由で通信している場合、いずれかのHILデバイスIDが上書きされない限り、両方のHIL402は同じMACアドレスを持ちます。HIL402は並列接続できないため、これらの2台のHIL402は2台のPCに接続されます。 |
IPアドレス | HIL デバイスの IP アドレス。 |
サブネットマスク | サブネット トラフィック ルーティングのマスク。 |
イーサネットポート | ETH VE 通信に使用されるイーサネット ポート。 |
実行率 | 信号処理の実行速度。実行速度は、モデルで使用される他のコンポーネントと一致する必要があります。 |
Ethernet Variable Exchange を使用する HIL デバイスごとに、ETH VE セットアップ コンポーネントが 1 つだけ存在する必要があります。
ETH VE 送信
ETH VE Sendコンポーネントは表4に示されています。このブロックでは、送信ソケットの基本設定を変更できます。この場合、HILデバイスはクライアントサーバーアプリケーションのクライアントになります。
ETH VE Sendはクライアントを表します。シミュレーション開始後、クライアントは宛先IPアドレスと宛先ポートで指定されたリモートサーバーへの接続を試みます。サーバーにアクセスできる場合、アクティブな接続が確立され、システム変数がパックされ、イーサネット経由で転送されます。リモートサーバーに障害が発生した場合、クライアントは再接続を試行し続けます。
成分 | コンポーネントダイアログ | コンポーネントのプロパティ |
---|---|---|
ETH VE 送信 |
|
|
コンポーネントのプロパティを表 4に示します。
物件名 | 説明 |
---|---|
ストリームソース | 複数のETH VE Sendコンポーネントからのデータを1つのメッセージに結合できます。このプロパティは、コンポーネントが新しいデータストリームを作成するか、既存のストリームにデータを追加するかを定義します。 |
ストリームソースID | データストリームの一意のID |
インデックスを追加 | このプロパティは、既存のストリームに追加されるデータの順序を定義します。 |
サンプル時間 | メッセージの送信速度。 |
実行率 | 信号処理の実行レート。モデルの値は実行レートでサンプリングされ、サンプル時間(異なる場合がある)で送信されます。実行レートは、モデル内の他のコンポーネントと一致する必要があります。 |
プロトコル | プロトコルは TCP/IP または UDP のいずれかになります。 |
ローカル送信ポートを指定する | データがストリーミングされるポートを指定するオプション。デフォルト値は false です。 |
ローカル送信ポート | データがストリーミングされるローカル ポートを表します。ローカル送信ポートの指定がアクティブな場合にのみ使用できます。 |
宛先IPアドレス | 宛先 IP アドレス。 |
宛先ポート | データがストリーミングされるリモート サーバー ポート。 |
構成 | Sendコンポーネントのペイロードを定義します。ペイロードの設定方法の詳細については、以下の「設定パラメータ」セクションをご覧ください。 |
構成パラメータ
構成プロパティを変更するには、[データ] タブの [構成の生成] ボタンを使用します。
設定メニューでは、イーサネット経由で送信されるデータのカスタム ペイロードを定義できます。
表 5 に、構成メニューの概要を示します。
フィールド名 | 説明 |
---|---|
信号名 | 変数/定数に対して一意です。 |
信号の種類 | 信号が可変か定数かを定義します。信号が可変の場合、送信する信号を接続するコンポーネントに端子が配置されます。 |
データ型 | 変数のデータ型は、入力信号の種類に応じて継承、整数、符号なし整数、実数のいずれかになります。定数では、データを文字列として送信することもできます。文字列の場合は、文字のASCII値が左から右へ送信されます。 |
長さ(バイト) | 長さのオプションは、データ型の選択に応じて動的に変更されます。例えば、整数型と符号なし整数型の長さは、1、2、4、または8バイトです。実数型データの長さは、Float型(4バイト)またはDouble型(8バイト)です。文字列型の場合、データ長は文字数に応じて計算されます。 |
エンディアン | リトルエンディアン/ビッグエンディアン バイト順序を選択します。 |
ディメンション(数値/継承) | 同じデータ型と長さを持つ、送信する変数の数。この値は入力端子の次元を指定します。定数の場合、この値は常に1です。 |
信号値 | 定数の場合、これは送信される値を定義します。 |
ETH VE 受信
ETH VE 受信コンポーネントは表6に示されています。このコンポーネントを使用すると、受信ソケットの基本設定を行うことができます。ETH VE 受信の場合、HILデバイスはクライアントサーバーアプリケーションにおけるサーバーとして機能します。モデルには複数のETH VE 受信コンポーネントを含めることができますが、各コンポーネントには異なる受信ポートが必要です。
ETH VE Receiveは、パッシブな接続が開かれているサーバーを表します。任意のクライアントからの接続を待機します。サーバーは、任意のクライアントIPとポートからの着信接続を受け入れるように設定することも(それぞれ「送信元ポートの指定」と「送信元IPアドレスの指定」を無効にした場合)、指定したIPとポートからの接続のみを受け入れるように設定することもできます。接続が受け入れられると、サーバーはパケットの受信を開始し、解析して、データをターゲットコンポーネントに送信します。
成分 | コンポーネントダイアログ | コンポーネントのプロパティ |
---|---|---|
ETH VE 受信 |
|
|
コンポーネントのプロパティを表 7に示します。
物件名 | 説明 |
---|---|
プロトコル | プロトコルは TCP/IP または UDP のいずれかになります。 |
ローカル受信ポート | サーバーの受信ポートを指定します。 |
送信元ポートを指定する | このオプションを有効にすると、指定された送信ポートを持つクライアントからの受信接続のみを受け入れるようになります。TCP/IPスタックの制限により、このオプションの使用は強く推奨されません(例えば、OS上で実行されるクライアントが指定されたポートにバインドして接続を閉じると、同じポートへの接続はOSによってポートが解放されるまで、OSが指定した一定時間待機することになります)。 |
送信元ポート | 送信元ポートの値。送信元ポートの指定プロパティがアクティブな場合にのみ使用できます。 |
送信元IPアドレスを指定する | このオプションを有効にすると、指定された IP を持つクライアントからの着信接続のみを受け入れるようになります。 |
送信元IPアドレス | クライアント IP アドレス。リモート IP の指定がアクティブな場合にのみ使用できます。 |
実行率 | 出力のリフレッシュ レート。 |
構成 | Sendコンポーネントのペイロードを定義します。ペイロードの設定方法の詳細については、以下の「設定パラメータ」セクションをご覧ください。 |
構成パラメータ
構成プロパティを変更するには、[データ] サブメニューの[構成の生成]ボタンを使用します。
設定メニューでは、イーサネット経由で受信されるデータのカスタム ペイロードを定義できます。
表 8 に、構成メニュー オプションの概要を示します。
フィールド名 | 説明 |
---|---|
信号名 | 変数/定数に対して一意です。 |
信号の種類 | 信号が可変か定数かを定義します。信号が可変の場合、受信する信号を接続するコンポーネントに端子が配置されます。 |
データ型 | 変数は整数、符号なし整数、実数のいずれかのデータ型を持ちます。定数は、ペイロード内の特定のバイト数をスキップするために使用されます。 |
長さ(バイト) | 長さのオプションは、データ型の選択に応じて動的に変更されます。例えば、整数型と符号なし整数型の長さは1、2、4、または8バイトです。実数型は、Float型(4バイト)またはDouble型(8バイト)です。 |
エンディアン | リトルエンディアン/ビッグエンディアン バイト順序を選択します。 |
ディメンション(数値/継承) | 同じデータ型と長さを持つ、受信する変数の数。この値は出力ターミナルの次元を指定します。定数の場合、次元は常に1です。文字列の場合、次元はメッセージを解析する際にスキップするバイト数を表します。 |
接続の確立
TCPは接続を確立するために、3ウェイハンドシェイクを使用します。クライアントがサーバーに接続しようとする前に、サーバーはまずポートにバインドし、接続を待機する必要があります。これはパッシブオープンと呼ばれます。パッシブオープンが確立されると、クライアントはアクティブオープンを開始できます。接続を確立するために、この3ウェイ(または3ステップ)ハンドシェイクは以下の順序で行われます。
- SYN :アクティブオープンは、クライアントがサーバーにSYNを送信することで実行されます。クライアントはセグメントのシーケンス番号をランダムな値Aに設定します。
- SYN-ACK : サーバーはSYN-ACKで応答します。確認応答番号は受信したシーケンス番号より1つ大きい値、つまりA+1に設定されます。サーバーがパケットに選択するシーケンス番号は、別の乱数であるBです。
- ACK : 最後に、クライアントはサーバーにACKを返します。シーケンス番号は受信した確認応答値(A+1)に設定され、確認応答番号は受信したシーケンス番号より1大きい値(B+1)に設定されます。
この時点で、クライアントとサーバーの両方が接続の確認応答を受信しています。ステップ1では、片方向の接続パラメータ(シーケンス番号)を確立し、ステップ2でこれを確認します。ステップ2では、反対方向の接続パラメータ(シーケンス番号)も確立し、ステップ3でこれを確認します。このようにして、全二重通信( Transmission Control Protocol )が確立されます。
イーサネットパケット
ペイロードデータのサイズは、ETH VE送信コンポーネントの入力信号のサイズに依存します。ETH VEペイロードデータの構造を図1に示します。
プロトコル | 最大パケットサイズ | ヘッダーサイズ |
---|---|---|
TCP/IP | 紀元前1500年まで | 54 B (イーサネット、IPv4、TCP ヘッダー) |
UDP | 紀元前1500年まで | 42 B (イーサネット、IPv4、UDP ヘッダー) |
ネットワーク設定
HIL デバイスと PC 間の通信を確立するには、次の条件を満たす必要があります。
- HILデバイスとPCアプリケーションのセットアップのIPアドレスは同じサブネット上にある必要があります(例:192.168.2.xxx)
- イーサネット アクセス ポイント (ネットワーク インターフェイス、NIC、LAN カード) は、同じサブネット アドレスを使用するように設定する必要があります。
仮想HILサポート
Virtual HILは現在このプロトコルをサポートしていません。非リアルタイム環境(例:ローカルコンピュータでモデルを実行する場合)を使用する場合、このコンポーネントへの入力は破棄され、このコンポーネントからの出力はゼロになります。