仿真测试工具CANoe实操:3步避开DBC乱码和节点掉线

发布于 更新于
1,121
详情介绍

经我员实际测试CANoe 16 SP4,曾遇到踩过CAPL脚本编译能通过然而仿真节点却死活都不产生响应的情况。

DBC文件加载总是乱码怎么办

将Simulation Setup窗口打开,在左侧的Database节点上进行双击操作,把你的DBC文件加载选择。需要注意路径里不要包含中文以及空格字样,不然解析会直接出现报错情况。波特率要强制设置成为500kbps,绝大多数车载ECU默认此值,若改高会出现丢帧现象,改低则总线负载过高,经实际测量此值最为稳定。

初涉者免受困扰之事,加载之后弹出这种提示“Parser error: unrecognized token”,大多情况是DBC里注释运用了中文全角逗号或者分号,所对应的解决办法为,运用记事本打开DBC,通过Ctrl+H将全角标点替换为半角,保存之后再加载就能识别了。

仿真节点无响应如何排查

在右键处点击Network节点,从中选择Insert CAN Node选项,接着输入节点名“EngineNode”。在Node下增添一个呈现周期性发送特质的CAPL事件,即on timer t1,将周期设定为10ms,在其内部塞入一条ID为0x123的信号。待编译成功通过之后,点击Start Simulation,进而观察Trace窗口里是否存在报文。

作为新手需要避免踩坑,编译的时候出现了零个错误,然而Trace却看不到任何输出情况,大概有八成的可能性是你忘掉了要把Node的“Simulation Mode”从Off拨到On,其路径是右键点击节点,然后选择Configuration,接着勾选“Simulation active”,另外timer必须要通过手动调用settimer来启动,可千万别遗漏了。

离线仿真和在线注入两种方案怎么选

用Replay Block回放已录制好的log文件为一种方式,通过Interactive Generator手动调整信号值是另一种方式。回放方案适宜于复现场景中的bug进而进行跑批量回归测试,但无法实时改变数值;注入方案适合极限边界测试,举例来说如同突然把电压信号拉至12V来检验保护逻辑。

【新手避坑】当碰到报错显示为“No bus access: node not running”时,有完整的解决流程,此流程分为三步来走:其一,要去检查CAN通道是不是处于激活状态(也就是Configuration→CAN→State=Active);其二,需验证波特率与DBC定义是不是保持一致;其三,要右键点击节点并选择“Force Start”。出现这种情况百分之九十是由于通道被其他进程给占用了。

关键参数仿真的时间步长,推荐为10ms,要是设得太小,CPU会飙升,并且消息会出现重叠的情况。要是设得太大,就会错过事件,10ms这个数值兼顾了实时性与资源这两方面。

在纯硬件在环(HIL)全实物信号的完整流程测试里,本方法并不适用,那种场景得加dSPACE或NI的实时机才行。要是仅做单节点功能验证,借助CANoe自带的Panel设计器拖几个控件,就能把复杂的CAPL编程给替代掉。你有没有踩过仿真节点莫名其妙掉线的坑呢?在评论区分享你的硬刚经历,点赞过百的话,我就接着去写CAPL串口调试的硬核避坑。

常见问题(FAQ)

加载DBC后提示解析错误、无法识别字符怎么办?
大多是DBC里的注释用了中文全角逗号或分号。用记事本打开DBC,把全角标点替换成半角,保存后重新加载就能识别。
编译零错误但Trace窗口没有任何报文输出,怎么排查?
八成是节点的仿真模式还停在关闭状态。右键节点进入Configuration勾选Simulation active,另外timer必须手动调用settimer启动。
CANoe仿真的时间步长设多少合适?
推荐设为10ms。设得太小CPU会飙升而且消息会重叠,设得太大又容易错过事件,10ms兼顾实时性与资源占用。
0 / 600
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
所有的成功,都源自一个勇敢的开始
相关文章