Main Content

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

XCP 通信を使用したエクスターナル モード シミュレーション

エクスターナル モード シミュレーションでは、パラメーターをリアルタイムで調整し、ターゲット アプリケーションの信号を監視できます。[カスタム ハードウェア上で実行] アプリを使用して、開発用コンピューターで、またはカスタム ハードウェアで、XCP 通信チャネルを使用するエクスターナル モード シミュレーションを設定して実行できます。

エクスターナル モード シミュレーションについて、以下を行います。

  1. 開発用コンピューターでターゲット アプリケーションをビルドします。

  2. ターゲット アプリケーションをターゲット ハードウェアに展開します。

  3. ターゲット ハードウェア上で実行するターゲット アプリケーションに Simulink® を接続します。

  4. ターゲット ハードウェア上で生成コードの実行を開始します。

開発用コンピューターでの XCP エクスターナル モード シミュレーションの実行

XCP 通信プロトコルを使用するエクスターナル モード シミュレーションを構成して実行します。シミュレーション中に以下を行います。

  • Scope ブロック、Dashboard ブロック、およびシミュレーション データ インスペクターを使用して信号を監視する。

  • Dashboard ブロックを使用してパラメーターを調整する。

XCP の信号の監視とパラメーター調整の構成

  1. この例で使用するフォルダーを作成します。

    mkdir ext_mode_xcp_example
    cd ext_mode_xcp_example

  2. Simulink を開いて、以下のブロックを含む簡単なモデル xcpExample を作成します。

    • Sine Wave

    • Gain

    • Scope

    • Half Gauge

    • Knob

  3. Sine Wave ブロックをダブルクリックします。[サンプル時間] を 0.1 に設定してから、[OK] をクリックします。

  4. Gain ブロックをダブルクリックします。[ゲイン] を 2 に設定して [OK] をクリックします。

  5. Sine Wave ブロックを Gain ブロックに接続し、その接続に名前を付けます (たとえば Test Signal)。

  6. Gain ブロックを Scope ブロックに接続し、その接続に名前を付けます (たとえば Output Signal)。

  7. ログ記録用に Test Signal を構成します。

    1. Test Signal を選択します。

    2. [信号] タブの [モニター] セクションで [信号のログ] を選択します。

    信号のログ記録を有効にしない場合、Test Signal をシミュレーション データ インスペクターにストリーミングできません。

  8. Test Signal の値を監視するように Half Gauge ブロックを構成します。

    1. Half Gauge ブロックをダブルクリックします。

    2. Simulink エディターで、Test Signal を選択します。

    3. [ブロック パラメーター] ダイアログ ボックスで、以下を行います。

      • ブロックを Test Signal に接続します。

      • [最大値] フィールドに値を入力します (たとえば 1)。

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

  9. Sine Wave ブロックの [振幅] パラメーターを調整するように Knob ブロックを構成します。

    1. Knob ブロックをダブルクリックします。

    2. Simulink エディターで、Sine Wave ブロックを選択します。

    3. [ブロック パラメーター] ダイアログ ボックスで、以下を行います。

      • ブロックを Sine Wave ブロックの [振幅] パラメーターに接続します。

      • [最小値] フィールドと [最大値] フィールドに値を入力します (たとえば、それぞれ 0.1 と 1)。

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

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

