信号の構造体
この例では、生成されたコードで信号データの構造体を作成する方法を示します。
C コンストラクター
typedef struct { double signal1; double signal2; double signal3; } my_signals_type;
手順
モデルで構造体型を表すには、Simulink.Bus
オブジェクトを作成します。このオブジェクトをモデル内のバスのデータ型として使用します。
1. ex_signal_struct
モデルを Gain ブロック、Bus Creator ブロック、Unit Delay ブロックを使用して作成します。Gain ブロックと Unit Delay ブロックによって、生成されたコードで構造体がより識別しやすくなります。
2. 3 つの入力を受け入れるように Bus Creator ブロックを設定するには、ブロック ダイアロブ ボックスで [入力数] を 3
に設定します。
3. ツールストリップの [モデル化] タブの [設計] ギャラリーで、[型エディター] をクリックします。
4. 型エディターで、signal1
、signal2
、および signal3
という名前の要素を含む my_signals_type
という名前の Simulink.Bus
オブジェクトを作成します。詳細については、Type Editorを参照してください。
5. バス オブジェクトを現在のフォルダーに ex_signal_struct_data.mat
として保存します。
このバス オブジェクトは、生成されたコードで使用する構造体型を表します。
6. [Bus Creator ブロック] ダイアログ ボックスで、次を行います。
[出力データ型] を
Bus: my_signals_type
に設定します。[非バーチャル バスとして出力] を選択します。非バーチャル バスが生成されたコードに構造体として表示されます。
[OK] をクリックします。
7. Simulink Coder アプリを開きます。[C コード] タブで、[コード インターフェイス]、[個々の要素コードのマッピング] を選択します。
8. [信号/状態] タブを開きます。モデルで Bus Creator ブロックの出力信号を選択し、コード マッピング エディターで [選択した信号をコード マッピングに追加] ボタンをクリックします。
9. 追加された信号について [ストレージ クラス] を ExportedGlobal
に設定します。
10. プロパティ インスペクターで [コード]、[Identifier] プロパティを sig_struct_var
に設定します。Bus Creator ブロックの出力は生成されたコードに sig_struct_var
という名前の個別のグローバル構造体変数として表示されます。
11.モデルからコードを生成します。
結果
生成されたヘッダー ファイル ex_signal_struct_types.h
は構造体型 my_signals_type
を定義します。
typedef struct { real_T signal1; real_T signal2; real_T signal3; } my_signals_type;
ソース ファイル ex_signal_struct.c
は、Bus Creator ブロックの出力を表すグローバル変数 sig_struct_var
にメモリを割り当てます。
/* Exported block signals */ my_signals_type sig_struct_var; /* '<Root>/Bus Creator' */
同じファイル内のモデルの関数 step
で、アルゴリズムは sig_struct_var
と sig_struct_var
のフィールドにアクセスします。