需求侧管理型能效监测终端的设计
2015年03月10日 11:00 发布者:designapp
在能效监测现场,能效监测终端是主要实现采集物理量(温度、流量、电量等)的设备,且是用户交互的唯一硬件设备,传统的能效监测终端等同于能效采集终端,与用户的交互很少。在能效需求侧管理体系中,作为需求侧的主要设备,能效监测终端需要承担与监控主站的双向交互,以及与用户的双向交互任务。本文研究并实现了一种基于多媒体显示、具备双向交互功能的能效监测终端,为能效的需求侧管理提供了可靠的实现手段。
1 硬件设计
首先本文从硬件组成上来分析实现能效监测终端的细节。终端由以下几大核心硬件单元组成:具备多媒体协处理器的中央处理器Freescale i.mx51、LVDS液晶显示接口、以太网RJ45、433MHz微功率无线、GPRS接口、基于RS485的数字通信接口。硬件组成原理如图1所示。
图1 硬件组成
如图1所示,硬件设计总体包含三部分,即数据通信接口部分、核心处理部分、人机交互部分。其中:
1)数据通信接口包含2个RS485串口,用于连接数字型传感器;1个R232用于本地维护;1个RJ45以太网接口,用于与后台主站的远程连接;1路433MHz的微功率无线通信接口,用于无线数据采集;1路GPRS通信接口,用于远程连接后台主站。可以看出,为了增强通信适应性,终端在前端采集上预置了多路独立串口,后端远程通信预置了以太网和GPRS接口,而这些接口的基础均为独立串口。
2)核心处理部分由i.mx51、NAND FLASH、SDRAM构成最小系统,NAND FLASH存储系统映像和文件系统,SDRAM为系统程序执行提供内存,在系统启动阶段为程序重定向提供运行空间。
3)人机交互部分由LVDS液晶接口和触摸控制接口组成,LVDS液晶接口具备很强的抗电磁干扰特性,数据防干扰能力强;触摸屏接口采用在工业领域应用广泛的电阻式触摸屏接口,以适应复杂苛刻的现场环境。
除以上几部分,终端电源采用线性电源方案设计,如图2所示。
2 嵌入式软件设计
能效监测终端的软件由启动程序、嵌入式Linux操作系统层、中间件层、应用程序层组成。
2.1 启动程序bootloader设计
图2 电源原理图
启动程序bootloader是板级嵌入式软件系统的基础,终端上电执行的第一部分程序便是bootloader。实现终端主要硬件接口的驱动、系统启动代码等。系统启动代码完成处理器初始化、内存初始化、堆栈空间准备、程序代码重定向等系统启动的准备工作。启动程序流程如图3所示:
以上流程较为特殊的地方在于程序重定向的过程:i.mx51冷启动后,NAND FLASH控制器中有2K 的SRAM会被用作boot RAM,根据硬件设计如果支持从NAND FLASH启动的话,i.mx51会将NAND FLASH中的前2K的数据自动拷贝到NAND FLASH 控制器中的 RAM中,并且自动跳转到该2K RAM的开始地址 0xD0000000开始执行。bootloader固件被烧写到NAND FLASH的0地址处,所以bootloader的前2K代码被拷贝到0xD0000000。
2.2 特殊的驱动程序设计
能效监测终端的软件基于Linux系统设计完成,而典型的Linux系统框架具备常用的串口UART驱动、FLASH驱动等。但是对于较为特殊的以太网驱动、433MHz驱动,需要做特殊的驱动程序设计,特征如下:
a)本文所研究的能效监测终端在以太网通信上有较特殊的要求,因此需做特殊的移植和修改,使得以太网的驱动支持直接收发以太网数据包。基本思路为保持原有驱动框架不变,(1)加入以太网读写接口;(2)修改以太网数据发送接口,截断原来的发送数据接口;(3)修改以太网数据接收接口,使得数据接收后不直接向上层递交而是送入自定义内存中。
b)433MHz的驱动实现为字符型驱动,驱动的工作流程为:初始化设备即初始化对应管脚并使能中断;按照433MHz的通信协议构建数据包并发送给无线基带芯片Si4432;当Si4432接收到数据与协议包格式不符时,产生中断,重发数据。
2.3 GUI中间件
为了实现需求侧管理,显示交互是终端必备的功能。本文研究实现了基于framebuffer的轻量型GUI中间件,是下一步编写图形应用程序的基础。本文实现的轻量型GUI中间件,具有如下的几个组成部分:
1)用户交互模块,为应用程序提供API接口函数,屏蔽了GUI的实现细节。
2)对象管理,实现对窗口环境中的逻辑对象的组织管理。包括对象的添加和删除,GUI窗口显示的维护,如窗口切换、焦点切换、对象的隐藏和恢复等操作引发的对象属性的更新,还有对不同控件的各种事件的响应。
3)基本图形组件,实现了对显示输出设备的操作。一般独立于具体的设备驱动程序,与物理设备之间形成“设备抽象层”。
4)消息驱动机制,负责GUI的消息接收和与其它任务的通讯以及消息队列的维护。
5)定时器及显存管理,定时器用于向服务器发送定时器消息,主要用于消息队列的管理和定时等。显存管理主要用于消除显示过程中出现的屏幕闪烁现象。
消息驱动机制是轻量型GUI中间件最大化利用有限资源实现GUI操作的重要手段,硬件设备(比如按键)产生动作事件,系统生成消息,消息分发至对应的消息处理任务。在未收到消息时,消息处理任务维持消息队列循环等待,如图4所示。
图3 启动流程图
图4 应用程序流程图
GUI中间件采用了客户/服务器的工作模式,为了减轻服务器端的负荷,本文的GUI只是把输入设备事件处理和显示输出任务交给服务器,以此提高执行速度。
应用程序调用GUI中间件的图形库、组件库等,调用机制与windows的消息响应机制类似。如调用图表绘制组件,应用程序前端显示刷新组件,应用程序后端进入消息循环,等待数据处理任务的消息,实现数据的响应刷新。
2.4 应用程序及数据传输协议
终端具备三大主体功能:数据采集、数据处理和存储、数据显示与通信。借助硬件和底层软件的支持,应用程序实现流程如下图4。
应用程序由图形显示模块、服务器交互通信模块、数据采集模块、数据分析和存储模块、异步数据通信模块等组成。其中,与服务器采用优化的JSON协议作为基础协议,实现数据的实时同步更新。
JSON是一种轻量级的数据通信协议,一定程度上类似XML协议,但支持的数据格式更加广泛,通信更加高效。终端实现JSON协议解析,主要依靠两个解析类实现:JSONObject和JSONArray。其中,JSONObject用于把对象型的JSON数据转化成JSONObject对象,然后使用get系列方法获取对象属性的数据,最常用的方法是getString;JSONArray用于把数组型的JSON数据转化成JSONArray对象,该类所提供方法和JSONObject类基本相同,只不过其中采用的get系列方法的参数都是整型,代表数组型数据的位置索引。
各功能模块实现为轻量级线程,线程间采用管道、信号量等进行通信。借组MySQL数据库实现对能耗数据的存储。
终端做为需求侧管理的终端设备,需要维持与后台主站的稳定网络连接,此部分采用独立的线程负责处理网络连接,监测连接状态,断线重连;采用独立的数据收发线程,避免数据的拥塞,提高响应的实时性。
数据的变化,均在界面定时器的统一调度下,进行显示的同步以及按键操作的响应。
3 终端软件优化
对能效监测终端而言,因为其数据集中度高,且频繁进行数据通信,因此优化软件实现,提高性能是十分重要的工作。结合实际研发过程,对所涉及到的软件优化技术进行介绍:
1)异步通信优化:在能效监测终端的数据流向中,采集数据通过网络传输至服务器,通常比较耗时,同时本地显示的响应却很快。正确的做法是在新的线程中准备好数据,然后再通知主线程异步的获取数据并显示。
2)避免内存泄露:内存泄露指的是由于某些原因导致系统内存过度消耗的问题。在内存资源有限的能效监测终端中,内存泄露尤其重要。避免内存泄露的方法在本文所研究的能效监测终端软件中包括:程序逻辑的内存泄露,即注意新创建对象在使用完后一定要销毁,即使设置为NULL,也不能保证系统垃圾回收器能够回收这些对象的资源;在存储数据时使用到了数据库,在使用数据库时如果没有关闭游标,将会造成系统运行速度变慢;位图资源在不使用时,应该先调用recycle方法释放内存,然后再将其设置NULL。
4 结语
本文对需求侧管理型能效监测终端的设计进行了深入研究。通过对终端的软硬件进行方案设计,并最终实现了的软硬件设计。在实际应用中,需求侧管理型能效监测终端,不仅具备能效数据采集基础功能,同时还具备能效数据图形化显示,远程监控,需求侧响应功能,可用于实现依据能效情况安排生产调度,实现能效预警等功能。