ハードウェアの指定とモデルの準備

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

  2. [ハードウェア] セクションの [Board] フィールドで、既定の [No Board] を使用します。

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

    1. [ソルバー] ペインの [タイプ] フィールドで、[固定ステップ] を指定します。次に、[ソルバーの詳細][固定ステップ サイズ (基本サンプル時間)] フィールドに 0.1 を指定します。

    2. [コード生成][最適化] ペインで、[既定のパラメーター動作][調整可能] に設定します。

    3. [コード生成][インターフェイス] ペインで、[エクスターナル モード] チェック ボックスをオンにします。次に、[トランスポート層][XCP on TCP/IP] に設定します。[XCP on TCP/IP] を選択すると自動的に、[MEX ファイル名]ext_xcp が指定され、[静的メモリの自動割り当て] チェック ボックスがオンになり、[最大持続時間] が有効になります。この例では、[最大持続時間] の既定値を使用します。

    4. [システム ターゲット ファイル][ert.tlc] である場合、[コード生成][テンプレート] ペインで、[メイン プログラム例の生成] チェック ボックスをオンにして、[ターゲット オペレーティング システム][BareBoardExample] に設定します。コード ジェネレーターは、エクスターナル モード抽象化レイヤーのドキュメント (matlabroot\toolbox\coder\xcp\src\target\ext_mode\include\ext_mode.h で入手可能) を使用して、オペレーティング システムを実行しないベア ボードに XCP エクスターナル モードのターゲット接続を提供できる方法を示す例を作成します。

    5. [OK] をクリックして変更を適用し、ダイアログ ボックスを閉じます。

    [ハードウェア] タブの [接続] フィールドに、IP: "localhost" – Port:17725 と表示されます。Simulink と開発用コンピューターの間の接続は、[トランスポート層][XCP on TCP/IP] に設定する際にステップ c で指定されました。

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

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

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

  1. シミュレーション終了時間の既定以外の値を指定するには、[終了時間] フィールドで、inf などの値を指定します。

  2. [監視と調整] play icon をクリックして、プロセスを開始します。ソフトウェアでは次が行われます。

    1. 実行可能ファイルを含むターゲット アプリケーション ファイルをビルドします。信号のデバッグ シンボルは、コード生成の構成に従って、実行可能ファイルの一部として作成されるか、別のファイル内に作成されます。コード生成のさまざまな構成の詳細については、Simulink モデルから生成されたコードのビルドに使用するアプローチを参照してください。

    2. ターゲット アプリケーションを開発用コンピューターで別のプロセスとして展開します。

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

    4. 生成されたモデル コードを開始します。

    手順を個別に実行するには、[監視と調整] small arrow pointing down[ステップ単位のコマンド] にある以下のボタンをその順にクリックします。

    1. [監視用のビルド]

    2. [展開]

    3. [接続]

    4. [開始]

信号の監視とパラメーターの調整

以下を使用して Test Signal を監視できます。

  • Scope ブロック –– ブロックをダブルクリックします。

  • シミュレーション データ インスペクター –– [シミュレーション データ インスペクター] ボタンをクリックします。シミュレーション データ インスペクターが開いたら、[Test Signal] チェック ボックスをオンにします。これにより、ストリーム データが表示されます。

  • Half-Gauge ブロック。

正弦波の振幅を変更するには、Knob ブロックのポインターを必要な値まで回転させます。

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

方法詳細

モデル データ エディター

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

  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 は新しい値をターゲット アプリケーションにダウンロードします。

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

生成されたコードでのパラメーター調整の詳細については、TCP/IP またはシリアル通信を使用するエクスターナル モード シミュレーションおよび生成されたコードにおける調整可能なキャリブレーション パラメーターの作成を参照してください。

モデルに Stateflow® チャートが含まれる場合、ステート アクティビティを表示できます。詳細については、Stateflow チャートのアニメーション化 (Stateflow)を参照してください。

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

[終了時間] に達する前に、実行を停止してターゲット アプリケーションを切断するには、[ハードウェア] タブの [ハードウェアで実行] セクションで [停止] button in the shape of a small black square inside a larger gray square をクリックします。

コード実行を停止せずにターゲット アプリケーションを Simulink から切断する場合は、[停止] small arrow pointing down[ステップ単位のコマンド][切断] をクリックします。

XCP エクスターナル モード シミュレーションのトリガーされた信号の監視

