Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

TCP/IP またはシリアル通信を使用するエクスターナル モード シミュレーション

TCP/IP またはシリアル (RS-232) 通信チャネルを使用するエクスターナル モード シミュレーションを設定します。

  1. 単純なモデルを作成および構成します。

  2. ターゲットの実行可能ファイルをビルドします。

  3. ターゲット アプリケーションを実行します。

  4. パラメーターを調整します。

GRT ターゲットを使用する例では、外部ハードウェアは必要ありません。生成された実行可能ファイルは以下で実行されます。

  • Simulink® および Simulink Coder™ をホストする開発用コンピューター上。

  • MATLAB® および Simulink とは別のプロセス。

モデルの作成と構成

例のこの部分では、単純なモデル ex_extModeExample を作成します。さらに ext_mode_example という名前のフォルダーを作成し、モデルと生成される実行可能プログラムを保存します。

フォルダーとモデルを作成するには、次のようにします。

  1. MATLAB コマンド ラインに以下を入力します。

    mkdir ext_mode_example
  2. ext_mode_example を作業フォルダーにします。

    cd ext_mode_example
  3. Simulink で、信号入力用の Sine Wave ブロック、並列した 2 つの Gain ブロック、および 2 つの Scope ブロックをもつモデルを作成します。Gain ブロックおよび Scope ブロックが次に示すようにラベル付けされていることを確認します。

  4. 2 つの MATLAB ワークスペース変数、AB を定義して値を代入します。

    A = 2;
    B = 3;
  5. Gain ブロック A を開き、対応する [ゲイン] パラメーターを変数 A に設定します。

  6. Gain ブロック B を開き、対応する [ゲイン] パラメーターを変数 B に設定します。

    ターゲット アプリケーションがビルドされ、エクスターナル モードで Simulink に接続されると、新しいゲイン値を実行中のターゲット アプリケーションにダウンロードできます。これを行うには、新しい値をワークスペース変数 AB に代入するか、あるいはブロック パラメーター ダイアログ ボックスで値を編集します。詳細については、パラメーターの調整を参照してください。

  7. モデルの動作を確認します。Scope ブロックを開き、モデルを実行します。A = 2 かつ B = 3 のとき、次に示すように出力が表示されます。

  8. モデルを ex_extModeExample として保存します。

ターゲットの実行可能ファイルのビルド

