终于有人把西门子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通信,没什么神秘的。
夜雨聆风