一种三层协议定制机制模型的设计与实现

2015-12-06 07:26于兴晗盖优普
水电与抽水蓄能 2015年4期
关键词:中心站原始数据编程

于兴晗,盖优普,侯 煜,郭 易

(中国水利水电科学研究院水情水调事业部,北京市 100038)

一种三层协议定制机制模型的设计与实现

于兴晗,盖优普,侯 煜,郭 易

(中国水利水电科学研究院水情水调事业部,北京市 100038)

本文介绍了一种可以现场修改协议和增加新协议的三层协议定制机制模型的设计与实现,详细阐明三层协议定制机制模型的各种相关原理和关键技术,介绍了两种编程实现结构,适合汇编和C语言的多表分析结构和适合C++、C#和Java等高级语言的单表映射结构。同时,详细介绍了在实际工程上使用单表映射结构在嵌入式系统Windows Ce上开发三层协议定制机制模型的过程,在一定程度上解决了解决水利信息化系统中多源设备的整合以及不同代产品的混合使用的问题。

协议定制;嵌入式;多表分析;单表映射

0 引言

在我国现行的水利数据检测领域,数据采集器都是采用单片机+程序的硬件开发技术来实现的,整个水利数据采集系统的工作过程是,数据采集器通过传感器收集现场数据,一部分数据存储在本地,大部分数据需要通过无线通信技术(GSM/GPRS/超短波/北斗卫星/Inmarsat等)或者是有线(PSTN/internet等)发送到中心站,中心站在将接收到的数据进行处理、为洪水预报、防洪调度和水资源合理开发利用决策提供原始数据[5][6]。为节省传输信道的带宽,减少数据误码率,保证数据的可靠性,大部分的水利数据在信道中传输时都采用协议编码,将原始数据按照规定的协议进行编码,将编码后的数据包经由信道传输给中心站,中心站接到数据后按照协议的规定进行解码还原成原始数据再进一步处理。

大部分水利数据采集系统安装完成以后,只支持一种协议数据传输,当需要修改协议(包括增加数据类型、增加数据传输种类、添加新型数据采集器等)或者是增加新的协议时,整个水利数据采集系统(数据采集端—遥测站,数据接收端—中心站)软件都需要重新开发,整个程序编码都需要重头编写,所有的工作流程都需要重新实现,不但开发的周期长,效率低下,而且使整个系统继承困难,不利于产品更新换代。

目前,我国许多早期搭建的水利数据采集系统都到了需要更新换代的时候,随着生产水利数据采集器设备的厂家增多,通信协议也越来越多,每个厂家都有自己的独有的通信协议,不同厂家之间的设备不能替换,结果就导致用户在选择水利数据采集器时,对协议的支持就成了重中之重,只有支持原协议的设备才能更换原设备;在搭建新的水利数据采集系统时,由于通信信道种类的增多,用户对于支持多协议的数据采集系统的需求也越来越多,比较常用的都是双协议,目前大部分的水利数据采集系统的中心站都是采用使用多个数据采集软件,共享数据库来实现的;这种实现办法虽然在一定程度上解决了多源设备所导致的协议增多问题,但是随着数据采集器设备种类的增多中心站的负担将越来越重,最终会导致多个数据采集软件互相冲突,中心站阻塞丢失数据。

针对上述弊端,大部分厂家采取了简化协议结构或单独设计协议子程序的做法,在更改协议时只需修改协议子程序即可,尽量减少二次开发的工作量,这种方法极大地减少了当协议变化或者是增加新元素时修改程序的工作量,但是这种方法主要还是依靠开发者来实现不支持第三方开发,不利于技术的推广。本文描述了一种协议定制机制模型——三层协议定制机制模型,该机制使我们的产品具有使用其他厂家协议的能力,只需要简单地设置和编写少量的代码即可实现第三方协议的加入,读者只需按照编程指导操作就可以开发出自己的协议。

1 使用三层协议定制机制模型的优势

1.1 易于修改协议

