MATLAB PIL 実行のためのホストとターゲット間の通信
このセクションでは、PIL 実行中に開発用コンピューターとターゲット ハードウェア間で通信するために rtiostream API を使用する方法について説明します。
通信 rtiostream API
rtiostream API では、ターゲット接続 API の通信がサポートされます。rtiostream API を使用して、異なるプロセス間でのデータ交換を可能にする通信チャネルを実装します。
PIL 検証には、ホストとターゲット間の通信チャネルが必要です。この通信チャネルは、ホストとターゲットで実行されるドライバー コードで構成されます。rtiostream API は、このドライバー コードで実装する必要があるターゲット側およびホスト側の関数のシグネチャを定義します。
この API は、データを送信する物理レイヤーから独立しています。可能な物理レイヤーには、RS232、イーサネット、コントローラー エリア ネットワーク (CAN) があります。
完全な rtiostream の実装には、ホスト側とターゲット側の両方のドライバーが必要です。コード生成ソフトウェアには、既定の TCP/IP 実装用のホスト側のドライバーに加えて、シリアル通信用のバージョンも含まれています。以下を使用できます。
TCP/IP
rtiostream通信チャネル。ターゲット固有の TCP/IP デバイス ドライバーを用意するか、サードパーティから入手する必要があります。シリアル通信チャネル。ターゲット固有のシリアル デバイス ドライバーを用意するか、サードパーティから入手する必要があります。
その他の通信チャネルやプラットフォームの場合、コード生成ソフトウェアでは既定の実装は提供されません。ホスト側とターゲット側の両方のドライバーを用意する必要があります。
rtiostream API は次の関数で構成されています。
以下に内容と参照先を示します。
接続実装で
rtiostream関数を使用するには、ターゲット接続 API 実装の作成を参照してください。MATLAB® コードから
rtiostream共有ライブラリ メソッドをテストするには、rtiostream_wrapperを参照してください。カスタム
rtiostreamインターフェイス実装の動作のデバッグと検証については、rtiostream ドライバーのテストおよびrtiostreamtestを参照してください。
ホストとターゲットの同期
rtiostream API を使用して通信チャネルを実装した場合、ホストとターゲットを同期する必要があります。この同期により、ターゲット アプリケーションが完全に初期化される前に MATLAB がデータを送受信しないようになります。
TCP/IP rtiostream 実装でホストとターゲットを同期するには、rtw.connectivity.RtIOStreamHostCommunicator の setInitCommsTimeout メソッドを使用します。このアプローチは、ターゲット サーバーが実行されるまで MATLAB が自動的に待機するため、接続指向の TCP/IP rtiostream 実装に適しています。
シリアルなどの他の rtiostream 実装では、ターゲットが完全に初期化されるのを待つことなく、rtiostream 接続の MATLAB 側が開きます。この場合、ターゲット アプリケーションが完全に初期化されるまで、Launcher 実装を待機させる必要があります。ホストとターゲットを同期するには、次のいずれかのアプローチを使用します。
Launcher実装の最後に一時停止を追加して、ターゲットの初期化が完了するまでLauncherを待機させる。Launcher実装で、ターゲットの初期化が完了するまで待機するサードパーティのダウンローダーまたはデバッガー API を使用する。Launcher/rtiostream実装に、ターゲットの初期化の完了を確認するハンドシェイク メカニズムを実装する。
rtiostream ドライバーのテスト
テスト スイートを使用して、カスタム rtiostream インターフェイス実装の動作をデバッグおよび検証します。
テスト スイートは以下に役立ちます。
組み込みの
rtiostreamサポートがないカスタム ハードウェアの統合に必要な時間を短縮する。カスタム
rtiostreamドライバーのテストに必要な時間を短縮する。カスタム
rtiostreamドライバーのパフォーマンスを解析する。
テスト スイートは 2 つの部分で構成されています。1 つの部分は、ターゲット ハードウェア上で実行されるアプリケーションです。もう 1 つの部分は MATLAB で実行されます。詳細については、rtiostreamtest を参照してください。
ホストとターゲット間の通信のトラブルシューティング
PIL 実行中に通信 I/O 情報を表示するには、MATLAB Coder™ アプリの [すべての設定] タブで、[SIL/PIL の詳細] を [オン] に設定します。または、coder.EmbeddedCodeConfig オブジェクトで SILPILVerbosity プロパティを true に設定します。
既定では、[SIL/PIL の詳細] は [オフ] に設定されています。
[SIL/PIL の詳細] を [オン] に設定した SIL 実行では、開発用コンピューター上で別プロセスとして実行されるターゲット アプリケーションと MATLAB の間で発生する通信の I/O 情報がアプリに表示されます。
参考
rtIOStreamClose | rtIOStreamOpen | rtIOStreamRecv | rtIOStreamSend | rtiostream_wrapper | rtiostreamtest | rtw.connectivity.RtIOStreamHostCommunicator