FINS 終了コード(応答コード)一覧と対処方法
オムロンのPLC(CJ/CS/NJ/NXシリーズ)とFINS通信したときに返ってくる終了コード(応答コード)の意味と、よくある原因・対処をまとめました。
0401、1101、1103、2203などのエラーが返ってきたときに、まず確認してください。
終了コードの見方
FINSの応答では、コマンドコード(2バイト)の後ろの2バイトが終了コードです。1バイト目が主コード(MRES)、2バイト目が副コード(SRES)で、0000なら正常終了です。
終了コードの一部のビットは、エラーの種類ではなく状態を表すフラグです。フラグを除いた値で一覧を見てください。
| ビット | 内容 |
|---|---|
| 主コードのビット7 | ネットワーク中継エラー。中継先でエラーが起きたことを表し、応答の後ろに中継エラーの情報が付きます |
| 副コードのビット6 | CPUユニットの軽故障が発生している(例:0040 は正常終了+軽故障。コマンド自体は正常に終わっています) |
| 副コードのビット7 | CPUユニットの重故障が発生している |
よく出る終了コードと対処
| 終了コード | 意味 | よくある原因と対処 |
|---|---|---|
| 0401 | 未定義コマンド | 相手の機器が対応していないコマンド。NJ/NXシリーズが対応するFINSコマンドはCJシリーズより少ないので、マニュアルで対応コマンドを確認します |
| 1101 | エリア種別なし | メモリエリアコードが違う。CIO=B0、W=B1、H=B2、A=B3、D=82(ワード指定の場合)などを確認します |
| 1103 | アドレス範囲外指定エラー | 先頭アドレスがエリアの範囲外。EMのバンク番号や、PLCにないエリアを指定していないか確認します |
| 1104 | アドレス範囲オーバ | 先頭アドレス+要素数がエリアの範囲を超えている。要素数を減らします |
| 1001 / 1002 | コマンド長オーバ/不足 | 送ったデータの長さがコマンドの形式と合わない |
| 2203 | 本体モードが違う(プログラムモード) | プログラムモードでは実行できないコマンド。運転状態を確認します |
| 2101 | リードオンリー | 書込みできないエリア(読出し専用)に書込みをした |
| 0205 | 応答タイムアウト | 相手から応答が返らなかった。ノードアドレス、ネットワーク、相手の電源・状態を確認します |
| 0201 / 0202 | 相手ノード未加入/該当ユニットなし | 宛先のネットワーク・ノード・号機アドレス(DNA・DA1・DA2)が正しくない |
FinsMes2026で応答の意味をすぐ確認
オムロンPLC向けのFINS通信試験ツールです。Free版でFINSコマンドの送信と終了コードの確認ができます。
- Pro版は終了コードの意味を自動で表示し、軽故障・重故障・中継エラーのフラグも表示
- Pro版のFINSサーバー機能で、異常の終了コードや無応答を返してクライアント側の異常処理を試験
- FINS/UDP・FINS/TCPに対応
終了コード一覧
FINSコマンドの応答で返る主な終了コードです。主コードごとに分類しています。
| 終了コード | 内容 |
|---|---|
| 00:正常終了 | |
| 0000 | 正常終了 |
| 0001 | サービス中止 |
| 01:自ノードエラー | |
| 0101 | 自ノードがネットワークに加入していない |
| 0102 | トークンタイムアウト |
| 0103 | 再送オーバ |
| 0104 | 送信許可フレーム数オーバ |
| 0105 | ノードアドレス範囲設定エラー |
| 0106 | ノードアドレス二重設定エラー |
| 02:相手ノードエラー | |
| 0201 | 相手ノードがネットワークに加入していない |
| 0202 | 該当ユニットなし |
| 0203 | 第3ノードがネットワークに加入していない |
| 0204 | 相手ノードビジー |
| 0205 | 応答タイムアウト |
| 03:通信コントローラ異常 | |
| 0301 | 通信コントローラ異常 |
| 0302 | CPUユニット異常 |
| 0303 | 該当コントローラ異常 |
| 0304 | ユニット番号設定異常 |
| 04:サービス未サポート | |
| 0401 | 未定義コマンド |
| 0402 | 機種・バージョンがサポートしていない |
| 05:ルーチングテーブル関連 | |
| 0501 | 相手アドレス設定エラー |
| 0502 | ルーチングテーブル未登録 |
| 0503 | ルーチングテーブル異常 |
| 0504 | 中継回数オーバ |
| 10:コマンドフォーマットエラー | |
| 1001 | コマンド長オーバ |
| 1002 | コマンド長不足 |
| 1003 | 要素数・データ数が一致しない |
| 1004 | コマンドフォーマットエラー |
| 1005 | ヘッダエラー |
| 11:パラメータエラー | |
| 1101 | エリア種別なし |
| 1102 | アクセスサイズエラー |
| 1103 | アドレス範囲外指定エラー |
| 1104 | アドレス範囲オーバ |
| 1106 | 該当プログラム番号なし |
| 1109 | 相関関係エラー |
| 110A | データ重複エラー |
| 110B | 応答長オーバ |
| 110C | パラメータエラー |
| 20:読出し不可 | |
| 2002 | プロテクト中 |
| 2003 | 該当テーブルなし |
| 2004 | 該当データなし |
| 2005 | 該当プログラムなし |
| 2006 | 該当ファイルなし |
| 2007 | 照合異常 |
| 21:書込み不可 | |
| 2101 | リードオンリー |
| 2102 | プロテクト中・データリンクテーブル書込み不可 |
| 2103 | 登録不可 |
| 2105 | 該当プログラムなし |
| 2106 | 該当ファイルなし |
| 2107 | 同一ファイル名あり |
| 2108 | 変更不可 |
| 22:現在のモードでは実行不可 | |
| 2201 | 実行中のため実行不可 |
| 2202 | 運転中のため実行不可 |
| 2203 | 本体モードが違う(プログラムモード) |
| 2204 | 本体モードが違う(デバッグモード) |
| 2205 | 本体モードが違う(モニタモード) |
| 2206 | 本体モードが違う(運転モード) |
| 2207 | 指定ノードは管理ノードではない |
| 2208 | ステップ実行不可 |
| 23:該当装置なし | |
| 2301 | ファイル装置なし |
| 2302 | メモリなし |
| 2303 | 時計なし |
| 24:起動・停止不可 | |
| 2401 | テーブル未登録 |
| 25:ユニットエラー | |
| 2502 | メモリ異常 |
| 2503 | I/O設定異常 |
| 2504 | I/O点数オーバ |
| 2505 | CPUバス異常 |
| 2506 | I/O重複 |
| 2507 | I/Oバス異常 |
| 2509 | SYSMAC BUS/2異常 |
| 250A | 高機能ユニット異常 |
| 250D | SYSMAC BUS番号重複 |
| 250F | メモリ異常 |
| 2510 | SYSMAC BUS終端抵抗なし |
| 26:コマンドエラー | |
| 2601 | プロテクトなし |
| 2602 | パスワード不一致 |
| 2604 | プロテクト中 |
| 2605 | サービス実行中 |
| 2606 | サービス停止中 |
| 2607 | 実行権なし |
| 2608 | 実行前に必要な設定がされていない |
| 2609 | 必要な項目が設定されていない |
| 260A | 指定番号が定義済み |
| 260B | 異常解除不可 |
| 30:アクセス権エラー | |
| 3001 | アクセス権なし |
| 40:中断 | |
| 4001 | サービス中断 |
FINS/TCPのヘッダのエラー
FINS/TCPでは、FINSの終了コードとは別に、FINS/TCPヘッダのエラーコード欄でコネクションのエラーが返ります。ノードアドレスの交換で失敗したときなどに確認してください。
| エラーコード | 内容 |
|---|---|
| 00000000 | 正常 |
| 00000001 | ヘッダが「FINS」ではない |
| 00000002 | データ長が長すぎる |
| 00000003 | サポートしていないコマンド |
| 00000020 | すべてのコネクションが使用中 |
| 00000021 | 指定したノードはすでに接続されている |
| 00000022 | 保護されたノードに、指定外のIPアドレスからアクセスした |
| 00000023 | クライアントのFINSノードアドレスが範囲外 |
| 00000024 | クライアントとサーバーで同じFINSノードアドレスを使っている |
| 00000025 | 割り当てられるノードアドレスがない |
応答が返ってこないとき
- FINS/UDPのポート番号(初期値は9600)と、宛先のIPアドレスが合っているか
- 宛先ノードアドレス(DA1)が、PLCのFINSノードアドレスと合っているか
- 送信元ノードアドレス(SA1)の設定。PLCがIPアドレス変換に「自動生成方式」を使っている場合、応答はSA1から求めたIPアドレスに返るので、SA1をPCのIPアドレスの第4オクテットに合わせます
- NJ/NXシリーズでは、FINSで読み書きするメモリ(CJ互換のメモリ)に変数が割り付けられているか
- PCのファイアウォールで、UDPの受信が止められていないか
よくある質問
FINSの終了コード1103は何のエラーですか?
アドレス範囲外指定エラーです。読み書きの先頭アドレスが、指定したメモリエリアの範囲の外にあります。EMのバンク番号や、PLCにないエリアを指定していないか確認してください。
終了コードが0040になるのはエラーですか?
コマンド自体は正常に終わっています。副コードのビット6はCPUユニットの軽故障のフラグで、0040は正常終了に軽故障のフラグが付いた状態です。
FINS/UDPで応答が返ってこないのはなぜですか?
ポート番号(初期値9600)、宛先ノードアドレス、送信元ノードアドレスの設定が合っていないことが多い原因です。PLCがIPアドレスの自動生成方式を使っている場合は、送信元ノードアドレスをPCのIPアドレスの第4オクテットに合わせてください。
※終了コードの内容は機種によって一部異なります。正式な内容は、オムロンの「FINSコマンド リファレンスマニュアル」や各ユニットのマニュアルを参照してください。
