| 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: 生成コードの調査 | ![]() |