Real-Time Workshop User's Guide | ![]() ![]() |
リアルタイムでの遅いブロックから速いブロックへの遷移
遅いブロックが速いブロックを駆動するモデルでは、生成コードは、速いブロックに遅いブロックよりも高い優先度を割り当てます。これは、速いブロックが遅いブロックより前に実行されることを意味します。間違った結果を防ぐためには注意が必要です。
図 7-9: 遅いブロックから速いブロックへの遷移の時間のオーバラップ
タイミングを表わす図は、つぎの2つの問題点を説明しています。
これらの問題を回避するためには、遅いブロックと速いブロックの間にUnit Delayブロックを挿入しなければなりません。Unit Delayブロックのサンプルレートは、それを駆動するブロック(遅いブロック)のサンプルレートに設定しなければなりません。
つぎの図は、Unit Delayブロックを加えたときのタイミングを示したものです。
Unit Delayブロックの出力部分は、遅いブロックのサンプルレートで実行されますが、速いブロックの優先度をもちます。Unit Delayブロックは速いブロックを駆動し、同じ優先度をもつので、速いブロックよりも前に実行されます。これにより、最初の問題が解決します。
Unit Delayブロックが遅いレートで実行し、速いブロックの計算の実行中に出力が変化しないので、2番目の問題は改善されます。
![]() | Simulinkでの遅いブロックから速いブロックへの遷移 | コード生成に対するモデルの最適化 | ![]() |