本文主要介绍一下汽车电子模块开发中CAN总线开发应用的一些经验总结
本文仅针对乘用车的CAN总线开发路线进行总结,商用车的可以百度搜索J1939
1、什么是CAN总线 百度 CAN总线
2、常见的整车CAN总线拓扑图
3、基于CAN总线的优点
a.分布式的功能设计,不同功能对应不同的控制器,不同控制器之间使用总线进行通信,节省线束,方便排错问题等
b.CAN总线具有高速率,多主机,能够自动仲裁等有点
……
更详细查百度
4.车上使用CAN总线能做什么
a.各节点之间进行通信
一般的乘用车上使用的CAN通信传输层协议遵循 OSEK-COM标准。该标准定义了报文传输的方式,定义了周期帧、事件帧、周期事件帧等类型的报文,应对不同需求。
b.对控制器进行诊断
在设计一个控制器之初,就需要考虑模块自我诊断功能,设计对应的诊断电路。控制器在运行过程中,能够及时发现鼓掌并提示。有些严重的故障需要在仪表中指示,其他的故障信息需要存储在存储器里,通过特定的诊断设备提取出来,便于维护和对故障进行分析。
c.在线刷新程序
有些控制器安装位置很很不好拆卸安装,这时,在开发阶段或是在售后时,需要更换控制器时,只要通过总线对控制器程序进行刷新即可。
d.在线标定
对于ABS、EMS等模块,需要实车在线标定。通过CAN线,可以实时读取到控制器内部的信息,用于整定算法参数。
5、各控制如何CAN总线通信
一般的乘用车上使用的CAN通信传输层协议遵循 OSEK-COM标准。该标准定义了报文传输的方式,定义了周期帧、事件帧、周期事件帧等类型的报文,应对不同需求。
对于总线的休眠唤醒管理称之为网络管理,常用的网络管理为OSEK-NM。
物理层、数据链路层标准 ISO 11898。
关键词 OSEK-COM OSEK-NM
6、对控制器的诊断
诊断一般能够实现的功能有:读软硬件版本,功能配置,输入输出控制,读当前历史故障码等等。
主要形式为一问一打的模式,诊断仪发送一个服务请求,控制器执行后,发送一个服务相应。
如果想了解的话,可以从应用层标准往下看,先了解诊断能做些什么,然后再去了解,诊断如何进行,最后再去了解,诊断如何实现。
OSI layer KWP2000-Kine KWP2000-CAN UDS-CAN
应用层(Application layer) ISO 14230-3 ISO 15765-3 ISO 14229
表述层(Presentation layer) N/A N/A N/A
会话层(Session layer) N/A N/A ISO 15765-3
传输层(Transport layer) N/A N/A ISO 15765-2
网络层(Network layer) N/A ISO 15765-2 ISO 15765-2
数据链路层(Data link layer) ISO 14230-2 ISO 11898-1 ISO 11898
物理层(Physical layer) ISO 14230-1 ISO 11898 ISO 11898
详细可以搜索对应的标准来看。
7、在线刷新程序
在汽车电子中,bootloader的概念一般指在线刷新程序。
可以通过CAN总线、LIN总线等对控制进行再次编程,常用通信协议为UDS协议(ISO 14229)。
8、在线标定
对于标定方式,也有一套标准,定义了整个标定的协议。
我对这个不是很了解,具体可以查询关键词 ccp(CAN Calibration Protocol)
以上协议目前使用得最为广泛。
但是,随着软件重用的需求越来越急切,一些车厂和零部件供应商联合起来推出一个叫autoSAR的东西。
这是一个软件的标准构架,定义了标准软件接口,致力与建立一个标准的软件接口规范,标准底层代码,提高软件的可重用性。
目前autoSAR的实现思路是,通过配置工具生成软件架构、底层驱动、以及应用层与底层交互的抽象接口。
然后只要在这个框架下编写应用层控制逻辑和算法等等。
控制逻辑和算法可以使用matlab等工具进行模型设计,然后生成对应的autoSAR风格的代码。
以上是即时写的,有些凌乱,希望能为初入汽车电子网络开发提供一个入门的路线。 |
|