Real-Time Workshop User's Guide | ![]() ![]() |
チュートリアル3:コードの検証
このチュートリアルでは、f14rtw
モデルから生成されたコードは、モデルに対して検証されます。検証方法は、Simulinkモデルの実行および生成されたプログラムからデータを取得して比較することです。
Scopeブロックによってデータをロギングする
この例題では、(Outportブロックではなく)Scopeブロックを使って、入力および出力データをロギングします。データのロギングのためScopeブロックはつぎのように設定します。
f14rtw
Stick_input)
を入力します。上記の例題では、Stick Input信号は、シミュレーション中に行列
Stick_input
にロギングされます。生成されたコードは、実行プログラムの実行中に、同じ信号データをMAT-ファイル変数rt_Stick_input
にロギングします。
Pilot_G_force
と Angle_of_attack
を使って、Pilot G ForceおよびAngle of Attack Scopeブロックを同様に設定します。
シミュレーションデータのロギング
つぎのステップは、シミュレーションを実行し、Scopeブロックから信号データをロギングすることです。
whos
コマンドを使って、行列変数Stick_input
, Pilot_G_force
, Angle_of_attack
がワークスペースに保存されていることを確認します。
plot(tout, Stick_input(:,2))
生成したプログラムからデータをロギングする
モデルは変更されたので、有効なデータファイルを得るためには、f14rtw
実行ファイルを再度ビルドして実行する必要があります。
!f14rtw
f14rtw.mat
をロードし、ワークスペース変数を見てみます。
load f14rtw who
MAT-ファイルからロードされたデータは、rt_Pilot_G_force
,
rt_Angle_of_attack
, rt_Stick_input, rt_tout
を含みます。
plot(rt_tout,rt_Stick_input(:,2)) figure plot(rt_tout,rt_Pilot_G_force(:,2)) figure plot(rt_tout,rt_Angle_of_attack(:,2))
![]()
シミュレーションの結果と生成したプログラムの比較
Simulinkのシミュレーションと生成されたコードは、ほぼ同じ出力を生成します。
モデルのSimulinkの実行による結果と、モデルから生成されたプログラムの実行の結果のデータを得ています。簡単にf14rtw
モデルの出力とReal-Time Workshopから得られた結果を比較することができます。
Angle_of_attack
(シミュレーション出力) とrt_Angle_of_attack
(生成したプログラム出力)を比較するとつぎのようになります。
max(abs(rt_Angle_of_attack-Angle_of_attack)) ans = 1.0e-015 * 0 0.4441
Pilot_G_force
(シミュレーション出力) とrt_Pilot_G_force
(生成したプログラム出力)を比較するとつぎのようになります。
max(abs(rt_Pilot_G_force-Pilot_G_force)) ans = 1.0e-013 * 0 0.7283
10-13までは一致します。このわずかな誤差は、以下のような多くの要因で生じる場合があります。
たとえば、sin(2.0)
のような関数は、利用しているCライブラリによって、わずかに異なる値を出力する場合があります。
![]() | チュートリアル2:データロギング | チュートリアル4: 生成コードの調査 | ![]() |