1.はじめに
産業機械をPLCなどを使って制御する際に、 ラダーやST言語などを使って、シーケンスプログラムを書きます。
Elixir言語でシーケンスプログラム=ステートマシンを実現したい場合に、何か便利な仕組みがないか探していたところ、erlangのgen_statemという仕組みを見つけました。
まずはgen_statemで、どんなことができるかを試行してみました。
- 1.はじめに
- 2.まずはお手本~ATMでお金を引き出す装置の例
- (1)考え方
- (2)ソースコードの準備
- (3)サンプルの試行
- 正常な手順
- 異常な手順
- 3.読み解きと理解
- (1)現在のステートを保持する仕組み
- (2)コールバック関数名が、現在のステートと同じ名前になる
- API側の実装の抜粋
- コールバック関数の実装の抜粋
- 4.先ほどのコードを、非同期castに書き換え
- (1)ソースコード
- (2)試行
- 5.特定の処理にタイムアウトを加える
- (1)ソースコード
- (2)試行
- A.参考資料