Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

洗濯検知(その5) OpenPLC側のプログラム実装

さて、洗濯検知のOpenPLC側の実装ですが、数行のラダーの為に一日がかり

でした。

ええ、数行のラダーは5分で終わるんですが、

コンパイルエラーの原因がわからず、はまってました。

 

OpenPLCはラダーを一度ST言語に変換するんですね。

それをまたCソースに落として、コンパイルをgccでやるよう。

プリプロセスがあるようです。

それでSTに変換した後の文法チェックでエラーがでるのですが、

これがまた、ラダー側からみるとどこでエラーかがわかりずらい。

結局文法ミスなんですが、定数の書き方が悪かったのですが、

)がないとか、いろいろエラーがでました。

 

そういうものということで、学習しました。

エラーメッセージにこだわると本当の原因が不明になる事例でした。

商用のPLCに比べると苦労が多いのは覚悟でしたが、

エディタの入力も慣れないなあ。

 

OpenPLC側実装ラダー

で、ラダーは上記ですが、本当にはずかしいくらいの制御です。

蓋を閉めたのを記憶して、開いたら解除です。

TWILITEが1分間隔の送信なんで、それ以上激しい動きは取れません。

まあ、お試しです。

接点とデータをMODBUSにマッピングしてあり、

NodeRedとデータ交換をする形になります。

上記M0コイルが洗濯有のBITになります。

これをNodeRed側で、朝チェックして、ONであればスピーカーで

アナウンスということになります。

MODBUSへマップするとWeb画面のMONITORで信号状態がでてきます。

 

後は時間をNoedRed側から送り込もうと思っています。

OpenPLC側で時間取得は思いつかないので、間接で流してやって

カレンダータイマ接点のように使おうと思っています。

 

スキャンタイムは最速20msecらしい。(デフォルト)

まあ妥当でしょう。

OpenPLCはPython用モジュールやC言語のインライン書きができるようで、

それも追々試そうかと思います。