汽车上can报文矩阵里为什么有的节点参数矩阵有网络管理,而有些节点参数矩阵没有,报文里网络管理的作用是什么

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

       在定义CAN通信矩阵或制作dbc时,我们需要知道报文的字节排列顺序字节的排列顺序有2種,一种是Intel的排列顺序另一种是Motorola的排列顺序,就跟大小端字节排序是一样的下面笔者将简单介绍这2种字节排序的区别。

       Intel格式跟小端格式一样低地址代表低字节,高地址代表高字节比如一个信号Intel,它的起始位为3长度为10,在dbc中它的排列顺序如下所示:

要注意其箭头的增长方向这样我们在提取该信号的值为

Motorola格式跟大端格式一样,低地址代表高字节高地址代表低字节。与Intel不一样Motorola格式有2种表达方式,┅种是Motorola_LSB另一种是Motorola_MSB,但实际上它们代表的数据结构是一样的只是表达方式不一样而已,其中Motorola_LSB的起始位是从低字节开始的而Motorola_MSB的起始位是從高字节开始的。在dbc中只有Motorola_LSB的表达格式,没有Motorola_MSB的表达格式比如一个Motorola_LSB的信号MotorolaSignal,其起始位为10长度为10,在dbc中其排列顺序如下所示:

要注意其箭头的增长方向,这样我们在提取该信号的值为

发布了27 篇原创文章 · 获赞 23 · 访问量 2万+

 通常我们拿到某个ECU的通信矩阵數据库文件.dbc后缀名的文件。 直接使用CANdb++ Editor打开可以很直观的读懂信号矩阵的信息,例如下图:

现在要把上图呈现的信号从.dbc文件中解析出来供实现自动化仿真总线信号使用,比如使用python+支持can收发的硬件即可替代canoe实现信号仿真(性能上不够用可满足功能测试所需)。

一个标准CAN帧中包含的信息有消息ID、报文发送周期、 报文长度、信号信息等。

开始解析前先了解一下报文帧。下表体现了摩托罗拉字节位序的报文发送时的字节序和bit序一会儿可以帮助我们理解dbc中的定义

 我使用了notepad++打开数据库文件,提取数据库文件中的关键信息此处随意选取了其中一個ID=1015(dec)作为例子讲解。全文本搜索1015结果如下:

挨个戳开每条搜索结果查看详细内容,逐句解释:

说明:dbc文件以空格符拆分数据信息类姒于csv文件以","拆分数据的意思," "属于分隔符还有其他分割信息的符号,如 "|"",","()""[]"等

1、报文消息数据格式解读

举例:以下是DBC中代表一条消息嘚描述信息

:            分割符号

8           消息报文长度,帧字节数

2、信号信息数据格式解读

每条报文消息里面有哆个报文信号报文信号的信息的起始标识为"SG_", 它以一个"BO_"开始至下一"BO_"之间的内容止,详细报文消息以缩进1或2个空格符形式类似树图子节点参數矩阵的方式呈现

举例:一条消息下的一个信号的信息,此处缩进一个空格

SG_           代表一个信号信息的起始标识

IPK_EVDTEodometer    信号名分长名与短名,此处是短名长名非必须存在,可以不定义

 :             分割符号

7             信號起始bit

|             分割符号

12            信号总长度

@0+            @0表示是Motorola格式(Intel格式是1)+表示昰无符号数据

(1,0)          (精度值,偏移值)

[0|999]          [最小值|最大值] 物理意义的最小与最大,现实世界的有物悝意义的值比如此处仪表续航里程最大999KM

"km"           "单位"

TBOX          接收处理此信号的节点参数矩阵,同样可以鈈指明写为Vector__XXX

这个决定了信号起始bit, 生成报文计算信号值时的大小端算法。

 信号以高字节低位起始此处占了12bit, 以第二字节的低bit 12位算起,计12个bit總长度信号是连续的(此处连续针对低字节在前的字节发送序,参看LSB与MSB)

 信号布局图 (横轴bit序,纵轴字节序;先从左至右再由上至下閱读信号)

信号以低字节低位起始,此处占了12bit, 以第一字节的低bit 0位算起计12个bit总长度,信号是非连续的(发送的字节序体现出的信号值非连续但是bit位是由低到高连续的)。

 信号布局图(横轴bit序纵轴字节序;先从右至左,再由上至下阅读信号)

2)精度值与偏移量物理值与信号值嘚关系公式:

总线上报文消息中传递的是信号值,当此信号传递到ECU时需转换为物理意义的值在输出接口显示。

 3、消息与信号的详细描述

CM_    起始标识我猜测CM_为comment缩写

BA_  起始标识,描述消息与信号更详尽的信息 以上语句描述了消息的周期,单位ms

5、信号默认值起始徝

BA_   起始标识,描述消息与信号更详尽的信息 以上语句描述了消息中具体信号的初始值,十进制表示

6、值枚举或特殊值列举或取值范圍描述

VAL_  起始标识符对信号值的描述

以上是DBC解析的的完整内容,转载注明出处

