Simulink や Stateflow でポインタの概念はありますか?

現在 Simulink を使用してモデルを組んでおり 最終的には自動コード生成をしてマイコンに組み込もうと 考えています。 Simulink でモデルを組む際に、組み込みでいうところのアドレスを直接 操作する(C 言語のポインタを使用する) ことの可否を教えてください。 また、StateFlow で条件式や実行式のところに C 言語のポインタ(*変数名)を使用することの可否も教えてください。

 Accepted Answer

MathWorks Support Team
MathWorks Support Team on 8 Oct 2022
Edited: MathWorks Support Team on 8 Oct 2022
Simulink で提供されているブロックにはポインタという概念は存在しませんが、次の2通りの方法でポインタの使用が可能です。
1.ユーザ定義のコードを呼び出してStateflowチャート内でポインタを使用する
次のコマンドでデモが起動できます。
>> sf_custom
my_function.c に定義された関数と my_header.h に定義された変数が Stateflow エディタ内でも使用されており、ポインタによる記述も可能です。
この関数と変数は Stateflow 内で定義されている訳ではなく、各ファイルを取り込むことによって使用しています。Stateflow エディタの「ツール」メニューから「シミュレーションターゲットを開く」を選択し、「Custom Code」の「コードを含む」、「ソースファイル」の各ペインに記述されています。
また、コード生成用にもヘッダファイルの取り込みを行う必要があります。こちらも Stateflow エディタの「ツール」メニューから「RTWターゲットを開く」を選択し、「カスタムコード」の上部(生成時に含ませるカスタムC-コード)の「ヘッダファイル」と下部(追加で含ませるリスト)の「ソースファイル」に記述されています。
2.入出力がポインタ配列になっているユーザ定義の関数を呼び出す S-Function を Legacy Code Tool で作成する
ヘルプドキュメントの下記ツリーからデモを参照できます。
デモ
→Simulink
→モデリング機能
→既存のCとC++関数の呼び出し
→値またはアドレスで渡される既存関数の入力の呼び出し
既存の myfilter.h、filterV1.c (またはfilterV2.c)を呼び出すS-Functionを Legacy Code Tool によって自動生成します。
なお、カスタムCコード関数の呼び出し方法に関する説明、ならびにポインタ演算に関する説明は、下記を参照してください。
・カスタム C コード関数の呼び出し
・ポインタ演算とアドレス演算

More Answers (0)

Categories

Products

Release

R2009a

Community Treasure Hunt

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

Start Hunting!