一、通信基础概述
工业通信是自动化系统的重要部分,实现PLC、HMI、变频器、仪表等设备之间的数据交换。S7-200 SMART支持多种通信协议,满足不同应用场景需求。
学习目标
-
掌握PPI通信协议的原理和配置
-
理解Modbus RTU通信协议
-
掌握以太网通信(TCP/IP)
-
学会自由口通信编程
-
能够实现PLC与多种设备的通信
-
掌握网络组态和故障诊断
1.1 通信协议比较
|
协议类型
|
物理层
|
通信速率
|
最大距离
|
应用场景
|
|
PPI
|
RS485
|
9.6-187.5kbps
|
1000m
|
西门子设备间通信
|
|
Modbus RTU
|
RS485
|
9.6-115.2kbps
|
1200m
|
与第三方设备通信
|
|
Modbus TCP
|
以太网
|
10/100Mbps
|
100m
|
工业以太网通信
|
|
自由口
|
RS485/232
|
1.2-115.2kbps
|
1200m
|
自定义协议通信
|
二、PPI通信编程(梯形图)
2.1 PPI主从通信配置
示例1:PPI网络配置与数据交换
步骤1:网络配置说明
// 网络结构:1个主站 + 3个从站
// 主站地址:2
// 从站地址:3, 4, 5
步骤2:NETR指令读取从站数据
Network 1 // 读取从站3的数据
SM0.1 VB200
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----3-----VB200
SM0.1 VB201
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----3-----VB201
SM0.1 VW202
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---40001---VW202
SM0.1 VW204
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+----10----VW204
SM0.1 VB206
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----0-----VB206
步骤3:执行NETR指令
Network 2 // 触发读取
I0.0 VB207
--|P|----+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----1-----VB207
Network 3 // NETR指令
VB207 1
--|==|----+---(NETR)--
| EN ENO
| TBL PORT
| -- --
+---VB200--0
SM0.0 VB207
--| |----+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----0-----VB207
步骤4:处理读取数据
Network 4 // 检查通信状态
VB206 0
--|==|----+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---VW208---VW300
VB206 0
--|<>|----(INC_W)--
IN OUT
-- --
VW302---VW302
三、Modbus RTU通信(梯形图)
3.1 Modbus主站通信
示例2:Modbus主站读写从站
步骤1:MBUS_CTRL指令初始化
Network 1 // 初始化Modbus主站
SM0.1
--| |----+---(MBUS_CTRL)--
| EN ENO
| Mode Baud
| -- --
+----1----9600
| Parity
| --
+----0
| Port
+----0
| Timeout
+----1000
| Done
+---M0.0
步骤2:读取保持寄存器(功能码03)
Network 2 // 配置读取请求
I0.1 VB100
--|P|----+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----1-----VB100
I0.1 VB101
--|P|----+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----3-----VB101
I0.1 VW102
--|P|----+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---40001---VW102
I0.1 VW104
--|P|----+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+----5-----VW104
步骤3:执行MBUS_MSG指令
Network 3 // 发送Modbus请求
I0.1 M0.1
--|P|----|/|----+---(MBUS_MSG)--
| | EN ENO
| | First
| | --
| +---VB100
| | Done
| +---M0.1
| | Error
+----+---VB110
步骤4:处理返回数据
Network 4 // 检查通信结果
M0.1 VB110 0
--| |----|==|----+---(MOV_W)--
| | EN ENO
| | IN OUT
| | -- --
| +---VW120---VW200
| | VW122---VW202
| | VW124---VW204
3.2 Modbus从站通信
示例3:Modbus从站配置
步骤1:从站初始化
Network 1 // 初始化Modbus从站
SM0.1
--| |----+---(MBUS_INIT)--
| EN ENO
| Mode
| --
+----1
| Addr
+----2
| Port
+----0
| Baud
+----9600
| Parity
+----0
| Delay
+----0
| MaxIQ
+----128
| MaxAI
+----32
| MaxHold
+----100
| HoldStart
+---&VB0
四、以太网通信(TCP/IP)
4.1 TCP通信配置
示例4:TCP客户端通信
步骤1:定义连接表
// 连接表定义在数据块中
// 连接ID:1
// 远程IP:192.168.1.100
// 远程端口:2000
步骤2:建立TCP连接
Network 1 // 初始化连接
SM0.1 VB500
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----1-----VB500
SM0.1 VB501
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----1-----VB501
步骤3:发送数据
Network 2 // 建立连接
I0.2
--|P|----+---(CONNECT)--
| EN ENO
| ConnID
| --
+---VB500
| Done
+---M0.2
| Error
+---VB510
Network 3 // 发送数据
M0.2 I0.3
--| |----|P|----+---(SEND)--
| | EN ENO
| | ConnID
| | --
| +---VB500
| | Data
| +---VB600
| | Len
| +----10
| | Done
+----+---M0.3
五、自由口通信(梯形图)
5.1 自由口配置
示例5:自由口通信协议
步骤1:初始化自由口
Network 1 // 配置端口0为自由口
SM0.1 SMB30
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+---16#09---SMB30
步骤2:发送数据子程序SBR_0
Network 1 // 连接到发送完成中断
SM0.0
--| |----+---(ATCH)--
| EN ENO
| INT EVNT
| -- --
+---INT_0--9
| (ENI)
Network 2 // 发送数据
#Send_Flag
--| |----+---(XMT)--
| EN ENO
| TBL PORT
| -- --
+---#Send_Buf--0
步骤3:接收数据中断程序INT_0
Network 1 // 接收字符中断
SM0.0 VB200
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+---SMB2---VB200
六、综合应用案例
6.1 案例一:多设备通信系统
系统设计要求:
-
1台S7-200 SMART作为主站
-
3台变频器(Modbus RTU)
-
2台温控仪(Modbus RTU)
-
1台上位机(以太网)
-
1台触摸屏(PPI)
-
实现数据集中采集和控制
网络拓扑结构
上位机
以太网
触摸屏
PPI
主站PLC
S7-200 SMART
变频器1
Modbus
变频器2
Modbus
变频器3
Modbus
温控仪1
Modbus
温控仪2
Modbus
6.2 案例二:数据采集与转发系统
系统功能:
-
采集现场仪表数据(Modbus RTU)
-
处理后通过以太网上传至上位机
-
接收上位机控制指令
-
数据本地存储和报警处理
-
支持远程监控和参数修改
通信协议规划:
|
通信对象
|
协议
|
数据内容
|
更新周期
|
|
现场仪表
|
Modbus RTU
|
温度、压力、流量
|
1秒
|
|
上位机
|
Modbus TCP
|
过程数据、报警
|
2秒
|
|
触摸屏
|
PPI
|
监控画面、操作
|
实时
|
七、课后练习
练习题目
练习1:Modbus主站编程
编写程序实现以下功能:
-
从3台Modbus从站读取数据
-
从站地址:1、2、3
-
读取保持寄存器40001-40010
-
将数据存储到本地V区
-
通信异常时报警并重试
-
支持手动/自动读取模式
练习2:以太网通信编程
设计一个TCP通信系统:
-
作为TCP服务器,监听端口502
-
同时支持最多3个客户端连接
-
接收客户端数据并解析
-
返回请求的数据
-
记录通信日志
-
支持连接状态监控
练习3:自由口通信协议
实现自定义通信协议:
-
协议格式:帧头+长度+数据+校验+帧尾
-
帧头:0xAA 0x55
-
校验:CRC16校验
-
支持数据分包和重组
-
实现超时重发机制
-
通信状态指示和故障诊断
八、课程总结
8.1 重点回顾
本课核心知识点
-
PPI通信:西门子专用协议,主从通信
-
Modbus RTU:工业标准协议,广泛应用
-
Modbus TCP:基于以太网的Modbus
-
自由口通信:自定义协议,灵活性强
-
通信故障处理:超时、重试、诊断
-
网络规划:拓扑设计、协议选择
8.2 调试技巧
1. 使用通信指令的错误代码诊断问题
2. 合理设置通信超时时间
3. 添加通信状态指示和故障记录
4. 测试不同波特率和数据格式
5. 使用串口调试助手测试通信