乐于分享
好东西不私藏

终于有人把西门子PLC通信说明白了!

终于有人把西门子PLC通信说明白了!

📌 写在前面

网上写西门子PLC通信的文章,一抓一大把。但我看了几十篇,发现两个致命问题:

要么只会抄官方手册,通信类型罗列一大堆,看完还是不知道怎么选;

要么停留在”配置步骤”层面,出了故障还是一脸懵。

今天这篇,换个思路——以问题为导向,以选型为目的,以实战为核心


一、先”诊脉”:你的通信问题到底是哪一种?

很多人一开口就问”PLC怎么通信”,但”通信”这两个字太大了。西门子PLC的通信问题,归根结底就三类:

• 同系列CPU之间:两台S7-1200怎么传数据?

• PLC与HMI:触摸屏怎么读取PLC数据?

• PLC与第三方设备:PLC怎么和变频器、仪表通信?


二、主流方案全对比

通信方式

适用系列

推荐指数

S7通信

S7-1200/1500/300/400

⭐⭐⭐⭐⭐

Modbus RTU

全系列

⭐⭐⭐⭐

Modbus TCP

S7-1200/1500

⭐⭐⭐⭐

PROFINET

S7-1200/1500 + PN设备

⭐⭐⭐⭐⭐

OPC UA

S7-1500/1200 V4+

⭐⭐⭐⭐

USS协议

S7-200 SMART

⭐⭐⭐

⚠️ 注意:S7-200 SMART不支持S7通信!


三、S7协议怎么用?

• S7协议是西门子私有的,第三方设备对接时常走不通

• 两种模式:单边通信(打电话)和双边通信(对讲机)

• 很多设备商的S7实现不是100%标准,这是连接失败的常见原因

实战警告:S7-200 SMART的PN接口只能做智能设备,不能做控制器!如果你把SMART配置成控制器,1200那边怎么都连不上。


四、PROFINET——配置比编程更重要

三步配置:①安装GSD文件 → ②网络视图拖拽组态 → ③分配设备名称

💡 常见故障:设备名称没分配或分配错误,PN从站会显示”故障”,且无法通讯。


五、Modbus——老但不过时

选型建议:设备在一起用TCP,长距离没网线用RTU。

代码示例:

MB_CLIENT.REQ := TRUE;
MB_CLIENT.MB_MODE := 1;        // 读保持寄存器
MB_CLIENT.MB_DATA_ADDR := 40001;
MB_CLIENT.MB_DATA_LEN := 10;


六、通信故障排查四步

① 物理层:网线插好?灯亮?RS485正负极对?

② 参数:IP同网段?端口对?(S7默认102,Modbus TCP默认502)

③ 协议匹配:主从协议一致?寄存器地址映射对?

④ 诊断:看CPU缓冲区/错误代码(8501=功能码不支持,8520=从站无响应)


七、写在最后

搞懂三点:①通信对象 ②选对方式 ③理解协议本质。搞懂这三点,西门子PLC通信,没什么神秘的。