このページでは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ビットシフト例](https://www.denkishuri.com/wp/wp-content/uploads/2022/09/SFTL命令:1ビットシフト例-e1664002780776.png)
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ビットシフト例](https://www.denkishuri.com/wp/wp-content/uploads/2022/09/dfsafgasko-e1664002830800.png)
①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命令のラダー図例](https://www.denkishuri.com/wp/wp-content/uploads/2022/09/SFrada-e1664005908911.png)
例えば
上のラダー図の場合は
M8000はRUM中は
常にONでですので
1スキャン(1周期)の度に
SFTL命令が
ONすることになります。
(M8000については
以下のページを参考ください。
→M8000~M8003 RUNモニタとイニシャルパルスとは)
(スキャンについては
以下のページを参考ください。
→シーケンサのプログラム処理とスキャンタイムについて)
1スキャンごとにSFTL命令を
実行することは稀なケースです。
通常はSFTL命令をそのまま
使わず、SFTLP命令を使うか
PLS命令と組み合わせて使います。
SFTLP命令とは
SFTLP命令はONした直後の
1スキャンだけSFTLP命令を
実行します。
下図はタイムチャートです。
![SFTLP命令ラダー図例とタイムチャート](https://www.denkishuri.com/wp/wp-content/uploads/2022/09/SFTLPrada-e1664006002364.png)
シフトを進めるためには
1回X000をOFFにしてONに
する必要があります。
ですので、プログラムで
制御することが可能です。
PLS命令と組み合わせる
PLS命令については
以下のサイトを
参考ください。
![PLS命令とSFTL命令](https://www.denkishuri.com/wp/wp-content/uploads/2022/09/SFTLtoPLS-e1664006044678.png)
上のラダー図のように
使います。
この例だとT0のタイマーが
タイムアップするとPLS命令で
M30のa接点は1スキャンだけ
ONします。
それでSFTL命令も
その1スキャンだけ実行します。
3.使い方と工程歩進
SFTL命令の使い方は
アイデアでいろいろあると
思いますが
一番よく見るのは
シフトを1ビットにして使う
工程歩進の制御での使用です。
下のようなラダー図があると
します。
![SFTL命令で工程歩進例](https://www.denkishuri.com/wp/wp-content/uploads/2022/09/sftlradarei-e1664153074264.png)
動きを説明していきます。
①
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命令については
以下のページを参考ください。
工程進捗の制御には
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命令を使うシーケンスの
プログラムはよく見ますので
ぜひ、意味や使い方を
覚えておいてください。
当方ではこのページにも関連する
初心者向のシーケンス制御の教材も
扱っていますので
興味があれば
以下の画像をクリックして
ご確認ください。
●リレーシーケンス教材に
ついては以下の画像をクリック
●シーケンサ教材に
ついては以下の画像をクリック