跳到主要内容

7.15.11 配置的端口作为Modbus主站进行通信

功能

  • Modbus_RTU_Master指令可通过由Modbus_RTU_Config指令配置的端口作为Modbus主站进行通信
注意
  • 无法为Modbus_RTU_Master指令的背景数据块保持(Retain)

LD图形

alt text

参数说明

参数名类别类型说明
REQINPUTBOOLTRUE: 向Modbus Slave从站发送请求并等待响应。
MB_ADDRINPUTUSINTModbus RTU从站地址。
MODEINPUTUSINT模式(读取 / 写入)。
0: 读取,对应功能码0x01 ~ 0x04。
1: 写入,对应功能码0x05, 0x06,0x15, 0x16。
START_ADDRINPUTUINT从站中的起始地址。
线圈:1 ~ 9999
离散输入量:10001 ~ 19999
输入寄存器:30001 ~ 39999
保持寄存器:40001 ~ 49999
DATA_LENINPUTUINT数据长度,即访问的字或位的个数。
DATA_PTRINOUTANY_TYPE指向要数据写入或数据读取的数据块地址。
MB_RTU_CONFIGINOUTModbus_RTU_CONFIG指向绑定的Modbus RTU串口配置
DONEOUTPUTBool请求处理结束,无错误。维持一个周期。
BUSYOUTPUTBool请求处理中。
ERROROUTPUTBool请求过程中出现错误,具体错误原因见STATUS。维持一个周期
STATUSOUTPUTWORD状态码

状态码说明

状态码含义解决方案
0x0000初始状态,无任务
0x7000请求成功
0x7002请求超时,重试中,直至达到RETRIES次数
参数校验错误码含义解决方案
0x8006绑定的Modbus RTU串口未配置或已失效重新调用MODBUS_RTU_CONFIG请求,配置串口
0x8007其他Modbus_RTU_Master实例正在使用该RTU_CONFIG其他实例请求完成后重试
0x8008输入请求模式无效,支持0和1用于读取和写入检查输入参数
0x8009请求寄存器/位数量无效检查输入参数
0x800A访问从站起始地址无效
线圈:1 ~ 9999
离散输入量:10001 ~ 19999
输入寄存器:30001~39999
保持寄存器:40001 ~ 49999
检查输入参数
0x800B访问从站地址与模式组合无效。例如,使用写入模式操作地址30001的输入寄存器检查输入参数
0x800C功能码解析失败检查输入参数
0x800D绑定数据区域容量小于请求所需空间检查输入参数
0x800E请求过于频繁,间隔小于3.5字符+RTUConfig参数REQ_GAP的时间重新请求
请求和响应过程错误码含义解决方案
0x8010与串口连接断开重新配置串口
0x8011等待回应报文失败系统内部错误,重新配置或重试
0x8012与串口连接断开重新配置串口
0x8013读取回应报文失败系统内部错误,重新配置或重试
0x8016~0x8017发送请求失败重新请求
0x8019重试RETRIES次数后,接收回应报文超时重新请求,或合理设置超时时间后重试
0x801A回应报文数据超过最大长度
Modbus_RTU_Master检查回应报文内容错误码含义解决方案
0x801B回应报文从站地址不匹配重新请求
0x801C回应报文校验码不匹配重新请求
0x801D回应报文与发送报文功能码不匹配重新请求
0x801E回应报文为异常报文,异常码无效重新请求
0x801F回应报文与发送报文数据和地址不匹配重新请求
0x8020回应报文不合法重新请求
Modbus RTU 协议异常报错码含义方案
0x8022功能码无效
0x8023请求地址无效,例如从站中包含128个保持寄存器,请求访问地址为130的寄存器
0x8024请求数据无效
0x8025~0x802C从站响应的其他异常码