引言
随着计算机技术的发展,远程抄表技术逐渐得到广泛的应用。通过实行一户一表以及自动远程抄表,可以做到及时、准确地进行数据采集,并且提供了一种对欠费用户进行有效管理的手段。远程抄表系统通常主要由计量仪表、数据集中器、通信网络以及抄表程序四个部分组成。计量仪表完成信息转换、数据存储功能,并支持通过本地通信网络与数据集中器进行数据交换。数据集中器完成数据汇聚功能,并能与抄表程序进行远程数据交换。抄表程序则借助通信网络从数据集中器获取计量数据,并存入数据库中。在绝大多数远程抄表系统中,计量仪表通常没有太多差别,而对于抄表程序以及紧接其后的各种数据查询、统计等操作都是典型的数据库应用系统,差别也不大。相比之下,通信网络以及与之紧密相关的数据集中器则是不同系统之间差异较大的地方,同时也是技术上的难点。
针对以上问题,本文提出了一种基于Web和硬件可重构技术" title="可重构技术">可重构技术的远程抄表系统结构。软件方面,它在数据集中器中利用一个嵌入式Web服务器来负责数据的传送任务,采用HTTP作为通信协议。客户端则是操作系统自带的Web浏览器,从而可以解决各个系统之间由于通信协议不同而造成的兼容性问题,而且节省了抄表客户端的软件开发成本。硬件方面,采用硬件可重构技术和基于IP核的设计方法,在单个FPGA芯片上实现了数据集中器。即使将来需要对系统进行改进和升级,也只需对FPGA芯片的配置文件进行修改,而不必报废整个硬件系统,从而保护了已有的硬件投资,降低了系统的维护成本。另外,数据集中器上的通信接口也可以借助硬件可重构技术很方便地更改,因而能够适应各种硬件环境。
远程抄表系统的体系结构
基于Web的远程抄表系统的体系结构如图1所示(以电表为例)。
图1 基于Web的选程秒表系统的体系结构
它由三个部分组成,分别是抄表客户端程序、数据集中器以及分布在各家各户的电表。抄表流程如下:首先由抄表人员使用抄表客户端程序向数据集中器以HTTP协议的形式发送抄表请求,该请求通过因特网到达数据集中器后,会首先被一个嵌入式Web服务器进行处理。嵌入式Web服务器将返回一个HTML文件给客户端,要求用户输入命令类型(例如,是抄数据还是执行相关控制操作)、电表编号以及附加数据。当用户填完表单后,这些数据将依照HTTPPOST协议发送给数据集中器中的嵌入式Web服务器。随后,相关的命令和数据参数抽取出来,送给数据集中器的控制模块。控制模块将对命令参数进行判断和安全性检查,然后生成相应的命令元组,以便控制和读取数据。电表通信模块完成与电表之间的通信任务,负责将命令元组发送给电表,并读取执行结果。当执行抄表操作时,数据将被电表通信模块以数据元组的方式返回给控制模块,然后按照固定格式被组装为一个字符串,并交给嵌入式Web服务器。嵌入式Web服务器将这些数据插入到预先设计好的HTML文件模板中,随后将其通过因特网返回给客户端的抄表程序。
硬件设计
从图1中可以看出,数据集中器是系统中的关键部分,一方面它需要按照《DL/T64521997:多功能电能表通信规约》通过RS485总线从电表处采集数据,并执行各种控制任务;另一方面它必须能够解释以HTTP形式发送过来的控制命令,并将执行结果以HTML文件的形式返回给抄表客户端。
本文在进行硬件设计的时候采用了基于IP核的设计方法,并将数据集中器的大部分功能在单个FPGA芯片上予以实现。设计电路原理图之前,必须根据系统需求选择合适的IP核。所谓IP核,是指那些以硬件形式(硅片版图)或者软件形式(用Verilog、VHDL描述的RTL或者门级模型)存在的、具有特定功能的硬件电路。IP核通常分为硬核、固核与软核三种。根据系统的硬件开发环境以及性能需求,本文选择了Altera公司开发的一系列软核产品,它们是用Verilog语言所描述的硬件模块,允许用户根据需要对各种参数进行配置,如数据通路带宽、优先进行速度优化还是资源优化等,因而应用非常灵活。系统所用到的软IP核产品有Nios CPU、ROM、RAM、定时器、通用异步收发器UART,以及用于外部功能扩展的Avalon总线模块,并将Nios CPU配置为32位字长模式,拥有256个通用寄存器,工作频率33MHz;UART配置为14400bPs的波特率,8位数据位,2位停止位,无奇偶校验。在确定了IP核并进行相应设置后,需要设计系统的电路原理图。图2表示了由各个IP模块组成的数据集中器内部硬件结构,其中的ROM用于存放用户程序,RAM作为程序运行时的存储空间,定时器为实时操作系统提供时钟中断功能,外部总线接口和UART负责与系统外部进行通信。它们将通过一条内部总线与Nios CPU相连,这样就构成了一个完整的嵌入式硬件系统。设计电路图后的下一步工作是选择合适的实现载体。基于IP核的设计方法通常使用FPGA芯片或者直接在硅片上实现。本文采用的是Altera公司APEX20KE系列FPGA芯片,能提供8000个左右的逻辑块资源和多达400Kb左右的ROM和RAM存储空间。由于FPGA芯片具有可反复更改的特性,因此有助于硬件系统的改进和不断升级。另外,通过对通信接口进行重构,例如将UART改为CAN总线控制器,可以使系统能与更多的硬件环境兼容。
图2 数据集中器的硬件结构
由于在FPGA芯片上构造电平转换电路和以太网物理层、MAC层电路较困难,本文将这些功能放到了FPGA芯片的外面,并分别使用MAX485和LAN91C111芯片来实现电平转换和以太网硬件接口功能。FPGA芯片内的UART模块和MAX485芯片共同完成与电表的数据通信任务,前者负责接收和发送数据,后者完成信号电平的转换。SMSC公司的LAN91C111是为了方便嵌入式应用系统连接到快速以太网而专门设计的,它实现了CSMA/CD协议的物理层和媒体访问控制层(MAC)两个部分,并可以很方便地与许多嵌入式处理器进行数据交换。
软件设计
数据通讯协议
抄表系统中有两个地方存在通讯协议的问题,其中一个在数据集中器与各个电表之间。目前,国内各厂家生产的电表绝大部分具有国家颁布的“多功能电能表通信规约”所规定的抄表协议,因此只要数据集中器中的电表通信模另外一个必须考虑通讯协议的地方是数据集中器和电力抄表中心之间。目前,国家还没有制定正式的标准,各个厂家采用的协议也各不相同。这造成了系统之间基本上不存在互操作性和互连性,从而阻碍了行业的进一步发展。
本文提出了以标准公开的HTTP协议作为应用层通讯的基础,不但能解决系统之间的兼容性问题,而且还将因特网上广泛使用的Web技术引入到远程抄表系统中,为其带来了许多便利。例如,只要能连接到因特网,就可以完成抄表工作,摆脱了时间、地点的约束。另外,用户抄表使用的终端程序是所有计算机平台上都带有的Web浏览器,这意味着用户无需花费一分钱额外投资,就可以得到一个图形用户界面。在HTTP的底层使用了TCP/IP协议来保证数据在因特网上的可靠传输。用户对电表的操作命令以及相关参数将被作为HTML表单数据以HTTPPOST方法传送给数据集中器上的嵌入式Web服务器,而操作的结果和数据则是以HTML表格的形式返回。
数据集中器的软件设计
数据集中器在抄表系统中起着关键的作用,它一方面要通过因特网与抄表中心进行通信,另一方面要采集来自各个电表的用电数据。为了降低开发难度,提高可维护性,系统使用C语言作为开发语言,并利用了GNU的开发工具,包括gcc 、gdb等。另外,将系统功能分解为五个相互协作的任务,采用uc/os-II作为实时操作系统,实现任务调度和任务间通信。这五个任务分别是:
(1)网络通信接口:负责在因特网上收发数据。本文采用Altera公司提供的专门针对嵌入式系统应用的精简TCP/IP协议栈作为底层通信协议。数据发送功能是通过调用TCP/IP传输层服务函数nr_ pLugs_send ()实现的,而数据接收功能则是由一个在创建通信套接字时被注册的回调函数实现的。当传输层收到一个有效应用层数据时,该函数被调用,应用层数据的指针被当作实参传入,随后回调函数把数据指针以消息的形式发送给HTTP引擎。
(2)HTTP引擎:负责以HTTPPOST协议接收和发送数据,将所析取出的抄表命令和数据参数交给控制模块;根据控制模块传回的数据和从虚拟文件系统中读取的HTML文件模板,动态构造一个完整的HTML文件,发送给请求方。
(3)虚拟文件系统:负责在ROM或者外部Flash存储器上实现一个小型的只读文件系统,用以存放各种静态Web页面和动态构造Web页面所需要的页面模板。它靠维护一个文件索引表来实现文件的读取,其结构如图3所示。
图3 虚拟文件系统索引表
(4)控制模块:负责安全性检查、命令和数据参数格式转换。由于因特网是一个公共网络,在其上传输的控制命令和数据有可能被截获、篡改和重发,因此需要进行安全性检查。主要采用数据加密和随机数验证两种方法。
(5)电表通信:负责与指定电表进行通信,从而读取用电数据,以及完成各种控制操作,其功能相当于分层网络模型中的数据链路层。数据的接收和发送是通过nr_uart_rxchar()和nr_uart_Txchar()两个函数实现的。
抄表中心的客户端应用程序设计
在抄表中心有交互式和批处理两种不同的方式完成抄表任务。在交互式过程中,要求手工输入电表编号、要求执行的操作等信息,在查询结束后,再将数据手工地转录到数据库中。对于这种方式,操作系统自带的Web浏览器就是一个抄表终端程序。但是,交互式抄表效率较低,只适用于抄录指定用户的电量信息、对制定用户电表执行控制任务或者用户进行自助查询等场合。当需要抄收大量电量数据时,就要采用批处理方式。图4 给出了批处理方式下的程序流程图。在批处理抄表程序中,有两个关键技术问题:一是将抄表命令以HTTPPOST方式传送给数据集中器上的嵌入式Web服务器,另外一个是从接收到的HTML文件中抽取用电数据。对于第一个问题,我们首先通过分析网络抓包程序(Sniffer程序)所捕获的HTTP数据包,就可以掌握PC机环境下浏览器和Web服务器之间以POST方式传递信息所采用的数据格式和时序关系,然后在VB环境下编写程序模拟这个过程中浏览器的行为。对于第二个问题,解决方法是约定数据以表格形式返回,并保证格式固定。因此,通过在HTML文件中搜索
等HTML标记,就可以将电量数据抽取出来。
图4 批处理抄表流程
抄表中心的其他功能如电费计算、数据查询和统计、系统维护等,都属于常见的数据库应用程序。由于篇幅关系,不再一一介绍了。
结束语
本文在分析现有远程抄表系统结构的基础上,提出了一种新的基于Web和硬件可重构技术的远程抄表系统结构,并利用基于IP核的设计方法进行硬件设计,使系统具有兼容性强、体积小、功耗低、容易升级和维护等特点。目前,抄表系统中的关键部分——数据集中器,已经成功地在单个FPGA芯片上实现,并完成了它与抄表终端程序之间的通信测试。我们现正在搭建一个完整的原型系统,以做进一步测试和改进工作。