以modbus协议为通讯协议的电表解析总结 | 您所在的位置:网站首页 › 电表表示数和电量的区别在哪里 › 以modbus协议为通讯协议的电表解析总结 |
一、 初识modbus Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。Modbus 协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 目前,Modbus 有下列三种通信方式: 1.以太网,对应的通信模式是Modbus TCP。 2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是 Modbus RTU 或 Modbus ASCII。 Modbus 的ASCII、RTU 协议规定了消息、数据的结构、命令和应答的方式,数据通讯采用Maser/Slave方式。 3.高速令牌传递网络,对应的通信模式是Modbus PLUS。 文档所采用的是第一种。 二、 Modbus的具体含义 先来简单分析一条MODBUS-RTU报文,例如:01 06 00 01 00 17 98 04 01 06 00 01 00 17 98 04 从机地址 功能号 数据地址 数据 CRC校验 这一串数据的意思是:把数据 0x0017(十进制23) 写入 1号从机地址 0x0001数据地址。 1、报文 一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。 2、CRC校验 意义:例如上面的 98 04 是它前面的数据(01 06 00 01 00 17)通过一算法计算出来的结果,其实就像是计算累加和那样。(累加和:就是010600010017加起来的值,然后它的算法就是加法)。 作用:在数据传输过程中可能数据会发生错误,CRC检验检测接收的数据是否正确。比如主机发出01 06 00 01 00 17 98 04,那么从机接收到后要根据01 06 00 01 00 17 再计算CRC校验值,从机判断自己计算出来的CRC校验是否与接收的CRC校验(98 04主机计算的)相等,如果不相等那么说明数据传输有错误这些数据不能要。 3、功能号 意义:modbus 定义。 最常用功能码: 下面“线圈”“寄存器”其实分别直的就是“位变量”“16位变量” 01 (0x01) 读线圈 02 (0x02) 读离散量输入 03 (0x03) 读保持寄存器 04(0x04) 读输入寄存器 05 (0x05) 写单个线圈 06 (0x06) 写单个寄存器 15 (0x0F) 写多个线圈 16 (0x10) 写多个寄存器 三、 ZigBee modbus的报文格式及通讯过程 1. 读取多路寄存器 例如:读取环境温度值 总结:一般主机的报文包括流水号(1字节),MAC(6字节),从机地址(1字节),功能码(1字节),起始地址(2字节),读取开关量数量(2字节),功能码(2字节)。 从机包括流水号(1字节),MAC(6字节),从机地址(1字节),功能码(1字节),数据长度(1字节),开关状态(2字节),功能码(2字节)。 通讯过程
四、 硬件解析进展 1. 实时采集数据 (流水号)0A .. 0F 10 11 ..19 1A ..1F 20 ..29 2A ..2F 30…99 9A ..9F A0…. 查询自组网系统状态 TX: 00 00 05 9E F4 03 4C 00 03 00 00 00 00 44 1B RX: AA 00 05 9E F4 03 4C 00 03 32 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B2 7F (ID 1,ID 2 插座 在无线网内,正常工作中) 读取温度 TX: 00 00 05 9E F4 03 4C 01 03 00 5C 00 01 44 18 RX: AB 00 05 9E F4 03 4C 01 03 02 00 00 B8 44(0度) 读取开关量输出状态 TX: 00 00 05 9E F4 03 4C 01 01 00 00 00 10 3D C6 00 00 00 00 RX: AC 00 05 9E F4 03 4C 01 01 02 01 00 B8 6C(闭合状态) RX: AE 00 05 9E F4 03 4C 01 01 02 00 00 B9 FC(断开状态) 设置单路开关状态 RX: 00 00 05 9E F4 03 4C FF 00 RX: 0E 00 05 9E F4 03 4C 01 05 00 00 00 00 CD CA(断开) TX: 0E 00 05 9E F4 03 4C FF 00 RX: 00 00 05 9E F4 03 4C FF 00 RX: 0F 00 05 9E F4 03 4C 01 05 00 00 01 00 CC 5A(闭合) TX: 0F 00 05 9E F4 03 4C FF 00 参数采集 (电压229.37,电流0.00,有功功率0.00,有功电能62.3306,功率因数0.000,CO2-0.000,用电时间1727.2,信号强度3) TX: 00 00 05 9E F4 03 4C 01 03 00 48 00 0A 45 DB RX: 00 00 05 9E F4 03 4C FF 00 RX: A2 00 05 9E F4 03 4C 01 03 14 59 99 00 00 00 00 00 03 0B 22 00 00 00 00 00 00 52 25 03 01 01 00 TX: A2 00 05 9E F4 03 4C FF 00 TX: 00 00 05 9E F4 03 4C 01 03 00 52 00 02 65 DA RX: 00 00 05 9E F4 03 4C FF 00 RX: A3 00 05 9E F4 03 4C 01 03 04 00 00 43 78 CB 21 TX: A3 00 05 9E F4 03 4C FF 00 进展及问题 能成功读取多路开关量的输出状态,并解析报文数据;能成功设置单路开关量的输出状态,并解析报文数据。 明白报文各个数据各个字节代表的含义,但缺少具体的文档说明,无法弄清楚每个字节数字组合后的运算逻辑,具体原理还待研究。 |
CopyRight 2018-2019 实验室设备网 版权所有 |