✓ 最佳回答
M0标志不翻转但数据能更新,说明通信实际成功,问题出在指令使用方式上。请按以下排查:
1. **确认您用的是‘高级Modbus’指令还是‘简易Modbus’**:若用‘F145/MBUS’低级指令,完成标志是特殊继电器(如R9030/R9031),而非您自定义的M0。若用‘ModbusRTU’库指令(如‘MBUS_READ’),其完成标志是您指定的M地址,但该标志仅在一个扫描周期内置ON,若监控速度慢会错过。建议在指令后加‘SET M10’,再用M10作为完成触发,用后由后续逻辑RST M10。
2. **检查通信错误代码**:在指令的‘错误状态’输出寄存器(如DT200)中,每次执行后读取该值。若为0表示无错误,非0则对照FP-XH手册中Modbus错误代码表(例如2为从站无响应,3为地址错)。
3. **确认指令的触发条件**:若用常ON继电器R0作为执行条件,会造成每个扫描周期重复发送请求,可能导致Slave响应冲突。正确做法是用一个‘脉冲’触发(如R0的上升沿),然后在下一个扫描周期再触发下一次,或者用‘定时器’每100ms发一次。
4. **验证数据区映射**:台达VFD-M的地址4103实际对应Modbus地址0x0202(40001+202),FP-XH中若直接填4103请确认指令支持‘4xxxx’格式,否则应填寄存器地址偏移量(如202)。若数据能更新则此步无关。