0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【文章转载】CANoe与DDS

北汇信息POLELINK ? 2023-01-13 09:47 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

DDS(Data Distribution Service)是OMG组织(Object Management Group)最早在2004年发布的分布式实时通信中间件标准,旨在使用发布-订阅模式实现可靠、高性能、互操作、实时、可扩展的数据交换。

7efbe260-918f-11ed-ad0d-dac502259ad0.jpg

图1:DDS软件示例架构图

在汽车领域,Adaptive AUTOSAR于2018年引用DDS作为可选择的通信方式之一。DDS的实时性恰好适合于自动驾驶系统。因为在这类系统中,通常会存在感知、预测、决策和定位等模块,这些模块都需要非常频繁地高速交换数据。借助DDS,可以很好地满足这类系统的通信需求。凭借以数据为中心及丰富的QoS机制,DDS在汽车行业中逐渐受到青睐,汽车制造商及供应商将DDS作为系统中可选的通讯中间件之一,从而增强其产品的功能特性及可靠性。

DDS具有以数据为中心、即插即用、丰富的QoS等特性,这意味着DDS在网络传输中对各层级数据需要提供丰富且冗长的Header信息,方便通讯双方识别所需内容,因此对硬件及网络中的传输和数据处理性能提出了较高要求。因此在未来,DDS、SOME/IP等SOA通信中间件与车载总线类似,在车内将会是多种中间件长期共存的状态。

DDS有诸多协议规范,其中最核心的2个规范是:DDS规范和DDSI-RTPS规范。DDS规范描述了分布式应用通信和以数据为中心的发布-订阅模型,定义了应用接口(API)和通信语义,从而实现“在正确的时间向正确的地点有效可靠地传递正确的信息”。DDS规范提供了DDS核心概念在与平台无关模型(PIM)中的抽象定义,以及相对于平台专用模型(PSM)中的映射,从应用开发者视角诠释了DDS的核心定义。但是,单纯依靠DDS规范使得各DDS中间件供应商对于具体通信传输介质、行为和数据包结构有着自己的理解,若通信系统中各设备来自不同的DDS中间件供应商,其互操作性可能会存在问题。

为解决这一问题,OMG随后发布了DDSI-RTPS规范,对通信结构、数据消息结构、收发行为、服务发现进行了定义,从而保证来自不同厂商的DDS中间件的互操作性。目前纳入DDSI-RTPS规范中的底层通讯协议为UDP/IP。OMG组织目前暂未对DDS的测试规范进行定义。

7f21735e-918f-11ed-ad0d-dac502259ad0.jpg

图2:DDS数据交互简化拓扑图

DDS中重要概念:

>

Domain

连接所有能够互相通信的应用程序的分布式概念,只有在同一个Domain下的Publisher和Subscriber能够互相通信,不同Domain的应用程序不知道彼此的存在,Domain通过DomainID进行区分。Domain中包含了DomainParticipant,后者代表了同一个Domain下参与通讯的应用程序,同时也是Publisher、Subscriber、Topic的工厂。

>

Topic

Publisher和Subscriber互相通讯的数据本身,其名称(Topic Name)在一个Domain中是唯一的。

>

DataWriter

基于绑定的Topic,由应用程序发送数据的实体。1个DataWriter隶属于1个Publisher,同时1个DataWriter对应于1个Topic。

>

DataReader

可使应用程序声明期望的Topic数据,以及访问Subscriber收到的数据。1个DataReader隶属于1个Subscriber,1个DataReader对应1个Topic。

>

Publisher

负责发布实际Topic数据的实体,可以创建及配置多个DataWriter并绑定相应若干Topic。

>

Subscriber

负责接收订阅Topic数据的实体,可以创建及配置多个DataReader并绑定相应若干Topic。

>

QoS

服务质量(Quality of Service)是控制DDS服务的一系列特性。Topic、DataWriter、DataReader、Publisher、Subscriber以及DomainParticipant各实体均可配置其各自的QoS规则,这些QoS互相存在兼容性检查。若通信双方QoS不兼容,则无法建立通信。目前DDS v1.4版本规范定义了Durability、LiveLiness、Reliability、LifeSpan、History等QoS机制。

CANoe中开始支持DDS

随着DDS开始在汽车电子领域的应用,Vector应客户需求在CANoe 16 SP3版本中开始支持DDS的仿真、分析与测试。DDS的通讯模型基于CANoe中的Communication Concept(ComCo)实现。

基于CANoe建立DDS的仿真和解析工程环境,可以充分利用CANoe及其测试工具链现有的优势特性:

>

CANoe是汽车电子、IoT、航空航天等多领域仿真及测试的一站式整合平台,支持CAN、CAN FD、CAN XL、LIN、FlexRay、SOME/IP、AUTOSAR PDU(CP/AP)、DoIP、CCP/XCP、NM网络管理、UDS、Cyber Security(SecOC、TLS/DTLS、IPsec、MACsec等)、E2E、全球充电协议、MQTT、HTTP、WLAN、BLE等多种总线和协议;

