Real-Time Workshop User's Guide | ![]() ![]() |
ラピッドシミュレーションの実行
ラピッドシミュレーションターゲットを使って、Real-Time Workshopが提供する一般的リアルタイム(GRT)ターゲットと同様のシミュレーションを行います。このシミュレーションは、タイマ割り込みを使わないので、非リアルタイムシミュレーション環境です。GRTとrsim
シミュレーションの違いは、rsim
はシミュレーションの開始時に、コードを生成したり再コンパイルしないでパラメータ値や入力信号が変更可能なことです。一方、GRTターゲットは、新規のプロセッサをターゲットとするための出発点です。
モデルを1回ビルドすると、変化するパラメータや入力信号の効果を取得します。コマンドライン引数は、シミュレーションに対して新規のデータを指定するために必要なメカニズムを提供します。つぎの表は、利用可能なすべてのコマンドラインオプションの一覧です。
From Fileブロックに対する新規の信号データファイルの指定
From Fileブロックに対して新規の信号データを指定する方法を理解するために、作業ディレクトリを作成し、そのディレクトリに接続します。つぎのようにMATLABプロンプトでタイプして、モデルrsimtfdemo
をオープンします。
rsimtfdemo
w = 100; zeta = 0.5;
パラメータを設定します。rsimtfdemoは、データファイルrsim_tfdata.matが必要です。matlabroot
/toolbox/rtw/rtwdemos/rsim_tfdata.matのローカルコピーを作業ディレクトリに作ってください。
rsim.tlc
をシステムターゲットファイルとして指定し、rsim_default_tmf
テンプレートmakeファイルとして指定します。Real-Time Workshopページでビルド(Build)ボタンを押して、rsim
実行ファイルを作成します。
!rsimtfdemo load rsimtfdemo plot(rt_yout)
結果のプロットは、デフォルトの入力データを使ったシミュレーションの結果を示します。
入力信号の置換. From Fileブロックに対する新規のデータは、標準のMATLAB MAT-ファイルに置かれます。Simulinkでは、From Fileブロックデータは、1行目が時間ベクトルを含み、つぎの行がu
ベクトルを入力信号として含む行列に格納しなければなりません。ユーザコードを生成し、コンパイルした後で、DOSプロンプトでモデル名rsimtfdemo
をタイプしてシミュレーションを実行できます。この場合、ファイルrsm_tfdata.mat
は、シミュレーションのための入力データを与えます。
つぎのシミュレーションに対して、newfrom.mat
という新規のデータファイルを作成し、これを使ってオリジナルファイル(rsim_tfdat.mat
)を置き換え、この新規データを使ってrsim
シミュレーションを実行します。これは、MATLABプロンプトでつぎのようにタイプすることにより行います。
t=[0:.001:1]; u=sin(100*t.*t); tu=[t;u]; save newfrom.mat tu; !rsimtfdemo -f rsim_tfdata.mat=newfrom.mat
つぎのようにタイプして、データをロードし、新規の結果をプロットできます。
load rsimtfdemo plot(rt_yout)
結果として、新規のデータファイルが読み込まれ、シミュレーションはSimulation ParametersダイアログボックスのSolverページで指定した終了時間に進みます。Simulinkモデル内に複数のFrom Fileブロックをもつことが可能です。
rsim
は信号データを生成コード内に置かないので、From Fileブロックから生じる多くのデータをもつシステムに対して、コードサイズやコンパイル時間を削減します。From Fileブロックは、時間ベクトルおよび信号がタイプdoubleのデータである必要があります。double以外のデータタイプの信号データをインポートする必要がある場合は、データを構造体として指定してFrom Workspaceブロックを使います。
ワークスペースデータは、つぎのフォーマットでなければなりません。
variable.time
variable.signals.values
2つ以上の信号がある場合は、フォーマットは以下でなければなりません。
variable.time
variable.signals(1).values
variable.signals(2).values
シミュレーションに対して新規の出力ファイル名を指定
Save to Workspaceオプション (Simulation ParametersダイアログボックスのWorkspace I/OページのTime, States, Outputs, Final Statesチェックボックスをチェック)を指定した場合、デフォルトは、シミュレーションのロギング結果をファイルmodel
.ma
tに保存することです。連続するシミュレーションに対して代替のファイル名を指定することができます。モデルrsimtfdemo
の場合、MATLABプロンプトで
!rsimtfdemo
とタイプすると、シミュレーションを実行し、データは通常rsimtfdemo.mat
に保存されます。
!rsimtfdemo created rsimtfdemo.mat
つぎのようにタイプして、データロギング用の新規の出力ファイル名を指定できます。
!rsimtfdemo -o sim1.mat
この場合、From Fileブロックデータを含む、コード生成時に与えられるパラメータセットが実行されます。様々なrsim
のフラグを組み合わせて、新規のデータ、パラメータ、出力ファイルをシミュレーションに与えることができます。ただし、From Fileブロックに対するデータを含むMAT-ファイルが必要です。これは、MAT-ファイルデータを、実行ファイルとしてコンパイル、リンクされる生成されたCコードに直接挿入するgrt
の操作とは異なります。対照的に、rsim
は、連続するシミュレーションの各々に新規のデータまたは代替データを与えることができます。しかし、これらのブロック(From FileまたはFrom Workspaceブロック)のいずれかがモデル内に存在する場合は、From FileまたはFrom Workspaceのデータを含むMAT-ファイルがなければなりません。
rsimシミュレーションに対するブロックパラメータの変更
Simulinkブロック線図内の1つまたは複数のパラメータを変更すると、モデル全体に対してパラメータベクトルrtP
を抽出できます。rtP
ベクトルは、モデルのチェックサムと共に、MATLAB MAT-ファイルに保存されます。このMAT-ファイルは、スタンドアロンrsim
実行ファイルから直接読み込むことが可能で、モデルパラメータや係数の調整や、入力信号として利用するための新規データのインポートを行うパラメータ値の変化の調査を実行するため、パラメータベクトル全体をすばやく置き換えることができます。
モデルチェックサムは、任意のパラメータの変更が、同じモデル構造をもつrsim
モデルに対してのみ適用されることを保証するための安全性のチェックを行います。任意のブロックが削除された場合、あるいは新規ブロックが追加された場合、新規のrtP
生成時に新規のチェックサムはオリジナルのチェックサムと一致しません。rsim
は、パラメータベクトル内の不整合を検出し、不正なシミュレーション結果の出力を防ぐために終了します。この場合、モデル構造体が変更されたとき、モデルに対するコードを再生成する必要があります。
rsim
ターゲットを使って、side-effects関数を含むパラメータを含む任意のモデルパラメータ(double)を変更することが可能です。side-effects関数の例は、ダイアログボックス内につぎのパラメータエントリを含む単純なGainブロックです。
gain value: 2 * a
一般的に、Real-Time Workshopは、コードの生成よりも前にside-effects関数を評価します。この例題に対して生成されたコードは、メモリ位置のエントリを1つだけ保持し、パラメータa
への依存性は、生成コードでは確認されません。rsim
ターゲットは、パラメータ構造体rtP
全体を置き換えることによって、side-effects関数のハンドリングの問題を克服します。rsimgetrtp.m
を使ってこの新規構造体を作成し、MAT-ファイルに保存する必要があります。rsimtfdemo
の例に対して
zeta = .2;
myrtp = rsimgetrtp(`modelname');
save myparamfile myrtp;
代わりに、rsim
はMAT-ファイルを読み込み、rtP
構造体全体を必要なときに置き換えて、モデル全体を再コンパイルせずに1つまたは複数のパラメータを変更することが可能です。
たとえば、モデル内の1つまたは複数のパラメータを変更し、新規のrtP
ベクトルを生成し、rtP
を新規のmyparamfile.mat
というMAT-ファイルに保存したと仮定します。同じrsimtfdemo
モデルを実行し、これらの新規のパラメータ値を使うためには、つぎのようにタイプしてモデルを実行します。
!rsimtfdemo -p myparamfile.mat load rsimtfdemo plot(rt_yout)
rsimシミュレーションに対して新規の終了時間を指定
新規の終了時間が与えられない場合は、シミュレーションは、コード生成時にSolverページで指定された値に達するまで実行されます。以下のようにして新規の終了時間を指定できます。
!rsimtfdemo -s 6.0
この場合、シミュレーションは、6.0秒に達するまで実行されます。この点で、シミュレーションは終了し、前述したようなMAT-ファイルのデータロギングの規則に従って、データをロギングします。
モデルが、時間行列および信号行列の1行目に時間ベクトルを含むFrom Fileブロックを含む場合、シミュレーションの終了は、Simulation Parameters ダイアログボックスのSolverページのオリジナルの設定によって既定されるか、上記の-s
オプションから既定されます。しかし、シミュレーション時間が時間行列および信号行列の時間の終了点を超える(終了時間がデータ行列の終了時間の値より大きい)場合、信号データは、前述したように終了時間値に外挿されます。
To Fileブロックに対する新規の出力ファイル名の指定
新規のシステム出力ファイル名を指定するのとほぼ同じ方法で、1つまたは複数のTo Fileブロックから保存されたデータに対する新規の出力ファイル名を与えることができます。これは、以下のように、コード生成時に、オリジナルのファイル名を新規の名前で指定することにより行います。
!mymodel -t original.mat=replacement.mat
この場合、オリジナルモデルがデータをoriginal.mat
という出力ファイルに書き出すと仮定します。新規ファイル名を指定すると、rsim
は強制的にファイルreplacement.mat
に書き出します。この手法を使って、既存のシミュレーションの実行の上書きを防ぐことが可能です。
![]() | ラピッドシミュレーションターゲットのビルド | シミュレーションの性能 | ![]() |