汽车仪表盘CAN总线实现

汽车仪表盘CAN总线实现

  • 一、CAN总线控制器框图
  • 二、Linux下的 Soxket CAN 总线分层模型
  • 三、CAN分层模型以及功能描述
  • 四、Linux Socket CAN驱动模型
  • 五 OBD接口
  • 六 OBD模拟器的使用

一、CAN总线控制器框图

CAN总线是一种多主控(Multi-Master)的总线系统,CAN网络的消息是广播式的,亦即在同一时刻网络上所有节点侦测的数据是一致的,因此比较适合传输诸如控制、温度、转速等短消息。

CAN总线的物理层是将ECU(电子控制单元)连接至总线的驱动电路。ECU的总数将受限于总线上的电气负荷。物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据的编码/解码、位定时和同步的实施标准。

理论上,CAN总线上的节点数几乎不受限制,可达到2000个,实际上受电气特性的限制,最多只能接100多个节点。

CAN的数据链路层是其核心内容,其中逻辑链路控制(LOagie Link Control,LLC)完成过滤、过载通知和管理恢复等功能。

CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。

CAN总线的特点:

  • 1、具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;
  • 2、采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;
  • 3、具有优先权和仲裁功能,多个控制模块通过CAN 控制器挂到CAN-bus 上,形成多主机局部网络;
  • 4、可根据报文的ID决定接收或屏蔽该报文;
  • 5、可靠的错误处理和检错机制;
  • 6、发送的信息遭到破坏后,可自动重发;
  • 7、节点在错误严重的情况下具有自动退出总线的功能;
  • 8、报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。

CAN总线的优点:

  • 1、CAN为多主方式工作,网络上任一节点均可在任一时刻主动地向网络上其他节点发送信息,而不分主从。
  • 2、在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时需要,优先级高的数据最多可在134μs内得到传输。
  • 3、CAN采用非破坏总线仲裁技术。当多个节点同时向总线发送信息发生冲突时,优先级较低的节点会主动退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下,也不会出现网络瘫痪的情况(以太网则可能)。
  • 4、CAN节点只需要通过对报文的标识符滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。
  • 5、CAN的直接通信距离最远可达10km(速率5kbps以下)通信速率最高可达1Mbps(此时通信距离最长为40m)。
  • 6、CAN上的节点数取决于总线驱动电路,目前可达110个。标准帧报文标识符有11位、扩展帧的报文标识符(29位)的个数几乎不受限制。
  • 7、报文采用短帧结构、传输时间短,受干扰概率低,保证了数据出错率极低。
  • 8、CAN的每帧信息都有CRC校验及其他检错措施,具有极好的检错效果。
  • 9、CAN通信介质可为双绞线、同轴电缆或光纤,选择灵活。
  • 10、CAN节点在错误严重的情况下可自动关闭输出功能,以使总线上其他节点的操作不受影响。

汽车CAN总线节点ECU的硬件设计:
 
汽车CAN总线研发的核心技术就是对带有CAN接口的ECU进行设计,其中ECU的CAN总线模块由CAN控制器和CAN收发器构成。CAN控制器执行完整的CAN协议,完成通讯功能,包括信息缓冲和接收滤波。CAN控制器与物理总线之间需CAN收发器作为接口,它实现CAN控制器与总线之间逻辑电平信 号的转换。

汽车仪表盘CAN总线实现_第1张图片

二、Linux下的 Soxket CAN 总线分层模型

CAN被细分为三个层次:

(1)CAN对象层(the object layer);
(2)CAN传输层(the transfer layer);
(3)CAN物理层(the phyical layer);

它在ISO/OSI模型中的分层如图:

汽车仪表盘CAN总线实现_第2张图片

三、CAN分层模型以及功能描述

对象层的作用范围包括:

(1)查找被发送的报文。
(2)确定由实际要使用的传输层接收哪一个报文。(即选择报文对象)
(3)为应用层相关硬件提供接口。

传输层的作用主要:

(1)传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。
(2)总线上什么时候开始发送新报文及什么时候开始接收报文,均在传输层里确定。
(3)位定时的一些普通功能也可以看作是传输层的一部分。
(4)传输层的修改是受到限制的。

物理层的作用:

在不同节点之间根据所有的电气属性进行位信息的实际传输。同一网络内,物理层对于所有的节点必须是相同的。

汽车仪表盘CAN总线实现_第3张图片

四、Linux Socket CAN驱动模型

汽车仪表盘CAN总线实现_第4张图片

五 OBD接口

车载自动诊断系统。这套系统能在汽车运行过程中实时监测发动机电控系统及车辆的其它功能模块的工作状况,如有发现工况异常,则根据特定的算法判断出具体的故障,并以诊断故障代码(DTC,Diagnostic Trouble Codes)的形式存储在系统内的存储器上。

系统自诊断后得到的有用信息可以为车辆的维修和保养提供帮助,维修人员可以利用汽车原厂专用仪器读取故障码,从而可以对故障进行快速定位,以便于对车辆的修理,减少人工诊断的时间。

由于初期不同厂商的OBD系统之问各行其是、互不兼容,所以为了统一标准,美国汽车工程师协会(SAE,Society of Automotive Engineers)1988年制定了OBD-II标准。OBD—II实行标准的检测程序,并且具有严格的排放针对性,用于实时监测汽车尾气排放情况。

作为一个监测尾气排放的系统,OBD在后来的发展中开始逐渐扩大了自己的控制范围,随着车辆的各种传感器及电子化程度的提高,OBD将各项监测功能都纳入到了自己的管辖范围内。现在我们说到OBD一般都会用OBD接口这个词,因为我们在车辆上只能看到这个系统的传输接口,但它背后其实整个车辆控制系统的集合体。

六 OBD模拟器的使用

在调试汽车仪表盘时,使用汽车模拟器是必要的。
淘宝网上买了OBD模拟器,它包括三个部分:模拟汽车ECU主板,OBD分析仪,OBD诊断仪。

汽车ECU主板模拟汽车的各项数据,如车速,转速,油量,故障码等等;OBD分析仪分析CAN数据,(各种协议分析);诊断仪用来收发命令,设置和接收命令和数据的。

仪表盘APP开发完成后,运行在开发板上,再链接CAN总线,通过调节 汽车ECU主板的各类参数,结果就显示在仪表盘上。

APP见上一章节<QT3D实现一个汽车仪表盘>
汽车仪表盘CAN总线实现_第5张图片

你可能感兴趣的:(c语言)