通过同步并发网络连接的多机无耦合数字化开发平台转让专利

申请号 : CN202210527632.8

文献号 : CN114625359B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘文龙

申请人 : 西安数道航空技术有限公司

摘要 :

本发明公开了一种通过同步并发网络连接的多机无耦合数字化开发平台,连接在呈树形拓扑结构的单一时钟同步并发网络中,多台机器作为单一时钟同步并发网络中的一个节点,所有节点硬件时钟全局统一,用于开发数字化装备的各个任务功能模块;该平台通过自身定义数据结构体、为任务功能模块提供唯一内存、以及赋予任务功能模块通过锁定专用内存的方式确定自身是否具备发布基础调度时钟的功能,从而将基础调度时钟发布至所有任务功能模块,使得每个任务功能模块执行自身的数据过程,再同步至其他任务功能模块。本发明可以缩短数字化系统/装备的研发周期,降低数字化系统/装备的研发成本,减少测试工作量,降低测试成本,能大幅提高研发效率。

权利要求 :

1.一种通过同步并发网络连接的多机无耦合数字化开发平台,其特征在于,无耦合数字化开发平台运行在多台机器上,多台机器的无耦合数字化开发平台连接在呈树形拓扑结构的单一时钟同步并发网络中,多台机器作为单一时钟同步并发网络中的一个节点,所有节点在单一时钟同步并发网络中硬件时钟全局统一,多个机器无耦合数字化开发平台用于开发数字化装备的各个任务功能模块;

多台机器的无耦合数字化开发平台为每个所述任务功能模块提供对应的模型容器,所述模型容器用于转存每个任务功能模块读入或写出的数据至全局动态空间的对应地址内存中;

多台机器的无耦合数字化开发平台,一起共同设定定义所有任务功能模块数据的数据结构体,以及按照所述数据结构体的定义读入所有任务功能模块数据的接口;

多台机器的无耦合数字化平台还为每个所述任务功能模块均提供一个统一服务单元;

每个统一服务单元,用于在自身所属的任务功能模块上线时通过尝试锁定全局动态空间中专用内存的方式,确定自身是否发布基础调度时钟;

每个任务功能模块,响应于所述基础调度时钟,执行数据的读取、运算以及存储,以获取其他任务功能模块的数据以及将自身数据同步至其他任务功能模块;

单一时钟同步并发网络呈树形网络拓扑,每个节点按照在树形网络中的层级连接其他节点,同一层级的节点不连接;

在单一时钟同步并发网络中每个节点通过单一时钟对准,使得同一数据的生成时间节点在分布网络中保持相同;

每个节点,同步并行接收下一层级直连节点的全局统一数据以及上一层级从节点转发全局统一数据,并发布全局统一数据至每个任务功能模块,以使任务功能模块从全局统一数据中筛选自身所需的统一数据对象;

每个节点转发的全局统一数据中每个统一对象在单一时钟同步并发网络中的生成时间节点一致。

2.根据权利要求1所述的无耦合数字化开发平台,其特征在于,

多台机器的无耦合数字化平台,还用于按照预设的规则将所有任务功能模块的数据进行排队,将排队后的数据同步广播至所有任务功能模块;

将自身全局动态空间的全局数据传阅至单一时钟同步并发网络中的其他节点。

3.根据权利要求1所述的无耦合数字化开发平台,其特征在于,所述每个统一服务单元,用于在自身所属的任务功能模块上线时通过尝试锁定全局动态空间中专用内存的方式,确定自身是否发布基础调度时钟包括:每个统一服务单元,用于在自身所属的任务功能模块上线时,尝试锁定全局动态空间中专用内存,如果所述专用内存已经被锁定,则锁定失败,否则锁定成功,则确定自身可以发布基础调度时钟。

4.根据权利要求1所述的无耦合数字化开发平台,其特征在于,每个任务功能模块,响应于所述基础调度时钟,执行数据的读取、运算以及存储包括:每个任务功能模块,当接收到基础调度时钟,则判断自身的调度时钟与基础调度时钟是否相同,以确定自身是否可以进行调度,如果可以则依次执行数据的读取、运算以及存储;如果不可以,则等待到达自身的调度时钟后,依次执行数据的读取、运算以及存储;

其中,任务功能模块的调度时钟是基础调度时钟的整倍数。

5.根据权利要求4所述的无耦合数字化开发平台,其特征在于,每个功能模块自身的调度时钟与传输速率一一对应,所述统一服务单元是通过广播形式发布调度帧来发布所述基础调度时钟给所有的任务功能模块;

所述调度帧中,包含有配置所述基础调度时钟的时钟周期的字段、统计所述基础调度时钟的发布次数的字段以及发布时间戳。

6.根据权利要求1所述的无耦合数字化开发平台,其特征在于,每个任务功能模块,响应于所述基础调度时钟,执行数据的读取、运算以及存储包括:响应于所述基础调度时钟或自身调度时钟,从计算机内存中读取与自身的输入相关的数据;

按照该任务功能模块中所选定的数据处理策略,基于所读取的数据执行数据运算,并将运算结果存入该任务功能模块在全局动态空间对应的内存空间中;

