一种通用的通讯规约实现方法
技术领域
本发明属于通讯规约实现技术领域,更具体地说,尤其涉及一种通用的通讯规约实现方法。
背景技术
规约由源代码实现:用户需要掌握开发语言,编译环境,开发门槛高,针对上述的问题,本发明使用程序结合配置文件的方式实现通讯规约,用户只需要更改配置文件即可实现通讯规约,不需要掌握开发语言和编译环境,有效降低了开发门槛。
发明内容
本发明的目的是为了解决现有技术中存在的缺点,而提出的一种通用的通讯规约实现方法。
为实现上述目的,本发明提供如下技术方案:
一种通用的通讯规约实现方法,包括如下步骤:
S1、将通讯规约的链路层和应用层分离开来,将物理链路交给主系统实现并定义了规约模块和一个配置文件:规约模块根据配置文件配置的报文原型和处理运算式生成发送报文,根据配置文件中各发送报文的初始优先级控制进行轮询式切换报文或跳转式切换报文以控制收通讯流程,根据配置文件中的判定运算式检查收到的数据是否正确,根据配置文件中的解析运算式解析数据;
S2、主系统实现与终端通讯的物理链路、对规约模块的接口的调用以及规约模块向主系统更新数据的回调接口,包括测量值更新接口、状态量更新接口、遥控返校接口和写终端参数返回接口;
系统启动后,主系统加载规约模块,提取出其中的初始化接口、注册终端接口、发送数据接口、遥控接口、写终端参数接口、接收数据处理接口;
加载成功后调用初始化接口,获取其标识,在后续的接口调用中都会将标识以接口参数的形式传送给规约模块以指定通道;接下来调用终端接口,将待通讯终端的基础信息传送给规约模块;
在后续的流程中,主系统定时调用发送数据接口,获取规约模块组织好的报文并发送给终端;在用户进行遥控操作时调用遥控接口,将遥控的目标点号和目标状态以接口参数的形式传送给规约模块,获取规约模块组织好的遥控报文并发送给终端,在用户进行写终端参数操作时调用写终端参数接口,将终端参数以接口参数的形式传送给规约模块,获取规约模块组织好的写终端参数报文并发送给终端;在获取到终端返回的报文时主系统调用接收数据处理接口,将接收到的报文传送给规约模块;
S3、规约模块实现初始化接口,终端接口,发送数据接口,切换报文机制,接收数据处理接口;
初始化接口生成本模块标识以支持多通道,主系统调用模块其他接口时,均需要以接口参数的形式将该标识传送给规约模块以指定通道;
终端接口用于获取终端基本信息,规约模块在该接口中存储了主系统传送过来的终端编号,用于在组织发送报文时加入终端链路地址、判断返回报文链路地址是否正确、向主系统更新数据时指定更新的终端;
发送数据接口中使用配置文件第二部分配置的处理运算式对配置文件第一部分配置的报文原型做校验前处理,向待发送报文中加入终端信息;为待发送报文添加校验码;将待发送报文转换为密文;
切换报文机制在发送数据超时、接收数据超时及收到完整数据时按照待发送报文的实时优先级进行切换;
切换报文机制在配置文件中为每条待发送报文设置了预设优先级,待发送的常规轮询报文预设为程序指定的常规轮询优先级;待发送的遥控报文、待发送的写终端参数报文、定时待发送报文分别预设为程序指定的对应优先级,这些优先级高于常规轮询优先级;
切换报文机制在运行过程中动态调整各报文的优先级:待发送的常规轮询报文实时优先级与预设优先级相同;待发送的遥控报文的实时优先级初始值为不发送,在规约模块遥控接口被调用时更改为预设优先级;待发送的写终端参数报文实时优先级初始值为不发送,在规约模块写终端参数接口被调用时更改为预设优先级;定时待发送报文实时优先级初始值为不发送,在定时时间到达时更改为预设优先级;待发送的常规轮询报文发送完毕后,它的实时优先级保持不变,非常规轮询待发送报文发送完毕后,它的实时优先级恢复为初始值;
切换报文机制在配置文件中为每个待发送报文和回复报文处理过程设置了一组优先级调整策略,在报文发送、回复报文解析后调整各报文发送次序;
切换报文机制设置了当前终端序号并为每个终端设置了当前报文序号,切换报文时,如果各终端中没有实时优先级高于常规轮询优先级的待发送报文时执行轮询式切换报文,否则执行跳转式切换报文;对于轮询式切换报文,当前终端序号加1并在达到最大值时归0,该操作完成后,加1后的终端序号对应终端的当前报文序号加1并在达到最大值时归0;对于跳转式切换报文执行,备份当前终端序号和当前终端的当前发送报文序号后,将当前终端序号设置为高实时优先级报文所在的终端序号,将高实时优先级报文所在的终端的当前发送序号设置为高实时优先级报文的序号;
接收数据处理接口设置了一个存储区并将接收到的报文存储在存储区中,该接口最先开始的是报文长度判断部分,在此部分程序执行配置文件中第三部分的报文长度表达式计算出应该收到的报文长度,如果报文长度已达到则开始解析报文部分,否则退出本次调用;在解析报文部分,程序执行配置文件中第四部分的判定运算式,判断报文接收是否正确,如果正确则开始数据解析部分,否则去除一个字节后退回到长度判断部分;在数据解析部分,程序分别执行配置文件中第五部分的测量值解析运算式、状态量解析运算式、遥控返回解析运算式、写终端参数返回解析运算式、时间信息解析运算式、SOE解析运算式、事件信息解析运算式,解析出报文中的测量值数据、状态量数据、遥控返回数据、写终端参数返回数据、时间信息返回数据、SOE信息、事件信息;解析完成后调用主系统的更新数据的回调接口将数据传送给主系统。
所述步骤S1中规约模块定义了数学运算、逻辑运算、位运算和校验算法接口以支持配置文件中的各运算式,定义了与主系统的接口以完成模块初始化、启动及与主系统的交互,定义了配置文件解析及执行的功能以完成实时的通讯过程;
在运行过程中,规约模块按照配置文件中定义的规则,通过主系统向通讯目标发送报文并获取通讯目标返回的报文,解析这些报文后生成业务数据并传给主系统;
所述规约模块的流程控制操作,如发送、接收、切换发送、切换终端由固化的程序完成,不需要开发者完成;
所述流程控制操作对于跳转式的报文发送是由固化的程序根据用户配置的预设报文优先级生成实时优先级实现的;
所述规约模块发送的报文是由固化的程序根据用户配置的报文原型和处理运算式组织出来的;
所述规约模块的接收数据正确性判断是由固化程序根据用户配置的判定表达式进行判断的;
所述规约模块的数据解析是由固化程序根据用户配置的解析运算式完成的;
所述规约模块的固化程序中完成了对配置文件各处理运算式、判定运算式、解析运算式中数学运算符,逻辑运算符,位运算符的支持。
所述步骤S2中规约程序模块实现与主系统的接口包括初始化接口、注册终端接口、发送数据接口、遥控接口、写终端参数接口、接收数据处理接口以及规约配置文件的接口,包括常见数学运算、逻辑运算、位运算和校验算法接口;
规约配置文件由用户配置,在此文件中,用户完成五部分的配置后即完成了整个通讯规约的开发,分别为第一部分的报文原型,第二部分的发送处理运算式,第三部分的接收长度判断运算式,第四部分的正确性检查运算式,第五部分的数据解析运算式。
与现有技术相比,本发明的有益效果是:本发明提供的一种通用的通讯规约实现方法,对比传统的代码开发中开发者需要在指定编译环境下编写源码,本发明采用固化程序结合配置文件的方式,固化程序开发完成后,接入不同的通讯规约只需要调整配置文件,不需要编译环境,有效的降低了开发门槛,使工程人员不依赖于研发人员即可开发通讯规约,鉴于研发成本往往较高,本方法可有效的降低通讯规约开发成本。发送数据生成采用报文原型结合处理运算式的方式、流程控制采用发送报文优先级的方式,解析数据采用解析运算式的方式又不失灵活性,能够满足常见通讯规约的接入;这种方法可以让研发人员专注于固化程序的实现,工程人员专注于配置部分,在管理上也带来了很大的便利。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合具体实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种通用的通讯规约实现方法,包括如下步骤:
S1、将通讯规约的链路层和应用层分离开来,将物理链路交给主系统实现并定义了规约模块和一个配置文件:规约模块根据配置文件配置的报文原型和处理运算式生成发送报文,根据配置文件中各发送报文的初始优先级控制进行轮询式切换报文或跳转式切换报文以控制收通讯流程,根据配置文件中的判定运算式检查收到的数据是否正确,根据配置文件中的解析运算式解析数据;
S2、主系统实现与终端通讯的物理链路、对规约模块的接口的调用以及规约模块向主系统更新数据的回调接口,包括测量值更新接口、状态量更新接口、遥控返校接口和写终端参数返回接口;
系统启动后,主系统加载规约模块,提取出其中的初始化接口、注册终端接口、发送数据接口、遥控接口、写终端参数接口、接收数据处理接口;
加载成功后调用初始化接口,获取其标识,在后续的接口调用中都会将标识以接口参数的形式传送给规约模块以指定通道;接下来调用终端接口,将待通讯终端的基础信息传送给规约模块;
在后续的流程中,主系统定时调用发送数据接口,获取规约模块组织好的报文并发送给终端;在用户进行遥控操作时调用遥控接口,将遥控的目标点号和目标状态以接口参数的形式传送给规约模块,获取规约模块组织好的遥控报文并发送给终端,在用户进行写终端参数操作时调用写终端参数接口,将终端参数以接口参数的形式传送给规约模块,获取规约模块组织好的写终端参数报文并发送给终端;在获取到终端返回的报文时主系统调用接收数据处理接口,将接收到的报文传送给规约模块;
S3、规约模块实现初始化接口,终端接口,发送数据接口,切换报文机制,接收数据处理接口;
初始化接口生成本模块标识以支持多通道,主系统调用模块其他接口时,均需要以接口参数的形式将该标识传送给规约模块以指定通道;
终端接口用于获取终端基本信息,规约模块在该接口中存储了主系统传送过来的终端编号,用于在组织发送报文时加入终端链路地址、判断返回报文链路地址是否正确、向主系统更新数据时指定更新的终端;
发送数据接口中使用配置文件第二部分配置的处理运算式对配置文件第一部分配置的报文原型做校验前处理,向待发送报文中加入终端信息;为待发送报文添加校验码;将待发送报文转换为密文;
切换报文机制在发送数据超时、接收数据超时及收到完整数据时按照待发送报文的实时优先级进行切换;
切换报文机制在配置文件中为每条待发送报文设置了预设优先级,待发送的常规轮询报文预设为程序指定的常规轮询优先级;待发送的遥控报文、待发送的写终端参数报文、定时待发送报文分别预设为程序指定的对应优先级,这些优先级高于常规轮询优先级;
切换报文机制在运行过程中动态调整各报文的优先级:待发送的常规轮询报文实时优先级与预设优先级相同;待发送的遥控报文的实时优先级初始值为不发送,在规约模块遥控接口被调用时更改为预设优先级;待发送的写终端参数报文实时优先级初始值为不发送,在规约模块写终端参数接口被调用时更改为预设优先级;定时待发送报文实时优先级初始值为不发送,在定时时间到达时更改为预设优先级;待发送的常规轮询报文发送完毕后,它的实时优先级保持不变,非常规轮询待发送报文发送完毕后,它的实时优先级恢复为初始值;
切换报文机制在配置文件中为每个待发送报文和回复报文处理过程设置了一组优先级调整策略,在报文发送、回复报文解析后调整各报文发送次序;
切换报文机制设置了当前终端序号并为每个终端设置了当前报文序号,切换报文时,如果各终端中没有实时优先级高于常规轮询优先级的待发送报文时执行轮询式切换报文,否则执行跳转式切换报文;对于轮询式切换报文,当前终端序号加1并在达到最大值时归0,该操作完成后,加1后的终端序号对应终端的当前报文序号加1并在达到最大值时归0;对于跳转式切换报文执行,备份当前终端序号和当前终端的当前发送报文序号后,将当前终端序号设置为高实时优先级报文所在的终端序号,将高实时优先级报文所在的终端的当前发送序号设置为高实时优先级报文的序号;
接收数据处理接口设置了一个存储区并将接收到的报文存储在存储区中,该接口最先开始的是报文长度判断部分,在此部分程序执行配置文件中第三部分的报文长度表达式计算出应该收到的报文长度,如果报文长度已达到则开始解析报文部分,否则退出本次调用;在解析报文部分,程序执行配置文件中第四部分的判定运算式,判断报文接收是否正确,如果正确则开始数据解析部分,否则去除一个字节后退回到长度判断部分;在数据解析部分,程序分别执行配置文件中第五部分的测量值解析运算式、状态量解析运算式、遥控返回解析运算式、写终端参数返回解析运算式、时间信息解析运算式、SOE解析运算式、事件信息解析运算式,解析出报文中的测量值数据、状态量数据、遥控返回数据、写终端参数返回数据、时间信息返回数据、SOE信息、事件信息;解析完成后调用主系统的更新数据的回调接口将数据传送给主系统。
所述步骤S1中规约模块定义了数学运算、逻辑运算、位运算和校验算法接口以支持配置文件中的各运算式,定义了与主系统的接口以完成模块初始化、启动及与主系统的交互,定义了配置文件解析及执行的功能以完成实时的通讯过程;
在运行过程中,规约模块按照配置文件中定义的规则,通过主系统向通讯目标发送报文并获取通讯目标返回的报文,解析这些报文后生成业务数据并传给主系统;
所述规约模块的流程控制操作,如发送、接收、切换发送、切换终端由固化的程序完成,不需要开发者完成;
所述流程控制操作对于跳转式的报文发送是由固化的程序根据用户配置的预设报文优先级生成实时优先级实现的;
所述规约模块发送的报文是由固化的程序根据用户配置的报文原型和处理运算式组织出来的;
所述规约模块的接收数据正确性判断是由固化程序根据用户配置的判定表达式进行判断的;
所述规约模块的数据解析是由固化程序根据用户配置的解析运算式完成的;
所述规约模块的固化程序中完成了对配置文件各处理运算式、判定运算式、解析运算式中数学运算符,逻辑运算符,位运算符的支持。
所述步骤S2中规约程序模块实现与主系统的接口包括初始化接口、注册终端接口、发送数据接口、遥控接口、写终端参数接口、接收数据处理接口以及规约配置文件的接口,包括常见数学运算、逻辑运算、位运算和校验算法接口;
规约配置文件由用户配置,在此文件中,用户完成五部分的配置后即完成了整个通讯规约的开发,分别为第一部分的报文原型,第二部分的发送处理运算式,第三部分的接收长度判断运算式,第四部分的正确性检查运算式,第五部分的数据解析运算式。
综上所述:本发明提供的一种通用的通讯规约实现方法,对比传统的代码开发中开发者需要在指定编译环境下编写源码,本发明采用固化程序结合配置文件的方式,固化程序开发完成后,接入不同的通讯规约只需要调整配置文件,不需要编译环境,有效的降低了开发门槛,使工程人员不依赖于研发人员即可开发通讯规约,鉴于研发成本往往较高,本方法可有效的降低通讯规约开发成本。发送数据生成采用报文原型结合处理运算式的方式、流程控制采用发送报文优先级的方式,解析数据采用解析运算式的方式又不失灵活性,能够满足常见通讯规约的接入;这种方法可以让研发人员专注于固化程序的实现,工程人员专注于配置部分,在管理上也带来了很大的便利。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。