イーサネットTCP通信
このセクションでは、イーサネット TCP 通信プロトコル コンポーネントに関する基本情報を提供します。
イーサネット TCP 通信は、ザイリンクスが提供する Lightweight IP (lwIP) ライブラリを使用して、イーサネット経由でデータを交換するための TCP ベースのシンプルなプロトコルです。
このプロトコルは、保証された確定的な実行速度を持つベアメタル アプリケーションとして実行されます。
Typhoon HILツールチェーンのイーサネットTCPコンポーネント
Typhoon HIL 回路図エディターでは、Ethernet TCP コンポーネントは、[通信] タブの [Ethernet Communication/TCP] サブフォルダーにあります。
Ethernet TCP ライブラリ カテゴリは、TCP 送信と TCP 受信の 2 つのコンポーネントで構成されます。
Ethernet TCP 通信は、Typhoon HIL デバイス ( HIL402、HIL101、HIL404、HIL602+、HIL604、HIL506、HIL606)でサポートされています。
TCP送信
TCP Sendブロックを使用すると、送信ソケットの基本設定を変更できます。この場合、HILデバイスはクライアントサーバーアプリケーションのクライアントになります。モデルには複数のTCP Sendコンポーネントを含めることができますが、各コンポーネントに異なるローカル送信ポートが必要です。
TCP Sendはクライアントを表します。シミュレーション開始後、クライアントは宛先IPアドレスと宛先ポートで指定されたリモートサーバーへの接続を試みます。サーバーにアクセスできる場合、アクティブな接続が確立され、システム変数がパックされ、イーサネット経由で転送されます。リモートサーバーに障害が発生した場合、クライアントは再接続を試行し続けます。
TCP送信コンポーネントのプロパティ
- IPアドレス
- HIL デバイスの IP アドレス。
- ネットマスク
- HIL デバイスのネットマスク。
- イーサネットポート
- Ethernet TCP 通信に使用される Ethernet ポート。
- ローカル送信ポート
- データがストリーミングされるクライアントのローカル ポートを表します。
- 宛先IPアドレス
- データがストリーミングされるリモート サーバーの IP アドレス。
- 宛先ポート
- データがストリーミングされるリモート サーバー ポート。
- 実行率
- 信号処理の実行レート。モデルの値は実行レートでサンプリングされ、送信されます。実行レートは、モデル内の他のコンポーネントと一致する必要があります。
TCP送信ポート
- データ[]
- 送信されるデータが格納されるメモリ アドレス。データはC 関数を使用してパックできます。
- 長さ
- 各メッセージで送信されるバイト数。
- 長さが 0 の場合、メッセージは送信されません。
- 状態
- 何らかの理由で送信されなかったメッセージの数を示します。
TCP受信
TCP 受信ブロックを使用すると、受信ソケットの基本設定を変更できます。この場合、HILデバイスはクライアントサーバーアプリケーションにおけるサーバーとして機能します。モデルには複数のTCP受信コンポーネントを含めることができますが、各コンポーネントに異なる受信ポートが割り当てられている必要があります。
TCP 受信は、パッシブ接続を開いているサーバーを表します。サーバーは、任意のクライアントからの接続を待機します。サーバーは、任意のクライアントIPとポートからの着信接続を受け入れるように設定することも(それぞれ「送信元ポートの指定」と「送信元IPアドレスの指定」を無効にした場合)、指定したIPとポートからの着信接続のみを受け入れるように設定することもできます。接続が受け入れられると、サーバーはパケットの受信を開始します。
TCP受信コンポーネントのプロパティ
- IPアドレス
- HIL デバイスの IP アドレス。
- ネットマスク
- HIL デバイスのネットマスク。
- イーサネットポート
- Ethernet TCP 通信に使用される Ethernet ポート。
- ローカル受信ポート
- データが受信されるサーバーのローカル ポートを表します。
- 送信元ポートを指定する
- 指定された送信ポートを持つクライアントからの受信接続のみを受け入れるには、このオプションを有効にします。
- 送信元ポート
- 送信元ポートの指定プロパティがアクティブな場合にのみ使用できます。
- 送信元ポートの値。
- 送信元IPアドレスを指定する
- このオプションを有効にすると、指定された IP を持つクライアントからの着信接続のみを受け入れるようになります。
- 送信元IPアドレス
- 送信元 IP アドレスの指定がアクティブな場合にのみ使用できます。
- クライアントの IP アドレス。
- 実行率
- 出力のリフレッシュ レート。
TCP受信ポート
- 受信数
- シミュレーションの開始以降に受信したメッセージの数。
- 状態
- 何らかの理由でドロップされたメッセージの数を示します。
- データ[]
- すべてのデータが格納されるメモリ アドレス。データはC 関数を使用して解析できます。
- 長さ
- 最後のメッセージで受信したバイト数。
接続の確立
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 )が確立されます。
仮想HILサポート
Virtual HILは現在このプロトコルをサポートしていません。非リアルタイム環境(例:ローカルコンピュータでモデルを実行する場合)を使用する場合、このコンポーネントへの入力は破棄され、このコンポーネントからの出力はゼロになります。