资源描述
西南科技大学 信息工程学院 通信专业学术论文
基于智能电表的红外通信协议的
分析与验证
林正红 周晓彤 杨沙 李茂姝 蒋璐
(西南科技大学信息工程学院,四川绵阳)
摘要:随着多功能智能仪表技术的逐步完善和单片机技术的发展,红外通信技术已经为电力系统自动抄表提供了一种可行的解决途径。本文在介绍红外线通信的基本原理的基础上,根据电力行业标准《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, protocol
1、红外通信原理
红外通信是利用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
68H
C
L
DATA
CS
16H
注: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 16
FE FE FE 68 38 00 00 00 00 00 68 91 08 33 33 34 33 6B 33 33 33 72 16
TP4的数据(串口调试助手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开发板上的串口发送需要发送的数据,并在模拟电表模块内,将上述两路信号进行调制后,通过红外发送头发送出去。
最终,模拟电表回送给电表实际电表回复的数据时,通过上位机软件,也能得到与实际电表相同的结果,所有的数据均与实验一种采用的方法相同,并且观察到的结果也相同。
2.4、使用模拟读表模块部分
2.4.1模拟读表模块的硬件实现
通过上位机向模拟读表模块(包括arm7单片机和红外模块)发送读表请求指令,通过模拟读表模块与实际电表进行通信,具体如下所示:
图 5 模拟读表模块与实际电表通信
2.4.2 模拟读表模块的软件实现
注:以下提到的UARTx为模拟读表模块中主处理单片机(arm7)的UART0、UART1。
在本程序中,通过UART0完成上位机与读表模块的通信,通过UART1完成读表模块与实际电表的通信:
首先上位机通过串口向arm的UART0 发送数据,UART0收到数据后,进入UART0接收中断服务程序,在中断服务程序中,将UART1的中断关闭(避免请求电表信号的反射数据被上传到上位机),同时将上位机发送过来的数据通过UART1的TXD向红外模块发送数据,在UART0的RXD收到第20个字节的数据时,在UART0中断服务程序里面将使能UART1的接收中断。
然后使UART1可以通过中断方式来接收电表回送的数据,在UART1的中断服务程序中,通过UART0的TXD向上位机传送数据,至此完成通信过程。
具体实现流程图(主程序流程图)如图6所示。
图 6 主函数流程图
2.4.3 通信建立的结果
当模拟读表模块和实际电表通信建立成功后,上位机软件中可以正确显示需要从实际电表中读取回来的数据,如图所示:
1、 与电表号为000000000038的电表建立通信后的结果:
图7 通信结果1
与电表号为000000000038的电表通信建立成功后,上位机软件中显示如上图所示,0.39kwh为所读电表的当前功率,与实际电表中显示的数据相同,说明通信建立是成功的。
2、与电表号为0123457073的电表建立通信后的结果:
图 8 通信结果2
与电表号为0123457073的电表通信建立成功后,上位机软件中显示如上图所示,0.7kwh为所读电表的当前功率,与实际电表中显示的数据相同,说明通信建立是成功的。
由此证明,我们的软件和硬件的实现方案都是可行的。
3、总结
在实际的通信过程中,上位机软件通过读表模块发送读表请求信号,在电表接收到正确的读表请求信号之后,电表回送对应的数据。而在回送过程中,读表模块只是同步上传了电表回送的信号,最后数据解析是在上位机上完成的。同时,经过在整个通信过程中对智能电表中红外通信的实际分析和验证,得到所有的数据都是完全满足《DTL645—2007多功能电表通信协议》要求的。
参考文献:
[1] DL/T645-2007,多功能电能表通信规约[S].北京:中国电力出版社,2007.
[2] 储昭碧,冯小英.基于PWM调制的多功能电能表红外通信实现[J].仪表技术,2007,(12):0001-0003.
[3] 邓泽平.一种多用途电度表的红外通讯问题[J].湖南电力,2003,23(4):56-58.
[4] 赵杰卫,卢文冰,胡红.一种红外无线抄表系统实现方案[A].2007年研究综述与技术论坛专刊[C].北京:中国电力教育,2007:367-369.
[5] 刘文君.基于单片机的红外通讯系统[J].电脑知识与技术,2010,6(24):6723-6724.
[6] 王柏林,侯勇.多功能电度表及红外抄表器的红外通讯设计[J].电测与仪表,2001,38(11):33-37.
9
展开阅读全文