基于OpenDDS的中间件实时通信机制扩展设计
dds方案
DDS方案概述DDS(Data Distribution Service)是一种实时数据分发中间件标准,旨在提供高性能、可靠的数据交换服务。
它广泛应用于工业自动化、网络通信、航空航天等领域,可满足高并发、低延迟、可扩展等需求。
本文将介绍DDS方案的基本原理、主要特点以及适用场景,并提供一些实际案例以供参考。
基本原理DDS方案的基本原理是发布-订阅模式,即数据的发布者(Publisher)将数据发布到特定的主题(Topic)上,而订阅者(Subscriber)则通过订阅相应的主题来接收数据。
DDS采用了一种分布式的架构,其中包含了各种组件,如发布者、订阅者、中间代理(Middleware)等。
发布者和订阅者通过中间代理来交换数据,中间代理负责数据的可靠分发、数据的过滤和转换等功能。
主要特点高性能DDS方案的核心目标之一是提供高性能的数据交换服务。
为此,DDS采用了一系列优化措施,如数据压缩、批处理、异步传输等。
这些措施可以显著提升数据传输的效率,降低系统的延迟。
此外,DDS还支持多种传输协议,如TCP/IP、UDP等,并可以根据实际需求选择最适合的协议进行数据传输。
可靠性DDS方案通过使用可靠的传输协议和机制来保证数据的可靠性。
它提供了丰富的错误处理机制,可以在数据传输过程中及时检测和处理错误,从而确保数据的完整性和可用性。
DDS还支持数据的持久化存储,可以将数据保存到本地磁盘或数据库中,以便在需要时进行回放和分析。
可扩展性DDS方案具有良好的可扩展性,可以根据实际需求灵活地扩展系统的规模和性能。
它支持集群部署,可以通过增加节点来提升系统的并发能力和容错性。
此外,DDS还提供了灵活的数据模型和接口,可以根据业务需求定制数据的格式和结构。
实时性DDS方案的设计目标之一是提供实时的数据交换服务。
它通过优化数据传输和处理的机制,可以在毫秒级别的延迟下实现数据的实时传输和响应。
DDS还支持数据的优先级处理,可以根据需求对数据进行优先级排序和处理,确保关键数据的实时性和可靠性。
211016682_基于OpenDDS的ACARS系统设计与实现
收稿日期:2022-05-05基金项目:国家装备预研重点实验室基金项目(61425050304)引用格式:陈忍,卢选民,蒋艺豪,等.基于OpenDDS的ACARS系统设计与实现[J].测控技术,2023,42(3):71-78.CHENR,LUXM,JIANGYH,etal.DesignandImplementationofACARSSystemBasedonOpenDDS[J].Measurement&ControlTechnology,2023,42(3):71-78.基于OpenDDS的ACARS系统设计与实现陈 忍,卢选民,蒋艺豪,李 剑(西北工业大学电子信息学院,陕西西安 710129)摘要:在民航通信领域,飞机通信寻址与报告系统(ACARS)通过机载管理单元实现了飞机与地面的实时通信。
在研究ACARS工作原理的基础上,结合数据分发服务框架(OpenDDS)开发了一套ACARS测试仿真系统,该系统可以模拟ACARS的工作流程,在进一步研究ARINC618协议和ARINC620协议的基础上,设计了ACARS报文相关的数据结构,提高了程序的内聚性和报文在实体内部的调用效率,实现了报文解析功能以及报文转换功能。
关键词:飞机通信寻址与报告系统;OpenDDS;ARINC618;ARINC620中图分类号:TP393 文献标志码:A 文章编号:1000-8829(2023)03-0071-08doi:10.19708/j.ckjs.2022.08.299DesignandImplementationofACARSSystemBasedonOpenDDSCHENRen 牞LUXuan min牞JIANGYi hao牞LIJian牗SchoolofElectronicsandInformation牞NorthwesternPolytechnicalUniversity牞Xi an710129牞China牘Abstract牶Inthefieldofcivilaviationcommunication牞aircraftcommunicationsaddressingandreportingsystem牗ACARS牘realizesthereal timecommunicationbetweenaircraftandgroundthroughairbornemanagementu nit.OnthebasisofinvestigatingtheworkingprincipleofACARS牞asetofACARSmonitoringsimulationsoft warecombinedwithopendatadistributionservice牗OpenDDS牘frameworkisdeveloped牞whichcansimulatetheworkflowofACARS.BasedonthestudyofARINC618andARINC620protocols牞thedatastructurerelatedtoACARSmessageisdesigned牞whichimprovesthecohesionofprogramandtheefficiencyofmessageinvocationinsideentity牞andrealizesthefunctionofmessageparsingandmessageconversion.Keywords牶ACARS牷OpenDDS牷ARINC618牷ARINC620伴随着民用航空的发展,通信技术以及计算机技术也有了快速的进步,航空电子系统也因此迎来了一个快速上升期,逐渐成为大型飞机必不可少的组成部分。
基于OpenDDS的应用程序开发(3)订阅端实现
基于OpenDDS的应用程序开发(3)订阅端实现基于OpenDDS的应用程序开发(3)订阅端实现本章主要介绍一个OpenDDS的应用程序的示例,演示如何开发一个将数据从公布端发送到订阅端的应用程序。
该示例程序基于一个简单的消息应用程序,由一个简单的公布者公布数据,订阅者订阅数据,使用默认的QoS策略和TCP/IP传输方式。
本文是第三篇,主要介绍开发一个简单的OpenDDS订阅端应用程序所涉及的步骤。
省略一些不重要部分(如:#include部分和异常处理等)代码,只写出关键代码。
新建订阅端工程参考前一博文中MPC的用法,在Demo.mpc文件中增加如下内容:project(*Subscriber) : dcpsexe_with_tcp {exename = subscriberafter += *idlTypeSupport_Files {Demo.idl}Source_Files {Subscriber.cppDataReaderListenerImpl.cpp}}Subscriber工程从父工程dcpsexe_with_tcp继承,这里直接使用idl工程中定义好的Demo.idl文件。
之后在Demo目录下新建三个文件:Subscriber.cpp、DataReaderListenerImpl.h、DataReaderListenerImpl.cpp,分别用来编写订阅端逻辑部分代码,并再次使用如下命令来生成Vs2008工程:mwc.pl -type vc9生成完成之后,使用Vs2008打开Demo.sln就可以修改订阅端代码了:初始化参与者初始化订阅端参与者代码同发布端是完全一样的,在Subscriber.cpp文件中增加如下内容:int main (int argc, char *argv[]){try {DDS::DomainParticipantFactory_var dpf =TheParticipantFactoryWithArgs(argc, argv);DDS::DomainParticipant_var participant =dpf->create_participant(42, // Domain IDPARTICIPANT_QOS_DEFAULT,0, // No listener requiredOpenDDS::DCPS::DEFAULT_STATUS_MASK);if (!participant) {std::cerr < 'create_participant="" failed.'=""><>return 1 ;}注册数据类型并创建主题接下来,初始化数据类型和主题:Demo::PosTypeSupport_var mts = newDemo::PosTypeSupportImpl();if (DDS::RETCODE_OK != mts->register_type(participant, '')){ std::cerr < 'failed="" to="" register="" the=""><>return 1;}CORBA::String_var type_name = mts->get_type_name ();DDS::Topic_var topic =participant->create_topic('Pos Demo',type_name,TOPIC_QOS_DEFAULT,0, // No listener requiredOpenDDS::DCPS::DEFAULT_STATUS_MASK);if (!topic) {std::cerr < 'failed="" to="" create_topic.'=""><>return 1;}创建订阅者调用create_subscriber()操作创建一个带有默认QoS策略的订阅者:// Create the subscriberDDS::Subscriber_var sub =participant->create_subscriber(SUBSCRIBER_QOS_DEFAULT, 0, // No listener requiredOpenDDS::DCPS::DEFAULT_STATUS_MASK);if (!sub) {std::cerr < 'failed="" to="" create_subscriber.'=""><>return 1;}创建数据读者及监听者订阅端需要给数据读者关联一个监听者,用来接收数据的到达。
基于DDS中间件的性能测试_欧阳军
总 第 209 期 2011 年 第 11 期
舰船电子工程 Ship Electronic Engineering
Vol.31 No.11 136
基于 DDS中间件的性能测试*
欧阳军 蔡志明 王希敏
(海 军 工 程 大 学 电 子 工 程 学 院 武 汉 430033)
摘 要 DDS中间件是一种轻便的、能够提供实时信 息 传 送 的 中 间 件 技 术 ,该 文 以 OpenSplice DDS中 间 件 为 例,研 究 了其通信过程,介绍了其为实现实时数据分发服务提供 的 图 形 化 建 模 工 具 DDS Power Tools,并 设 计 应 用 对 其 实 时 和 吞 吐 性能进行了第三方测试。
2011 年 第 11 期
舰船电子工程
137
传输方式 包 括 以 太 网 络、共 享 内 存 或 其 他 连 接 方 式。具有多种服务质量 策 略 (QoS)参 数 可 供 调 整, 方便设计者调整其应用程序达到性能和资源使用 的最佳组合。OpenSplice DDS 是 位 于 网 络 协 议 栈 最上层的软件,它 屏 蔽 底 层 网 络 代 码,代 之 以 通 用 的、基于标准的应用程序接口(API)。 通过 API提 供易于理解的基于发布/订阅的通讯模式。 这种模 式定义了两种基本的角色:
订 阅 获 取 信 息 有 两 种 模 式 :异 步 方 式 和 同 步 方 式。异步 模 式 下,DDS 提 供 监 听 (Listener)接 口, 当数据发布或状态改变时,中间件通知 Listener接 口,Listener通 过 相 应 的 回 调 (callback)获 取 信 息。 同步模式 下,应 用 调 用 WaitSet阻 塞 调 用 线 程,一 旦与 WaitSet关联的条件(如readcondition、query- condition、statuscondition、guardcondition)之 一 被 满 足 时 停 止 阻 塞 ,应 用 程 序 就 可 通 过 数 据 读 取 者 获 取最新的数据信息。
opendds使用手册
opendds使用手册
OpenDDS是一个开源的分布式实时数据分发系统,它使用DDS(Data Distribution Service)规范来实现数据分发。
以下是OpenDDS的使用手册:
1. 获取学习资料:可以在网上搜索中文资料,了解OpenDDS的基本概念
和原理。
同时,可以在OpenDDS官网上下载OpenDDS软件包和开发者
指南,以便更深入地了解OpenDDS的使用和开发方法。
2. 环境搭建:根据所使用的操作系统和开发环境,配置必要的软件和依赖关系。
OpenDDS需要使用Java和C++语言进行开发,因此需要安装相应的开发工具和库。
3. 为我所用:首先创建一个OpenDDS应用程序的工程目录结构,然后在
工程目录中创建所需的源文件和配置文件。
需要注意的是,在配置文件中指定了应用程序的运行参数和配置选项。
4. 打包DDS库文件:将DDS库文件打包成可执行文件或库文件,以便在
应用程序中引用。
可以使用静态链接或动态链接的方式将DDS库文件与应
用程序进行链接。
5. 求助渠道:如果在使用OpenDDS过程中遇到问题,可以通过搜索引擎、论坛、社区等渠道寻求帮助。
同时,也可以参考OpenDDS的官方文档和
示例代码,以便更好地理解和使用OpenDDS。
总之,OpenDDS的使用手册包括获取学习资料、环境搭建、为我所用、打包DDS库文件和求助渠道等方面。
通过认真阅读和理解这些内容,可以更好地使用OpenDDS进行应用程序的开发和部署。
dds中间件原理
dds中间件原理DDS中间件是一种高性能数据传输服务,应用广泛。
本文将为您详细阐述DDS中间件的原理,包含以下几个方面:1. DDS中间件的基本概念DDS中间件全称为Data Distribution Service中间件,是一种基于发布-订阅模型的高性能数据传输服务,其具有可扩展性、可配置性、可靠性等优点,因此在许多领域得到广泛应用。
2. DDS中间件的基本结构DDS中间件由一个或多个发布者、订阅者和中间件设备组成。
发布者发布消息,订阅者接收消息,并动态地根据需求进行配置。
中间件设备则负责数据传输和管理。
3. DDS中间件的工作原理在DDS中间件的工作过程中,发布者将消息发送给中间件设备,然后中间件设备再将消息传递给所有与之相关联的订阅者。
数据传输过程中,DDS中间件采用“推拉结合”的方式,即发布者和订阅者既可以主动获取数据,也可以被动接收数据,这种方式极大地增加了数据传输的效率。
4. DDS中间件的数据交换方式DDS中间件的数据交换方式基于三个核心概念:主题、数据类型和QoS(Quality of Service)。
主题用来描述数据的意义,数据类型用来描述数据的结构,而QoS则用来描述数据传输的质量要求。
DDS中间件运用这些核心概念实现灵活的数据交换方式,可以根据不同的需求进行配置。
5. DDS中间件的应用领域DDS中间件在军事、航空航天、交通运输、能源、医疗等领域得到广泛应用。
比如在军事行业,DDS中间件被应用于指挥控制和战场效能分析等方面,实现高效、可靠的数据交换;在医疗领域,DDS中间件用于医疗设备之间的数据传输,实现真正意义上的医疗信息化。
总之,DDS中间件是一种高性能、灵活、可靠的数据传输服务,在多个领域得到广泛应用。
通过本文,相信读者对DDS中间件的原理已经有了基本的了解,希望能对读者更好地理解和应用DDS中间件起到支持和帮助的作用。
dds底层通信原理
dds底层通信原理
DDS(Data Distribution Service)底层通信原理基于数据分发服务(DDS)的一种高效、实时的通信协议。
DDS是一种用于分布式软件的以数据为中
心的通信协议应用程序,描述了通信应用程序编程接口(API)和通信语义,使得数据提供者和数据使用者之间进行通信。
在DDS中,首先明确了收方和发方是谁,以及收方和发方地址和端口的生
成规则,这是侦听、通告的逻辑规则。
底层传输依赖于Transport Layer,
是独立于UDP/TCP之上的传输接口层,提供DDS实体之间的通信服务,
负责通过物理传输实际发送和接收消息。
此外,DDS还采用了RTPS(Real-Time Publish-Subscribe)协议,这是
一种实时发布订阅协议,用于支持DDS应用。
RTPS协议通过尽力而为的
传输方式,例如UDP/IP,来实现数据传输。
在DDS中,RTPS协议用于定义DDS实体的行为特征,确保数据的实时性和可靠性。
在实现底层通信的过程中,DDS使用了多种技术手段,如数据分发、发布
订阅模式、服务质量(QoS)等。
这些技术手段可以有效地确保数据的实时性、可靠性和安全性,使得DDS在分布式系统中的通信更加高效和可靠。
总的来说,DDS底层通信原理基于数据分发服务(DDS)的通信协议和RTPS协议,通过明确收发规则、底层传输机制以及QoS服务质量等手段,实现高效、实时的数据传输。
opendds 编译
opendds 编译1.引言1.1 概述Opendds是一个开源的分布式数据中间件平台,用于实现实时系统之间的高效通信和数据交换。
它是基于DDS(Data Distribution Service)标准的实现,是一个功能强大且高度可扩展的工具。
本文旨在介绍如何编译Opendds,并提供一些常见问题的解决方法。
通过这篇文章,读者将能够了解Opendds编译的过程和一些相关的注意事项。
在本文的正文部分,我们将详细介绍Opendds编译的过程。
我们将从安装必要的依赖项开始,然后解释如何配置编译环境和执行编译命令。
我们还将介绍一些常见问题,如编译错误和依赖项冲突,并提供相应的解决方案。
在结论部分,我们将对Opendds编译的过程进行总结,并提出一些建议。
这些建议可以帮助读者更好地理解和应用Opendds,并解决可能在编译过程中遇到的问题。
通过阅读本文,读者将能够获得关于Opendds编译的全面指南,并且在编译过程中能够快速解决常见的问题。
无论是初学者还是有经验的开发人员,本文都将对他们有所帮助。
相信在阅读完本文后,读者能够更加熟悉和掌握Opendds编译的技巧和方法。
1.2 文章结构本文将介绍opendds编译的相关知识和技巧,主要分为以下几个部分:1. 引言:首先对opendds编译进行概述,介绍opendds的基本概念和用途。
同时,给出本文的结构和目的,帮助读者更好地理解和掌握opendds的编译过程和相关问题。
2. 正文:详细描述opendds编译的具体过程,包括所需的软件工具和环境配置、编译命令及其参数的使用方法等。
此外,还会针对opendds 编译过程中常见的问题进行分析和解决,提供一些实用的技巧和经验分享。
3. 结论:对opendds编译进行总结,回顾本文介绍的主要内容和要点。
同时,提供一些建议和建议,帮助读者更好地应对opendds编译的挑战,并提高编译效率和质量。
通过本文的阅读,读者将能够全面了解opendds编译的过程和相关技巧,能够顺利完成opendds的编译工作,并能够应对常见的编译问题和提高编译效率。
DDS原理及实现
DDS原理及实现DDS(Data Distribution Service)是一种基于发布-订阅模式的消息传递中间件,用于构建分布式系统中的数据通信。
DDS提供高效、可靠的实时数据传输,并支持灵活的数据交换模式,同时具备自适应性和可扩展性,使得它在嵌入式系统、工业控制、航空航天和军事等领域得到广泛应用。
DDS的基本原理是通过定义数据的发布和订阅,实现数据的传输和交互。
DDS系统由三个主要组件组成:发布者(Publisher)、订阅者(Subscriber)和中间件(Middleware)。
发布者负责将数据发布到中间件,订阅者从中间件中获取订阅的数据。
中间件负责实现数据的传输和分发。
在DDS系统中,数据传输是基于主题(Topic)的。
主题定义了一组相关数据的类型和结构,发布者和订阅者通过订阅特定的主题来进行数据交换。
DDS支持多种数据交换模式,包括点对点模式、发布-订阅模式和请求-回应模式。
发布者可以通过发布主题将数据发送到中间件,订阅者可以通过订阅主题接收数据。
DDS中间件会根据订阅者的需求和负载情况,选择合适的数据传输方式和频率,以保证数据的实时性和可靠性。
DDS实现数据传输的方式主要有两种:直接通信和间接通信。
直接通信是指发布者和订阅者直接进行数据传输,中间件只提供基础的通信功能;间接通信是指发布者和订阅者通过中间件进行数据交互,中间件负责数据的传输和分发。
DDS支持两种方式的混合使用,可以根据系统需求选择合适的通信方式。
DDS还提供了一些高级特性,增强系统的灵活性和可靠性。
其中包括:1.数据过滤:通过定义过滤条件,发布者和订阅者可以选择接收特定的数据;2.可靠性保证:DDS提供了多种机制,确保数据的可靠传输,包括故障检测和恢复、数据重传和顺序保证等;3.优先级控制:DDS支持对数据进行优先级排序和传输控制,保证关键数据的及时处理;4.发布者和订阅者的自适应:DDS可以根据系统负载和性能情况,自动调整数据发布和订阅的速率,以适应实时需求和资源约束。
OpenDDS之Qos策略(1)
OpenDDS之Qos策略(1)OpenDDS之Qos策略简介OpenDDS对DDS规范(OMG Document formal/07-01-01)定义的22种QoS策略全部⽀持。
应⽤程序通过参与者的QoS约束,来指定需要的⾏为,然后由DDS的服务决定如何实现这些⾏为。
这些策略应⽤于所有DDS实体(主题、数据写者、数据读者、发布者、订阅者、域参与者),但不是所有的策略都适⽤于所有的实体类型。
发布者和订阅者通过RxO模式相匹配。
订阅者请求⼀组策略,发布者提供⼀组QoS策略给潜在的订阅者。
然后DDS试图将要求的策略和提供的策略相匹配,如果这些策略相匹配则将它们关联起来。
在前⾯的《基于OpenDDS的应⽤程序开发》博⽂中,我们采⽤了默认的QoS策略。
接下来的⼏篇博⽂将详细介绍每个QoS策略的相关细节。
Qos策略每个策略都定义了⾃⼰的结构。
每个实体都⽀持策略的⼀个⼦集,并且定义了⼀个由被⽀持的策略结构体所组成的QoS结构体。
⼀个给定实体的可⽤策略集不会受到QoS结构体中包含的策略结构体的限制。
例如,发布者的QoS结构体的IDL定义格式如下:module DDS {struct PublisherQos {PresentationQosPolicy presentation;PartitionQosPolicy partition;GroupDataQosPolicy group_data;EntityFactoryQosPolicy entity_factory;};};设置⼀个策略就像获得⼀个已经有默认值的结构体⼀样简单,并在必要的时候修改个别策略。
然后将QoS 结构体应⽤到实体中(通常是在实体被建⽴的时候)。
我们将在后续章节中详细说明如何获取各个实体的缺省QoS策略。
应⽤程序可以通过调⽤set_qos()操作来改变任意实体的QoS策略。
如果该QoS策略是可以改变的,Qos策略变得不再兼容,则现有的连接将会移除,否则,如果该Qos策略变得兼容了,将会有新的连接添加。
opendds原理
opendds原理OpenDDS是一个开源的分布式数据服务(DDS)实现,它是根据OMG DDS标准规范开发的。
DDS是一种用于实时系统的通信协议,它允许分布式应用程序在不同的节点之间进行高性能、实时的数据交换。
OpenDDS的工作原理涉及以下几个方面:1. 发布/订阅模型,OpenDDS使用发布/订阅模型来实现数据交换。
发布者负责发布数据,而订阅者负责接收数据。
这种模型允许多个订阅者订阅相同的数据,从而实现数据的分发和共享。
2. 数据传输,OpenDDS使用多种数据传输协议来确保数据的可靠传输。
它支持TCP、UDP和多播等协议,以满足不同应用场景下的数据传输需求。
3. 数据管理,OpenDDS提供了数据管理功能,包括数据的发布、订阅、过滤和传输控制等。
这些功能可以帮助开发人员更好地管理数据流,确保数据的可靠性和实时性。
4. QoS(Quality of Service)支持,OpenDDS支持丰富的QoS配置,开发人员可以根据应用需求配置数据交换的可靠性、实时性、安全性等参数,以满足不同应用场景下的需求。
5. 中间件,OpenDDS作为一种中间件技术,可以帮助开发人员简化分布式系统的开发和部署。
它提供了一套完整的工具和框架,支持开发人员快速构建分布式系统,并提供了丰富的监控和调试功能,帮助开发人员更好地理解和分析系统的运行情况。
总的来说,OpenDDS通过发布/订阅模型、多种数据传输协议、数据管理功能、QoS支持和中间件技术等多方面的支持,实现了高性能、实时的分布式数据交换。
它在实时系统、物联网、通信等领域具有广泛的应用前景。
opendds 讲解
opendds 讲解
OpenDDS是OMG数据分发服务(DDS)规范的开源C++实现。
它遵循实时系统的DDS规范和实时公布/订阅互操作性通信协议的DDS-RTPS规范。
OpenDDS由OCI公司设计和维护,可以从OpenDDS社区门户获取帮助。
分布式实时应用程序有时以数据为中心而不是以服务为中心,这意味着分布式系统中参与者的主要目标是分发应用程序数据,而不是访问共享服务。
应用程序数据的提供者和/或使用者的集合在设计时可能是未知的,并且可能会在应用程序的整个生命周期内发生变化。
通常,以发布/订阅通信模型而不是请求/响应模型最有效地实现以数据为中心的范例。
DDS增加了分布式实时系统开发人员可以使用的发布/订阅选项的范围,将数据从发布者传输到订阅者。
OpenDDS包含基于文件的配置机制。
通过配置文件,OpenDDS用户可以配置发布者或订阅者的传输、调试输出、内存分配、DCPSInfoRepo代理进程的位置以及许多其他设置。
更多有关OpenDDS的介绍,建议访问官网进行了解。
c++ opendds案例
c++ opendds案例## English Answer:Introduction.OpenDDS is an open-source implementation of the Data Distribution Service (DDS) standard for real-time systems. It provides a high-performance, reliable, and scalable middleware platform for data-centric applications.Example.Here is a simple example that demonstrates how to use OpenDDS to create a publisher and a subscriber:cpp.// Publisher.#include <dds/dds.h>。
int main() {。
// Create a publisher.dds_entity_t publisher =dds_create_publisher(DDS_DOMAIN_DEFAULT, NULL, NULL);// Create a topic.dds_topic_t topic = dds_create_topic(publisher, "my_topic", DDS_STRING_TYPE, NULL, NULL);// Create a data writer.dds_datawriter_t writer =dds_create_datawriter(publisher, topic, NULL);// Write some data.dds_sample_info_t info;dds_string_t data = { 0, "Hello, world!" };dds_write(writer, &data, &info);// Wait for the data to be written.dds_condition_t condition =dds_get_statuscondition(writer);dds_waitset_t waitset = dds_create_waitset();dds_waitset_attach(waitset, condition);dds_waitset_wait(waitset, DDS_DURATION_INFINITE); // Cleanup.dds_delete(writer);dds_delete(topic);dds_delete(publisher);dds_fini();return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
V o l. 37 No. 298舰船电子工程Ship E le ctro n ic Engineering总第272期2017年第2期基于O penD D S的中间件实时通信机制扩展设计冯剑尘柳中华(92493部队葫芦岛125000)摘要在仿真试验领域,随着参试系统实时性和集成程度的提高,需对通信中间件软件进行实时扩展改造,论文的目标是依托O p e nD D S技术,对基于A C E结构的中间件进行实时通信机制扩展,使虚实合成试验系统在传输中能够快速高效地按需配置,提高中间件信息传输的实时性,扩展中间件软件对实时仿真、试验领域的支持。
关键词D D S;中间件;实时通信机制扩展中图分类号TP391 D O I:10. 3969/j. is s a1672-9730. 2017. 02. 024Design of Real-time Communication Mechanism ofMiddleware Based on OpenDDSF E NG Jianchen L I U Z ho n g h u a(N o. 92493 T ro o p s o f P L A, H ulu d a o125000)Abstract W ith rea l-tim e and in te g ra tio n degree o f system im p ro vin g in test range, the rea l-tim e perform ance on the m iddlew are com m unications is needed to expand. T h is paper uses OpenDDS technique to expand the m iddlew are based on the A C E s tru c tu re, m aking the experim ental system can be q u ic k ly and e ffic ie n tly in the transm ission o f the v irtu a l-re a l area, increasing the m iddlew are in fo rm a tio n deliver efficie n cy, w h ic h expands su p p ort o f realm in the e m u lation mode and test area fo r m iddlew are based system structure.Key Words DDS? m iddlew are, rea l-tim e com m unication mechanismClass Number TP391i引言在仿真、测试与虚拟试验领域,伴随着H L A、T E N A等技术的广泛应用,系统内部及系统间的信 息传输对于实时性的要求越来越高,因此,建立实 时性强、可靠性高、安全性好的信息传输中间件,提 高系统互联能力,满足系统内各种信息交换和共享 需求,并解决应用软件之间的数据共享和集成问题 是该领域亟待解决的问题。
本文的目标是依托DDS(Data Distribution Service)技术进行基于A C E架构的中间件实时通 信机制扩展研究,提高中间件信息传输的实时性,扩展传输体系对实时仿真、试验领域的支持。
*2数据分发服务(DDS)DDS具有松散親合、处理复杂数据流能力强、分发效率高、容错性好以及动态可配置等特点。
DDS定义了以数据为中心的发布/订阅(Data Centric Publish-Subscribe,DCPS)机制[1],以数据为中 心的发布/订阅模型基于全局数据空间(Global Data Space)的概念,如图 1 所示。
在D D S中所有对该空间中的数据感兴趣的应 用程序都可以接入。
向这个数据空间提供信息的 应用程序叫做发布者(Publisher),它公布自己所提 供数据的属性和类型;从数据空间中获取数据的应 用程序叫做订阅者(Subscriber),它公布自己希望*收稿日期=2016年8月10日,修回日期=2016年9月30日作者简介:冯剑尘,男,硕士,高级工程师,研究方向:武器装备试验总体。
柳中华,男,硕士,工程师,研究方向:导弹武器系统仿真。
2017年第2期舰船电子工程99接收的数据的属性和类型。
发布者和订阅者并不 需要知道彼此的位置,只要它们数据的属性和类型 能够成功匹配,它们之间就会成功建立一个数据收 发通道。
每当发布者将新数据发送到这个全局数 据空间,中间件就会把信息转发给所有感兴趣的订 阅者,订阅者就可以从全局数据空间中去获取自己 感兴趣的数据[2]。
图1以数据为中心的发布/订阅模型2. 1DDS规范与体系结构DDS规范包括域参与者、发布者、订阅者、数据写入者、数据读取者、主题和QoS (Quality of Service)等,其体系结构如图2所示。
DDS使用域来划分数据通信的子空间,隶属 于同一个域的各个域参与者(Participant)可以互相 通信,每个域参与者里面可以有一个或多个发布者 或订阅者,每个发布者里面可以有一个或多个数据 写入者(DataWriter),每个订阅者里面也可以有一 个或多个数据读取者(DataReader)。
数据写入者 通过数据通道将数据发送到相应的数据读取者处,数据读取者则从数据通道中获取自己感兴趣的数 据,数据写入者和数据读取者通过主题(Topic)和 QoS进行匹配和建立联系,一般每个数据写入者或 数据读取者只写入或读取一种类型的数据。
2.2 DCPS行为模式与QoSDCPS行为模式包含发布操作和订阅操作两部分。
发布操作定义了从应用更新数据到将数据 分发到订阅者的过程。
订阅操作定义了从接收数 据到将数据传递到应用的过程。
由于数据发布服 务的目标是使应用能获取正确数据,为了满足应用 对数据需求的多样性,D C PS设计了两级过滤机制:第一级是建立发布者和订阅者间供需关系,发 布者依据供需关系进行数据分发;第二级是在订阅 过程中建立内容过滤机制,应用可通过过滤器(filter)获取满足特定要求的数据。
在D CPS行为模式中,Q oS参数控制了 DDS 模型的底层的通信机制,并作为发布方和订购方之 间的协定来确定发布方服务方式、订购方服务等 级,并判断提供者能否满足要求,然后建立通信连 接,或者给出不相容错误提示,提高通信质量。
3技术方案选择3. 1DDS产品选择D D S自O M G发布相关标准以来己得到许多 提供商和最终用户的支持,目前已经有的发布的产 品有[3]:1) RTI DDS:由美国R T I公司开发,目前全球 范围内超过500个项目的广泛应用和部署,支持 Windows、Linux、VxWorkS等多种操作系统,由于 是商用软件,成本相对较高。
2) OpenSplice DDS:最初由 Thales 开发,在 2006 年被 PT(Prism Technologies)获得,主要的 应用在Tacticos项目(Thales的战斗管理系统)。
3) OpenDDS:对象管理组织OMG的实时数据分 发系统的C++开源实现。
OpenDDS本身使用C+ +开发,并通过JNDI技术兼容JM S标准。
OpenDDS 为了实现跨平台特性而构建于ACE抽象层。
4) MilSoftDDS: 土耳其的MILSOFT Software Technologies公司 开发的 DDS应用软件。
由于基于A C E通讯框架的中间件与OpenDDS底层的ACE+T A O机制可以兼容[4〜5]〇此外,从商业角度考虑,采用OpenDDS这种免费开 源的数据分发服务软件也有利于系统接口和支撑 软件平台的推广应用。
3.2 DDS应用模式选择OpenDDS与现有中间件在功能上都位于负责 信息传输的中间件层,应用OpenDDS有如下两种 应用模式[6]:应用模式一:使用OpenDDS替代原有基于A C E架构中间件,资源直接调用OpenDDS进行数据传输。
该模式应用时需要根据系统和资源的具100冯剑尘等:基于OpenDDS 的中间件实时通信机制扩展设计总第272期体情况进行域、主题、订阅/发布机制、数据写入/读 取代码的编写《应用模式二:使用OpenDDS 作为原有中间件 的一*种底层通丨目机制,保留现有的订阅/发布机制 和标准接口服务,该模式需要对OpenDDS 强数据 类型进行通用化处理。
两种应用模式下的中间件层次如图3所示。
应用模式一麵模式二O penDDS (数据交换服务)TAO (基于 A CE 的 O R B )八CE (A 适应M 汛坏境)W indow s ) Linux |Vx W orks中间件接口中间件基本服务11中间件软件IOpenDDS (数据交换服务)TAO (基于 A CE 的 O RB ) |A C E (_适应通讯环境)W indows Linux Vx W orks网络接口 以太网图3基于D D S 的中间件应用模式应用模式一下,直接应用OpenDDS 替代中间 件作为底层通信框架会使得中间件丧失灵活性、重 用性和可扩展性,增大网络开销,不利于其发展和 推广应用。
应用模式二下,主要缺点是由于需要对OpenDDS 强数据类型进行通用化处理,所以会牺 牲一定的信息传输实时性,但具有以下优点[11 _1)保持中间件接口不变,现有的各种资源无需做任何修改即可应用,继承了现有平台免编程系 统构建的模式。
2) 现有的基于内容的订阅/发布模式得以保 留,支持对主题下的部分内容进行兴趣订阅,提高信息传输效率。
3) 现有的对象模型结构可继续使用,支持继 承和组合关系。
综上所述,本文采用应用模式二进行开发,即 在保留现有的订阅/发布机制和标准接口服务的基 础上,使用OpenDDS 作为原中间件的一种底层通 信机制。
4基于OpenDDS 的中间件通信框架设计图4给出了基于D D S 的中间件通信框架,图 中阴影区域标出的为OpenDDS 提供的功能模块。
4.1软件总体结构为保证原中间件通用接口不发生变化,采用插 件模式引入:DDS 作为底层通信设施,每个系统应 用(对应一个试验方案文件)会产生一个插件实现 文件(D L L 格式)。
同时,为保证原中间件不经过 代码编译过程即可使用插件实现文件,插件的外部接口必须符合特定标准[8〜|原中间件A PI| |系统管理服务| |其它支持服务i! | |时间管理服务丨11------------1!-------------------------L V I ~~声明管理服务~~| |~7Q o S 配置服务'、、.I |对象管理服务丨/一----------------------------------------------------------、1对象实例化1 |发#订购算法| |发现服务| |兴趣过滤| )1通知服务|内部处理包|回调服务|、丨数据域处理| |时戳管理| |消息分配| |数据流处理|IT A O +A C B||互联机制(IP /共享内存/反射内存/通汛总线)|图4基于O p e n D D S 的中间件通信框架由于DDS 在发布/订阅、数据写入和读出过程 中的强类型要求,即要求为每个数据结构产生对应 的类型对象、数据读对象和数据写对象,因此根据 每个试验方案中的数据结构(对象模型)自动生成 上述对应的对象代码并自动进行后台编码编译就 是必须的要求。