Stateflow

主な機能

  • 複雑なロジックのモデル化とシミュレーションのためのモデリング環境、グラフィカル コンポーネント、シミュレーション エンジン
  • 階層、並列化、時相演算子、イベントの確定的な実行意味論
  • 有限ステート マシンを表現するステート図、状態遷移表、状態遷移行列
  • アルゴリズムを表現するためのフロー チャート、MATLAB 関数、真理値表
  • 設計の解析と実行時エラーの検出のためのステート図のアニメーション、ステート アクティビティのログ記録、データのログ記録、統合されたデバッグ機能
  • 遷移の競合、循環的な問題、ステートの矛盾、データの範囲違反、オーバーフロー条件のための静的なチェックと実行時チェック
  • Mealy と Moore の有限ステート マシン

Stateflow ご利用の前に 3:36
ステート マシンの作成とシミュレーションについて学習します。

ロジックの設計

Stateflow には、ステート マシンを使用してシステム ロジックをモデル化するためのグラフィカル インターフェイスと表形式のインターフェイスが用意されています。ステート マシンではシステムの操作モードをステートとしてモデル化し、モード間の切り替えのロジックを遷移とジャンクションを使用して表現します。システムのさまざまなコンポーネントを、排他的に、またはパラレルに実行するステートとしてモデル化することができます。Stateflow では、ステート図オブジェクト、関数、コンポーネントを階層的に整理することで、複雑な設計を管理することが可能です。

Stateflow では、フロー チャートを使用してグラフィカルに、および真理値表を使用して表形式で、組み合わせ論理を表現することができます。

ロジックを設計するには、チェックする条件と、その後に実行するアクションを定義します。Stateflow では C または MATLAB® で条件とアクションを定義することができます。条件とアクションで使用するデータは Simulink® モデル エクスプローラーで管理することが可能です。矛盾する可能性のあるステート、未使用のデータやイベント、無効な遷移がある場合は、Stateflow によって設計の実行前に通知されます。

Stateflow diagram defining the logic for a boiler temperature control system.
ボイラー温度の制御システムのロジックを定義する Stateflow ダイアグラム。この図では右側のグラフィカル関数を使用して、左側のヒーター システムで呼び出されるユーティリティ アルゴリズムを実装しています。

ロジックのグラフィカルな設計

Stateflow には、ステート マシンとフロー チャートを作成するためのエディターとグラフィカル オブジェクトが用意されています。ステート マシンを作成するには、グラフィカル パレットからステート、遷移、ジャンクションを選択して、Stateflow エディターにドラッグします。また、フロー チャートの表記、Simulink サブシステム、MATLAB、真理値表を使用して関数を作成することもできます。Stateflow ダイアグラムは、拡張機能をもつ Mealy と Moore のハイブリッド マシン、Mealy マシン、または Moore マシンとして指定できます。

フロー チャートはジャンクションで接続されている遷移を描画して作成し、条件付きロジックに基づいて実行することができます。パターン ウィザードでは、一般的に使用されるロジック フローのパターンを作成することが可能です。さらにフロー チャートをグラフィカル関数に配置することで、ステート図内のさまざまな場所で、あるいは同じモデル内の他のステート図で使用することができます。フロー チャートはステート間の遷移ロジックの設計にも使用可能です。

Stateflow diagram that uses a graphical function generated by the pattern wizard.
パターン ウィザード (中央) で生成されたグラフィカル関数 (右) を使用する Stateflow ダイアグラム (左)。

Stateflow エディターには、編集時に正しくないオブジェクトの配置や無効な遷移を検出するチェック機能が用意されています。

Stateflow Editor with a model of a cooling system.
冷却システムのモデルを含む Stateflow エディター。赤で強調表示されているのは境界が重なっているステート。

表形式によるロジックの設計

Stateflow の状態遷移表には、ステート マシンをモデル化するための構造化された環境が用意されています。ステート マシンを作成するには、ステートの行と、ステート間の遷移の列を追加します。状態遷移表では、ステート名のドロップダウン メニュー、有限ステート マシンの構文の自動補完、その他の編集時チェック機能を使用することで、ステート マシンの作成に役立ちます。モデルを実行する前に静的な診断テストを実行して、構文エラー、不完全な遷移、到達不可能なステートを検出することができます。

状態遷移表から生成される状態遷移行列のビューでは、条件と、特定のステートからの遷移可能なステートをすばやく特定できます。

Stateflow の真理値表では、連続的な実行の維持を必要としないロジックをモデル化することができます。真理値表を作成するには、チェックする条件に続いて、これらの条件の結果の組み合わせを入力します。その後、異なる結果の組み合わせに対してアクションを入力します。真理値表の作成後、静的な診断チェックを実行して、過剰に指定されている条件と指定が不十分な条件を特定することができます。

Truth table implementing the logic for selecting a valid sensor reading in a fault-detection algorithm, and an automatically generated graphical representation of the truth table.
左: 故障検出アルゴリズムで有効なセンサーの読み取りを選択するロジックを実装する真理値表。右: 自動的に生成された真理値表のグラフィカルな表現。

