Real-Time Workshop User's Guide    

ラピッドプロトタイピングアプリケーション成分

アプリケーション成分は、モデル内のS-ファンクションに対するコードを含む、Simulinkモデルの生成コードを含みます。このコードは、これらの関数がSimulinkモデルを実現するため、モデルコードとして参照されます。

しかし、生成コードは、(前の節で説明したような)モデルを実行する関数以外の関数を含みます。初期化、データアクセスの利用、プログラム終了前のタスクの完了を行う関数もあります。これらの操作を行うには、生成コードは以下を行う関数を定義する必要があります。

SimStructデータ構造体

生成コードは、ファイルsimstruc.hを含みます。これは、SimStructデータ構造体の定義を含みます。プログラム内のモデル(またはS-ファンクション)は、データの読み書きに利用するSimStructを作成します。

生成コード内のすべての関数は公開できます。この理由により、リアルタイムプログラムにはモデルは1つしかありません。この関数は、常にモデルと同じ名前で、プログラムの初期化中に呼び出されてSimStructのポインタを出力し、S-ファンクションを初期化します。

ラピッドプロトタイピングモデルコード関数

モデルコードによって定義された関数は、(初期化、モデル実行、プログラムの終了等の)プログラム実行の様々な段階で呼び出されます。

つぎの図は、生成コードで定義された関数を説明し、プログラムのどの部分が各関数を実行するかを示します。

図 6-8: モデルコードの実行

この図は、どの関数が生成コードで定義されるか、およびこれらの関数がプログラムのどの部分で呼び出されるかを示します。

モデル登録関数

モデル登録関数は、それを生成するSimulinkモデルと同じ名前です。初期化中にメインプログラムによって直接呼び出されます。その目的は、SimStructのポインタ初期化と出力です。

S-ファンクションを含むモデル

非インラインS-ファンクションは、カスタマイズされたTLCファイルを使って実現されないC MEX S-ファンクションです。C MEX S-ファンクションをSimulinkモデルの一部として作成する場合、デフォルトで、ユーザがmodel.cコードの本体内でインラインを行う独自のTLCファイルを作成しない限りインライン化されません。Real-Time Workshopは、Simulinkのドキュメントに記述されているS-ファンクションAPIに非インラインCコードS-ファンクションが付属する場合は、非インラインCコードS-ファンクションをプログラムに自動的に組み込みます。

このフォーマットは、関数とS-ファンクションのローカルなSimStructを定義します。これにより、モデル内に複数のS-ファンクションを含むことが可能です。モデルのSimStructは、各S-ファンクションのSimStructのポインタを含みます。

コード生成とS-ファンクション

モデルが、S-ファンクションを含む場合、S-ファンクションのソースコードは、makeユーティリティが他のソースファイルを検索するために利用するサーチパス上になければなりません。検索されるディレクトリは、プログラムのビルド用に用いられるテンプレートmakeファイルで指定されます。

S-ファンクションは、モデルコードとよく似た方法で実現されます。それらは、SimStructのスタティックな関数ポインタを初期化する公開可能な登録関数(最上位のモデルコードにより呼び出されます)をもちます。最上位のモデルがS-ファンクションを実行する必要があるとき、S-ファンクションの SimStructの関数ポインタを使って行います。S-ファンクションは、生成コードと同じSimStructデータ構造体を利用しますが、モデル内には同名の複数のS-ファンクションが存在する場合があります。これは、関数のポインタをスタティックな関数にすることによって可能になっています。

S-ファンクションのインライン化

C MEX S-ファンクションは生成コードと共にプログラムの実行ファイルに組み込むことができます。C MEX S-ファンクションに対するターゲットファイルを作成して、S-ファンクションをインライン化し、S-ファンクション自身の関数コールを減らすことにより性能を向上させることが可能です。インラインS-ファンクションに関する詳しい情報は、Target Language Compiler Reference Guideを参照してください。

アプリケーション成分に対するアプリケーションモジュール

Real-Time Workshopがコードを生成するとき、つぎのファイルを作成します。

これらのファイルは、それらが生成されたSimulinkモデルの名前をとって名づけられます。

C MEX S-ファンクションを使ってカスタムブロックを作成した場合、これらのS-ファンクションに対するソースコードは、ビルドプロセス中に利用可能である必要があります。


 ラピッドプロトタイピングシステム独立成分 組み込みプログラムの枠組み