三层协议定制机制模型是在充分了解协议栈工作原理和水利数据采集系统工作流程的情况下,所抽象出来的协议定制模型,这种模型结构清晰,易于实现,当用户需要修改协议时只需要通过简单地设置就可实现,而不需要修改整个程序。

1.2 支持第三方协议

三层协议定制机制模型是在充分了解水利数据采集系统工作流程的基础上实现的,该机制的加入不会影响整个水利数据采集系统原有的工作流程。用户只需按照用户编程指导手册经过简单地设置和编写少量的代码,就可将第三方协议加载到水利数据采集系统。

1.3 支持两种编程分析模型

三层协议定制模型的建立,采用两种编程分析模型:表格化编程模型,支持汇编和C语言编程,非嵌入式的数据采集器可以使用此模型;对象化编程模型,支持C++、C#和Java等高级语言,嵌入式数据采集器和中心站均可使用此模型。

1.4 支持嵌入式操作系统

随着嵌入式开发技术的发展,将嵌入式开发技术应用到水利数据采集系统也成为必然,在嵌入式开发技术当中,C、C++、C#和Java是嵌入式开发编程主要使用的开发语言,三层协议定制机制模型可以使用这些语言来实现,因此三层协议定制机制模型可以很容易在嵌入式操作系统上实现,本文所介绍的实现就是在嵌入式操作系统Windows Ce[1-4]上实现的。

2 三层协议定制机制模型的概念及作用

三层协议定制机制模型指的是,协议定制机制模型的结构主要分为三层,标签行为层、标签数据层和标签影射层,结构框图如图1所示,通过标签数据、标签映射和标签行为的对应关系来实现对原始数据的编解码,从而实现对协议的定制。

图1 三层协议定制模型结构框图

2.1 标签定义

在水利数据采集系统中,传输的数据必须包含传感器名、站号、时间和采样值,只有包含这些信息的数据我们才认为是有效的数据,针对不同的功能(标签行为),所传数据所包含的内容也可能不同,在实现时使用不同的开发语言所形成的编码也不同,为解决这一矛盾,在设计三层协议定制机制时我们引入了标签概念。标签指的是水利数据采集系统所传原始数据与协议描述语言之间的一一映射关系,包括数据、映射和行为。通过该映射来实现原始数据与功能、协议和代码之间的一一对应关系,如图2所示。

数据名:指的是水利数据采集系统中所使用的原始数据描述符(助记符),如水位1/Water1、雨量/Rain和电压/Volt等。

图2 标签、传感器名和传感器名之间的关系框图

点号:指的是原始数据名在协议编码中所对应的映射值,该值是由协议唯一确定,如短信协议用83表示水位1,用84表示雨量;SSP协议用20表示水位,用1、21表示雨量等。

协议:指的是对原始数据编码时所采用的协议,当协议确定后其他元素都是唯一的,如短信协议用SMS表示,sutron公司的协议用SSP表示等。

行为:指的是传输数据所对应的水利数据采集系统的行为,如定时报,平安报和阀值报等,由水利数据采集系统的硬件功能唯一确定。

操作码:指的是协议所规定的与水利数据采集系统行为一一对应数据,如时段报用03表示,当前报由02表示等,由协议唯一确定。

数据类型:指的是原始数据值与协议描述语言所表示的类型之间的一一对应关系,如水位用浮点数表示,当用SMS协议时用02表示,SSP协议用03表示等。

2.2 标签数据

标签数据,本文所提的标签数据指的是在水利数据采集系统中,所有可以被指定协议描述所包含的数据;标签数据的内容与协议的规定有关,不同协议所指定的标签数据可以相同,标签数据与协议所描述的数据必须要一一对应;如当我们增添的协议只要求传输一组雨量数据时,那么该协议所指定的标签数据就只包含一组数据雨量数据。

2.3 标签映射

标签映射指的是标签数据在协议中所对应的编码,一般用数值来表示,标签映射与标签数据和协议相关,在指定协议的情况下,标签映射与标签数据是一一对应的。如针对SMS协议标签数据水位1所对应的标签映射是83。

2.4 标签行为

