«前の日記(2016年12月19日) 最新 次の日記(2016年12月21日)» 編集

一往確認日記


2016年12月20日 [長年日記]

_ Escalator - bit stack 初期化

Escalatorというのは、各種PLCがメーカーや機種毎にプロジェクトデータが異なるため互換性がなく、移植するのが大変なのを解決しようとするものです。

ここのescalatorのカテゴリーを見てもらえると今までの経緯を見てもらうことができます。

今回はbit stackの初期化です。

パソコンとのやり取りの部分もありますが、省略します。

bit stackはLDから始まるブロックの状態やMPSなどで分岐する時に記憶するための領域です。

SD_DEVICE[ESC_SD_I_BSTACK]から4 word取っています。 ANBなどで最終的にすべてのANDを取ってtrue/falseを判定するので初期値としてオール1のFFFFを設定しています。 wordで処理しているのでブロックの最大レベルが16までとなります。

LDがあると今までの状態をbit0に入れて左にシフトします。

4word取っているのはMPSに出会うとword単位でshiftします。 MPSによる分岐が4レベルまで扱えることになります。

current_bit_valueが状態の初期値でtrueになります。

https://gyazo.com/f0258627c7be5b3843e39fbe882580cb

cycle_runningはラダー処理中であることを示しtrueになっています。

暫く触っていなかったのでbit stackが何をやっているのかすっかり忘れていました。 今後のためにもここに書き留めおいた方がいいですね。