Real-Time Workshop User's Guide | ![]() ![]() |
デバイスドライバの必要条件と制限
デバイスドライバブロックを作成するために、つぎのコンポーネントが必要です。
ユーザのS-Functionコードとハードウェア固有のドライバコードは、Simulinkモデル内でS-Functionブロックとなるコンポーネントにコンパイル、リンクされます。MATLABのmex
ユーティリティは、このコンポーネントをビルドします(WindowsではDLL、UNIXでは共有ライブラリ)。
Real-Time Workshopが提供するS-FunctionテンプレートをドライバのS-Functionの開発のための出発点として利用することを推奨します。テンプレートファイルは、以下の通りです。
matlabroot
/simulink/src/sfuntmpl.c
S-Functionテンプレートのコメントのついたバージョンも利用可能です。matlabroot
/simulink/src/sfuntmpl.doc
を参照してください。
デバイスドライバブロックの制限
mdlRTW
関数をもたない場合、パラメータの制約は非インラインドライバと同じです。mdlRTW
関数をもつ場合、任意のパラメータタイプがサポートされます。リエントラント性
ドライバの設計において、リエントラント性の問題を考慮します。典型的なリアルタイムプログラムでは、タイマ割り込みはrtOneStep
を呼び、rtOneStep
はMdlOutputs
を呼び、MdlOutputs
はユーザの入力 (ADC)および出力(DAC)ドライバを呼び出します。この状況で、ドライバは割り込み可能です。
![]() | インラインおよび非インラインドライバ | ドライバのパラメータ化 | ![]() |