1. TOP
  2. KEYENCE
  3. KV-X/KV
  4. ネットワーク
  5. MITSUBISHI MC Protocol 通信

KV

ダウンロード

McpUdpKVLib.kufb (ライブラリのみ)

KV-Xシリーズでの動作確認はできていません
KVシリーズのサンプルを参考にしてください

概略

McpUDP

MITSUBISHIシーケンサのEthernetポートに対してメッセージ(MC Protocolコマンド)通信を行いPLCの状態やメモリの読み書きをします。
このライブラリでは3Eフレームのバイナリコードを使用しています。また、アクセス範囲は接続したシーケンサのみに対応しています。

フレーム 3Eフレーム
コード バイナリコード

MCプロトコルとは

MCプロトコルはMITSUBISHIシーケンサのネットワークメッセージサービスのコマンド体系です。
MCプロトコルコマンドをEthernetまたはControllerLinkまたは上位リンクなどで接続しているMITSUBISHIシーケンサに送信することでコマンドに対するレスポンスを受信することができます。
また、CPUユニット以外にも高機能ユニットにも送信出来ます。
ネットワーク中継機能を使って3階層のネットワークを超えてアクセスすることが可能です。

このページではPCとシーケンサをEthernetで接続してMCプロトコルコマンドを送信してシーケンサの状態やメモリの読み書きを行う方法を説明します。

マニュアル

MCプロトコルの説明は
MELSECコミュニケーションプロトコル リファレンスマニュアル などを参照してください

MCPファンクションブロック

KV8000シリーズのソケット通信機能を使ってMITSUBISHIのシーケンサとUDP/IP接続するためのファンクションブロックを作成したので使い方を説明します

FB一覧

McpUDP MCプロトコルUDP通信
McpRead メモリエリアの読出し(ワード単位)
McpReadBit メモリエリアの読出し(ビット単位)
McpWrite メモリエリアの書込み(ワード単位)
McpWriteBit メモリエリアの書込み(ビット単位)
McpRandomRead ワード単位のランダム読出し
memOffset デバイスアドレスのデバイスコードとオフセットの分離

FB共通入出力

入力

EN BOOL 起動
UnitNo UINT ユニット番号
SocketNo UINT ソケット番号
SocketSetting UINT[8] U_SOPENの設定データ

出力

ENO BOOL 起動
Busy BOOL 実行中
Done BOOL 正常終了
Error BOOL 異常終了
SocketStatus UINT[12] U_SSTATで読み出すソケット処理ステータス
EndCode UINT MCプロトコル終了コード

配列

SocketSetting
[0] 自ポート番号
[1] 送信先IPアドレス(1byte目)
[2] 送信先IPアドレス(2byte目)
[3] 送信先IPアドレス(3byte目)
[4] 送信先IPアドレス(4byte目)
[5] 送信先ポート番号
[6] 要求タイムアウト(ms)
[7] UDP送信フラグ

終了コード

QnUCPU内臓Ethernetの場合の例
QnUCPUユーザーズマニュアル(内蔵Ethernetポート通信編)より抜粋

4000H - 4FFFH CPU ユニットが検出したエラー
0050H サブヘッダのコマンド/レスポンス種別が規定以外のコードになっている
0055H RUN 中書込みを許可しない場合に,相手機器によりCPU ユニットがRUN 中にデータの書込みを要求した
C050H 交信データコード設定” で,ASCII コード交信を設定時,バイナリコードに変換できないASCII コードのデータを受信した
C051H - C054H 書込みまたは読出し点数が許容範囲外である
C056H 最大アドレスを超える書込みおよび読出し要求である
C058H ASCII バイナリ変換後の要求データ長が,キャラクタ部(テキストの一部)のデータ数と合わない
C059H • コマンド,サブコマンドの指定に誤りがある。
• CPU ユニットでは使用不可のコマンド,サブコマンドである
C05BH 指定デバイスに対してCPU ユニットが書込みおよび読出しできない
C05CH 要求内容に誤りがある。(ワードデバイスに対するビット単位の書込みおよび読出しなど)
C05DH モニタ登録されていない
C05FH 対象CPU ユニットに対して実行できない要求である
C060H 要求内容に誤りがある。(ビットデバイスに対するデータの指定に誤りがあるなど)
C061H 要求データ長が,キャラクタ部(テキストの一部)のデータ数と合わない。
C06FH 交信データコード設定” がバイナリのとき,ASCII の要求伝文を受信した。または設定がASCII のときバイナリの要求伝文を受信した。(本エラーコードは,エラー履歴のみ登録され,異常応答は返りません。)
C070H 対象局に対しては,デバイスメモリの拡張指定はできない
C0B5H CPU ユニットで扱えないデータが指定された
C200H リモートパスワードに誤りがある
C201H 交信に使ったポートがリモートパスワードのロック状態である。または,“ 交信データコード設定” がASCII コードのとき,リモートパスワードのロック状態であるため,サブコマンド以降をバイナリコードへ変換できない。
C204H リモートパスワードのアンロック処理を要求した相手機器と異なる

