Vector - CANoe - VCDL与SomeIP

目录

一、基础介绍

二、vCDL介绍

1、vCDL工程创建

2、 vCDL编辑器关键字介绍

3、创建命名空间Datatype

接口示例

4、创建命名空间ICalculate

5、创建命名空间Participants


一、基础介绍

        SomeIP作为车载以太网一个重要的组成部分,因为它的测试也是我们作为总线测试工程师一定要攻克的一个重要知识点;CANoe中主要在simulation setup和communication setup中实现SomeIP通信的方式;并且支持多种格式的数据导入,例如:arxml、vCDL、vCODM等多种数据格式,本篇文章主要介绍VCDL实现SomeIP数据格式。

        vCDL 是 Vector Communication Description Language 的首字母缩写,用于描述 CANoe 中的通信对象,是 Vector 推荐使用的一种语言。
        vCODM 是 Vector Communication Data Model 的首字母缩写, 该类型文件伴随着 CANoe工程一起自动生成,可以使用 Model Editor 编辑。

二、vCDL介绍

1、vCDL工程创建

        Tools -> vCDL Editor -> Vector Tools Environment

        作为一个测试工程师基本都是使用Vector自带的这个vCDL编辑工具,不过据说也是有其他的vCDL文件编辑工具,大家可以根据自己的需求选择编辑工具。

2、 vCDL编辑器关键字介绍

ElementFontExample
KeywordBlue monospaceservice
Data TypeDark blue monospaceuint16
String LiteralDark red monospace"string"
Numeric LiteralOrange monospace2.0e-10
CommentGreen monospace//comment
Attribute KeyGray monospace,italicsunit
Binding NamespaceGray monospace,italicsAbstract
Encoding Formula VariableBrown monospace,italicsx
SeparatorsBlack monospace.:
OperatorsBlack monospace+-*/
BracketsBlack monospace{}()<>
IdentifiersBlack monospaceEngine

3、创建命名空间Datatype

        1)使用namespace关键字声明一个命名空间

        2)复用结构体StateType和接口ServiceInterface归属在同一命名空间Datatype

        3)声明结构体采用关键字struct,定义4个变量基础数据

接口示例

//DataTypes下包含结构体 (struct) 和接口 (terface)
namespace DataTypes
{//关键字struct声明结构体stateTypestruct stateType{//结构体stateType由4个int32的数据组成dword AddCount;int64 SubstractCount;int32 MultiplyCount;int32 DivideCount;}//关键字interface接口,定义服务接口interface ServiceInterface{//关键字event声明事件,事件env的数据类型是结构体stateTypeevent StateType env;//关键字field声明字段,字段F1d的数据类型是uint32field uint32 Fld://定义method方法,采用定义函数的方式声明了Add,Substract,Multiply,Divide//函数内in表示输入参数,out表示输出,不指定in/out则默认是invoid Add(int32 operand1, int32 operand2, out float result);void Substract(int32 operand1, int32 operand2, out float result);void Multiply(int32 operand1, int32 operand2, out float result);void Divide(int32 operand1, int32 operand2, out float result);}
}

4、创建命名空间ICalculate

        1)使用namespace关键字声明一个命名空间,用于指定服务的命名空间

        2)服务 Calculate 采用 service 关键字声明,必由服务接口实现,并指向 Datatypes 中的接口ServiceInterface。

        3)服务中需要提供通信端点的信息,通信端点采用关键字 provider 和 consumer 声明,即服务的提供者和消费者。 此示例中, 服务 Calculate 的提供者和消费者分别为 server 和 client。

        4)服务 Calculate 使用 refine 关键字引用接口 ServiceInterface 中的事件、字段和方法,事件组采用关键字 eventgroup 定义, 此处定义 env 和 fld 为同一事件组。

//ICalculate下包含服务
namespace ICalculate
{//[]的内容用于定义属性,此处声明了服务的属性version为0.1和serviceID为1666[version=0.1, serviceId=1666]//关键字service声明服务Calculate,Calculate使用冒号指向使用的服务接口service Calculate:DataTypes::ServiceInterface{//关键字provider声明服务的提供者 (名为server),并以[]声明server的IP端口信息[simulated=true,udpEndpoint="192.168.1.1:40000",multicastEndpoint="224.0.0,22:40000",sdMulticastEndooint="239,0.0,1:30490", mac="20:00:00:00:00:00", instanceId=1]provider server;//关键字consumer声明服务的消费者 (名为client),其订阅的事件组名为envGrp1, clientid=1[simulated=true subscribedEventGroups=envGrpl, udpEndpoint="192,168,1,10:40001",multicastEndpoint="224.0.0.22:40001", mac="20:00:00:00:00:01", sdMulticastEndpoint="239.0.0.1:30490",clientId=1]consumer client;//关键字refine可以引用对象或者端点,此处引用函数原型,并赋予methodId的属性refine Add[methodId = 201]:refine Substract[methodid = 202]:refine Multiply[methodid = 203];refine Divide[methodId = 204];//引|用事件env,设置属性eventID为101,引用字段Fld,设置对应的ID属性refine env [eventId=101];refine Fld [getterId =301,setterId=302,eventId=303];//关键字binding将通信对象绑定到SOME/IPbinding SOMEIP{//关键字eventgroup用于定义事件组,此处定义groupId厘性为17的envGrp1事件组,包含env和Fld[groupId=17,multicastThreshold=5]eventgroup envGrp1 = env,Fld;}}
}

