メインコンテンツ

Simulink 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 を使用して通信チャネルを実装した場合、ホストとターゲットを同期する必要があります。この同期により、ターゲット アプリケーションが完全に初期化される前に Simulink® がデータを送受信しないようになります。

TCP/IP rtiostream 実装でホストとターゲットを同期するには、rtw.connectivity.RtIOStreamHostCommunicatorsetInitCommsTimeout メソッドを使用します。このアプローチは、ターゲット サーバーが実行されるまで Simulink が自動的に待機するため、接続指向の TCP/IP rtiostream 実装に適しています。

シリアルなどの他の rtiostream 実装では、ターゲットが完全に初期化されるのを待つことなく、rtiostream 接続の Simulink 側が開きます。この場合、ターゲット アプリケーションが完全に初期化されるまで、Launcher 実装を待機させる必要があります。ホストとターゲットを同期するには、次のいずれかのアプローチを使用します。

  • Launcher 実装の最後に一時停止を追加して、ターゲットの初期化が完了するまで Launcher を待機させる。

  • Launcher 実装で、ターゲットの初期化が完了するまで待機するサードパーティのダウンローダーまたはデバッガー API を使用する。

  • Launcher / rtiostream 実装に、ターゲットの初期化の完了を確認するハンドシェイク メカニズムを実装する。

rtiostream ドライバーのテスト

テスト スイートを使用して、カスタム rtiostream インターフェイス実装の動作をデバッグおよび検証します。

テスト スイートは以下に役立ちます。

  • 組み込みの rtiostream サポートがないカスタム ハードウェアの統合に必要な時間を短縮する。

  • カスタム rtiostream ドライバーのテストに必要な時間を短縮する。

  • カスタム rtiostream ドライバーのパフォーマンスを解析する。

テスト スイートは 2 つの部分で構成されています。1 つの部分は、ターゲット ハードウェア上で実行されるアプリケーションです。もう 1 つの部分は MATLAB で実行されます。詳細については、rtiostreamtest を参照してください。

ホストとターゲット間の通信のトラブルシューティング

PIL シミュレーション中に診断ビューアーで通信 I/O 情報を表示するには、コマンド ウィンドウで以下を入力します。

set_param(model, 'SILPILVerboseOutput', 'on');

既定では、コンフィギュレーション パラメーター SILPILVerboseOutputoff に設定されます。

SILPILVerboseOutputon に設定して SIL シミュレーションを実行すると、シミュレーションでは、Simulink と、開発コンピューター上で別個のプロセスとして実行されるターゲット アプリケーションとの間で発生する通信の I/O 情報が表示されます。

ワードのアドレス指定が可能なターゲット ハードウェア

[コンフィギュレーション パラメーター] ダイアログ ボックスで [デバイス ベンダー] および [デバイス タイプ] の設定を指定すると、PIL シミュレーションにターゲット ハードウェアに関するメモリ アドレス指定情報が提供されます。

たとえば、[デバイス ベンダー][Texas Instruments] に設定され、[デバイス タイプ][C5000] に設定されている場合を考えます。

設定では、ターゲット ハードウェアで 16 ビット ワード アドレスとビッグエンディアン ワード順が使用されることを指定します。rtiostream 実装は 16 ビット ワードで動作します。

ターゲット ハードウェアでは、rtIOStream 関数でサイズ 1 が指定された場合、ターゲット ハードウェアは 1 つの 16 ビット ワード (2 バイト) を送信または受信する必要があります。sizeof(char)sizeof(short) は 1 を返します。これは 1 つの 16 ビット ワードに相当します。rtIOStream 関数は、ワード内のバイト順がリトルエンディアンである (つまり、下位バイトが上位バイトよりも先に送信される) と想定します。

rtiostreamtest はターゲット ハードウェアを識別し、16 ビット ワード単位でデータを処理します。たとえば、バイト値は 16 ビット ワード値として転送されます。

参考

| | | | | |

トピック