中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

搜索附件  
左侧广告
附件中心&附件聚合2.0
For Discuz! X2.5 © hgcad.com

一文了解CAN矩阵与DBC文件w6.jpg

 

一文了解CAN矩阵与DBC文件:
在 CAN通讯系列29 - CAN信号背后都经历了什么?介绍了CAN通讯信号起源于主机厂,CAN通讯信号主要是因功能需要由从功能开发工程师(Function Owner, FO)发起,最终由电子电器架构部门负责发布与释放CAN通讯矩阵和DBC文件。

关于CAN通讯矩阵和DBC的设计,通常FO需要负责大部分定义CAN信号的内容,包括:信号命名,信号定义,负载率计算,信号路由和国标上传等。下文就从技术角度来探讨如何详细定义新增的CAN信号:

1 信号的命名规范

当FO与相关利益方谈妥了新增CAN信号的决议,接下来就是需要将CAN信号加入到现有的CAN矩阵中。此时,第一步是需要给CAN信号命名,有效的命名方法将让信号见文知意。

简单来讲,信号命名规范主要包括两块:命名方法和缩写规则。常见的命名方法有类似于骆驼式命名法AaaBaaCcc,类似于VCU_VehSpd;而缩写规则主要涉及ECU的缩写和变量的缩写,比如Vehicle Control Unit-VCU,Vehicle-Veh和Speed-->Spd。

以上举例了一种常见的信号命名方法,要执行好信号命名,关键在于如何构建齐全完整的命名规则库。通过整车电子电器架构可以看出整车有非常多的控制器,如下图所示:



Source: Domain controller E/E architecture example该架构有动力总成,底盘总成,车身总成,高级辅助驾驶系统,车联网以及大屏仪表等域控制器,然后每个域控制器下又有多个子控制器,一辆车上这些控制器的数量可能达到上百个。给每个ECU定义一个有效的缩写名称很重要,同样地,还需要对整车零部件和物理量等缩写,如下示意:

当建立好了上述的缩写规则库,那么信号命名才能较好地落地,比如电机转速(MCU_MotSpd)和电池温度(BMS_BatTemp),这样一看就知道这个信号是什么东西,来自哪个ECU。

2 信号的定义

信号不仅要有清晰的命名,而且其所携带的信息也要清楚,关键信息就是信号的数据。什么样的数据有效,什么样的数据无效,因此最初需要有个预估的数据范围。比如说电机扭矩,这是电机的重要参数,这肯定有参考。也就是说针对各个控制器的典型信号,初期最好有大概的范围限制,这样才能方便后续更精确地定义信号的信息,包括类型,长度,精度和单位等信息。因此:

第一步,确定信号的数值范围。先确定单位,预估的物理最小值和最大值,如下示意:





再确定数据的精度,比如电机温度,根据实际情况要求,精度需要为0.1。第二步,确定信号的长度。先确定数据类型,绝大多数情况选择无符号整型;再确定信号的长度,即需要占用多少个bit;最后确定偏移量。比如电机温度范围是-40-150℃,精度为0.1。采用无符号整形,将其范围和精度考虑进来,数值单位为0到1900,至少需要11个bit,分析如下:


这样确定了电机温度占用11个bit,那么可以表示的数值范围位0-2047。


将其转换为物理值,0-204.7(精度为0.1),又因为原本要表示温度范围是-40-150℃,所以设置偏移量为-40,这样从0-204.7变成了-40-164.7,单位为℃,如下所示:

第三步,确定信号的最小值、最大值、初始值和无效值。先根据精度和偏移量来换算的物理值来定义最小值和最大值,接着上面的例子,信号的最小值为-40℃(0x000),最大值为164.6℃(0x7FE),然后定义初始值为-40℃(0x000)和无效值为164.7℃(0x7FF)。除此之外,很多信号还需要描述信号的枚举量,比如档位信号或车载充电机状态,如下所示:

到此信号的数据就确定了。接下来的要解决是信号放哪里?
3 信号放哪里
首先需要明确新增CAN信号是什么类型。在你知道CAN报文的发送类型有哪些吗? (qq.com) 介绍了CAN报文的发送类型分为基本发送类型和混合发送类型两大类。
    基本发送类型包括周期型的Cyclic周期发送、和事件型的OnChange变化时发送、OnWrite写入时发送和IfActive有效时发送。混合发送类型就是指基本类型中的周期型与事件型的组合,包括Cyclic and OnChange、Cyclic and OnWrite、Cyclic and IfActive。

当明确CAN信号的类型,再决定放置到哪条报文。假设信号是周期型的,明确是周期的时间,再将信号布置选择现有的周期型报文,如果放不下,那么将新增周期型报文;假设信号是事件型的,同样地将信号布置选择现有的或者新增事件型报文。

当然这里还有一个考虑因素,就是这条报文的接收方和发送方是否满足,比如新增的报文要求接收方是VCU和BMS,但是信号添加到现有的报文不满足,则需要增加相应的接收方。同样地,对于发送方也有类似的考虑。

更进一步就是考虑信号具体如何布置,比如上面的电机温度信号需要占用11bit,如果报文是CAN类型而不是CAN FD类型,那么我们所要考虑就是在这64个bit中,这连续的11bit数据,从哪个bit起始,到哪个bit截止。



这里需要明确信号采用Intel还是motorola模式布置,这两者有什么区别:

    当信号不跨字节时,Intel和Motorola模式的信号字节顺序一样,即信号的高位(MSB)放在该字节的高位,信号的低位(LSB)放在该字节的低位。

    当信号跨字节时,Intel和Motorola模式的信号字节顺序不同。Intel模式:信号的高位(MSB)放在高字节的高位,信号的低位(LSB)放在低字节的低位;Motorola模式:信号的高位(MSB)放在低字节的高位,信号的低位(LSB)放在高字节的低位。

4 小结
这样通过上面三节内容,介绍了信号如何命名,信号的数据如何定义,以及信号如何布置的实现逻辑,当你已经掌握好了这三方面的内容,那么你再看到DBC文件时,肯定不会陌生了,因为DBC文件里面呈现就是上面所说的内容,也就是上面给你解释了你所看到DBC文件的内容背后是怎么定义出来的。所以有些主机厂对于CAN通讯的需求,可能不再给供应商输入excel格式的CAN通讯矩阵,直接输入DBC文件给供应商,供应商根据DBC文件来开发CAN通讯功能即可。



OK!本文到此结束,关于CAN通讯矩阵做出来的过程中其实还需要考虑更多的内容,而且这些内容不一定都会呈现在DBC中。因此有必要再安排后续的文章继续探讨CAN通讯矩阵如何做出来.
创作不易,欢迎点赞再看收藏关注!
CAN通讯群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。
一文了解CAN矩阵与DBC文件w6.jpg
         同一主题附件:
    一文了解CAN矩阵与DBC文件w1.jpg
    一文了解CAN矩阵与DBC文件w2.jpg
    一文了解CAN矩阵与DBC文件w3.jpg
    一文了解CAN矩阵与DBC文件w4.jpg
    一文了解CAN矩阵与DBC文件w5.jpg
    一文了解CAN矩阵与DBC文件w6.jpg
    一文了解CAN矩阵与DBC文件w7.jpg
    一文了解CAN矩阵与DBC文件w8.jpg
    一文了解CAN矩阵与DBC文件w9.jpg

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 21-2-2025 19:44 , Processed in 0.343065 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.