你真的了解can与诊断吗?14229、1898、J1939有什么区别与联系?

知识性|故事性|趣味性


关注本公众号,学习汽车知识,每天进步一点点!


今日语录:生命中最好的事情就是找到那个知道你所有的错误和缺点,却依然认为你非常棒的人。


前言

两年前,我写过一篇文章车内通信技术有哪些?CAN、LIN、以太网(SomeIP、DoIP)等,主要介绍了车内的一些通信技术,当时阅读量有2000多。


在扩宽个人知识面的同时,也能与行业内的人互相学习,共同进步,让我觉得做这个公众号是有价值的。


进入汽车行业以来,我对can通信、诊断时有接触,但因为不是专业搞这方面的,所以有时候总是会把一些标准搞混淆。


利用周末时间,我把行业内常见的can通信、诊断协议进行了梳理,希望能对大家有所帮助。


这些标准在ISO官网下载,一份就要100多元,好在我从朋友那里都搜集到了,现在免费分享给大家。(感谢贡献标准的朋友!)


获取方法:在后台直接发送对应标准的编号(如:11898),会弹出一个链接,点进去免费下载即可。


做汽车电子产品开发,一定会接触到ISO 11898、UDS诊断、ISO 14229等,但你知道他们之间有什么区别与联系吗?


既然已经有ISO 11898了,为什么美国汽车工程师协会(SAE)又要搞一个SAE J1939出来?


......


诸如此类的问题,我之前也不知道,今天,我们一起把他们搞清楚。


常见can与诊断协议分类

1.CAN通信协议:汽车的"国际通行证"

要想把上面这些问题搞清楚,先得从CAN的起源说起。


汽车上为什么需要CAN总线?


CAN总线出现之前,汽车上各个ECU之间是点对点通信的,这种通信方式必然会使汽车线束变得十分庞大、复杂!



据统计,一辆采用传统布线方法的高档汽车中,线束长度高达2000米!


而且,随着汽车电子技术的快速发展,ECU越来越多,这进一步加剧了线束系统给整车带来的空间及成本压力。


为了解决多个ECU之间的复杂通讯问题,从1980年初开始,博世的工程师考虑将其他行业的总线系统引入汽车行业。经过评估,并没有可用的网络协议能够满足汽车行业的需求。于是,博世于1983年开始开发新的串行总线系统。


这种新的总线系统就是我们后来熟知的CAN总线(Controller Area Network,控制器局域网)。



在CAN总线系统中,各个ECU通过双绞线(CAN_H和CAN_L)连接,每个单元都是独立的CAN节点。总线的两端要各接一个120Ω的电阻,用于匹配总线阻抗,吸收信号反射及回拨,从而提高数据通信的抗干扰能力及可靠性。



CAN总线组成


各个ECU通过判断CAN总线的电平,即可得到信号值。在CAN总线中,电平分为显性电平和隐性电平,显性电平表示”0“,此时,CAN_H比CAN_L电平高,分别为3.5V和1.5V,电位差为2V;隐形电平表示”1“,此时,CAN_H和CAN_L电压都为2.5V,电位差为0V。


CAN总线中的电平

CAN总线就是通过显性和隐性电平的变化来传输数据的。


数据从CAN总线起始节点发出,到达终点,各个ECU各取所需。就像一辆公交车,沿途经过各个站点。


因此,CAN总线也被形象地称为CAN-BUS总线。


CAN-BUS总线


CAN总线取代了昂贵而笨重的传统配电线束,降低了整车成本,传输效率更高,功能更加完善。


1986年2月,在底特律SAE大会上,CAN总线正式发布。

1987年,英特尔交付了第一款CAN控制器芯片82526,这是CAN协议的第一个硬件实现。从1983年到1987年,仅仅4年时间,一个想法就变成了现实。此后不久,飞利浦半导体推出了82C200。

1991年,奔驰500E成为世界上第一款搭载CAN总线的量产车型。同年,博世发布了CAN2.0标准,分为CAN2.0A(11位标识符)和CAN2.0B(29位标识符)。

1993年11月,国际标准化组织(ISO)发布了CAN标准ISO11898:1993,同时发布的还有ISO 11519-2。这是世界上第一版CAN国际标准,随后进行了多次修订和演进。

ISO11898:1993同时定义了数据链路层和高速物理层,通俗的讲就是它规定了如何在电线上发送和接收数据,通信速度为5kbps-1Mbps(高速CAN)。

ISO 11519-2则定义了通信速率在125kbps以下的通信标准(低速CAN),其通信速度相对较慢,但优点在于其对硬件的要求低、成本低。同时,该标准允许在CAN总线连接失败时通信得以继续进行,因此又叫容错CAN(LSFT CAN)。

从2003年开始,ISO 11898 CAN标准分离为ISO 11898-1和ISO 11898-2两部分,后续又发布了其他部分,并进行了整合。

在2016年之前,ISO 11898涵盖6个部分,即:

