生成された実行可能プログラムの結果の検証
モデルに対して生成された実行可能プログラムの結果が、シミュレーションの結果と一致するかどうかを検証します。
検証のためのモデルの構成
信号
Force: f(t):1
と信号X
の値を監視する Dashboard Scope ブロックを構成します。Dashboard Scope ブロックをダブルクリックします。[ブロック パラメーター] ダイアログ ボックスで、次を確認します。ブロックが信号
Force: f(t):1
および信号X
に接続されている。Dashboard ブロックを信号に接続するには、モデル キャンバスで、信号を選択します。[ブロック パラメーター] ダイアログ ボックスで、信号名を選択します。[最小値] が
-10
に設定されている。[最大値] が
10
に設定されている。
変更を適用し、ダイアログ ボックスを閉じます。
ノブを使用して減衰ゲインの値を変更できるように Knob ブロックを構成します。Knob ブロックをダブルクリックします。[ブロック パラメーター] ダイアログ ボックスで、次を確認します。
ブロックがパラメーター
Damping:Gain
に接続されている。Dashboard ブロックをパラメーターに接続するには、モデル キャンバスで、パラメーターを使用するブロックを選択します。[ブロック パラメーター] ダイアログ ボックスで、パラメーター名を選択します。[最小値] が
200
に設定されている。[最大値] が
600
に設定されている。[目盛りの間隔] が
100
に設定されている。
変更を適用し、ダイアログ ボックスを閉じます。
[モデル コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[C コード] タブの [設定] 、 [C/C++ コード生成設定] をクリックします。
Simulink® と生成された実行可能プログラムが、ワークスペース データのログをシミュレーション データ インスペクターに記録するようにモデルを構成します。[データのインポート/エクスポート] をクリックします。モデルが次の設定で構成されていることを確認します。
選択されたパラメーター 設定されている名前 時間 tout
状態 xout
出力 yout
信号のログ logsout
データ ストア dsmout
ワークスペース データのログをシミュレーション データ インスペクターに記録 実行可能プログラムのビルド用にモデルを構成します。[コード生成] をクリックします。パラメーターコード生成のみがクリアされていることを確認します。
実行可能プログラムを作成するためのツールチェーンを構成および検証します。パラメーターツールチェーンが
[インストール済みツールチェーンを自動検索]
に設定されていることを確認します。パラメーターの下部にある 3 つのドットをポイントして、[詳細設定パラメーター] ラベルを表示します。次に、[詳細設定パラメーター] の [ツールチェーンの検証] ボタンをクリックし、検証レポートを生成して開きます。検証レポートに、使用しているコンパイラ、およびコンパイルのチェックがパスしたかどうかが示されます。
データがメモリに保存され、実行可能プログラムの実行中にアクセス可能になるようにパラメーターと信号を構成します。C コードでモデルを効率的に実装するために、モデルに含まれるすべてのパラメーター、信号、状態に対してメモリを割り当てません。モデル アルゴリズムでデータの出力を計算する必要がない場合、コード生成の最適化によって、そのデータ用のストレージが削除されます。プロトタイピング中にデータにアクセスできるようにデータ用のストレージを割り当てる場合は、一部の最適化を無効にします。
[コード生成] 、 [最適化] をクリックします。
既定のパラメーター動作が
[調整可能]
に設定されていることを確認します。この設定により、生成されたコードで Gain ブロックの [ゲイン] パラメーターなどブロック パラメーターが調整可能になります。パラメーターの下部にある 3 つのドットをポイントして、[詳細設定パラメーター] ラベルを表示します。[詳細設定パラメーター] の信号ストレージの再利用がオフになっていることを確認します。この設定により、コード ジェネレーターは個々の信号線にストレージを割り当てます。実行可能プログラムの実行中に、信号の値を監視できます。
非有限データ (
NaN
やInf
など) および関連する演算を生成するようにコード ジェネレーターを構成します。[コード生成] 、 [インターフェイス]をクリックします。パラメーターサポート: 非有限数が選択されていることを確認します。通信チャネルを構成します。Simulink® でモデルから生成された実行可能プログラムと通信するには、通信チャネルに対するサポートをモデルに含めなければなりません。この例では、通信チャネルのトランスポート層として XCP on TCP/IP を使用します。次のパラメーター設定を確認します。
エクスターナル モードが選択されている。
トランスポート層が
[XCP on TCP/IP]
に設定されている。これを選択すると、パラメーター [MEX ファイル名] にext_xcp
が指定されます。静的メモリの自動割り当てが選択されている。
MAT ファイルのログを無効にします。データを MATLAB® ベース ワークスペースからシミュレーション データ インスペクターに読み込みます。パラメーターの下部にある 3 つのドットをポイントして、[詳細設定パラメーター] ラベルを表示します。[詳細設定パラメーター] のMAT ファイルのログがオフになっていることを確認します。
構成の変更を適用し、[モデル コンフィギュレーション パラメーター] ダイアログ ボックスを閉じて、モデルを保存します。
モデルのシミュレーションと結果の表示
Simulink エディターから、[シミュレーション] タブで、[実行] をクリックします。[実行] ボタンのクロックは、シミュレーション ペーシングが有効であることを示します。シミュレーション ペーシングによってシミュレーション速度が遅くなり、システムの動作を確認できるようになります。遅いレートでシミュレーションを可視化すると、基盤のシステム設計を理解し、およびほぼリアルタイムでの動作の例示中に設計の問題を特定するのが容易になります。
シミュレーション中、Dashboard Scope ブロックには、信号
Force: f(t):1
およびX
の動作が表示されます。Simulink エディターで、[シミュレーション] タブの [データ インスペクター] をクリックします。シミュレーション データ インスペクターが開き、インポートされたシミュレーション実行のデータが示されます。
実行を展開します (展開していない場合)。次に、データをプロットするために、データ信号
X
およびForce: f(t):1
を選択します。
これらの結果は、シミュレーション データ インスペクターに残しておきます。後で、シミュレーション データをモデルから生成された実行可能プログラムで生成された出力データと比較します。
実行可能プログラムのビルドと実行および結果の表示
モデルの実行可能プログラムをビルドおよび実行します。
Simulink エディターの [ハードウェア] タブで、[監視と調整]
をクリックしてプロセスを開始します。Simulink で次が行われます。
実行可能ファイルを含むターゲット アプリケーション ファイルをビルドします。信号のデバッグ シンボルは、コード生成の構成に従って、実行可能ファイルの一部として作成されるか、別のファイル内に作成されます。コード生成のさまざまな構成の詳細については、Simulink モデルから生成されたコードのビルドに使用するアプローチを参照してください。
実行可能プログラムを開発用コンピューターに個別のプロセスとして展開します。
Simulink モデルを実行可能プログラムに接続します。
モデルの実行可能プログラム コードを開始します。
シミュレーションと実行可能プログラムの結果の比較
シミュレーション データ インスペクターを使用して、実行可能プログラムの結果をシミュレーションの結果と比較します。
シミュレーション データ インスペクターで、実行可能プログラムの実行結果
Run 2: SecondOrderSystem
を検証します。[比較] をクリックします。
比較するデータの実行を選択します。この例の場合は、[ベースライン] リストから、
[Run 1:SecondOrderSystem]
を選択します。[比較対象] リストから、[Run 2:SecondOrderSystem]
を選択します。シミュレーション データ インスペクターの右上隅で、[比較] をクリックします。
シミュレーション データ インスペクターには、実行可能プログラム コードからの
X
とForce: f(t):1
の出力がシミュレーションのデータ出力の許容誤差から外れていることが示されます。X
の結果のプロットを確認するには、[File Comparisons] で、X
の行を選択します。Force: f(t):1
の比較プロットを検証します。[File Comparisons] で、Force: f(t):1
の行を選択します。絶対/相対許容誤差値を指定して、数値の不一致が有意かどうかを判断します。このチュートリアルでは、グローバルな絶対許容誤差を
1e-12
に設定します。右上隅で、[詳細] ボタンをクリックします。[グローバル許容誤差] ダイアログ ボックスで、[絶対] を1e-12
に設定します。次に、[比較] をクリックします。X
とForce: f(t):1
の比較は許容誤差内です。数値の整合性の検証と許容誤差の詳細については、モデルと生成されたコードのシミュレーション結果における数値の整合性を参照してください。
次に、プログラム実行中にパラメーターを調整します。