デバイス記号

アドレスを指定するときのデバイス記号

記号デバイス名表記記述例
SM特殊リレー10進SM0
SD特殊レジスタ10進SD0
X入力16進X1F
Y出力16進Y1F
M内部リレー10進M0
Lラッチリレー10進L0
Fアナンシェータ10進F0
Vエッジリレー10進V0
Bリンクリレー16進B1F
Dデータレジスタ10進D0
Wリンクレジスタ16進W1F
TSタイマ接点10進TS0
TCタイマコイルTC10進TC0
TNタイマ現在値10進TN0
SS積算タイマ接点10進SS0
SC積算タイマコイル10進SC0
SN積算タイマ現在値10進SN0
CSカウンタ接点10進CS0
CCカウンタコイル10進CC0
CNカウンタ現在値10進CN0
SBリンク特殊リレー16進SB1F
SWリンク特殊レジスタ16進SW1F
Sステップリレー10進S0
DXダイレクトアクセス入力16進DX1F
DYダイレクトアクセス出力16進DY1F

McpRead (ワード単位の一括読出し)

コマンドコード : 0401
サブコマンド : 00
デバイスから値をワード単位で読み出します

McpRead
入力
Address
読出し開始アドレス
Size
読出しワード数
出力
ResData
読出しデータ
ResSize
読出しワード数


McpReadBit (ビット単位の一括読出し)

コマンドコード : 0401
サブコマンド : 01
デバイスから値をビット単位で読み出します

McpReadBit
入力
Address
読出し開始アドレス
Size
読出しビット数
出力
ResData
読出しデータ
ResSize
読出しワード数

読出したビット情報 (M100からM109までの場合)

ResData[0] ResData[1] ResData[2]
00H 01H 00H 10H 00H
左から
0M100
0M101
0M102
1M103
0M104
0M105
1M106
0M107
0M108
0M109
余り

ResSize = 3


McpWrite (ワード単位の一括書込み)

コマンドコード : 1401
サブコマンド : 00
デバイスに値をワード単位で書込みます

McpWrite
入力
Address
書込み開始アドレス
WriteSize
書込ワード数
WriteData[]
書込みデータ(要素数分)


McpWriteBit (ビット単位の一括書込み)

コマンドコード : 1401
サブコマンド : 01
デバイスに値をビット単位で書込みます

McpWrite
入力
Address
書込み開始アドレス
WriteSize
書込ビット数
WriteData[]
書込みデータ

書込みデータはMcpReadBitの読出したビット情報を参照


McpRandomRead (ランダム読出し)

コマンドコード : 1403
サブコマンド : 00
デバイス番号を指定してデバイスの値を読み出します

McpRandomRead
入力
WordDevice
読出しワードアドレス
(カンマ区切り)
DWordDevice
読出しダブルワードアドレス
(カンマ区切り)
出力
ResData
読出しデータ
ResSize
読出しワード数


WordDeviceとDWordDeviceの指定例
WordDevice文字列'D0, T0, M100, X2F'
DWordDevice文字列'D1500, Y160, M1111'
上記の場合のResData
ResData[0]D0
ResData[1]T0
ResData[2]M100
ResData[3]X2F
ResData[4,5]D1500
ResData[6,7]Y160
ResData[8,9]M1111


McpUDP (MCプロトコルUDP通信)

MCプロトコルコマンドを送信します

McpUDP
入力
Cmd
MCプロトコルコマンド
CmdByteSize
コマンドのバイト数
出力
ResData
レスポンス
ResSize
レスポンスバイト数


実装

1. 「SampleMcpUdp.zip」または「McpUdp.kufb」をダウンロードし、KV STUDIOでプロジェクトに追加します。
2. MITSUBISHIシーケンサのEthernetポートと同じネットワーク内に設定してください。
3. KV8000のソケット機能を有効にします

実装1


4. 使用するソケットを「UDP」に設定します

実装2


5. PLC間の通信を確認するために、McpReadのFBを使用してMITSUBISHIシーケンサのDM0から値を読み出してみます

実装3


6. 上記のようにDoneがONになりDM0からの値が読み出せたら正常に接続できています
うまくいかない場合は「SampleMcpUdp.zip」を使って MITSUBISHI シーケンサのIPアドレスを 192.168.250.41 にし、KVのIPアドレスを 192.168.250.32 にして実行してみてください

この記事へのコメント