【本文发布于https://blog.csdn.net/Stack_/article/details/132946097,未经许可不得转载,转载须注明出处】
先用电表厂家提供的上位机进行通讯并拦截数据,再对照协议文档进行以下分析:
一、读取从站地址/表号
准备:了解读地址的协议格式

请求帧
读地址方式
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|
| FE FE | 68 | AA AA AA AA AA AA | 68 | 13 | 00 | DF | 16 | 
或者读数据方式
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识(DI0-DI3) | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE | 68 | AA AA AA AA AA AA | 68 | 11 | 04 | 34 37 33 37 | B6 | 16 | 
前导字节:作用是唤醒接收方,FE的个数不强求,各厂家自定,给某些电表发送前导码反而是不会回应的,请求数据时不发送即可。
校验码:第一个起始码68至校验码前一个字节的和取低8位。
数据标识:34 37 33 37,各减去33H,得01H 04H 00H 04H,传输是低字节在前的,故实际是04 00 04 01。对应下图标识码,该标识读取通信地址,即表身上的编号。

应答帧
读地址方式的应答
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE FE FE | 68 | 00 51 44 18 11 17 | 68 | 93 | 06 | 33 84 77 4B 44 4A | 45 | 16 | 
或者读数据方式的应答
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE FE FE | 68 | 00 51 44 18 11 17 | 68 | 91 | 0A | 34 37 33 37 33 84 77 4B 44 4A | 1C | 16 | 
前导码:有的电表没有,有的电表有但个数不定,接收时忽略即可。
地址 : 171118445100
标识:34 37 33 37,和请求帧携带的数据标识一致。
数据:33 84 77 4B 44 4A ,还原为BCD码(减33H)后正是地址 17 11 18 44 51 00
获取到通信地址后,使用该地址向从机请求电能数据。
二、读取计量数据
了解读数据的协议格式

1、读取总电能
请求帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识(DI0-DI3) | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE | 68 | 00 51 44 18 11 17 | 68 | 11 | 04 | 33 33 33 33 | 86 | 16 | 

数据标识: 33 33 33 33 即 00 00 00 00,有功总电能
应答帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE FE FE | 68 | 00 51 44 18 11 17 | 68 | 91 | 08 | 33 33 33 33 3B 33 33 33 | DE | 16 | 
数据:3B 33 33 33,即00 00 00 08,值为8,总电能分辨率为0.01,所以得0.08kWh
2、读取A相电压
请求帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识(DI0-DI3) | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE | 68 | 00 51 44 18 11 17 | 68 | 11 | 04 | 33 34 34 35 | 8A | 16 | 

 数据标识: 33 34 34 35 即 02 01 01 00,A相电压
应答帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE FE FE | 68 | 00 51 44 18 11 17 | 68 | 91 | 06 | 33 34 34 35 4C 55 | AD | 16 | 
数据:4C 55,即22 19,值为2219,电压分辨率为0.1V,所以得221.9V
3、读取A相电流
请求帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识(DI0-DI3) | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE | 68 | 00 51 44 18 11 17 | 68 | 11 | 04 | 33 34 35 35 | 8B | 16 | 

应答帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE FE FE | 68 | 00 51 44 18 11 17 | 68 | 91 | 07 | 33 34 35 35 33 33 33 | A7 | 16 | 
数据: 33 33 33,即00 00 00,值为0,电流分辨率为0.001A
4、读取A相有功功率
请求帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识(DI0-DI3) | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE | 68 | 00 51 44 18 11 17 | 68 | 11 | 04 | 33 34 36 35 | 8C | 16 | 

应答帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE FE FE | 68 | 00 51 44 18 11 17 | 68 | 91 | 07 | 33 34 36 35 33 33 33 | A8 | 16 | 
数据: 33 33 33,即00 00 00,值为0,功率分辨率为0.0001kW
5、读取电网频率
请求帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识(DI0-DI3) | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE | 68 | 00 51 44 18 11 17 | 68 | 11 | 04 | 35 33 B3 35 | 0A | 16 | 

应答帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE FE FE | 68 | 00 51 44 18 11 17 | 68 | 91 | 06 | 35 33 B3 35 36 83 | 45 | 16 | 
数据: 36 83,即50 03,值为5003,频率分辨率为0.01Hz,所以得实际值50.03Hz
三、修改通信波特率
准备:了解修改波特率的协议格式

请求帧(修改为4800bps)
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 特征字 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE | 68 | 00 51 44 18 11 17 | 68 | 17 | 01 | 43 | 00 | 16 | 

| 波特率 | 19200 | 9600 | 4800 | 2400 | 1200 | 600 | 
|---|---|---|---|---|---|---|
| 特征字 | 73(40) | 53(20) | 43(10) | 3B(08) | 37(04) | 35(02) | 
应答帧
| 前导码 | 起始码 | 地址域(A0-A5) | 起始符 | 控制码 | 数据域长度 | 数据域/数据标识 | 校验码 | 结束符 | 
|---|---|---|---|---|---|---|---|---|
| FE FE FE FE | 68 | 00 51 44 18 11 17 | 68 | 97 | 01 | 43 | 80 | 16 | 
附、单片机读取
代码
加入要读取的数据项到list中

解析电表回复的数据

成果展示

| 名称 | 数值 | 
|---|---|
| 总电能 | 96.37kWh | 
| 正向电能 | 96.37kWh | 
| 反向电能 | 0.00kWh | 
| A相电压 | 225.7V | 
| A相电流 | 0.564A | 
| A相有功功率 | 0.0815kW (81.5W) | 
| A相无功功率 | 80.0383kvar ?? 感觉数值有问题 | 
| A相视在功率 | 0.0000kVA | 
| A相功率因数 | 0.641 | 
| 电网频率 | 49.98Hz | 

| 名称 | 数值 | 
|---|---|
| 总电能 | 96.55kWh | 
| 正向电能 | 96.55kWh | 
| 反向电能 | 0.00kWh | 
| A相电压 | 223.6V | 
| A相电流 | 9.510A | 
| A相有功功率 | 2.1293kW (2129.3W) | 
| A相无功功率 | |
| A相视在功率 | |
| A相功率因数 | 1.000 | 
| 电网频率 | 50.01Hz | 


 
                   
                   
                   
                   
                            
 
                             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   1万+
					1万+
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            