5、创建命名空间Participants

        1)使用namespace关键字声明一个命名空间,关键字participant 声明, 包含一个或多个通信端点。

        2)示例创建名为 Consumer 和 Provider 的参与者, 分别引用来自 ICalculate 下服务 Calculate 的通信端点 client 和 server。

//Participants (namespace) 组下包含Consumer和Provider (participant) 的参与者
namespace Participants
{//关键字participant参与者,用于声明参与者,对ECU或SWC的通信端点进行分组//此处声明名为Consumer和Provider的参与者participant Consumer{//Consumer包含端点clientICalculate::Calculate.client}participant Provider{//Provider包含端点serverICalculate::Calculate.server}
}

        以上对于vCDL进行简单的介绍,如果需要更进一步了解,大家可以评论区讨论!!!

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

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

相关文章

Socket--七层协议与Socket原生框架

Socket 一、网络七层协议 / OSI 七层模型 2.1 物理层 解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。 它的主要作用是传输比特流(就是由1、0转化为电流强…

C#中的HashTable和Dictionary之间的区别

面试基础&#xff1a;C#中的HashTable和Dictionary之间的区别 HashTable和Dictionary都是用于存储数据的数据结构的类型。这两个数据结构都将存储的数据保存为键值对。

视频融合平台EasyCVR级联后上级平台播放失败的问题排查与优化

EasyCVR视频融合平台基于云边端智能协同架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制等视频能力与服务&#xff0c;可支持多协议、多类型的海量设备接入与分发。 …

TPS61021A 具有 0.5V 超低输入电压的3A升压转换器

1 特性 1 • 输入电压范围&#xff1a;0.5V至4.4V • 启动时的最小输入电压为0.9V • 可设置的输出电压范围&#xff1a;1.8V到4.0V • 效率高达91%&#xff08;VIN2.4V、VOUT3.3V 且IOUT 1.5A 时&#xff09; • 2.0MHz 开关频率 • IOUT > 1.5A&#xff0c;VOUT 3.…

JavaWeb(3)——HTML、CSS、JS 快速入门

一、JavaScript 运算符 • 赋值运算符&#xff08; &#xff09; 赋值运算符执行过程&#xff1f; 将等号右边的值赋予给左边, 要求左边必须是一个容器 出现是为了简化代码, 比如让 let age 18 &#xff0c;age 加 2 怎么写呢 let age 18age 2console.log(age)age * 2con…

Android Studio Flutter 开发配置

近来比较闲&#xff0c;就研究下Flutter 开发&#xff0c;在此记录下studio 配置过程&#xff0c;时间是2023.7.19 在 Windows 操作系统上安装和配置 Flutter 开发环境 1.首先下载 Flutter SDKhttps://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/…

STM32MP157驱动开发——设备树知识

文章目录 概述开发板中设备树文件目录结构设备树文件语法设备树文件参考实例&#xff1a;Devicetree 格式DTS 文件的格式node 的格式properties 的格式 dts 文件包含 dtsi 文件常用的属性#address-cells 、#size-cellscompatiblemodelstatusreginterruptgpio属性name( 过时了&a…

二、DDL-1.数据库操作

一、查询 1、查询所有数据库 show databases; MySQL自带的默认的数据库有四个&#xff1a; 二、创建 1、创建一个新的数据库itcast&#xff08;不区分大小写&#xff09;&#xff1a; create database itcast; 查询所有数据库&#xff1a;多了itcast 2、再创建同名的数据库…

[高通平台][WLAN] IEEE802.11mc 介绍

IEEE802.11mcWi-Fi协议(即Wi-FiRound-Trip-Time,RTT),利用此项技术及可以进行室内定位,因此为了使用此项技术,只有在硬件支持的设备上,应用才可以使用最新的RTT API以测量附近具有RTT功能的Wi-FiAP。 单面RTT :  距离是通过发送的分组和接收到的ACK之间的时间差来计算的…

【广州华锐互动】发动机零件拆装VR虚拟学习平台

随着科技的飞速发展&#xff0c;虚拟现实(VR)技术正在各行各业中发挥越来越重要的作用。在工业教育领域&#xff0c;发动机零件拆装VR虚拟学习平台为学生提供了一种全新的学习方式&#xff0c;使他们能够在安全、低成本的环境中进行实践操作&#xff0c;从而提高技能&#xff0…

数据结构--图的存储邻接表法

数据结构–图的存储邻接表法 邻接矩阵&#xff1a; 数组实现的顺序存储&#xff0c;空间复杂度高&#xff0c;不适合存储稀疏图 邻接表&#xff1a; 顺序链式存储 邻接表法&#xff08;顺序链式存储&#xff09; //边/弧 typedef struct ArcNode {int adjvex; //边/弧指向哪个…

硬件学习笔记(器件篇)—— 铝电解电容(二)

文章目录 铝电解电容的基本参数1.容量和耐压2.封装3.损耗角&#xff1a;损耗角正切值3.工作温度与使用寿命&#xff08;简述&#xff0c;后面会单独讲&#xff09;4.漏电流5.最大纹波电流&#xff08;是一个有效值rms&#xff09; 结合绿宝石的一个手册分析1.使用温度范围2.电容…