CANoe中的AutoSequence

本文介绍了AutoSequence插件的创建、VisualSequence的使用、编写过程中的语法规则,包括Sequence的状态、循环控制、执行模式、DBC文件的应用等内容,帮助读者理解和应用到实际工程中。
摘要由CSDN通过智能技术生成

简单介绍:

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函数。

### 回答1: cane的capltestfunction是指在CANoe软件对cane进行功能测试的函数。 CANoe是一种广泛应用于汽车和其他领域的开发和测试工具。它具有功能强大的仿真和测试功能,能够模拟车辆网络环境,并对车辆的控制器局域网(CAN)进行测试和验证。 canoe的capltestfunction主要用于对cane进行功能测试。在这个函数,我们可以编写测试用例以验证和测试cane的功能是否正确和稳定。 例如,我们可以创建一个capltestfunction来测试cane的连接功能。在这个测试,我们可以模拟一个车辆网络,然后尝试与cane建立连接。如果连接成功,我们可以进一步测试cane的数据传输能力,验证它是否能够正确地接收和发送CAN消息。 除了连接功能,我们还可以使用capltestfunction测试cane的其他功能,如监听模式、滤波器和诊断等。通过编写不同的测试用例,我们可以检查和验证cane是否符合要求和预期的功能。 最后,通过执行capltestfunction,我们可以获得cane在不同测试场景下的测试结果。这些结果可以帮助开发人员诊断和解决潜在的问题,并提供保证cane在实际应用的可靠性和稳定性。 总之,canoe的capltestfunction是一种在CANoe软件对cane进行功能测试的函数。它为我们提供了一种方法来验证和测试cane的各种功能,并确保其在实际应用的正常运行。 ### 回答2: canoe的capltestfunction是一个用于测试和调试CANoe软件的功能的函数。CANoe是一款用于开发、测试和仿真汽车网络的工具,capltestfunction是它的一部分工具集。 capltestfunction主要有以下几个功能: 1. 验证CANoe软件的功能:通过运行capltestfunction,可以验证CANoe软件在不同场景下的功能是否正常。例如,可以测试CANoe的CAN总线模拟功能,是否能正确发送和接收CAN消息;或者测试其诊断功能,是否能正确读取和解析车辆的故障码等。 2. 调试CANoe系统:capltestfunction还可以用于调试CANoe系统的问题。通过在capltestfunction添加自定义的调试代码,可以监控CANoe系统的运行状态,如检查信号传输是否正常、检查节点之间的通信是否畅通等。这有助于提高系统的稳定性和可靠性。 3. 扩展CANoe功能:capltestfunction还可以用于扩展CANoe软件的功能。通过在capltestfunction编写自定义的函数和脚本,可以实现一些特定的功能需求,例如实现自动化测试、数据记录和分析等。这为开发和测试人员提供了更丰富的工具和自定义选项。 总之,capltestfunction是CANoe软件一个重要的功能模块,它通过测试和调试CANoe系统来确保其功能正常,解决问题和满足特定需求。 ### 回答3: canoe的capltestfunction是一种用于测试和验证船只的功能的函数。capl是一种用于船只自动化测试的编程语言,通过编写capltestfunction函数,可以对船只的各项功能进行测试和验证。 capltestfunction函数可以包括多个测试用例,每个测试用例都用于测试不同的船只功能。例如,可以编写一个测试用例来测试船只的航行速度,另一个测试用例来测试船只的转向能力等。 在capltestfunction函数,可以通过编写测试语句和断言来判断测试结果是否符合预期。例如,可以用assert语句判断船只的航行速度是否在设定范围内,如果不在范围内,则测试失败。 capltestfunction函数还可以包括一些初始化和清理操作,以确保每个测试用例在执行前都处于合适的状态。例如,在执行测试用例前可以进行一些参数的设置和船只的准备工作,测试完毕后可以进行一些数据的清理和恢复操作。 通过使用canoe的capltestfunction,可以对船只的各项功能进行全面的测试和验证。这有助于发现和修复船只功能上的问题,提高船只的性能和可靠性。同时,也能够确保船只在使用过程的各项功能都正常运行,从而保障船只的安全和可用性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值