XCP エクスターナル モード シミュレーションについて、Simulink での信号監視のためのターゲット アプリケーション データのアップロードを開始するトリガーを構成できます。

  1.  ローカル フォルダーに簡単なモデルを作成します。

  2. Simulink エディターで、それぞれの信号を右クリックして [選択した信号のログ] を選択することで、次の信号のログ記録を構成します。

    • test_signal

    • test_carrier

    • test_output

    • cmp_output

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

  4. [準備] ギャラリーの [モデル コンフィギュレーション] で、[ハードウェア設定] をクリックします。

  5. [ソルバー] ペインの [タイプ] フィールドで、[固定ステップ] を指定します。

  6. [コード生成][インターフェイス] ペインで、[エクスターナル モード] チェック ボックスをオンにします。

  7. [トランスポート層][XCP on TCP/IP] に設定します。これにより、[MEX ファイル名]ext_xcp に指定されます。

  8. [OK] をクリックします。次に、モデルを保存します。

  9. [外部信号とトリガー] ダイアログ ボックスを開くには、[準備] ギャラリーの [信号の監視とトレース] で、[コントロール パネル] をクリックします。

  10. [コンフィギュレーション] セクションで [信号とトリガー] をクリックします。これにより [外部信号とトリガー] ダイアログ ボックスが開きます。

    このダイアログ ボックスを通じて、監視する信号を選択して、ターゲット アプリケーションからデータをアップロードするためのトリガーを構成します。この例では、既定の設定を使用します。

    • [すべて選択] チェック ボックスがオン — ダイアログ ボックスで [選択] 列の各行に X が表示されます。シミュレーション中、ログ記録されたすべての信号を監視できます。

    • [ソース][手動] に設定 –– エクスターナル モード コントロール パネルで [トリガーの準備] ボタンなどの、データのアップロードの手動での制御が提供されます。

    • [ターゲットへ接続時にアーム] チェック ボックスがオン — Simulink をターゲット アプリケーションに接続するときに、トリガーが準備されます。

  11. [OK] をクリックして [外部信号とトリガー] ダイアログ ボックスを閉じてから、[OK] をクリックしてエクスターナル モード コントロール パネルを閉じます。

  12. Simulink エディターで、[ハードウェア] タブに移動します。

  13. [ハードウェアで実行] セクションの [終了時間] フィールドに値 (inf など) を指定します。

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

  15. [監視と調整] play icon をクリックして、プロセスを開始します。ソフトウェアでは次が行われます。

    1. ターゲット アプリケーションをビルドします。

    2. ターゲット アプリケーションを開発用コンピューターで別のプロセスとして展開します。

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

    4. 生成されたモデル コードを開始します。

スコープの表示を表示するには、ScopeA および ScopeB をダブルクリックします。

シミュレーション データ インスペクターで信号を監視するには、[結果の確認] セクションで [データ インスペクター] をクリックします。

[エクスターナル モード コントロール パネル] から、信号のログ記録と監視を中止したり再開したりできます。[接続とトリガー] セクションで [トリガーをキャンセル] または [トリガーの準備] をそれぞれクリックします。

ターゲット アプリケーションの実行を停止して Simulink をターゲット環境から切り離すには、[リアルタイム コードを停止] をクリックします。

信号の監視とトリガー オプションの詳細については、XCP エクスターナル モード コントロール パネルおよびXCP 外部信号とトリガー ダイアログ ボックスを参照してください。

コマンド ラインからの XCP エクスターナル モード シミュレーションの実行

コマンドを使用して、XCP エクスターナル モード シミュレーションを実行できます。モデル パラメーターの値を取得および設定するには、get_param コマンドと set_param コマンドを使用します。

これらのコマンドを実行するには、Simulink モデルを開き、ターゲット アプリケーションを実行していなければなりません。

  1. モデルのシミュレーション モードをエクスターナル モードに設定します。

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

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

    set_param(gcs,'SimulationCommand','connect')

  3. 生成されたモデル コードを実行します。

    set_param(gcs,'SimulationCommand','start');

  4. パラメーターを調整するには、そのワークスペース変数の値をライン コマンドを使用して変更します。たとえば、ブロック パラメーターの値が Simulink.Parameter オブジェクトとして指定されている場合、新しい値を Value プロパティに割り当てます。

    myParamObj.Value = 5.23;

  5. ターゲット アプリケーションに新しい値をダウンロードするには、モデルを更新します。

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

  6. ターゲット アプリケーションを停止し、ターゲット環境から Simulink を切断します。

    set_param(gcs,'SimulationCommand','stop');

    生成コードの実行を停止せずにターゲット アプリケーションから Simulink を切断するには、以下のコマンドを使用します。

    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 コマンドで生成されたエラー メッセージが表示されます。

