日本語 English

MCプロトコル エラーコード(終了コード)一覧と対処方法

三菱電機のPLCとMCプロトコル(SLMP)で通信したときに返ってくる終了コードの意味と、よくある原因・対処をまとめました。
C059、C056、C051などのエラーが返ってきたときに、まず確認してください。

終了コードの見方

3Eフレームの応答では、応答データ長の後ろの2バイトが終了コードです。0000なら正常終了、それ以外は異常終了です。
バイナリコードでは下位バイトが先に並ぶので、59 C0 は終了コード C059 です。ASCIIコードでは「C059」の4文字で返ります。

// 異常終了の応答(3Eフレーム・バイナリ) D0 00 00 FF FF 03 00 0B 00 59 C0 00 FF FF 03 00 01 04 00 00 // サブヘッダ アクセス経路 データ長 終了コード エラー情報(応答局のアクセス経路+コマンド・サブコマンド)

異常終了のときは、終了コードの後ろにエラー情報(エラーを返した局のアクセス経路と、エラーになったコマンド・サブコマンド)が付きます。
どの局のどのコマンドでエラーになったかが分かるので、中継先がある構成では特に役に立ちます。

よく出る終了コードと対処

よく出る終了コードと対処
終了コード意味よくある原因と対処
C059コマンド・サブコマンドの指定誤りコマンドやサブコマンドの値が違う、または相手の機器が対応していないコマンド。Q/Lシリーズ用のサブコマンド(0000/0001)とiQ-R用(0002/0003)の取り違えも多い原因です
C056最大アドレスを超えている先頭デバイス番号+点数が、相手のデバイスの範囲を超えている。PLCのパラメータでデバイス点数を確認します
C051〜C054読出し・書込み点数が範囲外1回で扱える点数を超えている、または点数が0。点数を減らして分けて送ります
C05C要求内容の誤りワードデバイスにビット単位で読み書きしたなど、デバイスと単位の組合せが正しくない
C05B / C05A指定したデバイスに読み書きできないデバイスコードが違う、相手の機器にそのデバイスがない
C050ASCIIからバイナリに変換できない交信データコードがASCIIの設定で、0〜9・A〜F以外の文字を送った
C06F交信データコードの不一致PLC側がバイナリの設定なのにASCIIで送った(またはその逆)。PLCのEthernet設定とコードを合わせます
0055RUN中書込みが許可されていないRUN中書込みを禁止する設定で、RUN中に書込みを要求した
McpMes2026アイコン

McpMes2026で応答の意味をすぐ確認

MCプロトコル(3Eフレーム)の通信試験ツールです。Free版でコマンドの送信と終了コードの確認ができます。

  • Pro版は終了コードの意味とエラー情報を自動で表示
  • Pro版のサーバー機能で、PCをPLCの代わりにしてクライアント側のプログラムを試験
  • TCP/UDP、バイナリ/ASCIIに対応
McpMes2026の詳細・ダウンロード OSD Tools(PLC通信試験ツールセット)

終了コード一覧

MELSEC iQ-R/Q/Lシリーズの内蔵Ethernetポート・Ethernetユニットで、MCプロトコル(SLMP)の交信時に返る主な終了コードです。

MCプロトコル(3E/4Eフレーム・SLMP)の終了コード一覧
終了コード内容
0000正常終了
0055RUN中書込みを許可しない設定で、RUN中に書込みを要求した
C050ASCIIコード交信時に、バイナリコードに変換できないASCIIデータを受信した
C051一括読出し・書込みの点数が許容範囲外(ワード単位)
C052一括読出し・書込みの点数が許容範囲外(ビット単位)
C053ランダム読出し・書込みの点数が許容範囲外(ビット単位)
C054ランダム読出し・書込みの点数が許容範囲外(ワード・ダブルワード単位)
C055ファイルデータの読出し・書込みサイズが許容範囲外
C056読出し・書込みの要求が最大アドレスを超えている
C057要求データ長がキャラクタ部(テキストの一部)のデータ数と合わない
C058ASCII→バイナリ変換後の要求データ長が、キャラクタ部のデータ数と合わない
C059コマンド・サブコマンドの指定誤り、または相手の機器で使えない機能を実行した
C05A指定したデバイスに読出し・書込みできない
C05B指定したデバイスに読出し・書込みできない
C05C要求内容に誤りがある(例:ワードデバイスへのビット単位の読出し・書込み)
C05Dモニタ登録をしないでモニタ要求をした
C05E監視タイマの時間内にアクセス先から応答が返らなかった
C05Fアクセス先に対して実行できない要求
C060ビットデバイスに対する要求内容に誤りがある(データの指定誤りなど)
C061要求データ長がキャラクタ部のデータ数と合わない
C06F交信データコードの設定と異なるコードの要求を受信した(バイナリ設定でASCIIを受信など)
C070アクセス先がデバイスメモリの拡張指定に対応していない
C0B5CPUユニットで扱えないデータを指定した
C200リモートパスワードが一致しない
C201リモートパスワードでロックされている
C204リモートパスワードのアンロックを要求した機器と異なる機器からの要求
4000〜4FFFCPUユニットが検出したエラー(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通信プロトコルリファレンスマニュアル」や各ユニットのマニュアルを参照してください。

この記事へのコメント