エクスターナル モードのターゲット アプリケーションで必要な、モデルとコード生成のパラメーターを設定します。次に、コードを生成し、ターゲット アプリケーションをビルドします。

  1. Simulink ツールストリップの [アプリ] タブから、[ハードウェアで実行するように設定] セクションで、[カスタム ハードウェア上で実行] をクリックします。

  2. [ハードウェア] タブの [ハードウェア] セクションで、[システム ターゲット ファイルの説明] リストから [Generic Real-Time Target (grt.tlc)] を選択します。

  3. [準備] セクションで、[ハードウェア設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスが開き、システム ターゲット ファイルによって決定された [ハードウェア実行] 設定が表示されます。

  4. [ソルバー] ペインで以下を行います。

    1. [タイプ] フィールドで [固定ステップ] を選択します。

    2. [ソルバー] フィールドで、[離散 (連続時間なし)] を選択します。

    3. [ソルバーの詳細] をクリックします。[固定ステップ サイズ] フィールドでは、0.1 を指定します(この値を指定しないと、コードを生成する際に Simulink Coder ビルド プロセスから警告が生成され、既定値が提供されます)。

    4. [適用] をクリックします。

  5. [データのインポート/エクスポート] ペインで、[時間] および [出力] チェック ボックスをオフにします。この例では、データのワークスペースと MAT ファイルへのログ作成は行いません。[適用] をクリックします。

  6. [コード生成][最適化] ペインで、[既定のパラメーター動作][調整可能] に設定されていることを確認します。変更を行う場合は、[適用] をクリックします。

  7. [コード生成][インターフェイス] ペインの [データ交換インターフェイス] セクションで、[エクスターナル モード] を選択します。

  8. [エクスターナル モード構成] セクションで、既定値 [tcpip][トランスポート層] パラメーターに対して選択されていることを確認します。

    エクスターナル モードでは、TCP/IP、シリアル、およびカスタム トランスポートの各プロトコル経由の通信がサポートされます。[MEX ファイル名] は、ホストターゲット通信を実装する MEX ファイルの名前を指定します。TCP/IP に対する既定の設定は [ext_comm] です。これは Simulink Coder ソフトウェアに付属している MEX ファイルです。別のファイルを提供して、この既定の設定をオーバーライドすることができます。他のトランスポート層をサポートする必要がある場合は、TCP/IP またはシリアルのエクスターナル モード通信のためのトランスポート層の作成を参照してください。

    [MEX ファイルの引数] フィールドでは、外部インターフェイス プログラムに渡す引数 (TCP/IP サーバーのポート番号など) を指定できます。これらの引数は使用している外部インターフェイスによって異なります。これらの引数の設定の詳細については、MEX ファイルの TCP/IP トランスポート用オプション引数およびMEX ファイルのシリアル トランスポート用オプション引数を参照してください。

    この例では、既定の引数を使用します。[MEX ファイルの引数] フィールドは空白のままにしておきます。

    [静的なメモリ割り当て] チェック ボックスは、ターゲット内のエクスターナル モードの通信バッファーにメモリが割り当てられる方法を制御します。この例の場合は、チェック ボックスをオンにしないでください。詳細については、ターゲットの通信バッファーのためのメモリ割り当ての制御を参照してください。

  9. [適用] をクリックし、エクスターナル モード設定を保存します。

  10. モデルを保存します。

  11. [コード生成] ペインを選択します。[コード生成のみ] がオフになっていることを確認します。

  12. コードを生成し、ターゲット アプリケーションを作成するには、モデル ウィンドウで Ctrl+B を押します。または、[ハードウェア] タブの [ハードウェアで実行] セクションで、[監視および調整] をクリックします。次に、[ステップ単位のコマンド] で、[監視用のビルド] をクリックします。

    ソフトウェアは、ex_extModeExample 実行可能ファイルを作業フォルダーで作成します。

ターゲット アプリケーションの実行

ex_extModeExample ターゲット実行可能プログラムを実行し、Simulink を実行中のターゲット アプリケーションに対する対話的なフロント エンドとして使用します。実行可能ファイルは作業フォルダーの中にあります。ターゲット アプリケーションを実行し、Simulink とターゲット間の通信を確立します。

メモ

ex_extModeExample などのエクスターナル モードのプログラムは、ホストベースの実行可能プログラムです。このプログラムの実行は、リアルタイム オペレーティング システム (RTOS) や周期的タイマー割り込みに連結されておらず、リアルタイムでは実行されません。プログラムはできる限り速く実行されるだけで、カウントされる時間単位はシミュレートされた時間単位のみで、プログラム外の時間には対応していません。

ターゲット アプリケーションを実行するには、次の手順に従います。

  1. [ハードウェア] タブの [ハードウェアで実行] セクションで、次を行います。

    1. [終了時間] フィールドで inf を指定します。これにより、ターゲット アプリケーションが Simulink から終了メッセージを受け取るまでモデルが実行したままになります。

    2. [監視および調整] をクリックします。[ステップ単位のコマンド] で、[展開] をクリックします。

    ターゲット アプリケーションは実行を開始し、待機状態になります。

  2. モデルの Scope ブロックを開きます。モデルの実行を開始するまで、スコープ上に信号は表示されません。

  3. [ハードウェア] タブの [ハードウェアで実行] セクションで [監視および調整] をクリックします。次に、[ステップ単位のコマンド] で、[接続] をクリックします。この操作によって Simulink とターゲット アプリケーション間のハンドシェイクが開始されます。Simulink とターゲットが接続されていると、[接続] ボタンは [切断] に変わります。

  4. [ハードウェアで実行] セクションで、 をクリックします。これにより、生成されたモデル コードの実行が開始されます。モデルの 2 つのスコープに Gain ブロック A と B の出力が表示されます。

Simulink と実行中のターゲット アプリケーション間の通信が確立しました。Simulink のブロック パラメーターを調整して、パラメーターの変更による影響を確認できるようになりました。

パラメーターの調整

次の表に、シミュレーション中に調整可能なブロック パラメーターを調整する方法を示します。

方法詳細

モデル データ エディター

モデル データ エディターを通じてパラメーターを調整するには、次のようにします。

  1. Simulink エディターの [ハードウェア] タブの [準備] セクションで、[パラメーターの調整] をクリックして、モデル データ エディターを開きます。

  2. 複数の調整可能なパラメーターを同時に更新する場合、[準備] セクションで、[更新を保留] をオンにします。

  3. モデル データ エディターの [パラメーター] タブの [値] 列で、調整可能なパラメーターの新しい値を指定します。

  4. [更新を保留] をオフにするか、[すべてのパラメーターを更新] をクリックします (Ctrl+D)。Simulink は新しい値をターゲット アプリケーションに同時にダウンロードします。

    [更新を保留] がオフの場合、新しい値を指定した直後に、Simulink は新しい値をターゲット アプリケーションにダウンロードします。

詳細については、モデル データ エディターを参照してください。

[ブロック パラメーター] ダイアログ ボックス

[ブロック パラメーター] ダイアログ ボックスを通じてパラメーターを調整するには、次のようにします。

  1. 更新するブロックごとに、次を実行します。

    1. ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。

    2. パラメーターのフィールドで、新しいパラメーター値を指定します。

    3. [適用] または [OK] をクリックします。

  2. [更新を保留] がオンの場合、[更新を保留] をオフにするか、[すべてのパラメーターを更新] をクリックします (Ctrl+D)。Simulink は新しい値をターゲット アプリケーションに同時にダウンロードします。

    [更新を保留] がオフの場合、[適用] または [OK] をクリックした直後に、Simulink は新しいブロック値をターゲット アプリケーションにダウンロードします。

MATLAB ワークスペース

ブロック パラメーターが MATLAB ワークスペース変数の場合、次のようにします。

  1. コマンド プロンプトで、変数に新しい値を割り当てます。

  2. Simulink エディターの [ハードウェア] タブで、[準備] セクションの [すべてのパラメーターを更新] をクリックします (Ctrl+D)。Simulink は新しい値をターゲット アプリケーションにダウンロードします。

詳細については、変数の作成と編集を参照してください。

シミュレーション時に Sine Wave ブロックのサンプル時間を変更することはできません。ブロックのサンプル時間は、モデルの構造定義の一部であり、生成コードの一部でもあります。このため、ブロックのサンプル時間を変更するには、エクスターナル モードのシミュレーションを停止し、ブロックのサンプル時間をリセットして、実行可能プログラムをリビルドしなければなりません。

エクスターナル モードのシミュレーション時におけるブロック パラメーターの調整可能性は、生成されたコードによるブロック パラメーターの表現方法によって異なります。

たとえば、Gain A ブロック ダイアログ ボックスでは、シミュレーション時に [ゲイン] パラメーターで式 A を変更することはできません。その代わりに、ベース ワークスペースで変数 A の値を変更しなければなりません。生成されたコードは [ゲイン] パラメーター用のメモリにストレージを割り当てないため、式は変更できません。代わりに、コードはフィールド A を構造体に作成します。

/* Parameters (auto storage) */
struct P_ex_extModeExample_T_ {
  real_T A;                            /* Variable: A
                                        */
  real_T B;                            /* Variable: B
                                        */
  real_T SineWave_Amp;                 /* Expression: 1
                                        */
  real_T SineWave_Bias;                /* Expression: 0
                                        */
  real_T SineWave_Freq;                /* Expression: 1
                                        */
  real_T SineWave_Phase;               /* Expression: 0
                                        */
};

生成されたコード アルゴリズムは、ブロック Gain A を表すコードでそのフィールドを使用します。この場合、グローバル構造体変数 ex_extModeExample_P は型 P_ex_extModeExample_T_ を使用します。

ex_extModeExample_B.GainA = ex_extModeExample_P.A * rtb_SineWave;

ベース ワークスペースで A の値を変更すると、シミュレーション時にターゲット アプリケーションのフィールド A に新しい値がダウンロードされます。

生成されたコードは、ブロック内で各パラメーターを表すグローバル構造体 ex_extModeExample_P にフィールドを作成するため、シミュレーション中に Sine Wave ブロック パラメーターの式を変更できます。ブロック ダイアログ ボックスで式を変更する場合、シミュレーションで最初に新しい式が評価されます。シミュレーションは、結果として得られる数値をターゲット アプリケーションの対応する構造体フィールドにダウンロードします。

生成されたコードにおける調整可能なキャリブレーション パラメーターの作成を参照してください。

ターゲット アプリケーションの停止

ホスト/ターゲット通信からの Simulink の切断とターゲット アプリケーションの実行の終了を同時に行うには、[ハードウェア] タブの [ハードウェアで実行] セクションで [停止] をクリックします。

ターゲットの通信バッファーのためのメモリ割り当ての制御

GRT ターゲットと ERT ターゲットで [コード生成][インターフェイス][静的なメモリ割り当て] チェック ボックスをオンにすると、コード ジェネレーターは静的なメモリ割り当てのみを使用するエクスターナル モード用のコード ("malloc のない" コード) を生成します。[静的なメモリ割り当て] を選択すると、[静的なメモリ バッファー サイズ] パラメーターが有効になります。このパラメーターを使用して、エクスターナル モードの静的なメモリ バッファーのサイズを指定します。既定値は 1,000,000 バイトです。プログラムに対して小さすぎる値が入力されると、エクスターナル モード シミュレーションは指定値を超えるメモリを割り当てようと試みてもそれができないので、out-of-memory エラーを発行します。このような場合、[静的なメモリ バッファー サイズ] フィールドの値を増やしてからコードを再生成します。

割り当てるメモリ量を判断するには、ターゲット上で詳細モードを有効にします (make コマンド ラインに OPTS="-DVERBOSE" を含めます)。エクスターナル モードでは、実行時に割り当てを試みたメモリ量および割り当てを試みるたびに使用できるメモリ量が表示されます。割り当てに失敗した場合、[静的なメモリ バッファー サイズ] フィールドに必要な値はこのコンソール ログを使用して決定することができます。

TCP/IP またはシリアルのエクスターナル モード コントロール パネル

エクスターナル モード コントロール パネルは、次のような TCP/IP またはシリアルのエクスターナル モードの操作を提供します。

[エクスターナル モード コントロール パネル] ダイアログ ボックスを開くには、[ハードウェア] タブの [準備] セクションで、[コントロール パネル] をクリックします。

接続、開始、停止

[エクスターナル モード コントロール パネル] は、Simulink ツールストリップの [ハードウェア] タブと同じ接続/切断、開始/停止機能を実行します (TCP/IP またはシリアルのエクスターナル モード シミュレーションのグラフィカル コントロールの概要を参照)。

[接続] ボタンをクリックして、モデルを待機中または実行中のターゲット アプリケーションに接続します。接続中は、ボタンは [切断] ボタンに変わります。[切断] はモデルをターゲット環境から切断しますが、ターゲット環境で実行しているリアルタイム コードを停止しません。

[リアルタイム コードを開始] ボタンをクリックすると、ターゲットでリアルタイム コードの実行が開始されます。ターゲット環境でリアルタイム コードが実行している間、ボタンは [リアルタイム コードを停止] ボタンに変わります。[リアルタイム コードを停止] はターゲット アプリケーションの実行を停止し、モデルをターゲット環境から切断します。

ホストへのターゲット アプリケーション信号データのアップロード

エクスターナル モード コントロール パネルでは、ホストへのデータ アップロードのトリガーとキャンセルを行うことができます。アップロード データの宛先は、ブロックおよびサブシステムのエクスターナル モードとの互換性にリストされている Scope ブロック、Display ブロック、To Workspace ブロックまたはその他のブロックやサブシステムです。

[トリガーの準備] ボタンおよび [トリガーをキャンセル] ボタンにより、フローティング スコープを除く互換性のあるブロックまたはサブシステムへのデータのアップロードを手動で制御できます (フローティング スコープについては、エクスターナル モード コントロール パネルの [フローティング スコープ] セクションを使用します)。

  • 互換性のあるブロックまたはサブシステムへのデータのアップロードをトリガーするには、[トリガーの準備] ボタンをクリックします。ボタンが [トリガーをキャンセル] に変わります。

  • データのアップロードをキャンセルするには、[トリガーをキャンセル] ボタンをクリックします。ボタンが [トリガーの準備] に戻ります。

データのアップロードは手動でトリガーすることも自動的にトリガーすることもできます。データ アップロードの信号とトリガーの設定については、ターゲット アプリケーションの信号データのホスト モニタリングの設定を参照してください。

Scope、Time Scope、To Workspace を含むエクスターナル モード互換ブロックの一部は、アップロードされたデータのログをディスクに記録できます。データのアーカイブの設定については、ターゲット アプリケーションの信号データのホスト アーカイブの設定を参照してください。

[エクスターナル モード コントロール パネル] ダイアログ ボックスの [フローティング スコープ] セクションは、データが Floating Scope ブロックにアップロードされるタイミングと期間の長さを制御します。フローティング スコープは、エクスターナル モードでは次のようになります。

  • [外部信号とトリガー] ダイアログ ボックスには表示されません。

  • データをエクスターナル モードのアーカイブに記録しません。

  • 手動トリガーのみサポートします。

[フローティング スコープ] セクションは次のパラメーターを含みます。

  • [データ アップロードを有効にする] オプションは、フローティング スコープに対して [トリガーの準備] ボタンとして機能します。ターゲットが切断されている場合、このオプションはフローティング スコープを接続するときにトリガーを装備するかどうかを制御します。ターゲットが接続されている場合、このオプションはトリガーの準備とキャンセルを切り替えるボタンとして動作します。

    • フローティング スコープへのデータのアップロードをトリガーするには、[データ アップロードを有効にする] をオンにします。

    • フローティング スコープへのデータのアップロードを取り消すには、[データ アップロードを有効にする] をオフにします。

  • [持続時間] 編集フィールドは、エクスターナル モードがトリガー イベント後のフローティング スコープ データを記録するための基本レート ステップ数を指定します。既定では、[auto] に設定されます。この場合、[外部信号とトリガー] ダイアログ ボックスで設定された持続時間の値が使用されます。持続時間の既定値は 1,000 基本レート ステップです。

ターゲット アプリケーションへのパラメーターのダウンロード

[エクスターナル モード コントロール パネル] ダイアログ ボックスの [バッチ ダウンロード] オプションで、パラメーターの一括変更の有効/無効を切り替えることができます。

既定の設定では、バッチ ダウンロードは無効です。バッチ ダウンロードが無効の場合、[OK] または [適用] をクリックすると、ブロック パラメーター ダイアログ ボックスを編集してブロック パラメーターに直接加えられた変更がターゲットに送信されます。[ブロック線図の更新] を実行すると、MATLAB ワークスペース変数への変更が送信されます。

[バッチ ダウンロード] を選択すると、[ダウンロード] ボタンが有効になります。[ダウンロード] をクリックするまで、ブロック パラメーターに行われた変更はローカルに保存されます。[ダウンロード] をクリックすると、変更内容は一度の転送でまとめて送信されます。

パラメーター値の変更がバッチ ダウンロードを待つ間、[エクスターナル モード コントロール パネル] ダイアログ ボックスの [ダウンロード] ボタンの右側にメッセージ "Parameter changes pending..." が表示されます。このメッセージは、Simulink エンジンが通知を受信するまで表示されます。通知の内容は、新しいパラメーターがターゲット システムのパラメーター ベクトルにインストールされた、というものです。

次の図は [エクスターナル モード コントロール パネル] を示しており、[バッチ ダウンロード] オプションが有効でパラメーターの変更が保留になっています。

ターゲット アプリケーションの信号データのホスト モニタリングの設定

信号データのアップロードにおけるトリガーの役割

エクスターナル モードでは、ターゲット アプリケーションの信号データのホストへのアップロードは "トリガー" に依存します。トリガーとは、データのアップロードを開始するために満たされなければならない一連の条件です。トリガーは装備することもしないこともできます。

  • トリガーを装備すると、ソフトウェアはデータのアップロードを開始するトリガー条件をチェックします。

  • トリガーを装備しない場合、ソフトウェアはトリガー条件をチェックしないため、データのアップロードは開始されません。

  • トリガーは、ホストがターゲットへの接続時に自動的に装備することも、エクスターナル モード コントロール パネルの [トリガーの準備] ボタンをクリックして手動で装備することもできます。

トリガーが装備されており、トリガー条件が満たされた場合、トリガーが起動してデータのアップロードが開始されます。

定義された期間データを収集すると、トリガー イベントは完了してデータのアップロードは停止します。トリガーはその後再装備することも、[トリガーの準備] ボタンをクリックするまで装備しないでおくこともできます。

アップロードするターゲット アプリケーションの信号の選択や、アップロードをトリガーする方法の設定については、信号データのアップロードの設定を参照してください。

信号データのアップロードの設定

[エクスターナル モード コントロール パネル] の [信号とトリガー] ボタンをクリックすると、[外部信号とトリガー] ダイアログ ボックスが開きます。

[外部信号とトリガー] ダイアログ ボックスには、エクスターナル モードの信号アップロードをサポートするモデル内のブロックとサブシステムが一覧表示されます。エクスターナル モードと互換性のあるブロックのタイプについては、ブロックおよびサブシステムのエクスターナル モードとの互換性を参照してください。

[外部信号とトリガー] ダイアログ ボックスでは、ターゲット システムから収集され、エクスターナル モードで表示される信号を選択できます。また、特定の信号条件が満たされた場合にデータのアップロードをトリガーするトリガー信号を選択し、トリガー条件を定義することもできます。

既定のトリガー オプション

前の図では、[外部信号とトリガー] ダイアログ ボックスの既定の設定が示されています。[外部信号とトリガー] ダイアログ ボックスの既定の動作は、ターゲット アプリケーションの監視を単純化します。既定の設定を使用する場合、信号とトリガーをあらかじめ設定する必要はありません。ターゲット アプリケーションを開始して Simulink エンジンをそれに接続します。エクスターナル モード互換ブロックが選択され、トリガーが準備されます。ターゲット アプリケーションに接続されると、信号のアップロードがすぐに開始されます。

既定のトリガー オプション構成は次のとおりです。

  • すべて選択: オン

  • ソース: 手動

  • モード: ノーマル

  • 持続時間: 1000

  • 遅延: 0

  • ターゲットへ接続時にアーム: オン

アップロードする信号の選択

モデル内のエクスターナル モード互換ブロックが、[外部信号とトリガー] ダイアログ ボックスの [信号選択] リストに表示されます。このリストは表示する信号の選択に使用します。[選択] 列では、X が各選択されたブロックに表示されています。

[すべて選択] チェック ボックスをオンにすると、信号がすべて選択されます。既定の設定では、[すべて選択] が選択されています。

[すべて選択] がオフの場合、[オン][オフ] のオプションを使用して信号を個別に選択または選択解除できます。信号を選択するには、リスト エントリをクリックして [オン] オプションを選択します。信号を選択解除するには、リスト エントリをクリックして [オフ] オプションを選択します。

[すべてクリア] ボタンをクリックすると、信号がすべてクリアされます。

トリガー オプションの設定

信号データのアップロードにおけるトリガーの役割で説明されているように、信号データのアップロードはトリガーに依存します。トリガーは、アップロードを開始するために満たされなければならない条件を定義します。また、データのアップロードを開始するには、トリガーが装備されていなければなりません。トリガーが装備されておりトリガー条件が満たされた場合、トリガーが起動してアップロードが始まります。定義された期間データを収集すると、トリガー イベントは完了してデータのアップロードは停止します。

信号データをターゲット システムから収集 (アップロード) するタイミングと方法を制御するには、次の [外部信号とトリガー] ダイアログ ボックスの [トリガー オプション] を設定します。

  • [ソース]:[手動] または [信号]。ボタンと信号のどちらがデータのアップロードをトリガーするのかを制御します。

    [手動] を選択すると、データのアップロードを開始するトリガーとしてエクスターナル モード コントロール パネルの [トリガーの準備] ボタンを使用するようエクスターナル モードに指示します。[トリガーの準備] をクリックすると、データのアップロードが開始されます。

    [信号] を選択すると、データのアップロードを開始するトリガーとしてトリガー信号を使用するようエクスターナル モードに指示します。トリガー信号がトリガー条件を満たしたとき (つまり、信号が指定した方向でトリガー レベルを超えたとき)、"トリガー イベント" が生じます (トリガー条件は [トリガー信号] セクションで指定します)。トリガーが "装備される" と、エクスターナル モードはトリガー イベントの発生を監視します。トリガー イベントが発生すると、データのアップロードが開始されます。

  • モード:[ノーマル] または [ワンショット]。トリガー イベントが完了した後でトリガーを再装備するかどうかを制御します。

    [ノーマル] モードでは、エクスターナル モードはトリガー イベントが発生するたびにトリガーを自動的に再装備します。トリガーが起動すると次のデータのアップロードが始まります。

    [ワンショット] モードでは、ユーザーのトリガー装備のたびに、エクスターナル モードは 1 回分のバッファー データのみを収集します。

    [モード] 設定の詳細については、ターゲット アプリケーションの信号データのホスト アーカイブの設定を参照してください。

  • 持続時間:エクスターナル モードでトリガー イベント後にデータをアップロードする基本レート ステップ数を指定します (既定値は 1000)。たとえば [持続時間] が 1000 に設定され、モデルの基本 (最速) レートが 1 秒だとします。

    • 基本レート 1 秒 (1.0 Hz) でサンプリングされる信号については、エクスターナル モードではトリガー イベントの最中に 1,000 個の連続するサンプルが収集されます。

    • 2 秒 (0.5 Hz) でサンプリングされる信号については、エクスターナル モードではトリガー イベントの最中に 500 個のサンプルが収集されます。

  • 遅延:データ収集に適用される遅延を指定します。遅延は、トリガー イベントとデータ収集の開始の間に経過する時間を表します。遅延は、基本レート ステップ数で表現されます。正または負の値を取ることができます (既定は0)。負数遅延は "トリガー前" を意味します。遅延が負の場合、トリガー イベントよりも前の時間からデータが収集されてアップロードされます。

  • ターゲットへ接続時にアーム:オンまたはオフにされます。ボタンと信号のどちらによってデータのアップロードをトリガーするかにかかわらず ([ソース] で定義)、データのアップロードを開始するにはトリガーを装備しなければなりません。

    このオプションを選択した場合、ターゲットに接続するとトリガーが準備されます。

    • トリガーの [ソース][手動] の場合、データのアップロードは直ちに開始されます。

    • トリガーの [ソース][信号] の場合、トリガー信号の監視が直ちに開始されます。トリガー信号がトリガー条件 ([トリガー信号] セクションで定義) を満たしたときに、データのアップロードが開始されます。

    [ターゲットへ接続時にアーム] をオフにした場合、エクスターナル モード コントロール パネルの [トリガーの準備] ボタンをクリックして、トリガーを手動で装備します。

エクスターナル モードでシミュレーションを行うときは、ターゲット上でモデル内のレートごとにバッファーが作成されます。バッファー内の各エントリには、1 タイム ステップのレート内ですべての信号が必要とするすべてのデータを保持するのに十分な大きさがあります (信号を識別する時間とデータとエクスターナル モードのインデックス)。リング バッファー内のエントリの数は、エクスターナル モードのトリガーの [持続時間] パラメーター (ExtModeTrigDuration) によって決まります。信号のバッファリングのためにターゲット上で割り当てられるメモリは、[持続時間] とアップロードする信号数に比例します。[持続時間] は、エクスターナル モードでのトリガー イベント後のログ データの基本レートのステップ数も示します。

[持続時間] の値は、データの各バッファーで収集されるデータの連続点の数を指定します。[持続時間] の値は、一連のバッファーが連続するのを当てにするのではなく、収集する必要がある連続するサンプル点の数と等しくなるように入力しなければなりません。サンプル点の合計数より小さい値を入力した場合、データ バッファーから MATLAB ワークスペースに値を転送するのにかかる時間の間サンプル点を失う可能性があります。Simulink ソフトウェアは 1 つのバッファー内でのみ点の連続性を維持します。バッファーの間では、転送時間のために一部のサンプルが失われる場合があります。

[持続時間] の値は、Scope ブロックおよび To Workspace ブロックの [直近のデータ点数に制限] の値に影響を及ぼす可能性があります。ブロックから MATLAB ワークスペースに保存されるサンプル点の数は 2 つの値の小さい方になります。ブロックから保存されるサンプル点の数を設定するには、[直近のデータ点数に制限] をクリアします。次に [持続時間] を使用して保存するサンプル点の数を指定します。

トリガー信号の選択

1 件の信号を 1 件のトリガー信号として指定することができます。トリガー信号を選択するには、[トリガー オプション] セクションにある [ソース] メニューから、[信号] を選択します。これにより、[トリガー信号] セクションのパラメーターが有効になります。次に、[信号選択] リストの信号を選択し、[トリガー信号] ボタンをクリックします。

トリガーにする信号を選択すると、[信号選択] リストの [トリガー] 列に T が表示されます。次の図では、Scope A 信号がトリガーです。また、[選択] 列の X で示されるとおり、Scope B も表示用に選択されています。

トリガー信号を選択した後、[トリガー信号] セクションを使用してトリガー条件を定義し、トリガー信号 [端子] および [要素] パラメーターを設定します。

トリガー条件の設定

[外部信号とトリガー] ダイアログ ボックスの[トリガー信号] セクションを使用してトリガー条件とトリガー属性を設定します。[トリガー信号] パラメーターは、[トリガー オプション] セクションのトリガー パラメーター [ソース][信号] に設定されている場合にのみ有効になります。

既定の設定では、指定されたトリガー ブロックの最初の入力端子の要素によりトリガーが始動します (つまり、端子 1、任意の要素)。この動作は、[トリガー信号] セクションで、[端子] および [要素] の値を変更することで調整できます。[端子] フィールドには、数またはキーワード last を入力することができます。[要素] フィールドには、数またはキーワード anylast を入力することができます。

[トリガー信号] セクションでは、トリガーが発生する条件を定義することができます。

  • 方向:[立ち上がり][立ち下がり]、または [両方]。信号がしきい値を横切るときに移動する向きです。既定の設定は [立ち上がり] です。

  • レベル:トリガーを始動するために信号が指定の向きで横切らなくてはならないしきい値です。既定の設定では、レベルは 0 です。

  • ホールドオフ:[ノーマル] モードに対してのみ適用されます。[ホールドオフ] は基本レート ステップ数で表現され、1 件のトリガー イベントが終了してからトリガーが再装備されるまでの時間です。

接続中の [信号とトリガー] オプションの変更

信号データのアップロードを設定して、Simulink を実行中のターゲットの実行可能ファイルに接続すると、ターゲットから切断せずに信号とトリガーのオプションを変更できます。

トリガーが装備されると (たとえば、既定の設定のトリガー オプション [ターゲットへ接続時にアーム] が選択されている場合)、[外部信号とトリガー] ダイアログ ボックスを変更できません。信号とトリガー オプションを変更するには、次の手順に従います。

  1. エクスターナル モード コントロール パネルを開きます。

  2. [トリガーをキャンセル] をクリックします。トリガーおよびアップロードされたデータの表示が行われなくなります。

  3. [外部信号とトリガー] ダイアログ ボックスを開いて、必要に応じて信号およびトリガー オプションを変更します。たとえば、[信号選択] セクションでスコープを有効または無効にして、[トリガー オプション] セクションでトリガーの [モード] をたとえば [ノーマル] から [ワンショット] に変更します。

  4. [トリガーの準備] をクリックします。トリガーおよびアップロードされたデータの表示は、変更によって再開されます。

ターゲット アプリケーションの信号データのホスト アーカイブの設定

エクスターナル モードでは、Simulink Scope ブロックと To Workspace ブロックを使用してデータをディスクにアーカイブすることができます。

アーカイブ機能の処理を理解するには、アーカイブ機能が無効であるときのデータの処理を考えます。ワンショット モードとノーマル モードという 2 つのケースがあります。

  • ワンショット モードでは、トリガー イベント発生後、選択された各ブロックがデータをワークスペースに書き込みます。これは、シミュレーションの最後に行う動作と同じです。別のワンショットがトリガーされると、その時点で存在するワークスペース データは上書きされます。

  • [ノーマル] モードでは、エクスターナル モードはトリガー イベントが発生するたびにトリガーを自動的に再装備します。このように、ノーマル モードはワンショットが連続して発生したものであるとみなすこともできます。この一連のワンショットの個々のワンショットは、最後のものを除いて "中間結果" と呼ばれます。トリガーはいつでも始動する可能性があるため、中間結果をワークスペースに書き込むと、ワークスペース変数が不意に上書きされることがあります。したがって、既定の動作としては最後のワンショットの結果のみをワークスペースに書き込むよう設定されています。中間結果は破棄されます。次のトリガーまでに中間結果を調べるための時間が十分にあることがわかっている場合は、[中間結果をワークスペースに書き込む] オプションを選択して、この既定の動作をオーバーライドすることができます。このオプションをオンにしたからといって、ワークスペース データがそれ以降のトリガーによって上書きされることを防止できるわけではありません。

Simulink Scope ブロックを使用してディスクにデータをアーカイブする場合、[Scope パラメーター] ダイアログ ボックスを開いてオプション [ワークスペースにデータのログを作成] を選択します。このオプションは次の理由で必要になります。

  • データは、スコープ データ バッファーから MATLAB ワークスペースに転送されてから、MAT ファイルに書き込まれます。

  • [Scope パラメーター] ダイアログ ボックスに入力された [変数名] は MATLAB ワークスペースと MAT ファイルの変数名と同じです。データの保存を有効にすると [変数名] パラメーターで名前を付けた変数の MAT ファイルへの保存が可能になります。

メモ

Scope ブロックのオプション [ワークスペースにデータのログを作成] を選択しない場合、データ ログ用の MAT ファイルは作成されますが空です。

[データ アーカイブを有効にする] ダイアログ ボックスは次をサポートしています。

  • フォルダー ノート

  • ファイル ノート

  • データ アーカイブの自動化

[エクスターナル モード コントロール パネル] で [データのアーカイブ] ボタンをクリックして、[データ アーカイブを有効にする] ダイアログ ボックスを開きます。モデルがターゲット環境に接続されている場合、データをアーカイブ化する間は切断してください。ダイアログ ボックス内の他のコントロールを有効にするには、[アーカイブを有効にする] を選択します。

[データ アーカイブを有効にする] ダイアログ ボックスでは以下の操作がサポートされています。

フォルダー ノート

フォルダー内の関連するデータ ファイルの集合に注釈を追加するには、[データ アーカイブを有効にする] ダイアログ ボックスの [ディレクトリ ノートの編集] をクリックします。MATLAB エディターが開きます。このウィンドウで指定フォルダー内のファイルに保存するコメントを入力します。既定の設定では、コメントはデータ アーカイブで最後に書き込まれたフォルダーに保存されます。

ファイル ノート

個別のデータ ファイルに注釈を追加するには、[データ アーカイブを有効にする] ダイアログ ボックスの [ファイル ノートの編集] をクリックします。ファイル検索ウィンドウが開きます。既定の設定では、最後に書き込んだファイルに設定されています。MAT ファイルを選択すると、編集ウィンドウが開きます。このウィンドウで、個々のMAT ファイルに保存するコメントを追加または編集します。

データ アーカイブの自動化

ログ結果のディスクへの自動書き込みを (オプションで中間結果も含めて) 設定するには、[アーカイブを有効にする] オプションとその設定を有効にするコントロールを使用します。このダイアログ ボックスには、以下のコントロールがあります。

  • [ディレクトリ]:データの保存先フォルダーを指定します。[トリガーが準備できたときにディレクトリを増やす] を選択すると、エクスターナル モードでは接尾辞が付けられます。

  • [ファイル]:データの保存先ファイル名を指定します。[ワンショット後にファイルを増やす] を選択すると、エクスターナル モードでは接尾辞が付けられます。

  • トリガーが準備できたときにディレクトリを増やす:エクスターナル モードでは、[トリガーの準備] ボタンがクリックされるたびに別のフォルダーを使用してログ ファイルを書き込みます。これらのフォルダーの名前はインクリメントされます。たとえば、dirname1dirname2 などのようになります。

  • [ワンショット後にファイルを増やす]:新しいデータ バッファーは、インクリメントされたファイルに保存されます。filename1filename2 という要領で既定の名前が付けられます。ファイルのインクリメントは、ノーマル モードでは自動的に行われます。

  • [変数名にファイルの添字を付加]:エクスターナル モードでファイル名がインクリメントされるたびに、同じ名前をもつファイルに変数が埋め込まれます。[変数名にファイルの添字を付加] をオンにすると、各ファイルに一意の変数名が埋め込まれます。たとえば、エクスターナル モードでは、xdata という名前の変数をインクリメントされたファイル (file_1file_2 など) に xdata_1xdata_2 などのように保存します。このアプローチは MAT ファイルをワークスペースへ読み込み、MATLAB コマンド プロンプトでの変数の比較をサポートします。一意の名前がないと、MATLAB ワークスペース内の直前の変数は xdata の各インスタンスにより上書きされてしまいます。

  • [中間結果をワークスペースに書き込む]:Simulink Coder ソフトウェアで中間結果をワークスペースに書き込むには、このオプションを選択します。

TCP/IP またはシリアルのエクスターナル モード シミュレーションのグラフィカル コントロールの概要

TCP/IP またはシリアルのエクスターナル モードのシミュレーションを、次のようにして制御できます。

  • Simulink ツールストリップの [ハードウェア] タブ。[ハードウェア] タブを表示するには、Simulink ツールストリップの [アプリ] タブから、[カスタム ハードウェア上で実行] をクリックします。

  • エクスターナル モード コントロール パネル。このダイアログ ボックスを開くには、Simulink エディターの [ハードウェア] タブの [準備] セクションで、 をクリックします。次に、[信号の監視とトレース] で、[コントロール パネル] をクリックします。

[ハードウェア] タブと [エクスターナル モード コントロール パネル] で使用できるコントロールを使用して実行できるエクスターナル モードのアクションを次の表に示します。

エクスターナル モード アクション[ハードウェア] タブエクスターナル モード コントロール パネル

ターゲット アプリケーションをビルドする。

[ハードウェアで実行][監視用のビルド]

N/A

ターゲット ハードウェアでアプリケーションを実行する。

[ハードウェアで実行][展開]

N/A

Simulink を待機中または実行中のターゲット アプリケーションに接続する。

[ハードウェアで実行][接続]

Simulink がターゲット アプリケーションに接続されている場合、[接続] がグレー表示になり、[切断] がアクティブになります。

接続

Simulink がターゲット アプリケーションに接続されると、[接続][切断] に変わります。

ターゲット環境で生成されたコードのリアルタイム実行を開始する。

[ハードウェアで実行][開始]

リアルタイム コードを開始

生成されたコードが実行を開始すると、ボタンは [リアルタイム コードを停止] に変わります。

ターゲット環境から Simulink を切断するが、コードのリアルタイム実行は停止しない。

[ハードウェアで実行][切断]

Simulink がターゲット アプリケーションから切断されている場合、[切断] がグレー表示になり、[接続] がアクティブになります。

切断

ターゲット アプリケーションの実行を停止し、Simulink をターゲット環境から切り離す。

[ハードウェアで実行] セクションの [停止] ボタン

リアルタイム コードを停止

ブロック パラメーターのバッチを調整する。

[準備] セクションの [更新を保留] ボタンと [すべてのパラメーターを更新] ボタン。

[バッチ ダウンロード][ダウンロード]

ブロックおよびサブシステムのエクスターナル モードとの互換性

互換ブロック

エクスターナル モードでは次の種類のブロックを使用して、ターゲット アプリケーションからアップロードされた信号の受信と表示を行うことができます。

  • Floating Scope ブロックと Scope ブロック

  • DSP System Toolbox™ 製品の Spectrum Analyzer ブロックと Time Scope ブロック

  • Display ブロック

  • To Workspace ブロック

  • ユーザーが書いた S-Function ブロック

    エクスターナル モード メソッドが S-Function API に組み込まれています。このメソッドによってユーザーが記述したブロックでエクスターナル モードをサポートできます。matlabroot/simulink/include/simstruc.h を参照してください。

  • Record, XY Graph ブロック

いくつかのサブシステムを Signal Viewing Subsystem として指定し、それらを使用してターゲット アプリケーションからアップロードされた信号の受信と表示を行うことができます。詳細については、Signal Viewing Subsystemを参照してください。

エクスターナル モード互換のブロックとサブシステムを選択してトリガーを装備するには、[外部信号とトリガー] ダイアログ ボックスを使用します。既定の設定では、モデル内のそういった互換ブロックが選択され、ターゲット アプリケーションへの接続時に手動トリガーが装備されるよう設定されます。

Signal Viewing Subsystem

Signal Viewing Subsystem は、ターゲット システムから受信した信号の処理と表示をカプセル化する Atomic Subsystem です。ホスト上でのみ動作し、ターゲット システムにコードを生成しません。Signal Viewing Subsystem は、ノーマル、アクセラレータ、ラピッド アクセラレータおよびエクスターナル シミュレーション モードで実行されます。

メモ

Signal Viewing Subsystem は、SIL コンポーネントまたは PIL コンポーネント (SIL モードまたは PIL モードの最上位モデル、SIL モードまたは PIL モードの Model ブロック、SIL ブロックまたは PIL ブロックなど) 内に配置された場合は非アクティブです。ただし、SIL または PIL コンポーネントは、サポートされているモードで実行している Signal Viewing Subsystem に供給はできます。

Signal Viewing Subsystem が役立つのは、信号を処理または条件付けしてから表示またはログ作成する場合に、これらの作業をターゲット システム上では実行したくない状況です。Signal Viewing Subsystem を使用することにより、ターゲット システム上でより小さく効率的なコードを生成することができます。

Signal Viewing Subsystem は他のエクスターナル モード互換モード ブロックと同様に、[外部信号とトリガー] ダイアログ ボックスに表示されます。

あるサブシステムが Signal Viewing Subsystem であると宣言するには、以下のようにします。

  1. [ブロック パラメーター] ダイアログ ボックスの [Atomic サブシステムとして扱う] オプションを選択します。

    Atomic サブシステムの詳細については、Simulink モデリング コンポーネントを参照してください。

  2. SimViewingDevice プロパティを有効にするために、set_param コマンドを使用します。

    set_param('blockname', 'SimViewingDevice','on')

    'blockname' はサブシステムの名前です。

  3. このサブシステムが以下の要件を満たしていることを確認します。

    • 純粋な Sink ブロックでなければなりません。つまり、Outport ブロックも Data Store ブロックも含んではなりません。Goto ブロックを含んでもよいのは、対応する From ブロックがサブシステム境界内に含まれる場合のみです。

    • 連続状態が存在してはなりません。

以下のモデル sink_examp には、Atomic Subsystem である theSink が含まれます。

theSink サブシステムでは、入力信号にゲインとオフセットが適用されて、Scope ブロックに表示されます。

theSink が Signal Viewing Subsystem と宣言された場合、生成されたターゲット アプリケーションには Sine Wave ブロック専用のコードのみが含まれることになります。[外部信号とトリガー] ダイアログ ボックスで [theSink] が選択されて装備された場合、ターゲット アプリケーションはシミュレーション時に正弦波信号を theSink にアップロードします。すると、ユーザーはブロックのパラメーターを theSink 内で修正し、アップロードされた信号を観察することができるようになります。

theSink が Signal Viewing Subsystem と宣言されないと、Gain、Constant、および Sum の各ブロックはターゲット システム上でサブシステム コードとして実行されます。正弦波信号が Simulink エンジンにアップロードされるのは、これらのブロックによって処理され sink_examp/theSink/Scope2 に表示された後です。ターゲット システム上での処理の需要が増えるのは、追加の信号処理が必要になった場合、およびブロック パラメーターの変更内容をホストからダウンロードするときです。

データ アーカイブでサポートされるブロック

エクスターナル モードでは、次の種類のブロックを使用してデータをディスクにアーカイブすることができます。

  • Scope ブロック

  • To Workspace ブロック

[データ アーカイブを有効にする] ダイアログ ボックスを使用してデータ アーカイブを設定します。詳細については、ターゲット アプリケーションの信号データのホスト アーカイブの設定を参照してください。

調整可能なパラメーターをダウンロードするためのエクスターナル モードのメカニズム

ターゲット アプリケーションが生成されたときの [既定のパラメーター動作] オプションの設定に応じて、パラメーターの更新を処理する方法に違いが生じます。ダウンロードの仕組みでは、[既定のパラメーター動作][調整可能] に設定された場合のエクスターナル モード通信の動作について説明しています。インライン化された調整可能なパラメーターでは、[既定のパラメーター動作][インライン] に設定された場合のエクスターナル モードの動作について説明しています。

ダウンロードの仕組み

エクスターナル モードでは、Simulink エンジンはブロック線図で表現されるシステムをシミュレーションしません。既定の設定では、エクスターナル モードが有効の場合、Simulink エンジンはパラメーターをターゲット システムにダウンロードします。初回のダウンロード以降、ブロック線図のパラメーターが変更されるかエンジンがターゲットからデータを受信するまでは、エンジンは待機モードのままになります。

ブロック線図でパラメーターが変更されると、Simulink エンジンは外部インターフェイスの MEX ファイルを呼び出します。その際、新しいパラメーター値をその他の情報とともに引数として渡します。外部インターフェイスの MEX ファイルには、プロセス間通信 (IPC) チャネルの一方の側を実装するコードが含まれます。このチャネルにより、Simulink プロセス (MEX ファイルの実行場所) が外部プログラムを実行しているプロセスに接続されます。MEX ファイルは、このチャネルを使用して外部プログラムに新しいパラメーターを転送します。

通信チャネルのもう一方の側は、外部プログラム内に実装されます。こちら側は、新しいパラメーター値をターゲットのパラメーター構造体 (model_P) に書き込みます。

Simulink 側はパラメーター情報を格納したメッセージを外部プログラムに送信することにより、パラメーター ダウンロードを開始します。クライアント/サーバー コンピューティングの概念では、Simulink 側がクライアント、外部プログラムがサーバーです。この 2 つのプロセスは、リモートでもローカルでもかまいません。クライアントとサーバーがリモートの場合、データの転送に TCP/IP などのプロトコルが使用されます。クライアントとサーバーがローカルの場合、データの転送にシリアル接続または共有メモリが使用されます。

次の図はこの関係を示します。ブロック線図でパラメーターが変更されるたびに、Simulink エンジンは外部インターフェイスの MEX ファイルを呼び出します。すると、MEX ファイルは通信チャネルを使用してパラメーターを外部プログラムにダウンロードします。

エクスターナル モードのアーキテクチャ

インライン化された調整可能なパラメーター

既定の設定では、エクスターナル モード プログラムのパラメーター (TCP/IP およびシリアルのエクスターナル モードの制限事項に列挙されているパラメーターを除く) は調整可能です。つまり、この節で説明されているダウンロードの仕組みを使用してパラメーターを変更することができます。

[既定のパラメーター動作][インライン] に設定すると ([コンフィギュレーション パラメーター] ダイアログ ボックスの [最適化] ペイン)、Simulink Coder コード ジェネレーターが生成されたコードにシンボリック パラメーター名ではなくモデル パラメーターの数値 (定数) を組み込みます。パラメーターをインライン化することにより、コードが小さくなり効率性が向上します。ただし、インライン化されたパラメーターは事実上定数になるので、調整できません。

Simulink Coder ソフトウェアでは、ほとんどのパラメーターをインライン化することにより、アプリケーションにとって重要な選択されたパラメーターの実行時調整の柔軟性を保持しながら、全体の効率を改善することができます。パラメーターをインライン化する時に、Simulink.Parameter オブジェクトを使用して、インラインから個々のパラメーターを削除し、それらが調整可能であると宣言することができます。さらに、これらのオブジェクトを使用して、生成されたコードにおけるパラメーターの表現方法を制御できます。

調整可能なパラメーターの詳細については、生成されたコードにおける調整可能なキャリブレーション パラメーターの作成を参照してください。

ホスト/ターゲット接続での自動的なパラメーター アップロード.  [既定のパラメーター動作][インライン] に設定された状態で生成されたターゲット アプリケーションに Simulink エンジンを接続するたびに、ターゲット アプリケーションはその時点での調整可能なパラメーター値をホストにアップロードします。これらの値は対応する MATLAB ワークスペース変数に割り当てられます。この手順により、パラメーター値についてホストとターゲットの同期が取られます。調整可能なパラメーターがモデル ワークスペースまたはデータ ディクショナリに保存される場合、値はアップロードされず、Simulink は警告を生成します。

モデルが必要とするワークスペース変数は、ホスト/ターゲット接続時に初期化されなければなりません。そうでないと、アップロードは続行されず、エラーが発生します。接続が確立されると、これらの変数がアップロードされ、ターゲット システム上での最新のパラメーター値が反映されます。

[既定のパラメーター動作][インライン] に設定された状態でターゲット アプリケーションが生成された場合にのみ、自動的なパラメーターのアップロードが行われます。ダウンロードの仕組みでは、[既定のパラメーター動作][調整可能] に設定された状態でのエクスターナル モード通信の動作について説明しています。

クライアントおよびサーバーの通信プロトコルの選択

はじめに

Simulink Coder 製品では、TCP/IP かシリアル プロトコルのいずれかを使用するエクスターナル モード通信のクライアント サイドとサーバー サイドの両方を実装するためのコードが用意されています。ターゲット システムが TCP/IP をサポートする場合、Simulink Coder 製品が提供するソケットベースのエクスターナル モード実装を生成コードと組み合わせて使用することができます。そうでない場合は、用意されているシリアル トランスポート層オプションを使用するかカスタマイズしてください。

下位の "トランスポート層" が、メッセージの物理的伝送を処理します。Simulink エンジンとモデル コードの両方とも、この層から独立しています。トランスポート層とそのトランスポート層に直接接続するコードは両方とも、メッセージとデータ パケットの書式設定、伝送、および受信を行う独立した複数のモジュールに分かれています。

TCP/IP 実装の使用

Open Group UNIX® システムまたは PC システム上のリアルタイム プログラムでエクスターナル モードの TCP/IP ベースのクライアント/サーバー実装を使用することができます。エクスターナル モードのトランスポート層をカスタマイズする際のヘルプについては、TCP/IP またはシリアルのエクスターナル モード通信のためのトランスポート層の作成を参照してください。

TCP/IP を介して Simulink エクスターナル モードを使用するには、次を行います。

  • ターゲットの TCP/IP トランスポートに適切な外部インターフェイスの MEX ファイルが指定されていることを確認します。

    MathWorks® が提供するターゲットが、matlabroot/toolbox/simulink/simulink/extmode_transports.m の外部インターフェイスの MEX ファイルの名前を指定します。このインターフェイスの名前は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [インターフェイス] ペインの [エクスターナル モード構成] セクションに編集不可能なテキストとして表示されます。TCP/IP の既定の設定は [ext_comm] です。

    カスタム ターゲットの TCP/IP トランスポートを指定するには、以下の形式のエントリを MATLAB パス上の sl_customization.m ファイルに追加しなければなりません。

    function sl_customization(cm)
      cm.ExtModeTransports.add('stf.tlc', 'transport', 'mexfile', 'Level1');
    %end function
    • stf.tlc はトランスポートを登録するシステム ターゲット ファイルの名前です (たとえば 'mytarget.tlc')。

    • transport は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [インターフェイス] ペインの [トランスポート層] メニューに表示されるトランスポート名です (例: 'tcpip')。

    • mexfile は、トランスポートに関連付けられた外部インターフェイスの MEX ファイルの名前です (例: 'ext_comm')。

    追加の cm.ExtModeTransports.add 行を増やすことにより、複数のターゲットまたはトランスポートを指定することができます。次に例を示します。

    function sl_customization(cm)
      cm.ExtModeTransports.add('mytarget.tlc', 'tcpip', 'ext_comm', 'Level1');
      cm.ExtModeTransports.add('mytarget.tlc', 'serial', ...
                               'ext_serial_win32_comm', 'Level1');
    %end function
  • テンプレート makefile が TCP/IP サーバー コードのソース ファイルにリンクするように構成されていること、さらに同ファイルが生成コードのビルド時にコンパイラ フラグを定義していることを確認します。

  • 外部プログラムをビルドします。

  • 外部プログラムを実行します。

  • Simulink モデルをエクスターナル モードに設定し、ターゲットに接続します。

次の図は TCP/IP ベース実装の構造を示したものです。

エクスターナル モード用 TCP/IP ベースのクライアント/サーバー実装

MEX ファイルの TCP/IP トランスポート用オプション引数.  [外部ターゲット インターフェイス] ダイアログ ボックスでは、既存ターゲットとの通信に使用されるエクスターナル モードのインターフェイス MEX ファイルに渡される引数をオプションとして指定することができます。

  • ターゲット ネットワーク名:外部プログラムを実行するコンピューターのネットワーク名。既定の設定では、'myComputer' などの Simulink 製品が実行されるコンピューターです。'148.27.151.12' などの IP アドレスを使用することもできます。

  • 詳細レベル:データ転送時に表示される情報の詳細度を制御します。値は 01 のいずれかであり、意味は次のとおりです。

    0 — 情報なし
    1
    — 詳細な情報

  • TCP/IP server port number:既定値は 17725 です。ポート番号を 25665535 の値に変更して、ポートの競合を回避することができます。

引数は位置を示すものなので、次の順序どおりに指定しなければなりません。

<TargetNetworkName> <VerbosityLevel> <ServerPortNumber>

たとえば、詳細レベル (2 番目の引数) を指定する場合、ターゲットのネットワーク名 (1 番目の引数) も指定しなければなりません。引数は空白またはコンマで区切ることができます。以下に例を示します。

'148.27.151.12' 1 30000

外部プログラムの起動時に、外部プログラムに対するコマンド ライン オプションを指定することができます。外部プログラムの実行を参照してください。

シリアル実装の使用

シリアル チャネル上のホスト/ターゲット通信を制御することは、TCP/IP チャネル上のホスト/ターゲット通信を制御することに似ています。

シリアル チャネルを介して Simulink エクスターナル モードを使用するには、以下を行わなければなりません。

  • ターゲットのシリアル トランスポートに外部インターフェイスの MEX ファイルが指定されていることを確認します。

    MathWorks が提供するターゲットが、matlabroot/toolbox/simulink/simulink/extmode_transports.m の外部インターフェイスの MEX ファイルの名前を指定します。このインターフェイスの名前は、[コンフィギュレーション パラメーター] ダイアログ ボックスの [インターフェイス] ペインの [エクスターナル モード構成] セクションに編集不可能なテキストとして表示されます。シリアルの既定の設定は serial です。

    カスタム ターゲットのシリアル トランスポートを指定するには、以下の形式のエントリを MATLAB パス上の sl_customization.m ファイルに追加しなければなりません。

    function sl_customization(cm)
      cm.ExtModeTransports.add('stf.tlc', 'transport', 'mexfile', 'Level1');
    %end function
    • stf.tlc はトランスポートを登録するシステム ターゲット ファイルの名前です (たとえば 'mytarget.tlc')。

    • transport はトランスポートの名前です。[コンフィギュレーション パラメーター] ダイアログ ボックスの [インターフェイス] ペインの [トランスポート層] メニューに表示されます ('serial' など)。

    • mexfile は、トランスポートに関連付けられた外部インターフェイスの MEX ファイルの名前です (例: 'ext_serial_win32_comm')。

    追加の cm.ExtModeTransports.add 行を増やすことにより、複数のターゲットまたはトランスポートを指定することができます。次に例を示します。

    function sl_customization(cm)
      cm.ExtModeTransports.add('mytarget.tlc', 'tcpip', 'ext_comm', 'Level1');
      cm.ExtModeTransports.add('mytarget.tlc', 'serial', ...
                               'ext_serial_win32_comm', 'Level1');
    %end function
  • テンプレート makefile が シリアル サーバー コードのソース ファイルにリンクするように構成されていること、さらに同ファイルが生成コードのビルド時にコンパイラ フラグを定義していることを確認します。

  • 外部プログラムをビルドします。

  • 外部プログラムを実行します。

  • Simulink モデルをエクスターナル モードに設定し、ターゲットに接続します。

MEX ファイルのシリアル トランスポート用オプション引数.  [コンフィギュレーション パラメーター] ダイアログ ボックスの [インターフェイス] ペインの [MEX ファイルの引数] フィールドで、実行ターゲットとの通信に使用されるエクスターナル モードのインターフェイス MEX ファイルに渡される引数を指定することができます。シリアル トランスポートでは、ext_serial_win32_comm のオプション引数は次のとおりです。

  • 詳細レベル:この引数は、データ転送時に表示される情報の詳細度を制御します。この引数の値は次のとおりです。

    • 0 (情報なし) または

    • 1 (詳しい情報)

  • シリアル ポート ID:整数または文字ベクトルとして指定される、ホストのポート ID。たとえば、シリアル コンバーターへの USB のポート ID を '/dev/ttyusb0' のように指定します。Simulink Coder は、Windows® では \\.\COM、Unix では /dev/ttyS を整数のポート ID の前に付けます。

    シリアル接続を使用してターゲット アプリケーションを起動するときは、ターゲット アプリケーションをホストに接続するために使用するポート ID を指定しなければなりません。そのためには、-port コマンド ライン オプションを含めます。次に例を示します。

    mytarget.exe -port 2 -w
  • ボー レート:整数値を指定します。既定値は 57600 です。

MEX ファイル オプションの引数は位置を示すものなので、次の順序どおりに指定しなければなりません。

<VerbosityLevel> <SerialPortID> <BaudRate>

たとえば、シリアル ポート ID (2 番目の引数) を指定する場合、詳細レベル (1 番目の引数) も指定しなければなりません。引数は空白またはコンマで区切ることができます。以下に例を示します。

1 '/dev/ttyusb0' 57600

外部プログラムの起動時に、コマンド ライン オプションを指定できます。

外部プログラムの実行

エクスターナル モードで Simulink 製品を使用する前に、外部プログラムを実行しなければなりません。

ターゲット アプリケーションがホストと同じコンピューター上で実行されており、かつ通信がループバック シリアル ケーブルを通じて行われている場合、ターゲットのポート ID はホストのポート ID ([MEX ファイルの引数] 編集フィールドで指定) と異なっていなければなりません。

外部プログラムを実行するには、次の形式のコマンドを入力します。

model -opt1 ... -optN

model は外部プログラムの名前で、-opt1 ... -optN はオプションです (外部プログラム用のコマンド ライン オプションを参照してください)。この節の例では、外部プログラムの名前は ext_example です。

Windows 環境での外部プログラムの実行.  Windows 環境で、次のいずれかの方法で外部プログラムを実行することができます。

  • コマンド プロンプト ウィンドウを開きます。コマンド プロンプトで、ターゲットの実行可能ファイルの名前、その次に可能なオプションを入力します。次に例を示します。

    ext_example -tf inf -w
  • あるいは、ターゲットの実行可能ファイルを MATLAB コマンド ウィンドウから起動することもできます。このコマンドの前に感嘆符 (!)、コマンドの後にアンパサンド (&) を指定しなければなりません。次に例を示します。

    !ext_example -tf inf -w &

    アンパサンド (&) を使用すると、オペレーティング システムはもう 1 つ別のプロセスでターゲットの実行可能ファイルを実行するようになります。アンパサンドを含めなくてもプログラムは実行されますが、MATLAB コマンド プロンプトでコマンドを入力することも実行可能ファイルを手動で終了することもできません。

UNIX 環境での外部プログラムの実行.  UNIX 環境で、次のいずれかの方法で外部プログラムを実行することができます。

  • Xterm ウィンドウを開きます。コマンド プロンプトで、ターゲットの実行可能ファイルの名前、その次に可能なオプションを入力します。次に例を示します。

    ./ext_example -tf inf -w
  • あるいは、ターゲットの実行可能ファイルを MATLAB コマンド ウィンドウから起動することもできます。Simulink 環境にアクセスし続けるには、これをバックグラウンドで実行しなければなりません。このコマンドの前に感嘆符 (!)、ドットとスラッシュ (現在のディレクトリを示す ./)、コマンドの後にアンパサンド (&) を指定しなければなりません。以下に例を示します。

    !./ext_example -tf inf -w &

    アンパサンド (&) を使用すると、オペレーティング システムはもう 1 つ別のプロセスでターゲットの実行可能ファイルを実行するようになります。

外部プログラム用のコマンド ライン オプション.  Simulink Coder コード ジェネレーターにより生成されたエクスターナル モード ターゲット実行可能ファイルは、次のコマンド ライン オプションをサポートします。

  • -tf n

    -tf オプションは、Simulink モデルで設定されている終了時間をオーバーライドします。引数 n はプログラムの実行秒数を指定します。inf 値は、モデルに無期限の実行を指示します。この場合、モデル コードは、ターゲット アプリケーションが Simulink エンジンから終了メッセージを受け取るまで実行し続けます。

    次の例では、終了時間が 10 秒に設定されます。

    ext_example -tf 10

整数専用の ERT ターゲットがエクスターナル モードでビルド、実行される場合、ターゲットは終了時間パラメーター (-tf) を実行秒数ではなく基本レート ステップ数として解釈します。

  • -w

    ターゲット アプリケーションに対して、ホストからメッセージを受信するまで待機状態に移行するように指示します。この時点ではターゲットは実行中ですが、モデル コードは実行されていません。開始メッセージが送信されるのは、[シミュレーション] メニューの [リアルタイム コードを開始] をクリックするか、[エクスターナル モード コントロール パネル] の [リアルタイム コードを開始] ボタンをクリックしたときです。

    ターゲット アプリケーションの実行のタイム ステップ 0 からのデータを表示する場合、またはターゲット アプリケーションでモデル コードの実行を開始する前にパラメーターを変更する場合には、-w オプションを使用します。

  • -port n

    ターゲット アプリケーションの TCP/IP ポート番号またはシリアル ポート ID n を指定します。ターゲット アプリケーションのポート番号は、TCP/IP トランスポート用ホストのポート番号と一致していなければなりません。ポート番号はトランスポート タイプによって異なります。

    • TCP/IP トランスポートの場合:ポート番号は 256 から 65535 までの整数で、既定の値は 17725 です。選択したポートをターゲット ハードウェア上で実行する別の TCP/IP サービスで使用してはなりません。

    • シリアル トランスポートの場合:ポート ID は整数または文字ベクトルです。たとえば、シリアル コンバーターへの USB のポート ID を '/dev/ttyusb0' として指定します。

  • -baud r

    整数で指定する場合、このオプションはシリアル トランスポートでのみ利用可能です。

エクスターナル モード プロトコル層の実装

エクスターナル モード通信専用のトランスポート層を独自に実装するには、Simulink Coder 製品で提供されるコード モジュールを変更し、外部インターフェイス MEX ファイルを新規作成しなければなりません。TCP/IP またはシリアルのエクスターナル モード通信のためのトランスポート層の作成を参照してください。

エクスターナル モードのプログラム的使用

エクスターナル モード シミュレーションを MATLAB コマンド ラインからまたはスクリプトでプログラム的に実行することができます。get_param コマンドと set_param コマンドを使用して、モデル シミュレーションのコマンド ライン パラメーター (SimulationModeSimulationCommand など) およびエクスターナル モードのコマンド ライン パラメーター (ExtModeCommandExtModeTrigType など) の値の取得と設定を行います。

以下に示すモデル シミュレーション コマンドでは、Simulink モデルがオープンであり、モデルがエクスターナル モードを使用して接続するターゲット アプリケーションが既に読み込まれていることを想定しています。

  1. Simulink モデルをエクスターナル モードに切り替えます。

    set_param(gcs,'SimulationMode','external')
  2. オープン モデルを読み込まれたターゲット アプリケーションに接続します。

    set_param(gcs,'SimulationCommand','connect')
  3. ターゲット アプリケーションの実行を開始します。

    set_param(gcs,'SimulationCommand','start')
  4. ターゲット アプリケーションの実行を停止します。

    set_param(gcs,'SimulationCommand','stop')
  5. モデルからターゲット アプリケーションを切断します。

    set_param(gcs,'SimulationCommand','disconnect')

引数 'SimulationCommand' を使用する set_param コマンドは非同期です。スクリプトからコマンドを連続して実行すると、各コマンドは、前のコマンドの完了を待たずに開始されます。各コマンドが完了したかどうかを確認するには、スクリプトで、引数 'SimulationStatus' を指定して get_param コマンドを使用します。たとえば、手順 1 ~ 3 で、スクリプトに以下のコマンドを指定します。

set_param(gcs,'SimulationMode','external');
set_param(gcs,'SimulationCommand','connect');

isExternalSimulationActive = false;
while ~isExternalSimulationActive
    simStatus = get_param(gcs, 'SimulationStatus');
    isExternalSimulationActive = strcmp(simStatus, 'external');
end
set_param(gcs,'SimulationCommand','start');

詳細については、プログラムによるシミュレーションの実行を参照してください。

診断ビューアーに、get_param コマンドと set_param コマンドで生成されたエラー メッセージが表示されます。

ワークスペース パラメーターを調整するには、コマンド プロンプトでその値を変更します。ワークスペース パラメーターが Simulink.Parameter オブジェクトの場合、新しい値を Value プロパティに代入します。

myVariable = 5.23;
myParamObj.Value = 5.23;

エクスターナル モードでワークスペース パラメーターをダウンロードするには、モデルのブロック線図を更新します。以下のモデル シミュレーション コマンドにより、モデルの更新が実行されます。

set_param(gcs,'SimulationCommand','update')

スコープへのデータのアップロードをトリガーまたはキャンセルするには、ExtModeCommandarmFloatingcancelFloating または armWiredcancelWired を使用します。たとえば、ワイヤード (非フローティング) スコープへのデータのアップロードをトリガーした後で取り消すには、次を行います。

set_param(gcs,'ExtModeCommand','armWired')
set_param(gcs,'ExtModeCommand','cancelWired')

次の表は、get_param コマンドと set_param コマンドで使用できるエクスターナル モードのコマンド ライン パラメーターを示したものです。表には、短い説明、有効な値 (太字で既定値を強調表示)、および [エクスターナル モード] ダイアログ ボックスでの等価物へのマッピングが記載されています。[コンフィギュレーション パラメーター] ダイアログ ボックスの [インターフェイス] ペインで選択できるオプションと等価であるエクスターナル モード パラメーターについては、モデル コンフィギュレーション パラメーター: コード生成インターフェイスを参照してください。

エクスターナル モード コマンド ライン パラメーター

パラメーターと値ダイアログ ボックスの等価物説明
ExtModeAddSuffixToVar
off, on
データ アーカイブを有効にする:[変数名にファイルの添字を付加] チェック ボックスインクリメントされた各ファイル名の変数名をインクリメントします。
ExtModeArchiveDirName
character vector
データ アーカイブを有効にする:[ディレクトリ] テキスト フィールド指定したフォルダーにデータを保存します。
ExtModeArchiveFileName
character vector
データ アーカイブを有効にする:[ファイル] テキスト フィールド指定したファイルにデータを保存します。
ExtModeArchiveMode
character vector - off, auto, manual
データ アーカイブを有効にする:[アーカイブを有効にする] チェック ボックス

自動化されたデータ アーカイブ機能を有効にします。

manual を指定するには、set_param(gcs, 'ExtModeArchiveMode', 'manual') を実行します。

auto を指定すると、ExtModeAutoIncOneShoton に設定されることに注意してください。

ExtModeArmWhenConnect
off, on
外部信号とトリガー:[ターゲットへ接続時にアーム] チェック ボックスSimulink Coder ソフトウェアがターゲットに接続するとすぐにトリガーを装備します。
ExtModeAutoIncOneShot
off, on
データ アーカイブを有効にする:[ワンショット後にファイルを増やす] チェック ボックス新しいデータ バッファーをインクリメンタル ファイルに保存します。
ExtModeAutoUpdateStatusClock (Windows プラットフォームのみ)
offon
使用できません継続的にターゲット時間をアップロードし、モデル ウィンドウのステータス バーに表示します。
ExtModeBatchMode
off, on
エクスターナル モード コントロール パネル:[バッチ ダウンロード] チェック ボックスバッチ モードでのパラメーターのダウンロードの有効/無効を切り替えます。
ExtModeChangesPending
off, on
使用できませんExtModeBatchModeが有効の場合、ターゲットにダウンロードするパラメーターのキューに残っているパラメーターがあるかどうかを示します。
ExtModeCommand
character vector - armFloating, armWired, cancelFloating, cancelWired
  • armFloatingcancelFloating は、エクスターナル モード コントロール パネルのチェック ボックス [フローティング スコープ][データ アップロードを有効にする] をオンおよびオフにするのと等価です。

  • armWiredcancelWired は、エクスターナル モード コントロール パネルのボタン [トリガーの準備] および [トリガーをキャンセル] と等価です。

ターゲット アプリケーションにエクスターナル モード コマンドを発行します。
ExtModeConnected
off, on
エクスターナル モード コントロール パネル:[接続/切断] ボタンターゲット アプリケーションとの接続状況を示します。
ExtModeEnableFloating
off, on
エクスターナル モード コントロール パネル:[データ アップロードを有効にする] チェック ボックスフローティング スコープとの接続が確立されたときのトリガー装備および解除の有効/無効を切り替えます。
ExtModeIncDirWhenArm
off, on
データ アーカイブを有効にする:[トリガーが準備できたときにディレクトリを増やす] チェック ボックストリガーが装備されるたびにログ ファイルをインクリメンタル フォルダーに書き込みます。
ExtModeLogAll
off, on
外部信号とトリガー:[すべて選択] チェック ボックス入手できる信号をターゲットからホストにアップロードします。
ExtModeParamChangesPending
off, on
使用できませんSimulink Coder ソフトウェアがターゲットに接続され、ExtModeBatchMode が有効の場合、ターゲットにダウンロードするパラメーターのキューに残っているパラメーターがあるかどうかを示します。ExtModeChangesPending ではターゲットへの接続があるかどうかをチェックするので、ExtModeChangesPending より効率的です。
ExtModeSkipDownloadWhenConnect
off, on
使用できませんパラメーターをダウンロードせずにターゲット アプリケーションに接続します。
ExtModeTrigDelay
integer (0)
外部信号とトリガー:[遅延] テキスト フィールドトリガーが発生してからデータ収集が開始されるまでの時間の長さ (基本レートステップ数) を指定します。
ExtModeTrigDirection
character vector - rising, falling, either
外部信号とトリガー:[方向] メニュー信号がしきい値を横切るときに移動する向きを指定します。
ExtModeTrigDuration
integer (1000)
外部信号とトリガー:[持続時間] テキスト フィールドエクスターナル モードがトリガー イベント後のデータのログを作成する基本レート ステップ数を指定します。
ExtModeTrigDurationFloating
character vector - integer (auto)
エクスターナル モード コントロール パネル:[持続時間] テキスト フィールドフローティング ステップの持続時間を指定します。[auto] が指定された場合、ExtModeTrigDuration の値が使用されます。
ExtModeTrigElement
character vector - integer, any, last
外部信号とトリガー:[要素] テキスト フィールドトリガーを始動できる指定されたトリガー ブロックの入力端子の要素を指定します。
ExtModeTrigHoldOff
integer (0)
外部信号とトリガー:[ホールドオフ] テキスト フィールドトリガー イベントが終了してからトリガーが再装備されるまでの基本レート ステップ数を指定します。
ExtModeTrigLevel
integer (0)
外部信号とトリガー:[レベル] テキスト フィールドトリガー信号がトリガーを始動するために横切らなければならないしきい値を指定します。
ExtModeTrigMode
character vector - normal, oneshot
外部信号とトリガー:[モード] メニュートリガー イベントが発生するたびにトリガーが自動的に再装備されるかどうか、またはトリガー装備のたびに収集されるのが 1 バッファー分のデータのみかどうかを指定します。
ExtModeTrigPort
character vector - integer (1), last
外部信号とトリガー:[端子] テキスト フィールド要素がトリガーを始動できる指定されたトリガー ブロックの入力端子を指定します。
ExtModeTrigType
character vector - manual, signal
外部信号とトリガー:[ソース] メニューデータのログ作成の開始が、トリガーが装備されたときなのか、それとも指定されたトリガー信号がトリガー条件を満たしたときなのかを指定します。
ExtModeUploadStatus
character vector - inactive, armed, uploading
使用できませんエクスターナル モードでのアップロード メカニズムのステータス (inactive、armed または uploading) を返します。
ExtModeWriteAllDataToWs
off, on
データ アーカイブを有効にする:[中間結果をワークスペースに書き込む] チェック ボックス中間結果をワークスペースに書き込みます。

エクスターナル モードでの Stateflow チャートのアニメーション化

Stateflow® をお持ちの場合、エクスターナル モードでチャートをアニメーション化できます。エクスターナル モードでは、チャート内のステートをアニメーション化して、フローティング スコープや信号ビューアーでテスト ポイント信号を表示できます。

エクスターナル モードでのシミュレーション中のステートのアニメーション化

エクスターナル モードでチャート内のステートをアニメーション化するには、以下の手順に従います。

  1. アニメーション化したいチャートをターゲット マシンに読み込みます。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[エクスターナル モード] チェック ボックスをオンにします。

  3. [エクスターナル モード コントロール パネル] ダイアログ ボックスを開きます。

  4. [信号とトリガー] をクリックします。

  5. [外部信号とトリガー] ダイアログ ボックスで、以下のパラメーターを設定します。

    場所選択:
    [信号選択] ペインアニメーション化したいチャート
    [トリガー オプション] ペイン[ターゲットへ接続時にアーム] チェック ボックス
    [トリガー オプション] ペイン[モード] フィールドのドロップダウン メニューから [ノーマル]
  6. モデルをビルドして、実行可能ファイルを生成します。

  7. ターゲット アプリケーションを展開します。

  8. Simulink をターゲット アプリケーションに接続します。

  9. 生成されたモデル コードの実行を開始します。チャートは、実行されたステートを強調表示します。

フローティング スコープと信号ビューアーでのテスト ポイント データの表示

エクスターナル モードでチャートのシミュレーションを実行すると、ローカル スコープのチャート データをテスト ポイントとして指定して、フローティング スコープと信号ビューアーでテスト ポイント データを表示できます。

エクスターナル モードでのシミュレーション時にテスト ポイント データを表示するには、以下の手順に従います。

  1. モデル エクスプローラーを開いて、表示するデータごとに以下の手順に従います。

    1. 中央の [コンテンツ] ペインで、目的のステートまたはローカル データを選択します。

    2. 右側の [ダイアログ] ペインで [ログ] タブを選択し、[テスト ポイント] チェック ボックスを選択します。

  2. フローティング スコープまたは信号ビューアーから、信号選択ボタンをクリックします。

    [信号セレクター] ダイアログ ボックスが開きます。

  3. [信号セレクター] の [モデルの階層構造] ペインで、チャートを選択します。

  4. [信号セレクター] の [リスト内容] メニューで、[テスト ポイント/ログ信号のみ] を選択し、表示する信号を選択します。

  5. エクスターナル モードでのシミュレーション中のステートのアニメーション化の説明に従って、エクスターナル モードでモデルのシミュレーションを実行します。

    スコープまたはビューアーに、シミュレーションの実行に応じてテスト ポイント信号の値が表示されます。

詳細については、ラピッド アクセラレータ モードでのスコープとビューアーの動作を参照してください。

TCP/IP およびシリアルのエクスターナル モードの制限事項

機能詳細
サービス コード インターフェイス

ターゲット環境での生成コードの実行時にエクスターナル モードを使用してパラメーターを調整したり信号を監視したりすることは、ERT ベースのシステム ターゲット ファイルとサービス コード インターフェイスで構成されたコンポーネント モデルから生成されたコードではサポートされません。

パラメーターの変更

通常、パラメーターを変更することはできません。変更すると、結果としてモデルの構造が変更されます。たとえば、次の項目は変更できません。

  • ブロックの状態、入力または出力の数

  • サンプル時間またはサンプル時間の数

  • 連続システムの積分アルゴリズム

  • モデルまたはブロックの名前

ブロック線図にこれらの変更を行うと、新しく生成されたコードを使用してプログラムをリビルドしなければなりません。

伝達関数のパラメーターおよび状態空間表現ブロックは、特定の方法で変更できます。

  • Transfer Fcn (連続と離散) のパラメーター (分子多項式と分母多項式) および Discrete Filter ブロックは、(状態数を変更しない限り) 変更できます。

  • ユーザー指定または計算されたパラメーター (零点 - 極を状態空間に変換することで得られた行列 A、B、C、D) の State-Space および Zero-Pole (連続と離散の両方) ブロックのゼロ要素は、外部のシミュレーションが始まると変更できなくなります。

  • State-Space ブロックでは、可制御正準実現で行列を指定する場合、この実現と行列の次元を保持する A、B、C、D 行列に対して変更を行うことができます。

Simulink ブロック線図が外部のプログラムに一致しない場合、Simulink でチェックサムが一致しないことを示すエラーが発生します。チェックサムは最上位モデルを考慮しますが、参照モデルは考慮しません。更新されたブロック線図を使用してターゲット アプリケーションをリビルドします。

データのアップロード

固定小数点値を使用するパラメーターの場合、ターゲット アプリケーションからのパラメーター値のアップロードはサポートされていません。

可変サイズの信号のアップロード

可変サイズの信号のアップロードは、以下のターゲットではサポートされていません。

  • Simulink Real-Time™

  • Texas Instruments® C2000™

シミュレーション時の信号値の表示

モデルの信号値のグラフィカルな表示 (モデル ブロック線図での信号値の表示に記述) はサポートされません。たとえば、[シミュレーションでのデータ表示][ポイント時に値ラベルを表示][クリック時に値ラベルを切り替え] および [選択した端子の値ラベルを表示] のメニュー選択で使用できません。

調整可能な構造体パラメーター

調整可能な構造体パラメーターのアップロードまたはダウンロードはサポートされません。

C++ コード

生成された C++ コードはサポートされません。次のコンフィギュレーション パラメーター設定を指定すると、シミュレーションでエラーが発生します。

  • 言語C++

  • コード インターフェイスのパッケージ化C++ クラス

純粋な整数コード

純粋な整数コードはサポートされます。

実行コマンドで -tf finalTime を指定しない場合、ターゲット アプリケーションは生成されたモデル コードを無期限に実行し、StopTime を無視します。

実行コマンドで -tf finalTime を指定する場合、次のようになります。

  • finalTime 値は基本レート ステップを表します (秒数ではありません)。

  • finalTime の最大値 (目盛り単位) は MAX_int32_T になる。

  • 16 ビットまたは 32 ビットの目盛りカウンターがオーバーフローすると、Scope ブロックのシミュレーション時間はゼロに戻ります。

半精度

半精度データ型はサポートされません。

Simulink.ImageType Simulink.ImageType データ型はサポートされていません。
データのアーカイブ

データのディスクへのアーカイブでは、Scope ブロックと Workspace ブロックがサポートされます。ただし、他のスコープはデータのアーカイブのサポート対象外です。たとえば、Floating Scope ブロックまたはビューアーとジェネレーターのマネージャーのビューアー オブジェクトを使用してデータをアーカイブすることはできません。

参照モデルのスコープ

モデルの階層構造において、最上位モデルがエクスターナル モードでシミュレーションを実行し、参照モデルがノーマルまたはアクセラレータ モードでシミュレーションを実行する場合、参照モデルのスコープは表示されません。

ただし、最上位モデルがノーマル モードでのシミュレーションに変更された場合、参照モデルにおけるスコープの動作は、ノーマル モードとアクセラレータ モードで異なります。ノーマル モードでシミュレーションを実行する参照モデルのスコープは表示されますが、アクセラレータ モードでシミュレーションを実行する参照モデルのスコープは表示されません。

Simulink メッセージ ブロックに接続された Scope ブロックと Display ブロック

エクスターナル モード シミュレーションでは、Simulink メッセージ ブロックに接続された Scope ブロックおよび Display ブロックから内容が表示されません。

シミュレーションの開始時間

非ゼロのシミュレーション開始時間はサポートされていません。[コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] ペインで、[開始時間] を既定値の [0.0] に設定されたままにしてください。

中間ステップ値

一部の Simulink ブロックは、シミュレーション タイム ステップで複数の値を生成できます。以下に例を示します。

エクスターナル モード シミュレーションのタイム ステップごとに、Simulink は、それらのブロックの最終的な値のみをターゲット アプリケーションからアップロードします。Simulink は、ステップ中に生成された中間値をアップロードしません。

ファイルスコープのデータ

組み込みのカスタム ストレージ クラス FileScope を適用するデータ項目など、ファイルスコープのデータはサポートされていません。ファイルスコープのデータには外部からアクセスできません。

カスタム ストレージ クラスをもつ信号

カスタム ストレージ クラス (CSC) をもつ信号のアップロードはサポートされていません。

printf ステートメントの使用

ターゲット アプリケーション エラーおよび情報メッセージをターゲット ハードウェアのディスプレイに表示するには、printf 呼び出しを使用できます。一部のターゲット ハードウェアでは printf ステートメントの使用によってエクスターナル モードのバイナリ ファイルのサイズが増加する場合があります。printf 呼び出しを無効にするには、ターゲット アプリケーションのコンパイラでプリプロセッサ マクロ定義 EXTMODE_DISABLEPRINTF を指定します。

コマンド ライン引数

実行中のターゲット アプリケーションにコマンド ライン引数を使用できます。以下の制限が適用されます。

  • コマンド ライン引数の解析には関数 sscanf を必要とし、これによって一部のターゲット ハードウェアではプログラム サイズが増加します。

  • 一部のターゲット アプリケーションはコマンド ライン引数を受け入れません。

ターゲット ハードウェアがコマンド ライン引数の解析をサポートしない場合、ターゲット アプリケーション コンパイラに対してプリプロセッサ マクロ定義 EXTMODE_DISABLE_ARGS_PROCESSING=1 を指定します。

-w オプションを置き換えるために、このコマンドを使用して Simulink から接続メッセージを受け取るまでターゲット アプリケーションが待機状態に移行したままになることを指定できます。

set_param(modelName, 'OnTargetWaitForStart', 'on');
ビルド プロセスは必要なオプション (-DON_TARGET_WAIT_FOR_START=1) をコンパイラに提供します。

行優先のコード生成

行優先の形式で生成されたコードはサポートされていません。

シミュレーション データのエクスポート

シミュレーションの出力、信号、および状態のデータのエクスポートはサポートされていません。

関連するトピック