标签行为指的是水利数据采集器的具体功能与指定协议所描述的操作码之间的映射关系,不是一一对应,如针对SMS协议,水利数据采集器的平安报可能需要时段报和当前报两个协议操作码,而数据采集器的阀值报就需要当前报一个操作码。

3 三层协议定制机制模型的结构及工作原理

整个机制的运行主要分两个过程,发送数据时的标签数据编码和接收数据时的标签数据的解码过程,编码原理框图如图3所示。

图3 协议定制机制的编码原理框图

系统在发送数据时,首先通过加载标签库来确定需要发送的标签数据,准备好标签数据后系统在通过标签行为来确定需要加载的标签映射模块,同时,按照协议规定对准备好的标签数据进行打包,打包后形成协议数据,将协议数据通过通信设备发往中心站。

接收数据时,原理框图如图4所示。

系统首先将数据读入系统,通过标签库来确定需加载的协议模块,按照协议对接收数据进行解析,将解析后的标签数据送入标签库来分析,有对应的行为则按照行为来处理,无则丢弃。

图4 协议定制机制的接收原理框图

发送数据时“→加载标签→准备标签数据→查找标签行为→加载标签映射/协议模块→按协议对标签数据打包→协议数据→”,接收数据时“→读取端口数据→加载标签库→加载协议模块→按协议解析数据/标签数据→查找标签行为→处理数据→”;通过三层协议定制机制模型工作流程可以看出整个机制的运行都是依赖于标签,即标签是整个协议定制机制模型得以存在的核心关键技术,其执行效率决定整个协议定制机制模型的运行效率。

4 关键技术

4.1 确定标签数据成员

标签数据成员的确定要能完整表述水利数据采集系统通信协议所需的元素,标签数据成员的设定对用户及三层协议定制模型的实现都有着比较大的影响,标签数据成员过少,则不足以解决原始数据和协议编码之间的一一映射关系,标签数据过多则会降低协议层对标签数据处理的效率。所以,确定适当的标签数据成员,最终会影响到整个协议定制机制模型的执行效率。

4.2 标签库的逻辑抽象

标签库是实现三层协议定制机制的关键技术,该库的实现依赖于水利数据采集系统的具体功能和通信协议的规定,是水利数据采集系统具体功能和通信协议规定的组合抽象,是水利数据采集系统具体功能在通信协议上的映射体现,标签库的复杂程度将会影响整个机制的运行效率,实现时还与所使用的开发语言有关。标签库主要包含6个映射,原始数据名映射,协议映射,操作码映射,行为映射,数据类型映射和点号映射。

5 实现

三层协议定制机制模型的实现,主要与水利数据采集系统的具体功能、协议和开发语言有关,可以采用两种编程结构来实现,适用于汇编、C语言的多表分析结构和适合使用C++、C#和Java等高级语言实现的单表映射结构。由于篇幅有限,本文只详细介绍了单表映射结构的实现细节。

5.1 多表分析结构

这个编程模型根据三层协议定制模型的结构图,将整个协议定制机制模型的实现通过三部分来实现,标签行为表,标签数据表和标签映射表(协议结构表),结构框图如图5所示。

图5 协议定制机制多表分析编程结构

标签行为表:水利数据采集系统具体功能在协议上的表述,一般为多个操作码的组合,例如水利数据采集器的定时报功能可以用通信协议中的时段报操作码+当前报操作码来表示。

标签数据表:水利数据采集系统具体功能,在协议规定下所应包含的采集数据,如在定时报下需要上传水位、雨量、电池电压等数据。

标签映射表:根据标签行为表和标签数据表的组合将会得到一个由系统具体功能所决定的数据段组合,在按照标签数据的映射关系将其转换成协议所规定的编码,最后形成有系统功能所决定的编码数据——协议数据。

在编程实现时包含两个部分,将上述的多表分析编程模型作为一个整体,以系统具体功能作为索引,建立一个系统功能索引表即可实现整个操作;在接收数据时,过程与上述的过程相反。在使用汇编语言或C语言实现时,建立表格应适当保留存储位置以备系统扩展使用,当上述表格变为动态标格,用户可以通过设置输入修改时即可实现协议的修改,增加新的标签行为表、标签数据表和标签映射表即可实现新协议的加入。

