このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
バス信号へのアクセス
Stateflow® バスは、Simulink.Bus
(Simulink) オブジェクトから定義するデータ型です。Stateflow バスを使用すると、サイズや型の異なるデータをまとめて、以下を作成できます。
Stateflow チャート、Truth Table ブロック、および MATLAB Function ブロックから Simulink® バス信号にアクセスする入出力。
Stateflow チャート、真理値表、グラフィカル関数、MATLAB® 関数、およびボックスのローカル データ。
Stateflow グラフィカル関数、真理値表、および MATLAB 関数の一時データ。
詳細については、Simulink バス オブジェクトの作成 (Simulink)を参照してください。
Stateflow バスの例
この例では、Stateflow チャートが入力 inbus
を使用してバス入力信号を Simulink から受信し、outbus
からバス信号を出力します。入力信号は、他の 2 つの Bus Creator ブロックからの信号をまとめる Simulink Bus Creator ブロック COUNTERBUSCreator
から渡されます。出力 outbus
は Simulink Bus Selector ブロックに接続します。inbus
も outbus
も、Simulink.Bus
オブジェクト COUNTERBUS
から型を派生させます。この例の詳細については、Stateflow チャートのカスタム構造体の統合を参照してください。
Stateflow バス データ型の要素はフィールドと呼ばれます。個別の信号、多重化信号、ベクトル、および他のバス (サブバスとも呼ばれる) を自由に組み合わせてフィールドを作成できます。各フィールドが独自のデータ型をもちます。データ型は、バスの他のフィールドの型と一致する必要はありません。たとえば、このモデルのバス inbus
とバス outbus
は、それぞれ次の 2 つのフィールドをもっています。
inputsignal
は、1 つのフィールドinput
をもつサブバスです。limits
は、2 つのフィールドupper_saturation_limit
とlower_saturation_limit
をもつサブバスです。
Stateflow バスの定義
バスのデータ型を定義するには、Simulink バス オブジェクトの作成 (Simulink)の説明に従って、ベース ワークスペースで Simulink バス オブジェクトを作成します。
Stateflow データの追加の説明に従って、データ オブジェクトをチャートに追加します。
真理値表、グラフィカル関数および MATLAB 関数で一時バスを定義するには、データ オブジェクトを関数に追加します。詳細については、モデル エクスプローラーによるデータの追加を参照してください。
バスの [スコープ] プロパティを設定します。選択肢は以下のとおりです。
入力
出力
ローカル
パラメーター
データ ストア メモリ
一時的
(C をアクション言語として使用するチャートでのみサポートされる)
バスの [型] プロパティを設定します。スコープに応じて、Stateflow バスは以下のいずれかのデータ型をもつことができます。
型 説明 Inherit: Same as Simulink
このオプションは入力バスのみで使用可能です。入力バスは、接続しているモデル内の Simulink バス信号からデータ型を継承します。Simulink バス信号は非バーチャル バスでなければなりません。詳細については、バーチャル バスと非バーチャル バスを参照してください。
ベース ワークスペースで、Stateflow 入力バスに接続するバス信号と同じプロパティをもつ
Simulink.Bus
オブジェクトを指定します。これらのプロパティは、以下が一致しなければなりません。入力の数、名前および型
次元
サンプル時間
実数/複素数
サンプリング モード
入力信号が Bus Creator ブロックから派生している場合は、[Bus Creator] ダイアログ ボックスの [出力データ型] フィールドで適切なバス オブジェクトを指定します。バス オブジェクトを指定すると、Simulink によって、ベース ワークスペース内の
Simulink.Bus
オブジェクトのプロパティが Simulink バス信号のプロパティと一致していることが検証されます。Bus: <object name>
[型] フィールドで、
<object name>
を、Stateflow バスを定義するSimulink.Bus
オブジェクトの名前に置き換えます。入力バスまたは出力バスの場合は、Stateflow バスに接続する Simulink モデル内でバス信号を指定する必要はありません。バス信号を指定する場合は、そのプロパティが、Stateflow バスを定義する
Simulink.Bus
オブジェクトと一致しなければなりません。<data type expression>
スコープが
[出力]
以外のバスの場合は、type
演算子を呼び出す式を使用します。この演算子は、あるバスの型を、Stateflow チャート内の別のバスの型に設定します。たとえば、sf_bus_demo
モデルでは、type
演算子式によって、ローカル バスcounterbus_struct
の型を、入力バスinbus
の観点から指定します。いずれのバスも、Simulink.Bus
オブジェクトCOUNTERBUS
から定義されます。詳細については、他のデータ オブジェクトからのデータ型の派生を参照してください。
Stateflow バスの初期化
Stateflow バスをデータ オブジェクトとして定義した後、ステートまたは遷移でデータ オブジェクトに値を代入できます。あるいは、プロパティ インスペクターから以下のいずれかの方法でデータ オブジェクトを初期化できます。
struct
関数を使用して初期値を直接代入する。MATLAB ワークスペース内の変数をパラメーターとして代入する。
初期値を直接代入する
[シンボル] ペインで、バスを右クリックし、[検査] を選択します。
[初期値] フィールドで、
struct
関数を使用してバスを作成します。[詳細設定] セクションの [初期化メソッド] ドロップダウンで、
[パラメーター]
を選択します。
MATLAB ワークスペース内の変数をパラメーターとして代入する
MATLAB コマンド ウィンドウで、
Simulink.Bus.createMATLABStruct
(Simulink) 関数を使用して MATLAB 構造体を変数に代入します。[シンボル] ペインで、バスを右クリックし、[検査] を選択します。
[初期値] フィールドに、変数の名前を入力します。
変数とバスが名前を共有する場合、初期値の入力はオプションです。バスで変数名が推定されます。
[詳細設定] セクションの [初期化メソッド] ドロップダウンで、
[パラメーター]
を選択します。
制限
プロパティ インスペクターでは、以下の初期化はサポートされません。
HDL コード生成を使用するモデル内のバス
[初期値] フィールドが
0
またはフィールドのない構造体のいずれかに設定されているバススコープが
Input
、Constant
、Parameter
、またはData Store Memory
のバス制限なしのバスまたは string を含むバス
バーチャル バスと非バーチャル バス
Simulink モデルは、バーチャル バスと非バーチャル バスをサポートしています。非バーチャル バスは連続メモリに格納されたデータ構造体から入力を読み取ります。バーチャル バスは不連続メモリから入力を読み取ります。詳細については、合成インターフェイスのガイドライン (Simulink)を参照してください。
Stateflow チャートは非バーチャル バスのみをサポートします。Stateflow 入力バスは、バーチャル バス信号を受け入れて、非バーチャル バス信号に変換できます。Stateflow 入力バスは、バーチャル バス信号からプロパティを継承できません。チャートへの入力がバーチャル バスである場合は、[Bus:
の形式の型指定を使用して、入力バスの [型] プロパティを設定します。<object name>
]
バスのデバッグ
Stateflow バスをデバッグするには、[Stateflow ブレークポイントと監視ウィンドウ] を開いて、シミュレーション中のバス フィールドの値を調べます。コマンド ラインでバス フィールドの値を表示するには、ドット表記を使用してバスにインデックスを設定します。詳細については、デバッグ中のデータおよびメッセージの検査と変更を参照してください。
参考
Simulink.Bus
(Simulink)