>

采用用户熟悉的CAPL、C#Python语言实现;

>

支持SIL/HIL、通信路由、网络仿真、数据分析/记录、诊断/刷写、电源管理、I/O控制等多种场景;

>

极具性价比的测试设计及测试脚本开发环境——vTESTstudio;

>

无缝耦合整车动力学模型及ADAS场景仿真模型工具DYNA4,或基于FMI/FMU、FDX、XIL API、COM、SIL KIT整合第三方测试工具链;

>

匹配汽车电子敏捷开发流程的CI/CT工具链体系。

如何在CANoe中创建DDS仿真及解析工程?通过下图新建Distributed Objects工程:

7f367254-918f-11ed-ad0d-dac502259ad0.png

图3:新建CANoe DO工程

而后可在主界面中看到Communication Setup界面,该界面也可通过CANoe上方标签Simulation下打开。随后依据下图指引新建DDS通信接口描述文件vCDL:

7f439fc4-918f-11ed-ad0d-dac502259ad0.png

图4:新建DDS通信接口描述文件

在选择vCDL文件保存路径及文件名后(注意路径及文件名不能包含中文及特殊字符),依据下图指引打开编辑:

7f502f64-918f-11ed-ad0d-dac502259ad0.png

图5:编辑DDS通信接口描述文件

vCDL语言(Vector Communication Description Language)作为在CANoe Communication Concept中用于描述通信对象的语言,通过Distributed Objects(DO)对DDS的数据对象进行定义。DO的consumed value对应DDS DataReader;provided value对应DDS DataWriter。

以下图示例说明:

定义结构体作为Topic Type(即HealthData);

在interface(即IMonitor)中将该结构体作为consumed value(也可作为provided value)并进行实例化(即healthData),从而隐式声明DDS DataReader,另显式声明名为“/Monitor/healthData”的Topic;

最终对该interface(即IMonitor)分别实例化为Monitor和Sensor,作为Subscriber和Publisher;

其中Sensor的类型为reverse,代表依据IMonitor中的consumed value(即healthData)反向作为provided value。

7f5d90be-918f-11ed-ad0d-dac502259ad0.png

图6:vCDL中对DDS的通信接口定义示例

vCDL DDS的结构体中可以包含如下数据类型:uint或int(8、16、32、64bit),Bool,Double,Float,String,Struct,Array,List,Bytes等,并在逐渐完善中。CANoe Help文档中提供了DDS IDL数据类型与vCDL数据类型的详细对应关系。

当前版本的vCDL中,可对consumed value(DDS DataReader)和provided value(DDS DataWriter)进行QoS规则设置,包括:Reliability、History、Durability、Lifespan、Liveliness,更多的QoS规则会在CANoe后续版本中完善。

其他对于DDS Binding时的属性配置可参考详情:CANoe 16 SP3 Help文档中的“Distributed Objects (DOs) for Data Distribution Service (DDS)”页面专题。

当完成DDS的通信接口描述文件创建后,CANoe会自动生成若干观测事件及数据对象,包括DataWriter和DataReader的匹配/不匹配事件信息、服务发现信息、数据Sample信息、Built-in Topic信息等,以DO体现。

用户可在“.. \Sample Configurations 16.3.110\Connectivity\DDS\DDSBasic”中了解DDS Demo示例工程。该工程运行后,在Trace窗口可查看详细的DDS仿真和解析数据内容。

7f6995d0-918f-11ed-ad0d-dac502259ad0.png

图7:CANoe中DDS工程运行状态

