三菱FX3U-485ADP-MB通讯三种变频器程序 已实现测试的变频器:施耐德ATV312, 三菱E700,台达VFD-M三款变频器,支持rtu的协议的变频器都可实现。 需要硬件:FX3UPLC,FX3U-485ADP-MB通信扩展模块,施耐德ATV312变频器或台达vfd-m变频器或三菱E700变频器,fx3u-cnv-bd 。 通过modbus rtu通讯方式 ,可以实现控制正反转,启动停止,触摸屏直接频率设定,以及对频率电流,运行状态的监控。 反馈及时,无延迟,内容包含plc和触摸屏程序,参数设置,接线及教程。
手里刚好有个FX3U-485ADP-MB模块,实测用它搞定了施耐德ATV312、三菱E700和台达VFD-M三种变频器的通讯控制。直接上干货,先说硬件配置:PLC本体+485ADP-MB模块必须装到FX3U-CNV-BD扩展板上,485接口用双绞线连变频器的A/B端子(施耐德是A+/B-,台达是RS485+/RS485-,注意别接反)。
参数设置踩坑实录
变频器参数必须开Modbus RTU模式:
- 施耐德ATV312:设置tCC=YES(通讯控制)、tFr=YES(通讯频率源)
- 三菱E700:Pr.79=2(运行指令外部/通讯)、Pr.338=1(Modbus地址1)
- 台达VFD-M:P00=04(频率指令来源RS485)、P01=04(运转指令通讯)
PLC这边用D8120配置通讯参数:
MOV H0C96 D8120 //9600bps,8位数据,偶校验,停止位1这里有个坑——台达VFD-M默认波特率是19200,如果设备混用记得统一波特率。
PLC程序核心段
关键用RS指令收发数据,写个控制施耐德ATV312的样例:
//发送请求帧 MOV H01 D100 //从站地址=1 MOV H06 D101 //功能码06写寄存器 MOV H0000 D102 //起始地址40001(实际地址0000) MOV K3000 D103 //写入频率30.00Hz CALL P_RTU_CRC //计算CRC校验 RS D100 K8 D200 K10 //发送8字节,接收10字节 //接收处理 LD M8122 //接收完成标志 CMP D201 H06 //确认功能码 = CALL P_数据处理重点解析这段:
- 施耐德的频率设定地址是40001,对应Modbus地址0000(十六进制)
- 频率值3000对应30.00Hz,注意整数转浮点的处理(有些变频器需要乘以0.01)
- CRC校验建议做成子程序复用,避免重复造轮子
触摸屏骚操作
在威纶通HMI上直接做频率设定输入框:
- 数值元件绑定D103寄存器
- 设置比例因子0.01(3000→30.00Hz)
- 按钮直接写M0启动位到PLC的M寄存器
监控界面可以这样布局:
-- 运行状态指示灯 if (D210 & 0x0001) then -- 取返回数据的bit0 draw_led_green(100,100) end -- 电流显示 text = (D212 * 0.1).."A" -- 电流值需乘以系数实测避坑指南
- 台达VFD-M的启动命令地址是2000H,与三菱的0001H不同
- 施耐德返回数据长度比其他设备多2字节,接收缓冲区要留余量
- 用示波器抓包发现,E700的响应延迟约120ms,程序要加超时判断
最后附个万能调试技巧:在PLC里做个手动发送区,把想发送的指令先放在D500开始的寄存器,用按钮触发RS指令,配合串口调试助手观察数据流,比干瞪眼强多了。