电子说
前言
使用Vector公司的Davinci Configurator工具导入Can DBC文件自动配置BSW模块本来是一件很丝滑(Vector的工具确实更好用…)的工作,但是从客户那里拿到的DBC文件格式存在各种问题,导致Davinci工具也报各种错误,由于以前没有Davinci的使用经验,解决问题的过程也比较痛苦,这里把遇到的DBC文件格式错误导致Davinci报错问题记录一下。
正文
1.周期帧报文
问题:对于周期发送报文,Com模块的ComIpdus中生成的ComTxMode配置信息应该是Tx Mode: PERIOD,且只有周期报文发送的时间参数,但是实际生成Tx Mode: MIXED,且自动生成了事件帧报文发送的实际参数。
DBC问题:对于周期报文,周期报文的属性参数GenMsgSendType应该为Cyclic,且报文下的每一个Siganl的GenSigSendType都应该为Cyclic,实际是有问题这帧报文下有一个Signal的属性是不是Cyclic。
Note: 周期报文的周期属性参数一定要是Cyclic,不能是Circular或者Period(Davinci会当成NoMsgSendType来处理)。
正确修改DBC后:
2.事件帧报文
问题:对于事件触发发送报文,Com模块的ComIpdus中生成的ComTxMode配置信息应该是Tx Mode: DIRECT,且只有事件报文发送的时间参数,但是实际生成Tx Mode: MIXED,且自动生成了周期报文发送的实际参数。
DBC问题:对于事件帧报文,报文的属性参数GenMsgSendType应该为OnChange/NoMsgSendType,且报文下的每一个Siganl的GenSigSendType都应该为OnWriteWithRepetition/OnChange/xxx,实际是有问题这帧报文的GenMsgSendType配置为Cyclic。
正确修改DBC后:
3.网络管理报文
问题:网络管理发送报文的NM属性已经配置了,但是Davinci工程没有自动生成CanNm/NM相关的配置容器和参数?
DBC的问题:ECU的全局参数中没有配置NM的NmAsrNode参数。
4.诊断报文
诊断报文只要配置好:
DiagRequest:物理寻址接收报文配置属性
DiagResponse:物理寻址发送报文配置属性
DiagState:功能寻址接收报文配置属性
5. DBC文件属性配置
问题:对于普通收发的应用报文,Davinci会给这一帧报文生成Com<->PduR<->CanIf的协议栈信息,但是实际没有生成Com到CanIf的PduR路由信息。
DBC的问题:对于普通收发的应用报文,应该配置GenMsgILSupport参数为Yes。
正确修改DBC后:
小知识:有时候发现一些DBC的报文缺少某些必需的配置属性,怎么给DBC添加一个配置属性?
小技巧:有时候我们发现两个DBC报文的属性差异很大,想以一个DBC为基准,修改另一个DBC的配置属性和基准DBC的配置属性完全一样,除了一个一个配置属性去增删查改外,还有什么更简单的办法?
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !