MCプロトコル エラーコード(終了コード)一覧と対処方法
三菱電機のPLCとMCプロトコル(SLMP)で通信したときに返ってくる終了コードの意味と、よくある原因・対処をまとめました。
C059、C056、C051などのエラーが返ってきたときに、まず確認してください。
終了コードの見方
3Eフレームの応答では、応答データ長の後ろの2バイトが終了コードです。0000なら正常終了、それ以外は異常終了です。
バイナリコードでは下位バイトが先に並ぶので、59 C0 は終了コード C059 です。ASCIIコードでは「C059」の4文字で返ります。
異常終了のときは、終了コードの後ろにエラー情報(エラーを返した局のアクセス経路と、エラーになったコマンド・サブコマンド)が付きます。
どの局のどのコマンドでエラーになったかが分かるので、中継先がある構成では特に役に立ちます。
よく出る終了コードと対処
| 終了コード | 意味 | よくある原因と対処 |
|---|---|---|
| C059 | コマンド・サブコマンドの指定誤り | コマンドやサブコマンドの値が違う、または相手の機器が対応していないコマンド。Q/Lシリーズ用のサブコマンド(0000/0001)とiQ-R用(0002/0003)の取り違えも多い原因です |
| C056 | 最大アドレスを超えている | 先頭デバイス番号+点数が、相手のデバイスの範囲を超えている。PLCのパラメータでデバイス点数を確認します |
| C051〜C054 | 読出し・書込み点数が範囲外 | 1回で扱える点数を超えている、または点数が0。点数を減らして分けて送ります |
| C05C | 要求内容の誤り | ワードデバイスにビット単位で読み書きしたなど、デバイスと単位の組合せが正しくない |
| C05B / C05A | 指定したデバイスに読み書きできない | デバイスコードが違う、相手の機器にそのデバイスがない |
| C050 | ASCIIからバイナリに変換できない | 交信データコードがASCIIの設定で、0〜9・A〜F以外の文字を送った |
| C06F | 交信データコードの不一致 | PLC側がバイナリの設定なのにASCIIで送った(またはその逆)。PLCのEthernet設定とコードを合わせます |
| 0055 | RUN中書込みが許可されていない | RUN中書込みを禁止する設定で、RUN中に書込みを要求した |
McpMes2026で応答の意味をすぐ確認
MCプロトコル(3Eフレーム)の通信試験ツールです。Free版でコマンドの送信と終了コードの確認ができます。
- Pro版は終了コードの意味とエラー情報を自動で表示
- Pro版のサーバー機能で、PCをPLCの代わりにしてクライアント側のプログラムを試験
- TCP/UDP、バイナリ/ASCIIに対応
終了コード一覧
MELSEC iQ-R/Q/Lシリーズの内蔵Ethernetポート・Ethernetユニットで、MCプロトコル(SLMP)の交信時に返る主な終了コードです。
| 終了コード | 内容 |
|---|---|
| 0000 | 正常終了 |
| 0055 | RUN中書込みを許可しない設定で、RUN中に書込みを要求した |
| C050 | ASCIIコード交信時に、バイナリコードに変換できないASCIIデータを受信した |
| C051 | 一括読出し・書込みの点数が許容範囲外(ワード単位) |
| C052 | 一括読出し・書込みの点数が許容範囲外(ビット単位) |
| C053 | ランダム読出し・書込みの点数が許容範囲外(ビット単位) |
| C054 | ランダム読出し・書込みの点数が許容範囲外(ワード・ダブルワード単位) |
| C055 | ファイルデータの読出し・書込みサイズが許容範囲外 |
| C056 | 読出し・書込みの要求が最大アドレスを超えている |
| C057 | 要求データ長がキャラクタ部(テキストの一部)のデータ数と合わない |
| C058 | ASCII→バイナリ変換後の要求データ長が、キャラクタ部のデータ数と合わない |
| C059 | コマンド・サブコマンドの指定誤り、または相手の機器で使えない機能を実行した |
| C05A | 指定したデバイスに読出し・書込みできない |
| C05B | 指定したデバイスに読出し・書込みできない |
| C05C | 要求内容に誤りがある(例:ワードデバイスへのビット単位の読出し・書込み) |
| C05D | モニタ登録をしないでモニタ要求をした |
| C05E | 監視タイマの時間内にアクセス先から応答が返らなかった |
| C05F | アクセス先に対して実行できない要求 |
| C060 | ビットデバイスに対する要求内容に誤りがある(データの指定誤りなど) |
| C061 | 要求データ長がキャラクタ部のデータ数と合わない |
| C06F | 交信データコードの設定と異なるコードの要求を受信した(バイナリ設定でASCIIを受信など) |
| C070 | アクセス先がデバイスメモリの拡張指定に対応していない |
| C0B5 | CPUユニットで扱えないデータを指定した |
| C200 | リモートパスワードが一致しない |
| C201 | リモートパスワードでロックされている |
| C204 | リモートパスワードのアンロックを要求した機器と異なる機器からの要求 |
| 4000〜4FFF | CPUユニットが検出したエラー(MCプロトコル以外の機能のエラー)。CPUユニットのマニュアルのエラーコードを参照 |
応答が返ってこないとき
終了コードが返らずにタイムアウトになるときは、通信の設定が合っていないことがほとんどです。
- PLCのEthernet設定(オープン設定)で、相手機器の接続がMCプロトコル(SLMP)になっているか
- ポート番号と、TCP/UDPの種別が合っているか
- 交信データコード(バイナリ/ASCII)が合っているか(合っていないと応答しないか、C06Fなどになります)
- サブヘッダが3Eフレームの要求(
50 00)になっているか - IPアドレスが同じネットワークにあるか、PCのファイアウォールで止められていないか
よくある質問
MCプロトコルの終了コードC059は何のエラーですか?
コマンドまたはサブコマンドの指定誤りです。コマンドの値が違うか、相手の機器が対応していないコマンドを送っています。Q/Lシリーズ用のサブコマンド(0000/0001)とiQ-R用(0002/0003)の取り違えもよくある原因です。
終了コードC056の対処方法は?
読出し・書込みの要求が最大アドレスを超えています。先頭デバイス番号と点数を確認し、相手のPLCのデバイスの範囲に収まるようにしてください。
MCプロトコルで応答が返ってこないのはなぜですか?
PLCのEthernet設定(オープン設定)、ポート番号、TCP/UDPの種別、交信データコード(バイナリ/ASCII)のどれかが合っていないことがほとんどです。
※終了コードの内容は機種・ユニットによって一部異なります。正式な内容は、三菱電機の「MELSEC通信プロトコルリファレンスマニュアル」や各ユニットのマニュアルを参照してください。
