车载通信架构 —— DDS协议介绍

车载通信架构 —— DDS协议介绍

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。

本文主要

-> 1、标准及发展简介

-> 2、概念介绍

-> 3、应用场景及价值意义

一、标准及发展简介

DDS 的全称为 Data Distribution Service(数据分发服务 ),是由OMG联盟在2004年发布的中间件协议和应用程序接口标准。采用发布 / 订阅模型,提供丰富的 QoS(Quality of Service)服务质量策略,可满足各种分布式系统实时通信的低延迟、高可靠性、可扩展性的需求。DDS 被广泛应用在航空航天、船舶、军事、工业、医疗、交通、能源等领域中。

在分布式系统中,DDS 中间件是处于操作系统和用户应用程序之间的软件层,如图 4.5-12 所示。它将应用程序从操作系统,网络传输和低级数据格式的详细信息中抽象出来,以接口定义语言模式提供了支持多种编程语言 API,从而使应用在不同的操作系统、编程语言和处理器体系架构之间交换信息。DDS中间件管理了数据格式、发现、连接、可靠性、协议、传输选择、QoS、安全性等底层细节。

随着SOA在汽车领域的发展和运用,面向服务的通信中间件SOME/IP标准协议被引入到基础软件架构标准中。随着基础软件软硬解耦、软软解耦的发展,应用和服务之间除了服务能力的提供,还出现数据共享的需求。DDS正是以数据为中心的通信中间件,用Topic为单元实现数据的共享,按照用户定义的方式存储、发布和订阅数据,支持运行在不同系统上,不同开发语言的应用可以分布式的互相收发数据。

二、概念介绍

DDS 在软件框架中的模型如下图所示。DDS 通信的要素包括:

->(Domain)代表一个通信平面,由Domain ID唯一标识,只有在同一个域内的通信实体才可以通信;如果考虑车内通信,可以只划分1个Domain,也可以按照交互规则或其他规则,定义多个Domain;

-> 域参与者(Domain Participant)代表域内通信的应用程序的本地成员身份,简单来说,就是说明同一数据域内的通信成员;

-> 主题(Topic)是数据的抽象概念,由TopicName标识,关联相应数据的数据类型(DataType),如果把车内所涉及的所有Topic集合在一起,这样就形成一个虚拟的全局数据空间“Global Data Space”,进一步弱化了节点的概念,所以域参与者已经不是节点的概念了;

-> 发布者(Publisher)发布者,发布主题数据,至少与1个DataWriter关联,通过调用DataWriter的相关函数将数据发出去;

-> 订阅者(Subscriber)订阅者,订阅主题数据,至少与1个DataReader关联。当数据到达时,应用程序可能忙于执行其他操作或应用程序只是等待该消息时,这样就会存在两种情况,同步访问和异步通知;

-> 数据写入者(Data Writer)数据写入者,类似缓存,把需要发布的主题数据从应用层写入到DataWriter中;;

-> 数据读取者(Data Reader)数据读取者,同样可以理解为一种缓存,从订阅者得到主题数据,随之传给应用层。

详细内容可参见如下示意图:

DDS软件框架模型


DDS软件框架模型

DCPS(Data-Centric Publish-Subscribe )模型中的4个基础的概念:

-> 1、Publisher:它是负责创建和配置其实现的 DataWriters 的 DCPS 实体。 DataWriter 是负责实际发布消息的实体。每个 DataWriter 都有一个分配的 Topic,在该 Topic 下发布消息。

-> 2、Subscriber:它负责接收在其订阅的 Topic 下发布的数据。它为一个或多个 DataReader 对象提供服务,这些对象负责将新数据的可用性传达给应用程序。

-> 3、Topic:它是绑定发布和订阅的实体,在 DDS 域中是唯一的。通过 TopicDescription,它允许发布和订阅数据类型的统一。

-> 4、Domain:它用于链接所有发布者和订阅者,属于一个或多个应用程序,它们在不同主题下交换数据。这些参与域的单个应用程序称为 DomainParticipant,DDS域由Domain ID 标识。DomainParticipant通过定义Domain ID 以指定它所属的DDS域。具有不同Domain ID 的两个 DomainParticipants不知道彼此在网络中的存在。因此,可以创建多个通信通道。这适用于涉及多个DDS应用程序的场景,它们各自的 DomainParticipants相互通信,但这些应用程序不得干扰。DomainParticipant 充当其他 DCPS 实体的容器,充当发布者、订阅者和主题实体的工厂,并在域中提供管理服务。

三、应用场景及价值意义

