主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

プログラムによるシミュレ,ションの実行

モデルは次の2の方法で,プログラムによってシミュレトできます。

  • sim卡コマンド経由

  • [実行]ボタン経由

sim卡コマンドでシミュレーションを実行する場合,コマンドラインを使用してシミュレーションで操作を実行します。[実行]ボタンを使用してシミュレ,ションを実行する場合,金宝appSimulink®UIを使用してシミュレ,ションを操作し,その他の追加操作を実行できることを意味します。次の表は,2の方法の違いを詳しく説明しています。

操作 sim卡コマンドによるシミュレ,ション [実行]ボタンによるシミュレ.ション
許可される相互作用レベル
シミュレ,ションの開始 sim卡コマンド set_param (mdl‘SimulationCommand’,‘开始’)/[実行]
シミュレ,ションの停止 コマンドラ@ @ンでのCtrl - C

set_param (mdl“SimulationCommand”,“停止”)/[停止]

シミュレ,ションの一時停止 なし あり。set_param (mdl“SimulationCommand”、“暂停”)/[一時停止]
シミュレション実行中に利用可能なmatlabプロンプト なし あり
シミュレ,ション実行中のスコ,プの更新 ラピッドアクセラレ,タモ,ドを除いて,あり あり
シミュレションステッパ なし ラピッドアクセラレ,タモ,ドを除いて,あり
条件付き一時停止 なし ラピッドアクセラレ,タモ,ドを除いて,あり
シミュレ,ション実行中に表示可能な端子の値 なし あり
シミュレ,ションのペ,シングのサポ,ト あり あり
超时オプションのサポ,ト あり なし
エラ,の処理 CaptureErrorsがオンの場合を除いて,matlab例外 診断ビュ,ア,にレポ,トされる

sim卡コマンドによるシミュレ,ション

関数sim卡で指定された手法を使用してパラメ,タ,値を指定し,プログラムによりモデルをシミュレ,トできます。モデルのシミュレ,ションに加えて,sim卡コマンドを使用して,シミュレーションタイムアウトの有効化,シミュレーションエラーの取得,およびシミュレーション完了時のシミュレーションメタデータへのアクセスを実行できます。

パラメ,タ,の名前と値のペアの指定

この例では,パラメーターを名前と値のペアとして指定し,モデルをプログラムによってシュミレートする方法を示します。

連続する名前と値のペアとして指定したパラメ,タ,値を使用してvdpモデルをシミュレ,トします。

