Legacy Code Tool を使って複数出力ポートを持つ S-Function ブロックを作成するにはどのようにしますか?
14 views (last 30 days)
Show older comments
MathWorks Support Team
on 12 Mar 2013
Edited: MathWorks Support Team
on 23 Feb 2022
複数出力端子を持つ Simulink S-Function ブロックを作成するのに、 Legacy Code Tool を使って行いたいのですが、どのようにすれば良いか教えて下さい。
Accepted Answer
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
0 Comments
More Answers (0)
See Also
Categories
Find more on Integrate C/C++ Code Using Legacy Code Tool in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!