シーケンサ

SFTL命令とSFTR命令ービットシフト

このページではPLCの
応用命令の1つである
ビットシフトついて説明します。

PLCは三菱電機の
FXシーケンサを対象としています。

ですので、
SFTR命令とSFTL命令となります。

使われることが多い
SFTL命令を中心にして
解説していきます。

1.SFTL命令とは

この命令はビットシフトと
呼ばれることがあります。

ビットとは、ここでは
0か1(ONかOFF)のことで
その状態をシフトさせる
命令になります。

まずは簡単に説明します

M0の内部リレーと
M10~M15の内部リレーが
あるとします。

M0の内部リレーのON/OFFを
M10~M15の内部リレーに
順番に写す命令になります。

こういった
フローになります。

M0がON
M10~M15はOFF

①SFTL命令実行:1回目

M0にM10を写す。
M0:ON
M10:ON
M11~M15:OFF

②SFTL命令実行:2回目

1回目を実行後の①の状態で
2回目の実行をします。

M10をM11に写す。
M0をM10を写す。
M0:ON
M10:ON
M11:ON
M12~M15:OFF

分かりますか?
状態がシフトしていっています。

③SFTL命令実行:3回目

次に
M0がOFFで3回目を
実行します。

M0:OFF
M10:ON
M11:ON
M12~M15:OFF

この状態で3日目を実行。

M11をM12に写す。
M10をM11を写す。
M0をM10に写す。

M0:OFF
M10:OFF
M11:ON
M12:ON
M13~M15:OFF

このように
M0→M10→M11→M12・・・・

というようにSFTL命令は
実行の度に、ビット状態が
シフトしいきます。

SFTL命令:1ビットシフト例SFTL命令:1ビットシフト例

SFTL命令は基本、
こういった制御をする
命令です。

では、次項では
実際の命令文の記述を
見まいきます。

実際の命令文

[SFTL M0 M10 K6 k1]

上が実際の命令文の
記述になります。

M0は最初の
入力するビットです。

M10は入力される、シフトしていく
デバイス番号の先頭です。

定数K6は入力される
先頭デバイス番号から
何番までがシフトの対象なのかを
指定します。

M10~M15なので6個です。
なので固定値K6とします。

最後のK1は入力データの
段数、シフトする段数です。

K1なのでM0だけが
入力されて、1つずつ
シフトしました。

これがK3になると
M0、M1、M2と3デバイスが
入力され、3つ一気に
シフトをします。

[SFTL M0 M10 K9 k3]

でみていきましょう

SFTL命令:3ビットシフト例SFTL命令:3ビットシフト例

①SFTL命令実行:1回目

1回目では

M0→M12:ON
M1→M11:ON
M2→M10:ON

上記のようにシフトします。

②SFTL命令実行:2回目

2回目は
M0:ON,M1:OFF,M2:ON
に状態が変化した後にしましょう。

M0→M12:ON
M1→M11:OFF
M2→M10:ON
M10→M15:ON
M11→M14:ON
M12→M13:ON

このように、3つずつ
シフトしていきます。

そして、
この図を見るとSFTL命令を
実行する度に左にシフト
しています。

そういった理由から
SFTLは左シフトと呼ばれます。

LはLEFTのLですね。

SFTR命令は右シフトになります。

RはRIGHTのRですね。

2.気を付けること とSFTLP命令

SFTL命令のラダー図例SFTL命令のラダー図例

例えば
上のラダー図の場合は

M8000はRUM中は
常にONでですので

1スキャン(1周期)の度に
SFTL命令が
ONすることになります。

(M8000については
 以下のページを参考ください。
M8000~M8003 RUNモニタとイニシャルパルスとは)

(スキャンについては
 以下のページを参考ください。
シーケンサのプログラム処理とスキャンタイムについて)

1スキャンごとにSFTL命令を
実行することは稀なケースです。

通常はSFTL命令をそのまま
使わず、SFTLP命令を使うか
PLS命令と組み合わせて使います。

SFTLP命令とは

SFTLP命令はONした直後の
1スキャンだけSFTLP命令を
実行します。

下図はタイムチャートです。

SFTLP命令ラダー図例とタイムチャートSFTLP命令ラダー図例とタイムチャート

シフトを進めるためには
1回X000をOFFにしてONに
する必要があります。

ですので、プログラムで
制御することが可能です。

PLS命令と組み合わせる

PLS命令については
以下のサイトを
参考ください。

シーケンサのPLS命令,PLF命令とは

PLS命令とSFTL命令PLS命令とSFTL命令

上のラダー図のように
使います。

この例だとT0のタイマーが
タイムアップするとPLS命令で
M30のa接点は1スキャンだけ
ONします。

それでSFTL命令も
その1スキャンだけ実行します。

3.使い方と工程歩進

SFTL命令の使い方は
アイデアでいろいろあると
思いますが

一番よく見るのは
シフトを1ビットにして使う
工程歩進の制御での使用です。

下のようなラダー図があると
します。

これで次のステップに移行し
次にいく条件がONしたら
出力をONさせる

といった感じですね

値はONで保存されるのが
ダメなら
こういったように
きります

これはONしっぱなしなので
ZRST命令で一括で
リセットして0に戻します

➡ZRST命令については

DECO命令を使うパターンも
ありますが
この命令にありますね

➡DECO命令は

4.SFTR命令とSFTRP命令

SFTL命令は実行されると
左にシフトしていっていました。

SFTR命令、SFTRP命令は
右にシフトします。

SFTL命令だと

M10→M11→M12→M13→M14→M15

が、SFTR命令だと

M15→M14→M13→M12→M11→M10

になります。

H2:まとめ

こうなったら、こうなる
というのはシーケンス制御の
基本です。

それを順次各ステップを
行うSTFL命令を使う
プログラムは見ることは多いです

ぜひ、使えるようになってください