simOut = sim(“vdp”“SimulationMode”“正常”“AbsTol”“1 e-5”...“SaveState”“上”“StateSaveName”“xout”...“SaveOutput”“上”“OutputSaveName”“你”...“SaveFormat”“数据集”);outputs = simOut.get(“你”
outputs = 金宝appSimulink. simulationdata . dataset包:Simulink. simulationdata . datasetSimulationData特征:名称:'yout'总元素:2元素:1:'x1' 2: 'x2' -使用get或getElement按索引或名称访问元素。-使用addElement或setElement添加或修改元素。

ソルバ,エラ,の絶対許容誤差を指定して,モデルを正常的モ,ドでシミュレ,トします。関数sim卡は,単一の金宝app仿真软件。SimulationOutputオブジェクトであるSimOutを返します。これには,シミュレーションのすべての出力(ログが作成された時間,状態および信号)が含まれています。関数sim卡は,シミュレ,ション値をワ,クスペ,スに返しません。

出力信号値を時間に対してプロットします。

X1 = (output .get(x1的) . values);X2 = (output .get(“x2”) . values);情节(x1);持有;情节(x2);标题(“VDP州”)包含(“时间”);传奇(x1的“x2”

vdp仿真图

シミュレションタムアウトの有効化

複数のシミュレ:超时パラメ,タ,でsim卡を使用することを検討してください。何らかの理由で,シミュレーションが停止したり,予期しない小さいタイムステップの実行を開始した場合,シミュレーションはタイムアウトします。その後,次のシミュレ,ションを実行できます。

N = 100;simOut = repmat(金宝appSimulink。SimulationOutput, N, 1);i = 1:N simOut(i) = sim(“vdp”“超时”, 1000);结束

シミュレ,ションエラ,の取得

エラーによってシミュレーションが停止した場合は,シミュレーションメタデータでエラーを確認できます。この例では,sim卡はエラーが発生するまでのシミュレーション出力オブジェクトのシミュレーションデータを取得し,エラーを返さずにシミュレーションのデバッグを実行できます。この機能を有効にするには,関数sim卡CaptureErrorsパラメ,タ,を使用します。

simOut = sim(“my_model”“CaptureErrors”“上”);simOut.getSimulationMetadata.ExecutionInfo
ans = struct with fields: StopEvent: 'DiagnosticError' StopEventSource: [] StopEventDescription: 'Division by zero in 'my_model/Divide " ErrorDiagnostic: [1×1 struct] WarningDiagnostics: [0×1 struct]

このアプロ:sim卡が停止しないことです。したがって,ルプでsim卡を使用している場合などでも,ル,プの以降の反復が実行されます。

シミュレ,ションメタデ,タへのアクセス

この例では,シミュレ,ションの完了時にシミュレ,ションメタデ,タにアクセスする方法を示します。任意の種類のシミュレ,ションを実行して,そのメタデ,タにアクセスできます。

この例では,名前と値のペアで指定したパラメ,タ,値を使用してモデルをシミュレ,ションします。シミュレ,ションを実行します。

simOut = sim(“vdp”“SimulationMode”“正常”“AbsTol”“1 e-5”...“SaveState”“上”“StateSaveName”“xoutNew”...“SaveOutput”“上”“OutputSaveName”“youtNew”...“SaveFormat”“StructureWithTime”);

ModelInfoプロパティにアクセスします。このプロパティは,モデルおよびソルバ,に関する基本情報をも,ます。

simOut.getSimulationMetadata.ModelInfo
ans = struct with fields: ModelName: 'vdp' ModelVersion: '1.6' ModelFilePath: 'C:\MyWork' UserID: 'User' MachineName: 'MyMachine' Platform: 'PCWIN64' ModelStructuralChecksum: [4×1 uint32] SimulationMode: 'normal' StartTime: 0 StopTime: 20 SolverInfo: [1×1 struct] 金宝appSimulinkVersion: [1×1 struct] LoggingInfo: [1×1 struct]

ソルバ,情報を検証します。

simOut.getSimulationMetadata.ModelInfo.SolverInfo
ans = struct with fields:类型:'Variable-Step'求解器:'ode45' MaxStepSize: 0.4000

シュミレーションが起動および終了したタイミング,シミュレーションの初期化、実行,終了にかかった時間など,シミュレーションに関するタイミング情報を確認します。

simOut.getSimulationMetadata.TimingInfo
ans = struct with fields: WallClockTimestampStart: '2016-06-17 10:26:58 433686' WallClockTimestampStop: '2016-06-17 10:26:58 620687' InitializationElapsedWallTime: 0.1830 ExecutionElapsedWallTime: 1.0000e-03 TerminationElapsedWallTime: 0.0030 TotalElapsedWallTime: 0.1870

シミュレ,ションにメモを追加します。

simOut = simOut.setUserString (10次模拟1的结果);simOut.getSimulationMetadata
ans = SimulationMetadata with properties: ModelInfo: [1×1 struct] TimingInfo: [1×1 struct] ExecutionInfo: [1×1 struct] UserString: 'Results from simulation 1 of 10' UserData: []

用户数据プロパティを使用して独自のカスタムデ,タを追加することもできます。

[実行]ボタンによるシミュレ.ション

対話型のシミュレ,ションでは,set_paramおよびget_paramを使用できます。set_paramおよびget_paramを使用して,実行中のシミュレーションのステータスを確認し,ブロックコールバックを使用してシミュレーションの動作を制御できます。

シミュレ,ションのステ,タスの制御と確認

この例では,set_paramを使用してシミュレ,ションのステ,タスを制御および確認する方法を示します。set_paramを使用すると,変数を動的に更新し,デ,タログ変数をワ,クスペ,スに書き込むことができます。

シミュレ,ションを開始します。

set_param (“vdp”“SimulationCommand”“开始”

set_param引数および“开始”引数を使用してシミュレ,ションを開始した場合は,“停止”引数を使用してシミュレ,ションを停止しなければなりません。“停止”引数を使用しないと,シミュレ,ションは終了後にのみ停止します。

シミュレ,ションを一時停止,続行および停止します。

set_param (“vdp”“SimulationCommand”“暂停”) set_param (“vdp”“SimulationCommand”“继续”) set_param (“vdp”“SimulationCommand”“停止”

set_paramを使用してシミュレーションの一時停止または停止を行う場合,シミュレーションはコマンドを即時に実行しません。停止コマンドの後でシミュレーションを開始するため,および暂停コマンドの後でシミュレーションを続行するために,set_paramを使用できます。金宝appSimulinkはまず,set_paramコマンドより前にあるソルバ,ステップやその他のコマンドなどの割り込みできない作業を完了します。それからset_paramコマンドによって指定されたシミュレ,ションの開始,一時停止,続行または停止が行われます。

シミュレ,ションのステ,タスをチェックします。

get_param (“vdp”“SimulationStatus”

ソフトウェアから“停止”“初始化”“奔跑”“暂停”“编译”“更新”“终止”または“外部”金宝app仿真软件编码器™製品で使用)が返されます。

シミュレ,ションの実行中に変更されたワ,クスペ,ス変数を動的に更新するには,更新コマンドを使用します。

set_param (“vdp”“SimulationCommand”“更新”

すべてのデ,タログ変数をベ,スワ,クスペ,スに書き込みます。

set_param (“vdp”“SimulationCommand”“WriteDataLogs”

コ,ルバックを使用したシミュレ,ションタスクの自動化

シミュレーションの開始,一時停止,停止など,モデルでさまざまなアクションを実行すると,コールバックが実行されます。コ,ルバックを使ってmatlab®スクリプトやその他のmatlabコマンドを実行できます。詳細にいては,カスタマ▪▪ズされたモデルの動作のコ▪▪ルバックおよびブロックコルバックパラメタを参照してください。

この例では,モデルのStartFcnコールバックを使用して,シミュレーションの開始前にMATLABコードを自動で実行する方法を示します。

モデルのシミュレ,ション時にモデル内の范围ブロックを検出してフォアグラウンドで開くmatlabスクリプトを作成します。スクリプトを現在のフォルダ,に保存します。

% openscopes.m在模拟开始时将范围置于最前面。Blocks = find_system(broot,“BlockType”“范围”);查找您的对象的顶层的所有作用域块%的模型。要查找子系统中的作用域,请提供子系统%的名字。输入help find_system查看该命令的更多信息。set_param(blocks{I},“开放”“上”结束遍历所有作用域块并将它们带出来走在最前面。

モデルがopenscopesスクリプトを呼び出すようにStartFcnパラメ,タ,を設定します。

set_param (“my_model”“StartFcn”“openscopes”

参考

||||

関連するトピック