シーケンサ

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ビットにして使う
工程歩進の制御での使用です。

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

SFTL命令で工程歩進例SFTL命令で工程歩進例

動きを説明していきます。


X000とM20がONすると
M30の内部リレーがON

これによりPLS命令により
M0が1スキャンだけON


M0が1スキャンONにより
SFTL命令を1回実行

M30がONなので
M101がON


工程進捗の条件として
あるT0がONするまで
次の工程には移行しない。

T0がONすることで
条件が揃い、
M0が1スキャンだけON


SFTL命令を1回実行
M102がON


工程進捗の条件として
あるM5がONするまで
次の工程には移行しない。

M5がONすることで
条件が揃い、
M0が1スキャンだけON


SFTL命令を1回実行
M103がON


こういった感じに
工程を進捗させていきます。

M101~M103はONしたままで
元に戻す(OFFにする)場合は
ZRST命令を使います。

ZRST命令については
以下のページを参考ください。

→ZRST命令について

工程進捗の制御には
DECO命令を使うパターンも
ありますね。

(DECO命令については
 以下をクリックして参考ください。
→DECO命令(デコード)について)

4.SFTR命令とSFTRP命令

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

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

SFTL命令だと

M10→M11→M12→M13→M14→M15

が、SFTR命令だと

M15→M14→M13→M12→M11→M10

になります。

5.まとめ

シーケンス制御

「あらかじめ定められた順序に従って
 制御の各段階を逐次進めていく
 制御のこと」

でJISでは定義されています。

SFTL命令を使った工程歩進は
まさに、この定義にあいますね。

SFTL命令を使うシーケンス
プログラムはよく見ますので
ぜひ、意味や使い方を
覚えておいてください。

当方ではこのページにも関連する
初心者向のシーケンス制御の教材も
扱っていますので

興味があれば
以下の画像をクリックして
ご確認ください。

●リレーシーケンス教材に
 ついては以下の画像をクリック

リレーシーケンス教材リレーシーケンス教材について

●シーケンサ教材に
 ついては以下の画像をクリック

PLC(シーケンサ)教材PLC(シーケンサ)教材について