状態遷移図とは何だろうか?
制御仕様を考えるときにあると便利というか
ないと困るものが状態遷移図です。
その状態遷移図をモデルベース開発の視点から紹介する。
数回にわたって解説します。
まずは制御仕様についてちょっと触れたいと思います。
制御仕様
制御仕様を考えた場合、重要なのは人間がみて理解できる。(細かいこと言えば要求仕様)
という事であり、漠然としていたり詰めが甘かったりするものです。
その表現方法としては
文章での記述に加えて
・ブロックダイアグラム
・フローチャート
・タイムチャート
・状態遷移図
これらでを駆使して制御(要求)仕様を表現します。
次にグラフィカルな表現のうちいくつか概要を説明します。
状態遷移図
この中でフローチャートは規模の大きい制御には不向きなことと
状態遷移図がそれにとって代わるので状態遷移図が使われます。
制御でシーケンス制御の部分は殆ど状態遷移図で記述ができて
メリットとしてはこのまま制御仕様として使うことが可能です。
さらに、MATLAB/Simulink使ったモデルベース開発ではSimulinkオプションに
StateFlowと呼ばれる状態遷移図のツールがあるのでそれを利用することができます。
制御仕様と(シミュレーション)プログラムが一度にできるのもメリットです。
ブロックダイアグラム
ちなみにブロックダイアグラムは制御の機能別にまとめて結線したもので
Simulinkでサブシステムを作ればそうした形になります。
図の様にSimulinkで例えばエンジン、TM、車両というブロック(機能別)を
結線したものを言います。
ですからSimulinkで作ってそれを見やすい形にすればブロックダイアグラムになります。
余談ですが実は法的な書類にもこれを使っています。
アマチュア無線で自作した場合は”送信機系統図”というものを添付しないといけません。
”送信機系統図”というのは回路図ではなくブロックダイアグラムです。
入力SW⇒入力フィルタ⇒10倍アンプ(2SC・・・)⇒共振回路⇒出力SW
リニアアンプの場合はこんな感じでそれぞれ四角で囲います。
高校生の時、当時の電気通信監理局にこういうの提出したことがあります。
タイムチャート
これは、こうしたツールがあるのか定かではありませんが
私の場合は状態遷移図をStateFlowで描いているときに
擬似信号でシミュレーションしてタイムチャートを描きます。
最も制御仕様決める側と制御を設計する側が同じであれば非常に効率的です。
開発がかなり短縮できます。
タイムチャートは入力信号と出力信号の状態変化を時間領域で表現したもので
図に示したものも広い意味でタイムチャートです。
一般的には、1制御周期で時間領域での入出力関係がわかりやすい
擬似信号で示します。
この図の様にあまりにも適当な信号で図は作ることはほぼありません。
フローチャート
それをエンジニアが受け取って、ECUハードの設計やプログラムコードを起こします。
昔はフローチャートを使いましたが、チャートが縦長で複雑なものに対しては不便なので
私はあまり使いません。
ただ、コンパクトなものに対しては割と見やすいので今だとエンドユーザマニュアルの
トラブルシューティングの項目ではかなり使われています。
UMLにおける状態遷移図
UMLとは?
UML(Unified Modeling Language)統一モデリング言語と呼ばれるものです。
あいまいな部分が多いので詳細は省略しますがその中の分類を紹介します。
ただグラフィカルに表現するものでMATLAB/Simulinkでは、
StateFlowがこうしたUMLに該当すると理解してください。
UML内の分類
・構造図
・振る舞い図
・相互作用図
状態遷移図はこの3分類の中で「振る舞い図」に含まれ、
システムの振る舞いを表現します。
タイムチャートもUMLの中で分類されてるみたいです。
StateFlowのメリット/デメリット
良く知られた表現方法をいくつか示したうちの、一番最初の図が状態遷移図という事がわかったかと思います。
私はよくStateFlow使いますがメリット、デメリット紹介します。
StateFlowのデメリット
- プログラムが若干重い気がします。
- またSimulinkオプションの為別途費用が掛かることです。
StateFlowのメリット
- 制御仕様を作る時のエディタとして使える
- そのままシミュレーションできる
- Simulinkのマルチポートスイッチやロジック判定ブロックと比べると
かなり簡単にプログラムできる。そして見やすい。
この記事へのコメントはありません。