MATLAB GUI を使用して並列シミュレーションを中止できるユース ケースでは、ユーザーが [停止] ボタンを押した後、スケジュールされたすべてのシミュレーションを停止したいと考えています。すべてのシミュレーションは、parsim
コマンドを使用して一度に送信されるため、GUI 変数 (App Designer) へのコールバックのようなものが最も望ましいソリューションです。
私が検討したアプローチは、望ましい解決策を正確には提供していませんでした:
- シミュレーション マネージャーは、独自のインターフェイスを使用してシミュレーションを閉じる機能を提供します。コードしかない場合は、停止ボタンが実行されます...
parsim
はSimulink.SimulationInputクラスを入力として使用してシミュレーションを実行しpreSimFcn
、各シミュレーションの開始時に を変更できるようにします。これまでのところ、意図的にエラーをスローする以外に、初期化フェーズでシミュレーションを「スキップ」する方法は見つかりませんでした。
ご協力ありがとうございました!
更新 1 : を使用しpreSimFcn
て終了時間を開始時間と等しく設定すると、シミュレーション時間が大幅に短縮されます。しかし、最初のステップはまだ計算されているため、より良い解決策が必要です。
simin = simin.setModelParameter('StopTime',get_param(mdl,'StartTime'))
更新 2 : の実行中に意図的にエラーをスローします。preSimFcn
たとえば、次のように設定します。
simin = simin.setModelParameter('SimulationCommand','stop')
これまでのところ、私にとって最短の終了時間を提供します。ErrorMessage
ただし、オブジェクトのエラーをキャッチして特定する必要がありSimulink.SimulationOutput
ます。これはまさに私が避けたかった「醜い」実装であるため、問題はまだアクティブです。