デバッガー

Twin Activateデバッガーはシミュレーションの進行を制御するインターフェースで、一時停止ごとにブロックオブジェクト(モデル信号を含む)のチェックや修正ができます。

なぜシミュレーションをデバッグするのですか?

シミュレーションエラーが発生したり、シミュレーションで期待した結果が得られなかったりした場合、その原因を探るのは必ずしも容易ではありません。モデルを効果的にデバッグするには、ブロック間で生成され交換される値を段階的に確認する必要があります。これにより、信号が予期せぬ値を取る最初のインスタンスを特定し、問題の根本原因を見つけることができます。場合によっては、異なるシナリオをテストするために、シミュレーションを続行する前にブロックで生成された信号を変更することも有効です。

デバッガーの仕組み

Twin Activateモデルにおいても、OMLのようなスクリプトベースの命令型言語でデバッガーを使用するのと同じ方法でデバッグすることができます。Twin Activateの場合、一時停止(ブレークポイント)は命令やコード行の代わりにブロックに置かれます。

デバッグモードでシミュレーションを実行すると、Twin Activateデバッガーが開きます。このダイアログボックスでは、シミュレーションの進行をコントロールすることができます。一時停止するたびにインターフェースは再アクティブ化され、入力、出力、状態などのブロックオブジェクトにアクセスできるようになります。そして、モデル信号を含むブロックオブジェクトをチェックし、修正することができます。

デバッグモードでシミュレーションを実行しても、モデルを修正する必要はありません。ブロックを追加する必要はありません。シミュレーションは、デバッグモードでない場合と同じ関数呼び出しのシーケンスに従います。すべての信号、ブロック状態、パラメーターへのアクセスを提供します。

Twin Activateモデルのシミュレーション中、モデルに存在するブロックに関連する関数は、さまざまなアクション(タスク)を実現するためにコンパイラによって構築されたスケジューリングテーブルによって指定された順序で呼び出されます。Twin Activateデバッガーを使用すると、これらの呼び出しをすべてインターセプトできるので、ブロックオブジェクトとブロックシミュレーション関数で実行される計算をチェックすることができます。これは、シミュレーション関数のアクションの前(Pre-callフェーズ)と後(Post-callフェーズ)の両方で一時停止することによって行われ、アクションの前後でブロックオブジェクトをチェックすることができます。ブロックシミュレーション関数の呼び出しがインターセプトされると、タスクとフェーズによっては、デバッガーでブロックオブジェクトを変更することもできます。

シミュレーターは必要なときだけブロックシミュレーション関数を呼び出しますが、それでも典型的なモデルシミュレーション中の呼び出し回数は非常に多くなります。ほとんどの場合、シングルステップと呼ばれる呼び出しごとに一時停止することは、効果的なデバッグ戦略ではありません。条件を使用して、モデルのデバッグに役立たない呼び出しをフィルタリングする必要があります。デバッガーの2つの主な機能は、シミュレーションを一時停止する条件を定義することと、一時停止中にブロックオブジェクトにアクセスすることです。