车载通信与DDS标准解读系列(2):DDS标准

2024-04-01 10:52

本文主要是介绍车载通信与DDS标准解读系列(2):DDS标准,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

▎汽车智能化与车载通信

在这个汽车智能化迅猛发展的时代,特别是智能驾驶技术的快速迭代,对车载通信的需求也越来越高,传统的通信方案开始无法满足通信系统的多样性需求。为了适应这一趋势的发展,我们需要一种灵活、可靠、低延迟且具有高安全性的通信方案。DDS作为一种高效、可靠的数据通信技术,正逐渐在汽车行业中崭露头角。

在接下来的篇章中,我们将认识DSS,探讨基本概念和原理,弄清楚DDS为什么可以适应当前车载通信的需求。之后会带领大家打开DDS标准一探究竟,更好地理解DDS在车载通信系统中的优势和价值。

▎什么是DDS

DDS (Data Distribution Service) 即数据分发服务,是一种中间件标准,中间件是指位于操作系统和应用程序之间的软件层,用于协调和管理不同软件组件之间的通信和交互。它提供了统一的接口和通信机制,使不同应用程序可以在不同的环境中进行互操作。DDS为分布式数据通信提供解决方案,以便不同的应用程序可以相互交流和协作,目的是支持高性能、实时和可靠的数据传输。

DDS具备以下几个特点:

  • 以数据为中心的发布订阅模型:DDS基于数据为中心,可以实现高效的数据传输和共享。数据发布者将数据发布到DDS网络中,订阅者可以选择订阅感兴趣的数据,并接收到相应的数据更新。
  • 支持多种QoS(Quality of Service)策略:DDS支持多达22种QoS策略,用于定义数据传输的质量要求。可以根据具体应用需求进行配置和调整,以满足不同的性能和可靠性要求。
  • 大规模的可扩展性:DDS具备大规模的可扩展性,能够适应复杂的分布式系统和大量的数据交换。它支持灵活的拓扑结构和节点间的动态发现,可以方便地扩展和集成新的节点和功能。
  • 较好的安全性:DDS提供了一系列的安全机制,用于保护数据的传输和存储。它支持数据加密、身份验证、访问控制等安全特性,可以有效地防止数据泄露和未经授权的访问。

DDS与专门用于车载通信系统的SOME/IP有所不同。DDS最初由OMG(Object Management Group)组织于2003年发布,目的是为了满足现代实时系统的需求,在物联网、工业自动化、航空航天、国防等多个领域均得到广泛应用。随着汽车电子系统对车内通信传输性能、安全性和灵活性提出更高要求,越来越多的OEM开始采用DDS作为通信解决方案。

▎打开DDS标准

了解了DDS是什么,有什么特点之后,我们深入了解一下DDS标准到底介绍了什么?

从OMG组织2003年发布的DDS v1.0版本至今,DDS标准经历了多次迭代和内容拓展。目前,DDS标准可以分为4个部分:核心标准、扩展标准、网关标准和API标准。其中,核心标准包括了4个协议:

  • DDS:主要描述了DCPS模型和QoS策略
  • DDSI-RTPS:定义了DDS基于有线传输的通信行为、报文格式等内容
  • DDS-XTYPES:描述了数据的序列化表示及TypeSystem
  • DDS-SECURITY:描述了四类security策略,如认证、数据加密等

在这里插入图片描述
除了核心协议之外,扩展标准中的DDS-RPC对车载通信应用来说同样是非常重要的内容,其定义了如何使用DDS实现RPC通信。此外,正在开发中的DDS标准DDS-TSN也备受关注。这些标准的开发旨在进一步完善DDS协议,使其适用于更广泛的实时系统应用场景。

本次我们会重点介绍核心协议中的DDS标准。它涵盖了两个主要部分:

  1. DCPS(Data-Centric Publish-Subscribe)模型:是DDS的核心模型,它定义了数据发布者和订阅者之间的交互方式。
  2. QoS(Quality of Service)策略:它为数据传输提供了质量服务。DDS的QoS策略非常丰富,包括实时性、可靠性、带宽控制等。通过配置和调整这些QoS策略,实现不同的通信要求。

