很多工程师一开口就问PLC怎么通信,但通信这两个字涵盖的范围很大。西门子PLC的通信需求归根结底就三类:一是同系列CPU之间,比如两台S7-1200之间互传数据;二是PLC与HMI之间,即触摸屏如何读写PLC内部变量;三是PLC与第三方设备之间,比如和变频器、智能仪表交换数据。先搞清楚自己的需求属于哪一类,再谈方案选型,否则很容易走弯路。
S7协议是西门子私有协议,同厂商设备之间对接顺畅,但第三方设备对接时常走不通。它分单边通信和双边通信两种模式:单边通信类似打电话,由一方主动发起读写;双边通信类似对讲机,双方都能主动收发。需要提醒的是,不少设备商对S7协议的实现并非完全标准,这是现场连接失败的常见原因之一。另外一个高频踩坑点是S7-200 SMART的PN接口只能作为智能设备使用,不能作为控制器,如果把SMART配置成控制器去连S7-1200,另一端无论如何都连不上。
PROFINET的调试重点在配置而非编程,标准流程就三步:安装GSD文件、在网络视图中拖拽组态、为每个从站分配设备名称。其中设备名称是关键一环:名称没有分配或分配错误时,PN从站会直接显示故障状态且无法通讯,而很多新手会误以为硬件坏了。排查PN问题时,先核对设备名称和实际组态是否一一对应,再看IP地址是否冲突。
Modbus问世多年,但凭借开放和简单至今仍是PLC与第三方设备对接的常用方案。选型原则很直接:设备集中在同一控制柜或同一车间、有以太网条件时用Modbus TCP;距离长、没有网线时用Modbus RTU走RS485。编程上S7-1200通过MB_CLIENT指令即可发起读写,注意REQ触发沿的管理,避免指令反复触发导致通讯阻塞。
现场通信中断不要急着换设备,按四个层次逐步排查效率更高:
总结下来,搞定西门子PLC通信只需要想明白三件事:通信对象是谁、通信方式选哪种、协议本质是什么。把这三点理清楚,再配合上面的四步排查法,绝大部分现场通信问题都能快速定位。