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つのブロック要素に複数の状態マシン

 

 

参照: