SLMP(Seamless Message Protocol)是三菱 PLC 的以太网通信协议,上位机可以通过它读写 PLC 的软元件。相比专用协议,SLMP 的好处是报文格式公开,用任何能发 TCP 的语言都能实现。
通信前提
PLC 侧设置 IP 地址和端口号,开放 SLMP 连接。设置为 TCP 时,PLC 是服务端,上位机主动连接。
报文结构(以读字软元件为例)
请求帧包含:副头部(固定值)、网络号、PC 号、请求目标模块 I/O 号、请求目标模块站号、请求数据长度、监视定时器、指令、子指令、起始软元件编号、软元件代码、读取点数。
响应帧包含:结束代码(0 表示正常)和读到的数据。
软元件代码是关键:D 寄存器对应特定代码,M、X、Y 各有各的代码。代码写错不会报连接错误,而是返回非 0 的结束代码。
调试要点
一、先确认 TCP 连接能建立。用网络调试工具连 PLC 的端口,能连上说明网络层没问题。
二、收到返回后先看结束代码。结束代码不为 0 时,查手册对应表能直接定位问题类型,比自己猜快得多。
三、注意字节序。SLMP 报文里的多字节字段是小端序,自己组包时最容易在这里出错。
四、监视定时器不要设太短。PLC 处理需要时间,设太短会频繁超时,尤其在 PLC 处于高负载时。
上位机实现的建议
把连接参数和地址做成配置文件,不要硬编码。调试阶段把每次收发的原始报文以十六进制打印出来,查问题时对照手册逐字节比,比看代码逻辑有效得多。
必须做的容错
一、连接断开自动重连。工业现场网络抖动是常态,一次断开就停止通信的设计不能用。
二、读写超时保护。等待响应必须有超时退出,否则一次网络异常会让整个上位机卡死。
三、写操作要二次确认。SLMP 可以直接改写 D 寄存器和 M 位,一旦地址算错会直接改到运行中的控制参数。生产环境下对写操作要做范围校验。
四、区分通信失败和数据异常。通信失败是链路问题,数据异常可能是 PLC 程序的问题,两者的处置方式完全不同。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。