上位链路的错误响应 E0〜E6 的含义与处理
依据手册和实机确认结果,整理基恩士 KV 系列 PLC 通过上位链路返回的错误响应(E0、E1、E2、E4、E5、E6)的含义与主要原因。
更新
上位链路的命令无法正常处理时,PLC 不会返回值或 OK,而是返回由 E 加 1 位数字组成的错误代码。
RD 命令 DM65535 软元件 超出范围CR 结束符 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 DM65535 | E0 | 只超出 DM 范围(00000〜65534)1 个 |
RD DM65536 | E1 | 超出 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)