由于DDS协议簇范围广,存在较多用户自定义实现,除去当前针对ECU仿真及测试需要的DDS功能支持外,也满足ROS2集成的功能。更多DDS功能将在后续CANoe版本中完善。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN
    CAN
    +关注

    关注

    58

    文章

    2939

    浏览量

    469028
  • DDS
    DDS
    +关注

    关注

    22

    文章

    676

    浏览量

    154844
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DDS-TSN 到底是如何实现的?

    概述1.1TSN与DDS的独立优势与局限随着智能网联汽车和车载网络架构的不断迭代,车载网络对实时性、确定性和高效数据分发的需求日益严苛。TSN和DDS的结合为车载以太网提供了确定性实时通信(TSN
    的头像 发表于 08-13 10:07 ?4017次阅读
    <b class='flag-5'>DDS</b>-TSN 到底是如何实现的?

    爆肝整理!CANoe选型不再纠结,3分钟快速上手!#CANoe

    CANoe
    北汇信息POLELINK
    发布于 :2025年07月30日 16:36:44

    CANoe中ADAS功能集介绍

    高级驾驶辅助系统(ADAS)在汽车中的应用日益增长,为了满足工程师对于ADAS的分析、仿真和测试等功能的需求,CANoe从15.0版本开始提供ADASFeatureSet(ADAS功能集,简称AFS
    的头像 发表于 07-10 14:55 ?670次阅读
    <b class='flag-5'>CANoe</b>中ADAS功能集介绍

    CANoe产品体系19版本新特性及新增Option(上)

    新版本持续助力当前车辆E/E架构中ECU开发验证,同时赋能后续智能网联电动车型预研验证。新版本CANoe产品体系新增数据驱动的DDS、车辆互联服务和高效电机模型库,进一步支持CANXL
    的头像 发表于 06-11 10:03 ?1572次阅读
    <b class='flag-5'>CANoe</b>产品体系19版本新特性及新增Option(上)

    CANoe产品体系19版本新功能(下)

    NET 8.0现已支持测试脚本、应用模型和仿真节点的开发,支持C# 12,可使用async/await进行等待,本机编译实现快速加载,改进应用层对象的API实现处理复杂数据类型,并支持运行在Linux版本CANoe SE中。
    的头像 发表于 05-29 14:05 ?1156次阅读
    <b class='flag-5'>CANoe</b>产品体系19版本新功能(下)

    DAC使用DDS输出,波形失真

    使用FPGA控制AD9142A,DAC采用DDS输出正弦波,所有频率,从1Hz到1MHz,都有这种现象,在示波器上采集有分段现象,每四段就有一个阶跃,像台阶一样,且总是和大体方向相反,在正弦波的值
    发表于 03-06 15:36

    CANoe仿真HTTP节点的实战秘籍大公开

    在汽车电子系统测试中,CANoe作为主流的仿真测试工具,常需与云端服务器、第三方软件或物联网设备进行交互。随着CANoe与外部软件、服务器或设备交互越来越多,直接使用Socket进行通信往往不能满足
    的头像 发表于 03-05 10:04 ?633次阅读
    <b class='flag-5'>CANoe</b>仿真HTTP节点的实战秘籍大公开

    CANoe系列培训视频,粉丝提问回答篇#CANoe

    CANoe
    北汇信息POLELINK
    发布于 :2025年03月03日 10:34:10

    DDS传递簇与大型数组的教程

    数据分发服务(Data Distribution Service,DDS)源于美军的数据链,作为网络数据通讯的核心技术,能可靠实时地交换分配群体数据,其传输能力比通常的战术数据链高几个数量级。DDS必须确保在极少的时间和不限制网络中的报告数据容量的条件下,高度可靠地传输数
    的头像 发表于 02-28 17:40 ?660次阅读
    <b class='flag-5'>DDS</b>传递簇与大型数组的教程

    DDS通信中间件——DCPS规范(下)

    DDS通信中间件——DCPS规范(下)本期还是DCPS规范,填上期没有聊完的QoS的坑。本系列文章将包括以下内容陆续更新:1.DDS规范概述2.DCPS规范解读3.DDS-XTypes与IDL解读
    的头像 发表于 11-27 11:47 ?1489次阅读
    <b class='flag-5'>DDS</b>通信中间件——DCPS规范(下)

    Xilinx DDS IP核的使用和参数配置

    用RAM实现一个DDS,从原理上来说很简单,在实际使用的时候,可能没有直接使用官方提供的IP核来的方便。这个博客就记录一下,最近使用到的这个DDS IP。
    的头像 发表于 10-25 16:54 ?4443次阅读
    Xilinx <b class='flag-5'>DDS</b> IP核的使用和参数配置

    dds数字频率是怎么合成的 DDS数字频率信号发生器的设计

    DDS(Direct Digital Synthesizer,直接数字频率合成器)是一种广泛应用于现代电子系统的频率合成技术,它通过数字方式直接产生各种频率的信号,具有高精度、高分辨率和快速频率转换
    的头像 发表于 10-06 15:33 ?1912次阅读

    dds输出频率与时钟的关系

    DDS(Direct Digital Synthesizer,直接数字频率合成器)技术是一种频率合成方法,其输出频率与时钟之间存在密切的关系。 一、DDS基本原理 DDS技术通过编程频率控制字来分频
    的头像 发表于 10-06 15:27 ?2702次阅读
    <b class='flag-5'>dds</b>输出频率与时钟的关系

    DDS通信中间件——DCPS规范(上)

    DDS通信中间件——DCPS规范(上)本篇文章继续和大家分享一下对DDS这套规范的理解。预期本系列文章将包括以下内容陆续更新:1.DDS规范概述2.DCPS规范解读3.DDS-XTyp
    的头像 发表于 09-26 08:08 ?1851次阅读
    <b class='flag-5'>DDS</b>通信中间件——DCPS规范(上)