CANoe-第3个仿真工程-总线仿真- 3-2 工程实现

目录(前述步骤请跳转https://blog.csdn.net/lamanchas/article/details/122329927

6 自动序列 Automations Sequences

7 分析窗口

7.1 Graphics窗口

7.2 State Tracker窗口

​7.3 Data窗口

 8 Trace窗口与Logging

8.1 Trace窗口

 8.2 Logging窗口

9 Desktop布局

9.1 CAN布局

9.2 Analysis布局

9.3 Configuration布局

9.4 Trace布局

 10 工程运行测试

10.1 Automation Sequences驱动触发,Bug分析(同名系统变量,信号)

10.2 手动操作Control面板

10.3 分析Write信息,Bug分析(报文发送类型,信号发送类型)


6 自动序列 Automations Sequences

创建总线序列事件:

  • system variables\environment variables、signals的变化事件序列。
  • 检查/判断当前变量或信号的值

自动序列,通过改变变量的值,来触发特定的功能。序列事件设置如下:

 

按照下图,将KL15,Crank,OFF 改为 1,3,0.

KL是德文connector含义,芯片引脚的含义。

KL30 ,通常表示电瓶的正极。positive

KL31,通常表示电瓶的负极。negative

KL15, 通常汽车处于RUN模式

KL50,通常汽车处于crank模式

KLR,通常汽车处于的ACC模式

钥匙孔挡位含义:

- 钥匙插入的初始位置,处于LOCK档。

- 钥匙转到ACC档(Accessory),接通车辆部分电器电源,如CD,点烟器等。(相当于KL30处于ON状态)

- 钥匙转到ON档,接通车上所有电器电源,并开始自检。(相当于KL15处于ON状态)

- 钥匙转到START档,汽车点火成功后,弹回ON档。(相当于KL50处于ON状态,即crank模式

7 分析窗口

7.1 Graphics窗口

在CANoe菜单栏中选择Analysis→Graphics→New Graphic Window,输入名称为Signal Observe。该窗口左边信号列表栏中单击选择 Add Signals,在弹出的窗口中选择信号 KeyState,同样地加入信号VehicleLight和VehicleSpeed。

此时,在左边窗口中单击任意一个Signal,右边窗口中Y轴为该Signal的Value Table,X轴为时间。在Signal Observe窗口工具栏中单击Select y-axis view 图标·,在下拉表中选中 Show All Y-Axis,这样上面添加的三个Signal就将显示在同一窗口中,如图所示。

7.2 State Tracker窗口

在CANoe菜单栏中选择Analysis→State Tracker→New State Tracker Window,输入名称为Signal State。

在该窗口左边信号列表栏中单击鼠标右键并在菜单中选择Add Variables,添加系统变量 Vehicle Control中的Gear和Brake。

在该窗口左边信号列表栏中单击鼠标右键并在菜单中选择Add Database Objects→Signals,添加信号VehicleLight,如图所示。

当测量开始后,Gear、Brake和VehicleLight的Value Table可以同时显示在右边栏中。

 7.3 Data窗口

可以在Data窗口中添加信号和系统变量,此处添加了Driver、EngSpeed和 KeyState 三个信号,以及 Left_Turn_Enable 和 Right_Turn_Enable 两个系统变量,如图所示。

 8 Trace窗口与Logging

Trace窗口帮助用户实时查看和分析总线上的数据。

Logging记录下了整个仿真过程中的数据,在大数据量或长时间的测试情况下,使得用户可以在离线状态下查看总线的活动情况,同时,Logging功能记录的数据可以在CANoe中进行回放,对于总线上问题的复现起到了十分重要的作用。

8.1 Trace窗口

Trace窗口:创建名为CAN_Trace的Trace窗口

 8.2 Logging窗口

Logging窗口:创建名为CAN_Logging的Logging模块,在measurement setup面板添加CAN通道过滤器.

在 12.4.5节中,本书在节点Gateway的 CAPL程序里添加了键盘事件来控制CAN_Logging模块开启与关闭的功能,键盘上的1键可以实现Logging功能的开启与停止,可以查阅相关代码(5.3小结)。

鼠标右键单击CAN_Logging模块选择Configuration,在TriggerConfiguration 窗口中选择Toggle Trigger模式,将Toggle on和Toggle off的模式选择为CAPL和User defined,设置结果如图所示。

设置完成后,读者可以在Measurement Setup窗口中事先设置好CAN_Logging开关,也可以在测量过程中通过键盘上的1键来控制Logging的开始和结束。

9 Desktop布局

9.1 CAN布局

9.2 Analysis布局

 

 9.3 Configuration布局

 9.4 Trace布局

 10 工程运行测试

由于实例采用简化的拓扑结构,节点没有超过4个,所以在Demo版CANoe中也可以正常仿真运行。工程文件地址(picoasis/CANoeProj - Gitee.com

10.1 Automation Sequences驱动触发,Bug分析(同名系统变量,信号)

完成上述所有配置以后,读者就可以在CANoe软件中运行该仿真项目。

仿真工程实现的功能随着Automation Sequences驱动而触发,可以观察到Control面板和IPC面板中的同步变化。

仿真工程的运行效果如图所示。

上图可以看到,IPC可以正常显示汽车速度,油量,油温,引擎速度,转向灯。

但挡档位位显示不正确。同样的Control面板的档位文字显示也不正确。

因此接下来查看分析面板,如下图所示:

可以发现KeyState信号图变化与Automation Sequences变化是同步的,但是在IPC和Control面板上没有正确显示。

我们查看IPC面板的显示如下,发现档位显示绑定的是Signal Gear:

 因此 ,接下来在analysis面板中增加Signal Gear的观察,为了直观观察,分别再signal observe界面和Data界面添加Gear信号。如下图:发现与显示一致,一直是Parking没有变过。

仔细查看了CAPL代码,确认没有问题。

突然想到,之前设置Sequences时,keyState的取值出现过报错,那么会不会Automation Sequences在这个Gear设置出了问题呢?

首先,Gear取值是否出错:查看Sequences中的Gear,取值在可选范围中,没有错误。

 此时,查看Gear这个Object,发现同名为Gear的有两个对象,一个是signal,一个是system variable,

此处选用了signal的Gear,但此处使用序列来模拟车辆控制,应该控制的是系统变量的Gear。问题应该出在这里。

接下来,修改Gear为系统变量Gear,修改对应取值R、N、D。

再次运行序列,面板显示如下,结果正确。

 10.2 手动操作Control面板

也可以手动操作Control面板,同时结合Trace、Graphic和State Tracker等分析窗口,做一些测试和分析。按1键Logging文件开始记录CAN Trace中的信息,再次按1键,将停Logging记录。

按CAPL程序逻辑测试,皆正常显示运行。

  • 引擎速度的控制这一块,没搞明白
  • 油温和油量没有对应的传感器数据,只显示初始值

10.3 分析Write信息,warning修复(报文发送类型,信号发送类型)

得到的write窗口输出信息如下:

 有两个Warning。

  1. 其中Driver信号设置为了默认值循环发送,但未设置循环时间。
  2. 报文Driver_Info未设置 发送类型。

下面进行分析,修改:

在CANoedb++ 查看信号Driver的属性,信号Driver从属于报文Message::Diver_Info

目前,他们两个的发送类型属性 分别设置如下:(书中给出的设置)。

Message::Diver_Info

GenMsgSendType

NoMsgSendType

Signal::Driver

GenSigSendType

NoSigSendType

(数据库的属性信息说明可以参考:CANoe - 数据库常见属性说明_lamanchas的博客-CSDN博客

报文发送类型的取值有这么几种:

 报文发送类型属性的详细含义如下图:

 简单来说,报文发送类型整体分为:事件触发 和 周期触发。

根据之前的功能划分,我们知道Driver的相关信息,是由BCM控制的,打开BCM的CAPL。程序中,报文 的更新和发送是事件触发的,且是一直监听Car_Driver信号,不是跳变触发。

 因此应该在DBC中设置报文发送类型为ifactive

 Driver信号也设置为ifactive

 保存DBC后,重新运行,write告警提示:

 System:In message 'Driver_Info' the signals using send types 'WithRepetition' or 'IfActive' were downgraded, because CycleTimeFast is 0.

报文告警消失,但信号不能设置为ifactive,因为 ifactive也涉及到循环周期的设置。

接下来在DBC中 修改Driver信号的发送 类型为onchange

 至此,告警全部消失。

 END

  • 2
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

picoasis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值