MELSEC-QとキーエンスKV-5000のデバイス比較

最近キーエンスPLCを使うことが多いのですが、学習のためMELSECとキーエンスKVシリーズでデバイスの相違をまとめてみました。
KV-5000を比較にした理由は家にあるからです。上位機種ではデバイス範囲がもっと大きくなっています。
記号MELSECの欄はMELSEC-Qで役目が同じデバイスを意味します。

|デバイス名|記号KEYENCE|記号MELSEC|範囲|点数|BIT|備考|
|:----|:---:|:---:|:----|:----|:----|:----|
|入力/出力/内部補助リレー|R|X/Y|R0～R99915|15936点|ON/OFF|チャンネル番号 (000 ～ 999) 接点番号 (00 ～ 15)|
|内部補助リレー|MR|M|MR000～MR99915|16000点|ON/OFF|チャンネル番号 (000 ～ 999) 接点番号 (00 ～ 15)|
|ラッチリレー|LR|L|LR000～LR99915|16000点|ON/OFF|チャンネル番号 (000 ～ 999) 接点番号 (00 ～ 15)|
|リンクリレー|B|B|B00～B3FFF|16384点|ON/OFF|チャンネル番号 (000 ～ 3FF) 接点番号 (0 ～ F)|
|コントロールリレー|CR|SM|CR000～CR3915|640点|ON/OFF| |
|データメモリ|DM|D|DM0～DM65534|65535点|16| |
|拡張データメモリ|EM|D|EM0～EM65534|65535点|16| |
|ファイルレジスタ(バンク切換方式)|FM|R|FM0～FM32767|32768×4点|16| |
|ファイルレジスタ(連番方式)|ZF|ZR|ZF0～ZF131071|131072点|16| |
|リンクレジスタ|W|W|W0～W3FFF|16384点|16|デバイス番号 (0 ～ 3FFF)|
|コントロールメモリ|CM|SD|CM0～CM5999|6000点|16| |
|テンポラリメモリ|TM|-|TM0～TM511|512点|16| |
|タイマ|T|T|T0～T3999|4000点|32|デバイス番号（ 0000 ～ 3999 ）|
|カウンタ|C|C|C0～C3999|4000点|32|デバイス番号（ 0000 ～ 3999 ）|
|高速カウンタ|CTH|-|CTH0～CTH1|2点|32| |
|高速カウンタコンパレータ|CTC|-|CTC0～CTC3|4点|32| |
|デジタルトリマ|TRM|-|TRM0～7|8点|32| |
|インデックスレジスタ|Z|Z|Z01～Z12|12点|32| |
|マクロ引数デバイス(デバイス)|P|FX/FY/FD|P0～P9|10点|-| |
|マクロ引数デバイス(値)|V|-|V0～V9|10点|-| |
|マクロ引数デバイス(ユニット先頭R)|UR|-|UR0～UR9|10点|-| |
|マクロ引数デバイス(ユニット先頭DM)|UM|-|UM0～UM9|10点|-| |
|マクロ引数デバイス(ユニット番号)|UV|-|UV0～UV9|10点|-| |
|内部レジスタ|デバイス名無|-|-|1点|64| |

# 入力リレー:R
ビットデバイス:外部機器からON/OFFの情報を取り込むためのデバイス
停電保持:入力状態が常時反映

MELSECでは入力X,出力Yとデバイス名が違うがキーエンスでは入出力すべてRデバイスで表現される。
またチャンネル番号という表記があります。
R00012の場合では 000がチャンネル番号 12の部分が接点番号(00～15)となります。
そのため連番にならずR00016のようなデバイスは存在しません。R00015の次はR00100になります。

# 出力リレー:R
ビットデバイス:外部機器へON/OFF情報を送り出すためのデバイス
停電保持:クリア/保持 選択可能
デバイス番号は入力リレーと同じ考え方。

# 内部補助リレー:R
ビットデバイス:CPU内部と拡張ユニットで使用できるデバイス
停電保持:クリア/保持 選択可能
デバイス番号は入力リレーと同じ考え方。
実入出力リレーと拡張ユニットリレーに割り当てていないRを内部補助リレーとして使用でき
ます。
このへんはMELSECと同じ。
しかしシステムが占有するエリアもあるので全領域が使用可能なわけではないので注意。

