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

14 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 3 月 12 日
編集済み: MathWorks Support Team 2022 年 2 月 23 日
複数出力端子を持つ Simulink S-Function ブロックを作成するのに、 Legacy Code Tool を使って行いたいのですが、どのようにすれば良いか教えて下さい。

採用された回答

MathWorks Support Team
MathWorks Support Team 2022 年 2 月 23 日
編集済み: MathWorks Support Team 2022 年 2 月 23 日
既存の 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 件)

タグ

タグが未入力です。

製品


リリース

R2007b

Community Treasure Hunt

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

Start Hunting!