一往確認日記 |
2017年01月23日 [長年日記]
_ Escalator - 命令のデコード(6) - MPS MRD MPP
Escalatorというのは、各種PLCがメーカーや機種毎にプロジェクトデータが異なるため互換性がなく、移植するのが大変なのを解決しようとするものです。
ここのescalatorのカテゴリーを見てもらえると今までの経緯を見てもらうことができます。
今回はMPS MRD MPPの部分です。
MPS MRD MPPの何れかの場合に下のスクリプトが実行されます。
sftwl(TRUE, ESC_SD_SIZE_BSTACK, 1, SD_DEVICES[ESC_SD_I_BSTACK]);
IF current_bit_value THEN
SD_DEVICES[ESC_SD_I_BSTACK] := HFFFF;
ELSE
SD_DEVICES[ESC_SD_I_BSTACK] := HFFFE;
END_IF;
MPS MRD MPPは右側に伸びる分岐の部分で、下図では赤丸の部分になります。 SD_DEVICES[ESC_SD_I_BSTACK]からbit stackのエリアが設けられていますが、__分岐した行毎に状態を管理したいため__ワード単位でPUSHしています。 OUTなどの終端に達するとPOPします。