3. EtherNet/IP协议概述
要真正理解 EtherNet/IP,不能只把它当成“跑在以太网上的工业协议”。它本质上是 CIP(Common Industrial Protocol,通用工业协议) 在 TCP/IP 与以太网之上的实现。CIP 提供统一的对象模型、服务语义和设备行规,而 EtherNet/IP 负责把这些 CIP 报文封装进标准以太网帧,从而让控制器、变频器、远程 IO、机器人等设备在同一套语义下互操作。理解 CIP 体系,是理解 EtherNet/IP、DeviceNet、ControlNet 三者关系的钥匙。
一、CIP协议体系:面向对象的统一语义层
CIP 是一个独立于底层网络的应用层协议。它不关心报文最终走的是以太网、CAN 还是 ControlNet,只定义“设备如何被描述、如何被访问、如何交换数据”。其核心是对象模型:每个 CIP 设备都由一组对象构成,对象包含属性(数据)、服务(可执行操作)和实例(具体实现)。
- 标识对象(Identity Object,0x01):描述厂商 ID、设备类型、产品代码、版本、序列号,是设备“身份证”。
- 消息路由对象(Message Router,0x02):把收到的服务请求分发到目标对象,是 CIP 的“交通枢纽”。
- 连接管理器(Connection Manager,0x06):管理显式连接与隐式 I/O 连接,负责建立、维护和关闭连接。
- 应用对象:如 Assembly(0x04)、Parameter(0x0F)、Motor Data、Position Controller 等,由设备行规定义。
CIP 提供两类通信方式:显式消息(Explicit Messaging) 用于配置、诊断、参数读写,请求-应答式,可靠性高;隐式消息(Implicit Messaging) 用于实时 I/O 数据交换,基于连接,周期性或状态变化触发,强调低延迟与确定性。所有 CIP 网络都遵循这一对通信模型,区别只在于底层承载方式。
二、EtherNet/IP在CIP体系中的位置
EtherNet/IP 是 CIP 在 TCP/IP + Ethernet 上的适配层。它把 CIP 报文封装为 EtherNet/IP 报文,再交给 TCP 或 UDP 传输:
- 显式消息:使用 TCP 端口 44818,面向连接、可靠传输,适合配置与诊断。
- 隐式 I/O 消息:使用 UDP 端口 2222,面向数据报,配合组播/单播,适合实时 I/O。
- 封装协议:EtherNet/IP 封装头包含命令、长度、会话句柄、状态、发送方上下文等字段,用于在以太网上承载 CIP。
因此,EtherNet/IP 并不是“另一个协议”,而是 CIP 的一个网络适配层。它继承了 CIP 的对象模型、服务集和设备行规,同时利用以太网的带宽、交换能力和 IP 路由能力,把 CIP 从现场总线扩展到企业级网络。
三、与DeviceNet、ControlNet的关系
三者同属 CIP 家族,关系可以概括为“同一应用层,不同网络层”。DeviceNet 面向设备级,成本低、布线简单,适合传感器、按钮、小型 IO;ControlNet 面向控制级,强调确定性、冗余与时间片调度,适合 PLC 之间、PLC 与远程 IO 的高速控制;EtherNet/IP 面向信息级与控制级融合,带宽大、兼容标准以太网,适合大数据量、跨网段、与 IT 系统集成的场景。
| 对比项 | EtherNet/IP | DeviceNet | ControlNet |
|---|---|---|---|
| 应用层 | CIP | CIP | CIP |
| 物理层/链路层 | Ethernet + TCP/IP | CAN | 同轴/光纤,CTDMA |
| 典型速率 | 100 Mbps / 1 Gbps | 125/250/500 kbps | 5 Mbps |
| 典型拓扑 | 星型、环网、线性 | 干线-分支 | 干线-分支、冗余 |
| 实时性机制 | QoS、交换、组播 | CAN 优先级仲裁 | 时间片调度 |
| 典型应用 | 控制器、机器人、远程 IO、MES 集成 | 传感器、执行器、小型 IO | PLC 互连、高速远程 IO |
四、案例场景:一条产线的三层网络
某汽车零部件产线采用三层结构:信息层使用 EtherNet/IP,连接 PLC、HMI、SCADA 与 MES;控制层使用 ControlNet,连接主 PLC 与远程 IO 机架,保证扫描周期稳定;设备层使用 DeviceNet,连接变频器、阀岛、光电传感器。三层网络通过网关或 PLC 的通信模块实现 CIP 路由,上层 EtherNet/IP 控制器可以直接访问下层 DeviceNet 设备的对象,无需为每种网络单独编写驱动。
五、常见误区与复盘
- 误区一:EtherNet/IP 就是 TCP/IP 上的 Modbus。 两者语义完全不同。EtherNet/IP 使用 CIP 对象模型与服务,不是寄存器地址映射。
- 误区二:EtherNet/IP 只能走 TCP。 显式消息走 TCP,隐式 I/O 走 UDP,二者缺一不可。
- 误区三:DeviceNet 和 EtherNet/IP 不能互通。 通过 CIP 路由或网关,二者可以在对象层互通。
- 误区四:ControlNet 已被淘汰。 在强确定性、冗余控制场景中,ControlNet 仍有应用价值,且与 EtherNet/IP 同属 CIP,迁移成本可控。
# 典型 EtherNet/IP 显式消息端口与 CIP 对象访问示例
# 显式消息:TCP 44818
# 隐式 I/O:UDP 2222
# 读取 Identity 对象实例 1 的属性 1(厂商 ID)
CIP Service: Get_Attribute_Single (0x0E)
Class: 0x01 (Identity Object)
Instance: 0x01
Attribute: 0x01
# 建立隐式 I/O 连接
CIP Service: Forward_Open (0x54)
Connection Type: Class 1 (UDP)
RPI: 10 ms
掌握 CIP 体系后,再学习 EtherNet/IP 的报文封装、连接建立与对象访问,就会顺理成章:所有网络差异都被封装在底层,应用层始终面对同一套 CIP 语义。这也是 EtherNet/IP 能够成为主流工业以太网协议的根本原因。