// LEARN · 上位链路入门

上位链路的错误响应 E0〜E6 的含义与处理

依据手册和实机确认结果,整理基恩士 KV 系列 PLC 通过上位链路返回的错误响应(E0、E1、E2、E4、E5、E6)的含义与主要原因。

更新

上位链路的命令无法正常处理时,PLC 不会返回值或 OK,而是返回由 E 加 1 位数字组成的错误代码。

命令
RD 命令
␣
DM65535 软元件 超出范围
CR 结束符
错误响应 4 个字符
E0 错误代码 软元件编号异常
CR LF 结束符

错误响应只有 2 个字符的代码和 CR LF,不会告诉你是哪条命令的哪一项出了问题。

错误代码一览

代码含义主要原因
E0软元件编号异常软元件、存储体、单元或地址的编号超出范围。指定了程序中未使用的 T/C/CTH/CTC 编号。未登录监视就发送了 MBR/MWR
E1命令异常发送了不支持的命令,或命令格式有误
E2程序未登录在未登录程序或 RUN/PROG 开关处于 PROG 的状态下发送了 M1(切换到 RUN)
E4禁止写入试图修改写保护程序中 T/C/CTC 的设定值
E5本体错误未解除 CPU 错误就发送了 M1
E6无注释RDC 没有登录注释,或因高负载无法读取注释

E3 没有定义。

E0 与 E1 的分界

软元件编号超出范围时,返回的不一定是 E0。在 KV-7500 实机上确认的结果如下。

命令结果原因
RD DM65535E0只超出 DM 范围(00000〜65534)1 个
RD DM65536E1超出 16 位的编号被视为格式错误

另外,在 KV-7500 上指定高速计数器 CTH/CTC 时返回 E1。机型不支持的软元件可能会作为格式错误返回。

定时器与计数器的 E0

读取梯形图程序中未使用的 T 或 C 时,即使是只读 1 点的 RD T0 也会返回 E0。当前值 TC/CC 和设定值 TS/CS 即使是未使用的编号也能读取。

监视的 E0 与 E1

读取监视(MBR/MWR)之前,需要先用 MBS/MWS 登录。未登录就读取会返回 E0。PLC 重新上电等导致登录内容丢失时也一样。

KV STUDIO 模拟器对监视命令即使格式正确也返回 E1。请认为模拟器无法使用监视功能。

用 KcpX 获取错误代码

在 KcpX 中,PLC 返回错误响应时会抛出 HostLinkException。通过 ErrorCode 属性(HostLinkErrorCode 枚举)可以取出代码,从而按代码分别处理。

using KcpXLib;
using KcpXLib.Enums;
using KcpXLib.Exceptions;

try
{
    short[] dm = kcpx.BatchRead<short>(Prefix.DM, "65000", 1000);
}
catch (HostLinkException ex) when (ex.ErrorCode == HostLinkErrorCode.E0)
{
    // 软元件编号超出范围,或未使用的 T / C
}
catch (HostLinkException ex) when (ex.ErrorCode == HostLinkErrorCode.E1)
{
    // 格式错误,或连接对象不支持的命令、软元件
}

KcpX 在发送前还会检查编号的写法。给 B 这类十六进制软元件传入非十六进制的编号,或为继电器指定 16 以上的位编号时,会在发送到 PLC 之前抛出 DeviceAddressException。PLC 没有响应时抛出 TimeoutException。

下一篇文章介绍软元件的范围和一次可读写点数的上限。

出处

  • 基恩士 KV-EP21V/KV-8000(A)/KV-7500/KV-5500/KV-NC1EP 用户手册 EtherNet/IP 功能(日文版)第 8 章 p.8-9, 8-15〜8-17, 8-23, 8-36
  • 使用 KcpX 在 KV-7500 实机和 KV STUDIO 模拟器上的确认结果(2026-10-11)