一時停止条件
Twin Activateデバッガーインターフェースでは、デバッガーが一時停止する条件を定義して、ブロックのチェックや変更が可能です。
概要
典型的なTwin Activateモデル、特に、連続時間状態量を持つブロックを含むモデルでは、数値ソルバーによるソルバー呼び出しが発生するため、シミュレーション中にブロック関数を呼び出す回数が非常に多くなることがあります、デバッグは多くの場合、特別な状況下でのシミュレーション中に、限られた数のブロックを特定し、チェックすることで行われます。チェックの必要なブロックや状況に限定できるよう、呼び出しのフィルタリングは重要です。
条件には、ブロックが呼び出された理由(初期化、出力更新、状態更新などのタスク)、時間、入力値、内部状態による条件が含まれます。デバッガーでは、メニューやOML式を使って定義済みの条件を使用してフィルターを定義し、一時停止する条件を指定できます。さまざまなフィルターを実装することができ、どのフィルターでもフィルタリングされなかった場合にのみ、呼び出しが一時停止されます。このルールの唯一の例外は、ブロックによってエラーが発生した場合です。その場合、休止はシステマティックなものです。
一時停止するブロック
一時停止条件のひとつは、一時停止するブロックのリストを作ることです。List of blocks to pauseのリストは、Twin Activateデバッガーダイアログボックスのアクションボタンの下にあります。リストの右側には、ブロックの追加と削除のオプションがあります。特定のブロックを追加するには、Add a block to the listドロップダウンリストから選択します。

デフォルトでは、一時停止するブロックのリストは空です。STARTまたはCONTINUEボタンでシミュレーションを開始または継続すると、最後まで実行されるか、エラーにより一時停止します。この場合の動作はFINISHボタンと同じです。1つ以上のブロックが選択された場合、選択されたブロック以外のブロックでは、そのブロックにエラーが発生しない限り、一時停止は発生しません。選択したフィルターに関係なく、ブロック内のデバッグモードでシミュレーション中にエラーが発生すると、そのブロック内でシミュレーションが一時停止します。
リストの基本ブロックとダイアグラムで表示されているブロックの対応は、ほとんどのブロックで1対1です。一時停止中は、ダイアログボックスの上部にブロックのフルネームが表示されます。ブロックを含むダイアグラムを開くには、右上のShowをクリックします。このブロックには、一時停止がPe-callなのか、Pst-callなのか、エラー後のPst-callなのかを示す特定のアイコンが表示されます。以下がこれらのアイコンです。

アクションフラグ
シミュレーターが要求するブロックアクションに基づいて一時停止条件を定義できます。デフォルトでは、All actionsオプションが選択されています。Simulation error or endオプションは、ブロック内でエラーが発生しない限りシミュレーションを停止しないことを意味します。その他のオプションについては、以下の表をご参照ください。
フラグ | アクション |
---|---|
1 | 出力更新:TryモードでもNon-tryモードでも使用可能。 |
2 | 状態更新:ブロックの内部状態を、連続と離散の両方で更新します。 |
0 | 導関数更新 |
4 | 最初の呼び出し:ファイルを開くなどの初期化アクション。各ブロックは開始時に一度だけ呼び出されます。 |
6 | Tryモードでの連続時間状態量の再初期化呼び出し。 |
5 | ファイルを閉じるなどの最終アクション。各ブロックは最後に1回呼び出されます。 |
3 | イベント発生:出力アクティベーションポートのスケジューリングイベント。 |
9 | ゼロクロッシング時間許容値:ゼロクロッシングサーフェス:を計算します。 |
Tryモード呼び出し
Tryモードの呼び出しを含めるかどうかに基づいて、一時停止条件を定義できます。デフォルトでは、Tryモードの呼び出しは一時停止条件に含まれます。Tryモード呼び出しを除外するには、Twin Activateデバッガーダイアログボックスの右上にあるInclude try mode callsチェック・ボックスの選択を解除します。
フェーズ
シミュレーション機能のフェーズに応じて一時停止条件を定義できます。Pre-callフェーズはシミュレーション関数のアクションの前に発生し、Post-callフェーズはアクションの後に発生します。これらのフェーズを含めるか含めないかで、ブロックのアクションの前か後、またはその両方で一時停止して調べるかどうかを決めることができます。
Twin Activateデバッガーダイアログボックスの右上で、Included phasesドロップダウンメニューからオプションを選択します。PreおよびPost-callの両方、Pre-callのみ、またはPost-callのみを選択できます。
OML停止条件
OML式に基づいて一時停止条件を定義できます。Twin ActivateデバッガーダイアログボックスのStopping conditionフィールドにOML式を記述します。OML式がtrueまたは1と評価された場合、一時停止が発生します。

停止条件は、他の条件(ブロック名、フラグ、フェーズ、Tryモードが呼び出しをフィルタリングしない場合にテストされます。
停止条件には、下表のいずれかの変数を含めることができます。使用できる変数はダイアログ・ボックスの下部に表示されます。
変数 | 説明 |
---|---|
block_name | ブロック名 (string) |
t | 現在のシミュレーション時間 (double) |
inputs | 入力値 (cell | mat) |
outputs | 出力値 (cell | mat) |
nevprt | ブロックアクティベーションコード (double) |
x | 連続時間状態量 (vector) |
xd | 連続時間状態量の微分 (vector) |
mode | ブロックモード (vector) |
zcross | ゼロクロッシングサーフェス(vector) |
z | 離散時間ブロック状態 (vector) |
oz | 離散時間オブジェクト状態 (cell | mat) |
rpar | ブロックパラメーター (vector) |
opar | オブジェクトパラメーター (cell | mat | scalar | string) |
trymode | Tryモードで呼び出された場合はtrue、そうでない場合はfalse |
block | ブロック構造に対応するOMLオブジェクト |
flag | 呼び出しに関連するアクションを示します。 |
prepost | PreまたはPost-callかに応じて0または1 |
t > 0.05
inputs{1} < 0
t > 1 && inputs{1} < 0