1 引言
自动抄表简称amr(automatic meter reading),是指采用通信、计算机等技术,通过专用设备对各种仪表(如水表、电表、气表等)的数据进行自动采集和处理的系统。它一般是通过数据采集器读取表计的读数,然后通过传输控制器将数据传至管理中心,对数据进行存储、显示、打印。自动抄表在上世纪80年代诞生于美国,并随着计算机、通信、网络技术的发展而得到了迅猛的发展。iec的tc13和tc57两大标准化组织在其标准体系中都为amr系统制定了相关的标准。各种形式的amr系统,各种新的amr技术不断推陈出新,推动着整个自动抄表技术行业的发展,本文介绍的就是一种新颖的基于web的自动抄表系统设计。
2 硬件系统设计
由于以太网的种种特点,采用以太网作为传输媒介的抄表系统具有相当的优势:首先是不需要铺设专用的通信线路,而利用现成的internet网;其次是网络有足够快的速度,对抄表系统速度己经足够;以太网能传播的不仅仅是数据信号,还有音频、图像等多媒体信息;采用的协议是现成而公开的,任何一种web浏览器都可以照读不误,方便管理者随时随地查询仪表信息;信息直接反映在色彩丰富的网页上,形式可以是数据、文字、图像、表格或语音,实时数据会自动更新,对仪表的操作会有及时可见的反馈。系统原理框图如图1所示。系统中,我们采用以太网作为系统通讯的主要载体,前端机与上位机是系统的主要工作单元。前端机集仪表数据采集器及传输控制器的功能于一身。存本远释抄表系统的硬件设计中.最重要的部分就是中央处理器s3c2410。
图1 系统原理框图
2.1 存储器的控制
本系统设计包含4mb(可扩展为16mb)flash存储器,内部存放启动代码(bootloader)、linux内核映象和ramdisk压缩映像,剩余的存储空间可存放用户程序或其它用户存储资料,还可升级操作系统,且用户存储资料断电也不会丢失。flash存储器的数据宽度为32位,映射到s3c2410的rom bank0,地址从0x0-0x400000。
s3c2410启动代码可以存储在外部的nand闪存。为了支持nand闪存bootloader,s3c2410设置了一个sdram缓冲器叫做“steppingstone”。启动时,nand闪存最前端的4kb启动代码加载到“steppingstone”中并且被执行。一般来讲,启动代码会复制nand闪存中的内容到sdram中。利用硬件纠错码,hand闪存中数据的有效性会得到验证。完成复制后,主程序会在sdarm中被执行。nand闪存控制如图2所示。
图2 nand闪存控制图
2.2 s3c2410的usb接口设计
在抄表系统中,图像数据的采集与传输是系统的功能重要组成部分。图像数据的采集通过s3c2410 usb host接口完成,采集的数据使用网络接口通过internet传回控制中心上位机。s3c2410集成的usb接口模块中含有2个usb host接口,1个usb device接口。usb device接口可以工作在中断模式或dma模式,兼容usb1.1协议,可以在高速〔12mbps〕和低速(1.5mbps)下工作。接口电路如图3所示。
图3 usb接口电路
2.3 以太网接口设计
s3c2410没有集成以太网控制器,系统采用外接一种单芯片的以太网控制器cs8900a实现以太网接口。cs8900a主要结构包括,16位isa总线接口、802.3 mac引擎、内部缓冲存储器、串行eeprom接口并支持10base-t与aui(连接单元接口)以太网端口。
cs8900a支持的串行eeprom可以用于保存cs8900a的配置信息和系统的以太网地址,但这个eeprom是可选的,因为处理器可以将这些数据保存到系统的其他地方。
cs8900a通过一个隔离变压器连接到rj45端口上。cs8900a可以直接驱动led,用以指示以太网的链路状态及总线与网络的活动情况。
cs8900a需要外接20m的晶体提供时序,在正常操作下,cs8900a完成两个基本功能即:以太网包的发送和接收,在发送和接收前必须配置好cs8900a。上电复位后,cs8900a要为收发包进行配置,各种各样的参数要写入内部的配置和控制寄存器,如:存储器基地址,以太网物理地址,接收的帧类型,使用何种媒体接口等。配置信息既可以通过isa总线由主机配置也可以由外部eeprom自动配置,配置完毕后,操作可以进行了。
cs8900a与s3c2410按照16位方式连接,网卡芯片复位后默认工作方式为i/o连接,基址是300h。
3 软件系统设计
通过对抄表应用的考察,可以看出本抄表系统应用比较单一。前端机只是读取摄像头图像数据,然后发回上位机。因而要求操作系统要能裁减,并且能支持tcp/ip协议,应能加载usb驱动程序,此外还要考虑的以后的系统扩展,而带来的软件升级问题。综合考虑,本系统选择linux系统。linux系统主要包括三层结构,如图4所示。
图4 软件系统框图
软件部分设计主要包括:linux操作系统的移植;嵌入式linux系统下功能模块的驱动;linux下的视频采集和图像数据传输等四部分组成。
linux对于视频采集设备的支持是通过video4linux实现的。vdeo4linux是为各种电视卡、并口、usb接口的音视频采集设备提供统一的编程接口。对于usb口摄像头,驱动程序提供了基本的i/o操作(包括:open, read, write, close)、中断的处理、内存映射功能以及对i/o通道的控制(通过接口函数ioctl实现)等,并把它们定义在struct file operations中。这样当应用程序对设备文件进行诸如open, close, read, write等系统调用操作时,linux内核将通过file operations结构访问驱动程序提供的函数。在系统平台上对usb口数码摄像头驱动,首先把usb控制器驱动模块静态编译进内核,使平台中支持usb接口,再在需要使用摄像头采集时,使用insmode动态加载其驱动模块,这样摄像头就可正常工作了。linux下与video4linux相关设备及用途如表附所示。
附表 video4linux相关设备及用途
4 电表读数的识别
本系统中,从前端机抄回的是电表读数的图片,并不是电表的真实读数,为此,需要一种图像识别算法,能够根据图片识别出电表的读数。
电表读数识别的基本原理是将输入文字与各个标准文字进行模式匹配,计算类似度(或距离),将具有最大类似度(或最小距离)的标准文字作为识别结果。模式匹配是将两个模式的所有对应元素进行比较的操作,相同的模式会得到完全一致的比较结果,不同的模式将得不到完全一致的比较结果,这个基本原理对文字中的变形是很苛刻的,图5所示为包含预处理和特征抽取的文字识别流程。
图5 文字识别的基本流程
5 结束语
本文提出的基于web的嵌入式抄表系统,与传统的抄表技术相比有以下特点:采用图像抄表,数据准确,不会出现用户端和管理中心数据不一致的问题;本系统安装简单,后期成本低。由于本文设计的amr系统采用摄像头采集数据,通过现成的互联网传输数据,安装工作就是把摄像头对准电表,然后联到前端机上,前端机插上网线和电源。管理中心通过普通的ie浏览器即可完成抄表的工作。以后的使用不必交纳任何费用。本系统后期维护成本较低,由于互联网稳定性很强,前端机和摄像头平时是很少工作,因此,本文提出的抄表系统几乎不会出现任何故障。