在工业自动化控制领域,PLC与变频器的通讯一直是现场实施的关键环节。西门子S7-200系列PLC作为经典的小型控制系统,其自由口通讯功能为连接非标设备提供了灵活解决方案。英威腾GD200系列变频器作为国产变频器的代表型号,在风机、水泵等场合应用广泛。
这个项目的核心在于突破传统硬接线控制方式的局限,通过RS485串口建立S7-200与GD200之间的Modbus RTU协议通讯,实现:
采用标准的RS485两线制连接方式:
关键提示:实际项目中遇到过因接地不良导致通讯断续的情况,建议将PLC端和变频器端的PE端子做等电位连接。
GD200变频器参数组:
code复制P00.03=3(通讯给定频率)
P14.00=1(Modbus RTU协议)
P14.01=1(站地址,建议1-247)
P14.02=3(波特率9600bps)
P14.03=0(无校验)
P14.04=1(应答延迟20ms)
S7-200自由口配置:
STL复制MOVB 16#09, SMB30 // 9600bps,无校验,8位数据,1位停止
MOVB 16#B0, SMB87 // 启用接收,检测起始字符,检测结束条件
MOVB 16#3A, SMB88 // 起始字符为冒号(ASCII 0x3A)
MOVB 16#0D, SMB89 // 结束字符为回车(ASCII 0x0D)
MOVW +1000, SMW92 // 接收超时1秒
MOVB 255, SMB94 // 最大接收字符数
GD200变频器支持的Modbus功能码:
关键寄存器地址(16进制):
code复制2000H:运行命令(写入)
0001H:正转启动
0002H:反转启动
0003H:自由停机
2001H:频率给定(写入,单位0.01Hz)
2100H:输出频率(读取,单位0.01Hz)
2101H:输出电流(读取,单位0.01A)
2102H:输出电压(读取,单位0.1V)
2200H:故障代码(读取)
读取输出频率(功能码03H):
code复制发送帧:01 03 21 00 00 01 CRC
解释:
01 - 从站地址
03 - 功能码
21 00 - 起始地址2100H
00 01 - 读取1个寄存器
CRC - 校验码(低字节在前)
正转启动+给定频率(功能码10H):
code复制发送帧:01 10 20 00 00 02 04 00 01 13 88 CRC
解释:
01 - 从站地址
10 - 功能码
20 00 - 起始地址2000H
00 02 - 写入2个寄存器
04 - 字节数
00 01 - 2000H写入0001H(正转)
13 88 - 2001H写入1388H(对应50.00Hz)
STL复制// 发送子程序示例
LD SM0.0
MOVB 16#01, VB100 // 从站地址
MOVB 16#03, VB101 // 功能码
MOVB 16#21, VB102 // 寄存器高字节
MOVB 16#00, VB103 // 寄存器低字节
MOVB 16#00, VB104 // 数量高字节
MOVB 16#01, VB105 // 数量低字节
CALL CRC_CALC // 调用CRC计算子程序
XMT VB100, 0 // 从VB100开始发送
STL复制// 接收中断程序
LD SM0.0
MOVB SMB2, VB200 // 存入接收缓冲区
MOVD &VB200, AC1 // 缓冲区首地址
+D +6, AC1 // 数据区起始地址
MOVW *AC1, VW300 // 读取频率值(0.01Hz单位)
STL复制// CRC16计算子程序
MOVW 16#FFFF, VW50 // CRC初始值
FOR VW10, +1, +8 // 对每个字节循环
XORB *AC1, VB51 // 与CRC低字节异或
FOR VW20, +1, +8 // 每位处理
SRW VW50, 1 // 右移1位
LD SM1.1 // 检查移出位
XORW 16#A001, VW50 // 若为1则异或多项式
NEXT
INCD AC1 // 指向下一字节
NEXT
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯超时 | 波特率不匹配 | 核对P14.02与SMB30设置 |
| 错误响应 | 站地址错误 | 检查P14.01与报文地址 |
| CRC校验失败 | 字节顺序错误 | 确认CRC低字节在前 |
| 数据异常 | 寄存器地址偏移 | GD200使用原始地址,不需减1 |
在一次水泵控制项目中,发现变频器偶尔会误动作。最终排查发现:
在最近实施的中央空调改造项目中,我们通过这套方案成功实现了对8台GD200变频器的集中监控,相比传统硬接线方式节省了76%的布线成本,同时获得了更丰富的运行数据。