Legacy Code Tool を使って複数出力ポートを持つ S-Function ブロックを作成するにはどのようにしますか?

14 views (last 30 days)
複数出力端子を持つ Simulink S-Function ブロックを作成するのに、 Legacy Code Tool を使って行いたいのですが、どのようにすれば良いか教えて下さい。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 23 Feb 2022
Edited: MathWorks Support Team on 23 Feb 2022
既存の C ソースコードから Legacy Code Tool を使って複数出力ポートの S-Function を作るためには、 LEGACY_CODE 構造体の "OutputFcnSpec" フィールドでの定義を既存の C コードに合うよう適切に行うことで実現します。
例えば、どのような既存コードであっても、
- 関数は void 型での OutputFcnSpec とする
- 出力側の変数も、関数の引数に指定する
このような指定の方法とすることになります。
本ページの下部、「関連ドキュメント」からダウンロード可能な MATLAB ファイル "lct_simple_demo.m" が、既存 C コード "myfunc.c" から複数出力の S-Function を生成するまでの記述を示した例です。なお、lct_demo.mdl は、生成したS-Functionの実行結果を確認するモデルです。
実行するには、次のように MATLAB コマンドウィンドウでタイプインします。
lct_simple_demo
この例では、レガシ C コードは出力に関してポインタ型の引数ですが、 OutputFcnSpec の指定法としては y1[1], y2[1] のような、要素数が固定の配列として指定をします。
次のページより、 Legacy Code Tool の引数指定の仕方に関しての詳細を確認することができます。
既存 C コードからの複数出力の S-Function 生成については、 Bus (バス) を使うことによっても実現ができます。
次のように MATLAB コマンドウィンドウ上でタイプインし、バスを使って構造体引数を持つ C コードから S-Function 化を行うデモが参照できます。
デモ:「構造体引数をもつレガシ関数によるバスの使用」
showdemo sldemo_lct_bus_script

More Answers (0)

Tags

No tags entered yet.

Products


Release

R2007b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!