# 内部補助リレー:MR
ビットデバイス:CPU内部でのみ使用できるデバイス
停電保持:クリアのみ
デバイス番号は入力リレーと同じ考え方。

# ラッチリレー:LR
ビットデバイス:CPU内部のみで使用でき、状態を保持するデバイスです。
停電保持:保持のみ
デバイス番号は入力リレーと同じ考え方。

# リンクリレー:B
ビットデバイス:CPU内部でのみ使用できるデバイス
停電保持:クリア/保持 選択可能
デバイス番号はB00～B3FFFまで16進数の連番となります。
FL-net接続時に、サイクリック伝送をおこなうためのリレーとして使用します。
FL-netに接続しない場合や、リンクリレーに割り当てていないBを内部補助リレーとして使用できます。

# コントロールリレー:CR
ビットデバイス:PLCの機能を制御したり、PLCの状態を知るために使用する特殊な内部補助リレーです。
停電保持:保持のみ
デバイス番号はCR000～CR3915まで10進数の連番となります。

# データメモリ:DM
ワードデバイス:数値データを格納できるデバイス(16ビット)
停電保持:クリア/保持 選択可能
関数が演算する際に参照するデータを保存したり、演算の結果を格納するための1点当たり16ビットのデバイスです。
デバイス番号はDM00000～DM65534まで10進数の連番となります。
ビット指定はDM0.12のように記述します。(.0～.15)

# 拡張データメモリ:EM
ワードデバイス:数値データを格納できるデバイス(16ビット)
停電保持:クリア/保持 選択可能
関数が演算する際に参照するデータを保存したり、演算の結果を格納するための1点当たり16ビットのデバイスです。
デバイス番号はEM00000～EM65534まで10進数の連番となります。
ビット指定はEM0.12のように記述します。(.0～.15)

# ファイルレジスタ(バンク切換方式):FM
ワードデバイス:数値データを格納できるデバイス(16ビット)
停電保持:保持のみ
FMとZFは同じメモリですが指定方法が違います。
デバイス番号はFM00000～FM32767まで10進数の連番となります。
このデバイスが4バンク分存在しFRSET命令でバンク0～3まで切り替えて使用できます。
そのため4バンク切り替えてすべて使えば131072点使用可能です。
MELSECのRとZRの考え方と同じです。
ビット指定はFM0.12のように記述します。(.0～.15)

# ファイルレジスタ(連番方式):ZF
ワードデバイス:数値データを格納できるデバイス(16ビット)
停電保持:保持のみ
FMとZFは同じメモリですが指定方法が違います。
デバイス番号はZF000000～ZF131071まで10進数の連番となります。
FMは4バンクに分割されていますがこちらは通し番号での指定となります。
MELSECのRとZRの考え方と同じです。
ビット指定はZF0.12のように記述します。(.0～.15)

# リンクレジスタ:W
ワードデバイス:数値データを格納できるデバイス(16ビット)
停電保持:クリア/保持 選択可能
FL-net接続時に、サイクリック伝送をおこなうためのレジスタとして使用できます。
デバイス番号はW0～W3FFFまで16進数の連番となります。

# コントロールメモリ:CM
ワードデバイス:PLCの機能を制御したり、状態を取得するためのデバイス(16ビット)
停電保持:保持のみ
デバイス番号はCM0～CM5999まで10進数の連番となります。

# テンポラリメモリ:TM
ワードデバイス:数値データを格納できるデバイス(16ビット)
停電保持:クリアのみ
テンポラリデータメモリは、データメモリと同じように扱うことができる 1 点当たり 16 ビットのワードデバイスです。一部のデバイス領域は、演算命令を使う場合に、演算のためのデータや演算の結果データを一時格納するためにも使用します。
デバイス番号はTM000～TM511まで10進数の連番となります。
MELSECでは割り算をしたときに余りは格納先+1したアドレスに格納されますが、キーエンスでは余りはTMに格納されます。
詳しくは[KV-8000/7000/5000/3000/1000シリーズ・KV Nanoシリーズ命令語リファレンスマニュアル 付録:四則演算の格納について]を参照してください。

