欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > Vector软件CANdb++的信号起始位Bug

Vector软件CANdb++的信号起始位Bug

2025/3/19 6:50:59 来源:https://blog.csdn.net/qiu421/article/details/144205103  浏览:    关键词:Vector软件CANdb++的信号起始位Bug

问题现象

前几天导入DBC文件发现不对劲,怎么生成代码的起始地址都怪怪的,检查下工程里面的配置,还真的是这样,一路查到输入文件——DBC文件,发现是DBC文件就有错误:一些CAN报文之后8字节长度,也就是64位,有些信号起始位都跑到70+甚至100+去了,能正常就怪了。

1b151e7fac3348a0b347c0f40d1879d0.png

于是找来提供DBC文件的同事确认原因,同事重新在通讯工具当中下载下来,发现并没有这个问题,我也重新下载一份,也没有这个问题。这就让我很疑惑了,我并没有修改过DBC文件,只是使用软件CANdb++打开查看过,这不应该会导致如此大的差异。

问题分析

我用重新下载“没有信号起始位问题的DBC文件”和之前下载“有信号起始位问题的DBC文件”进行记事本格式对比,居然没有一丁点差异!

原来我没有对“有信号起始位问题的DBC文件”进行保存,点击保存之后就有差异了,差异也跟CANdb++显示的一致——这么说是我打开之后不小心改到的了?

我又重新下载一份DBC文件进行试验,详细回忆着自己在这期间对DBC文件干了什么,看看我做了什么样的操作会导致不小心修改掉。

发现在进入信号定义之后,跳转Signal选项卡时偶尔会弹出这个对话框,意思就是有信号在报文里面的位置重叠了。我打开报文layout查看,发现还真是这么回事。用记事本格式打开,发现CANdb++的layout的显示跟记事本格式打开居然不一致!

e4d7365273f04019b378f131a0acd190.png

在尝试几次之后我确定,就是在“进入信号定义之后,跳转Signal选项卡”这个操作,会导致信号在报文的起始位被CANdb++修改掉——这是个Bug!!

譬如我这个信号原来在layout里面是这样出现的。

e32fe581c96a4d3185aef176298d7e37.png

做过“进入信号定义之后,跳转Signal选项卡”这个操作之后,回去layout里面变成了这样。

57e48bca9ac24da09c9fbf22ccbf60f8.png

起始位从7变成了8。

1f822457c570474f9cae9fb1076a5464.png

解决办法

我逐渐摸出问题出现的规律,它的出现要同时符合3个条件:

1、数据分布要跨字节,这意味着它不一定需要大于8字节,只需要跨字节就能满足。

2、信号需要为Motorola字节序。

3、使用CANdb++软件打开之后,刚好做过“进入信号定义之后,跳转其他选项卡”操作,不一定要跳转Signal选项卡。

针对问题的出现方式,制定出2种对策:

1、设计时规避跨字节信号或者Motorola字节序,这种会限制设计的发挥,不太推荐。

2、使用CANdb++软件打开DBC文件之后,无论做过任何操作,都不要保存,保证输入文件维持在输入时的状态。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词