Real-Time Workshop User's Guide | ![]() ![]() |
ドライバのパラメータ化
カスタマイズしたアイコン、ダイアログボックス、初期化コマンドを、マスキングすることによってS-Functionブロックに追加することが可能です。これは、Simulink環境で、デバイスドライバに対する使いやすいグラフィカルユーザインタフェースを提供します。
ユーザがハードウェア関連の変数を入力することにより、ドライバをパラメータ化することができます。図 17-7は、入力(ADC)ドライバのマスクされたデバイスドライバブロックのダイアログボックスを示します。Simulinkユーザは、デバイスアドレス、チャンネル数、その他の操作のパラメータを入力できます。
図 17-7: マスクされたADCドライバブロックのダイアログボックス
マスクされたS-Functionブロックは、パラメータのデータをマクロやその目的の関数を使ってダイアログボックスから取得します。
ssGetSFcnParam
マクロを使ってダイアログボックスからパラメータにアクセスします。ssGetSFcnParam
の引数は、ブロックのSimstruct
のポインタと希望するパラメータのインデックス(0ベース)です。たとえば、上記のダイアログから、Number of Channelsにアクセスするために、つぎの呼び出しを使います。ssGetSFcnParam(S,3); /* S points to block's Simstruct */
mxArray
の配列に格納されます。mxGetPr
関数を使って入力のmxArray
から特定の値を取得します。つぎのコードは、Number of Channelsパラメータの最初(そして唯一の)要素を抽出します。.
#define NUM_CHANNELS_PARAM (ssGetSFcnParam(S,3)) #define NUM_CHANNELS ((uint_T) mxGetPr(NUM_CHANNELS_PARAM)[0]) uint_T num_channels; num_channels = NUM_CHANNELS;
デバイスドライバブロックは、通常mdlInitializeSizes
関数の入力パラメータを読み込んで有効にします。例題は、adc.cを参照してください。
デフォルトでは、S-Functionパラメータはチューニング可能です。パラメータをチューニング不可能にするには、mdlInitializeSizes
ルーチンでssSetSFcParamNotTunable
マクロを使います。チューニング不可能なS-Functionパラメータは、生成されたコード内では定数となり性能を改良します。
マスクされたブロックの作成や使用法に関する詳細は、Using Simulink とWriting S-Functionsマニュアルを参照してください。
![]() | デバイスドライバの必要条件と制限 | 非インラインS-Functionデバイスドライバの作成 | ![]() |