Real-Time Workshop User's Guide | ![]() ![]() |
Externalモード通信の概要
この節では、Real-Time Workshop が生成したプログラムが、externalモードでどのようにSimulinkと通信を行うかに関する高レベルの概要を示します。この説明は、Real-Time Workshopに付属するexternalモードのTCP/IP版に基づきます。
EXT_MODE
が定義されてビルドされていなければなりません。EXT_MODE
は、External modeモードコード生成オプションがコード生成時に選択されている場合は、model
.mk
ファイルで定義されます。クライアントとサーバは、2つのソケットを使って通信を行います。各ソケットは、別個のchannelをサポートします。メッセージチャンネルは、双方向性で、コマンド、応答、パラメータのダウンロードを送信します。一方向のアップロードチャンネルは、信号データをクライアントのアップロードするためのものです。メッセージチャンネルは高い優先度をもちます。
ターゲットプログラムが、-w
コマンドラインオプションをつけて呼ばれた場合は、プログラムは、ホストからメッセージを受信するまで待ち状態に入ります。そうでない場合は、プログラムは、モデルの実行を開始します。ターゲットプログラムが待ち状態のとき、Simulinkはパラメータをターゲットにダウンロードし、データのアップロードを構成することが可能です。
ユーザがシミュレーション(Simulation)メニューからターゲットに接続(Connect to target)オプションを選択すると、ホストはEXT_CONNECT message
メッセージを送信することにより、ハンドシェイクを繰り返します。サーバは、それ自身に関する情報に反応します。この情報には、以下のものが含まれます。
この点で、ホストとサーバは接続されます。サーバは、モデルを実行しているか、あるいは待ち状態です(後者の場合、ユーザはシミュレーション(Simulation)メニューからリアルタイムシミュレーションの開始(Start real-time code)を選択することにより、モデルの実行を開始できます)。
モデルの実行中に、メッセージサーバがバックグランドタスクとして実行されます。このタスクは、パラメータのダウンロードのようなメッセージを受信して処理します。
データのアップロードは、フォアグランドの実行とアップロードチャンネルのバックグランドのサービスで構成されます。ターゲットがモデルの出力を計算すると、信号の値をデータアップロードバッファにコピーします。これは、各タスク識別子(tid
に関連するタスクの一部分として発生します。そのため、データ収集はフォアグランドで行います。しかし、収集したデータの送信は、バックグランドタスクとして行われます。バックグランドタスクは、アップロードチャンネルを使って、収集データのバッファのデータをSimulinkに送信します。
ホストは、メッセージチャンネルでほとんどの交換を開始します。ターゲットは、通常、メッセージを受信し処理したことを確認する応答を送信します。メッセージとコマンドの例は以下の通りです。
モデルの実行は、モデルが終了時間に達したとき、ホストが終了コマンドを送信したとき、あるいはStop Simulationブロックが実行を終了したときに終了します。終了時に、サーバはモデルの実行が停止され、双方のソケットがシャットダウンされたことをホストに通知します。ホストは、ソケットをシャットダウンし、externalモードを終了します。
![]() | Externalモードの設計 | Externalモードのソースファイル | ![]() |