CANoe中的AutoSequence

简单介绍:

AutoSequence是一种简单的,快速的类似脚本的一个可视化自动脚本插件。使用起来非常方便,甚至在很多时候能够代替一些简单的脚本。

1:Automation工程的创建

(1.1)打开Automation插件,双击这个插件按键

(1.2)出现以下界面:

可以看到,出现了三种类型的AutoSequnences:

(1)Visual Sequences  可视化自动序列

   (2) Macros  宏编程序列

(3).NET Snippet .Net代码段

1.2.1 VisualSequence

首先看最简单和最容易上手的VisualSequence

框1内的从左到右依次是,

* NewSequence(新建Sequeence),

* ImportSequenceFromFile(从文件中导入新的Sequeence)

* RemoveSelectSequence(出去选中的Sequence)

* EditSelectSequences(编辑选中的Sequence)

框2上图没有截图截全,我又截图了全部

序号条目图标说明补充说明
1State(Sequence的状态)此选项其实可以分为两个部分,第一个部分可以理解为序列
执行的状态,running stopped paused。这里是指示序列的运行状态
incorrectFile。。。则是指示序列存在错误
2Active
实际上就是
使能框选

对号表示Active
没有对号表示UnActive

使用鼠标单击,可选择使能或者关闭这个Sequences。这是
序列运行时,Active勾选是序列能够执行的必要条件
3Name

Sequences的名称

双击该处,可以自定义名称(建议根据功能,取名,且最好
是全英文名称,最好执行驼峰命名法,即首字母大写)
4控制按键

一共三个按键:
start stop pause

这里的三个状态图标很好理解,需要理解的是。pause(暂停)
和stop的区别。pause是暂停,

start开始时,sequence
还会从暂停的地方继续执行。

stop就会停止,再次start时,

就会从序列头部开始,

重新开始执行

关于pause和Stop的区别
可以用单片机中的程序计数器来理解,pause按下,程序计数器会记住程序运行到的位置,而stop则会将程序计数器清零。
5AutoStart

是指,在主界面打开start时,

序列会自动开始执行

6Repetion

有两个选项,1:once只发送一次
2:periodic周期发送

目前 了解的这些,并不能让我们立即写sequence,并应用到实际的工程中,于是下一节,我们需要详细了解sequence编写过程中的语法规则

(2)sequence编写过程中的语法规则(重点)

2.1 进入Edit界面

选择右键单击,出现选择界面,单击Edit

2.2编辑界面介绍

出现如下界面:

我把菜单栏,分为三个部分,

2.2.1是控制sequence运行控件

**第1部分,是控制sequence运行,暂停,停止。和上一节说的差不多。需要注意的是,从左往右数,第二个带个小脉冲的图标。系统自带解释(stepwise execution of seauence only avaliable in debug Mode),即该图标只能在Debug模式下使用。

2.2.2sequence循环控制及特殊控件

**第2部分,依次是设置sequence是否自动循环,是否在Measurement开始时,自动开启运行,   也可理解为是否和工程开关绑定。

第三个图标,类似于放平的8字型。这个功能比较奇特:他是针对几个特定的命令的。下面会介绍,大家留意这个即可。

2.2.3编译及循环控制控件

**第3部分,从左往右,

第一个图标非常重要,它类似于编译器中的编译,我们写完脚本后,点击一下这个图标,他就会检查脚本写的有没有问题。如果有错误会给出相对应的提示。

第二个图标,是开启Debug模式,开启时注意会有一个蓝色边框。注意一般情况下,3部分第一个图标,就能满足大部分检查要求。因为sequence一般情况下不会太复杂,行数不会太多,也应该不会有很复杂的逻辑。但是如果很复杂的情况下,如果不能解决问题,就需要开启Debug模式,并结合stepwise(分步运行),且必要是还可以打断点(insertBreakPoint)。

第三个图标是配置界面:

1:execution(执行模式),有两种执行模式

1:Standard标准运行模式。该序列将在模拟环境中执行,这里有一个注意点,本人暂时也没有搞明白,如果在配置项选择Standard标准格式,在主界面把总线类型设置为RealBus也是可以执行的

2:OnBoard :车载,机载模式,是指该序列将在Vector硬件(VN1630/VN7600)上执行。也就是我们工程师经常使用CANoe或其他设备,放在汽车上,执行脱离计算机使用VN1630/VN7600单独接在汽车上运行的情况。在这种模式下,定义的等待和循环时间非常精确。

但是注意也有缺点:

**1)因为脱离了计算机,很多Command(命令)都只能部分支持或不支持。

**2)不能支持signalLayer(不能使用信号交互层),通俗的理解就是不能再使用,关于对信号执行直接操作的命令,如设置信号值,在直接发送信号值等操作。

**3)commandConfiguration配置

其实这个配置比较多余,他对应的是一个wait for key命令行,如下图

点击红星处的...,就可以直接设置按键。这个命令行是一个相当于一个中断,当Command 执行到此处时,就进入“暂停”状态。直到指定的按键被按下。才继续执行。

注意点,如果一个sequence中存在多个wait for key那么,最后一次配置的按键会覆盖,前一个

如上图中的两命令,第一个配置为按键“1”,第二个配置成“2”,实际运行sequence时,需要按两次“2”,而不是按一次“1”,再按一次“2”。需注意!!!

2.2.4sequence文件的导入和导出

分别对应3部分的第4和第5个按键,单击此处按键。看看输出和输入文件的格式如何

支持VisualSequences(.vsq)

Generator block send list(gen)

两种格式支持直接导入。

注意:导出时只支持vsq格式。

2.2.5显示和关闭comment

也就是这个按键,管理者comment是否显示。很简单

3具体语法的介绍和格式说明

3.1 格式说明

先看下图:一共分为6个部分

语法和格式的核心是comment,每条语句都被划分为6个部分,不是每个语句都需要设置这6个部分。分别为Command(命令),Object(对象),Operate(操作符),Operand(操作数),wait【单位:ms】 Comment(注释)

3.2语法说明

我将所有的命令分为8类;

3.2.1Send类

其中Send类,共有4种Command

**1)SendCANErrorFrame:输出CAN错误帧

先选择发送错误帧格式。然后选择通道。如果需要等待,则设置等待时间

**2)sendCANMessage发送

此选项需要DBC文件支持,发送DBC文件中定义的报文。而DBC文件中定义的报文早已经设定好其所在通道,和周期,长度等,不需要在语句中额外设定。

**3)SendRawFrame 发送原始值帧

这句话的意思是发送任意帧,这个帧的格式都需要在这个语句中定义

从图中可以看出,这个报文从ID到帧类型,发送通道,到数据都是可以我们自己定义的。

注意3位置处:只能选择=。如果不选择,那么默认数据段全部为0。

4位置处:如果选择CANfd则最大支持64Byte,如果选择传统CAN最大只能发送8Byte。

另外注意,发送的RawFrame的帧长度会自动根据所发送字长自动调节。

**4)SendGMLANFrame

发送GMLAN帧,这个暂时不需要做过多了解,因为从下图中可以看出,此发送命令,需要在DBC文件中定义GMLAN帧,不然会报错。

3.2.2 wait类型指令

**1)wait等待指令,后面带一个时间参数,wait+时间参数(ms为单位),该语句实现等待

需要注意的是,这个参数必须是>0的整数。且最大数值为2,147,483,647。

注意wait命令1后,2处也设置参数,也会起作用,上图语句等待时间为2000ms。

**2)wait For

此命令后的object(对象)限定为系统变量,该系统变量+操作符operator+操作数(operand)构成了一个真值表达式,如果此表达式为1(真True),则语句通过,不然则会一直等待。

WaitFor命令,支持的大多是关系运算符,一共是6个常规(此处常规指的是一般编程语言都支持的关系运算符)关系运算符,另外两个为sequence特有的运算符 in range outside range运算符。

in range 后的operand格式如 :1;2这种格式。且数字格式要与Object函数保持一致。

**3)wait for CanFrame

先看结构

wait for'CanFreme+DBC中已经定义的帧。完整语句的作用是只要该帧出现,就满足条件,下一步,立即执行下一步操作。

**4)wait for Can raw Frame 结构和wait for'CanFreme语句结构一样,只不过Object是可以用户自己定义的。

**5)wait for Can GMLAM Frame 需要在DBC文件里,定义GMLAN文件,暂时不怎么了解。

3.2.3 条件判断类

if else 以及elseif 和endif,一共4个为条件判断类。

**1)if 对象为signal和sysvar

operator基本为关系运算符,+in range +outside range

基本格式如下,需要注意的是在sequence中,每一个if必须有一个Endif,与之匹配,elseif则不需要

else 也总是最近的if配对。

3.2.4 循环控制类指令

repeat和repeatEnd,break

**1)repeat,如图所示repeat和repeatEnd共同构成了一个循环体object为循环次数,用户可自定义。

这里循环有一个问题,就是只能固定循环次数,需要额外的操作。

**2)break一般是配合if判断语句,一起使用在循环体内部,用来跳出循环。如下图所示

3.2.5 BlockReplay函数

回放模块

3.2.6map信号映射

将系统变量或环境变量或signal映射到其他系统变量、环境变量。需要注意的是,operand只能是系统变量或环境变量。

映射之后,注意需要取消映射。

3.2.7Exit离开

此命令是终止sequences运转。无视自动循环是否开启

无任何参数

3.2.8set类命令

set、setCanCyclicFrame、setCanCyclicFrame

**1)首先看set命令

Object可以是Signal和Variable。

Operator有如下符号

** = 赋值表达式

**inc 自增,相当于++

**dec 自减 相当于 --

**2)首先看set CAN CyclicFrame,对象只能是DBC文件中定义的帧

Operator 有下图几种,CycleTime(ms)设置循环时间、和stop停止按键

当Operator是cycle time时 ,Operator是设置循环发送的时间。需要停止时则使用stop函数。

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

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

相关文章

【LLM 论文阅读】NEFTU N E: LLM微调的免费午餐

指令微调的局限性 指令微调对于训练llm的能力至关重要,而模型的有用性在很大程度上取决于我们从小指令数据集中获得最大信息的能力。在本文中,我们提出在微调正向传递的过程中,在训练数据的嵌入向量中添加随机噪声,论文实验显示这…

开源C语言库Melon:Cron格式解析

本文介绍开源C语言库Melon的cron格式解析。 关于 Melon 库,这是一个开源的 C 语言库,它具有:开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。 Github repo 简介 cron也就是我们常说的Crontab中的时间格式,格式如…

2024年1月9日学习总结

目录 学习目标学习内容联邦学习基础:why, what, howwhy?what?how? 联邦学习的例子——CIFAR-10数据集(分类问题)1、import libararies2、hyper-parameters3、加载并且划分数据4、创建神经网络模型5、helper…

JMeter之Windows安装

JMeter之Windows安装 一、安装JDK二、安装JMeter1、下载JMeter2、配置环境变量3、验证JMeter 三、扩展知识1、汉化 一、安装JDK 略 二、安装JMeter 1、下载JMeter 官网地址:https://jmeter.apache.org/download_jmeter.cgi 放到本地目录下 2、配置环境变量 变量…

2024PMP考试新考纲-【过程领域】近期典型真题和超详细解析

前面的文章,华研荟讲解了三十多道PMP新考纲下的【人员People领域】的近年真题,这篇文章开始为大家分享【过程Process领域】的新考纲下的真题,进一步帮助大家体会和理解新考纲下PMP的考试特点和如何应用知识来解题,并且举一反三&am…

thinkphp学习06-连接数据库与模型初探

新建数据库 CREATE DATABASE tp6stu01 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;创建表和数据 DROP TABLE IF EXISTS tp_user; CREATE TABLE tp_user (id mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 自动编号,username varchar(20) CHARACTER SET utf8 COLL…

Web APIs知识点讲解

学习目标: 能获取DOM元素并修改元素属性具备利用定时器间歇函数制作焦点图切换的能力 一.Web API 基本认知 1.作用和分类 作用: 就是使用 JS 去操作 html 和浏览器分类:DOM (文档对象模型)、BOM(浏览器对象模型) 2.DOM DOM(Document Ob…

SpringBoot-开启Admin监控服务

SpringBoot-Admin是一个用于管理和监控SpringBoot应用程序的开源项目。它提供了一个易于使用的Web界面,可以实时监控应用程序的健康状况、性能指标、日志和环境配置等信息。通过Actuator模块来收集和暴露应用程序的监控信息,使用Web Socket或者Server-Se…

C#PDF转Excel

組件 Spire.Pdf.dll, v7.8.9.0 【注意:版本太低的没有此功能】 在Visual Studio中找到参考,鼠标右键点击“引用”,“添加引用”,将本地路径debug文件夹下的dll文件添加引用至程序。 界面图: 1个label,1…

Uibot (RPA设计软件)微信群发助手机器人————课前材料二

(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~) 紧接着小北的前两篇博客,友友们我们即将开展新课的学习~RPA 培训前期准备指南——安装Uibot(RPA设计软件)-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/1…

【QML COOK】- 005-粒子系统(ParticleSystem)

1. 编辑main.qml import QtQuick import QtQuick.ParticlesWindow {width: 800height: 800visible: truetitle: qsTr("Hello World")color: "#000000"MouseArea {id: mouseAreaanchors.fill: parentonClicked: {hahaEmitter.pulse(2000)}}ParticleSystem {…

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(上)准备工作、部门管理

一、准备工作 1.明确需求 根据产品经理绘制的页面原型,对部门和员工进行相应的增删改查操作。 2.环境搭建 将使用相同配置的不同项目作为Module放入同一Project,以提高相同配置的复用性。 准备数据库表(dept, emp) 资料中包含…

2023.10.13 求逆序对,二分,求极小值

求逆序对 划分归并对数组进行调整的合理性在于 每次划分数组后,在前面数组的元素与后面数组元素相对次序不会颠覆,就是前面元素在前面划分出的数组里随便调整,也依然在后面数组的任意元素里的前面,而不可能调整到后面数组的任意…

基于模块自定义扩展字段的后端逻辑实现(一)

目录 一:背景介绍 二:实现过程 三:字段标准化 四:数据存储 五:数据扩展 六:表的设计 一:背景介绍 最近要做一个系统,里面涉及一个模块是使用拖拉拽的形式配置模块使用的字段表…

Android Studio导入项目 下载gradle很慢或连接超时,提示:Read timed out---解决方法建议收藏!

目录 前言 一、报错信息 二、解决方法 三、更多资源 前言 一般来说,使用Android Studio导入项目并下载gradle的过程应该是相对顺利的,但是有时候会遇到下载速度缓慢或连接超时的问题,这可能会让开发者感到头疼。这种情况通常会出现在网络…

淘宝商品详情API:电商数据的宝藏之源

在当今的电商时代,数据已经成为企业和商家最宝贵的资产之一。通过数据,商家可以更好地了解市场需求、消费者行为以及竞品情况,从而制定更加精准的营销策略和优化运营。而淘宝商品详情API(taobao.item_get)作为淘宝平台…

c++学习:异常处理机制

c语言的错误处理方式 返回值 return 0; 全局错误标志 int test() {int fd open ("1.txt",O_RDONLY);if(fd -1){//open打开文件错误会返回错误码 errnoperror()://或者用strerror可以打印出错误return -1;}return 0; } 缺点 当函数有多级嵌套的时候,…

Python综合数据分析_RFM用户分组模型

文章目录 1.导入数据2.月度订单数据可视化3.数据清洗4.特征工程5.构建User用户表6.求R值7.求F值8.求M值9.显示R、F、M值的分布情况10.显示手肘图辅助确定K值11.创建和训练模型12.给R值聚类13.给聚类后的层级排序14.继续给F、M值聚类,并排序15.为用户整体分组画像 1.…

BOM简介

1.1 常用的键盘事件 1.1.1 键盘事件 键盘事件触发条件onkeydown按键被按下时触发onkeypress按键被按下时触发onkeyup按键被松开时触发 注意&#xff1a;addEventListener事件不需要加on <script>//1. keydown 按键按下的时候触发,按任意键都触发&#xff0c;也可以识…

大创项目推荐 深度学习实现语义分割算法系统 - 机器视觉

文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…