Real-Time Workshop User's Guide | ![]() ![]() |
S-ファンクションを使ったモデル化
Real-Time Workshop Ada Coderは、現在は非インラインS-ファンクションをサポートしません。しかし、AdaまたはC S-ファンクションを使ってモデルに対するAdaコードを生成することは可能です。そのためには、ユーザS-ファンクションのアルゴリズムを組み込んだTLCファイルを作成する必要があります。
つぎの例は、TLCファイルを作成して簡単なAda S-ファンクションをインラインする方法を示しています。TLCファイルの作成に関する詳細は、Target Language Compiler Reference Guideを参照してください。
timestwo
Ada S-ファンクション (matlabroot
/toolbox/simulink/blocks/tlc_ada
ディレクトリにあります)をパラメータを設定しないで利用(Parametersフィールドをブランクにする)times2
モデルは、入力と正弦波信号をもちその振幅を2倍するtimestwo
と呼ばれるシンプルなS-ファンクションを含んでいます。S-ファンクションに対応するTLCファイルを以下に示します。
%% Copyright (c) 1990-2000 by The MathWorks, Inc. %% %% Abstract: %% TLC file for timestwo.c used in Real-Time Workshop %% S-Function test. %implements "timestwo" "Ada" %% Function: Outputs ========================================================== %function Outputs(block, system) Output -- %<Type> Block: %<Name> -- Multiply input by two %<LibBlockOutputSignal(0, "", "", 0)> := ... %<LibBlockInputSignal(0, "", "", 0) > * 2.0; %endfunction %% [EOF] timestwo.tlc
このTLCファイルの重要な行は、LibBlockInputSignal
の2倍をLibBlockOutputSignal
に割り当てる行です。この行は、Target Language Compilerにアルゴリズムを直接生成Adaコードに置くように指示します。
このTLCファイルは、matlabroot
/toolbox/simulink/blocks/tlc_ada/timestwo.tlc
にあります。
Adaコードの生成
ビルドプロセスは、ユーザモデルがS-ファンクションを含まない場合と同じです。S-ファンクションを含むモデルに対するAdaコードの生成において必要な唯一の追加は、S-ファンクションと同じ名前のTLCファイルを与えることです。そうでない場合は、ビルド手順は全く同じです。
![]() | 始めましょう | テンプレートMakeファイルの設定 | ![]() |