【上級編】PLC(シーケンサ)によるBSET命令を用いたFOR~NEXT命令使用例

ワードデバイスのビットセット BSET

f:id:vv_6ong_3ka_cp:20191211000636p:plain

f:id:vv_6ong_3ka_cp:20191211000658p:plain

※ワードデバイスのビットセットはSET命令でも可能ですが、ワードデバイスのビットインデックス修飾ができないです。

繰り返し命令 FOR~NEXT

f:id:vv_6ong_3ka_cp:20191211000717p:plain

参考プログラム

f:id:vv_6ong_3ka_cp:20191211000735p:plain

f:id:vv_6ong_3ka_cp:20191211000749p:plain

解説

・現在時刻『秒』が今、どこの範囲にいるかを判断するプログラムです。

D15:現在時刻『秒』
D05、D06:0~4、5~9、10~14、15~19…比較用デバイス
D90:ビットセット用ワードデバイス
Z00:ビットセット用インデックスレジスタ
※必ずFOR~NEXTの上に初期処理としてD5、D6、D90には初期値を転送する。

D15が0~4なら、[ BSET D90 Z0 ] → [ BSET D90 0 ]で0ビット目ON

D15が5~9なら、[ BSET D90 Z0 ] → [ BSET D90 1 ]で1ビット目ON

・・・

というようになります。

作成理由

ワードデバイスのビットセットでインデックス修飾できるものと考えてプログラムを作ってしまい、内部リレーMに置き換えるのが面倒だったからです。

結局、[ MOV D90 K4M4000 ]で内部リレーMをON、OFFさせましたが。

応用例

薄々勘づいてると思いますが、サーボモータの現在位置検索で用いました。

ポジションが2箇所なら力技の方が分かりやすいですが、8箇所とか20箇所とか増えてくるともうやりきれないですね笑

可変するものに対して、FOR~NEXTで可能な範囲対応できるため、ほぼプログラムの変更がなく、機械改造されても難なく対応可能です。

シミュレーション

f:id:vv_6ong_3ka_cp:20191211000807g:plain

確認

動作はあまり確認しておりません。

まぁ出来てるなぁくらいなので、自分で確かめてみてください。

終わりに

基本命令の組み合わせで様々なことができるようになります。

自分なりに考えてみてはいかがでしょうか。

広告