基于SAE J1939协议的汽车CAN总线控制系统深度剖析与实践_第1页
基于SAE J1939协议的汽车CAN总线控制系统深度剖析与实践_第2页
基于SAE J1939协议的汽车CAN总线控制系统深度剖析与实践_第3页
基于SAE J1939协议的汽车CAN总线控制系统深度剖析与实践_第4页
基于SAE J1939协议的汽车CAN总线控制系统深度剖析与实践_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于SAEJ1939协议的汽车CAN总线控制系统深度剖析与实践一、引言1.1研究背景与意义随着现代汽车电子技术的迅猛发展,汽车的智能化和自动化程度不断提高,车辆内部的电子控制系统变得日益复杂。众多的电子控制单元(ECU)、传感器和执行器需要进行高效、可靠的数据通信,以实现汽车的各种功能。在这种背景下,CAN(ControllerAreaNetwork)总线作为一种串行通信网络,凭借其高可靠性、实时性强、抗干扰能力强以及多主工作方式等优点,成为现代汽车控制中常用的信息传输方式,被广泛应用于汽车的各个控制系统中,如发动机控制、制动系统、车身控制等。SAEJ1939协议是美国汽车工程师协会(SAE)制定的一套基于CAN总线的车辆网络串行通信和控制协议,主要应用于重型车辆、农业设备、建筑机械等领域。该协议在CAN总线的基础上,对网络层、传输层和应用层进行了详细的规范,定义了报文格式、通信参数、地址分配、网络管理等内容,使得不同制造商生产的电子控制单元能够在同一网络中实现互联互通和协同工作。它使用多路复用技术,为汽车上的各种传感器、执行器和控制器提供建立在CAN总线基础上的标准化的高速网络连接,在车载电子装置之间实现高速数据共享,有效地减少了电子线束的数量,提高了车辆电子控制系统的灵活性、可靠性、可维修性和标准化程度,更大程度地发挥了CAN优异的性能。在重型车辆中,由于其工作环境复杂、工况多变,对控制系统的可靠性和实时性要求更高。SAEJ1939协议的出现,很好地满足了这些需求,使得重型车辆的各个电子控制单元能够更加高效地协同工作,提高了车辆的整体性能和安全性。例如,在重型卡车的发动机控制系统中,通过SAEJ1939协议,发动机ECU可以实时获取车辆的行驶状态、负载信息等,从而精确控制发动机的燃油喷射和燃烧过程,提高燃油经济性和动力性能,同时减少尾气排放。在制动系统中,各制动控制单元之间通过SAEJ1939协议进行通信,实现了制动的协调控制,提高了制动的可靠性和安全性。本研究基于SAEJ1939协议进行汽车CAN总线控制系统的设计与测试,具有重要的理论意义和实际应用价值。从理论意义上看,深入研究SAEJ1939协议和CAN总线控制系统,有助于进一步完善汽车网络通信理论,为汽车电子技术的发展提供理论支持。从实际应用价值来看,设计并实现基于SAEJ1939协议的汽车CAN总线控制系统,可以提高汽车控制系统的可靠性和稳定性,降低车辆的开发成本和维护成本,同时为汽车的智能化和网联化发展奠定基础,带来更好的用户体验,具有广阔的市场应用前景。1.2国内外研究现状在国外,对SAEJ1939协议和汽车CAN总线控制系统的研究起步较早,已经取得了丰硕的成果。许多国际知名的汽车制造商和零部件供应商,如博世(Bosch)、德尔福(Delphi)、大陆(Continental)等,都在积极研发和应用基于SAEJ1939协议的汽车CAN总线控制系统。他们在协议的应用层开发、网络优化、故障诊断等方面进行了深入研究,不断提高系统的性能和可靠性。一些科研机构和高校也对SAEJ1939协议进行了理论研究和实验验证,为协议的完善和发展提供了理论支持。例如,美国密歇根大学的研究人员对SAEJ1939协议中的网络管理机制进行了研究,提出了一种改进的网络管理算法,提高了网络的稳定性和可靠性;德国亚琛工业大学的学者对基于SAEJ1939协议的汽车CAN总线控制系统的实时性进行了研究,通过优化数据传输策略,提高了系统的实时响应能力。在国内,随着汽车工业的快速发展,对SAEJ1939协议和汽车CAN总线控制系统的研究也日益受到重视。近年来,国内的一些汽车制造商和科研机构在这方面取得了一定的进展。例如,一汽、东风等大型汽车企业在重型车辆的研发中,开始应用基于SAEJ1939协议的CAN总线控制系统,并对系统的性能进行了优化和改进。一些高校和科研机构,如清华大学、上海交通大学、中国汽车技术研究中心等,也开展了相关的研究工作,在协议的解析、系统设计、测试技术等方面取得了一些研究成果。然而,与国外相比,国内在SAEJ1939协议的研究和应用方面还存在一定的差距,主要表现在以下几个方面:一是对协议的理解和掌握还不够深入,在应用层开发和网络优化方面的能力有待提高;二是相关的测试技术和设备还不够完善,难以对系统的性能进行全面、准确的测试和评估;三是缺乏自主知识产权的核心技术,在高端汽车市场的竞争力较弱。1.3研究内容与方法本研究旨在设计并实现基于SAEJ1939协议的汽车CAN总线控制系统,并对其性能进行测试和分析。具体研究内容包括:了解和分析SAEJ1939协议的特点和优势:深入研究SAEJ1939协议的分层模型、数据帧格式、通信机制、地址管理等内容,分析其在汽车CAN总线控制系统中的应用优势和适用场景。掌握汽车CAN总线控制系统的设计方法和关键技术:学习汽车CAN总线控制系统的硬件设计和软件设计方法,掌握CAN总线控制器、收发器、微控制器等硬件设备的选型和应用,以及CAN总线通信程序、数据处理程序等软件的开发技术。设计并实现基于SAEJ1939协议的汽车CAN总线控制系统:根据汽车的实际需求,设计基于SAEJ1939协议的CAN总线控制系统的总体架构,包括硬件架构和软件架构。选择合适的硬件设备和开发工具,实现系统的硬件设计和软件编程,完成系统的搭建和调试。测试控制系统的性能和稳定性:制定系统的测试方案,利用专业的测试设备和工具,对基于SAEJ1939协议的汽车CAN总线控制系统的性能和稳定性进行测试和分析。测试内容包括数据传输速率、通信延迟、丢包率、抗干扰能力等指标,评估系统是否满足汽车的实际应用需求。为了完成上述研究内容,本研究将采用以下研究方法:文献调研:查阅国内外相关的学术文献、技术报告、标准规范等资料,了解SAEJ1939协议和汽车CAN总线控制系统的研究现状和发展趋势,为研究工作提供理论支持和技术参考。系统设计:根据汽车的实际需求和SAEJ1939协议的规范,进行基于SAEJ1939协议的汽车CAN总线控制系统的总体设计,包括硬件设计和软件设计。采用模块化设计思想,将系统划分为多个功能模块,明确各模块的功能和接口,提高系统的可扩展性和可维护性。仿真分析:利用专业的仿真工具,如CANoe、MATLAB/Simulink等,对基于SAEJ1939协议的汽车CAN总线控制系统进行仿真分析。通过建立系统的仿真模型,模拟系统在不同工况下的运行情况,分析系统的性能指标,优化系统的设计参数。软硬件实现:根据系统设计方案,选择合适的硬件设备和开发工具,进行基于SAEJ1939协议的汽车CAN总线控制系统的硬件设计和软件编程。完成硬件电路板的制作、元器件的焊接和调试,以及软件程序的编写、编译和下载,实现系统的硬件和软件集成。测试分析:制定系统的测试方案,利用专业的测试设备和工具,如CANalyzer、示波器等,对基于SAEJ1939协议的汽车CAN总线控制系统的性能和稳定性进行测试和分析。根据测试结果,对系统进行优化和改进,提高系统的性能和可靠性。二、SAEJ1939协议与汽车CAN总线技术基础2.1CAN总线技术原理2.1.1CAN总线的定义与特点CAN总线,即控制器局域网(ControllerAreaNetwork),是一种支持分布式控制的串行数据通信总线,也是国际上应用最广泛的现场总线之一。它最初由德国博世公司(Bosch)于1986年为解决现代汽车中众多电子控制单元(ECU)之间的数据通信问题而开发。在传统汽车中,各电子设备之间采用点对点的布线方式,导致线束复杂、成本高且可靠性低。CAN总线的出现,有效解决了这些问题,它采用串行通信方式,通过一条总线连接多个节点,实现了数据的共享和高效传输。CAN总线具有诸多显著特点,使其在汽车电子、工业自动化等领域得到广泛应用。在可靠性方面,它采用了差分信号传输方式,通过CAN_H和CAN_L两根线传输信号,两根线的电压差表示逻辑状态,这种方式能够有效抑制共模干扰,具有较强的抗干扰能力,可确保在复杂电磁环境下数据传输的准确性。同时,CAN总线具备强大的错误检测和处理机制,包含位监控、位填充、循环冗余校验(CRC)、帧校验和应答校验等多种错误检测方式。发送节点会监控总线电平,确保发送的比特与实际总线上的比特一致;在帧起始到CRC序列之前,连续出现5个相同电平的比特后,会插入一个相反电平的填充位,接收方会去除填充位,这既确保了足够的跳变边沿用于时钟同步,也有助于检测错误;报文包含CRC校验码,接收节点进行校验以检查帧格式是否合规;发送节点通过ACK域判断是否有至少一个节点成功接收。每个节点都有发送错误计数器和接收错误计数器,根据错误严重程度能自动将节点设置为“错误主动”“错误被动”或“离线”(总线关闭)状态,防止故障节点持续干扰总线。CAN总线采用多主控制方式,网络中的任何节点都可以在任何时刻向其他节点发送信息,而无需等待总线空闲。这使得系统设计更加灵活、模块化,新增节点也更为方便。当多个节点同时向总线发送信息时,CAN总线采用基于优先级的非破坏性仲裁机制来解决冲突。每个报文都有一个标识符,标识符的值越小,优先级越高。在仲裁过程中,多个节点同时发送数据,会从起始位开始,逐个比特比较各自发送的标识符。只要发送隐性位(1)的节点监测到总线上出现显性位(0),就立即停止发送并转为接收模式,因为显性位(0)优先。最终,只有发送最高优先级标识符(数值最小)的节点会赢得仲裁,不受干扰地完成整个帧的发送,其他节点在丢失仲裁后会自动等待总线空闲后重试。这种仲裁方式不会破坏高优先级报文,保证了高优先级报文的低延迟和实时性,整个仲裁过程发生在报文传输的初始阶段(标识符域),在传输有效数据之前已完成。CAN总线的数据帧长度较短,最多为8个字节,这使得数据传输时间短,受干扰概率低。并且,它支持标准帧(11位标识符ID)和扩展帧(29位标识符ID)两种帧格式,提供了不同的寻址空间和灵活性。此外,CAN总线还具有广播与点对点通信功能。报文以广播的形式发送到总线上,所有节点都会接收到,但每个节点可以通过报文ID来决定是否接收和处理该报文,从而实现了点对点通信的效果,接收节点只处理它“感兴趣”的ID对应的报文,这使得信息可以高效地共享给多个需要它的节点。同时,在总线速率和节点电气负载允许的范围内,向现有总线系统中添加新节点通常比较容易,拓展性较好。2.1.2CAN总线的协议结构CAN协议参照ISO/OSI标准模型,定义了物理层和数据链路层,这两层协议确保了CAN总线通信的基本功能和可靠性。物理层主要负责数据的电气传输,定义了节点与总线之间的电气连接、信号的传输方式、电平标准、传输速率以及物理介质等内容。在电气连接方面,CAN总线通常采用双绞线作为传输介质,其中一根线为CAN_H,另一根为CAN_L。使用双绞线传输差分信号,大大提高了抗共模干扰(电磁干扰EMI)的能力,在工业环境或汽车环境中,电气噪声普遍存在,这种差分传输方式至关重要。在信号传输中,逻辑“0”(显性电平)时,CAN_H的电压高于CAN_L,一般CAN_H约为3.5V,CAN_L约为1.5V,差值为2V;逻辑“1”(隐性电平)时,CAN_H和CAN_L的电压差趋近于0V,通常两者都接近2.5V或电源电压的一半。显性电平(0)具有优先权,它能覆盖隐性电平(1),这是实现非破坏性仲裁的基础。总线两端(最远端点)各需接一个120欧姆的终端电阻,用以匹配线路阻抗,消除信号反射。CAN总线的传输速率可以根据实际应用需求进行配置,最高可达1Mbps,但传输速率与传输距离成反比,当需要长距离传输时,速率会相应降低,例如在长距离(千米级)传输时,速率可降至数十kbps。物理层的这些规范保证了数据在总线上能够准确、可靠地传输。数据链路层是CAN协议的核心部分,负责数据的成帧、仲裁、错误检测和处理等功能。数据链路层将上层传来的数据封装成帧,通过物理层发送到总线上,同时接收总线上的帧,并进行解析和处理。CAN总线的数据帧由多个字段组成,包括起始位、仲裁场、控制场、数据场、CRC场、应答场和帧结束。起始位为1个显性位(0),标志帧的开始;仲裁场包含报文的标识符,用于确定发送优先级,标准帧的标识符为11位,扩展帧为29位,标识符还包含远程传输请求(RTR)位,用于区分数据帧和远程帧;控制场包含一个保留位(未来扩展)和4位的数据长度码(DLC),指示数据域的字节数(0-8字节);数据场用于传输实际的用户数据,长度为0-8字节;CRC场包含15位的循环冗余校验码和CRC界定符,用于检测传输过程中的位错误;应答场包括确认槽位和界定符,接收节点在收到正确的帧后,在ACK槽位发送一个显性位(0)表示确认,发送节点在隐性位(1)中检测到显性位即表示有节点成功接收;帧结束由7个连续的隐性位(1)组成,表示帧结束。当多个节点同时发送数据时,数据链路层通过非破坏性逐位仲裁机制来决定哪个节点可以继续发送数据,确保高优先级的信息能够优先传输。此外,数据链路层还具备强大的错误检测和处理能力,通过位监控、位填充、CRC校验、帧格式检查和ACK缺失检测等多种方式,确保数据传输的可靠性。当检测到错误时,会采取相应的处理措施,如重传错误帧、发送错误标志、将故障节点设置为相应的错误状态等。2.1.3CAN总线的报文格式与通信过程CAN总线定义了四种报文格式,分别为数据帧、远程帧、错误帧和超载帧,不同的报文格式具有不同的功能。数据帧是最常用的报文格式,用于在节点之间传输实际的数据。其结构如前文所述,由起始位、仲裁场、控制场、数据场、CRC场、应答场和帧结束等部分组成。起始位标志着数据帧的开始,仲裁场中的标识符决定了数据帧的优先级和传输目标,控制场指示数据场的长度,数据场承载着实际需要传输的用户数据,CRC场用于错误检测,应答场用于确认数据的正确接收,帧结束标志着数据帧的结束。例如,在汽车发动机控制系统中,发动机ECU会通过数据帧将发动机的转速、温度、燃油喷射量等数据发送给其他相关的ECU,以实现对发动机的精确控制。远程帧用于请求其他节点发送具有特定标识符的数据帧。它的结构与数据帧类似,但没有数据场,仲裁场中的RTR位为1,表示这是一个远程帧。当某个节点需要获取其他节点的特定数据时,会发送远程帧,对应的节点在接收到远程帧后,会根据标识符发送相应的数据帧。例如,车辆的仪表盘可能会发送远程帧请求发动机ECU发送发动机转速数据,以便在仪表盘上显示。错误帧是当节点检测到总线上出现错误时发送的报文。它由错误标志和错误界定符组成,用于通知其他节点总线上发生了错误。错误标志可以是主动错误标志或被动错误标志,主动错误标志由6个连续的显性位组成,被动错误标志由6个连续的隐性位组成。当发送节点检测到错误时,会发送主动错误标志,其他节点接收到主动错误标志后,也会发送错误标志,形成一个至少12位的错误标志序列。错误界定符由8个隐性位组成,用于结束错误帧。例如,当某个节点在接收数据帧时,通过CRC校验发现数据错误,就会发送错误帧,通知总线上的其他节点丢弃该数据帧。超载帧用于通知其他节点本节点尚未准备好接收数据。它由超载标志和超载界定符组成,超载标志由6个连续的显性位组成,超载界定符由8个隐性位组成。当某个节点由于内部处理速度等原因无法及时接收数据时,会发送超载帧,其他节点在接收到超载帧后,会延迟发送数据,以等待该节点准备好。CAN总线的通信过程如下:当一个节点有数据需要发送时,首先会将数据封装成相应的报文格式,通常是数据帧。然后,该节点会监听总线,判断总线是否空闲。如果总线空闲,节点会立即开始发送报文;如果总线忙,节点会继续监听,直到总线空闲。在发送报文的过程中,多个节点可能会同时尝试发送,这时就会进入仲裁阶段。各节点会从起始位开始,逐个比特地比较各自发送的标识符。优先级较低的节点在检测到总线电平与自己发送的电平不一致(即检测到显性位,而自己发送的是隐性位)时,会立即停止发送,并转为接收状态。只有优先级最高的节点能够继续发送报文,直到整个报文发送完毕。接收节点在接收到报文后,会对报文进行校验,包括CRC校验和帧格式检查等。如果校验通过,接收节点会根据报文的标识符判断是否是自己需要的数据。如果是,接收节点会接收数据并进行相应的处理;如果不是,接收节点会忽略该报文。如果校验发现错误,接收节点会发送错误帧,通知发送节点重新发送报文。在整个通信过程中,CAN总线通过其独特的协议机制,确保了数据的可靠传输和高效通信。2.2SAEJ1939协议解析2.2.1SAEJ1939协议概述SAEJ1939协议是美国汽车工程师协会(SAE)制定的一套基于CAN总线的车辆网络串行通信和控制协议,主要应用于重型车辆、农业设备、建筑机械等领域。在20世纪后半叶,随着商用车辆、重型机械设备等对多功能化和电子化的需求急剧增加,其内部不同子系统之间需要进行高效的通信和协作来实现更先进的控制和监控功能。同时,为了在不同制造商和设备之间实现互操作性,确保不同系统之间的通信能够无缝进行,制定一套标准化的通信协议变得尤为重要。而此时CAN总线技术的出现为实时、可靠且高速的通信提供了可能。在此背景下,SAE组织开发了J1939协议的一系列标准规范,该工作于1994年左右开始,并在1998年正式发布了J1939协议,成为了商用车辆和重型机械设备领域中通信和控制的主要标准之一。该协议在CAN总线的基础上,对网络层、传输层和应用层进行了详细的规范,定义了报文格式、通信参数、地址分配、网络管理等内容,使得不同制造商生产的电子控制单元能够在同一网络中实现互联互通和协同工作。它使用多路复用技术,为汽车上的各种传感器、执行器和控制器提供建立在CAN总线基础上的标准化的高速网络连接,在车载电子装置之间实现高速数据共享,有效地减少了电子线束的数量,提高了车辆电子控制系统的灵活性、可靠性、可维修性和标准化程度,更大程度地发挥了CAN优异的性能。例如,在重型卡车的发动机控制系统中,通过SAEJ1939协议,发动机ECU可以实时获取车辆的行驶状态、负载信息等,从而精确控制发动机的燃油喷射和燃烧过程,提高燃油经济性和动力性能,同时减少尾气排放。在制动系统中,各制动控制单元之间通过SAEJ1939协议进行通信,实现了制动的协调控制,提高了制动的可靠性和安全性。2.2.2SAEJ1939协议的分层结构SAEJ1939协议参照ISO/OSI开放系统互联参考模型,制定了7层基准参考模型,从下往上依次为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。每一层都有其特定的功能和作用,各层之间相互协作,共同实现了车辆网络中的数据通信和控制。物理层主要定义了网络中节点与传输介质之间的电气连接、信号传输特性以及物理介质的相关参数。SAEJ1939协议的物理层规范主要包括SAEJ1939-11、SAEJ1939-13、SAEJ1939-14和SAEJ1939-15等文件。以SAEJ1939-11为例,它主要规定了通信速率为250Kbps,采用屏蔽双绞线作为传输介质,总线阻抗为120Ω,连接器的类型、引脚分配和电气特性等内容。这些规范确保了数据在物理层能够可靠地传输,为上层协议提供了稳定的物理基础。数据链路层负责将网络层传来的数据封装成帧,并进行错误检测、仲裁和数据重传等操作。它的主要功能包括帧的组装和分解、错误检测和处理、总线仲裁等。SAEJ1939-21定义了数据链路层的规范,包括PDU(协议数据单元)格式、参数组概念、传输协议等。在数据链路层,通过对数据进行成帧处理,添加帧头、帧尾和校验信息等,确保数据在传输过程中的完整性和正确性。同时,当多个节点同时发送数据时,通过仲裁机制决定哪个节点可以优先发送数据,避免总线冲突。网络层主要负责网络中节点的寻址、路由选择以及网络拓扑的管理。它的功能包括地址分配、数据转发、网络分段和重组等。SAEJ1939-31定义了网络层的规范,规定了网络层的功能、网段互联设备的概念及分类等。在网络层,每个节点都被分配一个唯一的地址,通过地址可以确定数据的发送和接收方。当数据需要在不同的网段之间传输时,网络层会根据路由信息选择合适的路径进行数据转发。传输层负责确保数据在源节点和目的节点之间的可靠传输。它的主要功能包括数据的分段和重组、流量控制、错误恢复等。在SAEJ1939协议中,传输层的功能相对简单,主要依赖于数据链路层和网络层来实现数据的可靠传输。例如,当数据量较大时,传输层会将数据分成多个片段进行传输,并在接收端进行重组。同时,通过流量控制机制,防止发送方发送数据过快,导致接收方无法及时处理。会话层负责建立、维护和管理通信双方之间的会话连接。它的功能包括会话的建立、拆除、同步和恢复等。在SAEJ1939协议中,会话层的功能也相对简单,主要是为应用层提供会话管理服务。例如,当两个节点需要进行通信时,会话层会建立起它们之间的会话连接,并在通信结束后拆除连接。表示层负责对数据进行转换、加密和解密等操作,以确保数据在不同系统之间的兼容性和安全性。它的功能包括数据格式转换、字符编码转换、数据加密和解密等。在SAEJ1939协议中,表示层的功能也不是很复杂,主要是对一些特定的数据进行格式转换,以满足不同应用层的需求。应用层是用户应用程序与网络协议之间的接口,负责定义应用程序之间的通信规范和数据格式。它的功能包括应用程序的初始化、数据的发送和接收、设备的控制和管理等。SAEJ1939-71、SAEJ1939-73、SAEJ1939-74和SAEJ1939-75等文件定义了应用层的规范,包括SPN(可疑参数)、PGN(参数组)等概念,以及诊断、配置消息等应用层功能。在应用层,不同的应用程序通过定义好的通信规范和数据格式进行数据交换和设备控制,实现车辆的各种功能。2.2.3SAEJ1939数据帧格式SAEJ1939数据帧是以PDU(ProtocolDataUnit,协议数据单元)为单位进行传输的,每个PDU包含了要传输的具体数据和相关的控制信息。PDU由7个域组成,分别是优先权(Priority)、保留位(Reserved)、数据页(DataPage)、PDU三、基于SAEJ1939协议的汽车CAN总线控制系统设计3.1系统总体设计方案3.1.1系统设计目标与需求分析本系统的设计目标是构建一个高效、可靠且稳定的汽车CAN总线控制系统,以满足现代汽车日益增长的电子控制需求。在可靠性方面,系统需具备强大的抗干扰能力,能够在复杂的电磁环境下稳定运行,确保数据传输的准确性和完整性。采用差分信号传输、错误检测与处理等技术,减少外界干扰对数据传输的影响,当出现错误时,能够及时检测并采取相应的处理措施,如重传数据、提示故障等。稳定性也是关键目标之一,系统应能长时间稳定工作,具备良好的容错能力,即使部分节点出现故障,也不会影响整个系统的正常运行。通过冗余设计、热备份等技术,提高系统的稳定性和可靠性。同时,系统还需具备实时性,能够快速响应各种控制指令和数据传输请求,确保汽车的各项控制功能能够及时、准确地执行。采用高效的通信协议和优化的算法,减少数据传输延迟和处理时间,满足汽车实时控制的要求。从功能需求来看,系统要实现数据采集功能,通过各类传感器实时采集汽车的各种运行参数,如发动机转速、车速、油温、油压等。这些传感器将物理量转换为电信号,通过信号调理电路进行放大、滤波等处理后,传输给微控制器。数据传输功能也是必不可少的,利用CAN总线将采集到的数据传输给各个电子控制单元(ECU),实现数据的共享和交互。同时,ECU之间也能通过CAN总线进行控制指令的传输,以协同工作。例如,发动机ECU根据采集到的发动机转速和负荷信息,计算出最佳的燃油喷射量和点火提前角,并将控制指令通过CAN总线发送给喷油器和点火系统。控制功能方面,系统要根据采集到的数据和预设的控制策略,对汽车的各个执行器进行精确控制,以实现汽车的正常行驶和各种功能。如根据车速和制动信号,控制制动系统的制动力度;根据发动机温度,控制冷却风扇的转速等。故障诊断功能也十分重要,系统应能实时监测各个节点和设备的工作状态,当出现故障时,能够及时诊断出故障类型和位置,并采取相应的措施,如报警、记录故障信息等。通过故障诊断功能,可以提高汽车的可靠性和安全性,降低维修成本。在性能需求上,系统的数据传输速率要满足汽车实时控制的要求,根据不同的应用场景和数据量,选择合适的传输速率,如250Kbps、500Kbps等。同时,要保证数据传输的准确性和完整性,通过CRC校验、ACK应答等机制,确保数据在传输过程中不出现错误和丢失。系统的响应时间应尽可能短,从传感器采集数据到执行器执行控制指令的时间延迟要在可接受的范围内,以保证汽车的实时控制性能。例如,在紧急制动时,系统的响应时间应足够短,以确保制动系统能够及时发挥作用。系统还需具备良好的扩展性,能够方便地添加新的节点和功能,以适应汽车不断发展的需求。在设计系统架构时,应采用模块化设计思想,使各个模块之间具有良好的兼容性和可扩展性。例如,当需要添加新的传感器或执行器时,只需将其连接到CAN总线上,并在软件中进行相应的配置和编程,即可实现新功能的集成。3.1.2系统架构设计本系统的整体架构分为硬件架构和软件架构两部分,两者相互协作,共同实现基于SAEJ1939协议的汽车CAN总线控制系统的功能。硬件架构主要由微控制器、CAN总线接口电路、数据采集模块、显示模块以及其他硬件模块组成。微控制器作为系统的核心,负责数据的处理、控制指令的生成以及与其他模块的通信。它通过内部的定时器、中断控制器等资源,实现对系统的实时控制。例如,利用定时器产生精确的时间间隔,用于数据采集和通信的定时;通过中断控制器,及时响应外部事件,如传感器数据的更新、CAN总线数据的接收等。CAN总线接口电路则实现微控制器与CAN总线之间的电气连接和信号转换,它包括CAN控制器和CAN收发器。CAN控制器负责将微控制器发送的数据按照CAN总线协议进行封装和发送,同时接收CAN总线上的数据并解封装后交给微控制器。CAN收发器则将CAN控制器的逻辑电平转换为CAN总线的差分电平,实现数据在总线上的传输。数据采集模块用于采集汽车的各种运行参数,它由各类传感器和信号调理电路组成。传感器将物理量转换为电信号,信号调理电路对电信号进行放大、滤波、模数转换等处理,使其符合微控制器的输入要求。显示模块用于显示汽车的运行状态和相关信息,如车速、发动机转速、水温等,方便驾驶员实时了解汽车的情况。它可以采用液晶显示屏(LCD)、发光二极管(LED)等显示器件。其他硬件模块还包括电源电路、复位电路、时钟电路等,它们为系统的正常运行提供必要的支持。电源电路为各个硬件模块提供稳定的电源;复位电路用于系统的初始化和复位操作;时钟电路为微控制器和其他模块提供时钟信号,保证系统的时序同步。这些硬件模块通过CAN总线连接在一起,形成一个分布式的控制系统,实现数据的共享和协同工作。软件架构基于实时操作系统(RTOS)进行设计,采用分层和模块化的设计思想,主要包括底层驱动层、协议栈层、应用层和用户界面层。底层驱动层负责硬件设备的驱动和控制,它提供了与硬件相关的函数接口,如微控制器的初始化、CAN总线控制器的驱动、传感器的驱动等。通过底层驱动层,上层软件可以方便地访问硬件设备,实现对硬件的控制和数据采集。协议栈层实现了SAEJ1939协议,包括物理层、数据链路层、网络层和应用层的功能。它负责数据的封装、解封装、传输、路由等操作,确保数据在CAN总线上的正确传输和通信。例如,在数据链路层,协议栈层负责将应用层的数据封装成CAN数据帧,并进行错误检测和仲裁;在网络层,负责地址分配、数据转发等功能。应用层实现了汽车的各种控制功能和业务逻辑,它根据采集到的数据和预设的控制策略,生成控制指令,并通过协议栈层发送给相应的执行器。例如,发动机控制模块根据发动机转速、负荷等数据,计算出燃油喷射量和点火提前角,并将控制指令发送给发动机执行器。用户界面层提供了人机交互的接口,如显示界面、按键输入等,方便驾驶员对汽车进行操作和监控。通过用户界面层,驾驶员可以查看汽车的运行状态、设置参数、发出控制指令等。各层之间通过定义良好的接口进行通信和交互,实现了软件的模块化和可扩展性。例如,应用层通过调用协议栈层提供的接口函数,实现数据的发送和接收;协议栈层通过调用底层驱动层的接口函数,实现对硬件设备的访问。3.2硬件设计3.2.1微控制器选型与电路设计在微控制器的选型上,综合考虑系统的性能需求、成本、功耗以及开发难度等因素,选用了LM3S2948微控制器。LM3S2948是一款基于ARMCortex-M3内核的32位微控制器,具有丰富的片上资源和强大的处理能力。其ARMCortex-M3内核采用了哈佛结构,具有独立的指令总线和数据总线,能够实现高效的指令执行和数据访问。它支持Thumb-2指令集,该指令集在保持Thumb指令集紧凑性的同时,增加了一些新的指令,提高了代码的执行效率。在性能方面,LM3S2948的工作频率可达72MHz,能够快速处理大量的数据和复杂的算法。例如,在处理汽车的各种传感器数据时,能够迅速进行数据的采集、分析和处理,为汽车的实时控制提供准确的数据支持。它还内置了高速的存储器,包括512KB的Flash存储器和64KB的SRAM存储器。Flash存储器用于存储程序代码和一些固定的数据,具有非易失性,即使系统断电,数据也不会丢失。SRAM存储器则用于存储程序运行时的变量和临时数据,具有高速读写的特点,能够满足系统对数据访问速度的要求。在片上资源方面,LM3S2948集成了丰富的外设,包括CAN控制器、A/D转换器、模拟比较器、I2C接口、SPI接口等。其中,CAN控制器支持CAN2.0B协议,能够方便地实现与CAN总线的通信。它支持标准帧和扩展帧格式,并且可以根据需要配置不同的波特率,以满足不同的通信需求。A/D转换器具有12位的分辨率,能够将模拟信号精确地转换为数字信号,为数据采集模块提供了高精度的数字量输入。模拟比较器可以对两个模拟信号进行比较,并输出比较结果,常用于一些需要进行信号比较和判断的场合。I2C接口和SPI接口则用于与其他外部设备进行通信,如传感器、显示器等,扩展了系统的功能。LM3S2948微控制器的最小系统电路主要包括电源电路、时钟电路、复位电路和JTAG调试接口电路。电源电路为微控制器提供稳定的电源,通常采用直流电源供电。在本设计中,使用3.3V的直流电源为LM3S2948供电。为了保证电源的稳定性和可靠性,在电源输入端添加了滤波电容,如10μF的电解电容和0.1μF的陶瓷电容,用于滤除电源中的高频噪声和低频纹波。时钟电路为微控制器提供时钟信号,决定了微控制器的工作频率。LM3S2948可以使用外部晶体振荡器或内部RC振荡器作为时钟源。在本设计中,选用了8MHz的外部晶体振荡器,通过微控制器内部的PLL(锁相环)电路将时钟频率倍频到72MHz。复位电路用于系统的初始化和复位操作,当系统出现异常或需要重新启动时,可以通过复位电路将微控制器复位到初始状态。本设计采用了按键复位和上电复位相结合的方式,通过一个按键和一个电容组成复位电路,当按下按键或系统上电时,复位信号有效,将微控制器复位。JTAG调试接口电路用于在开发过程中对微控制器进行程序下载、调试和仿真。通过JTAG接口,可以将编写好的程序下载到微控制器的Flash存储器中,并对程序的运行进行调试和监控,方便开发人员进行软件开发和调试工作。3.2.2CAN总线接口电路设计CAN总线接口电路是实现微控制器与CAN总线通信的关键部分,主要由CAN控制器和CAN收发器组成。在本设计中,选用了集成在LM3S2948微控制器内部的CAN控制器,它支持CAN2.0B协议,具有较高的性能和可靠性。CAN收发器则选用了TJA1050,它是一款高速CAN收发器,能够将CAN控制器的逻辑电平转换为CAN总线的差分电平,实现数据在CAN总线上的可靠传输。TJA1050的工作原理是基于差分信号传输技术。它的TXD引脚接收来自CAN控制器的逻辑电平信号,当TXD为高电平时,TJA1050将CAN_H引脚的电平拉高,CAN_L引脚的电平拉低,形成显性电平(逻辑0);当TXD为低电平时,CAN_H和CAN_L引脚的电平相等,形成隐性电平(逻辑1)。在接收数据时,TJA1050通过RXD引脚将CAN总线的差分电平信号转换为逻辑电平信号,发送给CAN控制器。TJA1050还具有过压保护、过热保护等功能,能够在恶劣的工作环境下保证电路的安全和稳定运行。在CAN总线接口电路的设计中,还需要考虑一些参数的选择和电路的布局。例如,为了减少信号传输过程中的干扰和衰减,需要在CAN总线的两端连接120Ω的终端电阻,以匹配总线的特性阻抗。在电路布局上,应尽量缩短CAN控制器和CAN收发器之间的连线长度,减少信号传输的延迟和干扰。同时,要注意将CAN总线接口电路与其他电路进行隔离,避免相互干扰。此外,为了提高系统的抗干扰能力,还可以在CAN总线接口电路中添加一些滤波电容和电感,用于滤除高频噪声和杂波。例如,在CAN_H和CAN_L引脚上分别串联一个5Ω的电阻,再并联一个30pF的电容到地,以滤除总线上的高频干扰。3.2.3其他硬件模块设计数据采集模块负责采集汽车的各种运行参数,如发动机转速、车速、油温、油压等。对于发动机转速的采集,可以使用霍尔传感器。霍尔传感器能够将发动机的旋转运动转换为电信号,其输出信号的频率与发动机转速成正比。通过测量霍尔传感器输出信号的频率,就可以计算出发动机的转速。在信号调理电路中,首先对霍尔传感器输出的信号进行放大,然后通过施密特触发器将其转换为标准的数字信号,再输入到微控制器的定时器引脚,利用定时器的计数功能测量信号的频率。车速的采集可以使用车速传感器,常见的车速传感器有电磁式和霍尔式两种。以电磁式车速传感器为例,它通过感应车轮的旋转磁场产生脉冲信号,脉冲信号的频率与车速成正比。信号调理电路对车速传感器输出的信号进行放大、整形和滤波处理,去除噪声和干扰信号,然后输入到微控制器的外部中断引脚,通过中断服务程序计算车速。油温、油压等参数的采集则可以使用相应的传感器,如热敏电阻式油温传感器、压阻式油压传感器等。这些传感器将物理量转换为电信号,经过信号调理电路的放大、滤波和模数转换后,输入到微控制器的A/D转换引脚,由微控制器进行数据采集和处理。显示模块用于显示汽车的运行状态和相关信息,如车速、发动机转速、水温等。在本设计中,选用了液晶显示屏(LCD)作为显示器件。LCD具有功耗低、体积小、显示内容丰富等优点。常用的LCD有字符型LCD和图形型LCD,本设计选用了字符型LCD,如1602液晶显示屏。1602液晶显示屏可以显示两行,每行16个字符,能够满足基本的显示需求。为了驱动LCD显示,需要使用LCD驱动器。常见的LCD驱动器有HD44780及其兼容芯片。在本设计中,选用了与HD44780兼容的芯片,通过微控制器的I/O口与LCD驱动器连接,发送控制指令和显示数据。微控制器通过发送初始化指令,设置LCD的显示模式、光标位置等参数。然后,将需要显示的数据通过I/O口发送给LCD驱动器,LCD驱动器根据接收到的数据控制LCD的显示。例如,要显示车速信息,微控制器将车速数据转换为对应的字符,通过I/O口发送给LCD驱动器,LCD驱动器将字符显示在LCD上。除了数据采集模块和显示模块,系统还可能包括其他硬件模块,如电源管理模块、通信模块等。电源管理模块负责为整个系统提供稳定的电源,并对电源进行监测和管理,如过压保护、过流保护、欠压保护等。通信模块可以用于实现与其他设备的通信,如蓝牙模块、WiFi模块等,以便实现远程监控和数据传输等功能。这些硬件模块根据系统的具体需求进行设计和选择,它们与微控制器和CAN总线接口电路协同工作,共同实现基于SAEJ1939协议的汽车CAN总线控制系统的功能。3.3软件设计3.3.1软件开发环境与工具本系统选用KeilμVision作为软件开发环境,它是一款功能强大的集成开发环境(IDE),广泛应用于嵌入式系统开发领域。KeilμVision提供了丰富的工具和功能,能够满足从代码编写、编译、调试到下载的整个软件开发流程的需求。KeilμVision具有直观的用户界面,方便开发人员进行操作。在代码编写方面,它支持多种编程语言,如C、C++和汇编语言,并且提供了语法高亮、代码自动完成、代码导航等功能,大大提高了代码编写的效率和准确性。例如,当开发人员输入变量名或函数名时,KeilμVision会自动提示相关的代码补全选项,减少了代码输入的错误。在编译方面,KeilμVision集成了高效的编译器,能够将源代码编译成可执行的目标代码。它支持多种优化选项,可以根据项目的需求对代码进行优化,提高代码的执行效率和减少代码的体积。同时,在编译过程中,KeilμVision会实时显示编译信息,包括错误和警告信息,方便开发人员及时发现和解决问题。调试功能是KeilμVision的一大亮点。它提供了丰富的调试工具,如单步执行、断点调试、变量监视、内存查看等。开发人员可以通过设置断点,使程序在运行到断点处暂停,然后通过单步执行功能逐行执行代码,观察变量的值和程序的执行流程,从而方便地进行程序调试和错误排查。例如,在调试基于SAEJ1939协议的CAN总线通信程序时,可以通过断点调试功能,查看数据的发送和接收过程,检查协议的实现是否正确。此外,KeilμVision还支持硬件调试,通过与调试器(如J-Link、ST-Link等)连接,可以对硬件进行实时调试和仿真,进一步提高开发效率。除了KeilμVision,本系统还使用了一些其他的工具。例如,使用HexWorkshop来查看和编辑十六进制文件四、系统测试与结果分析4.1测试环境搭建为了全面、准确地测试基于SAEJ1939协议的汽车CAN总线控制系统的性能,搭建了一套完善的测试环境,该环境涵盖硬件设备和软件工具两大部分。在硬件设备方面,采用了实际的汽车电子控制单元(ECU),包括发动机ECU、变速器ECU、制动系统ECU等,这些ECU均符合SAEJ1939协议标准,能够真实模拟汽车在实际运行中的数据交互和控制场景。同时,配备了各类传感器,如车速传感器、发动机转速传感器、油温传感器、油压传感器等,用于采集汽车运行的各种参数,并将这些参数通过CAN总线传输给相应的ECU进行处理。此外,还使用了CAN总线分析仪,如Vector公司的CANalyzer,它能够实时监测CAN总线上的数据传输情况,包括数据帧的发送和接收、标识符、数据内容等,并对数据进行分析和统计,为测试提供了有力的数据支持。为了模拟汽车在不同环境下的运行情况,还引入了环境模拟设备,如高低温试验箱、湿度试验箱、振动试验台等,可对系统进行环境适应性测试。软件工具方面,选用了CANoe作为主要的测试软件平台。CANoe是一款功能强大的汽车网络开发和测试工具,支持多种汽车网络协议,包括CAN、LIN、FlexRay等。在基于SAEJ1939协议的汽车CAN总线控制系统测试中,利用CANoe创建了系统的网络模型,定义了各个节点的属性、通信参数以及数据交互逻辑。通过编写CAPL(CommunicationAccessProgrammingLanguage)脚本,实现了对节点行为的模拟和控制,例如发送特定的控制指令、生成测试数据等。同时,CANoe还提供了丰富的分析和诊断功能,能够对测试过程中的数据进行实时分析,检测出潜在的通信错误和故障,并生成详细的测试报告。为了对系统进行数据处理和分析,还使用了MATLAB软件。将CANoe采集到的数据导入MATLAB中,利用其强大的数据处理和绘图功能,对数据进行统计分析、趋势分析等,以直观的图表形式展示系统的性能指标,如通信速率、丢包率、延迟时间等,便于对测试结果进行深入分析。4.2测试方法与内容4.2.1功能测试功能测试旨在验证基于SAEJ1939协议的汽车CAN总线控制系统是否能够实现预期的各项功能,包括数据采集、通信和控制等功能。在数据采集功能测试中,通过各类传感器采集汽车运行的各种参数,如车速、发动机转速、油温、油压等,并将这些数据通过CAN总线传输给相应的ECU。利用CANalyzer监测CAN总线上的数据传输情况,检查采集到的数据是否准确、完整。例如,在车速传感器测试中,使用转速表模拟不同的车速,通过CANalyzer查看车速数据在CAN总线上的传输情况,与转速表显示的车速进行对比,验证车速数据采集的准确性。对多个传感器同时进行数据采集测试,检查系统在多传感器数据并发情况下的采集能力,确保系统能够稳定、准确地采集和传输各类传感器数据。通信功能测试主要验证系统在CAN总线上的数据通信是否正常,包括数据的发送、接收、仲裁等环节。利用CANoe创建多个虚拟节点,模拟实际的ECU节点,配置节点之间的通信参数,使其符合SAEJ1939协议的要求。在测试过程中,让不同节点之间进行数据交互,发送各种类型的数据帧,如数据帧、远程帧等,检查节点是否能够正确地发送和接收数据。通过设置多个节点同时发送数据,模拟总线冲突的情况,验证系统的仲裁机制是否能够正常工作,确保高优先级的数据能够优先传输,避免总线冲突导致的数据丢失或错误。使用CANalyzer分析通信过程中的数据帧,检查数据帧的格式是否符合SAEJ1939协议的规定,包括标识符、控制域、数据域等字段的正确性。控制功能测试是验证系统根据采集到的数据和预设的控制策略,对汽车的各个执行器进行精确控制的能力。通过CANoe向发动机ECU发送不同的控制指令,如改变发动机的燃油喷射量、调整点火提前角等,观察发动机的运行状态是否按照预期进行变化。使用发动机台架试验设备,模拟发动机在不同工况下的运行情况,通过系统对发动机执行器的控制,检查发动机的性能指标,如功率、扭矩、燃油消耗率等是否符合设计要求。对制动系统、变速器等其他执行器进行类似的控制功能测试,验证系统对整个汽车的控制能力。4.2.2性能测试性能测试主要对基于SAEJ1939协议的汽车CAN总线控制系统的通信速率、可靠性、实时性等性能指标进行测试和评估。通信速率测试旨在测量系统在CAN总线上的数据传输速率。利用CANoe设置不同的通信速率,如250Kbps、500Kbps等,通过发送大量的测试数据帧,记录数据发送和接收的时间,计算出实际的通信速率。在测试过程中,逐渐增加数据帧的长度和发送频率,观察通信速率的变化情况,分析通信速率与数据量、发送频率之间的关系。通过在不同的网络负载情况下进行通信速率测试,如空载、50%负载、100%负载等,评估系统在不同负载条件下的通信性能,确定系统的最大通信速率和最佳工作负载范围。可靠性测试主要检验系统在数据传输过程中的准确性和稳定性,评估系统的抗干扰能力和错误处理能力。在测试环境中引入各种干扰源,如电磁干扰、射频干扰等,观察系统在干扰情况下的数据传输情况,检查是否出现数据丢失、错误或通信中断等问题。利用CANoe的错误注入功能,故意向CAN总线上注入错误的数据帧,测试系统的错误检测和处理机制,验证系统是否能够及时发现错误并采取相应的措施,如重传数据、报警等。通过长时间运行系统,统计数据传输过程中的错误率和丢包率,评估系统的可靠性指标,确保系统在长时间运行过程中能够稳定、可靠地工作。实时性测试是衡量系统对外部事件的响应速度和数据处理能力,确保系统能够满足汽车实时控制的要求。在测试中,设置特定的事件触发条件,如传感器数据的变化、控制指令的发送等,记录从事件触发到系统做出响应的时间间隔,即响应时间。通过模拟汽车在不同工况下的运行情况,如急加速、急制动、高速行驶等,测试系统在不同工况下的实时性性能,检查系统是否能够及时响应各种实时控制需求。对系统的任务调度和优先级管理机制进行测试,验证高优先级任务是否能够优先得到处理,确保系统在多任务并发情况下的实时性。4.2.3稳定性测试稳定性测试主要评估基于SAEJ1939协议的汽车CAN总线控制系统在长时间运行和不同环境条件下的稳定性和可靠性。长时间运行测试是让系统在正常工作条件下持续运行一段时间,如24小时、48小时等,观察系统在长时间运行过程中的工作状态,检查是否出现异常情况,如死机、重启、数据丢失等。在长时间运行测试过程中,利用CANalyzer实时监测CAN总线上的数据传输情况,记录数据帧的发送和接收情况,统计错误率和丢包率。同时,对系统的硬件设备进行温度监测,检查硬件是否存在过热等问题,确保系统在长时间运行过程中硬件和软件的稳定性。环境适应性测试是将系统置于不同的环境条件下进行测试,以评估系统在不同环境下的工作性能。使用高低温试验箱,将系统暴露在不同的温度环境中,如高温(85℃)、低温(-40℃)等,测试系统在高温和低温环境下的启动、运行和数据传输情况,检查系统是否能够正常工作,是否出现性能下降或故障等问题。利用湿度试验箱,模拟不同的湿度环境,如高湿度(95%RH)、低湿度(10%RH)等,测试系统在湿度环境下的电气性能和数据传输性能,验证系统的防潮能力和在潮湿环境下的稳定性。将系统安装在振动试验台上,模拟汽车在行驶过程中的振动情况,设置不同的振动频率和振幅,测试系统在振动环境下的机械结构稳定性和数据传输稳定性,检查系统是否会因为振动而导致硬件损坏或数据传输错误。4.3测试结果与分析通过对基于SAEJ1939协议的汽车CAN总线控制系统进行全面的测试,得到了一系列的测试结果,并对这些结果进行了深入分析,以评估系统是否满足设计要求,并找出测试过程中出现的问题及解决方案。在功能测试方面,系统能够准确地采集各类传感器的数据,数据采集误差在允许范围内,满足汽车运行参数监测的要求。通信功能测试结果显示,系统在CAN总线上的数据通信稳定可靠,能够正确地发送和接收数据帧,仲裁机制工作正常,有效避免了总线冲突。控制功能测试表明,系统能够根据采集到的数据和预设的控制策略,对汽车的各个执行器进行精确控制,使汽车的运行状态符合预期。然而,在功能测试过程中,发现当多个节点同时发送大量数据时,偶尔会出现数据帧丢失的情况。经过分析,这是由于网络负载过高,导致部分数据帧在仲裁过程中失败,未能及时发送。针对这一问题,优化了系统的通信调度算法,合理分配节点的发送时间,降低了网络负载,有效解决了数据帧丢失的问题。性能测试结果显示,系统在不同通信速率下的实际通信速率接近理论值,能够满足汽车实时控制对数据传输速率的要求。在可靠性方面,系统在正常环境下的错误率和丢包率极低,具有较高的可靠性。但在引入干扰源后,错误率和丢包率有所增加,特别是在强电磁干扰环境下,通信出现了短暂中断。通过增加屏蔽措施、优化硬件电路和改进错误处理算法,提高了系统的抗干扰能力,降低了错误率和丢包率。实时性测试结果表明,系统的响应时间满足汽车实时控制的要求,在各种工况下都能够及时响应外部事件和控制指令。但在多任务并发情况下,由于任务调度的延迟,部分高优先级任务的响应时间略有增加。通过优化任务调度算法,提高了高优先级任务的执行优先级,减少了响应时间的延迟。稳定性测试结果显示,系统在长时间运行过程中工作稳定,未出现死机、重启等异常情况,硬件设备的温度也在正常范围内。在环境适应性测试中,系统在高温、低温、高湿度和振动环境下均能正常工作,但在极端环境条件下,如高温高湿同时存在时,部分传感器的数据采集出现了偏差。通过对传感器进行防护处理和校准,提高了传感器在极端环境下的可靠性,确保了系统在不同环境条件下的稳定性。综上所述,基于SAEJ1939协议的汽车CAN总线控制系统在功能、性能和稳定性方面基本满足设计要求,但在某些特殊情况下仍存在一些问题,通过优化和改进措施,这些问题得到了有效解决,进一步提高了系统的性能和可靠性,使其能够更好地应用于实际的汽车控制系统中。五、案例分析5.1某重型车辆CAN总线控制系统案例本案例选取一款自主研发的高端重型卡车,该车在复杂的工况下运行,对其电子控制系统的可靠性、实时性和高效性提出了极高的要求。为满足这些要求,该车采用了基于SAEJ1939协议的CAN总线控制系统,以实现车辆各个电子控制单元(ECU)之间的高速、可靠通信,从而提升整车的性能和智能化水平。在系统架构方面,该重型车辆CAN总线控制系统采用了分布式网络结构,由多个节点组成,每个节点对应一个ECU,负责特定的功能。主要节点包括发动机ECU、变速器ECU、制动系统ECU、车身控制ECU以及数字组合仪表等。这些节点通过CAN总线连接成一个有机的整体,实现数据的共享和交互。例如,发动机ECU实时采集发动机的转速、温度、油压等参数,并通过CAN总线将这些数据发送给其他相关节点,如变速器ECU可根据发动机转速和负荷信息,合理调整换挡时机,以优化车辆的动力性能和燃油经济性;数字组合仪表则实时显示发动机转速、车速、水温等信息,为驾驶员提供直观的车辆状态反馈。在硬件配置上,各节点的ECU均选用高性能的微控制器,具备强大的数据处理能力和丰富的外设接口,能够满足复杂的控制算法和通信需求。例如,发动机ECU采用了一款32位高性能微控制器,其工作频率可达100MHz以上,内置大容量的Flash和SRAM存储器,可存储复杂的发动机控制程序和实时数据。同时,配备了高精度的A/D转换器,用于采集各种传感器信号;集成了CAN控制器,支持SAEJ1939协议,实现与CAN总线的通信。CAN总线接口电路采用了高速CAN收发器,如TJA1050,确保数据在总线上的可靠传输。为了提高系统的抗干扰能力,在CAN总线的两端连接了120Ω的终端电阻,并在硬件电路中添加了滤波电容和电感,有效滤除了高频噪声和杂波。软件功能方面,基于SAEJ1939协议开发了相应的通信协议栈,实现了数据的封装、解封装、传输和接收等功能。各节点的软件程序根据自身功能需求进行设计,包括数据采集、控制算法、故障诊断等模块。以发动机ECU为例,其软件程序通过传感器实时采集发动机的运行参数,运用先进的控制算法计算出最佳的燃油喷射量、点火提前角等控制参数,并将这些控制指令通过CAN总线发送给执行器,实现对发动机的精确控制。同时,发动机ECU还具备故障诊断功能,能够实时监测发动机的工作状态,当检测到故障时,及时通过CAN总线向其他节点发送故障信息,并记录故障代码,以便后续的故障排查和维修。数字组合仪表的软件程序则负责接收来自各节点的车辆状态信息,并将这些信息以直观的方式显示在仪表上,如通过液晶显示屏(LCD)显示车速、发动机转速、水温、油压等参数,同时还具备报警功能,当车辆出现异常情况时,及时发出声光报警信号,提醒驾驶员注意。5.2案例系统设计与实现在需求分析阶段,通过对重型车辆实际运行工况和功能需求的深入调研,明确了系统的设计目标和功能要求。车辆在行驶过程中,需要实时采集和处理大量的传感器数据,如发动机转速、车速、油温、油压等,以实现对车辆的精确控制和状态监测。同时,各ECU之间需要进行高效、可靠的通信,以协同工作,满足车辆在不同工况下的性能要求。此外,系统还应具备故障诊断功能,能够及时发现和处理车辆运行过程中出现的故障,提高车辆的可靠性和安全性。基于这些需求,确定了系统的整体架构和功能模块,包括数据采集模块、CAN总线通信模块、控制模块和故障诊断模块等。方案设计阶段,根据需求分析的结果,结合SAEJ1939协议的特点,制定了详细的系统设计方案。在网络架构方面,采用了基于CAN总线的分布式网络结构,将各个ECU作为节点连接到CAN总线上,实现数据的共享和交互。为了确保通信的可靠性和实时性,根据车辆的实际布局和通信需求,合理规划了CAN总线的拓扑结构,选择了合适的通信速率(250Kbps),并对各节点的地址进行了分配。在硬件选型上,综合考虑性能、成本、可靠性等因素,选择了适合的微控制器、CAN收发器、传感器等硬件设备。例如,为满足发动机复杂的控制算法和高速数据处理需求,选择了高性能的32位微控制器;为确保CAN总线通信的可靠性,选用了抗干扰能力强的高速CAN收发器。在软件设计方面,采用了分层和模块化的设计思想,将软件系统分为底层驱动层、协议栈层、应用层和用户界面层。底层驱动层负责硬件设备的驱动和控制,协议栈层实现SAEJ1939协议的功能,应用层实现车辆的各种控制功能和业务逻辑,用户界面层提供人机交互的接口。硬件设计阶段,根据方案设计的要求,进行了各硬件模块的详细设计和电路原理图绘制。微控制器最小系统电路设计包括电源电路、时钟电路、复位电路和JTAG调试接口电路等。电源电路采用了高效的稳压芯片,为微控制器提供稳定的3.3V电源,并通过滤波电容滤除电源中的噪声和纹波。时钟电路选用了高精度的外部晶体振荡器,通过微控制器内部的PLL电路将时钟频率倍频到所需的工作频率。复位电路采用了按键复位和上电复位相结合的方式,确保系统在启动和异常情况下能够正常复位。JTAG调试接口电路用于程序的下载和调试,方便开发人员进行硬件和软件的调试工作。CAN总线接口电路设计主要包括CAN控制器和CAN收发器的连接,以及终端电阻和滤波电路的设计。将微控制器内部的CAN控制器与CAN收发器TJA1050连接,实现逻辑电平与差分电平的转换。在CAN总线的两端连接120Ω的终端电阻,以匹配总线的特性阻抗,减少信号反射。同时,在CAN总线接口电路中添加了滤波电容和电感,以滤除高频噪声和杂波,提高系统的抗干扰能力。数据采集模块设计根据不同传感器的类型和信号特点,设计了相应的信号调理电路,将传感器输出的模拟信号转换为适合微控制器采集的数字信号。例如,对于发动机转速传感器输出的脉冲信号,通过放大、整形和滤波处理后,输入到微控制器的定时器引脚,利用定时器的计数功能测量信号的频率,从而计算出发动机转速。对于油温、油压等传感器输出的模拟信号,通过信号调理电路进行放大、滤波和模数转换后,输入到微控制器的A/D转换引脚,由微控制器进行数据采集和处理。软件设计阶段,基于选定的软件开发环境(如KeilμVision),采用C语言进行程序编写。底层驱动层软件主要实现对硬件设备的初始化和控制,包括微控制器的初始化、CAN控制器的驱动、传感器的驱动等。通过编写底层驱动函数,为上层软件提供了与硬件设备交互的接口。协议栈层软件实现了SAEJ1939协议的功能,包括数据帧的封装、解封装、传输、接收和仲裁等。根据SAEJ1939协议的规范,编写了相应的函数和数据结构,实现了协议栈的各项功能。应用层软件实现了车辆的各种控制功能和业务逻辑,根据采集到的数据和预设的控制策略,生成控制指令,并通过协议栈层发送给相应的执行器。例如,发动机控制模块根据发动机转速、负荷等数据,运用控制算法计算出燃油喷射量和点火提前角,并将控制指令发送给发动机执行器。故障诊断模块则实时监测各节点和设备的工作状态,当检测到故障时,根据故障代码进行故障诊断和处理,并通过CAN总线向其他节点发送故障信息。用户界面层软件实现了人机交互的功能,通过液晶显示屏(LCD)和按键等设备,为驾驶员提供了车辆状态显示、参数设置和故障报警等功能。编写了相应的显示驱动程序和按键处理程序,实现了用户界面的各项功能。在软件编写过程中,注重代码的可读性、可维护性和可扩展性,采用了模块化编程思想,将不同的功能模块封装成独立的函数和文件,方便代码的管理和修改。同时,进行了严格的代码测试和调试,确保软件的正确性和稳定性。5.3案例系统测试与优化在测试方法上,采用了功能测试、性能测试和稳定性测试相结合的方式,全面评估系统的性能和可靠性。功能测试主要验证系统是否能够实现预期的各项功能,包括数据采集、通信和控制等功能。通过模拟车辆的实际运行工况,利用各类传感器采集数据,并通过CAN总线传输给相应的ECU,检查数据采集的准确性和通信的可靠性。例如,在发动机转速数据采集测试中,使用转速表模拟不同的发动机转速,通过CAN总线分析仪监测发动机ECU接收到的转速数据,与转速表显示的转速进行对比,验证数据采集的准确性。同时,对各ECU之间的通信功能进行测试,检查数据帧的发送和接收是否正常,仲裁机制是否有效。性能测试主要测试系统的通信速率、可靠性和实时性等性能指标。使用CANoe等测试工具,设置不同的通信速率,发送大量的测试数据帧,测量数据的传输时间和错误率,评估系统的通信速率和可靠性。例如,在通信速率测试中,分别设置通信速率为250Kbps、500Kbps等,通过CANoe发送不同长度的数据帧,记录数据发送和接收的时间,计算实际的通信速率,并与理论速率进行对比。实时性测试则通过设置特定的事件触发条件,测量系统的响应时间,验证系统是否能够满足车辆实时控制的要求。稳定性测试主要评估系统在长时间运行和不同环境条件下的稳定性和可靠性。进行长时间运行测试,让系统持续运行数小时甚至数天,监测系统的工作状态,检查是否出现异常情况。同时,进行环境适应性测试,将系统置于高温、低温、高湿度和振动等不同环境条件下,测试系统的性能和可靠性,确保系统在各种恶劣环境下都能正常工作。在测试过程中,得到了一系列的测试结果。功能测试结果表明,系统能够准确地采集各类传感器的数据,数据采集误差在允许范围内,各ECU之间的通信稳定可靠,能够正确地发送和接收数据帧,仲裁机制工作正常。控制功能测试也验证了系统能够根据采集到的数据和预设的控制策略,对车辆的各个执行器进行精确控制。然而,在性能测试中发现,当网络负载较高时,通信速率会有所下降,且出现了一定的数据丢包现象。通过分析,这是由于网络带宽有限,当大量数据同时传输时,导致数据传输延迟增加,部分数据帧丢失。在实时性测试中,发现系统在某些复杂工况下的响应时间略有延长,这可能是由于任务调度不合理或算法复杂度较高导致的。稳定性测试中,系统在长时间运行过程中工作稳定,但在高温高湿环境下,部分传感器的数据采集出现了偏差,可能是由于传感器的防护措施不足或温湿度对传感器性能产生了影响。针对测试过程中出现的问题,采取了一系列的优化方案。为了解决网络负载过高导致的通信问题,对网络进行了优化,增加了CAN总线的带宽,将通信速率提高到500Kbps,并优化了数据传输策略,采用数据缓存和分时传输等技术,减少数据冲突,提高通信效率。对于实时性问题,优化了任务调度算法,根据任务的优先级和实时性要求,合理分配CPU资源,确保高优先级任务能够及时得到处理。同时,对控制算法进行了优化,降低算法的复杂度,减少计算时间,提高系统的响应速度。针对传感器在高温高湿环境下的数据采集偏差问题,对传感器进行了防护升级,增加了防水、防潮和隔热措施,并对传感器进行了校准,提高了传感器在恶劣环境下的可靠性和准确性。通过这些优化措施,系统的性能和可靠性得到了显著提升,能够更好地满足重型车辆在复杂工况下的运行需求。六、结论与展望6.1研究工作总结本研究聚焦于基于SAEJ1939协议的汽车CAN总线控制系统的设计与测试,深入剖析了CAN总线技术原理、SAEJ1939协议的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论