Legacy Code Tool を使って複数出力ポートを持つ S-Function ブロックを作成するにはどのようにしますか?
14 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2013 年 3 月 12 日
編集済み: MathWorks Support Team
2022 年 2 月 23 日
複数出力端子を持つ Simulink S-Function ブロックを作成するのに、 Legacy Code Tool を使って行いたいのですが、どのようにすれば良いか教えて下さい。
採用された回答
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 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!