作为AP中中间件协议的常用协议,DDS还广泛应用于如下地方:

-> 军事&航空航天

NASA Launch Control System,NASA 发射控制系统,DDS用于超过40万个控制点 , 能够智能地分发来自数千个传感器的数据,并允许在控制室进行数据的存储和查看。

另外,Next Generation Navy System基于DDS标准的、高性能的中间件促进系统更好地实现互操作性,并作为未来架构设计的基础。

-> 智能能源

Large Scale Fusion Reactor System,该系统是DDS用于聚变能源中心的远程控制系统的数据监控和采集。SIEMENS WIND POWER也使用DDS可用于控制多个分布式的风力涡轮机,通过数据的交互和采集提高发电效率。

-> 医疗设备&健康卫生系统

用于集成医院的医药诊断系统。DDS将设备、服务连接在一起,以支持实时的显示。DDS 可用于支持需要高效控制大规模数据流传输的系统,如CT成像系统等。

-> 仿真&测试系统

飞行员训练模拟器。CAE用DDS进行高效的数据分发,并作为下一代飞行模拟器的架构.

-> 汽车领域(敲重点)

用于 Hardware-in-the-loop(HIL)仿真,Audi使用DDS中间件实现测试系统中数百个设备的数据的实时交互。

DDS用于大众智能车的驾驶辅助及综合安全系统,用于结合来自雷达、激光测距仪和视频的数据,来协助安全操作,比如能够检测驾驶员的睡意,还能够检测车道偏离等。

Baidu Apollo系统中集成了DDS。

AUTOSAR 的AP平台在 R18-03 版本开始支持DDS,CP平台也已经开始规划支持DDS。

部分自动驾驶的SoC芯片预留了DDS接口,ROS2、Cyber RT 等操作系统也集成了开源DDS。

而对于面向服务的通信协议,DDS与SOME/IP各自的优劣?DDS能否替换SOME/IP等问题不在本文讨论。

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/99329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络监控工具 - iftop

iftop 是一个基于 libpcap 库的网络流量监控工具。它通过监听指定网络接口上的数据包,并分析这些数据包的源地址、目标地址、源端口、目标端口、协议等信息,从而实时显示网络流量的相关统计信息。 安装 在大多数Linux发行版中,您可以使用包管…

计算机竞赛 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习行人重识别(person reid)系统 该项目…

配置文件生成器-秒杀SSM的xml整合

配置文件生成器-秒杀SSM的xml整合 思路&#xff1a; 通过简单的配置&#xff0c;直接生成对应配置文件。 maven坐标 <dependencies><!-- 配置文件生成 --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker<…

maven 初学

1. maven 安装 配置安装 路径 maven 下载位置: D:\software\apache-maven-3.8.6 默认仓库位置: C:\Users\star-dream\.m2\repository 【已更改】 本地仓库设置为&#xff1a;D:\software\apache-maven-3.8.6\.m2\repository 镜像已更改为阿里云中央镜像仓库 <mirrors>…

Kubernetes概述架构与工作流程简述

文章目录 Kubernetes概述Kubernetes优势Kubernetes 集群组件控制平面组件Node 组件 Kubernetes工作流程下期预告 Kubernetes概述 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;可促进声明式配置和自动化。 Kubernetes 拥…

简易版Pycharm(2023)+Conda开发环境配置教程

困 扰 不知道为什么&#xff0c;自从Pycharm更新了新的版本以后&#xff0c;在Pycharm中为项目工程配置Python解释器环境时&#xff0c;总是不能像以前那么方便。 比如&#xff0c;当前Conda中有十个不同的开发环境&#xff0c;每个环境一个名称&#xff0c;比如&#xff0c;p…

VB.NET vs. VB6.0:现代化编程语言 VS 经典老旧语言

目录 ​.NET背景&#xff1a; 特点: VB6.0背景&#xff1a; 特点: 两者之间的不同: 总结: 升华: .NET背景&#xff1a; VB.NET一种简单&#xff0c;现代&#xff0c;面向对象计算机编程语言&#xff0c;有微软开发&#xff0c;VB.NET是一种基于.NET Framework的面向对象…

golang gin——中间件编程以及jwt认证和跨域配置中间件案例

中间件编程jwt认证 在不改变原有方法的基础上&#xff0c;添加自己的业务逻辑。相当于grpc中的拦截器一样&#xff0c;在不改变grpc请求的同时&#xff0c;插入自己的业务。 简单例子 func Sum(a, b int) int {return a b }func LoggerMiddleware(in func(a, b int) int) f…

【C++设计模式之观察者模式:行为型】分析及示例

