MODBUS |
您所在的位置:网站首页 › 485命令字 › MODBUS |
MODBUS-RTU报文模型
设备地址功能代码数据格式 CRC校验LCRC校验H8bit8bitN*8bit8bit8bit
一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。 主机对从机写数据操作如果单片机接收到一个报文那么就对报文进行解析执行相应的处理 0x010600 01 00 17 98 04从机地址功能号数据地址数据CRC校验 主机对从机读数据操作 0x010300 01 00 01 D5 CA从机地址功能号数据地址读取数据个数CRC校验单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:返回信息给主机,返回的信息也是有格式的: 从机对主机返回内容 0x010302 00 17 F8 4A从机地址功能号数据字节个数 两个字节数据CRC校验这样MODBUS主机就完成了一次对从机数据的读操作,实现了通讯。 MODBUS-RTU常用功能码数据类型 读功能码 写功能码 对象类型 离散量输入 02
单个位 线圈状态 01 05,15 单个位 输入寄存器 04
16位字 保持寄存器 03 06,16 16位字 寄存器起始地址(起始数据地址)数据类型 参数地址,寄存器编号 离散量输入 00001~0FFFF 线圈状态 10001~1FFFF 输入寄存器 30001~3FFFF 保持寄存器 40001~4FFFF 举例: Modbus协议中寄存器地址从1开始,而实际存储中地址从0开始。假如要读取寄存器编号为40005(4为块编号,5为modbus中寄存器地址)的寄存器的数据,则应把00 04放入报文的地址域。寄存器定义,又名码表或者信息点表,应由厂家提供的。 寄存器编号 属性 定义 系数 备注 40001 RO A相电压
从40048中读取电压系数 40002 RO B相电压
如要读A相电压,则应将0x00 0x00放入寄存器起始地址域中。 报文实例1、读40005、40006两个寄存器,假设从机地址为1 下行报文:01 03 00 04 00 02 85 ca 从机地址 功能码 寄存器起始地址 读取寄存器个数 CRC校验 01 03 00 04 00 02 85 ca 上行报文:01 03 04 00 00 00 00 21 33 从机地址 功能码 返回字节个数 寄存器40005数据 寄存器40006数据 CRC校验 01 03 04 00 00 00 00 21 33 2、向40005寄存器中写入0x12,0x34,假设从机地址为1 下行报文:01 06 00 04 00 01 12 34 4a b0 从机地址 功能码 寄存器起始地址 读取寄存器个数 要写入的数据 CRC校验 01 03 00 04 00 01 12 34 85 ca 上行报文:01 06 00 04 00 01 12 34 4a b0 从机地址 功能码 寄存器起始地址 读取寄存器个数 写入的数据 CRC校验 01 03 00 04 00 01 12 34 85 ca |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |