掌桥专利:专业的专利平台
掌桥专利
首页

一种基于DDS的软件化雷达数据流通信方法

文献发布时间:2024-04-18 19:53:33


一种基于DDS的软件化雷达数据流通信方法

技术领域

本发明涉及软件化雷达领域,具体涉及软件化雷达分布式数据通信技术,尤其地,涉及一种基于DDS规范的数据流通信方法。

背景技术

DDS(Data Distribution Service)数据分发服务是对象管理组织(OMG)在CORBA等标准的基础上制定的新一代分布式实时通信中间件技术规范。DDS采用以数据为中心的发布/订阅模型(DCPS),在该模型中,应用程序使用特定的API建立对应的DDS实体,进而使用实体实现发布/订阅模式的数据通信。以数据为中心而非服务使得其更符合分布式系统中应用程序要进行数据传输的主要目标。DDS为时间关键数据流提供了最小开销,具有灵活可扩展的体系结构,且支持可靠的数据传输和自定义的数据类型,适用于对实时性、可靠性以及灵活性要求高的数据通信场合。

软件化雷达基于标准化的数字平台,具有开放式体系结构,采用面向应用的开发模式,是一种功能通过软件定义、扩展以及重构的新型雷达技术。在软件化雷达中,雷达信号处理系统持续接收前端的回波数据,且回波数据大多为脉冲结构,作为数据包在系统中传输,适合数据流驱动计算模式。由于不同算法处理环节分布在不同节点上,雷达信号处理系统中不同节点之间的通信存在困难,而不同的通信接口也给开发人员带来了难题,因此,需要一种通用的数据流通信方法来保证雷达数据传输的实时性和稳定性,支持多样化的数据种类和传输模式。

现有技术方案如下:

公开号为CN105554089A的发明申请提出了一种基于DDS标准的“请求-响应”式数据通信方法,该方法围绕“请求-响应”模式定义了相应的域、主题及消息结构,并按照统一消息定义创建请求消息,根据DDS标准发布请求消息,然后订阅者对接收到的信息按照字段进行过滤,响应方对请求消息使用相应技术进行反序列化,得到请求参数,达到同一主题下的点对点传输。

公开号为CN105554089A的发明申请在DDS发布/订阅模式的基础上,扩展了适用于交互式的“请求-应答”应用场景。但请求/应答模式本身不适合雷达数据高实时、高可靠的需求,且该数据通信方法限制了特定的应用环境,增加了一些非标准化的内容,减弱了原本DDS以数据为中心的发布/订阅模型的优势。

公开号为CN110740182A的发明申请提出了一种基于DDS技术的动态数据通信方法及设备,该方法包括:步骤1,根据DDS通信过程中动态产生的主题ID,生成通信通道;步骤2,根据主题路由表判断通信数据是否需要路由,并通过所述通信通道进行所述通信数据的传输;步骤3,通信结束后,释放主题内存资源,更新所述主题路由表。用户无须配置通信过程中的主题,即可适应各节点的点对点通信要求;通信的各节点只收到控制信息,不会收到与自身节点无关的信息,避免了冗余信息。

公开号为CN110740182A的发明申请主要利用了DDS主题发布订阅的特点,通过建立主题的路由表来提升数据的通信效率,只是优化了主题的动态同步和通信通道的建立过程,并未对数据传输本身进行改善。此外,该方法仅有利于控制信息的传输,不适合其他类型数据信息的传输。

公开号为CN110602188A的发明申请提出了一种基于DDS中间件的数据分发方法,涉及分布式通信系统,分布式通信系统中的通信节点中设有DDS中间件,DDS中间件上开设有心跳线程,利用心跳机制来检测订阅者的增减,并及时通知发布者停止向退出的订阅者发送数据,能节省数据通信带宽。

公开号为CN110602188A的发明申请通过心跳机制来减少无谓的数据传输,节省了通信带宽和系统资源的消耗,但该方法只是解决节点退出时造成的数据浪费的问题,没有从具体的传输过程提升通信的实时性、可靠性等其他性能。

