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