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

sftl命令
sftl命令

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

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

【補足】PLCやシーケンサそのものの役割や仕組みから整理したい方は、
→PLCを基礎から体系的に理解したい方はこちら
で解説しています。

ですので、
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(シーケンサ)教材について

初心者のための講座へ-以下をクリック!

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA