このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
State Transition Table
モーダル ロジックを表形式で表現

ライブラリ:
Stateflow
説明
State Transition Table ブロックは、有限ステート マシンを表形式で表現します。ステートと遷移を Stateflow® チャートで描画する代わりに、状態遷移表を使用して、グラフィカル オブジェクトのメンテナンスが必要最小限で済む簡潔でコンパクトな形式でステート マシンをモデル化できます。詳細については、状態遷移表を使用した有限ステート マシンのモデル化を参照してください。
State Transition Table ブロックで制御ロジックを実装するには、MATLAB® または C をアクション言語として使用できます。詳細については、アクション言語構文としての MATLAB と C の相違点を参照してください。
例
端子
入力
[シンボル] ペインを使用して Stateflow 状態遷移表で入力データを作成すると、Stateflow により State Transition Table ブロックに対応する入力端子が作成されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
出力
[シンボル] ペインを使用して Stateflow 状態遷移表で出力データを作成すると、Stateflow により State Transition Table ブロックに対応する出力端子が作成されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
パラメーター
ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
メモ
State Transition Table ブロックには Subsystem (Simulink) ブロック パラメーターもあり、これらのパラメーターにアクセスするには、ブロックを右クリックして [ブロック パラメーター (Subsystem)] をクリックします。ただし、これらのブロック パラメーターを更新することは推奨されません。
Stateflow 状態遷移表を更新または起動する方法。[継承]
、[離散]
、または [連続]
として指定します。
継承
Simulink モデルからの入力によって、シミュレーション中に状態遷移表を起動するタイミングが決定されます。
状態遷移表の入力イベントを定義した場合、トリガー端子に接続されている Simulink ブロックからの信号によって状態遷移表がトリガーされます。Simulink 信号は、
[立ち上がり]
、[立ち下がり]
、または[両方]
(立ち上がりと立ち下がり) か、[関数呼び出し]
に応答するものになります。詳細については、入力イベントの送信による Stateflow チャートのアクティブ化を参照してください。入力イベントを定義していない場合、Stateflow 状態遷移表は暗黙的に Simulink モデルからのトリガーを継承します。これらの暗黙的なイベントは、入力を状態遷移表に渡す Simulink 信号の離散サンプル時間または連続サンプル時間です。データ入力を定義している場合、状態遷移表は最速のデータ入力のレートで起動します。状態遷移表のデータ入力を定義していない場合は、状態遷移表は親サブシステムの実行動作の定義に従って起動します。
離散
Stateflow 状態遷移表は、Simulink モデルが [サンプル時間] 状態遷移表プロパティで指定した一定の時間間隔で暗黙的イベントを生成すると起動します。Simulink モデルの他のブロックは、サンプル時間が異なる場合があります。
連続
Stateflow 状態遷移表がそのステートを更新するのはメジャー タイム ステップ中のみで、出力およびローカル連続変数はメジャー タイム ステップ中とマイナー タイム ステップ中に計算されます。状態遷移表はゼロクロッシングを登録でき、ステートの変化が発生するたびに、Simulink モデルによる Stateflow 状態遷移表のサンプリングを許可します。Stateflow 状態遷移表は、ローカル連続変数の導関数を計算します。詳細については、Stateflow の連続時間モデルを参照してください。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | ChartUpdate |
値: | "INHERITED" (既定値) | "CONTINUOUS" | "DISCRETE" |
既定の時間間隔は -1
で、これは Stateflow 状態遷移表が Simulink からサンプル時間を継承することを示します。
シミュレーション中に状態遷移表が起動する時間間隔を指定します。既定値は、状態遷移表が Simulink からサンプル時間を継承することを示します。サンプル時間の指定の詳細については、サンプル時間の指定 (Simulink)を参照してください。
Subsystem ブロック パラメーターの [サンプル時間] パラメーターは使用しないでください。代わりに、プロパティ インスペクターを使用してください。
依存関係
このパラメーターを有効にするには、[更新方法] を [離散]
に設定します。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | SampleTime |
値: | "-1" (既定値) | string scalar | character vector |
データ型: | string | char |
状態遷移表のアクティブ ステート データの出力端子を作成するかどうか。詳細については、アクティブ ステート データによるステート アクティビティの監視を参照してください。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | HasOutputData |
値: | false or 0 (既定値) | true or 1 |
データ型: | logical |
アクティブ ステートの出力データに対する監視モード。
依存関係
このパラメーターを有効にするには、[監視する出力の作成] を有効にします。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | OutputMonitoringMode |
値: | "ChildActivity" (既定値) | "LeafStateActivity" |
状態遷移表のアクティブ ステート データ オブジェクトの名前。
依存関係
このパラメーターを有効にするには、[監視する出力の作成] を有効にします。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | OutputPortName |
値: | "State_Transition_TableMode" (既定値) | string scalar | character vector |
データ型: | string | char |
状態遷移表のアクティブ ステート データ オブジェクトの名前。
依存関係
このパラメーターを有効にするには、[監視する出力の作成] を有効にします。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | EnumTypeName |
値: | "State_Transition_TableModeType" (既定値) | string scalar | character vector |
データ型: | string | char |
アクティブ ステート データの出力の列挙データ型を手動で定義するかどうか。詳細については、ステート アクティビティの列挙型の定義を参照してください。
依存関係
このパラメーターを有効にするには、[監視する出力の作成] を有効にします。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | DoNotAutogenerateEnum |
値: | false or 0 (既定値) | true or 1 |
データ型: | logical |
詳細設定
最初の入力イベントに際してではなく、時間 0 で状態遷移表のステート構成を初期化するかどうか。詳細については、チャートの初期化実行を参照してください。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | ExecuteAtInitialization |
値: | false or 0 (既定値) | true or 1 |
データ型: | logical |
状態遷移表内のデータが整数オーバーフローで飽和するかどうか。このパラメーターをオフにすると、状態遷移表内のデータは整数オーバーフローでラップします。詳細については、チャート データの整数オーバーフローと列挙オーバーフローの処理を参照してください。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | SaturateOnIntegerOverflow |
値: | true or 1 (既定値) | false or 0 |
データ型: | logical |
状態遷移表が起動するたびに出力データを初期化するかどうか。
このパラメーターをオンにすると、時間 0 だけでなく、状態遷移表が起動するたびに状態遷移表の出力値がリセットされます。関数呼び出し、エッジ トリガー、または時間刻みで状態遷移表がトリガーされるたびに、状態遷移表の出力値はリセットされます。出力データ オブジェクトの初期値を設定した場合、出力はその値にリセットされます。それ以外の場合、出力はゼロにリセットされます。このパラメーターは、以下の目的がある場合に選択します。
状態遷移表が実行されるたびに、すべての出力が確実に定義されるようにする。
出力のラッチを回避する (つまり、以前の実行時に計算された出力値を回避する)。
すべての状態遷移表出力に有効な初期値を指定する。
詳細については、初期値を参照してください。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | InitializeOutput |
値: | false or 0 (既定値) | true or 1 |
データ型: | logical |
状態遷移表が可変サイズ データをサポートするかどうか。詳細については、Stateflow チャートでの可変サイズ データの宣言を参照してください。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | SupportVariableSizing |
値: | true or 1 (既定値) | false or 0 |
データ型: | logical |
状態遷移表のスーパー ステップのセマンティクスを有効にするかどうか。安定したステートに達するまで、タイム ステップごとに状態遷移表で複数の遷移が可能になるようにするには、このパラメーターを選択します。このオプションは、チャート プロパティ [更新方法] を [連続] に設定している場合には使用できません。詳細については、スーパー ステップのセマンティクスを参照してください。
依存関係
このパラメーターを有効にするには、[更新方法] を [離散]
に設定します。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | EnableNonTerminalStates |
値: | false or 0 (既定値) | true or 1 |
データ型: | logical |
1 つのスーパー ステップで実行できる遷移の最大回数。詳細については、スーパー ステップのセマンティクスを参照してください。
依存関係
このパラメーターを有効にするには、[スーパー ステップのセマンティクスを有効にする] を有効にします。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | NonTerminalMaxCounts |
値: | 1000 (既定値) | positive integer |
データ型: | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 |
スーパー ステップが 1 つのスーパー ステップにおける遷移の最大回数を超過した場合に Stateflow によって実行されるアクション。詳細については、スーパー ステップのセマンティクスを参照してください。
依存関係
このパラメーターを有効にするには、[スーパー ステップのセマンティクスを有効にする] を有効にします。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | NonTerminalUnstableBehavior |
値: | "Proceed" (既定値) | "Throw Error" |
R2023a 以降
状態遷移表が長さ 1 の次元をもつ非スカラー データを固定サイズとして扱うかどうか。このパラメーターをオンにすると、[可変サイズ] データ プロパティを有効にしたかどうかに関係なく、状態遷移表は少なくとも 1 つの次元の長さが 1 である非スカラー データを固定サイズとして扱います。このパラメーターをオフにすると、状態遷移表は [可変サイズ] プロパティが有効になっている非スカラー データを可変サイズとして扱います。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | TreatDimensionOfLengthOneAsFixedSize |
値: | true or 1 (既定値) | false or 0 |
データ型: | logical |
状態遷移表のプログラミングに使用するアクション言語。MATLAB
または C
として指定します。詳細については、アクション言語構文としての MATLAB と C の相違点を参照してください。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | ActionLanguage |
値: | "MATLAB" (既定値) | "C" |
状態遷移表によって実装されるステート マシンのセマンティクス。Classic
、Mealy
、または Moore
として指定します。詳細については、Mealy マシンと Moore マシンの概要を参照してください。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | StateMachineType |
値: | "Classic" (既定値) | "Mealy" | "Moore" |
固定小数点プロパティ
Fixed-Point Designer™ fi
オブジェクトとして扱う、継承された Simulink 信号。次のいずれかの値として指定します。
Fixed-point
— 状態遷移表はすべての固定小数点入力をfi
オブジェクトとして扱います。Fixed-point & Integer
— 状態遷移表はすべての固定小数点および整数の入力をfi
オブジェクトとして扱います。
このパラメーターは、MATLAB をアクション言語として使用する状態遷移表にのみ適用されます。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | TreatAsFi |
値: | "Fixed-point" (既定値) | "Fixed-point & Integer" |
状態遷移表の既定の fimath
オブジェクト プロパティ。次のいずれかの値として指定します。
Same as MATLAB
— 状態遷移表は、現在の既定のfimath
オブジェクトと同じfimath
オブジェクト プロパティを使用します。テキスト ボックスが淡色表示され、現在のグローバルfimath
オブジェクトが読み取り専用で表示されます。Specify other
— テキスト ボックスで独自のfimath
オブジェクトを指定します。
詳細については、fimath オブジェクトの作成 (Fixed-Point Designer)を参照してください。
依存関係
このパラメーターを有効にするには、[アクション言語] を [MATLAB]
に設定します。
プログラムでの使用
ブロックのパラメーター値をプログラムで設定するには、ブロックの Stateflow.StateTransitionTableChart
オブジェクトにアクセスし、ドット表記を使用してオブジェクト プロパティを変更します。
パラメーター: | EmlDefaultFimath |
値: | "Same as MATLAB Default" (既定値) | "Other:UserSpecified" |
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加の構成オプションがあります。
調整可能なパラメーターを HDL コード生成用の State Transition Table で使用できます。詳細については、調整可能なパラメーターの DUT 端子を生成する (HDL Coder)を参照してください。
このブロックには既定の HDL アーキテクチャが 1 つあります。
HDL コードにアクティブ ステートを示す出力端子を生成するには、チャートの [プロパティ] ウィンドウで [監視する出力の作成] を選択します。出力は列挙データ型です。アクティブ ステート出力の組み込みによる Stateflow チャートの簡略化を参照してください。
ConstMultiplierOptimization | 正準符号付き桁数 (CSD) または因数分解された CSD による最適化。既定の設定は |
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することで、出力に配置されるレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
DistributedPipelining | パイプライン レジスタの分散、あるいはレジスタのリタイミング。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
ResetType | リセット ロジックの生成を抑制。既定値は |
SharingFactor | 単一の共有リソースにマッピングされる、機能的に等価なリソースの数。既定の設定は 0 です。リソース共有 (HDL Coder)も参照してください。 |
このブロックは、速度と面積を最適化するために次の HDL 最適化に使用されます。
速度と面積の最適化
最適化 | 説明 |
---|---|
分散型パイプライン方式 (HDL Coder) | "分散型パイプライン方式"、つまりレジスタのリタイミングとは、設計の既存の遅延を移動して、機能的動作を維持しながらクリティカル パスを低減する速度の最適化です。 |
リソース共有 (HDL Coder) | "リソース共有" とは、HDL Coder によって行われる面積の最適化の 1 つです。機能的に等価な複数のリソースが特定され、単一のリソースに置き換えられます。 |
HDL Coder での遅延の均衡化の理解 (HDL Coder) | 最適化やブロック実装のオプションによってモデルのクリティカル パスに遅延が導入された場合、"遅延の均衡化" によって特定のパスで新しい遅延が導入されたことが検出されると、他のパスに同じ遅延が挿入されます。 |
クロックレート パイプライン (HDL Coder) | "クロックレート パイプライン" は、他の速度と面積の最適化でクロック レートでのレイテンシを導入できるようにする HDL Coder の最適化フレームワークです。 |
適応パイプライン (HDL Coder) | "適応パイプライン" 最適化では、設計内のブロックにパイプライン レジスタを挿入して、ブロックとレジスタのパターンまたは組み合わせを作成することにより、達成可能なクロック周波数を向上し、FPGA ボード上の使用面積を削減できます。 |
クリティカル パスの推定 (HDL Coder) | クリティカル パスの可能性が最も高いパスを設計内で簡単に特定するには、"クリティカル パスの推定" を使用します。クリティカル パスの推定は、クリティカル パスを検出する反復的プロセスを高速化します。クリティカル パスの推定で特徴付けられるブロックについては、特徴付けられるブロック (HDL Coder)を参照してください。 |
制限の詳細については、Stateflow HDL コード生成の紹介 (HDL Coder)を参照してください。
最適化を適用する場合、このブロックには以下の制限があります。
[ステート マシン タイプ] プロパティが
[Moore]
に設定されている State Transition Table ブロックでは、HDL 最適化はサポートされません。Trigger 端子をもつブロックでは、HDL 最適化はサポートされません。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2012b で導入状態遷移表を Stateflow チャートに変換するには、オブジェクト関数 convertToChart
を使用します。
状態遷移表のステート構造をパラレルに設定するには、ステートを選択します。[モデル化] タブで、[ステート構造の設定]、[パラレル (AND)] を選択します。
新しいプロパティ 長さ 1 の次元を固定サイズとして扱う を使用すると、少なくとも 1 つの次元の長さが 1 である場合に状態遷移表が非スカラー データをどのように扱うかを指定できます。R2023a より前は、[可変サイズ] データ プロパティを有効にしたかどうかに関係なく、状態遷移表は少なくとも 1 つの次元の長さが 1 である非スカラー データを固定サイズとして扱っていました。
オブジェクト関数 exportAsStruct
を呼び出すことにより、状態遷移表の内容を構造体の階層としてエクスポートします。
状態遷移表に遷移列を追加するためのキーボード ショートカットは、Ctrl+K になりました。以前のリリースでは、このショートカットは Ctrl+M でした。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)