Stateflowに対応するモデル

<< 目次を表示 >>

ページ位置:  シミュレーション > 数学的なシミュレーション > SysPhS シミュレーション > Stateflowとの連携 >

Stateflowに対応するモデル

ステートマシン図として作成した内容をStateflowに出力するためには、いくつかの条件があります。要素や接続の種類、状態マシン要素の配置、コード生成時の生成先、文法などがあります。

 

 

状態マシンの配置

Stateflowに出力するモデルを作成する際には、SysML ブロックの下に 状態マシン要素を配置し、その状態マシン要素の下に ステートマシン図を配置する必要があります。

 

例えば、この場合、ブロック「Control」には「ControlStateMachine」という名前の状態マシンを持ち、その子ダイアグラムとして「ControlStateMachine」という名前のステートマシン図があります。

 

 

ブロック要素には、他の種類のダイアグラムや子要素を持つことはできません。

 

 

コードの定義

状態マシンの振る舞いを定義する場合には、どこにどのような文法で配置するかを理解する必要があります。

 

 

コードの文法

コードを書く際には、有効なSysMLコードは、有効なStateflowコードに変換されます。SysPhS仕様では、Enterprise ArchitectがStateMachineダイアグラムのコードとして受け入れる「標準」としてModelica数学言語を定義し、これらをMATLAB Stateflowの等価なコードに変換しています。詳細については、OMG SysPhS仕様の第10節を参照してください。

 

 

コードの配置先

Stateflowは以下の3つの操作(アクション)に対応します。

 

状態の操作の振る舞いにコードを含むことができます。例えば、以下はentryアクションに定義されたコードの例です。

 

 

遷移では以下の部分に処理を記述できます。

 

 

以下の例ではガード条件に処理を記述しています。

 

 

 

ブロックのプロパティの参照

コードでは、定数やポートなどのブロックのプロパティをスクリプト内で参照することができます。ポートの場合には、入力ポート名を用いて入力内容を参照可能です。同様に、出力ポートと同名の変数に値を代入することができます。

 

 

注意:

次のSysMLのステートマシン図の内容はStateflowでは利用できません。

  • 深い履歴
  • 出力する遷移を持つ履歴
  • フォーク/ジョイン
  • 同期
  • 連結点 (選択点として扱われます。)
  • 入場点・退場点
  • 他の状態マシンの参照
  • 1つのブロック要素に複数の状態マシン

 

 

参照: