本文主要介绍一下汽车电子模块开发中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风格的代码。 以上是即时写的,有些凌乱,希望能为初入汽车电子网络开发提供一个入门的路线。 |
欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) | Powered by Discuz! X3.4 |