发明内容

本发明所要解决的技术问题是,为克服软件化雷达系统中分布式应用节点之间通信实时性低、可靠性和灵活性不足等缺陷,提供一种基于DDS的软件化雷达数据流通信方法。

本发明为解决上述技术问题所采用的技术方案是,一种基于DDS的软件化雷达数据流通信方法,包括以下步骤:

数据收发接口的封装步骤:按照数据分发服务DDS规范对数据收发接口进行封装,通过接口创建数据写者和数据读者,支持发布订阅的通信模型,组件在建立好发布订阅连接后,将数据提交到数据收发接口进行处理,利用数据写者和数据读者完成具体的数据流传输;

数据缓存步骤:数据收发缓冲区用于缓存传输过程中的数据流,设置缓冲队列和链表等数据结构,结合多线程构建数据缓存模型,分配合适的缓冲区和子线程用于收发数据,实现数据流实时传输;

数据缓存模型主要用到队列和链表数据结构,缓冲区采用环形队列的设计;数据写者/数据读者在发送/接收数据时把数据拷贝到缓冲队列中,同时分别维护一个全局的发送/接收管理链表;管理链表采用单链表结构,链表每个节点记录每一次发送/接收的一帧数据相关的管理信息,包括:IP地址、端口号、缓冲区地址和帧大小信息;

数据收发控制步骤:通过自定义数据包格式以及数据流传输协议,对数据的收发和缓存过程进行控制以实现数据通信和雷达组件算法的解耦。

具体的,步骤1中,数据收发接口主要包括创建数据写者对象和数据读者对象的方法,以及发布者/订阅者和域参与者成员。

具体的,在发送和接收数据时,会分配合适大小的缓冲队列,开辟多个发送/接收数据的子线程;

数据发送时,首先,后台的每个发送子线程函数通过管理信息对发送缓冲队列大小进行分配或调整,然后,结合线程同步和多线程并发,从缓冲队列循环获取一定大小的数据并发送;

数据接收时,首先,在接收方维护了一个线程池,接收子线程通过条件变量阻塞在接收方的接收任务队列中,当有数据到来时,唤醒相应的接收子线程,接收相应大小的数据,并动态存储到接收缓冲队列中。

具体的,步骤3中,数据收发控制策略参考了实时消息传输协议RTMP,结合雷达数据传输的需求定义数据包格式以及数据流传输协议。

数据包格式由控制协议头和数据帧组成。控制协议头包括数据帧大小、帧序号、通信链路协议、数据序列化协议、组件算法序号等字段信息,数据帧是指要传输的实际的雷达数据帧。具体实现过程包括:

首先,发送方根据用户需求对控制信息包头中的字段进行设置,包头中的字段选项都预先写在了相应的头文件中;

然后,发送方通过数据收发接口将生成的协议头和数据帧封装成数据包,按照协议头中相应的链路协议发送给接收方;

接着,接收方解析数据包的协议头,根据解析得到的序列化协议信息,将数据转化为统一格式的字节序列。同时,根据帧大小和帧序号判断数据帧是否完整;

最后,接收方判断缓冲区是否有足够空间接收数据帧,若空间不足,则动态调整和分配缓冲区;若空间足够,调用接收子线程将每帧数据存储到缓冲区。之后,根据协议头中的组件算法序号,主程序执行相应的算法处理。

本发明基于DDS软件框架,对其中的数据收发部分进行具体的设计实现。通过设计数据流的缓存机制和数据收发控制策略,实现一套面向软件化雷达的数据流通信方法。

本发明的有益效果是:

基于标准化的DDS实体对数据收发接口进行封装,支持发布订阅通信模型,能够更好的与应用层交互,有利于为数据流通信提供统一、稳定的软件架构;

设计数据缓存机制,通过为雷达组件间的数据流分配合适的缓冲区和通信子线程,平衡组件运算和通信的速率差异,保证数据流在传输过程中高效、持续、可靠的实时传输;

