4. EtherNet/IP网络与NX通信

EtherNet/IP 是 NX 系列控制器接入分布式控制系统时最常用的工业以太网协议之一。它并不是一种全新的物理网络,而是在标准以太网 TCP/IP 之上叠加了 CIP(Common Industrial Protocol,通用工业协议)的工业应用层协议。理解 NX 的 EtherNet/IP 通信,核心要抓住两件事:一是 CIP 对象模型如何组织数据,二是隐式报文与显式报文如何分别承担实时 I/O 和参数配置两类任务。

CIP 对象模型:数据在设备里如何被组织

CIP 把设备内部可访问的数据抽象为“对象”。每个对象由类(Class)、实例(Instance)和属性(Attribute)三级标识,访问时用“类 ID / 实例 ID / 属性 ID”定位。NX 内置 EtherNet/IP 端口时,会提供若干标准对象,例如标识对象(Identity,类 0x01)用于读取厂商、设备类型、序列号;TCP/IP 接口对象(类 0xF5)用于描述 IP 配置;以太网链路对象(类 0xF6)用于描述 MAC、速率、双工;而真正承载过程数据的是汇编对象(Assembly,类 0x04)。

汇编对象是理解 NX 与第三方设备交换标签数据的关键。它把多个变量打包成一段连续的字节缓冲区,输入汇编(通常实例 100)存放从站发往主站的数据,输出汇编(通常实例 101)存放主站发往从站的数据。每个变量在缓冲区中的位置由“字节偏移 + 位偏移”确定,数据类型决定占用长度。例如一个 NX 从站配置了 4 字节输入,其中偏移 0 是 16 位状态字,偏移 2 是 16 位计数器,那么主站读取实例 100 的前 4 字节即可解析出这两个量。配置时若偏移或长度与主站扫描列表不一致,就会出现数据错位,表现为数值跳变或始终为零。

EtherNet/IP CIP 对象模型与报文路径 NX 内置 EtherNet/IP 端口 Identity 对象 0x01 厂商/设备类型/序列号 TCP/IP 对象 0xF5 IP/掩码/网关 Ethernet Link 0xF6 MAC/速率/双工 Assembly 对象 0x04 实例 100(输入 T→O) 偏移0:状态字 / 偏移2:计数 实例 101(输出 O→T) 偏移0:命令字 / 偏移2:设定值 CIP 报文通道 隐式报文 UDP / 端口 2222 周期性、面向连接 承载 I/O 实时数据 RPI 决定刷新周期 显式报文 TCP / 端口 44818 请求-应答、非周期 读写属性、配置参数 UCMM / 类3连接 标签数据映射 变量名 ↔ 汇编偏移 第三方设备 第三方 PLC 扫描器 / 扫描列表 RPI、连接参数 HMI 触摸屏 标签绑定 / 显式读写 画面变量刷新 机器人控制器 I/O 汇编交换 握手/使能/状态 一致性检查点 偏移/长度/数据类型 RPI 与超时判定 I/O 配置 标签

隐式报文与显式报文的分工

隐式报文(Implicit Messaging)走 UDP,默认端口 2222,采用生产者/消费者模型。它不携带完整的对象路径,而是通过事先建立的连接 ID 直接传输汇编数据,因此开销小、延迟低,适合周期性 I/O。NX 作为适配器(Adapter)时,由扫描器(Scanner)发起连接,双方约定 RPI(Requested Packet Interval,请求包间隔)。RPI 越小实时性越好,但网络负载越高;常见取值为 2 ms、4 ms、10 ms。若 RPI 设为 4 ms 而实际网络抖动超过该值,扫描器会判定连接超时并报错。

显式报文(Explicit Messaging)走 TCP,默认端口 44818,采用请求-应答模型。它携带完整的 CIP 路径,可以读写任意对象的属性,例如读取 Identity 对象的序列号、修改 TCP/IP 对象的 IP 地址、访问用户自定义对象。显式报文不保证实时性,但灵活、可诊断,常用于设备上线配置、故障排查和非周期参数下发。HMI 读取一个不参与 I/O 交换的工艺参数时,通常就走显式报文。

