主要内容

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

絶対時間と経過時間の計算

タイマーについて

特定のブロックでは,”“絶対時間(すなわち,プログラムの実行開始時間から現在時刻までの時間)または”“経過時間(2つのトリガーイベント間で経過した時間など)のいずれかの値が要求されます。リアルタイムモデル(rtModel)のデータ構造体をサポートするターゲットによって,絶対時間または経過時間を要求するブロックで効率的な時間計算サービスが可能になります。絶対時間と経過時間のタイマーの機能は以下のとおりです。

  • タイマーは,符号なし整数として生成コードで実装されます。

  • マルチレートモデルでは,ほとんどの場合,レートごとに1つのタイマーが割り当てられます。指定されたレートで実行中のブロックがタイマーを必要としない場合,タイマーはそのレートに割り当てられません。この場合,タイマーに割り当てられたメモリは最小化され,タイマーを維持するためのオーバーヘッドも非常に少なくなります。

  • 触发子系统内でのブロックの使用に関する経過時間カウンターの割り当ては,最小化され,さらにメモリ使用量とオーバーヘッドも減少します。

  • s函数およびTLC APIによって,s函数はシミュレーションおよびコード生成時にタイマーにアクセスできます。

  • タイマーのワードサイズは,モデルコンフィギュレーションパラメーター[アプリケーションのライフスパン(日)で設定するユーザー指定の最大カウンター値によって決定されます。この値を指定すると,タイマーはオーバーフローしません。詳細については,時間カウンターに対するメモリの割り当ての制御を参照してください。

絶対時間とその制限事項については,絶対時間の制限事項についてを参照してください。

周期的タスクおよび非同期タスクのタイマー

“周期的“タスク(すなわち,モデルの基本レートまたはサブレートで実行されるタスク)内で実行されるブロックのタイミングサービス。

コードジェネレーターでは,モデルの周期的なタイミングソースについて実行が“非同期的な”ブロックのタイマーもサポートしています。以下のトピックを参照してください。

タイマーの割り当て

絶対時間または経過時間のデータが必要なs函数ブロックを作成または管理する場合,要件(プログラムによるタイマーへのアクセスを参照)を登録しなければなりません。マルチレートモデルでは,タイマーはレートごとに割り当てられます。たとえば,次のような構造のモデルについて検討します。

  • モデルにA、BおよびCの3つのレートが存在します。

  • レートBで実行中のブロックは絶対時間と経過時間を必要としません。

  • レートCで実行中の2つのブロックでは,絶対時間の要件を登録します。

  • レート一で実行中の1つのブロックでは,絶対時間の要件を登録します。

この場合,レートとCでそれぞれ実行される2つのタイマーが生成されました。タイミングエンジンは,レートとCに関連付けられたタスクが実行されると,タイマーを更新します。レートとCで実行されるブロックはレートとCに関連付けられたタイマーから時間データを取得します。

生成コードの整数タイマー

生成コードでは,絶対時間および経過時間のタイマーが符号なし整数として実装されます。64年既定のサイズはビットです。これはモデルコンフィギュレーションパラメーター[アプリケーションのライフスパン(日)[正]に設定するとタイマーに割り当てられるメモリ量です。サンプルレートが1000 MHzのアプリケーションの場合,64ビットカウンターは500年を超える期間オーバーフローしません。詳細については,非同期タスクにおけるタイマーおよび時間カウンターに対するメモリの割り当ての制御を参照してください。

触发子系统の経過時間カウンター

离散时间积分器ブロックなどの一部のブロックで実行される計算には,前のブロックの実行からの経過時間(デルタT)が必要となります。経過時間のデータが必要なブロックは,要件を登録しなければなりません(プログラムによるタイマーへのアクセスを参照)。次に,トリガーされたサブシステムは,必要に応じて,1つの経過時間カウンターを割り当て,管理します。このタイマーは,個々のブロックレベルではなく,サブシステムレベルで機能します。タイマーは、Triggered Subsystem (または、Triggered Subsystem 内で条件なしで実行されたサブシステム) に経過時間データを必要とする 1 つ以上のブロックが含まれていると生成されます。

メモ

簡易初期化モードを実行している場合,経過時間は,サブシステムが有効時にリセットされるよう設定されているかどうかにかかわらず,有効になった後の最初の実行でリセットされます。詳細については,指定不足の初期化の検出を参照してください。

関連するトピック