2. 多设备协同的通信基础
在 Studio 5000 的多设备协同场景中,两台 Logix 控制器之间的数据交换并不依赖“谁主动去读谁”,而是建立在 EtherNet/IP 的生产者/消费者模型之上。理解这一模型,是正确设置 RPI、选择组播或单播、区分隐式与显式消息的前提。本节以两台 ControlLogix/CompactLogix 控制器(示例中命名为 PLC_A 与 PLC_B)之间的标签数据交换为主线,说明通信参数如何决定数据流向与刷新节奏。
一、生产者/消费者模型:数据由“生产”驱动,而非“轮询”驱动
传统的主从轮询中,主站依次向每个从站发请求,从站被动应答。EtherNet/IP 的 CIP 通信采用生产者/消费者模型:数据源(生产者)按自己的节奏把数据打包成标签数据包发到网络上,任何需要该数据的设备(消费者)只需“订阅”这个数据包,而不必向生产者发请求。生产者与消费者之间通过 连接(Connection) 建立关系,连接由 连接 ID 标识,并携带一组通信参数。
这一模型带来两个直接结果:其一,同一份数据可以被多个消费者同时使用,生产者只发送一次,网络负载不随消费者数量线性增长;其二,数据的刷新节奏由生产者的 RPI(Requested Packet Interval,请求数据包间隔) 决定,而不是由消费者的读取频率决定。因此,配置两台控制器交换标签时,真正要协商的是“谁生产、谁消费、以多快的间隔生产、用组播还是单播传输”。
二、隐式消息与显式消息:两类通信各司其职
EtherNet/IP 上的 CIP 消息分为两类。隐式消息(Implicit Messaging)用于实时 I/O 数据交换,它不携带完整的对象寻址信息,只靠连接 ID 识别数据含义,因此报文短、开销小、周期固定,正是生产者/消费者模型下标签交换的主力。显式消息(Explicit Messaging)则是请求/应答式,报文包含完整的类、实例、属性寻址,用于配置、诊断、非周期数据读写,典型实现就是 Studio 5000 中的 MSG 指令。
两台控制器交换标签时,通常的做法是:在 PLC_A 中把需要共享的标签设为 Produced Tag,在 PLC_B 中建立对应的 Consumed Tag,二者通过一个 I/O 连接绑定,走隐式消息。若只是偶尔读取对方某个诊断计数器,则用 MSG 走显式消息更合适,不必为它建立周期连接。判断依据很简单:需要周期性、确定性刷新的过程数据用隐式;需要按需、非周期访问的数据用显式。
三、RPI 设置:刷新节奏与网络负载的平衡
RPI 是生产者发送数据包的间隔,也是消费者期望的接收周期。以 PLC_A 生产 LineStatus、RPI 设为 10 ms 为例,理论上每秒发送 100 个数据包。RPI 越小,数据越新鲜,但网络与 CPU 负载越高;RPI 越大,负载越低,但控制响应变慢。工程上常按“控制回路响应时间”反推:若某联锁要求 50 ms 内感知对方状态变化,RPI 至少应不大于 25 ms,留出网络抖动与处理余量。
需要注意的是,RPI 是请求值,实际生效值受连接双方能力与网络条件约束。在 Studio 5000 的 Module Properties → Connection 选项卡中可以看到实际 RPI 与连接状态。若连接超时(Timeout),通常表现为 Connection Fault,此时应检查 RPI 是否过小、网络是否拥塞、生产者是否正常运行。
四、组播与单播:同一份数据如何送达
当生产者发送数据时,传输方式有两种选择。组播(Multicast)下,生产者把数据发往一个组播 IP 地址(如 239.x.x.x),同一组播组内的所有消费者都能收到同一份数据,生产者只发一次,适合多个消费者共享同一标签的场景。单播(Unicast)下,生产者与每个消费者建立独立的点对点连接,各自发送一份数据,适合消费者数量少、或需要网络隔离、或交换机不支持 IGMP Snooping 的场景。
选择时可参考:消费者数量 ≥ 2 且网络交换机支持组播管理,优先组播以节省带宽;消费者只有 1 个,或网络设备对组播支持不佳,选单播更稳妥。在 Studio 5000 中,这一选择体现在 Connection 参数里的 Multicast / Unicast 选项,修改后需重新下载或重启连接生效。
五、两台控制器标签交换的配置要点
以 PLC_A 生产、PLC_B 消费为例,配置流程可归纳为:在 PLC_A 的 Controller Tags 中新建标签 LineStatus(示例为 DINT 数组,长度 4),右键选择 Edit Properties → Produced,勾选 Produce 并设置 RPI 与组播/单播;在 PLC_B 中新建同名标签 LineStatus,在属性中勾选 Consume,并指定生产者 PLC_A 的路径与连接。下载后,在 PLC_B 的 Controller Tags 中即可看到该标签的值随 PLC_A 的变化而刷新。
PLC_A 中强制修改 LineStatus[0] 的值,观察 PLC_B 中对应标签是否在数个 RPI 周期内同步变化;同时可在 Studio 5000 → Controller Properties → Connections 中查看连接状态是否为 Running,以及实际 RPI 与丢包统计。
PLC_B 中消费标签始终为 0 或报 Connection Timeout,优先检查三点:生产者标签是否已勾选 Produce、RPI 是否小于网络可承受下限、组播/单播设置是否与交换机配置匹配。显式消息 MSG 与隐式连接不要混用同一标签的刷新逻辑,否则会出现数据竞争。
掌握生产者/消费者模型、隐式与显式消息的分工、RPI 的设定依据以及组播/单播的选择逻辑,就具备了两台 Logix 控制器之间标签数据交换的通信基础。后续多设备协同中的联锁、同步与产线节拍控制,都建立在这一层通信配置之上。