Real-Time Workshop User's Guide    

Externalモードの設計

Simulinkとターゲットシステム間のExternalモード通信は、クライアント/サーバアーキテクチャに基づきます。クライアント(Simulink)は、サーバ(ターゲット)に、パラメータの変更の受け入れや信号データのアップロードを要求するメッセージを送信します。サーバは、リクエストを実行することにより応答します。

低レベルのトランスポート層は、メッセージの物理的な送信を取り扱います。Simulinkとモデルコードは両方共、この層と独立です。トランスポート層と、トランスポート層と直接インタフェースを行うコードは、メッセージとデータパケットをフォーマット、送信、受信する別々のモジュールに分離されます。

この設計により、異なるターゲットが異なるトランスポート層を使うことが可能になります。たとえば、grt, grt_malloc, Tornadoターゲットは、TCP/IP経由のホスト/ターゲット通信をサポートし、xPC TargetはRS232 (serial)とTCP/IP通信の両方をサポートします。

Real-Time Workshopは、grt, grt_malloc, Tornadoターゲットで利用されているような、クライアント側およびサーバ側のexternalモードのモジュールに対するソースコードを提供します。メインのクライアント側モジュールは、ext_comm.cです。メインのサーバ側モジュールは、ext_svr.cです。

これらの2つのモジュールは、TCP/IPトランスポート層を呼び出します。ext_transport.cは、クライアント側のトランスポート関数を実現します。 ext_svr_transport.cは、対応するサーバ側の関数を含みます。これらのファイルは、ユーザ独自の低レベル通信層を使ってexternalモードをサポートするために、変更することができます。

低レベル通信を実現するコード部分を変更することだけが必要です。ホストとターゲット間のデータ変換や、メッセージのフォーマットのような問題を考慮する必要はありません。Real-Time Workshopが提供するコードは、これらの関数を取り扱います。

クライアント(Simulink)側では、通信はC MEX-ファイルext_commによって行われます。このコンポーネントは、WindowsではDLLとして実現され、UNIXでは共有ライブラリとして実現されます。

サーバ(ターゲット)側では、externalモードモジュールは、ターゲットの実行ファイルにリンクされます。これは、コード生成時にExternal modeオプションが選択されている場合、自動的に実行されます。メインプログラムとモデル実行エンジンから呼び出されるこれらのモジュールは、生成されたモデルコードとは独立です

ユーザ独自の低レベルプロトコルを実現するには、


 Externalモード通信チャンネルの作成 Externalモード通信の概要