其中,任一所述任务功能模块中所选定的数据处理策略包括:

将所读取的数据缓存至不限长度的第一队列中,并基于所述第一队列中存储的数据执行数据运算;或者,用所读取的数据覆盖上一时钟周期中所读取的数据,并基于最新读取的数据执行数据运算;或者,将所读取的数据缓存至具有预设长度的第二队列中,若所述第二队列已满,则弹出所述第二队列中最早存储的数据;基于所述第二队列中存储的数据执行数据运算。

7.根据权利要求6所述的无耦合数字化开发平台,其特征在于,任一所述任务功能模块中所选定的数据处理策略还包括:若所读取的数据不足以执行本次的数据运算,则结合本次读取的数据以及上一时钟周期中读取的数据执行本次的数据运算;或者,若所读取的数据不足以执行本次的数据运算,则清除本次读取的数据,并跳过本次的数据运算及存储步骤。

8.根据权利要求1所述的无耦合数字化开发平台,其特征在于,所述任务功能模块位于同一台计算机上时,通过进程通信实现数据帧和调度帧的交互,位于不同的计算机上时,通过同步并发网络实现数据帧和调度帧的交互;

其中,所述调度帧与所述数据帧的帧格式相同,通过固定字节的数值不同表示是数据帧还是调度帧。

9.根据权利要求1所述的无耦合数字化开发平台,其特征在于,任务功能模块在线时向对应的模型容器发送心跳包,以使该任务功能模块所在的无耦合数字化开发平台根据所述心跳包生成并输出各任务功能模块是否在线的信息;

多台机器的无耦合数字化开发平台,当未连续检测到发布基础调度时钟的任务功能模块发送心跳包时,确定该任务功能模块掉线,则重置自身平台上所有在线的任务功能模块;

其中,所述心跳包的数据载荷包括:任务功能模块的ID以及无耦合开发平台的平台ID。

10.根据权利要求1所述的无耦合数字化开发平台,其特征在于,多台机器的无耦合数字开发平台中设有广义通信库,以供用户开发所述任务功能模块时选用;

所述广义通信库包括多个通信转换协议,所述通信转换协议为实现平台内外部数据格式转换的协议;其中,内部数据是所述数据结构体中定义的数据,外部数据是所述数据结构体中未定义的数据。

说明书 :

通过同步并发网络连接的多机无耦合数字化开发平台

技术领域

[0001] 本发明属于数字化装备研发领域,具体涉及一种通过同步并发网络连接的多机无耦合数字化开发平台。

背景技术

[0002] 传统通信过程中,当针对一个内核系统,当多个模型之间需要信息交互,一般采用硬线以各种总线形式进行数据传输,其通信过程严重依赖底层总线的技术先进性,随着系统越来越复杂,信息交互将变的越来越复杂。内核系统内部之间的通信类似于寻址,即建立链路连接的过程,而在建立链路时需要约定通信协议。而通信协议约定过程涉及到组包以及解包,即什么位置发送放置什么样的数据,组包以及解包是一个较为浪费计算资源的过程,且组包以及解包涉及到内容耦合、时间耦合、地址耦合、因果耦合以及系统耦合。
[0003] 内容耦合即数据含义、长度以及放置位置上的耦合;时间耦合是指在具体恰当的时间上发送数据;地址耦合是指内核系统上链路连接各个进程的地址上耦合;因果耦合是任务先后执行的顺序上的耦合;系统耦合是指子系统间、分系统间数据传输逻辑关系之间的耦合。
[0004] 这些耦合将影响系统的扩容/缩容,功能增加、更改或者重新部署以及重构,现有技术为了解决这些问题,常常设置监视程序去监视系统中各个模块是否正常运行,实时监测各个模块是否在线,同时还存在测试过程测试各个模块的状态。由于各种耦合关系的存在,使得系统的扩容/缩容,功能增加、更改或者重新部署以及重构等都会带来重新测试验证,并且测试没有任何继承性。在装备中由多个系统,每一个系统中又存在多个模块,模块之间的时间并不同步,即模块内部可能存在不同的执行周期。在这些过程中无法获知哪些模块是耦合在一起,导致获取到具体模块的具体状态、具体数据以及具体时间,而增加一个监视程序需要重新设计整个系统,此种情况称为紧耦合设计。
[0005] 而在实际情况中,以某个装备系统为例,各个设计厂商使用紧耦合设计系统设计自己的子系统,且主体集成单位完成整个集成过程,一旦任何一种修改,整个设计协议、文档以及软件所有设计厂商都要进行协调更改。而大的系统常常有上万份文档,设计厂商之间互相协商存在较多人为因素,导致整个协调过程拉长,且一个设计厂商有可能需要更改自己本身技术问题的子系统,整个环节较为困难。因此技术人员提出了一种数据分发系统。
[0006] 数据分发系统中,每一个设计厂商设计一个配置文件,该配置文件主要包括写主题以及读主题。而主体集成单位将所有设计厂商的配置文件组成一个中间数据库由中心服务器负责,如果分厂商需要具体那个数据,则由数据分发系统查询配置文件,然后重组数据发送给具体的分厂商。一旦发生更改,只需更改配置文件,以此解决紧耦合问题。
[0007] 然后数据分发系统中,各个设计厂商所设计的系统时钟不统一,每个模块发生改变,读写过程都需要发生改变。而一个设计厂商改变配置文件需要发送到中央数据库进行更改,其他设计厂商的配置文件也需要更改,无法摆脱过程,且需要增加中心服务器。一旦配置文件进行更改,则测试过程需要重新测试,数据分发系统中每个模块读取数据在多进程之间不能完成写过程,如果发生问题。因此设计锁定模块过程,即数据读取过程不能再写入,但是模块读取可能同时发生,有的模块需要等待,导致多个模块完成读取过程耗时过长。
[0008] 而对各厂商在自身设计时想要解耦合,但是还需要配合调试,以完成整个产品设计。因此亟待一种多机无耦合数字开发平台。