两类报文可以并存:隐式报文负责“持续流动的过程数据”,显式报文负责“按需访问的配置与诊断数据”。在 NX 上配置时,需要先通过显式报文完成 IP 设置和对象读取,再建立隐式连接进行 I/O 交换。

NX 内置 EtherNet/IP 端口配置要点

在 Sysmac Studio 中,NX 的 EtherNet/IP 端口配置主要围绕以下几个参数展开。首先是 IP 地址、子网掩码和默认网关,它们属于 TCP/IP 接口对象,可通过旋转开关或软件设定。其次是设备标识,包括设备名称和节点地址,用于在扫描器的扫描列表中唯一识别。第三是汇编实例与数据长度,需要与第三方扫描器中的配置逐字节对齐。

一个典型的配置示例:NX 从站 IP 设为 192.168.1.20,子网掩码 255.255.255.0,节点地址 20;输入汇编实例 100,长度 8 字节;输出汇编实例 101,长度 8 字节;RPI 设为 4 ms。在第三方 PLC 的扫描列表中,需要填入相同的 IP、实例号和长度,并把 RPI 设为一致。若第三方设备只支持固定 RPI,则 NX 侧必须匹配,否则连接无法建立。

配置完成后,可通过显式报文读取 Identity 对象确认设备在线,再观察隐式连接的“连接状态”位。若连接建立但数据不更新,优先检查汇编偏移和数据类型是否与扫描列表一致。

与第三方 PLC、HMI、机器人控制器的标签数据交换

与第三方 PLC 交换数据时,通常由 PLC 作为扫描器、NX 作为适配器。PLC 侧建立扫描列表,指定 NX 的 IP、输入输出实例和长度;NX 侧则把需要交换的变量映射到汇编对象的对应偏移。例如把 NX 的“运行状态”字映射到输入汇编偏移 0,“故障代码”映射到偏移 2;把 PLC 下发的“启动命令”映射到输出汇编偏移 0,“速度设定”映射到偏移 2。双方只要偏移和类型一致,数据即可透明传输。

与 HMI 交换数据时,HMI 一般同时支持隐式 I/O 和显式标签访问。对于刷新要求高的画面变量,可绑定到隐式汇编;对于配方、参数等非周期数据,用显式报文按标签名读写更灵活。需要注意的是,HMI 的标签名与 NX 变量名之间的映射关系要在 HMI 工程中显式建立,不能依赖自动识别。

与机器人控制器交换数据时,常见做法是用隐式报文交换固定长度的 I/O 汇编,例如机器人发送“就绪”“报警”“当前位置到达”等状态位,NX 发送“使能”“启动”“目标位号”等命令位。由于机器人控制器的汇编定义往往由厂商固定,NX 侧必须严格按其字节序和位定义映射,必要时用结构体变量对齐。若机器人使用大端字节序而 NX 使用小端,还需在映射时做字节交换。

调试与验证的观察点

调试阶段建议按以下顺序观察:先用显式报文读取 Identity 对象,确认厂商 ID、设备类型和序列号可读,说明 CIP 通道正常;再检查 TCP/IP 对象中的 IP 是否与预期一致;然后建立隐式连接,观察连接状态位和 RPI 是否稳定;最后核对汇编数据,用强制或仿真方式改变输入值,确认扫描器侧数值同步变化。若出现连接超时,优先排查 RPI 是否过小、交换机是否支持组播、是否存在 IP 冲突;若数据错位,则回到汇编偏移和数据类型逐项核对。

掌握 CIP 对象模型、两类报文的分工以及汇编映射的对齐规则,是 NX 与第三方设备稳定通信的基础。实际工程中,建议把每个交换变量的名称、方向、偏移、数据类型和 RPI 整理成一张映射表,作为配置和排查的共同依据。