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ビットを追加することで範囲を拡張できます。これは、モデルの最も遅いベースサンプルレートが、つぎのように表わされることを示します。

これは、約1時間の最大ベースステップサイズに対応します。

定義可能な最速のサンプルレートは、カウンタがカウントダウンできる最小値により決定されます。この値は3です。従って、8254で可能な最速のサンプルレートは、つぎの値になります。

これは、つぎの最小ベースステップサイズに対応します。

しかし、上記の数値は、タイマが割り込みを生成できる最速のレートであることに注意してください。リアルタイムのモデルの実行において可能な最速のサンプルレートを小さくするモデルコードの実行時間は含まれていません。実行速度は、マシンに依存し、プロセッサのタイプとターゲットPC上でのプロセッサのクロックレートにより異なります。

上記で計算される最も速いレートと最も遅いレートは、モデルのベースサンプル時間に当てはまります。2つ以上のサンプル時間をもつモデルでは、サンプル時間がベースサンプル時間の整数倍である限り、最も遅いレートで実行するブロックを定義できます。

プログラムのタイミングの修正

(独自のクロックデバイスをもつI/Oボードのように)別のタイマへアクセスする場合は、ファイルdrt_time.cを独立したクロックソースを使う等価なファイルで置き換えることができます。コードの動作を理解するためには、drt_time.cのコメント行を参照してください。

ビルドコマンドを使ってTIMER_OBJSマクロを再定義することで、タイマモジュールのユーザバージョンを使うことができます。たとえば、Simulation parametersダイアログボックスのReal-Time Workshop ページでビルドコマンドを

と変更すると、ファイルdrt_time.cをプログラムのビルドで使うソースファイルのリスト内のmy_timer.cで置き換えます。


 システム構成 デバイスドライバブロック