发明内容

[0009] 为了解决现有技术中存在的上述问题,本发明提供了一种通过同步并发网络连接的多机无耦合数字化开发平台。本发明要解决的技术问题通过以下技术方案实现:
[0010] 本发明提供的一种通过同步并发网络连接的多机无耦合数字化开发平台,该无耦合数字化开发平台运行在多台机器上,多台机器的无耦合数字化开发平台连接在呈树形拓扑结构的单一时钟同步并发网络中,多台机器作为单一时钟同步并发网络中的一个节点,所有节点在单一时钟同步并发网络中硬件时钟全局统一,多个机器无耦合数字化开发平台用于开发数字化装备的各个任务功能模块;
[0011] 多台机器的无耦合数字化开发平台为每个任务功能模块提供对应的模型容器,模型容器用于转存每个任务功能模块读入或写出的数据至全局动态空间的对应地址内存中;
[0012] 多台机器的无耦合数字化开发平台,一起共同设定定义所有任务功能模块数据的数据结构体,以及按照数据结构体的定义读入所有任务功能模块数据的接口;
[0013] 多台机器的无耦合数字化平台还为每个任务功能模块均提供一个统一服务单元;
[0014] 每个统一服务单元,用于在自身所属的任务功能模块上线时通过尝试锁定全局动态空间中专用内存的方式,确定自身是否发布基础调度时钟;
[0015] 每个任务功能模块,响应于基础调度时钟,执行数据的读取、运算以及存储,以获取其他任务功能模块的数据以及将自身数据同步至其他任务功能模块。
[0016] 可选的,多台机器的无耦合数字化平台,还用于按照预设的规则将所有任务功能模块的数据进行排队,将排队后的数据同步广播至所有任务功能模块;
[0017] 将自身全局动态空间的全局数据传阅至单一时钟同步并发网络中的其他节点。
[0018] 可选的,每个统一服务单元,用于在自身所属的任务功能模块上线时通过尝试锁定全局动态空间中专用内存的方式,确定自身是否发布基础调度时钟包括:
[0019] 每个统一服务单元,用于在自身所属的任务功能模块上线时,尝试锁定全局动态空间中专用内存,如果专用内存已经被锁定,则锁定失败,否则锁定成功,则确定自身可以发布基础调度时钟。
[0020] 可选的,每个任务功能模块,响应于基础调度时钟,执行数据的读取、运算以及存储包括:
[0021] 每个任务功能模块,当接收到基础调度时钟,则判断自身的调度时钟与基础调度时钟是否相同,以确定自身是否可以进行调度,如果可以则依次执行数据的读取、运算以及存储;如果不可以,则等待到达自身的调度时钟后,依次执行数据的读取、运算以及存储;
[0022] 其中,任务功能模块的调度时钟是基础调度时钟的整倍数。
[0023] 可选的,每个功能模块自身的调度时钟与传输速率一一对应,
[0024] 统一服务单元是通过广播形式发布调度帧来发布基础调度时钟给所有的任务功能模块;
[0025] 调度帧中,包含有配置基础调度时钟的时钟周期的字段、统计基础调度时钟的发布次数的字段以及发布时间戳。
[0026] 可选的,每个任务功能模块,响应于基础调度时钟,执行数据的读取、运算以及存储包括:
[0027] 响应于基础调度时钟或自身调度时钟,从计算机内存中读取与自身的输入相关的数据;
[0028] 按照该任务功能模块中所选定的数据处理策略,基于所读取的数据执行数据运算,并将运算结果存入该任务功能模块在全局动态空间对应的内存空间中;
[0029] 其中,任一任务功能模块中所选定的数据处理策略包括:
[0030] 将所读取的数据缓存至不限长度的第一队列中,并基于第一队列中存储的数据执行数据运算;或者,
[0031] 用所读取的数据覆盖上一时钟周期中所读取的数据,并基于最新读取的数据执行数据运算;或者,
[0032] 将所读取的数据缓存至具有预设长度的第二队列中,若第二队列已满,则弹出第二队列中最早存储的数据;基于第二队列中存储的数据执行数据运算。
[0033] 可选的,任一任务功能模块中所选定的数据处理策略还包括:
[0034] 若所读取的数据不足以执行本次的数据运算,则结合本次读取的数据以及上一时钟周期中读取的数据执行本次的数据运算;或者,
[0035] 若所读取的数据不足以执行本次的数据运算,则清除本次读取的数据,并跳过本次的数据运算及存储步骤。
[0036] 可选的,任务功能模块位于同一台计算机上时,通过进程通信实现数据帧和调度帧的交互,位于不同的计算机上时,通过同步并发网络实现数据帧和调度帧的交互;
[0037] 其中,调度帧与数据帧的帧格式相同,通过固定字节的数值不同表示是数据帧还是调度帧。
[0038] 可选的,任务功能模块在线时向对应的模型容器发送心跳包,以使该任务功能模块所在的无耦合数字化开发平台根据心跳包生成并输出各任务功能模块是否在线的信息;
[0039] 多台机器的无耦合数字化开发平台,当未连续检测到发布基础调度时钟的任务功能模块发送心跳包时,确定该任务功能模块掉线,则重置自身平台上所有在线的任务功能模块;
[0040] 其中,心跳包的数据载荷包括:任务功能模块的ID以及无耦合开发平台的平台ID。
[0041] 可选的,多台机器的无耦合数字开发平台中设有广义通信库,以供用户开发任务功能模块时选用;
[0042] 广义通信库包括多个通信转换协议,通信转换协议为实现平台内外部数据格式转换的协议;其中,内部数据是数据结构体中定义的数据,外部数据是数据结构体中未定义的数据。
[0043] 本发明公开了一种通过同步并发网络连接的多机无耦合数字化开发平台,连接在呈树形拓扑结构的单一时钟同步并发网络中,多台机器作为单一时钟同步并发网络中的一个节点,所有节点硬件时钟全局统一,用于开发数字化装备的各个任务功能模块;该平台通过自身定义数据结构体、为任务功能模块提供唯一内存、以及赋予任务功能模块通过锁定专用内存的方式确定自身是否具备发布基础调度时钟的功能,从而将基础调度时钟发布至所有任务功能模块,使得每个任务功能模块执行自身的数据过程,再同步至其他任务功能模块。本发明可以缩短数字化系统/装备的研发周期,降低数字化系统/装备的研发成本,减少测试工作量,降低测试成本,能大幅提高研发效率。
[0044] 此外,每个机器的平台为任务功能模块提供唯一内存、以及赋予任务功能模块通过锁定专用内存的方式确定自身是否具备发布基础调度时钟的功能,从而将基础调度时钟发布至所有任务功能模块,使得每个任务功能模块执行自身的数据过程,再同步至其他任务功能模块。在线的任务功能模块可响应于基础调度时钟,然后当达到自身调度时钟时,依次执行数据的读取、运算以及存储,确保了任务功能模块间在时钟上的同步性。
[0045] 综上,利用本发明实施例提供的无耦合数字化开发平台来开发数字化装备,可以实现任务功能模块间在接口、协议以及逻辑上的解耦,可以缩短数字化系统/装备的研发周期,降低数字化系统/装备的研发成本,减少测试工作量,降低测试成本,能大幅提高研发效率。
[0046] 以下将结合附图及实施例对本发明做进一步详细说明。

