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オプションが選択されている場合、自動的に実行されます。メインプログラムとモデル実行エンジンから呼び出されるこれらのモジュールは、生成されたモデルコードとは独立です
ext_transport.c
の低レベルTCP/IP呼び出しを、ユーザ独自の通信呼び出しで置き換え、mex
コマンドを使ってext_comm
を再ビルドする必要があります。その後で、カスタマイズしたext_comm
コンポーネントを、SimulinkのExternal Target InterfaceダイアログのMEX-file for external interfaceとして指定します。ext_svr_transport.c
の低レベルTCP/IP呼び出しを、ユーザ独自の通信呼び出しで置き換える必要があります。ユーザがシステムターゲットファイルとテンプレートmakeファイルを作成している場合は、EXT_MODE
コード生成オプションが定義されていることを確認します。その後で、生成されたmakeファイルはext_svr_transport.c
とその他のサーバコードを実行ファイルにリンクします。ext_transport_share.h
で定義します。![]() | Externalモード通信チャンネルの作成 | Externalモード通信の概要 | ![]() |