次の表は、get_param コマンドと set_param コマンドで使用できるパラメーターを示したものです。

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

パラメーターと値ダイアログ ボックスの等価物説明
ExtModeArmWhenConnect
off, on
外部信号とトリガー:[ターゲットへ接続時にアーム] チェック ボックスSimulink Coder™ ソフトウェアがターゲットに接続するとすぐにトリガーを装備します。
ExtModeBatchMode
off, on
エクスターナル モード コントロール パネル:[バッチ ダウンロード] チェック ボックスバッチ モードでのパラメーターのダウンロードの有効/無効を切り替えます。
ExtModeConnected
off, on
エクスターナル モード コントロール パネル:[接続/切断] ボタンターゲット アプリケーションとの接続状況を示します。
ExtModeEnableFloating
off, on
エクスターナル モード コントロール パネル:[データ アップロードを有効にする] チェック ボックスフローティング スコープとの接続が確立されたときのトリガー装備および解除の有効/無効を切り替えます。
ExtModeLogAll
off, on
外部信号とトリガー:[すべて選択] チェック ボックス入手できる信号をターゲットからホストにアップロードします。
ExtModeSendContiguousSamples
off, on
外部信号とトリガー:[複数の連続するサンプルを同一パケットで送信] チェック ボックス信号を Simulink にストリーミングするための XCP DAQ Packed Mode を指定します。ターゲット アプリケーションはパケット内の複数のタイム ステップからサンプルを送信します。ExtModeTrigDuration では、パケットで送信されるサンプルの数を決定します。
ExtModeTrigDelay
integer (0)
外部信号とトリガー:[遅延] テキスト フィールドトリガーが発生してからデータ収集が開始されるまでの時間の長さ (基本レートステップ数) を指定します。
ExtModeTrigDirection
character vector - rising, falling, either
外部信号とトリガー:[方向] メニュー信号がしきい値を横切るときに移動する向きを指定します。
ExtModeTrigDuration
integer (1000)
外部信号とトリガー:[持続時間] テキスト フィールド

エクスターナル モードがトリガー イベント後のデータのログを作成する基本レート ステップ数を指定します。

ExtModeSendContiguousSampleson の場合、ターゲット アプリケーションから Simulink にパケットで送信されるサンプルの数は、以下と等しくなります。

ExtModeTrigDuration/n
ここで、n = (基本レート)/(サンプル レート)

n=1 の場合、パケットで送信されるサンプルの数は、完全に ExtModeTrigDuration になります。マルチレート モデルのサブレートの場合、パケットで送信されるサンプルの数は最も近い整数に丸められます。ターゲット アプリケーションは、Simulink に送信されないバッファー サンプルを破棄します。

ExtModeTrigHoldOff
integer (0)
外部信号とトリガー:[ホールドオフ] テキスト フィールドトリガー イベントが終了してからトリガーが再装備されるまでの基本レート ステップ数を指定します。
ExtModeTrigLevel
integer (0)
外部信号とトリガー:[レベル] テキスト フィールドトリガー信号がトリガーを始動するために横切らなければならないしきい値を指定します。
ExtModeTrigMode
character vector - normal, oneshot
外部信号とトリガー:[モード] メニュートリガー イベントが発生するたびにトリガーが自動的に再装備されるかどうか、またはトリガー装備のたびに収集されるのが 1 バッファー分のデータのみかどうかを指定します。
ExtModeTrigSignalBlockPath
character vector
外部信号とトリガー:[信号選択] ビューで、信号を選択し、[トリガー信号] ボタンをクリック。トリガー信号を提供する出力端子を含むブロックへのパスを指定します。
ExtModeTrigSignalOutputPortIndex
integer
外部信号とトリガー:[信号選択] ビューで、信号を選択し、[トリガー信号] ボタンをクリック。ExtModeTrigSignalBlockPath で指定されるブロックのトリガー信号出力端子のインデックスを指定します。
ExtModeTrigType
character vector - manual, signal
外部信号とトリガー:[ソース] メニューデータのログ作成の開始が、トリガーが装備されたときなのか、それとも指定されたトリガー信号がトリガー条件を満たしたときなのかを指定します。

