plc与变频器的“串口对话”

在西门子的STEP 7-Micro/WIN SMART软件里,工程师会发现一个预写好的MODBUS库,就像一本现成的字典。这里面记录了通信所需的关键指令,比如让PLC主动去问的“主站指令”和PLC被动回应的“从站指令”。当系统初始化完成后,开发者只需查阅这本字典填写参数,就可以像操作数据库那样读写变频器中的数据。 实现这种通信,首先需要理顺硬件接线的思路。通常在变频器的背后能找到标有A/B或者RS485+/–、RJ11的接口,这就是用于和PLC对话的端口。以台达VFD-M系列为例,只需把PLC的RS485模块A、B直接对应接入进去,再将屏蔽线接地,就能让电信号沿着RS485或者RS585线奔跑起来。为了让双方“说同一种语言”,变频器侧需要设置P00、P01、P88、P89、P92、P157等关键参数。比如P00=03表示频率指令,P01=03表示运转指令,P88=03代表本机地址,P89=02设定波特率为9600,P92=04确定数据位8、停止位1,而P157=01则指定通讯模式为MODBUS。这些参数设置好了,通信就能建立起来。 一旦通信建立,变频器就像一块透明面板,PLC可以随时读写数据。比如运行命令位于地址2000H,频率命令在2001H,输出电流在22104H,输出电压在2106H,温度数据则在210DH06。在编程实战中,程序开头需要先初始化所有线圈和寄存器。进入主循环后,工程师可以使用MODBUS_READ或MODBUS_WRITE指令来读取或写入数据。如果在调试时发现报文丢帧的情况,首先要检查校验位的逻辑是否正确,然后查看接线是否松动。只要通信正常运行起来,变频器的频率、电流和温度信息就会实时刷新在屏幕上,电机也会随之转动起来。 这里提到的MODBUS协议其实有两条车道:一条是TCP/IP的公路,另一条是“串行”的窄路。而在PLC与变频器的“串口对话”里,大家更常用的是通过16进制字节在RS485或RS585上飞奔的MODBUS RTU模式。这种模式因为数据紧凑速度快而广受欢迎。相比之下,MODBUS ASCII把每个字节变成两字节的ASCII码虽然显得冗余,但报文却容易让人一眼看懂。在这幅流程图里,PLC作为主站可以发起读取或写入指令,把变频器当作数据库来操作。而当其他设备来请求PLC的数据时,系统会自动回送信息,无需程序员手动编写响应代码。一张图就能看懂MODBUS RTU的帧结构:站号、功能码、数据地址、数据内容、校验位、结束符六位一体决定报文能否被正确解读。其中校验位最容易出错:偶校验要求1的个数为偶数时校验位为0,奇数时为1;奇校验则正好相反。在常用的功能码中,读取保持寄存器的03H和写入单个线圈的05H是用得最多的两种命令。