DCPS模型

DCPS(Data-Centric Publish-Subscribe)模型定义了应用程序在DDS中发布和订阅数据对象的功能。发布和订阅很容易理解,"Publisher"发布者将"Topic"主题发布出来,"Subscriber"订阅者则对感兴趣的主题进行订阅。"Topic"主题是DDS中定义的一个抽象概念,它代表了一类数据的集合,用于标识一组相关的数据。那么当我们要发布或订阅内容时,这些数据从何而来,又该去向何处?

这个问题的答案同样在DCPS基本概念里,我们需要了解"DataWriter"和"DataReader"。在发布信息时,数据通过"DataWriter"传递给"Publisher"。对于"Subscriber",当订阅数据后,需要通过"DataReader"来访问和接收具体的数据。这里需要注意的是,一个"DataWriter"/“DataReader"只能对应一个"Publisher”/“Subscriber”,也可以理解成前者是由后者创造的,而一个"Publisher"/“Subscriber"可以创造多个"DataWriter”/“DataReader”。当我们想发布不同的"Topic"时,可以使用不同的"DataWriter"来向发布者传递数据。

在这里插入图片描述
至此我们知道了DCPS的几个基础概念:

  • Publisher/Subscriber(发布者/订阅者):发布者负责将数据发布到特定的主题(Topic)中,而订阅者则通过订阅相关主题来接收所需的数据。
  • DataWriter/DataReader(数据写入者/数据读取者):DataWriter负责将数据写入到特定的主题中,而DataReader负责从主题中读取相应的数据。
  • Topic(主题):主题是DCPS中定义数据传输的逻辑分类和组织单元。它可以看作是一种数据的标签,用于区分不同类型的数据。

当我们理解了几个基础概念后,再将视野放大一些,如果有非常多的"Publisher", “Subscriber”, "Topic"该如何处理?

DCPS模型通过引入全局数据空间(Global Data Space)来解决这个问题。全局数据空间是一个集中存储和管理所有数据对象的共享空间。一个全局数据空间即一个DDS域(DDS Domain),DDS域是一个逻辑上的容器,它将所有的"Publisher", “Subscriber”, “Topic"集中在一个空间中,用于组织和管理相关的数据对象。在DDS域中,有一个关键的概念"Domain Participant"域参与者。域参与者是一个抽象的实体,主要负责创建和管理"Publisher”, “Subscriber”, “Topic”。

需要注意的是,不同的Domain之间是相互独立的,它们不能直接进行通信或访问对方的数据。每个Domain都被分配一个唯一的Domain ID(域标识),通过该ID可以唯一地识别一个Domain。应用程序可以通过指定特定的Domain ID来创建Domain Participant(域参与者),以获取相应Domain的访问权限。

现在我们又了解到了DCPS宏观上的两个新的概念:

  • Domain(域):域是一个逻辑上的概念,基于不同的应用需求、安全性要求或其他特定的业务需求将不同的数据通信划分为不同的区域。在同一个域内,数据的发布者和订阅者可以进行数据的交换和共享。
  • Domain Participant(域参与者):域参与者表示在特定域中的一个实体。它是数据的发布者、订阅者和Topic的创造者及管理者,负责管理DDS中的实体对象和通信配置。

在这里插入图片描述
除了上述这些概念之外,DCPS提供了多种策略来满足不同的发布和订阅需求。对于订阅方来说,DDS提供了以下两种基础策略:

  • Listen(监听):订阅者可以使用监听方式来接收数据。它会一直等待,直到接收到数据为止。这种方式是阻塞型的,即订阅者在接收到数据之前会一直等待。
  • StatusCondition(状态条件):使用Condition和Waitset(条件和等待集),订阅者可以实现异步数据访问。可以为一个或多个条件对象设置条件,然后等待条件满足或特定事件发生。这种方式是非阻塞的,订阅者可以继续执行其他操作,而不必一直等待。