XCP エクスターナル モード シミュレーションにおける通信バッファーのためのメモリ割り当て

XCP ベースのエクスターナル モード シミュレーションでは、例えば大量のデータを Simulink にストリーミングするモデルや低メモリのターゲット デバイスで実行されるモデルを扱う際に、メモリ要件を手動で特定する必要はありません。

[トランスポート層][XCP on TCP/IP] または [XCP on Serial] に設定すると、次のコンフィギュレーション パラメーターが有効になります。

  • 静的メモリの自動割り当て (ExtModeAutomaticAllocSize)

  • 最大持続時間 (ExtModeMaxTrigDuration) — 既定値は 10 基本レート ステップ。

[最大持続時間] の値を含むモデル情報を使用して、以下に使用するメモリがソフトウェアによって割り当てられます。

  • XCP スタックで使用される内部データ構造体

  • XCP パケットのストレージ

[静的メモリの自動割り当て] チェック ボックスをオフにした場合は次のようになります。

  • 内部データ構造体に割り当てられるメモリは、既定値になります。

  • XCP パケットに割り当てられるメモリは、[静的なメモリ バッファー サイズ] (ExtModeStaticAllocSize) フィールドを使用して指定できます。既定値は 1,000,000 バイトです。

十分なメモリが割り当てられていないと、エクスターナル モード シミュレーションで内部データ構造体または信号のストリーミング用のメモリを予約しようとしたときにメモリ不足エラーが発生します。この場合は、[静的メモリの自動割り当て] チェック ボックスを再度オンにすると、必要なメモリの量をソフトウェアで計算できます。

XCP エクスターナル モード接続を設定するために target パッケージを使用する場合は、次の XCP パラメーターの値を指定することで、ターゲット ハードウェア メモリの事前割り当てをより詳細に制御できます。

  • MaxCTOSize

  • MaxDTOSize

XCP エクスターナル モード接続オプションがある target.XCPExternalModeConnectivity オブジェクトを作成した後、関連する target.XCPTransport オブジェクトのプロパティを使用して XCP パラメーター値を指定します。次に例を示します。

extModeConnectivity = target.create('XCPExternalModeConnectivity', ...                
                                    'Name', 'External Mode Connectivity', ...
                                    'XCP', xcpConfiguration);

extModeConnectivity.XCP.XCPTransport.MaxCTOSize = 16
extModeConnectivity.XCP.XCPTransport.MaxDTOSize = 256
MaxCTOSizeMaxDTOSize の値を小さくすると、より少ないターゲット ハードウェア メモリの事前割り当てが行われます。

詳細については、XCP エクスターナル モード シミュレーションの接続性のカスタマイズを参照してください。

ターゲット アプリケーションの引数

オプションの引数を使用してターゲット アプリケーションを実行できます。オプションの引数をカスタム起動ツールの実装を介してターゲット アプリケーションに渡します。

引数説明
-w

Simulink からメッセージを受信するまで、ターゲット アプリケーションが待機状態になり、その状態のままでいることを指定します。

-w を指定しない場合、ターゲット アプリケーションはモデル コードを即座に実行します。モデル コードは、モデルをビルドしたときのパラメーター値を使用して実行されます。

-tf time

モデル パラメーター StopTime をオーバーライドします。

次で time を指定します。

  • PurelyIntegerCode'off' に設定されている場合は秒。

  • PurelyIntegerCode'on' に設定されている場合は基本レート ステップ数。

-tf inf は、モデル コードが実行されるとモデルが無期限に実行されることを指定します。

ホストベースのエクスターナル モード シミュレーションの場合、追加の rtiostream 引数を指定できます。

引数説明

-verbose level

