CANoe使用教程

目录

1.CAN IG使用

 2.Visual Sequence 自动发送报文序列,可以设置多个visual sequence,可用于重复的网络模拟和write窗口输出,比IG灵活,比CAPL简单

3.CANoe中的系统变量和环境变量都是一种用于存储和传递数据的变量,它们有以下区别和使用场景:

4.Panel Design

5.CAPL编程


1.CAN IG使用

 2.Visual Sequence 自动发送报文序列,可以设置多个visual sequence,可用于重复的网络模拟和write窗口输出,比IG灵活,比CAPL简单

以下是实战案例:

以下是官方教程案例:

3.CANoe中的系统变量环境变量都是一种用于存储和传递数据的变量,它们有以下区别和使用场景:

  • 系统变量是在CANoe中定义的变量,它们可以在不同的节点、面板、图表等之间共享数据。系统变量可以有多种数据类型,例如整数、浮点数、字符串、结构体等。系统变量可以通过@$符号来访问,也可以通过CAPL函数来读写。系统变量适用于需要在CANoe内部进行数据交换的场景,例如控制和监视网络通信、执行测试用例、显示和记录数据等。
  • 环境变量是在CAN数据库中定义的变量,它们可以在不同的网络节点之间共享数据。环境变量只有有限的数据类型,例如整数、浮点数、枚举等。环境变量可以通过envVar事件或CAPL函数来读写。环境变量适用于需要在CAN网络上进行数据交换的场景,例如模拟和控制网络节点、发送和接收诊断请求、实现网络管理等。

CANoe运行的时候可以通过symbol panel实时修改变量的值(修改后不影响初始值):

 CANoe运行的时候可以通过Node panel实时修改节点相关的值:

Signal的值,改完之后立即生效
Message的值,改完之后点击update生效

4.Panel Design

在Panel design的时候,把系统变量或者 网络变量(Network symbols)直接拖拽到panel上的控件上即可关联起来

 

控件的属性修改:

 Panel中一个控件多个状态切换的设置:

 Panel之间切换,CANoe运行停止控件:

5.CAPL编程

CAPL是事件驱动型的,事件发生才会执行对应代码

CAPL 程序结构:头文件includes,全局变量variables,事件处理(on 开始)

局部变量是静态的,点一次闪电运行,只初始化一次

message,timer,ms Timer 是数据类型关键字

Switch 要和break搭配使用

CAPL实现发送CAN message:一种是 自定义报文;一种是发送数据库自带的报文

5.1发送自定义报文(Raw Message)

增加一个网络节点

 5.2发送一条数据库里已定义的报文

可以直接对相应的信号进行赋值

 注意:在CAPL编程中,对应数据库自定义的报文,如果输入报文(message)名称,例如"msg2."后没有下拉框可以选择signal,可能是由于这个CAPL文件没有保存,保存后再试一下就可以了。

5.3 signal 报文有两种,一种是信号值发送改变时触发-signal,另一种时信号发送到总线上时触发-signal_update

 

CAPL中的Value Object是一种用于存储和传递数据的对象,它们有以下几种类型:

  • 信号(Signal):信号是CAN或其他网络上的消息中的一个数据字段,它们可以表示物理量或状态。信号可以通过on signalon signal_update事件来响应,也可以通过getSignalsetSignal函数来读写。信号可以使用数据库中定义的符号名称或值表。
  • 环境变量(Environment Variable):环境变量是CAN数据库中定义的变量,它们可以在不同的网络节点之间共享数据。环境变量可以通过on envVar事件来响应,也可以通过getValueputValue函数来读写。环境变量可以使用数据库中定义的符号名称或值表。
  • 系统变量(System Variable):系统变量是在CANoe中定义的变量,它们可以在不同的节点、面板、图表等之间共享数据。系统变量可以通过on sysVar事件来响应,也可以通过@$符号或CAPL函数来读写。系统变量可以有多种数据类型,例如整数、浮点数、字符串、结构体等。

以下是每一种类型的Value Object的使用示例:

  • 信号(Signal):
// 响应信号EngineSpeed的变化
on signal EngineSpeed
{
  // 打印信号的物理值
  write("Engine speed is %f rpm", this.phys);
}

// 设置信号EngineTemp的物理值为80
setSignal(EngineTemp, 80);
  • 环境变量(Environment Variable):
// 响应环境变量Switch的变化
on envVar Switch
{
  // 打印环境变量的原始值
  write("Switch value is %d", this.raw);
}

// 设置环境变量Light的原始值为1
putValue(Light, 1);
  • 系统变量(System Variable):
// 响应系统变量IO::DI_0的变化
on sysVar IO::DI_0
{
  // 打印系统变量的原始值
  write("IO value is %d", this.raw);
}

// 设置系统变量Debug::MotorValues::EngineSpeed的物理值为2000
@Debug::MotorValues::EngineSpeed = 2000;

6.用Graphics 监测特定信号和电源电压

6.1监测电源电压硬件接线

一端VN1640A接CH5-IO口,另一端接给产品供电的电源GND电源正

6.1.1 CANoe软件端口配置

6.1.2 CANoe软件IO变量选择:

6.2监测CAN报文以及时间测量

6.2.1 CAN报文 signal添加

6.2.2 监测功放上电后,发出首帧报文的时间
监测之前,先把功放下电,停掉CANoe工程,然后重启CANoe工程,启动监测,接着给功放上电
上电后,91ms 功放有回复
下电后,14ms,功放停止回消息

6.3图形化显示报文的变化

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值