2. MERLIC与PLC通信基础

在MERLIC与PLC集成的工程实践中,通信协议的选择往往决定了整个视觉系统的响应速度、部署复杂度和后期维护成本。很多工程师在项目初期习惯性地沿用自己最熟悉的协议,结果在联调阶段才发现数据刷新率不够、地址映射混乱,或者PLC侧根本没有对应的通信资源。要避免这类返工,需要先理解四种主流协议在MERLIC集成场景中的真实定位,再结合产线节拍、数据量和现有硬件条件做出选型。

四种协议的本质差异

MERLIC作为机器视觉软件,对外通信的核心需求是:把视觉检测结果(OK/NG、测量值、坐标、缺陷类别等)可靠地送到PLC,同时接收PLC发来的触发信号、配方切换指令或工位状态。围绕这个需求,四种协议的能力边界差异明显。

OPC UA是平台无关的、面向信息模型的通信标准。MERLIC内置OPC UA服务器,PLC若支持OPC UA客户端(如西门子S7-1500系列、倍福TwinCAT 3),可以直接读写MERLIC暴露的变量节点。它的优势在于语义化地址(如ns=2;s=Merlic.Result.InspectionOK),不需要手工维护寄存器映射表,适合数据种类多、结构复杂的场景。代价是通信栈较重,典型循环周期在10~50 ms量级,对微秒级同步要求不适用。

Modbus TCP是最轻量的方案。MERLIC通过Modbus TCP插件作为服务器运行,PLC作为客户端读写保持寄存器。地址是纯数字的(如40001对应第一个保持寄存器),需要工程师自己建立“寄存器地址—视觉结果”的对照表。它的优点是几乎所有PLC都支持,配置简单,周期可以做到5~20 ms;缺点是数据类型只有16位寄存器,浮点数和字符串需要拆分成多个寄存器传输,且没有内置的语义描述。

Profinet是西门子主导的实时工业以太网,属于现场总线级协议。MERLIC本身不直接作为Profinet从站,通常需要借助支持Profinet的工业PC通信卡或网关,把MERLIC结果映射到Profinet的IO数据区。它的实时性最好,循环周期可低至1 ms甚至更短,适合与运动控制强耦合的场景,例如视觉引导机器人抓取。但集成链路最长,需要额外的硬件和GSDML文件配置。

EtherNet/IP是罗克韦尔(Allen-Bradley)体系的主流协议,基于CIP。与Profinet类似,MERLIC通常通过网关或支持EtherNet/IP的通信模块接入,使用隐式消息(Implicit Messaging)传输周期性IO数据。在北美汽车、包装产线中常见,周期通常在2~10 ms。若产线PLC是ControlLogix或CompactLogix系列,选EtherNet/IP比Modbus TCP更自然,因为可以直接使用Producer/Consumer标签通信。

MERLIC 与 PLC 四种通信协议集成路径对比 MERLIC 视觉检测结果 OK/NG · 测量值 坐标 · 缺陷类别 OPC UA 语义化节点 · 内置服务器 周期 10~50 ms Modbus TCP 寄存器映射 · 插件服务器 周期 5~20 ms Profinet 需网关/通信卡 · IO数据区 周期 1~10 ms EtherNet/IP 需网关 · 标签通信 周期 2~10 ms S7-1500 / TwinCAT 原生 OPC UA 客户端 通用 PLC 几乎所有品牌支持 西门子 PLC S7-1200/1500 · ET200 罗克韦尔 PLC ControlLogix / CompactLogix 选型核心:PLC品牌与型号 → 可用协议栈 → 节拍要求 → 数据复杂度 → 是否需要额外网关硬件 周期数值为典型工程参考范围,实际取决于网络负载、PLC扫描周期与数据量

选型依据:从PLC侧倒推

选型的第一步不是看MERLIC支持什么,而是确认PLC侧有什么。如果产线用的是西门子S7-1500且固件版本在V2.0以上,OPC UA客户端是内置的,直接启用即可,不需要额外授权(部分型号需确认许可证)。如果PLC是S7-1200,OPC UA客户端需要固件V4.4以上且购买对应授权,否则只能走Modbus TCP或Profinet。罗克韦尔的CompactLogix 5380系列原生支持EtherNet/IP,但OPC UA需要额外模块,此时选EtherNet/IP更合理。

第二步看节拍。假设一个视觉工位的检测周期是80 ms,PLC需要在检测完成后20 ms内拿到结果并驱动分拣气缸。如果走OPC UA,服务器发布周期设为20 ms,加上网络传输和PLC客户端处理,端到端延迟大约在30~60 ms,勉强满足;如果走Modbus TCP,轮询周期设为10 ms,端到端延迟可以控制在15~30 ms,余量更充足。但如果节拍要求端到端小于5 ms,就必须考虑Profinet或EtherNet/IP的IO隐式通信,此时MERLIC侧需要配置网关把结果写入IO数据区。

