メインコンテンツ

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

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

    • Scope

    • Half Gauge

    • Knob

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

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

  5. ログ用の信号を構成します。

    1. Test Signal を右クリックします。

    2. コンテキスト メニューから [選択した信号のログ] を選択します。信号のログ記録を有効にしない場合、Scope ブロックを使用して信号を表示したり、信号データをシミュレーション データ インスペクターにストリーミングしたりできません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Simulink ツールストリップの [アプリ] タブから、[ハードウェア ボードで実行] をクリックします。

  2. [ハードウェア ボードで実行] ポップアップで、[ハードウェア ボード] をサポートされている ARM® Cortex®-A QEMU エミュレータに設定します。

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

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

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

    2. [ソルバーの詳細][固定ステップ サイズ] フィールドに値を指定します (たとえば 0.1)。

  5. [ハードウェア実行][ハードウェア ボード設定][External mode] ペインで、[Communication interface]XCP on TCP/IP に設定します。

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

ターゲット アプリケーションのビルド、展開、および起動

  1. シミュレーション終了時間の既定以外の値を指定します。[ハードウェア] タブの [ハードウェアで実行] セクションで、[終了時間] フィールドを Inf に設定します。

  2. をクリックします。

    1. 接続されたハードウェア ボード上でモデルがアプリケーションとしてビルド、展開され、起動します。

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

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

    ステップを個別に実行することもできます。

    1. [ハードウェア] タブの [展開] セクションで、[ビルド、展開、起動] をクリックします。

    2. [ハードウェアで実行] セクションで、[監視と調整] ドロップダウンを展開します。

    3. [ステップ単位のコマンド] で、[接続] をクリックします。

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

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

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

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

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

  • Half-Gauge ブロック。

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

シミュレーション中に調整可能なブロック パラメーターを調整するために、次の方法を使用することもできます。

  • ブロック パラメーターが MATLAB® ワークスペースの変数である場合、コマンド ウィンドウで変数に新しい値を割り当てます。次に、Simulink エディターで、Ctrl+D を押してブロック線図を更新します。Simulink がターゲット アプリケーションに新しい値をダウンロードします。

  • [ブロック パラメーター] ダイアログ ボックスを開きます。パラメーターのフィールドで、必要な値を指定します。[適用] または [OK] をクリックすると、Simulink は新しいパラメーター値をターゲット アプリケーションにダウンロードします。

複数の調整可能なパラメーターを同時に変更するには、次を行います。

  1. [準備] セクションで、[バッチ モード] をクリックします。

  2. モデルで、必要なパラメーターを変更します。

  3. [すべてのパラメーターを更新] をクリックします。ターゲット アプリケーション上でパラメーター値が同時に変更されます。

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

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

StopTime に達してターゲット アプリケーションを切断する前に、生成されたモデル コードの実行を停止するには、Simulink エディター ツール バーで、停止ボタン をクリックします。

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

XCP エクスターナル モード シミュレーションのグラフィカル コントロール

以下を使用して XCP エクスターナル モード シミュレーションを制御できます。

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

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

次の表は、XCP エクスターナル モード シミュレーションに使用できる制御を示したものです。

エクスターナル モード アクションツールストリップエクスターナル モード コントロール パネル

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

[ハードウェアで実行][ビルド、展開、起動]

N/A

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

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

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

接続

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

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

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

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

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

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

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

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

切断

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

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

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

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

[準備] セクションの [バッチ モード] ボタンと [すべてのパラメーターを更新] ボタン。

バッチ ダウンロード

ブロック パラメーターのバッチを調整するには、以下を実行します。

  1. [エクスターナル モード コントロール パネル] で、[バッチ ダウンロード] を選択します。

    [バッチ ダウンロード] は Simulink ツールストリップの制御 [バッチ モード] と等価です。

  2. Simulink エディターで、必要なブロック パラメーターを変更します。

  3. パラメーターを変更するときに、[エクスターナル モード コントロール パネル] では [ダウンロード] の横に以下のメッセージが表示されます。

    Parameter changes pending... 
    Simulink は変更されたパラメーターをローカルに保存します。

    [ダウンロード] は Simulink ツールストリップの制御 [すべてのパラメーターを更新] と等価です。

  4. [ダウンロード] をクリックします。Simulink は変更されたパラメーターのバッチをターゲット アプリケーションにダウンロードします。

コマンド ラインからの 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');

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] は使用できません。詳細については、モデル ブロック線図での信号値の表示を参照してください。

信号のトリガーとデータのアーカイブ

[エクスターナル モード コントロール パネル] で使用できる [信号とトリガー][トリガーの準備][トリガーをキャンセル]、および [データのアーカイブ] 機能はサポートされていません。

信号のストリーミング

ストリーミング用の信号の動的な選択はサポートされていません。ストリーミング用に別の信号を選択するには、モデルをリビルドします。

信号のログ設定のオーバーライド信号ログ セレクターを使用した信号のログ設定のオーバーライドはサポートされません。

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

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

  • DWARF

  • PDB

インライン化されたパラメーター

DefaultParameterBehavior'Inlined' に設定すると、コード ジェネレーターは生成コードにシンボリック パラメーター名ではなく数値モデル パラメーター値を組み込みます。Simulink.Parameter オブジェクトを使用して、インラインからパラメーターを削除し、パラメーターが調整可能であると宣言できます。ただし、Simulink をターゲット アプリケーションに接続する場合、調整可能なパラメーターの数値は自動ではモデルにアップロードされません。Simulink によって警告が生成されます。

グローバル変数

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

パラメーター構造体

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

純粋な整数コード

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

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

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

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

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

可変サイズの信号

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

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

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

参照モデルのスコープ

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

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

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

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

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

行優先のコード生成

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

参考

トピック

外部の Web サイト