简介 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生变化时&#xff0c;所有依赖它的对象都能够自动收到通知并更新。 描述 观察者模式由两个核心件组成&#xff1…

来单提醒/客户催单 ----苍穹外卖day9

来单提醒 需求分析 代码开发 注意:前端请求的并不是8080端口;而是先请求Nginx,Nginx进行反向代理以后转发到8080端口 这段代码首先创建了一个orders类用于更新订单状态 并且在更新状态后使用websocket发送给后端提醒 将信息放在map后,使用json的string化方式传给一个接收对象,…

类 ChatGPT 模型存在的局限性

尽管类ChatGPT模型经过数月的迭代和完善&#xff0c;已经初步融入了部分领域以及人们的日常生活&#xff0c;但目前市面上的产品和相关技术仍然存在一些问题&#xff0c;以下列出一些局限性进行详细说明与成因分析&#xff1a; 1&#xff09;互联网上高质量、大规模、经过清洗…

【广州华锐互动】动物解剖学AR互动学习平台

增强现实&#xff08;AR&#xff09;是一种将虚拟信息叠加到现实世界中的技术。通过智能手机、平板电脑或AR眼镜等设备&#xff0c;AR技术可以创建出逼真的虚拟物体&#xff0c;这些物体可以与现实世界的环境相互交互。 AR技术在教育领域的应用非常广泛&#xff0c;包括历史、科…

postman测试文件上传接口教程

postman是一个很好的接口测试软件&#xff0c;有时候接口是Get请求方式的&#xff0c;肯定在浏览器都可以测了&#xff0c;不过对于比较规范的RestFul接口&#xff0c;限定了只能post请求的&#xff0c;那你只能通过工具来测了&#xff0c;浏览器只能支持get请求的接口&#xf…

CCF CSP认证 历年题目自练Day21

题目一 试题编号&#xff1a; 201909-1 试题名称&#xff1a; 小明种苹果 时间限制&#xff1a; 2.0s 内存限制&#xff1a; 512.0MB 题目分析&#xff08;个人理解&#xff09; 先看输入&#xff0c;第一行输入苹果的棵树n和每一次掉的苹果数m还是先如何存的问题&#xf…

ASP.NET Core 开发 Web API

2. Web Api 的创建与Http类型的介绍 2.1 ASP.Net Core Web API项目的创建 1.创建ASP.NET Core Web API项目 从“文件”菜单中选择“新建”“项目”。 在搜索框中输入“Web API”。 选择“ASP.NET Core Web API”模板&#xff0c;然后选择“下一步”。 在“配置新项目”对话框中…

[护网杯 2018]easy_tornado 解析

打开网页有三个链接&#xff0c;依次点开之后获得一个fllllllllllllag一个render和一个MD5加密格式 之后尝试去访问/fllllllllllllag 直接跳出报错界面。 但这个报错界面居然是可以改的 试着注入一下 看了师傅的wp发现好像没有&#xff0c;要从框架入手 框架就是标题的torna…

【框架风格】解释器模式

1、描述 解释器框架风格&#xff08;Interpreter Framework Style&#xff09;是一种软件架构风格&#xff0c;其核心思想是构建一个解释器&#xff08;Interpreter&#xff09;来解释并执行特定领域或问题领域的语言或规则。以下是解释器框架风格的一些特点&#xff1a; 1. 领…

【leetcode】 vscode leetcode [ERROR] invalid password? 问题解决

目录 问题解决 问题 使用vscode连接leetcode出现下列问题&#xff1a; vscode leetcode [ERROR] invalid password?出现invalid password?的问题&#xff0c;首先需要检查账号密码是否出错&#xff0c;leetcode的账号可以是手机或邮箱&#xff0c;然后密码去check一下&…

RabbitMQ 介绍与 SpringBootAMQP使用

一、MQ概述 异步通信的优点&#xff1a; 耦合度低吞吐量提升故障隔离流量削峰 异步通信的缺点&#xff1a; 依赖于Broker的可靠性、安全性、吞吐能力架构复杂&#xff0c;业务么有明显的流程线&#xff0c;不方便追踪管理 什么是的MQ MQ&#xff08;Message Queue&#xf…

elasticsearch基本语法

这里写自定义目录标题 elasticsearch简介基本语法索引创建索引修改索引删除索引 查询简单查询精确查询条件查询范围查询&#xff1a;聚合查询&#xff1a;排序和分页&#xff1a; 参考文献&#xff1a; elasticsearch简介 Elasticsearch 是一个开源的分布式搜索和分析引擎&…