5.2 单表映射结构

这个编程结构根据三层协议定制模型的结构,将整个协议定制机制模型的实现通过两部分来实现,标签数据表和标签解析库。在这个结构中,以整个三层协议定制模型为对象,可以封装成一个完整独立的标签类,该类以标签数据作为类中的数据成员,标签映射和标签行为作为类中的数据操作,将该类进行编译形成标签解析库。这种编程模型支持面向对象编程语言,特别适合在嵌入式系统上推广。

5.2.1 与用户交互的设置界面

与用户交互的标签设置界面如图6所示。

图6 与用户交互的标签设置界面

通过该界面的设置,使系统所用的标签数据与标签解析库对应起来。在本系统中设置界面主要包括三部分,标签数据列表,显示系统所有的标签数据;标签数据属性输入区,主要包括原始数据的“传感器名”、对应使用协议中的“点号”、传输数据时使用的“协议”、协议当中的“操作码”、发触发发送数据的系统行为“操作”和传输数据所使用的“数据类型”共6个文本输入框;功能按键区,主要包括6个功能按键,“添加”增加标签数据按键,通过该按键将标签数据属性输入区的数据添加到系统标签数据列表的最后一行,“修改”标签数据按键,将在标签数据列表中选中的标签数据内容按照标签数据输入区的内容修改,“删除”标签数据按键,删除在标签数据列表中选中的标签数据,后一行数据上移,“清除”系统所有标签数据按键,“确定”修改并退出按键和不保留修改并“退出”按键。

5.2.2 标签数据处理

如何对标签数据进行处理将影响整个机制运行的效率,在本系统中,采用了自定义格式文件的方式来处理标签数据,由于文件的格式是自己定义的,所以在处理时完全可以采用格式化语句处理,所有的处理语句都是唯一的,既提高了标签数据的读和存的速度,又充分使用了Windows Ce操作系统所提供的高效API,提高了整个机制的运行效率。

5.3 标签解析库的实现

标签解析库的实现主要包括三部分:初始化、数据发送和数据接收。标签解析库运行时,首先调用标签解析库初始化函数,该函数的主要功能是将系统的标签数据存成6个映射表,是原始数据名和点号映射关系的N-T映射表,表示数据采集系统行为和数据名的O-N映射表,表示数据采集系统行为和协议模块的O-P映射表,表示数据采集系统行为和操作码的O-C映射表,表示操作码和点号映射关系的C-T映射表和表示原始数据类型和开发语言对应数据类型的映射关系的D-T映射表。

系统在发送数据时,首先通过O-N映射表查找对应的原始数据名,根据原始数据名准备数据,数据准备好后通过O-P映射表查找对应协议并加载协议模块,模块加载后通过N-T映射表将原始数据的数据名+数据转换成点号+数据的形式,通过O-C映射表来确定数据打包所用的操作码组,通过C-T映射表来确定与操作码有映射关系的点号组,通过O-C和C-T映射表最终实现行为数据和点号数据的映射O-T映射,之后通过D-T映射来确定数据所使用的数据类型,并按照O-T映射关系来将数据进行编码,最后将编码数据通过通信设备发往中心站。

在数据发送的映射边实现过程中有两个数组,分别为操作码组和点号组,它们不但包含元素的个数还决定元素的顺序,对于发送一些对数据发送顺序和数量有限制的数据非常必要。数据接收与数据发送的过程类似,这里就不在阐述了。

6 测试

6.1 增加新数据

在遥测站端添加新数据Water2,点号设为82,数据是浮点数,通过SMS协议传送,在平安报和定时报时将数据通过遥测站传到中心站,按照本文所述方法其设置界面如图7所示。

点击添加按键,该数据就会出现设备标签数据表的最下端,点击确定按键,运行整个系统,把系统时间调到平安报或者是定时报时间,在中心站观察遥测站数据,可以在遥测站上传的平安报数据和定时报数据中观察到数据Water2。

6.2 增加新协议

