蓝易云:CIP或者EtherNET/IP中的
在 CIP / EtherNet/IP 里,PATH(更准确叫 EPATH / CIP Path)不是“文件路径”,而是一个二进制的寻址与路由描述:它告诉对端设备两件事——
- 你要访问设备内部的哪个对象/数据点(对象模型寻址)
- 如果设备背后还有网络/背板/子模块,消息该怎么转发过去(路由寻址)🙂
你可以把它理解成 CIP 世界里的“内部 URI + 转发路由”,用于把一次显式消息精确送到目标位置。

1)PATH 在 CIP 里的两个核心用途
A. Request Path(请求路径):定位“对象/属性/标签”
CIP 的数据以“对象模型”组织:Class(类)→ Instance(实例)→ Attribute(属性)。
因此很多服务(如 Get_Attribute_Single、Set_Attribute_Single、Read Tag/Write Tag 等)都需要 PATH 来说明你要操作谁。
- 典型表达含义:
- “访问 Class=0x04(Assembly) 的 Instance=100 的 Attribute=3”
- 在 Logix 体系里,还常见 Symbolic Segment(符号段):用“标签名”寻址,例如
MyTag,再配合数组元素索引等。
B. Routing Path(路由路径):告诉“怎么走到那个模块/网络”
当你访问的目标不在当前网口直连设备上,而是在背板槽位、下挂网段、桥接网络后面时,需要 PATH 里带“怎么走”的信息。最典型的是 Port Segment(端口段):用“端口号 + 链路地址(link address)”成对描述。
- 常见语义示例(人类可读):
Port 1, Link 0:从当前通信模块进入背板端口 1,去槽位 0 的 CPU(很多场景会写成[1,0])😄Port X, Link = 某IP:下一跳是某个以太网端口,链路地址是目标 IP(用于桥接/多跳)
2)PATH 由“段(Segment)”拼出来:像乐高一样组合
PATH 不是一个固定字段,而是一串 Segment 的组合。不同段负责不同维度的定位。
| Segment 类型 | 解决的问题 | 常见内容(直观理解) | 典型场景 |
|---|---|---|---|
| Logical Segment | 设备内部对象怎么找 | Class / Instance / Attribute / Connection Point | 读写对象属性、I/O 连接点 |
| Symbolic Segment | 用名字怎么找 | 标签名(Tag)、程序作用域名等 | Logix 读写标签 |
| Port Segment | 消息怎么转发 | Port ID + Link Address | 背板槽位、桥接到下级网络 |
| Network/Other Segment | 补充网络/参数 | 一些网络相关寻址/参数化段 | 特定设备/厂商扩展 |
一句话:Logical/Symbolic 解决“找谁”,Port 解决“怎么过去”。这也是为什么同一个“读标签”动作,在跨模块时经常要同时带“路由段 + 标签段”。
3)三个最常见的“PATH 长相”(帮助你对号入座)
- 直连设备读对象属性:PATH 主要是
Class/Instance/Attribute - 直连 Logix 读标签:PATH 主要是
Symbolic(TagName)(必要时加数组元素段) - 经通信模块去背板 CPU 再读标签:PATH =
PortSegment(到槽位)+Symbolic(TagName)- 这类就是典型的“先走路由、再做对象/标签定位”。
4)排障角度:为什么 PATH 经常是 EtherNet/IP 通讯的“卡点”
工程现场常见的失败并不是网络不通,而是 PATH 不匹配导致目标找不到或路由不到位:
- Port/Link 写错:路由走偏,表现为“连接建立但读不到数据”
- 对象号/实例号不对:返回对象不存在/路径段错误
- 标签作用域不对:同名 Tag 在不同程序/任务下,路径需要更精确的符号段
- 多跳桥接未启用/不支持:设备不支持作为 bridge 转发,PATH 再对也到不了
如果把 CIP 通讯当作一条供应链,PATH 就是“仓库地址 + 配送路线”。地址没错但路线错,货也到不了;路线对但地址错,同样签收失败。🙂
结论:CIP/EtherNet/IP 里的 PATH,本质是面向对象的寻址语言 + 多网络/背板的路由描述,用一串 Segment 把“去哪里”和“怎么去”一次讲清楚。你只要把它拆成“请求定位段”和“路由转发段”,理解与调试都会快一个量级。