(ISO 11898-1-2003)

Part1:Data link layer and physical signalling

(ISO 11898-2-2003)

Part2:High-speed medium access unit

(ISO 11898-3-2006)

Part3:Low-speed,fault-tolerant,medium-dependent interface

(ISO 11898-4-2004)

Part4:Time-triggered communication

(ISO 11898-5-2007)

Part5:High-speed medium access unit with low-power mode

(ISO 11898-6-2013)

Part6:High-speed medium access unit with selective wake-up functionality

在2016年,其中的Part2、Part5、Part6被合并成了一个新的Part2,即:ISO 11898-2-2016,原有的ISO 11898-5-2007和ISO 11898-6-2013被撤回。

值得一提的是ISO 11898-3-2006的发布取代了最早发布的ISO 11519-2,所以如今很多人没听过ISO 11519。

行文至此,终于知道了ISO 11898的来龙去脉,以及其与ISO 11519的关联。

2.CAN诊断协议:汽车的“翻译官”

CAN通信协议只规定了信号的传输规则,实际上,从上个世纪90年代开始,汽车的电子化趋势越来越明显,各种传感器、执行器和控制单元的故障诊断成了一个大问题。

每个设备都有自己的诊断方法,这无形中增加了汽车维修的难度及成本。

为了解决这个问题,ISO组织于1991年开始研究诊断相关标准。

诊断的概念来源于医学,当病人出现头晕、发烧、呕吐等不适症状时,医生通过询问、观察或者仪器检测,得到相关数据,并进行对症治疗。

车辆的诊断过程也有类似的地方,外部诊断设备(Tester),通过汽车总线连接车辆,获取车辆各个ECU的状态信息,从而在不拆解车辆的情况下为车辆维修提供可靠的依据。

诊断时,Tester端与ECU端通过一问一答的形式进行通信,因此,需使用同样的“语言”——诊断协议。

1996年,最早的诊断协议ISO 9141出现,该协议的典型特点是通信前需要双方建立握手协议,比较繁琐,随着技术的发展及时间的推移,该协议已经逐步退出历史舞台了。

到了1999年,ISO 14230诞生,也就是常说的KWP2000(Keyword Protocol 2000)。该协议实现了一套完整的车载诊断服务,最初使用K-Line(又叫K线)串行传输,最大通信速率10.4Kbps。现在已经没有多少车企应用此诊断协议了。

后来,基于CAN的KWP2000,即ISO 15765于2001年出现了,最大速率可达1Mbps。

该协议包含如下几个部分:

同年,还出现了ISO 15031,该协议与排放密切相关,且需要强制执行,具有法规效应,最初主要目的是环保。

该协议经过多年演变,最新版本包含如下几个部分:

到了2006年,我们熟知的ISO 14229(UDS,Unified Diagnostic Services 统一诊断服务)登场了!该协议只定义了诊断服务,只是一个应用层协议,不涉及网络,可以基于任意总线。

该协议经过多年发展和演变,包含如下几个部分:

如下是14229-1中的一张截图,我们可以更直观地看到14229、15765、11898之间的区别与联系。

3.SAE J1939:大型车辆的“特使”

上述已经介绍了汽车上应用最广泛的CAN通信协议及诊断协议,那么SAE J1939又是干什么的?

我们知道,ISO 11898仅规定了CAN总线的物理层和数据链路层,应用层并未定义。

美国汽车工程师协会(SAE)为了实现总线协议体系的标准化,在CAN2.0B的基础上制定了应用于大型货车和客车的协议,物理层、数据链路层基本上沿用了ISO 11898规范,并增加了网络层、应用层和网络管理规范,所以,SAE J1939便出现了。

SAE J1939协议文档非常庞大,自成一体,常用部分如下:

该协议由SAE协会维护,目前在不断更新中,应用十分广泛,在商用车领域有着举足轻重的地位,而在乘用车领域一般则不使用。

J1939在乘用车领域未广泛使用的主要原因是乘用车产品更新迭代快、功能需求多样,采用自定义(应用层)的设计方式能最大程度发挥CAN网络设计灵活性,便于进行车型迭代升级。

一般的商用车功能需求单一,如果使用J1939协议,可以极大简化设计工作,且软件复用性高,节省开发成本。

但随着商用车越来越追求乘用车化,J1939协议可能需要持续更新,否则无法满足商用车日益增长的复杂功能需求。

此外,由于J1939标准化定义的特性,严格遵守J1939协议的车辆总线很容易被破解(通过ID可知晓发送节点及PGN,只要不是自定义的PGN,均可通过协议查找出报文名称及信号)。

结语

本文简要介绍了常见CAN通讯协议及诊断协议,只起到抛砖引玉的作用,由于篇幅所限,无法展开介绍,对某个协议感兴趣的读者,可自行下载研读。

获取方法:在后台直接发送对应标准的编号(如:11898),会弹出一个链接,点进去免费下载即可。

END

原文链接:,转发请注明来源!