三菱FX5U通讯(rtu方式)三台台达变频器资料 采用modrw指令,同时通讯三台台达变频器
最近刚做完一个项目,FX5U通过485总线同时控制3台台达VFD-E系列变频器和4台三菱FR-E700变频器,过程中踩了不少坑,这里把核心通讯逻辑拆解给大家。这里有个隐藏的坑:变频器参数Pr.00需要设置为03(Modbus通信模式),否则指令死活不响应。最后附上接线注意事项:台达的485端子是R+/R-,三菱是SDA/SDB,别接反极性。这里有个特别实用的技巧:在FB块里预置了频率换算公式,工程
三菱FX5U通讯(rtu方式)三台台达变频器资料 采用modrw指令,同时通讯三台台达变频器。 另有采用fb方式通讯4台三菱E700变频器程序。
工业现场最让人头疼的就是设备联调,尤其是面对不同品牌的变频器混搭组网。最近刚做完一个项目,FX5U通过485总线同时控制3台台达VFD-E系列变频器和4台三菱FR-E700变频器,过程中踩了不少坑,这里把核心通讯逻辑拆解给大家。

先说台达变频器这组方案。Modbus RTU模式下,三菱的MODRW指令用起来比想象中顺手。关键点在于站号切换和功能码选择,这里我采用分时轮询方式处理三台设备:
// 台达1号变频器频率写入
MOV K1 D100 // 站号存入D100
MOV H06 D101 // 功能码06写单寄存器
MOV K2001 D102 // 频率指令地址2001H
MOV K500 D103 // 设定50.0Hz
CALL P_MODRW
// 台达2号运行指令写入
MOV K2 D100
MOV H06 D101
MOV K2000 D102 // 控制命令地址2000H
MOV K1 D103 // 正转启动
CALL P_MODRW
注意台达的寄存器地址需要换算成十进制地址,比如面板上标注2000H对应的实际地址是8192。这里有个隐藏的坑:变频器参数Pr.00需要设置为03(Modbus通信模式),否则指令死活不响应。
再来看三菱自家E700变频器的通讯实现。采用FB块封装后,程序可读性明显提升。这里我做了个带超时检测的通用功能块:
// FR-E700通讯功能块
FUNCTION_BLOCK E700_COM
VAR_INPUT
StationNo: INT; // 站号1-4
Command: BYTE; // 命令类型
Frequency: REAL; // 频率设定值
END_VAR
VAR_OUTPUT
Status: BOOL; // 通讯状态
ErrorCode: WORD; // 错误代码
END_VAR
// 核心通讯程序
IF Command = 1 THEN // 启动命令
MOV K1 D200
MOV H1000 D201 // 运行指令地址
MOV H0002 D202 // 正转指令
RS485_SEND(StationNo, D200, 3)
ELSEIF Command = 2 THEN // 频率设定
REAL_TO_WORD(Frequency, D210)
MOV H1001 D211 // 频率设定地址
RS485_SEND(StationNo, D211, 2)
END_IF
实际调用时,四个变频器的控制就像搭积木:
// 控制1号E700以40Hz正转
CALL E700_COM(
StationNo := 1,
Command := 1,
Frequency := 40.0,
Status => M100,
ErrorCode => D1000)
这里有个特别实用的技巧:在FB块里预置了频率换算公式,工程人员可以直接输入实数频率值,不用再手动处理BCD码转换。

几点实战经验:
- 波特率建议统一设为19200,实测这个速率下7台设备轮询周期能控制在300ms以内
- 台达的响应延迟比三菱多约50ms,编程时要预留缓冲时间
- 485终端电阻一定要接!曾经因为少接一个电阻导致3号站频繁掉线
- 关键参数建议做双备份,通讯失败时自动切换本地预设值
最后附上接线注意事项:台达的485端子是R+/R-,三菱是SDA/SDB,别接反极性。建议用双绞屏蔽线,每隔2米做个接地处理。程序源码已上传GitHub,需要自取(链接见评论区置顶)。
更多推荐
所有评论(0)