软件设计
数据通讯协议
抄表系统中有两个地方存在通讯协议的问题,其中一个在数据集中器与各个电表之间。目前,国内各厂家生产的电表绝大部分具有国家颁布的“多功能电能表通信规约”所规定的抄表协议,因此只要数据集中器中的电表通信模另外一个必须考虑通讯协议的地方是数据集中器和电力抄表中心之间。目前,国家还没有制定正式的标准,各个厂家采用的协议也各不相同。这造成了系统之间基本上不存在互操作性和互连性,从而阻碍了行业的进一步发展。
本文提出了以标准公开的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 虚拟文件系统索引表