一往確認日記 |
2019年04月27日 [長年日記]
_ Timerの置き換えからRubyらしい考え方 - PLCのRuby言語コントロールユニット(4)
PLCのソフトをラダーの代わりにRubyで書けたらという企画です。
Rubyらしい置き換え
それではどうだったら考えやすいかと切り替えて考えます。
Rubyはオブジェクト指向言語ですから、シリンダーセンサーというオブジェクトとしてとらえます。
cs = CylinderSensor.new(x4, x5, 5)
m4 = cs.moved?
m5 = cs.returned?
m6 = cs.error?
csというのがシリンダーセンサーオブジェクトです。 これはCylinderSensorというクラスから実態化したものです。 クラスとは何?ということになりますが、ここでは無視して進みます。 x4とx5のセンサー入力があって、5秒のタイムアウトが絡んでいる程度の認識でいいです。
m4はシリンダーが動作状態かどうかということですからcs.moved?で動作状態かどうか問い合わせて代入しているということになります。 m5、m4も同様です。
実際にmoved?やreturned?やerror?の中身はどうなっているか?ということは知る必要がなく、CylinderSensorクラスの中に隠蔽していて私がごりごり頑張ればいいだけの事です。(前回の例の様に分かりにくくにっているかもしれません)
ファンクションブロックの様なものと考えてもらえればなんとなくお分かりかと思います。