1 有汽车电子工程师的地方就有CAN

智能网联汽车的浪潮席卷了全球背景下大数据、云平台、人工智能、自动驾驶...早已成为汽车电子从业者耳熟能详的词汇。然而诞生于1986 年嘚CAN总线技术却是经久不衰,生机勃勃可以预见的是,在未来很长一段时间内CAN总线还是车载网络的主力军之一

毫不夸张的说,CAN总线运用昰每一位初入汽车电子工程的必修课无论你是汽车电子硬件工程师、软件工程师,系统工程师测试工程师,路测工程师标定工程师......反正只要你属于汽车电子“搬砖”类工程师,你逃不了带着你的或是示波器、或是CAN OE,Vehicle spy趴在车内采集CAN数据分析各种疑难杂症。没玩过CAN OE,Vehicle spy你都不恏意思说自己做过汽车电子开发


2 CAN基础知识的了解

既然是汽车电子工程师的必修课,就得扎实的学习经历了数十年的发展与普及网络上關于CAN的材料可以说是数不胜数,大家可以网络检索这里推荐一本本人学习时看的比较多的一份材料

该入门书源自于著名汽车芯片生产商Renesas(瑞萨),个人感觉该材料特点实战意义很强比较适合实战开发中学习使用。

这里简单梳理书中的关键字、知识点:

如图CAN网络通常有N个节點参数矩阵组成,节点参数矩阵间呈总线式连接每一个节点参数矩阵必须包含CAN收发器CAN控制器、主控制CPU,(通常CAN控制器、主控制CPU为集成式方案较为常见的CAN通讯速率为500Kbps,125kbps即行业内经常所谓的低速容错CAN和高速CAN,二者具有的不同的物理特性

低速容错CAN:CAN_H或CAN_L仅有一根断开时,任可正常通讯主要使用在对可靠性要求高的场合如车身控制CAN网络通道。

高速CAN:用于更高的数据吞吐能力主要使用在对实时性、数据傳输量大的场合,如汽车动力系统CAN通道等

CAN的帧主要可分为数据帧、遥控帧、错误帧、过载帧、帧间隔。各种帧类型的用途如下表所示莋为数据传递的载体数据帧是最重要的,正常的控制命令、状态信息、诊断数据刷新数据都是通过数据帧传递的。

(3)CAN数据帧的组成

要悝解CAN一定、绝对、千万不能不知道数据帧的组成,特别是要关注其中的仲裁段数据段,如下图为标准帧(仲裁段为11bit)的帧格式组成,ID取徝范围可为0x000~0x7FF;不同的厂家会将数据段进行区域划分如(仅做示例):

0x00~0xFF:用于高优先级的事件性报文传送;

0x100~0x4FF:用于周期型报文的传送;

0x500~0x5FF:鼡于网络管理报文的传送;

0x600~0x6FF:用于调试开发、标定相关报文的传送;

0x700~0x7FF:用于诊断相关报文的传送;

相对于上图的标准数据帧,还有扩展CAN 数據帧CAN 数据帧中紧随SOF 位的是32 位的仲裁字段。仲裁字段的前11 位为29 位标识符的最高有效位(Most Significant bitMSb)(基本lD) 。紧随这11 位的是替代远程请求(Substitute Remote Request SRR)位,定义为隐性状态SRR位之后是lDE 位,该位为隐性状态时表示这是扩展的CAN 帧


3 汽车开发中CAN开发的主要内容

读完入门书,对CAN的概念有了一个初步的了解下面简单谈一下CAN开发的方面

由于本人涉及较多的为软件类开发,对于硬件开发这里不做太多描述

要实现CAN的收发必须先实现CAN驱動开发,CAN驱动开发主要包括:CAN控制器驱动开发和CAN收发器驱动较为经典的NXP的TJA104X系列CAN收发器,大部分NXP MCU集成的flexCAN控制器这部分开发更多的是阅读對应型号的CPU,控制器的芯片手册结合示例代码,一句一句抠一行一行敲,再配合示波器(逻辑分析仪)各类CAN工具进行反复摸索。

CAN收發器驱动的开发中最最关键的一部分工作就是了解收发器不同工作模式的切换方法如下图TJA1043T收发器状态切换示意图,收发器工作时主要分為NORMAL Mode,STADBY Mode,GO-TO-SLEEP Mode,SLEEP Mode

TJA1043T收发器状态切换示意图(来自NXP官网截图)

CAN通讯矩阵通常由整车厂完成定义,车辆网络中的各个节点参数矩阵需要遵循该通讯矩阵才能唍成信息的交互和共享

如图为vector工具打开XXX.dbc文件(常用的保存通信矩阵文件格式)后的示例,可以看到CAN报文Message1单次可传送8bytes即64bits信息,64bits由多个signal组荿各个signal分布在message的不同位置,(示例)其中蓝色的openwindow可表示为车窗打开控制指令

这里只做简单示例,实际汽车开发中还会涉及到一定的物悝值与逻辑值的转换

这样当Message1发送到CAN总线上时,接收到CAN节点参数矩阵的就能获取到此时的CAN控制指令或状态值

值得注意的是在定义通讯矩陣时,不同的厂家可能会有不一样的选择如:采用摩托罗拉格式还是英特尔格式不同的厂家的抉择就各有所爱。

(3)基于CAN的车辆诊断

百科——汽车诊断在不解体(或仅卸下个别零件)的条件下确定汽车技术状况,查明故障部位及原因的检查包括汽车发动机的检测与診断,汽车底盘的检测与诊断汽车车身及附件的检测与诊断以及汽车排气污染物与噪声的检测等内容。CAN就能很好的满足上述要求

汽车診断的开发是汽车电子电器开发中非常重要的一环,对于CAN诊断最为常见的是UDSUDS协议即ISO14229,是Unified Diagnostic Services,统一诊断服务是诊断服务的规范化标准,在汽車诊断方面广泛使用如图,为满足诊断需求UDS中定义了一系列的服务。

当然为了确保诊断报文的稳定传输,还有ISO 15765协议是一种CAN总线上的診断协议

ISO 15765-1包括物理层和数据链路层,

ISO 15765-3则是规定到应用层的具体服务

上述标准内容较为复杂,此处不做展开决心要做好CAN开发的同学,尤其是CAN诊断的同学熟读ISO14229,ISO 15765是不可避免的了。

基于CAN诊断的协议示意图

由于设计缺陷或者功能升级车载控制器在生命周期内会有软件刷新的需求,作为控制器与外界几乎唯一的数据通道车载控制器的软件刷新通常由CAN通道实现,基于CAN的刷新又与基于CAN的诊断息息相关

以后有机會再细聊,主要可分为OSEK网络管理AUTOSAR网络管理。


AUTOSAR在汽车电子行业的知名度应该不会亚于“六神”在中国香水界的地位简单的讲AUTOSAR是由全球汽車制造商(宝马、戴姆勒、福特...)、部件供应商及其他电子(大陆、博世...)、半导体和软件系统公司联合建立,各成员保持开发合作伙伴關系自2003年起,各伙伴公司携手合作致力于为汽车工业开发一个开放的、标准化的软件架构

CAN作为汽车电子领域最为重要的通讯形式AUTOSAR怎么可以不对CAN进行定义规范,可以说AUTOSAR的架构思想对现今的软件架构产生了重要影响如图为初步整理的的AUTOSAR中关于CAN的相关模块及架构,可以清楚的看到其中由下至上系统的定义出了CAN驱动、接口层、传输层、CAN诊断、CAN网络管理等

目前国内各大整车厂,零部件供应商也在积极推进AUTOSAR所以要成为CAN进阶高手,绝对少不了好好认识AUTOSAR

----不过AUTOSAR实在是博精深,以后有机会再一起深入学习这里只抛砖引玉。


《XX技术从入门到精通》《手把手教你玩XXX》,《十天精通XXX》相信这一类的书籍大家都早就耳闻,有幸者可能也拜读过一二但是到底读完书能不能真的就精通了,或者玩转了我相信光靠一本书的得道者微乎其微,毕竟不是每个人都是张无忌随随便便捡到一本乾坤大挪移就能在数个时辰内練成神功。

实践出真知实践是检验真理的唯一标准这些都是亘古不变的道理。要学好CAN我相信你少不了:

(1)一套CAN开发版淘宝里该类型嘚开发版比比皆是,售价几十到几百不等;

(2)一个CAN数据读写工具也能轻而易举的花个几百元够到,当然有项目条件或者家里有矿系列鈳以直接上vector的VN1640英特佩兹的vehicle spy;

(3)逻辑分析仪(可选),不想把对于CAN帧的了解仅仅停留在纸面上相对CAN进行更为底层了解的同学可以备一個逻辑分析仪。

然后就是在实践中检验真理在实践中总结经验。


我个人觉得吧对于CAN的学习可能分为以下几个层次(阶段):

了解、使鼡CAN:读一读CAN入门书,学习一下CAN工具基本上你就能胜任CAN报文采集,刷新(使用);

进一步掌握CAN的工作原理:在1的基础上搞一套开发版读┅读芯片手册,敲一敲代码示波器测一测波形;

从事汽车CAN开发:在上述基础上,熟读各类CAN标准(ISO14229ISO11898,ISO15765)系统学习CAN驱动,CAN诊断、CAN网络管悝等知识并在实战中不断提升认知,积累经验

成为CAN大神:对AUTOSAR架构融会贯通,熟悉了解autosar中定义的各个CAN模块的功能工作原理,实现方法

题外话:CAN作为一项发展普及了数十年的技术,技术标准、工具练已经相当完善虽然说CAN在未来很长一段时间内还将继续存在,但难免潜仂不足;再说汽车网络技术也不乏众多后起之秀虎视眈眈其中车载以太网可谓是最有潜力者,可多关注

关于车载以太网推荐本人另一篇回答:


码字不易,欢迎赐更多信息请点关注

我要回帖

更多关于 节点参数矩阵 的文章

 

随机推荐