機械を制御する為に、 PLC内部にて様々な形式のデータを使用します。このデータはいくつかの種類に分けることができます。ほとんどはビットデータか数値データです。
三菱電機製シーケンサ では このビットデータと数値データを応用命令文中にて使用する際、連続したビットデータを数値データとしてワードデータやダブルワードデータのように取り扱うことができます。これを ”ビットデバイスの桁指定”や ”ビットデータの桁指定”と呼びます。
反対に、ワードデータやダブルワードデータのような数値データ内のから、一つのビットデータだけを取り扱うこともできます。これを、”ワードデバイスのビット指定”と呼びます。
どちらもそれなりに使用する場合があると思われますので、今回 三菱電機製シーケンサの ” ビットデバイスの桁指定 ” について解説してみたいと思います。
なお、ビットデバイスの桁指定機能については、FXシリーズであっても、Qシリーズであっても使用可能です。
MELSEC-Qシリーズの場合は、MELSEC-Q/Lプログラミングマニュアル(共通命令編)に記載があります。
FXシリーズの場合には、FX3S・FX3G・FX3GC・FX3U・FX3UCシリーズ プログラミングマニュアル[基本・応用命令解説編]に記載があります。
それぞれ三菱FAサイトよりダウンロード可能ですので、チェックしておくとよいと思います。
ビットデバイスとワードデバイス
本題に入る前に、ビットデバイスとワードデバイスとは何かについて整理します。
デバイスとは
デバイスとは、リレー、タイマ、コイルのように、シーケンスプログラム中で使用されるメモリを割り付けた素子の事です。機能命令中に使用される数値データもデバイスです。
デバイスはアルファベット+数字によって表現されます。
先頭についている、X,Y,M,Rなどのアルファベットは、デバイスが格納されるメモリの種類や領域をわかりやすく識別するためのアドレス記号です 。
- X:は機械からPLCへの入力信号
- Y:は出力信号
- DであればPLC内のワード単位のデータレジスタ
などというように、アドレス記号にはいくつかの種類がありますが、アドレス記号の割り付け方はPLCのメーカによって変わります。注意しましょう。
後半の数値はメモリのアドレスを意味しています。
また、数あるメモリの中から一つを特定の用途に使用することを”割り付ける”と呼びます。具体的には入力信号用のデバイスである「X00」を非常停止信号に割り付けると、以降プログラム中では「X00」というデバイスを非常停止の状態を表す信号として扱うことになります。
以上が簡単なデバイスの説明です。
実は、今までデバイスの定義づけについて、実はあまり深く考えたことが無かったため、正確な定義は不明ではあります。シーケンサを使用しているうちになれるため、厳密な意味を気にしなくてもそれなりにソフトを組み、機械を立ち上げることはできると思います。
ビットデバイスとは
ビットデバイスとは、PLC内のシーケンス図中の「コイル」や「接点 」 のように、1ビット単位で取り扱うデータを取り扱うデバイスです。「ON」か[OFF]つまり「1」か「0」のどちらかの情報を持っています。
具体的には、
- センサーからの入力信号 (Xデバイス)
- 補助デバイス(内部リレー) (Mデバイス)
- ソレノイドバルブへの出力信号 (Yデバイス)
などはビットデバイスです。
機械からの入力信号を表すXアドレスのビットデバイスを例にすると、センサーが反応していれば、ON=1 反応していなければOFF=0といった状態をPLC内で扱うために使用されます。
ビットデバイスのメモリ配列
三菱電機のQシリーズでは、入力信号用のXデバイスは0~Fの16進数でメモリ空間が用意されています。
ワードデバイスとは
ワードデバイスとはワードデータを扱うことができるデータの事です。 ビットデータが「1」か「0」といった状態しか表せないのに対して、ワードデータは数を表すことが出来ます。
ワードデバイスは16ビット(2Byte)分のメモリ領域を使用することで、 2の16乗= 65536 通りの「数」を表現できるようになります。
具体的な例として
- データレジスタ (Dデバイス)
- カウンタ (Cデバイス)
- ファイルレジスタ (Rデバイス)
などはワードデバイスです。
ワードデバイスを2領域分使用したものが、ダブルワードです。
ダブルワードでは16bit×2=32bit分のメモリ領域を使用するわけですから、 2の32乗= 4294967296 通りの数を表現できるようになります。
ビットデバイスの桁指定
三菱電機製のシーケンサの特徴では、 連続したビットデータを数値データとして取り扱うために、”ビットデバイスの桁指定”といった処理を行うことが出来ます。
ビットデータを桁指定する際は、 K1X00やK1M00 のように,”[桁数][ビットデバイスの先頭番号]”で指定します。
この仕様についての説明は、 Qシリーズの場合プログラミングマニュアル(共通命令編)に記述されています。 シーケンサーCPU内でのラダー言語の命令によって、データを取り扱うため、プログラミングマニュアルに記述されているのだと思います。
16ビットのワードデータとして使用する場合
桁の最小指定量は「 K1」 です。連続4ビット分を数値データとして扱います。
最大桁数は「K4」で 連続16ビット分を数値データとして扱います。
32ビットのワードデータとして使用する場合
桁の最小指定量は「 K1」 です。連続4ビット分を数値データとして扱います。
最大桁数は「K8」」で 連続32ビット分を数値データとして扱います。
少しややこしいと思いますので、具体的例を考えて、説明してみます。
桁指定したビットデバイスを ワード領域に転送する。
具体的に説明してみます。 ビットデバイスを桁指定 する際は、数値データの比較や転送命令中に使用します。[MOV K1X00 D0]は、データ転送命令MOV中にて、ビットデバイスを桁指定することで、ビットデバイスであるX00,X01,X02,X03の4ビットをワードデバイス( 16ビット分 )領域であるD0に転送します。
この時、PLC内では以下のように処理されます。
転送先であるD0は16ビット分の領域を持っていますが、転送元であるK1X00は、 X00,X01,X02,X03の4ビット と、転送先と転送元でデータの長さが異なります。
この際、転送元の5ビット目から16ビット目(X04からX0F)のON,OFF状態がどうであれ、転送先には K1X00 の下位4ビットだけが転送されます。転送先の 5ビット目から16ビット目(D0.4-D0.Fの上位12ビット)は「0」となります。
桁指定したビットデバイス領域に ワードデータを転送する。 例 1
続いて、転送先が桁指定されたビットデバイス、転送元がワードデバイスの場合です。
この時、PLC内では以下のように処理されます。
まず転送先について、K1M00と計指定されているため、M00,M01MM02,M03の下位4ビットだけが 転送先のデバイスとなります。
つまり転送元のデータ領域において、実際に転送可能なのは下位4ビットだけです。
このため、転送先の上位12ビットは転送元からの入力が無いとして、転送前から状態は変化しません。
桁指定したビットデバイス領域に ワードデータを転送する。 例 2
先ほどのプログラム例についてもう一度考えてみます。
転送元の下5ビット目(D1.4)に1が入っている場合、ワードデータD10=29になります。しかし、転送先は、 K1M00と計指定されているため、 転送元ワードデバイスの 下位4ビットだけが 転送先のデバイスとなります。
この場合PLC内部では以下の処理が行われることになります。
このため、 転送元ワードデバイスの 5ビット目以降にどのような値が入っていようとも、転送先のビットデバイス領域の 5ビット目は変化しないということがわかります。
まとめ
- 三菱電機製シーケンサ の ”ビットデータの桁指定” 方法について説明しました。
- 桁指定を行う際は、K1X00というような書式を使用します。最大で16ビット分のビットデバイスを数値データとして使用することが出来ます。
- ダブルワードデータとして扱う場合は、K8X00まで指定可能です。
以上です。
コメントを投稿するにはログインしてください。