远程抄表系统集中器的设计与实现

2019-04-14 12:28发布

远程抄表系统集中器的设计与实现【摘 要】:   本文设计了一种用于远程抄表系统的高性能集中器,对集中器的图形界面、数据处理和远程通讯的实现进行了详细阐述。该集中器采用基于S3C2410的硬件平台,实现了液晶屏、以太网等接口;软件移植并使用嵌入式GUI、嵌入式数据库、嵌入式web服务器,在满足新的技术标准要求的同时,大幅度提高了系统的整体性能。关键词:集中器S3C2410 嵌入式GUI 嵌入式数据库 嵌入式web服务器随着一些新的技术标准的出台,以及新的需求的出现,国内自动化抄表系统以往的技术所基于的软硬件平台已经无法满足们性能要求如集中器要求多大容量数据存储、大屏幕液晶显示、web服务等本文在介绍远程抄表系统总体框架之后,着重讨论了高性能集中器的软、硬件实现集中器硬件采用三星公司S3C2410处理器,简化了图形接口、移动存储、网络接口等硬件没汁;软件采用嵌入式Linux操作系统,引入嵌入式数据库sqlite、嵌入式图形界面miniGUI和嵌入式web服务器GoAhead,分别实现数据管理、人机接口和web服务。    1 系统总体结构系统结构分为3层:采集终端负责采集单个用户电能表电能量信息,并将其处理后通过信道将数据传送到上一级设备集中器。集中器收集各采集终端数据,并进行处事储存,同时和监控站或手持单元进行数据交换监控站通过信道采集集中器中的信息,并进行处理和管理本系统中,监控站和集中器之间采用以太网或GPRS通讯、集中器和采集终端之间采用4线485总线通讯采集终端和用户电表之间通讯方式视电表而定,如果是脉冲电表,直接连接;如果是485电表,则通过485总线连接。   2 硬件结构 (1)需具有远程通讯功能,可将所采集的数据信息通过通讯网(宽带网络、GPRS、CDMA)送回监控站。 (2)采用电子硬盘保存资料,即电源长时间断电资料也能长时间保存而不丢失。资料保存的时间为:3200只电能表60min l点的资料不少于90天。 (3)具有大屏幕液晶显示和按键,可方便地查看装置及电表的设置参数、实时随机抄读计示值、电表分时电量、费率、峰谷平电量。集中器新的技术标准反映了技术发展的趋势以及新的需求方向。针对这些需求,本系统中器采用ARM9微处理器平台,满足系统要求的前提下,减少了外围电路的扩展,提高系统整体效能。   人机接口采用240x320液晶屏和触摸屏接口。为兼顾用户习惯,留用了4个操作按键。与远程监控站之间通过以太网进行通讯。对于没有以太网的小区,可以选用GPRS或者CDMA模块进行通讯。   串口的扩展采用MAX3232。485通讯采用芯片MAXl482。以太网芯片采用比较常用的10M/l00M自适应以太网接口芯片DM9000。由于对电能数据存储点数要求较大,本系统采用了128M的SD卡进行存储。可以估算集中器对数据存储容量的要求。标准要求采集存储3200只电表60min 1点的资料不少于90天。   每点资料至少要保存用户编号、用户电能值、抄表时间等信息。如果每信息以16字节计,那么需要存储容量为3200× 24×90×16=111M。处理器采用三星公司S3C2410微处理器,其内部集成了SD卡电路、LCD和触摸屏电路、USB主从接口,所以外扩芯片少,简化了电路设计,增加了系统的可靠性。   3 软件结构嵌入式Linux操作系统源代码开放、可以定制、内核小、软件和多数Unix系统兼容、良好的可移植性等众多优点。本集中器采用了比较成熟的Linux2.4内核,所有的功能模块构建于嵌入式Linux之上。为实现集中器功能,将软件划分为3个模块,分别负责与远程监控站通讯、与采集终端通讯、处理人机交互。    其中与监控站通讯需要实现应用层协议。与采集器之间通讯需要实现485通讯协议层。人机接口模块引入嵌入式图形接口miniGUI。需要对miniGUI进行移植,包括驱动程序编写,和miniGUI输入接口层移植,以及用户界面和界面功能的实现。另外,与监控站通讯模块和与采集终端通讯模块实现通讯的同时,还要负责数据的存储等工作。人机接口模块需要负责数据的检索等工作。模块用线程实现,一个模块对应一个线程。线程之间通过互斥锁和全局变量来共享数据,对于用户电能数据则通过文件进行共享。数据库文件存放在SD卡里面,其他文件存放在JFFS2格式的flash中,而用户程序存放在Ramdisk格式的flash里面。   4 功能模块   4.1 监控站通信模块传统的C/S模式下,与监控站通讯模块需自定义应用层协议。协议的实现需考虑移植、传输效率,以及是否方便传输不同类型数据等因素。为了方便管理员查询电量信息,系统同时提供基于浏览器B/S模式的浏览方式。此种方式下,一般有两种做法:其一,直接在集中器上移植嵌入式web服务器,管理员访问集中器上的数据库;其二,将数据保存到监控站,在监控站上建立web服务器,用户通过浏览器访问监控站上的数据库。如果是对于普通居民用户需要通过浏览器访问电量信息,计费信息时,宜采用第二种方法。而对于管理员,作为传统C/S模式的一个替换,利用因特网便捷查询数据,则需采用第一种方式。本系统移植了嵌入式web服务器GoAhead作为工作在集中器上的web服务器。这样管理员即便不在监控中心,也可以通过浏览器方便地浏览电能信息了。GoAhead被称为针尖上的web服务器,功能强大,支持ASP,.JSP,CGI。笔者移植的GoAhead大小仅128k。   4.2 数据存储管理用户电能在用户比较多的情况下,数据量很大。如果通过文件来管理这些存储的电量信息,有一定难度。如需要分成多文件存储,而且查询不便,需要编写掉电保护机制等。本集中器采用了嵌入式数据库sqlite。嵌入式数据库sqlite具有如下优点:   (1)如事务操作是原子、一致、孤立,并且持久的(ACcID),即使在系统崩溃和电源故障之后。 (2)实现了绝大多数SQIL92标准。 (3)整个数据库存储在一个单一的文件中。数据库文件可以在不同字节序的机器之间自由地共享。支持最大可达2T的数据库。 (4)小的代码:完整配置的少于250kB,忽略一些可选特性的少于150kB。在大多数常见操作上比流行的客户/服务器数据库引擎更快。 (5)而且源代码位于公共域。可用于任何用途。笔者移植的sqlite库文件的大小为413k,工作性能稳定。集中器数据处理主要是操作用户信息和电能信息,   实现如下函数作为数据库的操作接口。()penDataBase(const char*filename,Bqlite3**ppDb)打开数据库; CloseDataBase(sqlite3*db)关闭数据库; ExeSql(sqlite3*db,char*sqlMsg)执行sql语句; RubbishDataBase(const char*filename)清除历史数据。最多存储90天的数据。每过90天,删除前45天的数据。 InsertSyslog(const char*msg)插入系统日志信息。此函数内部通过调用ExeSql来实现。其他一些数据库相关操作都可以有两种实现选择:调用ExeSql函数;将调用ExeSql函数前后一些工作一起封装成一个新的接口函数。   4.3 人机接口模块人机接口采用了嵌入式图形接口miniGUI,与其它针对嵌入式产品的图形系统相比,MiniGUI具有如下技术优势:轻型、占用资源少、高性能、高可靠性、可配置、可伸缩性强。MiniGUI是一个非常适合于嵌入式产品的高效、可靠、可定制、小巧灵活的图形用户界面支持系统。人机接口开发的难点在于ICD、触摸屏驱动开发和miniGUI输入接口层的移植。可以参考一些成熟范例,然后根据项目需要进行改写。用户窗口主要工作分为界面初始化和消息响应。每个窗口都有自己的消息处理循环。   4.4 与采集终端通信模块在与采集终端485通信中,采用了4线制485。485通讯需要实现地址设置,抄表和较时等功能。电表地址设置通常有以下几种方式。 (1)直接使用便携机到现场给集中器和采集终端输入设置地址。 (2)通过监控站传输地址配置信息给集中器,然后集中器再转发给采集终端。 (3)安装时用便携机输入地址信息,运行中通过命令使能或更改电表地址。本集中器采用第3种方案。电能数据存储必需有对应的正确时间值,这就需要监控站对集中器进行较时和集中器对采集终端进行较时。本系统采用广播方式,每天在固定时间发送广播命令,确保时间误差不超过5s。集中器每隔一个小时需进行一次抄表。发出抄表命令后,等待回应,如果超时没有得到回应,集中器将重复发送抄表命令。如果超过最大发送次数,系统返回错误,认为信道出现故障。    5 结束语本文给出了远程抄表系统总体构架。采用S3C4lOARM9硬件平台在显著提高系统性能的同时使系统小型化,基于485总线的通讯提高了通讯的速率和可靠性。在嵌入式Linux上移植和使用嵌入式数据库sqlite和嵌入式web服务器,简化了软件设计并提高了系统的性能,实现了人机接口、电能数据处理以及远程数据访问等功能,为新一代低压远程抄表系统集中器提供了一种高性能的解决方案。