Autosar开发问题-CAN报文无法接收

文章目录

  • 问题描述
  • 误导点
  • 先给结论
  • 排查过程
  • 解决方案

问题描述

HIL上测试CAN上接收的报文,CANoe解析数据正常,CANape可以读到对应观测量变化。
实车上测试,总线上同一个DBC,CANoe解析数据正常,CANape无法读到对应观测量变化

误导点

CANoe解析数据不会按实际报文DLC做处理,也就是说不管DBC设置的DLC是多少,都可以解析出来数据

先给结论

由于实车和HIL报文发送端用的不是同一个DBC,实车上ECU接收不到的报文DLC长度和ECU软件中的DLC长度不一致,而Autosar工程配置了rxPDU的DLC check,导致ECU无法接收到该报文。

排查过程

怀疑硬件有问题,优先对换了一下硬件,实际问题依然存在。

那么可以确定的是肯定是HIL和实车can网络环境不一致导致的报文接收不到,一开始我没有怀疑DBC有问题,我怀疑是can网络负载率不一致导致的,因为实车有些报文DBC解析不出来,实车的负载率是比台架上要高的。
本来想在实车验证把发送端取消,直接用CANoe模拟发送,但是不好操作。不过有原车DBC,就直接用原车DBC到HIL上测试.

用原车DBC,CANoe发送单个报文,ECU都无法接收,那么就直接排除了负载率的问题。现在只要对比两个DBC报文的差异就好了,对比下来就是DLC设置不一致。一个是7,一个是8。

解决方案

本来为了节省时间,我是直接在Autosar生成的代码中去找DLC修改的,在canif_lcfg.c修改了DLC,重新编译后发现结果没有变化,仍然收不到报文。
最后还是改了配置软件中的DLC[Byte]解决了该问题。

ps:直接改DBC后重新导入,实际并没有改变之前PDU中的DLC长度,原因未知,没办法只能手动先改了。

你可能感兴趣的:(Autosar笔记,autosar,can报文接收,DBC)