詳細レベルを指定します。

  • 0 –– 情報なし

  • 1 –– 詳しい情報

-port number

[XCP on TCP/IP] トランスポート層に対しては、TCP/IP サーバーのポート番号を指定します。256 と 65535 の間の整数値を使用します。既定値は 17725 です。

[XCP on Serial] トランスポート層に対しては、シリアル ポート ID を指定します。たとえば、

Windows® では、COM1 に対しては 'COM1' または 1、COM2 に対しては 'COM2' または 2 など。

Linux® では、'/dev/ttyS0' など。

-baud value

[XCP on Serial] トランスポート層に対しては、ボー値を指定します。1200、2400、4800、9600、14400、19200、38400、57600 (既定値)、または 115200。

XCP エクスターナル モードの制限事項

次の表で、XCP 通信を使用するエクスターナル モード シミュレーションに適用される制限事項について説明します。

機能詳細

モデル構造を変更するパラメーターの更新

以下は変更できません。

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

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

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

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

モデル構造を変更するパラメーターの更新を行う場合は、ターゲット アプリケーションをリビルドしなければなりません。

状態の数が変更されない場合、Transfer FcnDiscrete Transfer FcnDiscrete Filter ブロックの分子多項式パラメーターと分母多項式パラメーターを変更できます。

ユーザー指定または計算されたパラメーター (零点 - 極を状態空間に変換することで得られた行列 A、B、C、D) の State-SpaceZero-Pole、および Discrete Zero-Pole ブロックのゼロ要素は変更できません。

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

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

信号値の表示

シミュレーション中の信号値のグラフィカル表示はサポートされていません。たとえば、[Data Display in Simulation] のメニュー項目 [Show Value Labels When Hovering][Toggle Value Labels When Clicked] および [Show Value Label of Selected Port] は使用できません。詳細については、モデル ブロック線図での信号値の表示を参照してください。

データのアーカイブ

[エクスターナル モード コントロール パネル] で使用できる [データのアーカイブ] 機能はサポートされていません。シミュレーション データ インスペクターを使用してデータを収集してエクスポートできます。

信号のログ設定のオーバーライド

[信号ログ セレクター] を使用して信号のログ記録の設定をオーバーライドする場合、[間引き] および [データ点を制限] の設定をオーバーライドする制御はサポートされていません。

サブシステム信号のログ

エクスターナル モード シミュレーションの場合、ターゲット ハードウェア上のイベントに応答して、信号のログが発生します。現在、サポートされているログ イベントは、新しいサンプル時間刻みのみです。一部のサブシステムは、制御信号で有効化または無効化されます。これらのサブシステムでは、サブシステムへの制御信号が有効でない場合も信号値のログが記録されます。

たとえば、Enabled Subsystem ブロックの信号がログ記録用に設定されていれば、サブシステムへの制御信号が 0 より大きくない場合も信号値のログが記録されます。この場合、ログに記録される値は、制御信号が最後に 0 より大きかったときの信号の値です。

この制限が適用されるサブシステムの詳細については、Simulink Subsystem のセマンティクスを参照してください。

コンパイラのデバッグ シンボルの形式

ツールチェーンは以下のいずれかの形式でデバッグ情報を生成しなければなりません。

  • DWARF

  • PDB

グローバル変数

信号、パラメーター、および状態はグローバル変数として指定しなければなりません。変数が格納されるターゲット メモリの位置は、0 ~ 4294967295 の範囲になければなりません。

パラメーター構造体

構造体であるパラメーターは調整できません。

純粋な整数コード

純粋な整数コードはサポートされます。コード生成では、PurelyIntegerCode'on' の場合、1 マイクロ秒以上の分解能で FixedStep を指定します。たとえば、1.0000001 ではなく 1.000001 と指定します。

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

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

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

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

可変サイズの信号

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

コンパイラのサポート

lcc-win64 はサポートされていません。

アドレスの粒度

ワードのアドレスを使用するターゲット ハードウェアはサポートされていません。

移植可能なワード サイズ

