1

MATLAB GUI を使用して並列シミュレーションを中止できるユース ケースでは、ユーザーが [停止] ボタンを押した後、スケジュールされたすべてのシミュレーションを停止したいと考えています。すべてのシミュレーションは、parsimコマンドを使用して一度に送信されるため、GUI 変数 (App Designer) へのコールバックのようなものが最も望ましいソリューションです。

私が検討したアプローチは、望ましい解決策を正確には提供していませんでした:

  • シミュレーション マネージャーは、独自のインターフェイスを使用してシミュレーションを閉じる機能を提供します。コードしかない場合は、停止ボタンが実行されます...
  • parsimSimulink.SimulationInputクラスを入力として使用してシミュレーションを実行しpreSimFcn、各シミュレーションの開始時に を変更できるようにします。これまでのところ、意図的にエラーをスローする以外に、初期化フェーズでシミュレーションを「スキップ」する方法は見つかりませんでした。

ご協力ありがとうございました!


更新 1 : を使用しpreSimFcnて終了時間を開始時間と等しく設定すると、シミュレーション時間が大幅に短縮されます。しかし、最初のステップはまだ計算されているため、より良い解決策が必要です。

simin = simin.setModelParameter('StopTime',get_param(mdl,'StartTime'))

更新 2 : の実行中に意図的にエラーをスローします。preSimFcnたとえば、次のように設定します。

simin = simin.setModelParameter('SimulationCommand','stop')

これまでのところ、私にとって最短の終了時間を提供します。ErrorMessageただし、オブジェクトのエラーをキャッチして特定する必要がありSimulink.SimulationOutputます。これはまさに私が避けたかった「醜い」実装であるため、問題はまだアクティブです。

4

1 に答える 1