このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Atomic サブチャートおよびボックスでの変数のマッピング
Atomic サブチャートは、Stateflow® チャートで再利用可能なサブコンポーネントを作成する際に役立つグラフィカル オブジェクトです。Atomic ボックスは、グラフィカル関数、真理値表関数、MATLAB® 関数および Simulink® 関数を共有する際に役立つグラフィカル オブジェクトです。Atomic サブチャートとボックスは、MATLAB 内のスタンドアロンの Stateflow チャートではサポートされません。詳細については、Atomic サブチャート使用した再利用可能なサブコンポーネントの作成およびAtomic ボックスを使用した関数の再利用を参照してください。
Atomic サブチャートまたはボックスの各シンボルが、メイン チャートの正しいシンボルに確実にアクセスするようにするには、サブチャート シンボルのマッピングを編集します。サブチャートまたはボックスを右クリックして、[サブチャートのマッピング] を選択します。プロパティ ダイアログ ボックスの [マッピング] タブで、[メイン チャート シンボル] ドロップダウン リストを使用して、サブチャートの各シンボルに対応するメイン チャートのシンボルを指定します。あるいは、以下を指定する式を入力できます。
Stateflow 構造体のフィールド。Stateflow 構造体へのインデックス付けと値の割り当てを参照してください。
ベクトルまたは行列の要素。Stateflow でのベクトルおよび行列の演算を参照してください。
構造体のフィールドまたは行列のインデックスの有効な組み合わせ (
struct.field(1,2)
やstruct.field[0][1]
など)。
[メイン チャート シンボル] フィールドを空のままにする場合、Stateflow は、Atomic サブチャート シンボルを同じ名前のメイン チャート シンボルにマッピングしようとします。
Atomic サブチャート内のシンボルは、メイン チャート内の異なるスコープをもつシンボルにマッピングできます。次の表は可能なマッピングをまとめています。
Atomic サブチャート シンボルのスコープ | メイン チャート シンボルのスコープ |
---|---|
入力 | 入力、出力、ローカル、パラメーター |
出力 | 出力、ローカル |
パラメーター | パラメーター |
データ ストア メモリ | データ ストア メモリ、ローカル |
入力イベント | 入力イベント |
Atomic サブチャートのデータ ストア メモリを列挙型のローカル データにマッピングする場合、データ ストア メモリの初期値を指定するには 2 つのオプションがあります。
[データ プロパティ] ダイアログ ボックスで、チャートレベルのローカル データの [初期値] フィールドを設定する。
列挙型の既定値を適用するために、[初期値] フィールドを空のままにする。
Atomic サブチャートの入力データおよび出力データのマッピング
次のモデルには、チャートに入力信号を供給する Sine Wave ブロックが 2 つ含まれています。
次のチャートは、同じライブラリからリンクされている 2 つの Atomic サブチャートで構成されています。
どちらの Atomic サブチャートにも、入力正弦波を同じ周波数の出力矩形波に変換するための飽和論理があります。
モデルのシミュレーションを行うと、y2
の出力はゼロになります。
Atomic サブチャート A 内のシンボルはメイン チャート内のシンボル u1
および y1
と同じ名前をもつため、正しい変数にマッピングされます。Atomic サブチャート B 内のシンボルはメイン チャート内の u2
および y2
にマッピングされないため、マッピングを編集しなければなりません。
サブチャート B を右クリックし、[サブチャートのマッピング] を選択します。
[Input マッピング] で、
u1
のメイン チャート シンボルがu2
になるように指定します。[Output マッピング] で、
y1
のメイン チャート シンボルがy2
になるように指定します。[OK] をクリックします。
モデルを再度実行すると、次の結果が得られます。
Atomic サブチャート変数のバス要素へのマッピング
次のモデルには、バスを介してチャートに信号を供給する Sine Wave ブロックが 2 つ含まれています。
次のチャートは、同じライブラリからリンクされている 2 つの Atomic サブチャートで構成されています。どちらの Atomic サブチャートにも、入力正弦波を同じ周波数の出力矩形波に変換するための飽和論理があります。
モデルのシミュレーションを行うと、各サブチャートで、入力 u1
がメイン チャートのどの変数にもマップしないため、エラーが発生します。各サブチャートで u1
のマッピングを編集するには、次を行います。
サブチャート A を右クリックし、[サブチャートのマッピング] を選択します。
[Input マッピング] で、
u1
のメイン チャート シンボルがバス内の最初の要素BusIn.u1
になるように指定します。[OK] をクリックします。
サブチャート B でこれを繰り返して、
u1
のメイン チャート シンボルがバス内の 2 番目の要素BusIn.u2
になるように指定します。
モデルを再度実行すると、次の結果が得られます。
Atomic サブチャート変数を行列の要素にマッピング
ベクトルまたは行列の要素を参照するときは、チャートのアクション言語にかかわらず、以下を使用します。
かっこやコンマで区切られた 1 ベースのインデックス (たとえば、
A(4,5)
)。大かっこで区切られた 0 ベースのインデックス (たとえば、
A[3][4]
)。
インデックスには、チャート内の数値またはパラメーターを指定できます。その他の式をインデックスとして使用することはサポートされていません。
たとえば、次のモデルには、対角行列を介してチャートに信号を供給する Sine Wave ブロックが 2 つ含まれています。
次のチャートは、同じライブラリからリンクされている 2 つの Atomic サブチャートで構成されています。どちらの Atomic サブチャートにも、入力正弦波を同じ周波数の出力矩形波に変換するための飽和論理があります。
モデルのシミュレーションを行うと、各サブチャートで、入力 u1
がメイン チャートのどの変数にもマップしないため、エラーが発生します。各サブチャートで u1
のマッピングを編集するには、次を行います。
サブチャート A を右クリックし、[サブチャートのマッピング] を選択します。
[Input マッピング] で、
u1
のメイン チャート シンボルが行列の左上の要素になるように指定します。この要素の 0 ベースのインデックス形式はM[0][0]
です。[OK] をクリックします。
サブチャート B でこれを繰り返して、
u1
のメイン チャート シンボルが行列の右下の要素になるように指定します。この要素の 1 ベースのインデックス形式はM(2,2)
です。
モデルを再度実行すると、次の結果が得られます。
式への Atomic サブチャート パラメーターのマッピング
Atomic サブチャートのパラメーターについて、定数、ベース ワークスペース内の変数、メイン チャート内のパラメーターを結合する式を指定できます。
たとえば、次のモデルには、チャートに入力信号を供給する Sine Wave ブロックが 2 つ含まれています。
次のチャートは、同じライブラリからリンクされている 2 つの Atomic サブチャートで構成されています。どちらの Atomic サブチャートにも、入力正弦波を同じ周波数の出力矩形波に変換するための飽和論理があります。
モデルのシミュレーションを行うと、パラメーター T
が未定義のためエラーが発生します。このエラーを修正するため、T
の式がメイン チャートで評価されるように指定します。
サブチャート A を右クリックし、[サブチャートのマッピング] を選択します。
[Parameter マッピング] で、
T
の値として-1
を入力します。[OK] をクリックします。
サブチャート B でこれを繰り返して、
T
の値を2
と指定します。
モデルを再度実行すると、次の結果が得られます。
Atomic サブチャートの入力イベントのマッピング
このモデルは入力イベントをチャートに供給する Mux ブロックを含んでいます。
チャートは以下の 2 つのスーパーステートを含んでいます。Active
と Inactive
を定義します。Active
ステートは入力イベントを使用して、異なるサブステートの間の遷移を保護します。
Active
ステートを Atomic サブチャートに変換するには、以下を行います。
Active
ステートを右クリックし、[グループとサブチャート]、[Atomic サブチャート] を選択します。Atomic サブチャートを右クリックし、[サブチャートのマッピング] を選択します。
[Input Event マッピング] において、各 Atomic サブチャート シンボルはメイン チャート内の正しい入力イベントにマッピングされています。
[OK] をクリックします。
Atomic サブチャートの入力イベントを無効にする
Atomic サブチャート内のすべてのイベントがメイン チャートのイベントに対応している必要はありません。たとえば、ライブラリ チャートで定義されているイベントのセット全体を使用しない、リンクされた Atomic サブチャートを作成できます。Atomic サブチャートの入力イベントを無効にするには、次の手順に従います。
Atomic サブチャートを右クリックし、[サブチャートのマッピング] を選択します。
[Input Event マッピング] の [メイン チャート シンボル] ドロップダウン リストで、
<disabled>
を選択します。[OK] をクリックします。