製品ターゲット ハードウェアでワードのアドレスが指定可能である場合、移植可能なワード サイズを使用したホストベースのターゲット アプリケーションの生成はサポートされていません。製品ターゲット ハードウェアは 8 ビット、16 ビットおよび 32 ビットのネイティブ データ型をサポートしなければなりません。

Scope ブロック

モデルが Scope ブロックを使用していて、エクスターナル モード シミュレーション中にログ記録されるデータの量が非常に大きくなると、Simulink の速度が低下する場合があります。Scope ブロックの代わりに、シミュレーション データ インスペクターまたは Dashboard ライブラリの同等のブロックを使用できます。詳細については、シミュレーション データの可視化方法の決定を参照してください。

Scope ブロックおよび Floating Scope ブロックとスコープ ビューアー

一部の信号データ型はサポートされていません。シミュレーションで警告が発生します。

Floating Scope ブロックとスコープ ビューアーエクスターナル モード シミュレーションで Floating Scope ブロックとスコープ ビューアーを使用して参照モデルの信号を監視することはできません。参照モデルの信号を監視するには、信号のログ記録を有効にして、シミュレーション データ インスペクターを使用します。

参照モデルのスコープ

モデルの階層構造において、最上位モデルがエクスターナル モードで実行される場合、参照モデルのスコープは表示されません。参照モデルで信号を監視するには、信号のログ記録を有効にして、シミュレーション データ インスペクターを使用します。

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

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

メッセージを可視化するには、シミュレーション データ インスペクターまたは Dashboard ブロックを使用します。

非ゼロのシミュレーション開始時刻

非ゼロのシミュレーション開始時間はサポートされていません。[ソルバー][開始時間] の既定値である 0.0 を使用します。

中間ステップ値

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

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

サービス コード インターフェイス

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

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

ファイルスコープのデータはサポートされていません。たとえば、組み込みのカスタム ストレージ クラス FileScope を適用するデータ項目。シミュレーションで警告が発生します。

FileScope ストレージ クラスの詳細については、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

行優先のコード生成

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

同時実行

Windows および Linux コンピューター上では、同時実行がサポートされます。

Mac コンピューター上では、ネイティブ スレッド例を使用した同時実行はサポートされていません。[エクスターナル モード] および [ターゲット上でタスクの同時実行を許可] チェック ボックスが選択されている場合、エクスターナル モード シミュレーション用の同時実行をサポートするターゲット ハードウェア サポート パッケージを使用していなければ、ターゲット アプリケーションを作成できません。

Windows コンピューター上では、実行時に、ターゲット アプリケーションの基本サンプル時間がシステムのタイマー割り込み間隔 (通常 15.625 ms) の最も近い倍数に量子化されます。サンプリング サブレートは、基本サンプル レートの想定される倍数です。シミュレーション データ インスペクター (SDI) にログが記録されるタイムスタンプは、時計時間ではなく、シミュレーション時間に相当します。例として次の表では、基本サンプル時間が 10 ms、サブレート サンプル時間が 20 ms である Simulink モデルのステップ時間を示します。

基本レートサブレート
ステップ 時計時間 (ms) ログに記録されるタイムスタンプ (ms)ステップ時計時間 (ms)ログに記録されるタイムスタンプ (ms)
000000
1 15.625 10   
2 31.250 20 1 31.250 20
3 46.875 30   
4 62.500 40 2 62.500 40
シミュレーション データのエクスポート

ログ記録された信号と最上位モデルの出力データを MATLAB ワークスペースにエクスポートできます。

  • ログ記録された信号データの場合は、[信号のログ] チェック ボックスをオンにします。

  • 最上位モデルの出力データの場合は、[出力] チェック ボックスをオンにして、[形式] リストから [データセット] を選択します。

MATLAB ワークスペースではなく、MAT ファイルにデータをエクスポートする場合は、[データセットのデータをファイルにログ] チェック ボックスもオンにします。

シミュレーションの状態データのエクスポートはサポートされていません。

シミュレーション出力を単一オブジェクトとして保存することはサポートされていません。シミュレーションで警告が発生します。

参考

関連するトピック

外部の Web サイト