变频器是工业现场最常见的设备之一,但很多电气技术人员一想到要和PLC做通信,下意识就觉得"得写通信程序,太难了"。其实,用Modbus RTU协议让PLC控制变频器,绝大多数情况下不需要写一行通信代码。本文用真实项目案例,完整演示从硬件连接到程序配置的每一步。
一个真实场景
某工厂一条传送带项目,要求用PLC控制三台变频器,实现启停、速度给定和运行频率反馈。每台变频器需要: - 启停控制(正转/停止/反转) - 运行频率给定(0-50Hz) - 运行频率反馈(读取当前输出频率) 设备清单:西门子S7-200 SMART SR40 PLC + 三台台达VFD-B变频器,通信距离不超过50米。工期两周,没有额外的通信专用模块。
这个场景下,Modbus RTU是最经济的方案。S7-200 SMART自带Modbus RTU通信指令库,用它就能完成全部功能,不需要写任何底层通信程序。
为什么是Modbus RTU
Modbus RTU是工业设备间通信最常用的协议没有之一。原因很实际:几乎所有品牌的变频器、仪表、温控器都支持Modbus RTU,硬件只需RS485总线,成本极低。在工业现场跑过项目的人都知道,变频器说明书里一定有一页是Modbus通信参数表。
Modbus RTU采用主从架构:PLC是主站(Master),变频器是从站(Slave)。主站发起通信请求,从站响应。从站不会主动发送数据,必须由主站轮询。
物理层用RS485总线,只需两根线(A和B)就能连接多个设备。总线拓扑简单,穿管方便,这是它在工业现场生命力旺盛的根本原因。
硬件准备
本次案例用到的硬件:
设备 | 型号 | 说明 |
PLC | 西门子S7-200 SMART SR40 | 自带Modbus RTU指令库 |
变频器 | 台达VFD-B系列 ×3台 | 支持Modbus RTU |
通信线 | RVSP 2×1.5屏蔽双绞线 | A/B各一根 |
终端电阻 | 120Ω匹配电阻 | 总线两端各一个 |
接线方法
S7-200 SMART的RS485端口引脚定义:3是B(-),8是A(+)。台达VFD-B的RS485端子:SG+和SG-,对应B和A。
接线时注意:PLC的A(+)接变频器的SG-,PLC的B(-)接变频器的SG+。这个顺序容易搞反,实测中接反了通信肯定不会通。屏蔽层在PLC端单端接地。
总线两端各加一个120Ω终端电阻,防止信号反射。中间设备不接电阻。
变频器侧参数设置
Modbus通信的前提是主从站参数一致。台达VFD-B变频器需要设置以下参数:
第二台变频器地址设为02,第三台设为03,其余参数相同。三台变频器的通信参数必须完全一致。
PLC程序配置
这是最关键的部分。S7-200 SMART提供了Modbus RTU库指令,编程思路非常清晰:初始化通信端口→轮询各从站→读写目标数据。
第一步:初始化通信端口
MBUS_CTRL指令用于初始化Modbus通信参数,每次扫描周期调用一次。它负责处理通信状态机,空闲时自动启动下一条请求。
编程时用SM0.0作为EN使能条件,将波特率设为9600,超时设为1000毫秒。
第二步:读写变频器数据
MBUS_MSG指令是实际的数据收发指令。通过功能码区分读写操作:
功能码 | 操作 | 用途 |
01 | 读线圈 | 读取变频器运行状态 |
05 | 写单个线圈 | 控制启停 |
03 | 读保持寄存器 | 读取频率、电流等参数 |
06 | 写单个保持寄存器 | 写入频率给定值 |
16 | 写多个保持寄存器 | 批量写入 |
台达VFD-B的Modbus地址映射如下:
地址 | 参数 | 读写 |
2000H | 频率指令(0.01Hz单位) | 读写 |
2001H | 运行指令 | 读写 |
2100H | 输出频率反馈 | 只读 |
2101H | 输出电流反馈 | 只读 |
2000H转换为十进制是8192,2001H是8193,2100H是8448,2101H是8449。在程序中填写十进制地址。
第三步:写一个完整的轮询程序
三台变频器需要轮询读取和写入,程序结构如下:
第二台和第三台变频器仅需修改Slave地址(2和3),其余完全相同。
关键细节:MBUS_MSG的First引脚必须使用脉冲触发,不能用按钮或常开触点,否则会同时发起多条请求导致总线冲突。用SM0.5(0.5秒时钟脉冲)作为触发条件,简单实用。
调试常见问题
Modbus RTU调试中最常遇到三个问题:
通信不通。 首先检查硬件:接线顺序对不对?终端电阻有没有加?用万用表测量A/B之间电阻约为120Ω表示终端电阻正常。然后检查参数:波特率、数据位、校验位、停止位是否完全一致?地址有没有重复?
读回来的数据全是65535(0xFFFF)。 这表示从站没有响应。常见原因是变频器通信参数没有设置正确,或者P00.001/P00.002没有设为03(Modbus控制模式)。还有一个容易忽略的原因:某些变频器需要在面板上手动使能通信模式。
数据偶尔正确偶尔错误。 大概率是总线冲突。检查是否有多个从站同时响应,或者接地不良引入干扰。RS485总线总长度不宜超过1000米,支线长度不超过10米。
应用场景与选型建议
Modbus RTU适合以下场景:同一控制柜内或距离不超过100米的变频器群;设备数量不超过32台(RS485总线限制);对通信实时性要求不极高的场合(轮询周期在100ms以上可接受)。
如果项目要求更高的实时性(比如伺服同步控制),建议用Profinet或CANopen。如果距离超过500米或多主站需求,考虑用Modbus TCP。
选型时注意:并不是所有变频器都支持Modbus RTU,低端小功率变频器有些只支持模拟量控制。另外,不同品牌的Modbus地址映射不同,必须以厂家提供的通信手册为准,不能照搬其他品牌的数据。
总结
用Modbus RTU让PLC控制变频器,核心步骤只有四步:硬件接线正确、变频器通信参数设置正确、PLC通信初始化、用MBUS_MSG轮询读写数据。整个过程不需要写任何底层通信代码,只需要理解Modbus的主从轮询机制和地址映射。
对于日常项目来说,Modbus RTU是最经济可靠的方案。掌握了这个方法,应对90%以上的PLC与变频器通信需求都够用了。