vETSTStudio - CAPL - CAN报文未使用位

news2024/9/24 17:14:15

目录

ChkStart_PayloadGapsObservation

代码示例

ChkStart_PayloadGapsObservationTx

代码示例

ChkStart_PayloadGapsObservationRx

代码示例


        我们在做CAN&CANFD通信或者CAN&CANFD网络管理的时候,就会测试到DBC中报文各种信号和位的使用状态,今天主要是对dbc中未使用信号位的测试,我们如何完成这种测试呢?下面我就来详细的介绍一下。

        对于某一个报文中未使用位的值是否能够与测试目标需求一致,我们可以使用ChkStart_PayloadGapsObservation函数进行验证;如果是想要检查某个节点中所有的发送报文或者接收报文的未使用位是否与测试目标需求一致,则可以使用ChkStart_PayloadGapsObservationTx、ChkStart_PayloadGapsObservationRx函数,下面我会进行详细的介绍。 

ChkStart_PayloadGapsObservation

功能:检查消息的有效负载间隙和 DLC。
        如果有效负载间隙与指定的默认位值不匹配或 DLC 与数据库的指定 DLC 不匹配,则违反检查条件。

        带有参数 aMessageId 的数字函数/构造函数不能用于 FlexRay。 而是使用带有参数 slotID 的数字构造函数(只能应用于 FlexRay 总线)。对于 FlexRay,仅将有效数据帧和 PDU 识别为通信,忽略空帧和错误帧。

说明:根据所使用的参数类型,如果相应的数据库对象不明确,则只需在调用函数之前设置多总线环境中的适当总线上下文。 

aMessage:存在于dbc数据库中的message报文

defaultBitValue:有效负载间隙必须具有的默认位值

aCallback:该参数必须在仿真节点中指定; 它在测试模块中是可选的。

aMessageId:需要检测的报文ID, 相应的消息应在数据库中定义。

slotID:该数字指定特定的 FlexRay 插槽,它的值必须在 1 到 2047 之间。

cycleOffs:该数字表示基本周期,该值必须小于重复因子,并且范围在 0 到 63 之间,该值与重复因子一起确定 FlexRay 帧的“循环复用”。

cycleRep:该值必须介于 1 到 64 之间,并且是 2 的倍数(例如 1、2、4、8、16、32 或 64),该值与基本周期一起确定 FlexRay 帧的“周期复用”。

channelMask:标识通信控制器的 FlexRay 通道。 值 1 将检查通道 A 上的帧,值 2 将检查通道 B 上的帧,值 3 将检查任何通道 (A/B) 上的帧。

返回值:

        0:无法创建支票且不得引用(数据库中不存在指定的消息对象)
 
        > 0:检查已成功创建,可以使用返回的(句柄)值进行引用。

代码示例

// 检查消息的有效负载间隙
checkId = ChkStart_PayloadGapsObservation(MsgToObserve, 0);
TestAddCondition(checkId);
// 不同动作和等待条件的序列
TestWaitForTimeout(1000);
TestRemoveCondition(checkId);

ChkStart_PayloadGapsObservationTx

功能:检查节点所有 Tx 消息的有效负载间隙和 DLC。

        如果有效负载间隙与指定的默认位值不匹配或 DLC 与数据库的指定 DLC 不匹配,则违反检查条件。

说明:根据所使用的参数类型,如果相应的数据库对象不明确,则只需在调用函数之前设置多总线环境中的适当总线上下文。

aNode:节点必须存在数据库中

defaultBitValue:有效负载间隙必须具有的默认位值。

aCallback:该参数必须在仿真节点中指定; 它在测试模块中是可选的。

返回值:

        0:无法创建支票且不得引用(数据库中不存在指定的消息对象)
        > 0:检查已成功创建,可以使用返回的(句柄)值进行引用。

代码示例

// 检查消息的有效负载间隙
checkId = ChkStart_PayloadGapsObservationTx(NodeToObserve, 0);
TestAddCondition(checkId);
// 不同动作和等待条件的序列
TestWaitForTimeout(1000);
TestRemoveCondition(checkId);

ChkStart_PayloadGapsObservationRx

功能:检查节点的所有 Rx 消息的有效负载间隙和 DLC。

        如果有效负载间隙与指定的默认位值不匹配或 DLC 与数据库的指定 DLC 不匹配,则违反检查条件。

说明:根据所使用的参数类型,如果相应的数据库对象不明确,则只需在调用函数之前设置多总线环境中的适当总线上下文。

aNode:节点必须存在数据库中

defaultBitValue:有效负载间隙必须具有的默认位值。

aCallback:该参数必须在仿真节点中指定; 它在测试模块中是可选的。

返回值:

        0:无法创建支票且不得引用(数据库中不存在指定的消息对象)
        > 0:检查已成功创建,可以使用返回的(句柄)值进行引用。

代码示例

// 检查消息的有效负载间隙
checkId = ChkStart_PayloadGapsObservationRx(NodeToObserve, 0);
TestAddCondition(checkId);
// 不同动作和等待条件的序列
TestWaitForTimeout(1000);
TestRemoveCondition(checkId);

        以上3个是我们常见的3种类型的未使用位的检测,包括:发送节点的未使用位检测、接收节点的未使用位检测以及特定报文的未使用位的检测;这就涵盖了我们所有的需要检测的情况,只需要我们将需要检测的节点或者ID只需要加入到检测事件中,然后将默认值填入即可,这样就能够检测我们需要的未使用位的检测,接收的报文将会与dbc对比检测。然后给出检测结果。

variables
{
  dword checkId;
}

void MainTest ()
{
  BGCheck_UnusedBits();
}

testcase BGCheck_UnusedBits()   // 报文的未使用位检测
{
  checkId = ChkStart_PayloadGapsObservation(message_1,0); // 检查报文的未使用位值是否为0,函数的第一个参数为需检查报文的名称,第二个参数为未使用位期望的数值
  TestAddCondition(checkId);//添加检测条件,若报文未使用位的数值不满足要求,则会在报告中记录下来
  TestWaitForTimeout(10000);  //持续检测10s
  TestRemoveCondition(checkId);//移除检测条件
}

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

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

相关文章

从数据采集到智能控制,探寻锂电卷绕机的自动化之路

在锂电池制造过程中,卷绕机被视为关键设备之一。它负责将正负极材料和隔膜按照设计要求卷绕成电芯,是确保锂电池性能和质量的重要环节。为了提高生产效率、确保产品质量,锂电池行业越来越注重引入智能化技术和设备。 图.锂电池生产&#xff0…

spring boot+MySQL福聚苑社区团商品购系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9

尚硅谷Linux学习笔记

文章目录 1. Linux概述2. Linux目录结构3. Linux操作命令3.1 vim编辑命令3.1.1 一般模式3.1.2 编辑模式3.1.3 指令模式 3.2 网络相关命令3.3 系统管理3.4 帮助命令3.4.1 man 获得帮助信息3.4.2 help 获得 shell 内置命令的帮助信息3.4.3 常用快捷键 3.5 文件目录类3.5.1 pwd、e…

ROS:rosbag的使用

目录 一、背景二、概念及作用三、rosbag命令行四、rosbag程序实现4.1C实现4.2Python实现 一、背景 机器人传感器获取到的信息,有时我们可能需要时时处理,有时可能只是采集数据,事后分析,比如: 机器人导航实现中,可能…

基于 BPF 的 Linux 系统自动调优工具:Oracle 开发了 “bpftune”

导读Oracle 开源了一个基于 BPF 的 Linux 参数自动调优工具 “bpftune”,这是一个自动配置器,可以监控 Linux 系统的工作负载并自动设置正确的内核参数值。 Oracle 开源了一个基于 BPF 的 Linux 参数自动调优工具 “bpftune”,这是一个自动配…

U盘写流程USB协议抓包分析

U盘写流程USB协议抓包分析 因好奇于操作系统在对U盘这个块设备是如何进行读写传递数据包,笔者通过抓包测试,做了一个简单分析。安装了wireshark的usbPcap即能抓取主机USB接口上的usb包。 A、基本包信息分析 让我们先从读流程开始分析一下USB包的包结构…

音视频技术开发周刊 | 301

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 微软、谷歌、亚马逊,打响大模型时代的云战争 过去数月,云巨头们砸下真金白银,研发大模型、战略投资、自研 AI 芯片……大模型的时代方兴…

ArcGIS Pro中的模型构建器演示

前言 ArcGIS Pro的模型构建器在功能上相较于大致没有什么改动,主要是界面上变得相对漂亮,流程中使用了一些半透明的效果,相较于arcmap中的模型构建器,可以说是颜值进化很大了。 实战 首先我们来看一下演示效果,怎么样,是不是很方便 先建立一个模型 对于模型构建器我一直…

java main 方法的理解

文章目录 理解命令行参数用法举例IDEA工具配置参数(了解) 理解 由于JVM需要调用类的main()方法,所以该方法的访问权限必须是public,又因为JVM在执行main()方法时不必创建对象,所以该方法必须是static的,该…

python爬虫_selenuim登录个人markdown博客站点

文章目录 ⭐前言⭐selelunim⭐博客站点💖 自动填充账号密码登录 ⭐结束 ⭐前言 大家好,我是yma16,本文分享python使用selenuim登录个人markdown博客站点。 该系列文章: python爬虫_基本数据类型 python爬虫_函数的使用 python爬虫…

接口中的默认方法和静态方法

接口中的默认方法和静态方法 接口中的默认方法 package cn.tedu.inter; //1.定义接口 public interface Inter1 {/*1.接口中默认方法的修饰符public可以省略*///2.定义接口中的默认方法public default void play(){System.out.println("我是接口中的默认方法,…

OSPFv2基础03_综合实验

目录 1.创建OSPF进程 2.创建OSPF区域 3.使能OSPF 4.创建虚连接(可选) 5.OSPF常用命令 6.实验配置步骤 7.实验效果 1.创建OSPF进程 OSPF是一个支持多进程的动态路由协议,OSPF多进程可以在同一台路由器上运行多个不同的OSPF进程&#x…

ES6基本知识点

目录 1.对象优化 1.1 新增API 1.2 object.assign方法的第一个参数是目标对象,后面的参数都是源对象 1.3 声明对象简写 1.4 对象的函数属性简写 1.5 对象拓展运算符 2.map和reduce 2.1 数组中新增的map和reduce方法 3 promise 3.1 promise封装异步操作 4.模…

C# PaddleInference OCR 验证码识别

说明 C# PaddleInference OCR 验证码识别 自己训练的模型,只针对测试图片类型,准确率99% 效果 项目 VS2022.net4.8OpenCvSharp4Sdcb.PaddleInference 测试图片 代码 using OpenCvSharp; using Sdcb.PaddleInference.Native; using Sdcb.PaddleInfer…

mac笔记本安装java环境以及idea设置

系列文章目录 文章目录 系列文章目录安装java环境一、安装jdk二、下载安装IntelliJ IDEA三、安装maven四、安装git五、安装tomcat六、安装appenv配置文件七、有关idea的设置1、快捷键设置2、新建类的命名3、字体的大小,有关菜单栏的大小4、框内的tab最多能有多少个窗…

【2 beego学习 - 项目导入与项目知识点】

0 项目导入 1 在英文路径下新建一个同名的项目,拷贝其他数据到这个文件 bee new 同名项目名 cd 同名项目名 go mod tidy go get -u -v github.com/astaxie/beego go get 同名项目名/models2 拷贝部分的项目文件到新目录 bee run 运行的其他错误,按照提示安装文件 1 后端获取…

微软MFC技术中的消息队列及消息处理

我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊微软MFC技术中的消息队列及消息处理。 MFC应用程序中由Windows 系统以消息的形式发送给应用程序的窗口。窗口接收和处理消息之后,把控制返回给Windows。Windows系统在同一时间可显示多…

HashMap底层原理:数据结构+put()流程+2的n次方+死循环+数据覆盖问题

导航: 【Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线MySQL高级篇设计模式常见面试题源码_vincewm的博客-CSDN博客 目录 一、底层 1.1 HashMap数据结构 1.2 扩容机制 1.3 put()流程 1.4 HashMap是如何计算…

电话号码的字母组合问题

解题思路: 当我第一眼看到这题的时候,我直接举出来一个列子“258”,直接套用多重for循环遍历可以罗列出来,但是根据数字组合的长度不能确定for循环的多少(除非把所有for循环个数情况都罗列一遍) 所以只能…

几种常用接口调用方式介绍

API,全称叫做Application Programming interface,也就是应用程序接口,API是一些预先定义的函数,我是学Java的,当我要使用这些函数的时候,便可以直接调用Java API,不用去访问源码,也不…