对数据收发控制策略进行实现,通过定义数据包格式以及数据流传输协议,进一步对数据的收发、缓存过程进行控制和管理,提升了数据传输过程的灵活性,有利于扩展更多数据类型和传输协议。

附图说明

图1为本发明基于DDS的软件层次示意图;

图2为数据发送缓存模型示意图;

图3为数据接收缓存模型示意图;

图4为数据包协议格式示意图;

图5为数据收发控制策略示意图;

图6为数据通信测试实施例。

具体实施方式

为了使本发明的目的、技术方案及效果更加清楚易懂,下面结合附图和实施例对本发明作进一步的说明。

本发明所述数据收发接口、数据缓存模型和数据流传输协议相关内容均利用C/C++语言进行编程实现,并通过相应系统下的编译环境及方式完成编译。

如图1所示,为本发明基于DDS的软件层次示意图,从上往下包括应用组件层、DDS接口层、数据收发层和数据链路层。

根据图1,DDS接口层中包含数据收发接口,接口中对应DDS相关的实体,构建发布订阅通信环境。其中,发送数据接口中包含与发布者相关的实体,同时会创建数据写者用于发送数据;接收数据接口中包含与订阅者相关的实体,同时会创建数据读者用于接收数据;

根据图1,数据收发层是负责数据的缓存和收发控制,数据缓存机制和收发控制策略在该层实现;

根据图1,数据链路层传输具体的数据流,每个数据流由一个个数据包组成,与具体的链路协议有关。

如图2所示,为数据发送缓存模型示意图,主要包含数据写者、发送缓冲队列、发送管理链表和发送子线程,包括以下步骤:

步骤1、数据写者通过发送函数的相关传入参数从应用层获取到一帧雷达数据,根据参数以及数据包头的信息,获取管理信息并写入管理链表的尾节点;

步骤2、根据发送管理链表中的管理信息,获取相应数据帧大小和帧序号,将一定大小的数据帧传入发送缓冲队列;

步骤3、判断发送缓冲队列是否有足够空间容纳数据帧,若空间足够,则根据链表管理信息中的发送缓冲区地址把数据帧拷贝到相应地址;若空间不足,挂起等待发送线程读完数据,后续接收的雷达数据将从队头重新覆盖;

步骤4、根据管理信息中的帧大小以及包头的链路协议等字段,调用相应的发送子线程从发送缓冲队列中读取数据帧,主线程和发送子线程需要实现同步,多个子线程对管理链表的读写也要进行同步,发送完后将链表头节点删除。

如图3所示,为数据接收缓存模型示意图,主要包含数据读者、接收缓冲队列、接收管理链表、接收任务队列和接收线程池及子线程,包括以下步骤:

步骤1、接收方通过设置线程池预先存放一定数量的接收子线程,线程池会根据接收数据情况对接收子线程进行动态的扩充和销毁;

步骤2、线程池中的接收子线程在接收任务队列中通过条件变量阻塞等待数据的到来,当有数据发送过来时,接收任务队列中相应的接收子线程被唤醒,读取数据流中的数据包;

步骤3、接收线程读取据包头中的帧大小信息,根据已有的接收管理链表中的首节点和尾节点中存放的缓冲区地址计算接收缓冲区的剩余空间,将数据帧接收到对应的接收缓冲队列中;

步骤4、接收方为当前接收的数据帧分配一个新的管理链表节点,将数据帧大小、数据在接收缓冲区中的地址等管理信息写入该节点中,之后,主线程和接收子线程之间利用线程同步,通过访问管理链表中的管理信息,从缓冲队列中获取对应的数据拷贝到用户数组进行运算处理,原先的缓冲区域得以释放。

如图4所示,为数据收发控制策略中所定义的数据包协议格式,参考RTMP实时消息传输协议,改良为面向雷达实时数据流通信的协议。协议中各字段说明如表1所示:

表1数据流包头协议字段说明

根据图4和表1,数据流中的数据包头是数据收发控制实现的关键,作为包含控制信息的包头,里面的协议字段包含数据帧大小、帧序号、数据序列化协议(不同平台不同语言的字节对齐问题)、链路协议或定时发送的时间(可选)等信息的结构体,表明本次传输要传什么样的数据、用什么方式传输。

其中,帧大小信息会用于数据收发函数之后关于收发缓冲区的具体收发,其他相关信息也将存于管理链表的节点,用于记录数据收发的各种状态信息。利用C++的命名空间,对其中常用的字段选项用枚举enum类型进行定义,以供用户选择。在实际应用过程中,用户会对一个协议单元的类进行操作,该类中包含控制信息的包头结构体成员和对包头中字段进行设置的函数方法。

根据表1,数据包头的协议用结构体的方式实现,包括字段:stag、version、type、proto、checksum、funcid、framid、length和reserve,具体如下:

对数据包头中的主要字段用枚举类型进行选项说明,其中proto和funcid的选项示例如下:

/>

如图5所示,为数据收发控制策略示意图,发布方/订阅方的主程序用于执行算法操作,同时,会开辟一个监听线程完成基于DDS的发布订阅连接的建立;然后,为实现数据通信与功能算法的并行,在当前组件下继续开辟一个数据发送/接收的控制线程,该线程负责数据收发控制策略的实现,包括以下步骤:

步骤1、发送方先根据用户需求设定好帧长度、序号、协议等字段信息,生成一个控制信息包头结构体,数据发送控制线程将传入的输入数据流封装成自定义的数据包格式;

步骤2、利用发送数据函数接口创建数据写者,读取包头中的帧大小和链路协议字段,利用数据缓存机制将数据帧写入到发送缓冲区中,调用相应协议的发送子线程将一定大小的数据包发送出去;

步骤3、接收方解析数据包头的控制信息,根据解析得到的序列化协议,将数据包转化为统一格式的字节序列,利用数据缓存机制处理序列化后的数据帧;

步骤4、接收方根据缓冲队列空间和当前数据帧大小动态调整和分配缓冲区,调用接收子线程不断将数据帧读取到接收缓冲区中。接着,根据控制信息中的组件算法序号,通知主程序对当前数据帧执行相应的算法处理。

数据收发的控制策略指明了需要传输怎样的雷达数据,以及用什么方式传输,而具体的数据传输过程是通过数据缓存机制来实现,两者相辅相成,构成一套面向软件化雷达数据流的通信方法。

如图6所示,为一个数据通信测试的实施例,该图描述了基于本发明方法实现的不同功能雷达数据在不同通信链路协议下的通信测试,包括以下步骤:

步骤1、构建一个由雷达收发器和多个处理器平台组成的雷达通信系统,基于千兆以太网链路,前端节点从雷达接收天线开始获取输入数据流;

步骤2、前端节点开启一个发布方程序,后端处理节点开启一个订阅方程序,利用本发明方法,实现天线回波数据从发布方到订阅方的实时传输,测试不同通信协议下的传输带宽;

步骤3、后端处理节点接收到数据后,完成雷达基本函数运算,利用本发明方法,将运算后的数据流发布给下一个含订阅方程序的处理节点,测试不同通信协议下的传输带宽;

步骤4、订阅方节点获取到数据后,调用目标检测算法的组件,利用本发明方法,将目标检测结果数据发布给输出方节点,测试不同通信协议下的传输带宽。

由测试结果可知,本发明方法能够根据不同功能状态下的雷达数据,选择不同的通信链路协议进行传输,验证了雷达数据通信的灵活扩展性。同时,根据带宽结果,每种协议下的数据传输能够接近当前环境的最优性能指标,验证了雷达数据通信效率高,具有良好的实时性。

相关技术
  • 一种基于DDS的雷达通信系统
  • 一种基于功能数据流传递的模块化软件设计方法
技术分类

06120116337223