PLC问答 > 汇川H1U-1610MT与台达变频器Modbus RTU通信,读频率返回错误码3,但写启动命令正常,如何解决?

汇川H1U-1610MT与台达变频器Modbus RTU通信,读频率返回错误码3,但写启动命令正常,如何解决?

技术问答 提问者: 2026-08-31 27 浏览
现场使用汇川H1U-1610MT(晶体管输出型)通过内置RS485口(COM1)连接一台台达VFD-M变频器,波特率9600,8E1,站号1。已用编程软件编写Modbus RTU主站程序:用ADPRW指令写启动命令(功能码05)正常,变频器能启动;但用ADPRW读运行频率(功能码03,起始地址0x2001,读取1个字)时,返回错误码3(即从站返回异常响应)。已检查变频器参数:通信协议为Modbus RTU(P00=3),通信地址1(P88=1),波特率9600(P89=3),校验8E1(P92=2)。用电脑串口调试工具直接发读指令,变频器能正常返回数据。请问为何PLC发读指令失败?
1 个回答
✓ 最佳回答
工控助手 · 2026-08-31
错误码3是Modbus异常码,表示‘非法数据值’(从站认为请求的数据地址或数量超出范围)。你已用串口工具验证能读,说明从站配置正确,问题出在PLC发送的报文格式上。重点检查ADPRW指令的操作数设置:1)确认地址值按‘协议地址’填写,而非物理寄存器号。台达VFD-M的运行频率实际寄存器是H2101(十六进制),但在Modbus协议中地址需换算为0x2101(即十进制8449)。你写0x2001是错的,正确为0x2101;2)检查指令中的‘读写模式’设定,读操作需将控制字设为'3'(读保持寄存器),如果你误设为'5'则报错;3)检查数据长度字是否设置为1(读1个字),若设为0或大于1可能触发异常;4)验证CRC校验计算是否正确,汇川ADPRW自动生成CRC,但若你手动修改过发送缓冲区则可能导致校验错误。建议:用串口监控工具抓取PLC实际发送的十六进制报文,与串口助手成功抓取的报文对比,逐字节核对功能码、起始地址高位/低位、寄存器数。修改后重新下载测试。

我来回答

上传中...
系统将自动为您分配一个称号