DDS通信在CANoe中的仿真与测试

DDS (Data Distribution Service, 数据分发服务)是一种基于数据的通信中间件标准,目的是建立分布式系统的高质量的数据通信。

DDS以“全局数据空间”的形式表示数据,能够在正确的时间将正确的信息高效、稳健地传输到正确的地方。因此,广泛应用于汽车、医疗、机器人和智能交通等不同行业。

   

图 1  DDS应用在不同行业

DDS重要概念

在介绍DDS在CANoe中的应用之前,先来了解一下DDS的重要概念。

1. Domain(域):域是DDS的基本结构,是一个通信平面,连接所有能够互相通信的应用程序的分布式概念,由域名(Domain Name)和唯一Domain ID标识。

2. Domain Participant(域参与者):定义域(Domain)及主题(Topic)。

3. Publisher/Subscriber(发布者/订阅者):数据发送/接收的终端,发送数据的一方称为Publisher,接收数据的一方称为Subscriber。

4. Topic(主题):定义分发的数据,连接Publisher和 Subscriber的桥梁,标识传输的数据类型和名称。

5. DataWriter/ DataReader(数据写入器/数据读取器):DataWriter基于绑定的Topic,由应用程序发送数据的实体,1个DataWriter隶属于1个Publisher;DataReader访问Subscriber收到的数据,1个DataReader隶属于1个Subscriber。DataWriter/DataReader与Topic有一一对应关系。

6. QoS(Quality of Service服务质量):是控制DDS服务的特性。Topic, DataWriter,  DataReader, Publisher, Subscriber以及Domain Participant各实体均可配置其各自的QoS规则,这些QoS互相存在兼容性检查。

     

图 2  DDS重要概念

随着 DDS 技术在汽车电子领域的广泛应用,Vector公司为了满足客户需求,从 CANoe 16 SP3版本开始引入对 DDS 仿真、分析和测试的支持,CANoe 19版本开始将DDS设为CANoe的扩展选项包,在该扩展选项包下可以支持仿真Publisher/Subscriber、配置QOS策略、通过Trace窗口监控和分析DDS报文等功能。下面将以CANoe 19 SP2中的DEMO工程DDS Basic Medical为例,介绍DDS在CANoe软件中的应用。

DDS的DEMO工程示例

一、 该示例展示了如何使用 CANoe 对DDS参与者进行建模,从而能够接收和发送DDS消息。

             

                                                 图 3  DDS Basic Medical工程

二、 在仿真模式下运行该工程,信号发生器模拟的数据通过传感器(Sensor)发送,监控器(Monitor)接收到数据,数据清晰地显示在Trace窗口、图形窗口以及监控面板中。

 

                                               图 4 DDS Basic Medical工程具体信息

三、 该工程的相关数据都在vCDL(Vector Communication Description Language)数据库文件中定义,在整个DDS通信配置中,vCDL是CANoe Communication Concept中描述通信对象的关键语言,接下来结合DDS Basic示例工程中的vCDL对建模过程进行说明:

1. 通过import module"DDS"语句导入DDS模块,然后基于该模块进行DDS通信建模。

2. 定义结构体作为Topic(示例中 HealthData),结构体内部可使用一些常规数据类型,如整型、浮点型、布尔型、字符串、结构体、数组等。

3. 定义接口(IMonitor):在接口中,首先使用关键字consumed data声明该接口数据类型是"HealthData"的数据,配置数据属性。

4. 将接口实例化为DDS Subscriber (示例中 Monitor),并设置其QoS规则。

5. 使用关键字reverse将接口实例化为DDS Publisher(示例中Sensor),并设置其QoS规则。

                                            

图 5  vCDL建模过程

若数据类型已在IDL(DDS的接口描述语言)中定义,可参考下图在vCDL中使用对应的数据类型:

                         

                                                          图 6  IDL与vCDL转换对应关系

创建DDS仿真模型

在了解了上述示例后,您可能会想知道:如何从头开始创建一个完整的DDS工程?我们将通过一个具体的案例——构建DDS DataWriter的仿真模型,来详细说明。

                                  

图 7  构建DDS DataWriter的仿真模型

在这个案例中,为了测试 Monitor(SUT)的数据接收和处理能力,使用CANoe仿真DDS DataWriter(Sensor),负责发布名为"HelloWorldData Msg"的Topic数据。

1. 在CANoe中,使用Distributed Objects(DOs)建立DDS通信。

                       

                                             图 8  Distributed Objects(DOs)建立DDS 通信

2. 基于Communication Setup仿真模式,建立vCDL数据库文件 

注:如果已经有IDL文件,CANoe中附带的插件可以将IDL直接转换成vCDL文件。

              

图 9  新建vCDL文件

3. 编辑文件如下图所示,DDS DataWriter(Sensor)和 DDS DataReader(Monitor)具有相同的Domain ID 、Topic 名称、数据类型和兼容的QoS时才能互相通信,若与真实的SUT通信,需通过属性指定CANoe端使用的网卡IP地址。配置完成后可以通过Communication Setup中的Load Data Source导入。

                                            

图 10  编辑vCDL文件

4. 通过网线或Vector Ethernet Hardware连接SUT的网络接口和PC端网络接口,并修改PC端网口IP地址,配置其与SUT的IP地址在相同网段内。

注:CANoe 16/17 版本暂不支持使用Vector Ethernet Hardware(如 VN5650)作为DDS通信硬件。

           

图 11  物理连接

5. Communication Setup中会自动识别vCDL文件中实例化的对象作为DDS Participants, Participants的默认状态为On/Simulated(CANoe),用户可根据需求将不需要CANoe仿真的SUT状态设置为Off,由于本案例没有真实SUT,所以Sensor与Monitor都设置为On/Simulated(CANoe)。

                                                          图 12  设置Participants状态

6. 启动工程后,发送Topic数据,点击Simulation->Application Panel来激活 Sensor的Application Panel。接着,选择所需Topic并设置相关参数,点击 Apply 即可发送。

           

图 13  通过Application Panel发送数据

除此之外,也可以通过添加CAPL文件,编辑脚本发送。在Communication Setup窗囗点击Application Models->Add添加.can文件。

                       

图 14  添加.can 文件

编辑.can文件,在Symbol Explorer窗口中拖拽DO数据成员到CAPL编辑界面,并使用特殊符号“$”对其进行赋值操作。

图 15  编辑.can文件

7. 打开Trace窗口,可以看到DDS报文的具体信息

                             

图 16 DDS报文信息

上面是构建DDS DataWriter的过程,如果想要构建DDS DataReader(如下图所示), 验证 Sensor(SUT)发布的数据,使用CANoe仿真DDS DataReader(Monitor),负责接收名为"HelloWorldData Msg"的Topic数据。方法与构建DDS DataWriter大致相同。

                         

图 17  构建DDS Data Reader的仿真模型

通过Distributed Objects(DOs)建立DDS通信后,编辑vCDL以调整DDS通信模型,具体包括修改数据类型、Domain ID、DDS Topic名称以及QoS规则设置。随后的物理连接及设置Participants状态等操作,与构建DDS DataWriter时的流程一致。完成上述配置后,即可运行工程,并在CANoe中接收并观测数据。

                                  

图 18  编辑vCDL文件

以上就是有关DDS在CANoe软件中应用的相关内容,期待在未来的使用中,会有更多的应用场景!如果您有任何问题,都欢迎随时联系我们的支持团队:support@dotrustech.com,我们竭力为您解答!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值