MITSUBISHIシーケンサのEthernetポートに対してメッセージ(MC Protocolコマンド)通信を行いPLCの状態やメモリの読み書きをします。
このライブラリでは3Eフレームのバイナリコードを使用しています。また、アクセス範囲は接続したシーケンサのみに対応しています。
| フレーム | 3Eフレーム |
| コード | バイナリコード |
MCプロトコルはMITSUBISHIシーケンサのネットワークメッセージサービスのコマンド体系です。
MCプロトコルコマンドをEthernetまたはControllerLinkまたは上位リンクなどで接続しているMITSUBISHIシーケンサに送信することでコマンドに対するレスポンスを受信することができます。
また、CPUユニット以外にも高機能ユニットにも送信出来ます。
ネットワーク中継機能を使って3階層のネットワークを超えてアクセスすることが可能です。
このページではPCとシーケンサをEthernetで接続してMCプロトコルコマンドを送信してシーケンサの状態やメモリの読み書きを行う方法を説明します。
MCプロトコルの説明は
MELSECコミュニケーションプロトコル リファレンスマニュアル などを参照してください
KV8000シリーズのソケット通信機能を使ってMITSUBISHIのシーケンサとUDP/IP接続するためのファンクションブロックを作成したので使い方を説明します
| McpUDP | MCプロトコルUDP通信 |
| McpRead | メモリエリアの読出し(ワード単位) |
| McpReadBit | メモリエリアの読出し(ビット単位) |
| McpWrite | メモリエリアの書込み(ワード単位) |
| McpWriteBit | メモリエリアの書込み(ビット単位) |
| McpRandomRead | ワード単位のランダム読出し |
| memOffset | デバイスアドレスのデバイスコードとオフセットの分離 |
| 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プロトコル終了コード |
| [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 | タイマコイルTC | 10進 | 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 |
コマンドコード : 0401
サブコマンド : 00
デバイスから値をワード単位で読み出します
コマンドコード : 0401
サブコマンド : 01
デバイスから値をビット単位で読み出します
| ResData[0] | ResData[1] | ResData[2] | |||
| 00H | 01H | 00H | 10H | 00H | |
| 0 | M100 |
| 0 | M101 |
| 0 | M102 |
| 1 | M103 |
| 0 | M104 |
| 0 | M105 |
| 1 | M106 |
| 0 | M107 |
| 0 | M108 |
| 0 | M109 |
| 余り |
コマンドコード : 1401
サブコマンド : 00
デバイスに値をワード単位で書込みます
コマンドコード : 1401
サブコマンド : 01
デバイスに値をビット単位で書込みます
書込みデータはMcpReadBitの読出したビット情報を参照
コマンドコード : 1403
サブコマンド : 00
デバイス番号を指定してデバイスの値を読み出します
| WordDevice | 文字列 | 'D0, T0, M100, X2F' |
| DWordDevice | 文字列 | 'D1500, Y160, M1111' |
| ResData[0] | D0 | |
| ResData[1] | T0 | |
| ResData[2] | M100 | |
| ResData[3] | X2F | |
| ResData[4,5] | D1500 | |
| ResData[6,7] | Y160 | |
| ResData[8,9] | M1111 |
MCプロトコルコマンドを送信します
1. 「SampleMcpUdp.zip」または「McpUdp.kufb」をダウンロードし、KV STUDIOでプロジェクトに追加します。
2. MITSUBISHIシーケンサのEthernetポートと同じネットワーク内に設定してください。
3. KV8000のソケット機能を有効にします
4. 使用するソケットを「UDP」に設定します
5. PLC間の通信を確認するために、McpReadのFBを使用してMITSUBISHIシーケンサのDM0から値を読み出してみます
6. 上記のようにDoneがONになりDM0からの値が読み出せたら正常に接続できています
うまくいかない場合は「SampleMcpUdp.zip」を使って MITSUBISHI シーケンサのIPアドレスを 192.168.250.41 にし、KVのIPアドレスを 192.168.250.32 にして実行してみてください