本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢!
此专栏是关于《自动驾驶技术概览》书籍的笔记。
6.CAN总线技术
6.1 概述
CAN总线的发展:随着电子技术的不断发展及人们对汽车安全性、舒适性、操纵稳定性及节能环保的要求,诞生了很多新的汽车电子控制系统,同时带来了汽车上各种线束的增多,为适应"减少线束数量""通过多个LAN,进行大量数据的高速通信"的需要,德国电气商博世公司开发出面向汽车的CAN通信协议;此后,CAN通过ISO 11898及ISO 11519进行了标准化,现在在欧洲已是汽车网络的标准协议。
汽车总线系统的研究及发展:
- 研究汽车的基本控制系统(舒适总线),如:照明、电动车窗、中央集控锁等;
- 研究汽车的主要控制系统(动力总线),如:电喷ECU控制系统、ABS系统、自动变速器等;
- 研究汽车各电子控制系统之间的综合、实时控制和信息反馈。
汽车上主要采用的两种CAN总线:
- 一种用于驱动系统的高速CAN,速率可达500Kb/s,最高可达1000Kb/s;
- 一种用于车身系统的低速CAN,速率是100Kb/s;
- 驱动系统CAN(CAN-High,动力总线):主要连接对象是发动机控制器(ECU)、ABS控制器、安全气囊控制器等,都是控制与汽车行驶直接相关的系统;
- 车身系统CAN(CAN-Low,舒适总线):主要连接和控制汽车内外部照明、灯光信号、空调、刮水电机、中央门锁与防盗控制开关、故障诊断系统、组合仪表及其他辅助电器等;
CAN总线的优点:
- CAN总线实时性强、传输距离较远、抗电磁干扰能力强、成本低;
- CAN总线采用双线串行通信方式,线束和接头比较少,降低了故障率,并具有可靠的错误处理和检错机制,检错能力强,可在高噪声干扰环境中工作;
- 具有优先权和仲裁功能,多个控制模块通过CAN控制器挂到CAN总线上,形成多主机局部网络,通信方式灵活;
- CAN网络上的节点信息分成不同的优先级,可满足不同的实时要求,提高了信息传输的效率。
6.2 工作原理
6.2.1 CAN总线的逻辑电平
- CAN总线由两条数据线组成,为了减少回波反射,CAN总线的两端都有一个120Ω的电阻,各元件分别接在这两条信号线上;
- CAN总线为隐性(逻辑1)时,CAN_H和CAN_L的电平都为2.5V(电位差为0V);CAN总线为显性(逻辑0)时,CAN_H和CAN_L电平分别为3.5V和1.5V(电位差为2.0V);
- 两条信号线的显隐性是线"与"的关系,即:同时传送显性和隐性位时,总线呈现显性状态;同时传送显性位时,总线呈现显性状态;同时传送隐性状态位时,总线呈现隐性状态;
6.2.2 CAN协议
CAN协议的5种帧:数据帧、远程帧、错误帧、过载帧、帧间隔;
6.2.2.1 数据帧实例
数据帧根据其标识符(ID)位数不同分为:标准帧、扩展帧;
标准帧的ID是11位,扩展帧的ID是29位;
数据帧分为7段:帧起始段、仲裁段、控制段、数据段、CRC段、ACK段、帧结束段;
- 帧起始段:表示数据帧开始的段,标准帧和扩展帧均以1位显性电平表示帧的开始;
- 仲裁段:表示数据优先级的段,标准帧仲裁段由11位ID和RTR位组成,扩展帧由29位ID和RTR、SRR、IDE位组成;RTR位标识是否远程帧(0为数据帧,1为远程帧),SRR位为代替远程请求位,代替了标准帧的RTR位,IDE为标识符选择位(0为使用标准标识符,1为使用扩展标识符);
- 控制段:由6个数据位组成,在标准帧中,由IDE、r0、DLC组成;在扩展帧中,由r0、r1、DLC组成;r0和r1是以显性电平的保留位,DLC段表示数据的长度;
- 数据段:由8个字节组成,传感器的数据存储在数据段中;
- CRC段:用于检查帧传输错误,由15位CRC顺序和1位CRC界定符组成;
- ACK段:用于确认是否正常接收,由ACK槽和ACK界定符组成;
- 帧结束段:由7个隐性位组成;
6.2.3 CAN的位时序
CAN总线通信协议的每一帧可以看作一连串的电平信号,每一个电平信号代表一位,一帧中包含很多位,由发送单元在非同步的情况下发送的每秒钟的位数称为位速率;一位可分为4段:同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)、相位缓冲段2(PBS2);
6.2.4 数据的发送和接收
- CAN总线的节点向总线发送数据时,以报文形式发送到总线上的每一个节点,对于总线上的每一个节点,无论数据是否发给自己,都会对数据进行接收;
- 当某个节点向另一个节点发送数据时,该节点先把数据和自己的标识符传送给自己的CAN芯片,当节点收到总线分配后,转为发送报文状态,CAN芯片将节点的数据组织成报文的格式发出,其他节点处于接收状态;每个处于接收状态的节点对接收到的报文进行检测,判断报文是否是发给自己的,以确定是否有效处理;
- 当总线上挂载很多节点时,总线信息增多,多个单元同时开始发送时,各发送单元从仲裁段的第一位开始仲裁,连续输出显性电平最多的单元可继续发送;具有相同ID的数据帧和远程帧在总线上竞争时,仲裁段的最后一位为显性位的数据帧具有优先权,可继续发送。
6.3 工作特点
- 多主竞争式的总线结构。
CAN总线上的节点没有主从之分,所有的节点可以在任意时刻向其他节点发送信息,实现节点之间的相互通信; - 取消了单元的地址信息。
CAN总线不再使用地址将节点进行编码,而是通过报文的ID来区分每个节点,CAN总线上的节点数量在理论上几乎不受限制; - 独特的逐位冲突仲裁原则。
当多个节点同时发送消息时,为了避免总线上发生冲突,CAN总线的仲裁机制便会发生作用;在报文仲裁段,显性电平多的报文优先级最高; - 自我诊断功能。
CAN总线可对自身的状态进行检测,包括:CRC错误、应答错误、固定位错误、填充错误和形式错误等;当检测到错误时,CAN控制器会在下一位发出错误帧,根据发生的错误不同,设备可能处于错误主动状态,错误被动状态及总线关闭状态;
6.4 SAE J1939协议
J1939协议包括:物理层、数据链路层、网络层、应用层;
6.4.1 物理层
物理层定义电气接口和物理介质,包括:接口用的连接器的尺寸、引脚数目和排列、固定装置,每条电缆电平的范围和代表意义;
项目 | 内容 |
---|---|
物理介质 | 屏蔽双绞线 |
终端电阻 | 最远端两个节点各匹配一个120Ω电阻 |
最大传输距离 | 40m |
挂载节点数量 | 一般最多允许30个 |
信号传输方式 | 差动电压 |
总线电平 | 显性(逻辑0,CANH3.5V,CANL1.5V);隐性(逻辑1,CANH=CANL=2.5V) |
6.4.2 数据链路层
一个CAN的数据帧由帧起始段、仲裁段、控制段、数据段、循环冗余校验CRC段、应答ACK段和帧结束段组成;协议通过协议数据单元(PDU)进行传输,协议数据单元由7个部分组成,分别为:优先权、保留位、数据页、PDU格式、PDU特定域、源地址和数据域;
6.4.3 网络层和应用层
- 网络层:定义了网段之间的连接协议,当同时存在不同传输速度或使用不同传输介质的多个网段时,必须有至少一个网络互联电控电源提供一个网段到另一个网段的报文传递功能;主要由中继器、网桥、路由器和网关等组成,其功能包括:报文转发,报文过滤,波特率转换,地址翻译,协议转换;
- 中继器:增强数据信号,使数据传输更远;
- 网桥:分隔网络数据流以减少每个网络分支的数据信息流量,提高网络的效率和可靠性;
- 路由器:具备网桥的全部功能,且可以使其连接的不同网段具有独立的地址空间;
- 网关:可以在不同协议或报文集的网段之间传送数据;
- 应用层:为应用过程访问OSI环境提供了一种方法,包括:支持应用的管理功能和通用的机制;以PGN和SPN的方式具体规定了车辆使用的每个参数的数据长度、数据类型、分辨率、数据范围等;
6.5 百度自动驾驶汽车的线控技术应用
6.5.1 线控转向系统
百度Apollo自动驾驶汽车的线控转向系统具有转向控制、转向反馈、人工接管、越界处理等功能;
- 转向控制:转向控制的信号有使能信号、目标方向盘转角和目标方向盘转速三种;
- 使能信号:用于人工驾驶和自动驾驶的切换;
- 目标方向盘转角和目标反向盘转速:在自动驾驶模式下控制汽车的转向角度和速度;
- 转向反馈:把汽车实际的方向盘转速、当前的驾驶模式及车体-牵引箱的相对角度反馈到决策中心;
- 人工接管:当驾驶员施加到方向盘上的扭矩超过该门限值且达到一定时间后,转向控制切换到人工模式,退出线控转向自动驾驶模式后,转向使能上升沿触发再次进入线控转向自动驾驶;
- 越界处理:越界拒绝执行,并退出自动驾驶模式。
6.5.2 线控驱动系统
百度Apollo自动驾驶汽车具有驱动控制、驱动反馈、人工接管和越界处理等功能;
- 驱动控制:驱动控制的信号有使能信号、目标加速踏板位置、车辆目标纵向加速度和车辆目标驱动转矩,通过获取总线上的这些目标控制数据来进行汽车驱动的控制;
- 驱动反馈:将汽车的加速踏板位置、发动机转速、汽车车速、轮速、加速度等信息反馈给决策中心;
6.5.3 线控制动和线控挡位系统
- 线控制动具有制动控制、制动反馈、人工接管、越界处理等功能;
- 制动控制信号:使能信号、制动踏板目标位置信号、目标减速度及制动灯控制信号,通过这些目标量控制汽车的制动;
- 制动反馈信号:反馈当前驾驶模式、制动踏板位置、制动灯状态等信息,供决策中心处理;
- 线控挡位具有挡位控制、挡位反馈等功能;
- 挡位控制:控制汽车切换到要求的挡位,信号包括:使能信号、目标挡位、当前挡位、驻车控制使能等,目标挡位指示将要切换的挡位P、R、D、N;
- 挡位反馈:将汽车的挡位信息反馈给决策中心;
6.5.4 其他线控系统
- 线控灯光:对转向灯,远近灯、危险报警闪光灯的控制及这些状态的反馈;
- 刮水器:控制刮水器的速度和模式;
- 喇叭控制:控制喇叭的状态、鸣笛时间的长短。