APP下载

具有远程升级功能的小区电能监测系统

2014-09-06诸德宏张介环

电子器件 2014年4期

诸德宏,张介环

(江苏大学电气信息工程学院,江苏 镇江 212013)



具有远程升级功能的小区电能监测系统

诸德宏*,张介环

(江苏大学电气信息工程学院,江苏 镇江 212013)

摘要:针对居民小区电能仪表升级维护困难的问题,提出一种基于STM32+GPRS的无线远程升级系统设计方法。阐述了系统中主要硬件、远程升级原理并给出软件设计的关键代码,自定义无线通信协议,有效解决了升级过程中出现的传输误码问题。服务器端引入最新QT技术,界面友好、操作简单,并给出了软件设计流程及运行界面。实验证明,系统运行可靠,对推动城市居民小区电能监测现代化、智能化具有重要意义。

关键词:电能监测;远程升级;GPRS;STM32;Qt

在城市居民小区电能仪表实际工作过程中经常会遇到2种现实的困难,一是用户在使用过程中,有时可能需要改进或增加功能,二是程序本身有缺陷,经常死机等无法正常工作。要解决这样的问题,传统的方法是安排技术人员到现场重新下载程序或者更换仪表。居民小区有大量的仪表,要完成这样的更新任务费时费力。针对这种问题,本文提出一种基于GPRS无线通信技术[1],实现远程升级系统软件的方法,并自定义通信协议,有效解决了数据传输误码的问题。

1 系统总体结构

系统(如图1所示)主要由服务器端和客户端组成。服务器端指小区电能监管中心,负责监控小区内所有居民的家庭电能表。需要软件升级时,通过GPRS发送模块将待更新程序(一个可执行二进制映像文件,由完整的应用程序编译得到)发送到客户端。客户端指家庭电能表,其系统软件由IAP引导程序和应用程序组成,通过GPRS网络与服务器交互并获得待更新程序,实现远程升级。

图1 系统总体架构

1.1系统硬件设计

系统硬件总体框架如图2所示,主要硬件模块介绍如下:

(1)STM32微控制器。STM32是近年来迅速兴起的基于ARM Cortex-M3内核的微控制器[2]。Cortex-M3内核是专门设计满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域要求的高性能芯片。该芯片最高频率可达72MHz,具有512 kbyte的闪存及64 kbyte的SRAM,支持I2C,USART,SPI,CAN,USB等通信接口,自带单周期硬件乘法器,大大提高了数字信号的运算速度。

(2)GPRS模块。SIM900A是SIMCom公司推出的一款新型无线模块[3],它是专为中国市场设计的2频GSM/GPRS模块.完全采用SMT封装形式,性能稳定,外观小巧,性价比高,能满足使用者的多种需求。SIM900A采用工业标准接口,工作频率为EGSM 900 MHz和DSC 1 800 MHz,支持标准的AT指令。本系统GPRS模块如图3所示。

图2 系统硬件框图

图3 GPRS模块

(3)电能计量芯片。ATT7022D是一款高精度三相电能专用计量芯片[4],具有16 bit A/D转换精度,集成了6路二阶Sigma-Delta(Σ-Δ)ADC、参考电压电路以及所有功率、能量、有效值、功率因数以及频率测量的数字信号处理等电路。能够测量各相以及合相的有功功率、无功功率、视在功率、有功能量以及无功能量,同时还能测量各相电流、电压有效值、功率因数、相角、频率等参数,并支持全数字域的增益、相位校正,即纯软件校表。有功、无功电能脉冲输出CFl,CF2提供瞬时有功、无功功率信息,可以直接接到标准表,进行误差校正。

(4)外部扩展芯片。采用W25X32 Flash存储芯片,它具有PCB占用空间少、引脚数量少、功耗低等特点,与普通串行Flash相比,使用更灵活,性能更出色,非常适合存储文本或数据,工作电压2.7 V~3.6 V,正常工作状态下电流消耗0.5 mA,掉电状态下电流消耗1 μA。

2 系统软件设计

