Real-Time Workshop User's Guide | ![]() ![]() |
S-Functionの自動生成
S-function生成機能は、サブシステムからのS-Functionの生成プロセスを自動化します。さらに、S-function生成機能は、サブシステム内で用いられるパラメータの表示を行い、選択されたパラメータをチューニング可能と宣言します。
例として、図 10-2に示したサブシステムSourceSubsys
を考えます。目的は、モデルから自動的にSourceSubsys
を抽出し、それから以前の例のようにS-Functionブロックをビルドすることです。さらに、SourceSubsys
内のGainブロックのゲインファクタをワークスペース変数K
(下図参照)に設定し、K
をチューニング可能なパラメータとして宣言します。
SourceSubsys
からチューニング可能なパラメータK
をもつS-ファンクションを自動生成するためには、
あるいは、subsystemブロックのコンテキストメニューのReal-Time WorkshopサブメニューからS-Functionを生成(Generate S-function)を選択します。
上記の図で、パラメータK
は、チューニング可能と宣言されています。
subsys
_blk
を含みます。ここで、subsys
はブロックが生成されたサブシステム名です。
生成されたS-Functionコンポーネントsubsys,
は、作業ディレクトリに格納されます。S-ファンクションに対して生成されたソースコードは、ビルドディレクトリsubsys
_sfcn_rtw
に書き込まれます。
(SourceSubsys_sf.c
)生成されたS-FunctionコードのmdlOutputsルーチンからの以下に示すコードは、チューニング可能なパラメーK
がMEX APIの呼び出しによってどのように参照されるかを示します。
static void mdlOutputs(SimStruct *S, int_T tid) ... real_T rtb_temp3[2]; ... /* Gain Block: <S1>/Gain */ rtb_temp3[0] *= ((*(real_T *)(mxGetData(K(S))))); rtb_temp3[1] *= ((*(real_T *)(mxGetData(K(S)))));
![]() | 生成したS-Functionのチューニング可能なパラメータ | 制約 | ![]() |