# タイマ:T
ビットデバイス:1ms、10ms、100ms、10μsの減算タイマ・10msのアップダウンタイマの接点デバイス
ワードデバイス:1ms、10ms、100ms、10μsの減算タイマ・10msのアップダウンタイマの現在値/設定値(32ビット)
停電保持:クリアのみ
デバイス番号はT0000～3999まで10進数の連番となります。
MELSECと違うのは32ビットデバイスというところです。0～4294967295まで設定可能。
100msであれば119304時間まで設定できます。
また設定値から減算していくのもMELSECと違います。
設定値が固定値の場合でもSTA命令で一時的に変更可能です。
ただし保持はされなので電源ONで固定値に戻される。

# カウンタ:C
ビットデバイス:加算カウンタ・アップダウンカウンタの接点デバイス
ワードデバイス:加算カウンタ・アップダウンカウンタの現在値/設定値(32ビット)
停電保持:クリア/保持 選択可能
デバイス番号はC0000～3999まで10進数の連番となります。
MELSECと違うのは32ビットデバイスというところです。0～4294967295まで設定可能。
設定値が固定値の場合でもSTA命令で変更可能です。

# 高速カウンタ:CTH
ワードデバイス:高速カウンタの現在値(32ビット)
停電保持:クリア/保持 選択可能
高速カウンタは、カウンタ命令では取り込めない、間隔の短い信号を取り込むための 32 ビットカウンタです。

# 高速カウンタコンパレータ:CTC
ビットデバイス:高速カウンタの現在値が設定値と一致した時にONするデバイスです。
ワードデバイス:高速カウンタの設定値（32ビット）を格納するデバイスです。
停電保持:クリア/保持 選択可能
CTC0、CTC1=CTH0用
CTC2、CTC3=CTH1用

# デジタルトリマ:TRM
停電保持:保持のみ
アクセスウィンドウで設定したトリマの値はTMIN命令で取り込めます。

# インデックスレジスタ:Z
ワードデバイス:インデックス修飾で使用するデバイス(32ビット)
停電保持:クリアのみ
インデックス修飾する際に、対象デバイス番号に加える数を指定するための1点当たり32ビットのワードデバイスです。データメモリと同じように、データを保存したり、演算の結果を格納できます。
デバイス番号はZ01～12まで10進数の連番となります。
MELSECと違うのはZ0が存在しないことです。またZ11，Z12は、システムで予約されているため使用できません。

# マクロ引数デバイス(デバイス):P
デバイスを引数として受け取ります。
MCALL,MSTRTのマクロCALL時に引数として渡すデバイスです。
詳しくはマニュアルを参照してください。

# マクロ引数デバイス(値):V
デバイスの値または定数を引数として受け取ります。
MCALL,MSTRTのマクロCALL時に引数として渡すデバイスです。
詳しくはマニュアルを参照してください。

# マクロ引数デバイス(ユニット先頭R):UR
拡張ユニットに割り付けられた先頭リレー(R)を引数として受け取ります。
MCALL,MSTRTのマクロCALL時に引数として渡すデバイスです。
詳しくはマニュアルを参照してください。

# マクロ引数デバイス(ユニット先頭DM):UM
拡張ユニットに割り付けられた先頭データメモリ(DM)を引数として受け取ります。
MCALL,MSTRTのマクロCALL時に引数として渡すデバイスです。
詳しくはマニュアルを参照してください。

# マクロ引数デバイス(ユニット番号):UV
拡張ユニットのユニット番号を引数として受け取ります。
MCALL,MSTRTのマクロCALL時に引数として渡すデバイスです。
詳しくはマニュアルを参照してください。

# 内部レジスタ
データを一時的に格納するデバイス(16ビット/32ビット/64ビット)
停電保持:クリアのみ
内部レジスタは、応用命令・演算命令・拡張命令の演算結果を格納したり、演算時に一時的にデータを格納するためのデバイスです。内部レジスタに格納されたデータは、次に新しいデータが格納されるまで変化しません。
LDA命令で内部レジスタに取り込み,STA命令で内部レジスタの値をデバイスに書き込みます。

# おまけ　エッジリレーがない
MELSEC-Qにはあるエッジリレー(V)に相当するデバイスはりません。
エッジリレーとは…については下記を読んでください。

https://qiita.com/fa_yoshinobu/items/e932304d3cc818ff5195

こういう回路を組むことでループ内で立上がり立下り判定は可能です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2146151/ddadfa91-db9a-ceec-b421-61194648280d.png)