基于智能电表的红外通信协议的分析与验证林正红周晓彤杨沙李茂姝蒋璐(西南科技大学信息工程学院,四川绵阳)摘要:随着多功能智能仪表技术的逐步完善和单片机技术的发展,红外通信技术已经为电力系统自动抄表提供了一种可行的解决途径。
本文在介绍红外线通信的基本原理的基础上,根据电力行业标准《DL/T546-2007多功能电能表通信协议》的要求,具体分析和验证了在智能电表应用中的红外通信协议。
同时,设计合理的模块分别模拟真实电表和读表模块,采用软硬件相结合的方法验证智能电表红外通信协议的正确性。
关键字:智能电表;红外通信;协议Abstract: With multi-functional smart meter technology gradually improved and the development of microcontroller technology, infrared communication technology has provided a viable solution for the automatic meter reading of power system. This paper describes the basic principles of infrared communication, concretely analyses and verifies the infrared communication protocol of the smart meters’ application which is based on the power industry standard "DL/T546-2007 multifunctional energy meter communication protocol". The modules are also designed to simulate the real meter and meter reading module, using the method of combining software and hardware to verify smart meter infrared communication protocol is correct. Keywords: smart meters, infrared communication, protocol1、红外通信原理红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。
发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。
接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。
红外通信是基于调制的载波通信,其载波信号是按一定频率进行幅值调制的红外光。
调制频率有36kHz、38kHz、40kHz,其中38kHz应用最广泛。
红外通信的载波信号由红外发射二极管产生。
当传输数据“1”时,只需使发射管截止而不发射红外光即可。
当传输数据“0”时,就必须按照调制频率f(对应的周期为1/ t)的要求,控制发射管导通t/2时间然后截止t/2时间,并循环变化直至数据“0”传输结束。
简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输;红外通信接口就是针对红外信道的调制解调器。
2、智能电表的红外通信模块2.1、红外通信协议的介绍红外通信的协议有很多种,比如IRDA标准、TinyTP、IrOBEX、IrCOMM等等。
但是,以下的红外通讯协议都是采用电力工业部《DL/T546-2007多功能电能表通信协议》,本协议为主从结构的半双工通讯方式。
红外抄表器为主站,多功能电度表为从站,每个多功能电表均有各自的地址编码。
通讯链路的建立和解除均由主站发出的信息帧来控制。
每帧由帧起始符、从站地址域、控制码、数据长度、数据域、帧信息、纵向校验码及帧结束符等7个域组成。
帧格式如表1所示。
每次通讯都是由主站向按信息帧地址域选择的从站发出请求命令帧开始,被请求的从站根据命令帧中控制码的要求做出响应。
在数据编码方面,为提高传输效率和可靠性,传输时发送方数据域按字节进行加33H处理,接收方的数据域按字节减33H处理。
表1 信息帧格式注:68H——帧起始标志;A0~A5——从站(此处为电表)的地址;C——控制码;L——数据长度;DATA——数据域;CS——校验码;16H——帧结束标志。
2.2、实际电表部分TP1-读表模块红外接收头的接收引脚TP2- 读表模块串口的发送引脚TP3-读表模块红外发射头的发送引脚TP4- 读表模块串口的接收引脚图 1 红外协议验证框图—实际电表2.2.1 发送数据的分析PC机通过USB转串口和读表模块的红外发送头,发送一条读电表的指令(即利用单相红外抄表的软件发送000000000038这个表号),并将TP3连接到串口调试助手上观察,得到发送的数据(即抄表头模拟主机发送的数据)如下:FE FE FE FE 68 38 00 00 00 00 00 68 11 04 33 33 34 33 EA 16对这段数据的分析如下:1.FE FE FE FE为主机(抄表头)唤醒从机(电表);2.68为起始域;3.38 00 00 00 00 00为电表号;4.11为控制码(含义为主站发送命令帧,从站正确应答,无后续数据帧,读数据)5.04为数据域字节数;6.33 33 34 33为数据域(包含数据标识,密码,操作者代码,数据,帧序列等,数据域的结构随着控制码的功能改变而改变),传输时,发送方加上33H,接收方减去33H.都减去33H以后,为00 01 00 00 (字节从高到低排列) 对应的是当前正向有功总电能。
如果电表收到这样一串信息,会回送这个数据标识,并在其后添加上总电能的具体值(总电能的具体值也要做减去33H的处理)。
7.EA为校验码,即(68 +38+ 00 +00+ 00 +00+ 00+ 68+ 11 +04 +33+ 33 +34 +33的值),但是不计超出256的值;8.16 为结束符。
以上分析与《DTL645-2007多功能电表通信协议》中的说明一致,说明该指令完全符合协议定义的发送数据的要求。
2.2.2 发送时序的验证通过示波器观察TP2和TP3点的信号,得到如图2所示的波形(通道1是TP2的数据,通道2是TP3的数据)。
图 2 发送信号相关性分析观察发现:TP2的数据是对TP3的数据取反之后,并填充38KHz的载波以后的数据。
对发送信号的同步性分析的波形如图3所示(通道1是TP2的数据,通道2是TP3的数据)。
图 3 发送信号同步性分析通过观察发现:TP2和TP3的数据传输是同步传输的。
2.2.3 接收部分数据的分析读表模块的接收头接收到模拟电表发送的数据之后,将该数据通过串口转USB发送给PC机。
同时将TP1连接到串口调试助手1,将TP4连接到串口调试助手2,观察两路信号是否相同。
得到的数据如下:TP1的数据(串口调试助手1中观察的结果)FE FE FE FE 68 38 00 00 00 00 00 68 11 04 33 33 34 33 EA 16FE FE FE 68 38 00 00 00 00 00 68 91 08 33 33 34 33 6B 33 33 33 72 16TP4的数据(串口调试助手2中观察的结果)FE FE FE 68 38 00 00 00 00 00 68 91 08 33 33 34 33 6B 33 33 33 72 16 现在对TP1的数据进行分析,其可以分成两部分:第一部分:FE FE FE FE 68 38 00 00 00 00 00 68 11 04 33 33 34 33 EA 16以上是读表模块发送的读表请求信号,与《DTL645-2007多功能电表通信协议》进行比对(具体的分析过程在发送部分的验证中已有详细说明,在此不再叙述),发现该指令确实符合协议定义的数据要求;第二部分:FE FE FE 68 38 00 00 00 00 00 68 91 08 33 33 34 33 6B 33 33 33 72 16 以上就是电表作为从机回送给主机(抄表头)的数据,以下是对这组数据的具体分析:1.FE FE FE表示电表已经被唤醒(但此处不是必须是4个FE,实验证明可以没有FE,或者在1至4个FE);2.68为帧起始符;3.38 00 00 00 00 00为电表的地址域,不够6个字节时,之前用0补齐,低字节在前,高字节在后;4.68为帧起始符。
5.91为控制码,这里表示无后续数据帧;6.08为数据域长度,即L.且L=04H+m(其中,m为数据长度);7.33 33 34 33 6B 33 33 33为数据域。
其中33 33 34 33为数据标识,6B 33 33 33为4个数据。
数据标识都减去33H以后,为00 01 00 00 (字节从高到低排列)对应的是当前正向有功总电能,而6B 33 33 33减去33H之后为38 00 00 00(同样为高字节在后,低字节在前),这四个数据的意义是电表给抄表头回复自己的正向有功总电能是0.38kWh。
这个数据就是上位机软件发出的需要查询的结果;8.1A为校验码;9.16为结束符。
以上分析也与《DTL645-2007多功能电表通信协议》中的说明一致,说明该数据也完全符合协议定义的从站应答信号的要求。
最后通过对TP1的数据和TP4的数据进行比对,发现TP4的数据是TP1数据的第二部分,即读表模块使用的是透明传输。
也就是说读表模块只是提取了有用数据(即电表的回送信号),然后直接上传到上位机,数据的解析是由上位机软件完成的。
2.3、模拟电表部分图 4 红外协议验证框图—模拟电表前面介绍了真实表和读表模块进行正确通信后的相关数据以及红外协议的分析及验证。
为了进一步验证我们自己设计的模拟电表是否与实际电表通信的结果一致,我们在自己搭建的模拟电表的平台上,也与读表模块之间做了相同的实验。
模拟电表部分的工作原理说明:在模拟电表正确接收读表模块发送的数据之后,使用ARM开发板产生PWM 输出,构成红外输出的38KHz的载波。
同时,使用ARM开发板上的串口发送需要发送的数据,并在模拟电表模块内,将上述两路信号进行调制后,通过红外发送头发送出去。
最终,模拟电表回送给电表实际电表回复的数据时,通过上位机软件,也能得到与实际电表相同的结果,所有的数据均与实验一种采用的方法相同,并且观察到的结果也相同。