通过选择适当的策略,订阅者可以根据不同的需求进行数据访问和处理。监听方式适用于需要及时响应并处理数据的场景,而条件和等待集方式适用于需要异步处理数据或等待特定条件发生的场景。

QoS服务质量

QoS(Quality of Service)是一种用于确定通信系统中信息传输质量的策略。QoS策略用于满足不同应用场景下对信息交互的特殊需求。与SOME/IP相比,DDS的QoS数量可谓相当丰富。目前,DDS提供了22种不同的QoS策略,它们可以独立或组合使用。通过定义和配置一系列QoS参数和策略,能够在数据传输过程中实现对带宽、延迟、可靠性和安全性等的控制和优化。

当定义一个QoS策略时,我们首先要了解他的含义和Value(配置值)的定义,需要注意的是QoS必须定义一个默认值。除此之外还有以下三点需要定义:

  • Concerns: 表示QoS可为哪些实体配置,包括:Topic, DataWriter, DataReader, Publisher, Subscriber, and DomainParticipant。
  • RxO: 兼容设置。YES即表示通信两端要求兼容,NO表示可独立配置,N/A表示该Qos只能在一端配置。
  • Changeable: Entity创建后是否可改变QoS配置,YES/NO。

在这里插入图片描述
由于DDS提供了较多的QoS策略,我们以其中三个重要的QoS为例来介绍:

Durability(持久性):该策略用于确定数据的持久性存储方式。它可以设置为"VOLATILE"数据不进行永久储存,"TRANSIENT"数据保留在内存中,"TRANSIENT_LOCAL"数据保留在DataWriter的内存中,"PERSISTENT"数据将保存在永久存储中。在车载通信系统中,Durability可以确保重要数据在异常情况下不会丢失。同时,持久性存储还可以支持数据的历史记录和回放,为数据分析、故障排查等提供有力支持。根据具体应用场景和需求来灵活配置Durability,以实现最佳的持久性存储效果。

在这里插入图片描述
Reliability(可靠性):该策略用于确保数据传输的可靠性。它可以设置为"BEST_EFFORT"或"RELIABLE",前者表示尽力而为的传输,不保证可靠传输,数据可能会丢失或重复,适用于某些实时性要求较高的应用场景。后者表示数据以可靠的方式发送,保证数据的传输和接收的可靠性。数据不会丢失,确保所有订阅者都可以接收到相同的数据。我们可以依据对延时和可靠性的实际需求来进行选择。

在这里插入图片描述
Partition(分区):该策略通过一组字符串来定义发布者和订阅者的分区。分区是一种逻辑上的划分,用于将数据发布者和数据订阅者按照一定的规则进行分组。当发布者和订阅者使用相同的分区标识符时,它们将进行匹配并允许进行数据交互。这样可以实现对数据的精确过滤,实现灵活的数据管理。

在这里插入图片描述
以上仅是几个常见的QoS策略示例,DDS还提供了其他许多策略,通过配置和组合这些策略,以满足不同应用对网络通信服务质量的需求。

▎结语

由于车载通信领域的发展对通信方案提出了更高的要求,DDS作为一种灵活、可靠、低延迟且具有高安全性的通信方案,逐渐成为汽车通信系统的选择。

经过对DDS的首要核心标准的解析,我们已经了解到DDS基于数据为核心的发布-订阅的DCPS模型以及多种QoS策略。通过DDS的合理模型设计和策略配置,能够实现高效的数据传输,并满足车载通信中不同应用场景的需求。那么,在车载系统中,我们应该如何通过DDS来实现通讯,又如何通过网络协议进行数据传输呢?对于这些问题,将会在对DDS标准的下一份核心协议《DDSI-RTPS》的解读中找到答案,敬请期待。

了解更多:请致电 010-64840808转6115或发邮件至market_dept@hirain.com(联系时请说明来自CSDN平台)

这篇关于车载通信与DDS标准解读系列(2):DDS标准的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866977

相关文章

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据