2.1远程升级原理

微处理器STM32内部Flash存在两段程序和一个标志区,各段分布如图4所示。

图4 STM32内部Flash分配

IAP引导程序处于地址0x8000000处,系统上电或复位后,首先执行IAP程序,它通过检测全局标志UpdateFlag的值来判断是否与服务器交互并执行更新应用程序的操作[5],否则直接跳转到应用程序处执行用户代码。应用程序处于IAP程序后的某个固定地址(0x803f8000),这2个地址之间需保证足够的空间以存放IAP引导程序。Flash中的这两段代码是2个相对独立的程序映像,它们之间互不影响,只存在简单的跳转关系。Flash尾端0x803f800处存放升级过程中需要的各种全局标志,引导程序和应用程序都可以对该标志值进行修改。

2.2通信协议定义

升级过程传输的数据是要运行的应用程序代码,所以很小的传输错误都会导致升级后系统瘫痪。系统采用GPRS无线传输,发生误码的可能性比较大,因此必须保证数据传输无误。本系统在完善的TCP/IP机制基础上自行设计应用层协议,并融入CRC16和MD5[5]校验算法,有效保证数据传输的可靠性。

升级数据报文分启动数据报文、启动确认报文,升级过程数据报文、升级过程确认报文,升级结束数据报文、升级结束确认报文3部分[6]。由于篇幅有限这里仅给出升级过程数据报文格式(表1所示)和升级过程确认报文格式(表2所示),其他过程报文格式可以此为参考。

上位机软件按此协议将待发送数据打包,通过GPRS网络发送给待升级电能仪表,电能表终端接收到数据后同样按此协议解包。每接收一包数据都会CRC16校验,待全部接收完毕后MD5再校验一次,充分确保数据传输的正确性、可靠性。

表1 升级过程数据报文格式

表2 升级过程确认报文格式

2.3软件设计

2.3.1IAP引导程序设计

IAP全称“In-Application Programming”即在应用程序中编程。IAP是一种通过微控制器的对外通信接口(如USART、I2C、CAN、USB、以太网)对正在运行程序的微控制器进行内部程序升级更新的技术。IAP技术的核心是一段预先烧写在单片机内部的IAP程序,这段程序主要负责与外部的上位机软件握手同步,然后通过外设通信接口将来自于上位机软件的程序数据接收后写入微控制器内部指定的闪存区域,最后跳转执行新写入的程序,达到程序更新的目的[7]。关键代码如下:

typedefvoid(*pFunction)(void);

pFunction Jump_To_Application;

int main()

{

… …

swich(UpdateFlag)

case0xAA66BB99://跳转到主程序

Jump_To_Application=(pFunction)(*(vu32*)(IAPSTART+4));

__MSR_MSP(*(vu32*)IAPSTART);

Jump_To_Application();

break;

case0x66AA99BB://读取外部Flash数据

ReadXflash();

break;

… …

}

2.3.2升级数据处理程序设计

主应用程序正常运行时主要完成电能数据(电压、电流、频率、功率等)采集等基本电能仪表功能并在LCD上实时显示,在接收到服务器发送的升级命令后进入升级数据处理子程序,关键代码如下:

if((RxBuf[0]==0x6A)&&(RxBuf[1]==0x6A))

{

PacketLenth=(RxBuf[3]<<8)+RxBuf[2];

PacketType=RxBuf[4];

FramType=RxBuf[5];

FramSeq=RxBuf[6];

switch(FramType)//帧类型判断

{

caseUpGradeFram://是升级报文

switch(PacketType)//报文类型判断

{

casePacketUpStart://升级启动报文

SrtDataProcess();

case PacketUpMid://升级过程报文

MidDataProcess();

casePacketUpEnd://升级结束报文

EndDataProcess();

ReplyPacket();//应答报文

}

… …

}

}

… …

UpgradeFlag=success;//置升级标志

CloseDog();//关闭看门狗,使系统复位

… …