附图说明

[0047] 图1是本发明实施例提供的通过同步并发网络连接的多机无耦合数字化开发平台的结构示意图;
[0048] 图2是本发明实施例中的自身调度时钟取自于基础调度时钟的示意图;
[0049] 图3是是本发明实施例提供的无耦合数字化开发平台的结构示意图;
[0050] 图4是本发明实施例中的调度帧的帧结构示意图;
[0051] 图5是本发明实施例中在一个时钟周期内并行运行多个任务的示意图;
[0052] 图6是本发明实施例中在一个时钟周期内并行运行多个有逻辑先后关系的任务的示意图。

具体实施方式

[0053] 下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
[0054] 为了降低数字化系统/装备的研发成本以及测试成本,并提高研发效率,本发明实施例提供了一种通过同步并发网络连接的多机无耦合数字化开发平台,
[0055] 多台机器的无耦合数字化开发平台连接在呈树形拓扑结构的单一时钟同步并发网络中,多台机器作为单一时钟同步并发网络中的一个节点,所有节点在单一时钟同步并发网络中硬件时钟全局统一,多台机器的无耦合数字化开发平台用于开发数字化装备的各个任务功能模块,这些任务功能模块协同工作,实现数字化装备的相应功能,这些任务功能模块在多台机器上或一台机器上。
[0056] 如图1最下子图所示,单一时钟同步并发网络呈树形网络拓扑,每个节点按照在树形网络中的层级连接其他节点,同一层级的节点不连接;
[0057] 在单一时钟同步并发网络中每个节点通过单一时钟对准,使得同一数据的生成时间节点在分布网络中保持相同;
[0058] 每个节点,同步并行接收下一层级直连节点的全局统一数据以及上一层级从节点转发全局统一数据,并发布全局统一数据至每个任务功能模块,以使任务功能模块从全局统一数据中筛选自身所需的统一数据对象;
[0059] 每个节点转发的全局统一数据中每个统一对象在单一时钟同步并发网络中的生成时间节点一致。
[0060] 值得说明的是:无耦合数字化开发平台可以将各个厂商的数据,厂商的任务功能模块的数据进行时钟对准的传阅,且由于各个厂商有自身的时钟周期,因此在无耦合数字化开发平台上每个任务功能模块可以按照自身时钟周期选择是否读取其他任务功能模块的数据,这样实现全局数据管理。
[0061] 参加图1所示,该平台中包含有用于定义和导入数据结构体(Struct)的入口(Struct定义&导入),该数据结构体中定义的数据包括每个任务功能模块所输出的数据;该平台为每个任务功能模块提供对应的模型容器,每个任务功能模块所输出的数据均被对应的模型容器存至全局动态空间的对应地址内存中。
[0062] 本领域技术人员均知晓,所谓容器是软件及其运行环境的标准化打包。本发明实施例中所说的模型容器即指的是这一类容器。
[0063] 可以理解的是,由于每个任务功能模块均唯一对应计算机的一段内存空间,故而任务功能模块之间的数据交互可通过直接访问内存的方式来实现,无需再额外设置数据库。并且,相较于现有的数据分发系统中每个任务功能模块内部分别定义配置文件、再将配置文件给到数据库进行解析的方式而言,本发明实施例中无需再根据配置文件来解析各项数据的名称、类型以及与系统的从属关系等信息,使得任务功能模块间的接口、协议实现了解耦,又由于直接访问内存的速度更快,使得任务功能模块间的协作效率得到了很大的提升。
[0064] 在实际应用中,为任务功能模块对应全局动态空间中唯一的内存空间的具体实现方式存在多种。示例性的,在一种实现方式中,每个任务功能模块对应的内存空间可以根据平台标识以及该任务功能模块的ID映射得到。可以理解的是,平台标识以及任务功能模块的ID是唯一的,因此根据平台标识以及任务功能模块ID为任务功能模块映射的内存空间与任务功能模块也是唯一对应的。
[0065] 在另一种实现方式中,若不同任务功能模块的名称是不同的,则也可以根据任务功能模块的名称来为任务功能模块映射内存空间。
[0066] 在另一种实现方式中,根据任务功能模块的ID或名称,结合任务功能模块在平台中的创建时间,也可以唯一指定任务功能模块,由此也可以根据任务功能模块的ID/名称,以及任务功能模块在平台中的创建时间来为任务功能模块映射内存空间。
[0067] 继续参见图1,该平台还为每个任务功能模块均提供一个统一服务单元(clk);该统一服务单元,用于在自身所属的任务功能模块上线时通过尝试锁定全局动态空间中专用内存的方式,确定自身是否发布基础调度时钟;每个任务功能模块,响应于基础调度时钟,执行数据的读取、运算以及存储,以获取其他任务功能模块的数据以及将自身数据传阅至其他任务功能模块。
[0068] 值得说明的是:每个任务功能模块读取的数据来源于全局动态空间,这样每个功能模块在当前时钟周期可以读取到前一时钟周期的所有任务功能模块的数据,以这样的方式实现循环共享传阅。如此当一个任务功能模块的时钟周期到来时,就可以在全局动态空间选择自己所需的数据。
[0069] 由于统一服务单元将每个任务功能模块发出来的数据"同步"发送到每一个任务功能模块,任意一个任务功能模块因为在每一个时钟周期中都能接收到所有任务功能模块的数据,即也就是每个时钟周期都能获取取全局数据,就只需要挑选自己所需要的数据存下来就可以了。
[0070] 由于所有任务功能模块接收到的数据内容是完全一样的,时间上也是完全一致的(同步),这样就能够在总体设计时只需要把全局数据规划好以后,各个任务功能模块只需要面向这个全局数据表进行设计,而无需和其它功能模块去协调.从而实现了解耦。
[0071] 其中,任务功能模块是否在线,可以由平台通过任务功能模块对应的模型容器来感知。具体而言,任务功能模块在线时可以向对应的模型容器发送心跳包,以使平台根据这些心跳包确定任务功能模块是否在线;然后,平台还可以将任务功能模块是否在线的信息输出给平台的用户查看。
[0072] 可以理解的是,无耦合数字化开发平台是一款软件开发平台,因此平台内部可提供调试命令,当用户在平台内将任务功能模块的程序代码编写完毕时,可以通过调用该调试命令来模拟数字化装备的运行,此时任务功能模块便会持续地向平台发送心跳包,同时所有任务功能模块竞争专用内存,哪个任务功能模块先行锁定专用内存成功,该任务功能模块的统一服务单元便被激活,相应的其余任务功能模块的统一服务单元便失效。
[0073] 其中,统一服务单元被激活的任务功能模块,即负责发布基础调度时钟的任务功能模块,其发给对应的模型容器的心跳包可以称作核心心跳包。
[0074] 在一种可选实现方式中,任务功能模块在线时向对应的模型容器发送心跳包,以使该任务功能模块所在的无耦合数字化开发平台根据心跳包生成并输出各任务功能模块是否在线的信息;
[0075] 多台机器的无耦合数字化平台,当未连续检测到发布基础调度时钟的任务功能模块发送心跳包时,确定该任务功能模块掉线,则重置自身平台上所有在线的任务功能模块;此时,所有的任务功能模块会重新竞争专用内存。这样,可以确保基础调度时钟始终在位,不会导致数字化装备的功能瘫痪。
[0076] 其中,心跳包的数据载荷包括:任务功能模块的ID以及无耦合开发平台的平台ID。当然,并不局限于此,例如也可以用空数据包作为心跳包,这都是合理的。
[0077] 此外,多台机器的无耦合数字化平台,还用于按照预设的规则将所有任务功能模块的数据进行排队,将排队后的数据同步广播至所有任务功能模块;将自身全局动态空间的全局数据传阅至单一时钟同步并发网络中的其他节点。
[0078] 另外,优选地,为了随时确保时钟的有效性,激活后的统一服务单元可以运行在一独立的线程上,该线程占用上述的专用内存,且该线程的优先级可设置为最高。
[0079] 对于每个在线的任务功能模块而言,其内部可预先定义好是采用基础调度时钟作为时钟基准进行工作,还是采用自身调度时钟作为时钟基准进行工作。例如,若基础调度时钟的时钟周期为10毫秒,则当某个任务功能模块需要以50毫秒为时钟基准工作时,则该任务功能模块可以在将第一个基础调度时钟作为第一个自身调度时钟并执行数据的读取、运算以及存储后,以后每累计收到5次基础调度时钟,便执行一次数据的读取、运算以及存储。由此,该任务功能模块的自身调度时钟就如在图2中所示的,是基础调度时钟的时钟周期的
5倍。
[0080] 现有的数据分发系统中,各任务功能模块仅在模块内部使用统一的时钟,任务功能模块协同工作时可能因数据传输延迟或干扰等因素出现不同步或者时序混乱的现象。相比较而言,在本发明实施例中,基于该统一时钟管理模块,各个在线的任务功能模块响应于基础调度时钟或自身调度时钟,在每个时钟周期内均依次执行数据的读取、运算以及存储,即在每个时钟周期内均是先从计算内存中读取执行运算所需要的数据,然后执行运算,运算完成后将运算结果存储至对应的内存空间中;由此,可以确保任务功能模块间在时钟上的同步性。
[0081] 由于本发明实施例已经解耦了任务功能模块间在接口、协议上的耦合关系,因此再进一步解决了任务功能模块间的时钟同步问题后,便可以实现任务功能模块协同工作时在逻辑关系上的解耦。因此,利用本发明实施例提供的无耦合数字化开发平台来开发数字化装备,可以实现任务功能模块间在接口、协议以及逻辑上的解耦,降低了数字化装备的复杂度,从而有效的降低研发成本以及测试成本,提高数字化装备的研发效率。
[0082] 为了更好的说明本发明实施例的有益效果,下面对本发明实施例能够有效降低数字化装备的研发成本以及测试成本的应用场景进行举例说明。
[0083] 在一种应用场景中,若数字化装备中某一个任务功能模块所输出的数据类型以及长度需要进行变更,则只需通过平台将数据结构体进行相应的更新;同理,所有任务功能模块复制并使用更新后的数据结构体,即可完成数字化装备的本次变更。由于任务功能模块的对应的内存空间也是基于数据结构体中对数据的相应定义来生成的,因此当所有任务功能模块都更新数据结构体后,它们各自对应的内存空间也会适应的动态更新,不会出现任务功能模块间抢用内存的错误。
[0084] 相比较而言,同样的场景发生在数据分发系统中时,则除了需要变更该任务功能模块的配置文件需要变更外,还需要多方人工核对与该任务功能模块的该项变更数据相关的所有任务功能模块,并对它们的配置文件进行相应的修改。并且,由于数据分发系统中任务功能模块间各自定义自己的数据结构,因而数据类型和长度的变更可能导致与该数据相关的其他任务功能模块的工作出错,此时还需要开发人员重新修改任务功能模块的程序代码,修改后还需要进行联调测试等。
[0085] 在另一个应用场景中,数字化装备需要进行重构,需要采集一种新的数据(例如温度数据),且将该数据输入给已有的任务功能模块使用。对于本发明实施例而言,只需修改数据结构体并新建一个用于采集该新型数据的任务功能模块,并将修改后的数据结构体更新到所有任务功能模块中即可。
[0086] 同样的场景发生在数据分发系统中时,所有需要用到这种新型数据的任务功能模块的配置文件以及程序代码都需要进行修改并进行测试。
[0087] 基于上述两个典型的应用场景可知,本发明实施例能够有效降低数字化装备的研发成本以及测试成本。
[0088] 可选地,在一种实现方式中,如图3所示,本发明实施例提供的无耦合数字化开发平台中设有一个广义通信库,该广义通信库中包括多个通信转换协议,这些通信转换协议为实现平台内外部数据格式转换的协议;其中,内部数据是数据结构体中定义的数据,外部数据是通过数据格式转换再数据结构体中未定义的数据。由此,用户在利用无耦合数字化开发平台开发任务功能模块时,可以直接调用库中的通信转换协议,来将数字化装备外围的DIO(直接I/O)、AIO(异步I/O)、接口、总线、音视频、雷达和/或其他流数据进行统一的格式转换,从而减轻开发人员的工作量。
[0089] 并且,基于该广义通信库,开发人员无需再将精力放在通信接口协议的转换与处理上,而只需将精力放在与实现任务功能模块的功能性能和算法实现上。这样,即使对现有各类总线、通信接口不熟悉的开发人员,也可以利用本发明实施例提供的无耦合数字化开发平台并行开发复杂数字化装备的各个功能模块。
[0090] 在实际应用中,数字化装备中所能够涉及到的数据存在多种。例如,紧急事件数据、周期性状态数据、流数据、运行状态数据、诊断/日志消息以及配置数据等。有了该广义通信库,这些数据均可以被转换为数据结构体中所定义的数据。例如,本发明实施例中的基础调度时钟,便是从计算机本地的时钟信号转换而来的。
[0091] 在一个实施例中,当使用本发明实施例提供的无耦合数字化开发平台来开发一款数字化装备时,该数字化装备的各个任务功能模块,可以包括下述的多个任务功能模块中的多种:
[0092] 装备仿真模块、装备测试模块、装备状态监视模块、数据存储模块、数据回放模块、装备运行控制模块、数据采集模块、算法决策模块以及对外交互模块。
[0093] 此外,还可以包括感知模块,该感知模块在在实际装备中可能由1个或多个传感器模块组成,主要是用来感知外界的状态。如温度传感器采集外界温度,激光雷达模块可以实时测量外界物体的三维信息,毫米波雷达模型模块可以实时测量前方的目标信息。这些感知模型模块可以是独立的个体,也可以是几个功能组合在一起的组合体。
[0094] 从上述对任务功能模块的举例中可以看到,基于本发明实施例提供过的无耦合数字化开发平台来开发数字装备时,仿真、研发以及测试各阶段的任务功能模型可以并行开发。
[0095] 需要说明的是,上述对任务功能模块的举例仅仅作为示例,并不构成对本发明实施例的限定。
[0096] 在一种可选实现方式中,统一服务单元是通过广播形式发布调度帧来发布基础调度时钟的给所有的任务功能模块;
[0097] 调度帧中,包含有配置基础调度时钟的时钟周期的字段、统计基础调度时钟的发布次数的字段以及发布时间戳。每个功能模块自身的调度时钟与传输速率一一对应。
[0098] 基于该调度帧来发布基础调度时钟,不仅使基础调度时钟的时钟周期可以实现灵活可配。并且,各任务功能模块收到调度帧后,可以从中提取时间戳来获取绝对时间,并提取发布次数来获取相对时间。由此,任务功能模块在响应于基础调度时钟,当到达自身调度时钟时,则执行数据的读取、运算以及存储时,有绝对时间和相对时间两种时间可供参考使用。
[0099] 例如,对于用于实现数据回放的功能模块而言,时间戳和对基础调度时钟的发布次数的计数,可以为数据回放提供关键的时间信息。
[0100] 任务功能模块位于同一台计算机上时,通过进程通信实现数据帧和调度帧的交互,位于不同的计算机上时,通过同步并发网络实现数据帧和调度帧的交互;
[0101] 其中,调度帧与数据帧的帧格式相同,通过固定字节的数值不同表示是数据帧还是调度帧。
[0102] 图4示例性的给出了一种调度帧的帧结构,该调度帧是将数据帧转用得来的。其中,将数据帧中任务功能模块的地址(ID)和数据偏移地址(内存地址)的字段转用为配置基础调度时钟的时钟周期的字段,每个字节对应一种时钟周期,时钟周期不同,则传输速率不同。
[0103] 在一种优选实现方式中,为了避免“数据过热”现象(运算时间过长导致数据不能及时接收)产生,任一任务功能模块,响应于基础调度时钟或自身调度时钟,在每个时钟周期内均依次执行数据的读取、运算以及存储,可以包括:
[0104] (1)响应于基础调度时钟,当达到自身调度时钟,从计算机内存中读取与自身的输入相关的数据;
[0105] (2)按照该任务功能模块中所选定的数据处理策略,基于所读取的数据执行数据运算,并将运算结果存入该任务功能模块对应的内存空间中。
[0106] 其中,任一任务功能模块中所选定的数据处理策略包括:
[0107] 策略一、将所读取的数据缓存至不限长度的第一队列中,并基于第一队列中存储的数据执行数据运算;或者,
[0108] 策略二、用所读取的数据覆盖上一时钟周期中所读取的数据,并基于最新读取的数据执行数据运算;或者,
[0109] 策略三、将所读取的数据缓存至具有预设长度的第二队列中,若第二队列已满,则弹出第二队列中最早存储的数据;基于该第二队列中存储的数据执行数据运算。
[0110] 可以理解的是,对数据时效性要求较高的任务功能模块,可以选择上述的策略二作为数据处理策略。对数据时效性要求不高,但要求数据完整性的任务功能模块,可以选择上述的策略一作为数据处理策略。对数据时效性以及完整性均有一定要求的任务功能模块,可以选择上述的策略三作为数据处理策略。
[0111] 另外,为了避免“数据欠压”现象(多轮计算中只接收到一轮数据)产生,任一任务功能模块中所选定的数据处理策略还可以包括:
[0112] 策略四、若所读取的数据不足以执行本次的数据运算,则结合本次读取的数据以及上一时钟周期中读取的数据执行本次的数据运算;或者,若所读取的数据不足以执行本次的数据运算,则清除本次读取的数据,并跳过本次的数据运算及存储步骤。
[0113] 优选地,任务功能模块执行数据的接收、运算以及存储分别采用独立的线程实现。
[0114] 举例而言,如图5所示,在一个时钟周期的一开始,平台为任务功能模块1(TASK1)收集数据;收集好数据之后,平台通知TASK1来读取数据(XI);TASK1读取到数据后便执行运算(COMPUTE);运算完毕后,TASK1向平台输出数据(XO),平台将该数据存储到TASK1对应的内存空间中((DTDB PUT))。其中,平台为TASK1收集好数据之后,便可以同时并行地为TASK2收集数据,由此TASK1和TASK2便可以并行运行。
[0115] 在有些数字化装备中,在一个时钟周期内,任务功能模块A负责产生任务功能模块B、C、D所需消费的数据,且这4个任务功能模块都需要在一个时钟周期内完成各自的工作。此时,运用上述并行处理机制可能导致任务功能模块A、B、C、D的逻辑关系错乱,因此可以引入子帧工作机制来解决这一问题。
[0116] 具体的,参加图6所示,将一个时钟周期分为两个子帧:T0~T01和T01~T1。即在一个自身时钟周期内,任务功能模块可以分两个阶段执行,在时钟周期的一开始,先在子帧T0‑T01内运行任务A,输出任务B、C、D所需的输入数据;在任务A结束后,再在子帧T01~T1内依次运行任务B、C、D。其中,两个子帧的长度不固定。这样,对于不耗时和相对节省资源的任务进程可以分配相对较短的子帧。
[0117] 另外,还可以在平台中设置超时处理机制。可以根据数字化装备的实际需求,来选用下述的两种超时机制:
[0118] 1、如果一个任务功能模块没有在一个时钟周期的末尾完成运算,则它就被视为超时。
[0119] 2、如果一个任务功能模块没有在一个时钟周期的末尾完成运算和数据输出,则它可以继续运算,直至完成数据的输出。在这种情况下,下一时钟周期内该任务功能模块可以暂缓工作,等待再下个时钟周期继续正常运行。
[0120] 在实际应用中,对于第二种超时机制,可以在任务功能模块内部通过设置以下参数来确保避免这种机制被频繁地触发:
[0121] 允许延长运算的时间、允许连续超时的次数以及允许超时的总次数。
[0122] 本发明公开了一种通过同步并发网络连接的多机无耦合数字化开发平台,多台机器的无耦合数字化开发平台连接在呈树形拓扑结构的单一时钟同步并发网络中,每台机器作为单一时钟同步并发网络中的一个节点,所有节点在单一时钟同步并发网络中硬件时钟全局统一,用于开发数字化装备的各个任务功能模块;该平台通过自身定义数据结构体,通过该数据结构体可以读入每个任务功能模块所输出的数据;并且,该平台为每个任务功能模块提供了对应的模型容器,任务功能模块所输出的数据均被对应的模型容器存至与任务功能模块唯一对应的内存空间中;由此,任务功能模块之间的数据交互可通过直接访问全局动态空间的方式来实现,无需再额外设置数据库;并且,本发明的这种数据交互方式无需再根据配置文件来解析各项数据的名称、类型以及与系统的从属关系等信息,使得任务功能模块间的接口、协议实现了解耦,且由于直接访问内存的速度更快,从而使任务功能模块间的协作效率得到了很大的提升。
[0123] 此外,每个机器的平台为任务功能模块提供唯一内存、以及赋予任务功能模块通过锁定专用内存的方式确定自身是否具备发布基础调度时钟的功能,从而将基础调度时钟发布至所有任务功能模块,使得每个任务功能模块执行自身的数据过程,再同步至其他任务功能模块。在线的任务功能模块可响应于基础调度时钟,然后当达到自身调度时钟时,依次执行数据的读取、运算以及存储,确保了任务功能模块间在时钟上的同步性。
[0124] 综上,利用本发明实施例提供的通过分布式网路的无耦合数字化开发平台来开发数字化装备,可以实现任务功能模块间在接口、协议以及逻辑上的解耦,降低了数字化装备的复杂度,由此可有效的降低研发成本以及测试成本,提高数字化装备的研发效率。
[0125] 本发明实施例提供的无耦合数字化开发平台可应用于航空、车载、舰载、星载等电子电气装备的开发,能够有效减少因系统设计更改导致的大范围双V型验证和集成测试过程,尤其适合用来开发高容错、高冗余的复杂装备/系统,且可以应用到数字化装备/系统的全寿命周期的开发活动中,有效协调主机商与供应商的矛盾,实现并行协同开发。
[0126] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域的技术人员可以将本说明书中描述的不同实施例或示例进行接合和组合。
[0127] 尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
[0128] 本领域技术人员应明白,本发明实施例可提供为计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式,这里将它们都统称为“模块”或“系统”。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过Internet或其它有线或无线电信系统。
[0129] 以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。