第三步看数据复杂度。如果只需要传输一个OK/NG布尔量和一个测量值(浮点数),Modbus TCP用两个保持寄存器就能搞定:寄存器40001存状态字(0=NG,1=OK),40002和40003拼成32位浮点数。但如果要传输缺陷类别字符串(如“划痕”“气泡”“脏污”)、多个ROI的坐标和角度,Modbus的寄存器映射会变得非常冗长,维护困难。OPC UA的节点化地址在这种场景下优势明显,PLC侧可以直接读取Merlic.Result.DefectType这样的字符串节点,不需要手工拆分。

典型配置示例:Modbus TCP寄存器映射

以MERLIC Modbus TCP服务器与一台三菱FX5U PLC通信为例,假设视觉结果包含:检测状态(OK/NG)、测量宽度(浮点,单位mm)、缺陷代码(整数,0=无缺陷,1=划痕,2=气泡)。MERLIC侧在“通信”配置中启用Modbus TCP服务器,监听502端口,定义保持寄存器起始地址为0(对应PLC侧40001)。

寄存器映射表(MERLIC侧定义):
40001  InspectionStatus   16位整数   0=NG, 1=OK
40002  Width_High         16位整数   浮点高16位
40003  Width_Low          16位整数   浮点低16位
40004  DefectCode         16位整数   0/1/2

PLC侧读取逻辑(FX5U梯形图伪代码):
- 触发视觉:将M100置1,MERLIC收到触发后执行检测
- 等待完成:监视40001是否变为1或0
- 读取宽度:将40002和40003组合为32位浮点,存入D100
- 读取缺陷:将40004存入D101
- 判断:若40001=0,则D101的值决定报警类型

这个示例中,浮点数拆分是Modbus TCP集成的关键细节。MERLIC和PLC对32位浮点的字节序可能不同,常见的有大端(高字在前)和小端(低字在前)。如果PLC读到的宽度值明显异常(如1.5 mm变成-0.0000001),首先检查字节序设置。MERLIC的Modbus插件通常提供“字交换”选项,勾选后可以匹配不同PLC的字节序习惯。

Profinet与EtherNet/IP的集成要点

这两种协议在MERLIC侧不直接作为从站运行,需要借助网关。以Profinet为例,常见做法是使用一台支持Profinet从站和TCP/IP客户端功能的网关(如Hilscher netTAP或西门子IE/PB Link),网关作为Profinet从站接入PLC的IO系统,同时作为TCP客户端连接MERLIC的TCP/IP接口。MERLIC把结果以JSON或简单字符串格式发给网关,网关再映射到Profinet的输入字节区。PLC侧看到的是一段连续的IO数据,例如IB100~IB115对应16字节的视觉结果。

这种架构的优点是实时性由Profinet保证,PLC不需要处理复杂的应用层协议;缺点是增加了网关这个故障点,且数据格式需要在网关中做一次转换配置。EtherNet/IP的集成思路类似,网关作为EtherNet/IP适配器,PLC通过隐式消息读写网关的输入/输出 assembly。如果PLC是罗克韦尔体系,也可以考虑使用MERLIC的EtherNet/IP插件(若版本支持)直接作为适配器,减少网关环节。

选型速查:PLC是西门子S7-1500且节拍宽松 → 优先OPC UA;PLC品牌杂、只需传少量数据 → Modbus TCP;节拍小于10 ms且PLC是西门子 → Profinet+网关;PLC是罗克韦尔 → EtherNet/IP+网关或原生插件。无论选哪种,先在MERLIC的通信配置中确认协议插件已启用,再用PLC侧的变量表或寄存器监视功能验证第一个握手信号。

通信建立后的验证方法

协议配置完成后,不要直接跑整线程序。先做最小闭环验证:在MERLIC中手动触发一次检测,观察PLC侧对应地址是否在预期时间内变化。以Modbus TCP为例,用PLC编程软件在线监视40001的值,手动在MERLIC中执行一次“OK”检测,40001应从0变为1;再执行一次“NG”检测,应变为0。如果值不变,检查MERLIC的Modbus服务器是否处于“运行”状态、PLC的Modbus客户端指令是否使能、以及防火墙是否放行了502端口。

对于OPC UA,可以用UaExpert等客户端工具先连接MERLIC的服务器端点(通常为opc.tcp://<MERLIC_IP>:4840),浏览节点树确认变量存在且可读。然后再配置PLC的OPC UA客户端。这样可以把问题隔离在MERLIC侧或PLC侧,避免两端同时排查。Profinet和EtherNet/IP则建议先用网关厂商的配置工具做IO数据回环测试,确认网关与PLC的IO通信正常后,再接入MERLIC的数据。

通信协议的选择没有绝对优劣,只有与项目条件匹配与否。把PLC型号、节拍余量、数据结构和现有网络条件四个因素列出来,对照本节给出的协议特性逐项打分,通常能在半小时内锁定最合适的方案,避免在联调阶段反复更换协议带来的时间浪费。