CN111385292B - 一种基于描述子的协议报文和数据的交互方法及系统 - Google Patents
一种基于描述子的协议报文和数据的交互方法及系统 Download PDFInfo
- Publication number
- CN111385292B CN111385292B CN202010141120.9A CN202010141120A CN111385292B CN 111385292 B CN111385292 B CN 111385292B CN 202010141120 A CN202010141120 A CN 202010141120A CN 111385292 B CN111385292 B CN 111385292B
- Authority
- CN
- China
- Prior art keywords
- protocol
- data
- descriptor
- module
- messages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Communication Control (AREA)
Abstract
本发明提供一种基于描述子的协议报文和数据的交互方法及系统,方法包括:通信主体运行接收报文‑报文解析‑数据更新‑报文生成‑发送报文的业务逻辑循环;通信主体的接口模块从不同的数据接口接收数据报文或者将协议模块的输出报文从指定接口输出;通信主体的协议模块根据描述子的描述调用对应映射函数完成协议报文和数据参数的交互;通信主体的业务模块完成通信主体的业务逻辑,完成数据或者协议报文的更新。本发明降低协议匹配难度,灵活性高,具有兼容性好,易于升级和配置的优点,同时能够大幅度降低开发难度,节约开发成本。
Description
技术领域
本发明属于嵌入式通信技术领域,涉及一种基于描述子的协议报文和数据的交互方法及系统。
背景技术
随着微机电、芯片技术及通信技术的发展,水表、电表等终端采集设备也从传统的模拟量采集传输向数字化、智能化、集成化方向发展,尤其是设备通信层面,由模拟传输转向数字分组传输。伴随着通信网络的发展,终端与主站的数据传输出现了串行总线、以太网、无线广域网、以及专用动态网络等多种通信手段,实际组建网络时往往需要多个网络并存或者分段传输终端数据。
多网络并存或者分段传输的模式能够针对当前应用场景匹配最实用的网络,有效的提高网络的连通性,但同时也引入了协议匹配的问题。一方面,不同的通信手段的技术特点不同,因而不同网络都有一套固有的通信协议,协议之间相互不完全兼容;另一方面,不同类型或者型号的终端设备往往有一套自己的通信协议,各个型号之间也不能完全兼容,这就对处于网络中间层的集中器、中继器提出了更高的要求。
典型的水电表数据采集网络包含主站、集中器/中继器、以及采集终端三个层面,其中集中器/中继器属于中间设备,负责主站命令的下发以及采集终端数据的汇总和上报,这就需要集中器对上兼容以太网、4G网络、专用网等主站网络接口,对下兼容ModBUS、MBUS等不同类型的采集终端数据接口,需要同时具备兼容上下设备接口数据格式的协议,这就使得现有的集中器面临模块耦合性高、难以升级维护的问题:一方面,为了共享配置数据,所有协议都由一个主程序的不同模块实现,改动任意模块都需要重新梳理主程序,开发难度大、周期长;另一方面,改动原有协议或添加新协议之后,需要程序涉及的所有协议重新测试,以确保不同协议条件下共享配置内容没有产生相互干扰,极大的增加了测试周期和成本。
发明内容
为了解决上述问题,本发明提供一种基于描述子的协议报文和数据的交互方法,通过描述子描述协议的单元字段和数据参数的映射关系,按照与协议对应的字段集合解析或生成协议报文,实现协议报文和数据的交互,降低协议匹配难度,灵活性高,具有兼容性好,易于升级和配置的优点,同时能够大幅度降低开发难度,节约开发成本,解决了现有技术中存在的问题。
本发明的另一目的是,提供一种基于描述子的协议报文和数据的交互系统。
本发明所采用的技术方案是,一种基于描述子的协议报文和数据的交互方法,具体包括以下内容:
通信主体运行接收报文-报文解析-数据更新-报文生成-发送报文的业务逻辑循环;
其中,通信主体的接口模块从不同的数据接口接收数据报文或者将协议模块的输出报文从指定接口输出;
通信主体的协议模块包含一个或者多个描述子文件,每个描述子文件包括一个或者多个描述子,描述子用于描述协议的单元字段和数据参数的映射关系,并利用映射函数的灵活性为业务逻辑提供接口,协议模块根据描述子的描述调用对应映射函数完成协议报文和数据参数的交互;
通信主体的业务模块完成通信主体的业务逻辑,完成数据或者协议报文的更新。
一种基于描述子的协议报文和数据的交互系统,包括:
通信主体,用于运行接收报文-报文解析-数据更新-报文生成-发送报文的业务逻辑循环;通信主体包含接口模块、业务模块、协议模块;
所述接口模块,用于从不同的数据接口接收数据报文或者将协议模块的输出报文从指定接口输出;
所述协议模块,用于根据描述子的描述调用对应映射函数完成协议报文和数据参数的交互;协议模块包含一个或多个描述子文件、一个或多个映射函数模块;其中,每一个描述子文件包含了一个或者多个描述子,描述子用于描述协议的单元字段和数据参数的映射关系,并利用映射函数的灵活性为业务逻辑提供接口;
所述业务模块,用于完成通信主体的业务逻辑,完成数据或者协议报文的更新。
本发明的有益效果是:
(1)本发明使得多个协议文件可以共享一套变量,且变量与配置数据唯一对应,保证了设备状态的唯一性,避免了多套数据引入的同步问题,数据实时性好。
(2)升级简单、安全性好;通过描述子文件描述协议,通过函数模块提供描述子的映射函数。只需更改描述子文件或对应映射函数模块即可改变原有协议,方便动态更新、增加或减少协议,升级过程中只需要对公开的协议描述子文件以及对应的函数模块升级,操作简单,安全性好。
(3)兼容性好、可移植性强;描述子文件与平台无关,能够兼容多种平台,移植时只需要针对性地开发描述子在移植平台下的映射函数实现即可,可移植性强。
(4)开发难度小、维护成本低;协议开发只需要关注描述协议本身,采用简单的脚本语言即可完成,开发难度小。协议中每个不可分割的单元字段都有一个描述子描述,维护更改只需要关注少数几个描述子及映射函数,维护成本低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中通信主体的逻辑框架图。
具体实施方式
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术存在缺点的根源在于中间设备需要使用不同的协议读取、修改同一份配置数据,每个协议都需要对配置数据的读取、修改进行符合协议规则的实现,引入了大量的不可控因素。实际上,集中器等中间设备的各个参量(网络地址、端口、时间)只有少数几个(对应于硬件/表头),不同的协议采用不同的格式/交互方式,最终操作都是获取这些参量,因此可以统一参量的获取、配置接口,采用另外的解释文件对获取到的参量按照特定的协议进行描述,即采用配置数据和解释文件分离的方式,将不同协议报文看作参量的不同描述,把参量在一个协议下的描述称为该参量的一个描述子。
本发明实施例一种基于描述子的协议报文和数据的交互方法,具体包括以下内容:
通信主体运行接收报文-报文解析-数据更新-报文生成-发送报文的业务逻辑循环,实现通信主体的功能;本实施例中,通信主体为处于网络中间层的集中器或中继器,其主要功能为接收符合上层协议的报文,解析命令,发送符合下层协议的查询指令,接收并按照下层协议解析收到反馈报文,更新本地信息,再将更新后的信息重新打包成符合上层协议的应答报文,反馈给上层。实际业务逻辑依据不同的协议,可以进行如下逻辑:(1)接收上层指令,解析,执行指令,反馈结果;(2)发送指令给下层,接收反馈信息,更新本地数据;(3)发送指令给下层,接收反馈信息,主动上报给上层;(4)接收上层指令,解析,发送查询指令给下层,接受下层反馈信息,打包并反馈给上层。上述业务逻辑均含有接收报文-报文解析-数据更新-报文生成-发送报文的具体过程。
通信主体的接口模块从不同的数据接口接收数据报文或者将协议模块的输出报文从指定接口输出,实现接收报文和发送报文功能;本实施例中,集中器采用4G网络接口和主站网络通信,采用工业485接口对下属表头终端进行通信,则接口模块对上负责接收和发送4G网络报文,对下负责接收和发送工业485报文。
通信主体的协议模块包含一个或者多个描述子,描述子用于描述协议的单元字段和数据参数的映射函数,并利用映射函数的灵活性为业务逻辑提供接口,协议模块根据描述子的描述调用对应的映射函数完成协议报文和数据参数交互;完成报文解析、数据更新和报文生成;
S1,搜索字段集合:根据数据参数的名称,在对应于当前协议的描述子文件中搜索字段集合,字段集合由一个或者多个描述子组成;
S2,解析字段集合:首先按顺序检查字段集合中的描述子元素,将属于当前协议字段集合的描述子元素按顺序展开,然后重新按顺序读取每一个描述子元素的内容,每个描述子包括函数名称、模块名称、比特数、默认值、属性,描述子的比特数字段严格定义了变量位于协议报文的某一段区间,根据模块名称和函数名称获取映射函数句柄,将映射函数句柄依次顺序入队,形成描述子映射函数句柄队列,完成映射函数模块的动态加载,映射函数指针的获取;
S3,按顺序依次调用描述子映射函数句柄队列中的每一个映射函数,映射函数以当前描述子内容、数据参数、报文缓冲为参量,完成协议报文和数据参数交互。
S31,根据数据参数中的状态信息,判断当前字段是否需要处理;如果不需要处理,则跳过本字段,处理下一字段;如果需要处理,则根据描述子中的比特长度(bitsN)属性,计算出当前字段在报文缓冲中以比特为单位的起止区间,记作当前字段区间;
S32,根据数据中的逻辑方向信息,确定逻辑方向;若当前逻辑方向为报文信息更新到数据,则以二进制形式截取当前字段区间的数据,将其转换为和数据中对应参量相同格式的变量,赋值给数据中对应参量,完成数据更新;若当前逻辑方向为数据按协议打包成报文,则将数据中对应参量转换成二进制比特序列,利用二进制比特序列中的比特顺序填充当前字段区间,并将多余比特丢弃,完成报文的更新。
本实施例中,集中器采用A协议与主站通信,采用协议B和下属终端通信,用于描述A协议的单元字段和数据参数的映射函数的描述子放在A协议描述子文件中,用于描述B协议的单元字段和数据参数的映射函数的描述子放在B协议描述子文件中;协议模块根据对应描述子文件中的描述子对应映射函数完成协议报文和数据参数交互,即根据协议描述子文件的约束,按照协议报文更新数据,或者把数据打包成符合协议的数据报。
协议报文是协议的具体形式,例如IP协议规定头20个字节是报头,定义了每个字节表示的函义,比如1~4字节是源地址,5~8字节是目的地址等等,协议报文是符合协议的数据报或者数据帧。
通过通信主体的业务模块完成通信主体的业务逻辑,完成数据或者协议报文的更新。
一个描述子的实例:{value=0x68,bitsN=8,modleName=,funcName=,attrib=const,};每个描述子为函数名称funcName、模块名称modleName、比特数bitsN、默认值value、属性attrib的完整集合,其中:函数名称定义了获取该字段值时,需要调用的函数名称,函数指的是由报文和数据交互的映射函数,这里只用函数名称标识,留给用户自定义的,为字符串;模块名称定义了函数名称所在模块的名称,同函数名称,具体应用中,模块是以文件形式存在的实体,存在于文件系统,映射函数不能单独存在于文件系统中,所以更新和灵活性需要靠替换模块文件来实现,模块文件里面可以有一个或者多个映射函数供调用,模块一般是一类映射函数集合成一个文件或者是一个协议涉及的映射函数整理成一个文件,为字符串;比特数定义了字段占的比特数量,为正整数;默认值定义了字段的默认值,默认值一般是根据字段特点设定的,表示的是在初始化完之后,变量应该具有的值,默认值一方面可以简化变量的初始化工作,另一方面可以避免初始化的变量是非法值得情况,为数值;属性定义了字段的附加属性,为字段对应映射函数的执行提供参量或依据,属性值也是可以由用户定义,比如现在已经有的定义,如果属性是const,说明这个字段是常量,任何映射函数都不应该去改变它,如果是var,说明是变量,映射函数需要去更新它,还有一种是table,表示这个字段是另一个集合,解析的时候,就要打开集合,等等。
描述子,用于描述协议字段和数据参数的映射关系,并利用映射函数的灵活性为业务逻辑提供接口,即用户可以通过替换映射函数名模块名,改变这种对应关系,从而实现一份数据对应不同协议。每个描述子为函数名称、模块名称、比特数、默认值、属性的完整集合,这种关系更强调结构顺序上的关系,也就是多个描述子的bitsN字段严格的定义出了协议的报文的哪一段区间对应了哪一个变量,而后由对应的映射函数来处理具体这个区间的数据和所对应变量;描述子利用上述参量能够准确的描述出来协议报文的每一个比特和内部参数之间的对应关系,描述子与数据参数中的配置参数严格对应。
多个描述子组成字段集合,最终描述协议的时候,一定是从一个大的字段集合顺序完成整个协议的解析,字段集合与协议对应,比如表1中协议的长度字段,包含了协议版本和内容长度两部分。实际应用中配置参数和设备相关,例如仪表的时间、通信参数如IP地址、网关、通信速率等等;还有一些专有的,比如中继站的中继状态等,这些和具体应用紧密相关;协议也根据场景不同而不同,例如集中器查询仪表的协议,用到串口号、波特率等各个数据参数,集中器上报数据的协议,则用到IP地址等数据参数。字段集合对应于协议里面的一个字段,例如IP地址可以是一个字段集合,IP地址又包含了四段,每一段可以用一个描述子来描述。
描述子对应于协议的单元字段是不可分割的最小协议字段,比如协议字段是IP地址,IP地址有4段(例如192.168.0.1),描述子可以描述每一段,但是没有必要把一段分成两个描述子去描述;反过来,一个IP地址可以用一个描述子来描述,例如一个IP地址可以用一个32位整形表示,那么描述子可以直接描述这个整体,当然这需要描述子对应的映射函数具有识别32整形表示的IP地址的能力,可以由用户自己定义。
为了对应协议分层,字段集合支持交叉引用,字段集合的元素可以是另一个字段集合;比如一个协议分为帧头、数据、帧尾三段,数据又包含数据标识、数据内容、数据校验三段,数据内容可以是时间、配置参数等具体参量,在描述协议的时候,就有了包含关系,这样做可以简化协议描述,不用从头描述到尾,而是分块,分层次描述,模块化,容易编写和处理,也不容易出错;同时,字段集合中的元素顺序排列,对应于协议报文数据的先后排列顺序;由于协议中有些字段只有特定条件下才需要传送,比如协议要求下位机上传时间和上传通信参数,就对应了不同的字段,字段长度不同,所以无法确定绝对偏移,只能严格按照顺序排列。
字段集合的实例:
attrib=var代表属性是变量,ConstCode表示处理常量的映射函数名、ProtoCode表示处理协议版本编号的映射函数名。
每一个函数模块包含了一个或者多个映射函数,每个映射函数对应一个描述子,用于根据描述子完成数据与报文字段之间的转换。描述子和变量的处理由映射函数完成,其完成逻辑是可以由用户定义的,比如描述子描述了一个可变长度的内容,那么必须由映射函数介入改变报文的长度,填充内容,使用函数名称匹配,最大限度的降低了耦合,可以给予用户很大的灵活性,也是升级灵活性的必要设计,具体举例如下:
协议模块把不同协议的描述文件封装在不同文件里供协议模块解析,把映射函数按功能或者类别或者协议封装在不同的模块文件里供协议模块调用。为了代码复用和节省内存,把公用映射函数封装放在一个模块文件里(动态链接库文件,比如common.dll),再把专有的不同协议映射函数封装在不同的模块文件里(比如tcp.dll、serial.dll、1553B.dll等),程序每次需要把common.dll加载进内存,但是不需要每次把所有的不同协议的dll都加载进去,而是用到哪个加载哪个,另外带来的好处就是更新特定协议的时候,更新对应的dll即可,不用更新所有的文件,这种更新方式在采用4G等按照流量收费的通信方式时尤其重要,一方面是速度快,另一方面成本低。
程序根据协议配置文件先整理出协议结构,此时并不需要数据和报文的操作,因此只需要检查映射函数是否加载正常即可,加载测试完成即可卸载模块,等到真正解析的时候再去调用映射函数,操作系统提供了使用字符串去寻找调用映射函数的接口,因此本发明采用函数名称匹配的方式,好处是耦合低、简单、编写协议脚本的人可以使用有提示意义的函数名称,这样协议配置文本更加清晰易懂,专心编写协议描述,只需要和开发映射函数功能的人确定名称即可,而不用关心映射函数调用、传参、错误处理等一系列代码逻辑上的操作,开发映射函数功能(dll文件)的人也只需要关注描述子和变量的更新关系,而不用去关心协议的组织结构,耦合难度大幅度降低,开发难度也降低了。
本发明实施例一种基于描述子的协议报文和数据的交互系统,包括基于嵌入式架构的通信主体,用于运行接收报文-报文解析-数据更新-报文生成-发送报文的业务逻辑循环,实现通信主体的功能,如集中器;通信主体包含接口模块、协议模块、业务模块;该通信主体的逻辑框架如图1所示。
接口模块,用于从不同的数据接口接收数据报文或者将协议模块的输出报文从指定接口输出;
协议模块,用于根据描述子的描述调用对应映射函数完成协议报文和数据参数的交互;协议模块包含一个或多个描述子文件、一个或多个映射函数模块;其中,每一个描述子文件包含了一个或者多个描述子,描述子用于描述协议的单元字段和数据参数的映射函数映射关系,并利用映射函数的灵活性为业务逻辑提供接口;
业务模块,用于完成通信主体的业务逻辑,完成数据或者协议报文的更新。
实施例
以国家电网中某协议头部为例,该协议规定,报文包含以下几个字段:
(1)起始字符:固定值68H,1字节
(2)字节长度L:包括规约标识和用户数据长度,由2字节组成,如表1;
表1
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 |
(2a)规约标识由表1中D0~D1两位编码表示;
(2b)用户数据长度L1:由D2~D15组成,表示字节总数。
(3)起始字符:固定值68H,1字节
则其对应的描述子依次为:
(1){attrib=const,value=0x68,modelName=“”,bitsN=8,funcName=ConstCode,}
(2a){attrib=var,value=1,modelName=“”,bitsN=2,funcName=ProtoCode,}
(2b){attrib=var,value=0,funcName=PackLength,bitsN=14,modelName=“”,}
(3){attrib=const,value=0x68,modelName=“”,bitsN=8,funcName=ConstCode,}
其描述子文件内容可表述为:
以解析步骤为例,假设所采用协议的字段名称为CFG,接收的报文内容为{0x68,0x49,0x0,0x68};Length表示的是报文后续长度,由于协议是截取的一部分,因此后面的18字节内容没写。
协议模块根据描述子完成报文和数据交互的逻辑步骤如下:
搜索字段集合:根据配置参数中的字段集合名称CFG,在描述子文件中搜索对应于当前协议的字段集合CFG。
解析字段集合,展开后的字段集合为:
获得的映射函数句柄队列为依次包含函数名称为ConstCode、ProtoCode、PackLength、ConstCode的映射函数句柄队列。
使用映射函数句柄依次调用函数名称为ConstCode、ProtoCode、PackLength、ConstCode的映射函数,对报文的处理结果为:
(1)起始字符:68H
(2a)规约标识:D0=1;D1=0;
(2b)用户数据长度L1:由D2~D15分别为01001000000000,表示长度18。
(3)起始字符:68H
更新协议描述,只需要改变协议描述文件即可,例如,需要将第二个起始字符改变为16H,则只需要改动协议描述文件为
而不需要对其他任何程序改变,不用升级主程序逻辑。
本发明的优势:
1、本发明将不可分割的协议字段通过描述子以映射函数的方式与数据参数对应,实现了协议描述和内部参数的解耦合;提出了一种灵活的单套数据与多套协议的映射描述方法,多个变量及映射函数通过描述不同协议字段与变量对应关系的描述子文件实现,用户编写协议的描述子文件,使得多个文件可以共享一套变量,且变量与配置数据唯一对应,保证了设备状态的唯一性,避免了多套数据引入的同步问题,数据实时性好。现有技术中协议单独实现,不同协议解析一套配置数据,会出现一个配置数据对应多个变量以及多个变量处理映射函数,需要处理多个变量与数据同步更新的问题,否则会出现同时运行多个协议时,变量不同步导致数据和协议不匹配的问题。
水表电表的输出参数由一套变量生成,变量不一定重合,例如采集时间戳、表号、当前计数值、表状态、错误号等等都可以共用,电表的功率读数、水表的流量读数,则需要两个不同的变量存储,内部数据由开发者确定,输出时根据描述子配置文件,打包成对方请求的协议格式,例如集中器下挂一栋楼400户的所有水电表,对下需要两个不同的协议去读取数据,对上需要对接电表公司和水表公司的不同的报表协议,一般来讲是定时构造查询数据报,读取水电表数据并将读数存储在本地数据库,上端谁来查询就给谁反馈,在报文交互时保证协议对应。
2、在实现协议结构的基础上,利用映射函数的灵活性为业务逻辑提供了接口,描述不同的映射函数可以实现不同的业务逻辑,使得不同协议在同一业务框架下拥有不同的业务逻辑;通过修改/替换描述子,修改字段集合的组织形式即可改变原有协议的字段,实现了根据配置参数修改协议;方便动态更新、增加或减少协议,升级过程中只需要对公开的协议描述文件以及对应的映射函数模块升级,而不需要对其他任何程序改变,不用升级主程序逻辑,升级简单,安全性好。
3、本发明提出的协议描述方式可移植性好,只要能够解析文本的平台均可以按照描述子文件解析协议;可扩展性强,在需要增加描述子属性时,只需要添加相应的属性处理映射函数即可。
4、协议开发只需要关注描述协议本身,让以前必须了解嵌入式操作系统和底层映射函数接口代码的开发人员,通过本发明只需用配置文件或者脚本语言就能修改协议,开发难度小。协议的每个单元字段都有一个描述子描述,维护更改只需要关注少数几个描述子及映射函数,维护成本低。
以在嵌入式linux系统上实际开发兼容某电表协议以及某水表协议的集中器为例,电表协议有13条典型指令、23种数据描述格式,并根据功能码组合使用,水表协议有8条指令,12种数据描述格式,并根据功能码组合使用。采用直接开发模式,由于水表协议、电表协议的逻辑框架不同,需要针对不同协议流程单独开发业务逻辑框架,本例中需要两套单独业务逻辑,需要对每一种情况进行代码处理,需要开发人员同时具备linux底层开发能力以及熟悉协议指令及数据描述格式,协议的维护和更新都需要进行相应的程序开发,也须由同时熟悉底层开发和协议内容的人员进行,开发维护的难度和成本都很高,周期一般按照月计算。采用本发明的方法,利用描述子文件描述协议字段、调用映射函数以及内部变量的关系,需要一套业务调用逻辑,需要具有协议开发能力的人员编写协议描述文件,需要具有linux底层开发能力的开发人员编写描述子解析模块,用于解析描述子文件,提供调用接口供通用业务逻辑模块调用,不需要区分具体协议,由描述子文件中的多个描述子定义出具体业务逻辑等同于水表业务逻辑或电表业务逻辑,不需开发人员同时具备linux底层开发能力以及协议开发能力,降低了开发难度;另一方面,协议的维护和更新不需要重写协议逻辑框架,只需要更改描述子文件和对应的映射函数模块即可,维护和更新简单、成本低,维护周期可缩短至周甚至天。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (7)
1.一种基于描述子的协议报文和数据的交互方法,其特征在于,具体包括:
通信主体运行接收报文-报文解析-数据更新-报文生成-发送报文的业务逻辑循环;
其中,所述通信主体中的接口模块从不同的数据接口接收数据报文或者将协议模块的输出报文从指定接口输出;
所述通信主体中的协议模块包含一个或者多个描述子文件,每个描述子文件包括一个或者多个描述子,描述子用于描述协议的单元字段和数据参数的映射关系,并利用映射函数的灵活性为业务逻辑提供接口,协议模块根据描述子的描述调用对应映射函数完成协议报文和数据参数的交互;
所述通信主体中的业务模块完成通信主体的业务逻辑,完成数据或者协议报文的更新;
所述协议报文和数据参数的交互具体为:
S1,搜索字段集合:根据配置数据参数中的字段集合名称,在对应于当前协议的描述子文件中搜索字段集合,字段集合由一个或者多个描述子组成;
S2,解析字段集合:按顺序检查字段集合中的描述子元素,将属于当前协议字段集合的描述子元素按顺序展开,按顺序读取字段集合的每一个描述子元素,每个描述子包括函数名称、模块名称、比特数、默认值、属性,所述描述子的比特数严格定义了某一变量位于协议报文的某一段区间,根据模块名称和函数名称获取映射函数句柄,将映射函数句柄依次顺序入队,形成描述子映射函数句柄队列,完成映射函数模块的动态加载,映射函数指针的获取;
S3,按顺序依次调用描述子映射函数句柄队列中的每一个映射函数,映射函数以当前描述子内容、数据参数、报文缓冲为参量,完成协议报文和数据参数交互。
2.根据权利要求1所述的一种基于描述子的协议报文和数据的交互方法,其特征在于,所述S3具体为:
S31,根据数据参数中的状态信息,判断当前字段是否需要处理;如果不需要处理,则跳过本字段,处理下一字段;如果需要处理,则根据描述子中的比特长度属性,计算出当前字段在报文缓冲中以比特为单位的起止区间,记作当前字段区间;
S32,根据数据中的逻辑方向信息,确定逻辑方向;若当前逻辑方向为报文信息更新到数据,则以二进制形式截取当前字段区间的数据,将其转换为和数据中对应参量相同格式的变量,赋值给数据中对应参量,完成数据更新;若当前逻辑方向为数据按协议打包成报文,则将数据中对应参量转换成二进制比特序列,利用二进制比特序列中的比特顺序填充当前字段区间,并将多余比特丢弃,完成报文的更新。
3.根据权利要求1所述的一种基于描述子的协议报文和数据的交互方法,其特征在于,同一描述子文件中的字段集合支持交叉引用,字段集合的元素可以是另一个字段集合;同时,字段集合中的元素顺序排列,对应于协议报文数据的先后排列顺序。
4.根据权利要求1所述的一种基于描述子的协议报文和数据的交互方法,其特征在于,所述协议的单元字段是一个不可分割的最小协议字段。
5.根据权利要求1所述的一种基于描述子的协议报文和数据的交互方法,其特征在于,所述协议模块把不同协议的描述文件封装在不同文件里供协议模块解析,把映射函数按功能或者类别或者协议封装在不同的模块文件里供协议模块调用。
6.根据权利要求1所述的一种基于描述子的协议报文和数据的交互方法,其特征在于,所述通信主体为处于网络中间层的集中器或中继器。
7.一种基于描述子的协议报文和数据的交互系统,其特征在于,所述交互系统采用权利要求1至6任一权利要求所述的基于描述子的协议报文和数据的交互方法,所述交互系统包括:
通信主体,用于运行接收报文-报文解析-数据更新-报文生成-发送报文的业务逻辑循环;通信主体包含接口模块、业务模块、协议模块;
所述接口模块,用于从不同的数据接口接收数据报文或者将协议模块的输出报文从指定接口输出;
所述协议模块,用于根据描述子的描述调用对应映射函数完成协议报文和数据参数的交互;协议模块包含一个或多个描述子文件、一个或多个映射函数模块;其中,每一个描述子文件包含了一个或者多个描述子,描述子用于描述协议的单元字段和数据参数的映射关系,并利用映射函数的灵活性为业务逻辑提供接口;
所述业务模块,用于完成通信主体的业务逻辑,完成数据或者协议报文的更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010141120.9A CN111385292B (zh) | 2020-03-04 | 2020-03-04 | 一种基于描述子的协议报文和数据的交互方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010141120.9A CN111385292B (zh) | 2020-03-04 | 2020-03-04 | 一种基于描述子的协议报文和数据的交互方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111385292A CN111385292A (zh) | 2020-07-07 |
CN111385292B true CN111385292B (zh) | 2022-08-16 |
Family
ID=71221401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010141120.9A Active CN111385292B (zh) | 2020-03-04 | 2020-03-04 | 一种基于描述子的协议报文和数据的交互方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111385292B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112883691A (zh) * | 2021-02-19 | 2021-06-01 | 四川腾盾科技有限公司 | 无人机遥测数据协议转换方法及系统、数据使用方法 |
CN113721577B (zh) * | 2021-11-02 | 2022-02-11 | 西安热工研究院有限公司 | 面向多任务周期的数据交互方法和系统、设备及存储介质 |
CN115866090A (zh) * | 2022-12-26 | 2023-03-28 | 南京感动科技有限公司 | 基于多设备接入的多模协议适配及转换方法和系统 |
CN115857420B (zh) * | 2023-03-03 | 2023-05-12 | 深圳市综科智控科技开发有限公司 | 一种工控设备之间io互控的方法 |
CN116719871B (zh) * | 2023-06-29 | 2024-03-19 | 上海中汇亿达金融信息技术有限公司 | 交易管理系统的数据交互方法、装置及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6879682B1 (en) * | 2002-09-26 | 2005-04-12 | Bellsouth Intellectual Property Corporation | AIN to ISDN message mapping for intelligent peripheral service enhancement |
CN102546442A (zh) * | 2012-03-09 | 2012-07-04 | 北京神州数码思特奇信息技术股份有限公司 | 通信协议转换技术 |
CN106657149A (zh) * | 2017-01-24 | 2017-05-10 | 恒生电子股份有限公司 | 通讯协议转换方法与装置 |
CN108540477A (zh) * | 2018-04-13 | 2018-09-14 | 腾讯科技(成都)有限公司 | 数据通信的方法及相关设备 |
CN109525364A (zh) * | 2018-10-30 | 2019-03-26 | 北京计算机技术及应用研究所 | 一种基于xml的通信数据协议通用化描述方法 |
CN109768970A (zh) * | 2018-12-24 | 2019-05-17 | 通号通信信息集团有限公司 | 一种基于可配置的通用协议生成方法 |
CN110719296A (zh) * | 2019-10-25 | 2020-01-21 | 福建网能科技开发有限责任公司 | 一种终端通信协议内的报文数据自动解析的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108040040A (zh) * | 2017-11-30 | 2018-05-15 | 北京锐安科技有限公司 | 一种应用协议报文的自动化解析方法和装置 |
CN110839046B (zh) * | 2019-12-03 | 2022-04-22 | 睿哲科技股份有限公司 | 多协议的互通方法和系统 |
-
2020
- 2020-03-04 CN CN202010141120.9A patent/CN111385292B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6879682B1 (en) * | 2002-09-26 | 2005-04-12 | Bellsouth Intellectual Property Corporation | AIN to ISDN message mapping for intelligent peripheral service enhancement |
CN102546442A (zh) * | 2012-03-09 | 2012-07-04 | 北京神州数码思特奇信息技术股份有限公司 | 通信协议转换技术 |
CN106657149A (zh) * | 2017-01-24 | 2017-05-10 | 恒生电子股份有限公司 | 通讯协议转换方法与装置 |
CN108540477A (zh) * | 2018-04-13 | 2018-09-14 | 腾讯科技(成都)有限公司 | 数据通信的方法及相关设备 |
CN109525364A (zh) * | 2018-10-30 | 2019-03-26 | 北京计算机技术及应用研究所 | 一种基于xml的通信数据协议通用化描述方法 |
CN109768970A (zh) * | 2018-12-24 | 2019-05-17 | 通号通信信息集团有限公司 | 一种基于可配置的通用协议生成方法 |
CN110719296A (zh) * | 2019-10-25 | 2020-01-21 | 福建网能科技开发有限责任公司 | 一种终端通信协议内的报文数据自动解析的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111385292A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111385292B (zh) | 一种基于描述子的协议报文和数据的交互方法及系统 | |
US5619685A (en) | Run-time dynamically adaptive computer process for facilitating communication between computer programs | |
CN101893662B (zh) | 数字变电站的核相方法 | |
US9864346B2 (en) | Method for connecting a substation automation device according to IEC61850 to any industry automation field bus | |
CN101651683B (zh) | 一种信令消息解析源代码生成方法 | |
CN100561476C (zh) | 一种基于asn类型对象的代码生成方法 | |
CN103593326A (zh) | 一种用于网络处理器芯片的iec61850软件库组件及其实现方法 | |
CN109194617A (zh) | Xml报文的自动解析、封装方法和装置 | |
CN110912782B (zh) | 一种数据采集方法、装置及存储介质 | |
CN113028603A (zh) | 一种应用于中央空调系统的设备监测系统 | |
CN101312580B (zh) | 一种直放站监控中心和直放站监控方法 | |
CN115061772B (zh) | 一种多领域仿真模型集成方法及系统 | |
CN106708764A (zh) | 一种机载航电系统通用io处理系统 | |
CN112235316A (zh) | 一种仪器集成的数据通信方法 | |
CN107483284A (zh) | 网络设备的测试方法及装置 | |
US20040268318A1 (en) | Expert system for intelligent testing | |
CN109656622A (zh) | 一种实现通信设备自动化测试中网络测试仪的封装方法 | |
CN113448590A (zh) | 遥控注入数据快速生成方法、装置、计算机设备及介质 | |
CN118428426A (zh) | 深度学习框架的算子调用方法、存储介质及电子设备 | |
CN103633736A (zh) | 从变电子站至主站的在线监测通信方法 | |
CN111506357A (zh) | 一种动态库自动加载方法、系统及应用 | |
CN115328679A (zh) | 异构函数库的自动化集成方法、计算设备及其系统 | |
CN114115832A (zh) | 一种物联网嵌入式设备与云平台通信协议实现方法 | |
CN103546527A (zh) | 一种可扩展的工业组态或仿真软件通信方法 | |
CN111030907B (zh) | 一种机器人串口总线的多设备数据解析及管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |