CANoe中的AutoSequence

news2025/1/17 21:58:02

简单介绍:

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.coloradmin.cn/o/1370668.html

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

相关文章

TypeScript进阶(一)深入理解类和接口

✨ 专栏介绍 TypeScript是一种由微软开发的开源编程语言,它是JavaScript的超集,意味着任何有效的JavaScript代码都是有效的TypeScript代码。TypeScript通过添加静态类型和其他特性来增强JavaScript,使其更适合大型项目和团队开发。 在TypeS…

【2024最新-python3小白零基础入门】No2.python基础语法

文章目录 1 编码2 标识符规则3 python保留字4 注释5 行与缩进6 多行语句7 数字(Number)类型8 字符串(String)9 空行10 等待用户输入11 同一行显示多条语句12 import 与 from...import 环境准备,打开pycharm,新建一个python文件 文件名称随便,可中文可英文…

golang 记录一次协程和协程池的使用,利用ants协程池来处理定时器导致服务全部阻塞

前言 在实习的项目中有一个地方遇到了需要协程池的地方,在mt推荐下使用了ants库。因此在此篇记录一下自己学习使用此库的情况。 场景描述 此服务大致是一个kafka消息接收、发送相关。接收消息,根据参数设置定时器进行重发。 通过这里新建kafka服务&a…

ffmpeg[学习(四)](代码实现) 实现音频数据解码并且用SDL播放

0、作者杂谈 CSDN大多数都是落后的,要么是到处复制粘贴的,对于初学者我来说困惑了很久,大多数CSDN文章都是使用旧的API ,已经被否决了,于是我读一些官方文档,和一些开源项目音视频的输出过程,写…

CCSC,一种CPU架构

core-circuit-separate-computer 核与执行电路的分离,最初是为了省电。 用寄存器实现这种分离。 V寄存器控制着执行电路的供电,V0则不供电,进入省电模式;V1则供电,进入工作模式。 P寄存器是parameter-register&#xf…

Qt应用-实现图像截取功能类似QQ上传头像截取功能

本文演示利用Qt实现图像截取功能类似QQ上传头像截取功能。 效果如下,通过移动中间的裁剪区域可以获得一张裁剪后的图片。 目录

Open3D 搜索某个点的圆柱形邻域点云(11)

Open3D 搜索某个点的圆柱形邻域点云(11) 一、算法介绍二、算法实现1、代码2、结果一、算法介绍 具体而言,search_hybrid_vector_3d方法会以指定的查询点为中心,在给定的半径范围内搜索邻域点。还可以指定近邻点的数量阈值,这对于需要特定数量邻域点的应用非常有用,比如提…

安全技能讲座 - 便携式灭火器 (Portable Fire Extinguishers )

【Transcript 】 火灾随时随地都可能发生,而且毫无征兆。如果您在家中或工作中遇到火灾,便携式灭火器可以帮助您保护自己,并有可能将火灾扼杀在摇篮中。本课程将向您介绍便携式灭火器、其工作原理和使用方法。成功完成本课程后,您…

kubectl常用命令(主题篇)

上一篇是按照操作把全局性的命令给整理出来,但是在实际的使用中,经常需要对某一个主题进行操作,因此这一篇按照对应的主题进行一系列操作。 集群 查看集群基本信息 kubectl cluster-info namespace 命名空间 查看 kubectl get namespace k…

查看Linux系统内存、CPU、磁盘使用率和详细信息

一、查看内存占用 1、free # free -m 以MB为单位显示内存使用情况 [rootlocalhost ~]# free -mtotal used free shared buff/cache available Mem: 11852 1250 8668 410 1934 9873 Swap: 601…

大模型学习之书生·浦语大模型3——基于InternLM和LangChain搭建知识库

基于InternLM和LangChain搭建知识库 1 大模型开发范式 LLM的局限性 知识受限:最新知识无法实时获取专业能力有限:有广度无深度定制化成本高:训练成本高 RAG VS Finetune RAG: 无需重新训练组织外挂加入知识容易受基座模型的影响…

Linux中快速搭建RocketMQ测试环境

必要的文件下载 为什么选择RocketMQ | RocketMQ x86_64位JDK下载0jdk/8u391-b13 rocketmq二进制包下载-rocketmq-all-5.1.4-bin-release.zip 编译好的直接可用的dashboard【rocketmq-dashboard-1.0.0.jar】请在文章顶部下载 dashboard配套的配置文件【application.propert…

基于宝塔搭建Discuz!论坛

一、安装宝塔 我是在我的虚拟机上安装图的宝塔 虚拟机版本:Ubuntu 18.04 wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh 6dca892c安装完成之后在浏览器输入你的地址 https://你的域名(或…

NX二次开发 Block UI 指定方位控件的应用

一、概述 NX二次开发中一般都是多个控件的组合,这里我首先对指定方位控件进行说明并结合选择对象控件,具体如下图所示。 二、实现功能获取方位其在选择面上原点的目标 2.1 在initialize_cb()函数中进行初始化,实现对象选择过滤面 //过滤平…

C++多态(超详解哦)

C多态 引言定义及实现多态的条件虚函数与虚函数的重写接口继承与实现继承函数重载,隐藏,重写的区别 抽象类多态的原理虚函数表(虚表)动态绑定与静态绑定 总结 引言 在生活中不乏这样的例子:成人与儿童在买票时会有不同…

FRPS配置服务端(腾讯云)、客户端(PC电脑Windows、树莓派Debian)并设置虚拟域名

1.服务端(腾讯云):frps.ini [common] bind_port 7000 vhost_http_port8080 vhost_https_port44344 dashboard_port 7500 privilege_token your_password subdomain_host example.com use_encryption true encryption_method tls dashb…

oracle角色管理

常用角色 CONNECT,RESOURCE,DBA,EXP_FULL_DATABASE,IMP_FULL_DATABASE 1角色可以自定义,语法与创建用户一样 CREATE role role1 IDENTIFIED by 123; 2授权权限给角色 --自定义角色 CREATE role role1 IDENTIFIED by 123; --授权权限给角色 GRANT create view, …

Apache Doris (六十三): Spark Doris Connector - (3)-配置型及列映射关系

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Spark 操作Doris配置项

【软件测试】学习笔记-脚本与数据的解耦 + Page Object模型

本篇文章介绍GUI测试中两个非常重要的概念:测试脚本和数据的解耦,以及页面对象(Page Object)模型。 测试脚本和数据的解耦 GUI自动化测试适用的场景,尤其适用于需要回归测试页面功能的场景。如果在测试脚本中硬编码&a…

Fiddler工具 — 10.Statistics(统计)面板

1、Statistics介绍 Statistics 页签显示当前用户选择的 Sessions 的汇总信息,包括:选择的 Sessions 总数、发送字节数、接收字节数、响应类型的汇总表、世界各地通过不同请求方式所需的时间等。 Statistics 分页还会统计请求和响应的其他一些信息,如&a…