コンポーネントとスケジューリング アルゴリズムの統合

Stateflow でコンポーネントを作成した後、他のコンポーネントと統合してステート マシン アルゴリズムの作成が可能です。Stateflow コンポーネントには、MATLAB 関数と Simulink 関数、カスタムの C コード、グラフィカル関数、真理値表を含めることができます。アルゴリズムでは、時間ベースのロジックと条件ベースのロジックを使用してコンポーネントと関数の実行をスケジュールを設定することができます。

各 Stateflow コンポーネントは独立して開発、実行、検証を行うことができるため、複数のユーザーがアルゴリズムの別々の部分で同時に作業することが可能です。

Simulink model incorporating a Stateflow diagram that uses graphical functions, MATLAB functions, and truth tables.
Stateflow ダイアグラム (右) が組み込まれた Simulink モデル (左)。Stateflow ダイアグラムはエレベーターに使用されるロジックをモデル化し、グラフィカル関数、MATLAB 関数、真理値表を含む。

設計へのコンポーネントの統合

コンポーネントをブロック線図やモデル全体で再利用するには、コンポーネントを右クリックし、Atomic サブチャートに変換して、ライブラリに配置します。コンポーネントを使用するには、ライブラリからドラッグして、ブロック線図またはモデルにドロップします。ライブラリでコンポーネントを更新すると、コンポーネントのすべてのインスタンスが自動的に更新されます。コンポーネントと関数を階層的に整理することで、システムを簡潔かつ正確に表現することができます。

ブロック線図におけるステートの複数回の再利用 3:47
大規模なモデルを作成するために、Stateflow でコンポーネントを作成して再利用します。

アルゴリズムのスケジューリング

Stateflow で条件または時間に基づくロジックをモデル化して、Simulink 関数や MATLAB 関数を呼び出すことができます。Stateflow でモデル化したイベントに基づくロジックを Simulink に出力して、関数呼び出しや制御信号の変化に応答するサブシステムをアクティブにすることが可能です。

Stateflow にはイベントベースと時間ベースの演算子 (before、after、at、every) があり、タイマーやカウンターを使用しなくても、イベントのカウント数や経過時間に基づいて状態遷移のロジックを指定することができます。

離陸中止システムのモデル化 3:38
離陸時に異常や障害が発生した場合に航空機を地上に送り返す、離陸中止システムをモデル化します。

モデルのシミュレーションと結果の解析

モデルをシミュレーションして、システムの動作を解析することができます。保存した任意のステートからシミュレーションを再開し、さまざまな設定や構成に対する応答を解析して What-if シナリオを実行することができます。

モデルのシミュレーション

Stateflow では、ステート図のアニメーションを使用してシミュレーション中にシステムの動作を可視化し、モデル内のアクティブなステートや遷移を強調表示することができます。

Stateflow のデバッグ機能では、シミュレーションをステップごとに詳細に進めることができます。ステート図内でブレークポイントの設定やデータの値の監視を行い、さまざまな関数をステップごとに実行することが可能です。Stateflow デバッガーのウィンドウでは、シミュレーションの実行をコントロールし、ブロック線図の呼び出しスタックと実行ステータスを表示することができます。

Stateflow デバッガーでは、ステートの矛盾、データの範囲違反、潜在的な無限ループを含む実行時エラーが検出されます。

結果の解析

シミュレーション中は、次のような方法でシミュレーションを可視化することができます。

  • ステートとデータを Simulink の Display ブロックと Scope ブロックで表示する
  • ログ データをシミュレーション データ インスペクターで表示する
  • MATLAB でカスタム ディスプレイを作成する

または、MATLAB での後処理のためにブロック線図とステートのアクティビティ データのログを記録することができます。

Simulation data visualization options in Stateflow: Simulink Data Inspector for comparing signals, a custom MATLAB interface for analyzing data, and the Simulink Signal Selector for comparing states.
Stateflow でのシミュレーション データの可視化オプション。左上: 特定の信号を比較するための Simulink データ インスペクター。左下: データ解析のためのカスタム MATLAB インターフェイス。右: 特定のステートを比較するための Simulink 信号セレクター。

設計の検証とコードの生成

Stateflow を他の Simulink 製品と併用すると、要求仕様に対する設計を検証し、組み込みシステムへの実装用のコードを生成することができます。

Simulink Verification and Validation では、要求仕様を直接 Stateflow オブジェクトにマッピングしたり、標準への準拠をチェックしたり、モデル カバレッジ判定基準を収集したりすることができます。

Simulink Design Verifier では、形式的手法を使用して設計エラーを検出し、見つけにくいエラーのテスト ベクトルを生成することができます。

アドオンのコード生成製品と併用すると、C および C++HDL または PLC のコードをステート図から直接生成することができます。

製品評価版の入手
または製品の購入

モデルベースデザインの基本環境クイック・デモ

Web セミナーを表示する