在遥测站终端增加新协议PPP,将遥测站终端的Water(点号56,操作码07,浮点数)和Rain(点号67,操作码08,整型数)数据在平安报时通过PPP协议上传到中心站,其标签设置界面如图8所示。

点击确定按键,退出标签设置界面;按照协议规定和本技术方案规定的编程指导编写PPP.dll,并将其下载到遥测终端Proc目录下,运行要测站终端系统,将系统时间调整到平安报时间,等待遥测终端数据发送完毕,在中心站观察数据,可以在遥测站的平安报数据报文中看到按照PPP协议打包的Water和Rain数据。

图7 添加新数据设置界面

图8 增加新协议标签设置界面

7 结论

按照本文描述的三层协议定制机制模型,可以很方便地在原有协议数据的基础上增加新的协议数据,增加新的协议,标签设置+协议解析库。整个模型概念清晰、结构简单,无论是在原有的协议数据上增加新数据,还是在水利数据采集系统中增加新协议都可以通过第三方实现,读者只要熟悉本文提供的概念和本文提到的编程指导就可以很容易地在使用了本文提到的三层协议定制机制模型的设备上开发出新协议,增加新数据。

本文在描述三层协议定制机制模型的原理和结构时,所使用的数据结构和描述方法都是基于标准C实现的,因此本文提到的实现方法可以在任何支持C语言的硬件设备或者是终端上实现,非常适合在其他领域推广;本文实现的二元协议定制机制运行可靠、扩展性强、加入新协议时开发周期短、指导性强、代码复用率高、开发模式先进,非常适合在一些需要团体开发的大型项目中应用。本文提到的方法已经在实际产品中使用,取得了非常好的效果,很好地解决了水利信息化系统中多源设备的整合以及不同代产品的混合使用问题。

[1] 王兵,李存斌,陈鹏,等.EVC高级编程及其应用开发.北京:中国水利水电出版社,2005.

[2] 华清远见,嵌入式培训中心.Windows CE嵌入式开发标准教程.北京:人民邮电出版社,2010.

[3] (美)微软公司,著;希望图书创作室,译.Microsoft Windows CE设备驱动程序开发指南.北京:北京希望电子出版社,1999.

[4] 张冬泉,谭南林,王雪梅,焦风川. Windows CE实用开发技术.北京:电子工业出版社,2006.

[5] 孙增义,吴跃.水情自动测报技术基础及其应用.北京:中国水利水电出版社,1999.

[6] 毛学工,安波,蹇德平,陆玉忠.雅砻江流域梯级电站水情自动测报系统.北京:中国水利水电出版社,2012.

于兴晗(1975—),男,硕士,工程师,主要研究方向:检测技术及自动化装置,32位嵌入式数据采集器,WIFI智能传感器。E-mail: 13601009217@126.com

Design and Implementation of a Multi-protocol Switching System

YU Xinghan,GAI Youpu,HOU Yu,GUO Yi
(China Institute of Water Resource and Hydropower Research,Beijing 100038,China)

This paper introduces the design and implementation of a three layer protocol customization mechanism model can modify the protocol and add new protocol,clarify the relevant principles and key technology of three layer protocol customization mechanism model in detail,introduces two kinds of programming structure,single table mapping structure of multi table analysis structure and suitable for C++,C# and Java high level language for the compilation and C language.This paper introduces in detail the process of mapping using single table structure development of three layer protocol customization mechanism model in embedded system Windows Ce in practical engineering,to a certain extent solved solve mixed integrated multi-source equipment water information system and different generation product use problems.

protocol customization;embedded;multi scale analysis;single table mapping

猜你喜欢
中心站原始数据编程
GOLDEN OPPORTUNITY FOR CHINA-INDONESIA COOPERATION
编程,是一种态度
元征X-431实测:奔驰发动机编程
受特定变化趋势限制的传感器数据处理方法研究
编程小能手
纺织机上诞生的编程
一带一路
全新Mentor DRS360 平台借助集中式原始数据融合及直接实时传感技术实现5 级自动驾驶
添加带外控制设备网不通
党旗引领铸铁军 挥洒青春展风采——湖北省环境监测中心站第二党支部党建工作侧记