车间里那台老式三菱PLC已经连续运转了七年,直到上周五下午,当产线主管要求增加变频器调速功能时,我才意识到要面对这个经典难题——如何让FX3U这款没有内置RS485接口的PLC与台达变频器建立稳定通讯。这就像要让只会说日语的老技师和讲闽南语的设备操作员流畅交流,需要找到合适的"翻译官"。
在实际工业现场,这种日系PLC与台系变频器的组合非常普遍。FX3U作为三菱经典的微型PLC,虽然本体只配备编程口(RS422),但通过扩展模块可以拓展出RS485通讯能力。而台达VFD-M系列变频器标配的RS485接口,采用Modbus RTU协议,两者需要通过硬件适配和协议转换才能实现数据交互。这次要实现的不仅是简单的启停控制,还包括实时频率设定、运行状态监控等完整功能。
FX3U-485BD扩展板是性价比最高的选择,这个巴掌大的蓝色模块可以直接插在PLC本体右侧,提供标准的RS485接口。我在物料柜里翻出库存的485BD模块时,发现它的端子定义与台达变频器有所不同:
这里有个关键细节:必须将PLC侧的RDA与SDA短接、RDB与SDB短接,否则通讯根本无法建立。这个操作在手册里只用小字提示,但实测证明缺少这个步骤会导致信号反射问题。
在纺织车间这种强电磁干扰环境,我额外增加了三项防护措施:
重要提示:台达变频器的通讯波特率默认是9600bps,而FX3U的485BD模块在出厂时设置为19200bps,务必先用变频器面板将参数P00.17调整为与PLC一致。
台达VFD-M的Modbus地址表让人困惑,它的保持寄存器区实际对应的是变频器参数编号加上40000的偏移量。例如要修改主频率设定(参数P00.03),对应的Modbus地址却是40003。更麻烦的是,三菱PLC的MODBUS指令要求输入的地址是去掉4万后的数值,即"3"。
我整理了常用功能的地址对照表:
| 功能描述 | 台达参数号 | Modbus地址 | PLC输入值 |
|---|---|---|---|
| 运行频率设定 | P00.03 | 40003 | 3 |
| 输出电压 | P00.06 | 40006 | 6 |
| 运行状态字 | P00.09 | 40009 | 9 |
三菱的RS指令是核心,但有几个坑必须注意:
ladder复制MOV K4 D8120 // 设置通讯格式:9600bps,7位数据,偶校验,1停止位
MOV H81 D8121 // 控制码:使用通道1,RDA/SDA端子
LD X0 // 启动按钮
[RS D100 K8 D200 K6]
// 从D100发送8字节,接收数据存入D200开始的6字节
发送缓冲区D100-D107需要按Modbus RTU格式填充:
第一次上电测试时,变频器完全没反应。用示波器抓取波形发现数据完整,但台达变频器的ERR指示灯闪烁。最终发现是CRC校验算法的问题——FX3U要求CRC低位在前,而台达设备预期高位在前。解决方案是在PLC程序里对CRC结果做字节交换:
ladder复制// CRC计算后的处理
MOV D106 D150 // 临时存储CRC结果
AND HFF00 D150 // 取高位字节
SHRP D150 K8 D151 // 右移8位
AND HFF D106 // 取CRC低位字节
MOV D151 D107 // 高位字节放到后一地址
工业现场必须考虑通讯故障时的处理。我在程序中添加了心跳检测机制:
当需要控制8台变频器时,采用分时复用策略:
ladder复制LD M8002 // 上电初始化
MOV K0 Z0 // 清零变址寄存器
LD T200 // 50ms定时脉冲
INC Z0 // 站号递增
CMP K8 Z0 // 超过8时复位
RST Z0
MOV D500Z0 D100 // 动态设置站号
为防止通讯中断影响生产,保留模拟量控制回路:
这套方案在本地食品厂的包装产线稳定运行了17个月,最远通讯距离达到320米(需增加RS485中继器)。实际测试发现,在9600bps波特率下,8台变频器轮询周期可以控制在400ms以内,完全满足一般调速控制需求。