电能管理系统中智能数据网关的设计与实现
2010-09-03温阳东
温阳东, 王 恒
(合肥工业大学电气与自动化工程学院,安徽合肥 230009)
电能作为一种二次能源,随着社会的发展其使用量在大幅增加,伴随而来的是电能的浪费十分严重。为科学使用电力资源,提高资源利用效率,国家住房和城市建设部、教育部等部门对高等学校校园建筑能耗审计和建筑能耗校园统计工作都提出了相关要求。本文介绍一个电能电量计量管理系统中智能数据网关设计的相关技术。
1 数据网关的硬件设计
1.1 数据网关的功能需求
数据网关除具有电能量的采集和上传功能外,还应具有以下功能:支持数据中心命令采集模式和主动定时发送模式;数据采集周期可配置为10 min至1 h;数据网关配置32 MB的存储空间,以备网络故障时存储至少7 d的数据;1台数据网关实现对64个用户的监测、采集和上传工作;实现网关功能的系统结构框图[1]如图1所示。
1.2 主要芯片简介与原理图设计
LPC2292是一个支持实时仿真和跟踪的16/32位的RISC处理器[2],内置256 KB的高速片内Flash存储器和16 KB的SRAM,指令处理速度高达130 MIPS,同时支持32位的ARM指令集和16位的T HUMB指令集。通过对芯片的BOOT[1∶0]引脚进行设置可以改变外部存储器接口的宽度,方便与外扩的存储器连接。本次设计外扩的32 MB存储器是数据、地址和命令分时复用8位I/O口,固设置 BOOT[1∶0]=00。其自身带有的2路UART接口满足数据网关的设计要求,不需要进行串口扩展。
图1 系统结构框图
CS8900A是Cirrus Logic公司生产的以太网控制器,支持全双工通讯,内部集成一个支持IEEE802.3协议标准的 MAC引擎。CS8900A工作过程[3,4]如下:①数据的接收。CS8900A接收从以太网传来的数据帧后经过解码、去帧首和地址校验等处理存入片内缓存。在CRC校验无误后,通知主机收到数据帧,按约定的传输模式传到主机的存储区。②数据的发送。CS8900A收到主机发来的数据帧后,侦听网络是否“忙”。若“忙”,则等待直到空闲,否则立即发送数据帧。发送时,数据帧先被转移到CS8900A的缓冲区转换成以太网帧后放到网络上。
经过对LPC2292和CS8900A的分析,再加上外扩的Flash存储器、看门狗电路及实时时钟等,构成系统的电路原理图。本次设计的数据网关原理图核心部分如图2所示。
图2 以太网口和串口0部分原理图
系统中所选用Flash存储器的接口宽度为8 bits,为使整个系统数据总线宽度一致,CS8900A的/SBHE经电阻拉到高电平使其数据线的高8 bits无效。
CS8900A支持 I/O模式、Memory模式和DMA模式3种传输模式,本次设计采用I/O模式。/MEMR和/MEMW 接 LPC2292的 I/O口,通过软件使对应I/O口输出高电平关闭Memory模式。CS8900A读写控制引脚分别连接LPC2292的OE和WE引脚。CS8900A工作在8位模式时不支持中断,设计中采用查询方式接收从数据中心发来的数据。
2 嵌入式TCP/IP协议的裁剪和实现
2.1 TCP/IP协议简介
为了使基于ARM的智能数据网关实现网络化,必须在软件中实现 TCP/IP协议。TCP/IP协议作为Internet的核心协议,由于其体系结构比OSI参考模型的体系结构简单实用[5],被广泛应用于局域网和广域网中,已经成为事实上的国际标准。TCP/IP采用层次化的体系结构,从低到高分别是链路层、网络层、传输层和应用层。
2.2 TCP/IP协议的裁剪
通用计算机系统有足够的软硬件资源支持TCP/IP协议族在其内核实现,但嵌入式系统资源相对有限,必须对标准的TCP/IP协议进行裁剪。
2.2.1 以太网接口协议的实现
链路层主要是从上层协议接收或向上层协议发送数据包。本次设计采用以太网技术,因此要实现IEEE802.3所规定的CSMA/CD协议。由于CS8900A内部集成MAC引擎可以从硬件上实现以太网协议,所以驱动程序主要完成芯片初始化、数据的发送和接收。分别用以下3个函数实现[6]:
(1)uint8 InitNic(void):网卡初始化函数。负责实现网络接口层、下层物理设备驱动和数据结构的初始化。
(2)void Send-Packet(struct-pkst*Txd-Data)发送函数。根据上层协议类型、源MAC地址及目的MAC地址对数据进行打包,然后调用网卡发送函数发送数据包。
(3)uint8 Rec-Packet():接收函数。对接收到的数据包进行解包,并由处理器执行命令。
2.2.2 网络层协议的实现
网络层主要负责处理数据包在网络层的活动。IP协议作为TCP/IP协议的核心[6],为主机之间发送数据报提供无连接的不可靠的传输服务,传输的可靠性依赖上层协议来保证,并且对TCP和ICMP报文实行分流。ICMP协议中的Ping程序是用来测试2台主机之间在网络层是否连通的常用工具。它使用ICMP请求报告和应答报告来测试信宿是否可达,因此本次在ICMP中只实现Ping应答功能。另外系统需要实现ARP应答协议,把节点的IP地址解析成对应的以太网MAC地址。
(1)IP协议的实现。本协议主要完成如下2个功能[7]:对接收的IP数据报首部进行校验和检查;对IP数据报进行解析。针对本次设计,IP层只要识别是ICMP报还是TCP报,然后把报文交给相应的协议进行处理。主要函数有:①uint16 CreateIpHeadCrc(uint8*Ip),数据发送之前或接收之后调用此函数进行校验和计算;②uint8 Send-Ip-Frame(struct-pkst*TxdData,uint8*de-ip,uint8*so-ip,uint8 PROTOCOL):发送函数 ,把所要发送的数据进过处理后上传给TCP;③uint8 IP-PROCESS(uint8*RecData,uint8 num):接收函数,处理从TCP层接收的数据。
(2)ARP协议的实现。本协议负责为网络上的主机建立并维护一张IP地址到MAC地址的映射表[8]。主要函数有:①uint8 Arp-Answer(uint8*ARP-REC-PT R,uint8 num),对ARP请求报文的应答;②void Arp-Request(uint8*ip-address,uint8 num),根据IP地址在ARP缓存表中查找MAC地址,若未找到则自动向网络广播ARP请求。
2.2.3 传输层协议的实现
传输层为2台主机上对应的应用程序之间提供端到端的数据通信。本层包含传输控制协议(TCP)和用户数据报协议(UDP)2个主要协议。
TCP协议提供一种面向连接的、可靠的、全双工数据传输服务,保证端到端数据传输的可靠性。但建立一个TCP连接需要3次握手过程,而释放一个TCP连接需要4次握手过程。
UDP协议是一种面向无连接的、不可靠的传输协议。就实时性和传输速度而言,UDP协议更适合嵌入式系统,但本次设计的数据网关对可靠性要求更高,采用TCP协议。
TCP协议数据传输分为建立连接、传输数据和断开连接3个阶段。本协议是协议族中最复杂的协议,它的实现过程可用状态机描述。程序中构造一个Socket-Type结构来记录TCP连接的状态信息,具体代码略。
图3所示为数据网关发送数据时TCP/IP协议实现过程的流程图[9],具体实现时采用“零拷贝”(zero-copy)原理[10],各层之间传递的都是数据指针,只有数据被发送或者被用户应用程序取走时才进行数据搬移。接收数据的过程是此过程的逆向处理过程,按照协议格式进行解包等。
图3 TCP/IP协议实现过程流程图
3 数据网关的软件设计与调试
本次设计的网关采用前后台系统,应用程序是一个无限循环,在循环中调用各个功能模块完成各自的任务。在这一部分主要论述串口和以太网口的软件设计和调试。
3.1 串口的调试
串口实现数据网关和电表的通讯。具体过程是:①初始化串口UART0,在主函数中调用发送查询电表命令的函数。周期查询的时间在定时器中断中控制,若是单电表查询,则根据上位机传来的电表号直接调用发送查询命令的函数。电表收到查询命令后,回传数据,触发 UART0接收中断,数据的接收在中断中完成,实现网关与电表通讯的流程图如图4所示。②通过串口调试工具监测,测试结果如图5所示。
测试中设定本网关监测1~10号表,三相表或者单相表通过接收数据包中的控制码区别。通过对图5的数据进行分析可知,1号表为正常工作的三相表;2号表为三相表,发送2次查询命令,无数据回传将其置为故障状态;3号表为集中式单相表,24个用户。电表的相数、表号、状态等用一个结构体来定义,即
typedef struct
{
uint8 State-Type;//0x01单相表,0x02三相表,0x10正常工作,0x20故障
uint8 Number[6];//表号
uint8 RouteNum;//单相表所上传的电度路数,三相表无效
}meter
3.2 以太网口的调试
网关与数据中心的通讯连接采用Socket长连接方式,无数据传输时每80 s发1次心跳包。图6所示为通过软件模拟数据中心向网关发送批量查询的测试结果。图6中第1行数据为数据中心发送的批量查询命令;第2行为网关回复的任务号和电表状态,包括正常工作或者故障;第3行及以下是网关回复内容,包括批量查询的前导字符40、任务号、数据采集时间、表号及电表所要上传的数据。通过对数据的分析比较可知,上传的数据与电表采集的数据完全一致。
图6 网关与数据中心通讯的数据截图
4 结束语
本文设计的智能数据网关构建的示范系统已投入运行,该智能数据网关结构简单、可靠性高、实时性好,能满足数据中心对电能参数的实时监测和传输的要求,具有很好的推广价值。
[1]樊江涛,陈剑云.ARM处理器+DSP构架的微机馈线保护装置的研制[J].电力系统自动化,2005,29(2):78-79.
[2]韩 山,郭 云.ARM 微处理器应用开发[M].北京:清华大学出版社,2007:8-21.
[3]陈 鹏,张爱民.基于以太网控制器CS8900A实现嵌入式系统的网络互连[J].计算机应用,2002,28(12):4-6.
[4]葛辛欣.基于CS8900A的嵌入式网络接口模块设计[J].北京工商大学学报:自然科学版,2008,26(3):54-56.
[5]Nguyen V I,Benjapolakul W,Visavateeranon K.A highspeed,low-cost and secure implementation based on embedded Ethernet and Internet for SCADA systems[C]//SICE Annual Conference,2007:1692-1699.
[6]Potlapally N R,Ravi S,Raghunathan A.Cofiguration and extension of embedded processors to optimize IPSec protocol execution[J].IEEE Transactions on Very Large Scale Integraion(VLSI)Systems,2007,15(5):605-609.
[7]王原丽,王 丽.基于 ARM 的嵌入式 TCP/IP协议栈的实现[J].现代电子技术,2005,(22):4-6.
[8]雷必成.嵌入式系统中 TCP/IP协议栈的精简与实现[J].微计算机信息,2006,22(17):107-109.
[9]周立功.A RM嵌入式系统软件开发实例[M].北京:北京航空航天大学出版社,2004:436-452.
[10]季 琦,金小辉.嵌入式 T CP/IP协议栈的设计与实现[J].电子元器件应用,2008,(8):53-56.