根据协议首先判断报文头是否为6A6A,计算报文长度,报文类型,帧类型,帧序列号。然后判断帧类型以确定是升级报文,接着判断是升级启动报文、升级过程报文、升级结束报文并分别处理,数据校验正确后将数据存入外部Flash,置升级标志,关闭看门狗使系统复位,复位后执行IAP程序,将外部Flash中数据写入内部Flash相应位置,并跳转到新程序运行,完成升级过程。电能表终端运行如图5所示。

图5 远程升级运行图

3 上位机软件设计

上位机采用开源Qt图形库开发,Qt Creator作为开发环境。Qt是一个跨平台的C++图形用户界面应用程序框架,可以让开发者一次编写,多处编译,使用Qt开发的程序可以很方便的将传统PC程序移植到移动监控设备中,具有良好的拓展性[8]。软件设计流程如图6所示。

图6 上位机软件设计流程

首先向电能仪表终端发送升级启动命令,然后启动定时器,若超时并且没有收到应答帧,则重新发送升级命令,超时三次则终止升级程序。若收到正确应答帧则发送更新数据给终端仪表,并遵循没有收到正确应答帧超时三次时终止升级程序。数据发送完毕后,向电能表终端发送升级结束命令,在收到正确应答帧后升级成功。上位机设计界面如图7所示。

图7 上位机软件界面

4 结论

本文设计了基于GPRS的小区电能监测系统,并设计了监控中心上位机软件,自定义通信协议,解决了数据传输中的误码问题,提高了电能仪表维护维修效率,在实验室模拟运行稳定可靠,对工程实践具有一定的借鉴意义。

参考文献:

[1]黄强,陶正苏,宋浩.基于ARM的GPRS远程数据传输模块设计[J].电子器件,2008,31(4):1214-1218.

[2]彭刚,秦志强.基于ARM Cortex-M3的STM32系列嵌入式微处理器应用实践[M].北京:电子工业出版社,2011:1-31.

[3]希姆通信息技术有限公司.SIM900A硬件设计手册[S].2010.

[4]珠海炬力集成电路设计有限公司.ATT7022D用户手册[S].2009.

[5]毛熠,陈娜.MD5算法的研究与改进[J].计算机工程,2012,38(24):111-114.

[6]佟为明,马培锋,祁国华.一种分布式生产企业能源计量系统[J].电子器件,2007,30(1):274-278.

[7]蒙博宇.STM32自学笔记[M].北京:北京航空航天大学出版社,2012:395-407.

[8]Jasmin Blanchette,Mark Summerfield.C++GUI Programming with Qt4[M].北京:电子工业出版社,2008:1-50.

诸德宏(1968-),男,汉族,江苏溧水人,江苏大学电气信息工程学院教授,博士,主要研究方向为磁传动系统的检测与控制,电磁技术在农业工程中的应用,zhudh@ujs.edu.cn;

张介环(1983-),男,汉族,江苏徐州人,江苏大学电气信息工程学院硕士研究生,主要研究方向为嵌入式系统开发。

ResidentialElectricityMonitoringSystemwithRemoteUpgradeFunction

ZHUDehong*,ZHANGJiehuan

(School of Electrical and Information Engineering,Jiangsu University,Zhenjiang Jiangsu 212013,China)

Abstract:For the tough problems of electric energy meter’s upgrade and maintenance in residential areas,put a design method of remote upgrade system was put forward based on STM32+GPRS.The main hardware in the system and the principle of remote upgrade were expounded,the key code of the software design was also given to solve effectively the transmission error problems in the upgrade process through the custom of the wireless communication protocol.Server software is friendly and simply operated by introducing the latest QT technology,Practice proved that the system is running well and has an important significance in promoting modern and intelligent power monitoring in urban residential areas.

Key words:power monitoring;remote upgrade;GPRS;STM32;Qt

doi:EEACC:721010.3969/j.issn.1005-9490.2014.04.032

中图分类号:TM932

文献标识码:A

文章编号:1005-9490(2014)04-0733-04

收稿日期:2013-07-23修改日期:2013-08-13