Take's Software Engineer Blog

とあるメーカーソフトウェアエンジニアに聞きたいことを発信していきます。

状態遷移図からプログラムに落とす手段

 

f:id:monokuma12:20200905142104j:plain

組み込みにおける状態遷移の悩み
  • 状態遷移図を作ったけど、どうやってプログラムに落とすのか
  • プログラムは書いたけど、どうやって状態遷移図に落とすのか?

機器制御に関わる設計をしていると、状態遷移図書いて説明して?って言われたことがありませんか?

組み込み系の開発をしていると、機器の状態を表す手段として状態遷移図が使われることが多いです。私の職場でもよく機器状態を表現するために使用しています。

今回は状態遷移図とコードの対応関係がよくわからんって人向けに、状態遷移図とCコードのサンプルを書こうと思います。

この記事を読むことで、状態遷移図→プログラムへの落とし込みがイメージできることを目指しています。

状態遷移図ってなんやろって方は別記事にて解説予定

後日更新

今回表現する状態遷移図

f:id:monokuma12:20200905142147j:plain

状態遷移図→コードへの変換ポイント
  • 状態(entry/do/exit)がコードにどう置き換わるか覚えるべし。

結論としては、状態遷移図に書かれたものがどうプログラムに置き換わるか知ることが大事です。

具体的に、State1から2に遷移するプログラムを書きました。

StateMachineはPlantUMLで記載すると楽ですが、線がずれたり調節ができないので、
Astahなどのソフトを使うと読みやすいものが書くことができます

 

http://www.plantuml.com/plantuml/png/SoWkIImgAStDuOhMYbNGrRLJ22v9B4arv89GO16W38nhfP2QLr9K-NxFhASTSv_DcV-qPnf2AYNVwcdxikSJsfwkc_zYOG-IdehC4gldMvkUx6g3AE22oS7iCq8O70noqEFcEO-RzZzktlouiUTPrvx7ZLCVD_KyRfpF1L4DSvO2b8_RNKQut6M4rLqEgNafmC000000

をCのコードに落とすとこんな感じになります

f:id:monokuma12:20210703083744p:plain

状態遷移図とentry/exitの関係が理解できずコードに落とすことがイメージしにくいのですが、実際に書いてみるとこんな感じにわかりやすくなります。

State1は次の状態が定義されているため、イベント発生時にState1の終了処理とState2の開始処理が書かれていますが、State2は何もありませんね。これはイベントがないためです。そもそも状態遷移図がおかしくね?ってやつですので、コードを書く前に状態遷移図を設計しなおすことをおすすめします。

まとめ

今回状態遷移図→コードに落とすサンプルを提示しました。

実際に書いたサンプルが非常に少ないため、ググって調べる方が多いと思います。

今後組み込み開発における気づき、まとめなどを徐々に書いていくので、

気になった方はお気に入り登録お願いします。

 

今回使用した参考文献は以下です

 

div #breadcrumb div{ display: inline;font-size:13px;}