Real-Time Workshop User's Guide | ![]() ![]() |
サンプルレートの制限
プログラムのタイミングは、モデルコードを実行する割り込みサービスルーチンをインストールすることにより制御されます。ターゲットPCのCPUは、指定したレート(このレートはステップサイズにより決定されます)で割り込みされます。
割り込みが発生するレートは、Real-Time Workshopが提供するアプリケーションコードにより制御されます。このコードは、PC-ATの8254 Counter/Timerを使って、いつ割り込みが起こるかを決定します。
8254 Timerを設定するコードは、matlabroot
\rtw\c\dos\rti
ディレクトリにあるdrt_time.c
にあります。DOSリアルタイムテンプレートmakeファイルを使ってプログラムをビルドするときに、このファイルは自動的にリンクされます。
8254 Timerは、周波数1.193MHzで動作する16ビットカウンタです。しかし、DOSリアルタイムランタイムインタフェースのタイミングモジュールdrt_time.c
は、効果的に32ビットカウンタを使いソフトウェア内で16ビットを追加することで範囲を拡張できます。これは、モデルの最も遅いベースサンプルレートが、つぎのように表わされることを示します。
定義可能な最速のサンプルレートは、カウンタがカウントダウンできる最小値により決定されます。この値は3です。従って、8254で可能な最速のサンプルレートは、つぎの値になります。
しかし、上記の数値は、タイマが割り込みを生成できる最速のレートであることに注意してください。リアルタイムのモデルの実行において可能な最速のサンプルレートを小さくするモデルコードの実行時間は含まれていません。実行速度は、マシンに依存し、プロセッサのタイプとターゲットPC上でのプロセッサのクロックレートにより異なります。
上記で計算される最も速いレートと最も遅いレートは、モデルのベースサンプル時間に当てはまります。2つ以上のサンプル時間をもつモデルでは、サンプル時間がベースサンプル時間の整数倍である限り、最も遅いレートで実行するブロックを定義できます。
プログラムのタイミングの修正
(独自のクロックデバイスをもつI/Oボードのように)別のタイマへアクセスする場合は、ファイルdrt_time.c
を独立したクロックソースを使う等価なファイルで置き換えることができます。コードの動作を理解するためには、drt_time.c
のコメント行を参照してください。
ビルドコマンドを使ってTIMER_OBJS
マクロを再定義することで、タイマモジュールのユーザバージョンを使うことができます。たとえば、Simulation parametersダイアログボックスのReal-Time Workshop ページでビルドコマンドを
make_rtw TIMER_OBJS=my_timer.obj
と変更すると、ファイルdrt_time.c
をプログラムのビルドで使うソースファイルのリスト内のmy_timer.c
で置き換えます。
![]() | システム構成 | デバイスドライバブロック | ![]() |