最近在做电量负荷预测的研究过程中需要采集实时用电负荷,需要一款智能电表采集数据,调试此智能电表的过程中需要发送和解析报文,特此记录。
文章目录
一、DL/T645-2007协议介绍
DLT645协议是一种国内电表远传协议,与Modbus协议类似,采用请求应答式交互模型,采集器和电表一问一答进行通信,电气层可以是经典的RS485有线通信,也可以是非接触式红外无线通信。DLT645是国内电力行业通信标准,国网南网的表基本都支持,距今为止有两个版本,DL/T645-1997协议和DL/T645-2007协议,以下简称97协议和07协议,两者帧结构类似,新出厂的表具都会支持07协议,电表厂商为了向前兼容,支持07的表,会同时支持97协议,用两种协议都可以进行通信。
1、DL/T645-2007协议格式
- 每条数据由:帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成,每部分由若干字节组成
- 一般在起始符前面会有0~4个FE不等,程序主站发送指令时,直接发送4个FE即可,但是从站回复不一定带几个FE或不带FE
68 AA AA AA AA AA AA 68 11 04 33 33 34 33 AE 16
帧起始符:68
地址域: AA AA AA AA AA AA
帧起始符:68
控制码:11
数据域长度:04
数据域:33 33 34 33
校验码:AE
结束符:16
2、地址域
地址域由6个字节组成,地址域传输时低字节在前,高字节在后。以下图智能电表为例,编号为220208005371,该厂家定义的电表地址为71 53 00 08 02 22。
3、控制码
这部分类似于Modbus的功能码,但是比功能码更加复杂,所携带的信息更多,程序根据这个控制码C判断后续的操作。
- 以主站读数据的功能码为例,根据上图可以得出D7~D0二进制为0001 0001,转化为16进制为:11
- 以主站写数据的功能码为例,根据上图可以得出D7~D0二进制为0001 0100,转化为16进制为:14
- 以从站读数据的功能码为例,根据上图可以得出D7~D0二进制为1001 0001,转化为16进制为:91
4、数据域长度
04,表示包含4个字节的数据。
5、数据域
- 数据域包括数据标识、密码、操作者代码、数据、帧序号等,其结构随控制码的功能而改变
- 数据域传输时低字节在前,高字节在后,传输时发送方按字节进行加33H处理,接收方按字节进行减33H处理
以读取电压为例:
发送 68 71 53 00 08 02 22 68 11 04 33 32 34 35 A3 16
发送的数据域为33 32 34 35,按减33H处理后为 00 FF 01 02,低位在前高位在后,对应协议标准文件中的电压数据块
应答 68 71 53 00 08 02 22 68 91 0A 33 32 34 35 8C 55 33 33 33 33 D6 16
应答数据域为33 32 34 35 8C 55 33 33 33 33
其中33 32 34 35为数据标识处理后为02 01 FF 00,即电压数据块
8C 55 33 33 33 33数据按减33H处理后得到59 22 00 00 00 00 ,转为十进制为22818,小数点往前移两位得到228.18V
常用的数据标识有:
电压数据:0201FF00
电流数据:0202FF00
瞬时视在功率:0205FF00
瞬时总有功功率:0203FF00
瞬时总无功功率:0204FF00
瞬时总视在功率:0205FF00
功率因数数据块:0206FF00
零线电流:02800001
正向有功总电能:0001FF00
反向有功总电能:0002FF00
组合无工1总电能:0003FF00
组合无工2总电能:0004FF00
正向有功总最大需量及发生时间:01010000
运行状态字:040005FF
电网频率:02800002
当前有功需量:02800004
6、校验码
从第一个帧起始符开始到校验码之前的所有各字节的模 256 的和,即各字节二进制算术和,不计超过 256 的溢出值。
二、Modbus协议介绍
Modbus协议目前存在Modbus RTU、Modbus ASCII、Modbus TCP三个版本。
- Modbus RTU协议是一种紧凑的,采用二进制表示数据的方式,带有循环冗余校验的校验和;
- Modbus ASCII协议是一种人类可读的,冗长的表示方式,采用纵向冗余校验的校验和;
- Modbus TCP协议,这种方式不需要校验和计算。
大多数Modbus设备如:液位计、流量计、智能电表等通过串行通信,采用Modbus RTU和Modbus ASCII协议。PLC设备一般通过TCP/UDP连接,采用Modbus TCP协议。因为设备的限制和串行通信的需求,也可以采用Modbus RTU over TCP/UDP的通信方式,即通过TCP/UDP连接,但是采用Modbus RTU协议。
1、Modbus RTU
Modbus RTU为传感器类设备、普通智能电表常用的协议一定要弄清楚。
请求:01 03 00 00 00 02 C4 0B
01:设备地址 ,设备地址为1
03:功能码 ,当前为03读取请求
00 00:寄存器起始地址,从00 00寄存器开始读取
00 02:读取寄存器长度 ,读取2个长度,对应回复4个字节
C4 0B:CRC效验和
回复:01 03 04 00 0C 00 02 BB F1
01:设备地址 ,设备地址为1
03:功能码,当前为03读取回复
04:数据长度 ,包含4个字节的数据
00 0C:寄存器1数值
00 02:寄存器2数值
BB F1:CRC效验和
2、Modbus ASCII
同一条命令用Modbus RTU和Modbus ASCII方式表现出来,虽然在命令长度上有很大区别(ASCII为RTU的两倍),但表达的意思是完全一样的,所以不建议使用。
请求:3A 30 31 30 33 30 30 30 30 30 30 30 32 46 41 0D 0A
3A:起始符
30 31:设备地址
30 33:功能码
30 30 30 30:寄存器起始地址
30 30 30 32:读取寄存器长度
46 41:LRC效验和
0D 0A:结束符
回复:3A 30 31 30 33 30 34 30 30 30 43 30 30 30 32 45 41 0D 0A
3A:起始符
30 31:设备地址
30 33:功能码
30 34:数据长度
30 30 30 43:寄存器1数值
30 30 30 32:寄存器2数值
45 41:LRC效验和
0D 0A: 结束符
3、Modbus TCP
因为以TCP为连接,有TCP效验保证数据准确,所以协议中取消了效验和。
请求:00 00 00 00 00 06 01 03 00 00 00 02
00 00:事务标识符,当前为第几次通信,回复与一直,可以通过这项判断请求与指令是否匹配
00 00:协议标识符
00 06:剩余长度
01:设备地址
03:功能码
00 00:寄存器起始地址
00 02:读取寄存器长度
回复:00 00 00 00 00 07 01 03 04 00 0C 00 02
00 00:事务标识符
00 00:协议标识符
00 07:剩余长度
01:设备地址
03:功能码
04:数据长度
00 0C:寄存器1数值
00 02:寄存器2数值
三、智能电表调试
1、智能电表介绍
- 本次采用浙江正泰仪器仪表有限责任公司的DDSU666.001型单相电子式电能表(导轨)。
DDSU666型单相电子式电能表(导轨)(以下简称“仪表”)是针对电力系统、通信行业、建筑行业等电力监控和电能计量需求而设计,为新一代智能仪表,集测量、通讯于一体,主要用于电气线路中电压、电流、功率、频率、功率因数、有功电能等电参量的测量与显示。可通过RS485通讯接口与外部装置实现组网;采用准 DIN35mm导轨式安装,结构模数化设计,具有体积小、易安装、易组网等优点;广泛应用于工矿企业、宾馆、学校、大型公建内部电能考核与监测。
- 工作原理:
仪表通过采样电路将电压、电流信号转换成 MCU可识别的信号,MCU通过计算采样电路中的信号将其计算及转换成电能、功率、功率因数等电参量,并通过显示电路显示给用户,同时将数据保存到存储电路中,另外该仪表也可通过通讯电路与其他符合本仪表接口及协议的通讯设备进行通讯。仪表工作原理框图如图所示:
- 通讯功能 :
仪表采用 RS485通信方式,波特率可设为 1200、2400bps、4800bps、9600bps。 同一条通讯线路上最多可以同时连接 32个仪表,每个仪表均可设定其通讯地址,通讯连接应使用带有铜网的屏蔽双绞线,线径不小于 0.5mm2 。布线时应使通讯线远离强电电缆或其他强电场环境,最大传输距离为 1200m,典型的网络连接方式如图,用户可根据具体情况选用其他合适的连接方式。
- 连接方式:
2、智能电表本地联调
使用USB转485的工具连接智能电表,USB连接到电脑上,使用串口调试助手发送报文和接收报文,当本地调试测试无误后再将智能电表添加负载并连接到智能网关进行部署。
645报文
查询设备地址
发送 68 AA AA AA AA AA AA 68 11 04 33 33 34 33 AE 16
应答 FE FE FE FE 68 71 53 00 08 02 22 68 91 08 33 33 34 33 33 33 33 33 F2 16
查询电压
发送 FE FE FE FE 68 71 53 00 08 02 22 68 11 04 33 32 34 35 A3 16
应答 FE FE FE FE 68 71 53 00 08 02 22 68 91 0A 33 32 34 35 8C 55 33 33 33 33 D6 16
查询有功功率
发送 FE FE FE FE 68 71 53 00 08 02 22 68 11 04 33 33 34 33 A2 16
应答 FE FE FE FE 68 71 53 00 08 02 22 68 91 08 33 33 34 33 33 33 33 33 F2 16
查询电流
发送 FE FE FE FE 68 71 53 00 08 02 22 68 11 04 33 32 35 35 A4 16
应答 FE FE FE FE 68 71 53 00 08 02 22 68 91 0D 33 32 35 35 33 33 33 33 33 33 33 33 33 F8 16
切换为modbus协议
发送 FE FE FE FE 68 71 53 00 08 02 22 68 14 0E 33 33 35 3D 35 33 33 33 33 33 33 33 33 33 BA 16
modbus报文
查询电压
发送 47 03 20 00 00 02 C1 6D
应答 47 03 04 43 62 CC CD FD 38
查询电流
发送 47 03 20 02 00 02 60 AD
应答 47 03 04 00 00 00 00 DD F7
查询设备地址
发送 47 03 00 06 00 01 6A AD
应答 47 03 02 00 47 71 B9
切换为645协议
发送 47 10 00 05 00 01 02 00 01 7D A6
应答 47 10 00 05 00 01 1F 6E
3、智能电表与网关联调
- 边缘计算网关可以定时发送modbus报文采集电能数据,并通过MQT、HTTP、TCP等协议将数据发送到处理数据的后台服务器对数据进行处理,比如负荷预测等等。
- 智能网关选用佰马科技的BMG700边缘计算网关,产品采用高性能的工业级高端处理器,配备丰富的数据采集、控制与传输接口,集2G/3G/4G/NBIoT/GPS/WiFi/有线等多种通信方式,集成强大的本地存储和外扩存储功能,为客户整合提供数据采集、本地存储、多种协议转换、智能网关、安全网关、全网通/4G 无线通信、数据处理转发、VPN虚拟专网、WIFI 覆盖、本地与远程控制等功能。产品采用 Linux 操作系统,集成 Python 开发环境和 C 语言开发环境,支持 MQTT,HPPT,TCP,UDP等多种通讯协议,能进行本地采集和数据简单的计算功能。
- 按照工业网关和智能电表的接线要求,将智能电表的485接口A,B与工业网关的COM口相连接。按照工业网关的说明书,将其他的电源线,4G天线和WIFI天线连接,最后将工业网关通过网线与电脑进行连接,进入工业网关的配置界面。分别配置采集的频率,串口的基本参数,MODBUS规则,上报的服务器和上报的协议。
- 采集的频率
- 串口基本参数
- Modbus规则
- 采集结果
- 上报结果
原创文章,作者:happytang,如若转载,请注明出处:https://www.wudianban.com/zndbmodbus.html