基于CAN总线的汽车仪表设计.docx
《基于CAN总线的汽车仪表设计.docx》由会员分享,可在线阅读,更多相关《基于CAN总线的汽车仪表设计.docx(68页珍藏版)》请在冰豆网上搜索。
![基于CAN总线的汽车仪表设计.docx](https://file1.bdocx.com/fileroot1/2023-6/29/56e51d42-d52b-4944-8e03-64306d59ed2a/56e51d42-d52b-4944-8e03-64306d59ed2a1.gif)
基于CAN总线的汽车仪表设计
摘要
本设计致力于汽车CAN总线仪表系统的研究,深入讨论了系统的设计思想与实现方法,实现了在LabVIEW开发平台上建立基于CAN总线的虚拟仪表系统。
整个设计分为硬件系统和软件系统两部分。
其中硬件系统是以飞思卡尔公司的MC9S12XS128作为微处理器的核心。
软件系统是利用C语言编写程序实现两个CAN节点之间的通讯以及利用LABVIEW编程实现单片机与虚拟仪表之间的通讯。
系统首先构建了一个由两个CAN节点组成的最简单的CAN网络。
对两个节点进行软件设计后,来实现相互之间的通讯和数据收发,同时在汽车的CAN应用层协议基础上,上位机节点对接收的CAN报文进行处理,得到虚拟仪表各控件所对应的数据。
其中,基于LabVIEW的虚拟仪表系统开发和单片机的C语言编程是本设计的重点和难点。
关键词:
CAN总线;汽车仪表;LabVIEW;C语言;单片机
ABSTRACT
ThispaperresearchesautomotiveinstrumentbasedonCANbus,deeplydiscussestheideaandthemethodofsystemdesignandbringsforwardtheapproachofdesigntheautomotiveemulationalvirtualinstrumentsystemontheplatformofLabVIEWsoftware.
Thewholedesignofhardwaresystemandsoftwaresystemisdividedintotwoparts.OneofthehardwaresystemistheMC9S12XS128asfreescale'scompanycoremicroprocessor.AsoftwaresystemisusingwritteninClanguageprogramrealizationofthecommunicationbetweentwoCANnodeusingGlanguagepreparationandMCUandvirtualinstrumentLABVIEWrealizationofthecommunicationbetween.
ToconstructasystemfirstcomposedbytwoCANnodeofthemostsimpleCANnetwork.Twonodessoftwaredesign,torealizemutualcommunicationanddatatransceiver,meanwhileinautomobileCANapplication-layerprotocolbasis,PCnodetoreceivemessageprocessing,CANgetvirtualinstrumentcorrespondingeachcontrolthedata.Amongthem,theLabVIEWvirtualinstrumentbasedonSCMsystemdevelopmentandtheCprogramminglanguageisthedesignofthekeyanddifficult.
Keywords:
CANBus;AutomotiveInstrument;LabVIEW;CLanguage;SCM
摘要Ⅰ
第1章绪论
1.1课题研究的目的和意义
传统的汽车仪表只能为驾驶员提供汽车运行中必要而又少量的数据信息。
然而随着汽车电子技术的发展,它已经渐渐不能满足现代汽车对于汽车仪表的功能需要。
因为目前对汽车仪表的要求,已经不仅仅满足于单纯的完成指示工作了,而且还要求汽车仪表能够对实现对汽车各部件参数的监测,而达到控制汽车各种运行工况的目的。
在未来,自动导航和定位系统会渐渐成为汽车仪表的必不可少的配置,而且多媒体等娱乐技术也会嵌入到汽车仪表当中。
所以说,汽车仪表的发展趋势一定是向着全数字仪表的方向去发展的。
仪表是汽车工作状态的信息显示中心,是驾驶员与汽车进行信息交流的平台,是保证汽车安全行驶的关键零部件之一。
近年来随着微电子技术、控制技术、网络通信技术的发展,CAN总线协议在车载电控系统中得到了广泛应用,因此汽车仪表可通过CAN总线直接在总线网络上读取所需的输入信号,无须专门布置传感器,从而可使汽车仪表系统得到大大简化,同时也显著降低了仪表的成本。
因此,将CAN总线通信应用于汽车仪表已成为发展的必然趋势。
本设计选用16位微控制器MC9S12XS128,将仪表与微处理器、CAN总线技术融合,基于CAN总线网络的汽车仪表将代替原有的机械式仪表、电气式仪表和模拟电路电子仪表,把各参数的测量数字化,有利于和汽车其它的电子集中控制系统进行数据交换,有利于汽车集中控制系统的发展和实现,此外还使得汽车仪表的功耗、安全性、可靠性、舒适性得到更好的提高。
通过调整电路参数还可适应不同种类和量程的产品需求,使得汽车仪表在结构的通用化、模块化、标准化、系列化程度大大提高,进而简化了生产工艺和制造设备。
1.2汽车仪表的发展
根据仪表的工作原理、内部结构和显示方式,汽车仪表的发展过程可以分为以下四个阶段[1]:
1.传统仪表阶段。
这一阶段是从20世纪初到20世纪30年代,在此阶段中汽车开始安装各种仪表,如车速里程表、水温表、燃油表、机油压力表、电流表(电压表)和发动机转速表等,这些确定了现代汽车仪表板的基本结构。
这一阶段汽车上的传感器和仪表基本上都是机械式/电磁机械式的,是基于机械作用力而工作的机械式仪表,所以也称机械机芯表。
这种汽车仪表功能单一,仅仅显示传感器的信息以向驾驶员提供自身的状态参数,更多的是为安全性着想,信息量少,整个仪表系统的精度低,可靠性较差,体积较大,容易使驾驶员疲劳。
2.电气式仪表阶段。
这一阶段从20世纪40年代到50年代,仪表功能实现不再仅仅依靠机械作用力,而是基于电测原理,即通过各类传感器将被测的非电量变换成电信号加以测量,称之为电气式仪表。
电气式仪表中常用的是磁电式仪表,其作用原理是永久磁铁在气隙中产生的磁场和可动线圈通入电流后,相互作用而产生的旋转力矩。
磁电式仪表多用于测量电流和电压,加上变换器可以进行多种非电量的测量,如温度、压力等。
磁电式仪表的性能稳定,读数精确,量限多,使用方便,适应于直流电路的精密测量和实验室中的标准测量仪表。
但是其存在的最大缺陷就是随着环境温度的改变,测量误差变大。
3.现代电子仪表阶段,也称模拟电路电子式仪表。
第3代汽车用仪表工作原理与电气式仪表基本相同,只不过是用电子器件取代原来的电气器件,其出现的时间大致在20世纪50~60年代。
随着集成电路技术突飞猛进的发展,这种仪表现在均采用汽车仪表专用集成电路,是国内汽车仪表目前主流产品,目前国内大多数汽车还是采用这种结构的仪表。
经过多年的发展,其结构形式经历了动圈式机心和动磁式机心阶段,围绕着提高指示精度和指针平稳性,动磁式代替了动圈式[2]。
4.步进电机式全数字汽车仪表。
全数字式汽车仪表在国外从80年代末就己经开始研究,在国内直到最近才开始对其重视。
从其应用技术手段上看,还是电子技术范畴,也属于电子式仪表,但是信号传输方式己经从模拟信号变成数字信号,并朝着数字化、智能化、网络化、虚拟化方向发展。
其应用特点是单片机与微处理器的广泛应用,同时软件程序在系统设计方案中占的比重也越来越大,内部程序的编写取代了外围电路的连接闭。
与传统的模拟仪表相比较具有:
使用寿命长、精度高、可靠性好、抗干扰性强等特点。
1.3CAN总线技术推动汽车仪表的升级换代
随着汽车电子技术的飞速发展,将汽车工业推入了一个全新的时代。
由于汽车排放、节能、安全和舒适性等使用性能不断提高,使得汽车电子控制程度也越来越高。
汽车电子装置发展的一个重要趋势,是大量使用微型计算机来提高汽车的性能。
目前,平均每辆车上汽车电子装置的费用约占整车成本的20%,而且越是高档的轿车电子化程度越高。
有的豪华轿车已经使用了48个单片微型计算机。
汽车电子控制装置的增多,
使得连接汽车电子控制装置之间导线也变得更为复杂[3]。
因此,解决现代汽车中众多控制装置和电子仪表之间的数据交换问题,以及车载电子装置之间的数据通信问题变得越来越重要,汽车仪表技术网络化已经成为汽车工业发展的必然趋势。
为解决该问题,德国Bosch公司在80年代初开发了一种串行数据总线,CAN总线。
CAN总线是一种现场总线,通讯线可以是一根双绞线、同轴电缆或光导纤维,将各种汽车电子装置连接成为一个网络[4]。
它可以有效地支持分布式控制或实时控制的串行通信网络。
在这个系统中,各控制装置独立运行,控制和改善汽车某一方面的性能,同时可为其他控制装置提供数据服务。
以分布式控制系统为基础构造的汽车车载电子网络系统,由于CAN总线具有通信速率高、可靠性好、连接方便、多主站点、通讯协议简单和性能价格比高等突出的优点。
如今,CAN总线已成为汽车电子控制装置之间通信的标准总线,在汽车分布式控制系统中得到了广泛的应用。
为使不同厂家生产的零部件能在同一辆汽车中协调工作,1993年11月,ISO在充分考虑工业现场环境的背景下,正式颁布了CAN国际标准,为控制器局域网标准化、规范化推广铺平了道路。
同时,CAN总线得到Motorola、Intel、Philips等著名半导体器件生产厂家的广泛支持,他们纷纷推出了CAN接口芯片与直接带有CAN控制器的微控制器(MCU)芯片,如Intel公司的82527,Philips公司的SJA1000,82C250等。
因此在接口芯片技术方面,CAN已遥遥领先于其它的现场总线,正逐步形成系列。
到目前为至,世界上已拥有20多家CAN总线控制器芯片生产商,110多种CAN总线协议控制器芯片和集成CAN总线协议控制器的微控制器芯片。
在仪表中的CAN应用,主要使用低速通讯接收汽车信息数据,可以从其他ECU接收实时的车速、转速、剩余油量以及发动机水温信号进行模拟指示;另外也可以接收如ABS、油压等报警信息提示驾驶员。
CAN在汽车中另外一个重要应用是诊断(Diagnosis),有专门利用CAN通讯的诊断仪提供给维修厂,汽车各电子控制部分的诊断信息,也可以通过仪表显示。
CAN总线是一种非常适于汽车环境的汽车局域网,在现代汽车设计中,CAN已经成为了必须采用的装置,奔驰、宝马、大众、雷诺汽车都将CAN总线作为控制器联网的手段。
在国内汽车工业中,一些引进车型,如大众的帕萨特和POLO、丰田“花冠”,福特嘉年华等中档车中CAN总线技术得到了广泛的应用。
由于我国中高级车以欧洲车型为主,因此随着CAN总线技术的飞速发展,汽车仪表会进入一个全新的时代。
1.4研究的基本内容
1.基于LABVIEW软件的汽车仪表设计。
2.对汽车仪表的硬件部分进行设计。
本文选用飞思卡尔MC9S12XS128单片机为微处理器。
3.通过C语言编程和LABVIEW编程实现两个CAN节点之间的通信以及单片机和PC机之间的通讯。
4.对所设计的系统进行试验。
第2章CAN总线原理
2.1汽车总线
汽车总线控制是汽车发展的趋势,现代汽车的功能日新月异,而每增加一项功能都要增加相应的电气连接,使得分布车体各处的电缆趋于庞大和昂贵,且导致设计、安装、调试和维护的困难。
传统的电气控制系统设计已不能满足汽车对安全性、性能和便利性的要求这种技术进展,现场总线技术的应用就是这种进展导致的必然结果。
汽车总线控制是汽车产业的发展方向,要想进行总线控制,必须从软件和硬件两个方面着手,而使用嵌入式操作系统对软硬件进行管理,不论是实时性还是从可靠性来讲,都具有无可比拟的优势。
现在在汽车上使用的主要总线,CAN总线、LIN总线、FLEXRAY总线以及MOST总线[5]。
2.2CAN总线
2.2.1CAN总线简介
CAN是一种汽车产业中得到广泛使用的数据与控制通信网络,是一种极具强韧性的电气规范和协议,专门设计用于轿车或卡车中危险、常常无法预料的恶劣环境,而这种环境中有许多应用需要极高的可靠性和容错能力。
1986年2月,RobertBosch公司在SAE年会上介绍了一种新型的串行总线系统—CAN(ControllerAreaNetwork)。
根据这个CAN协议,在1987年中期,Intel开发了首个CAN控制器—82526。
不久,Philips半导体也推出了82C200。
这两种CAN控制器在报文过滤和控制上有许多的不同。
Philips半导体的方式叫BasicCAN;Intel的方式叫FullCAN,由此后的不断发展,从而形成了FullCAN和BasicCAN两大阵营。
在20世纪90年代初,BoschCAN规范(CAN2.0)被提交给了国际标准化组织。
经过讨论,应一些法国主要汽车商的要求,包含了吸收一些VAN网(VehicleAreaNetwork)的内容。
并于1993年11月出版了正式的CAN国际标准ISO11898[6]。
从此CAN协议被广泛的用于各类自动化控制领域。
在1992年,奔驰公司首先在他们的高级轿车上使用了CAN技术。
这是CAN技术在车载网络系统中的首次实际使用。
CAN网络是现场总线技术的一种,它是一种架构开放、广播式的新一代网络通信协议,称为控制器局域网现场总线,是国际上应用最广泛的现场总线之一。
随着汽车电子技术的不断发展,汽车上各种电子控制单元的数目不断增加,连接导线显着增加,因而提高控制单元间通讯可靠性和降低导线成本已成为迫切需要解决的问题。
CAN推出之初是用于汽车内部测量和执行部件之间的数据通信。
例如汽车刹车、防抱死系统、安全气囊等。
机动车辆总线和对现场总线的需求有许多相似之处,即能够以较低的成本、较高的实时处理能力在强电磁干扰环境下可靠地工作。
CAN总线可广泛应用于离散控制领域中的过程监测和控制,特别是工业自动化的底层监控,以解决控制与测试之间的可靠和实时数据交换。
CAN总线能有效支持分布式控制或实时控制的串行通信网络,具有抗干扰性强和使用可靠等优点,现在广泛应用于汽车工业、航空工业和工业控制等自动化领域,如分布式环境监测系统、温室环境监控系统、变电站变监测系统等,CAN总线可在同一网络上连接多种不同功能的传感器(如位置,温度或压力等)。
总线上的每个CAN组件都分配有一个软件赋值的ID。
总线在逻辑上等效于线与功能,可以被任意一个试图发送数据的组件拉低。
发送时脉是由发送组件产生的,因此所有接收组件必须重建时脉和数据位。
组件之间传送的数据遵循标准的CAN通讯格式,其中包括目的组件ID、控制和数据信息负荷以及CRC。
最终指定的接收器将把总线拉低以确认收到一个完整的、CRC正确的讯框,然后释放总线使之回到空闲状态。
每个试图发送的组件在发送之前首先要检查总线是否处于空闲状态。
如果出现多个组件试图同时发送的情况,并且总线上数据出错时它们必须相互侦听,先后退一段时间然后再尝试发送。
CAN总线是一种串行多主站控制器局域网总线,是一种有效支持分布式控制或实时控制的串性通讯网络。
CAN总线的通信介质可以是双绞线,同轴电缆或光导纤维,通信速率可达1Mbps/40m,通信距离可达10Km/40Kbps。
由于其通信速率高,可靠性好以及价格低廉等特点,使其特别适合中小规模的工业过程监控设备的互连和交通运载工具电气系统中。
现代汽车典型的控制单元有电控燃油喷射系统,电控传动系统,防抱死制动系统(ABS),防滑控制系统(ASR),废气再循环系统,巡航系统和空调系统,车身电子控制系统(包括照明指示和车窗,刮雨器等)。
2.2.2CAN总线基本特点
CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对数据的成帧处理,用户可在其基础上开发适应系统实际需要的应用层通信协议[7]。
CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块编码,采用这种方法可使网络内节点个数在理论上不受限制,还可使不同的节点同时收到相同的数据。
CAN采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,有效避免了总线冲突,节省了总线冲突仲裁时间;CAN采用短帧结构,数据段长度最多为8个字节,每一帧的有效字节数为8个(CAN技术规范2.0A),数据传输时间短,受干扰的概率低,重新发送的时间短,8个字节不会占用总线时间过长,从而保证了通信的实时性。
CAN的每帧数据都有CRC效验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境中使用;CAN节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其它操作不受影响;CAN是一种多主总线,即每个节点机均可成为主机,且节点机之间也可进行。
通信网络上任意节点均可以在任意时刻主动地向总线上其它节点发送信息,可以点对点、一点对多点(成组)及全局广播集中方式传送和接受数据;CAN总线提供高速数据传送,通信介质可以是双绞线、同轴电缆或光导纤维,在短距离(40m)条件下具有高速(1Mbit/s)数据传输能力,而在最大距离10000m时具有低速(5kbits/s)传输能力,采用不归零码(NRZ-Non-Return-to-Zero)编码/解码方式,并采用位填充(插入)技术。
2.2.3CAN总线介质通讯访问方式
CAN采用了的3层模型:
物理层、数据链路层和应用层。
CAN支持的拓扑结构为总线型。
传输介质为双绞线、同轴电缆和光纤等。
采用双绞线通信时,速率为1Mbps/40m,50Kbps/10Km,结点数可达110个。
CAN的通信介质访问为带有优先级的CS-MA/CA。
采用多主竞争方式结构,网络上任意节点均可以在任意时刻主动地向网络上其它节点发送信息,而不分主从,即当发现总线空闲时,各个节点都有权使用网络。
在发生冲突时,采用非破坏性总线优先仲裁技术,当几个节点同时向网络发送消息时,运用逐位仲裁原则,借助帧中开始部分的表示符,优先级低的节点主动停止发送数据,而优先级高的节点可不受影响的继续发送信息,从而有效地避免了总线冲突,使信息和时间均无损失。
例如,规定0的优先级高,在节点发送信息时,CAN总线作与运算。
每个节点都是边发送信息边检测网络状态,当某一个节点发送1而检测到0时,此节点知道有更高优先级的信息在发送,它就停止发送信息,直到再一次检测到网络空闲。
CAN的传输信号采用短帧结构(有效数据最多为8个字节)和带优先级的CS-MA/CA通信介质访问控制方式,对高优先级的通信请求来说,在1Mbps通信速率时,最长的等待时间为0.15ms,完全可以满足现场控制的实时性要求。
CAN突出的差错检验机理,如5种错误检测、出错标定和故障界定;CAN传输信号为短帧结构,因而传输时间短,受干扰概率低,这些保证了出错率极低。
另外,CAN节点在严重错误的情况下,具有自动关闭输出的功能,以使总线上其它节点的操作不受其影响。
CAN的通信协议主要有CAN总线控制器完成。
CAN控制器主要由实现CAN总线协议部分和微控制器接口部分电路组成。
通过简单的连接即可完成CAN协议的物理层和数据链路层的所有功能,应用层功能由微控制器完成。
CAN总线上的节点即可以是基于微控制器的智能节点,也可以是具有CAN接口的I/O器件[8]。
2.2.4CAN总线物理层设计
CAN总线协议对物理层没有严格定义,给使用者较大的灵活性,同时也给设计者带来了困难。
CAN总线物理层的设计原则是:
针对CTXO的输出状态显性、隐性,总线应具有两种不同电平,接收端呈现(显性和隐性)两种状态。
不要求总线必须是数字逻辑电平,只要是能够呈现两种电平(显性和隐性)的模拟量,满足上述设计原则就可以。
CAN控制器芯片的片内输出驱动器和输入比较器可编程,它可方便地提供多种发送类型,诸如:
单线总线、双线总线(差分)和光缆总线。
它可以直接驱动总线,若网络的规模比较大,节点数比较多,需要外加总线驱动元件,以增大输出电流。
用CAN收发器作为CAN控制器和物理总线之间的接口,提供向总线的差动发送能力和对CAN控制器的差动接收能力。
一般在驱动芯片和CAN控制器之间加入光电耦合器,增加抗干扰能力。
CAN总线的速度将由光电耦合器的速度决定。
比如:
用4N27光耦,因为它的响应速度比较慢,CAN网络的位速度只能达到几十Kbit/S。
如果采用6N137高速光电耦合器,CAN网络速度可以达到和电阻网络驱动时的速度一样。
2.2.5CAN应用软件设计原则
CAN控制器其内部硬件实现CAN总线物理层和数据链路层的所有协议内容,有关CAN总线的通信功能均由CAN控制器自动管理执行。
CAN控制器对于CPU来说,是以确保双方独立工作的存储影像外围设备出现的。
CAN控制器的地址域由控制段和报文缓存器组成,在初始化向下加载期间,控制段可被编程以配置通信参数。
CAN总线上的通信也通过此段由CPU控制,被发送的报文必须写入发送缓存器,成功接收后,CPU可以从接收缓存器读取报文,然后释放它,以备下次使用。
对于在片的CAN控制器,它与CPU之间的接口一般借助于4个特殊寄存器:
CAN地址寄存器、数据寄存器、控制寄存器、状态寄存器。
对于单独的CAN控制器,MCU可以通过其地址总线对其寄存器直接寻址,就像MCU对一般外部RAM寻址一样。
通过对这些寄存器编程操作,可很方便控制CAN控制器完成通讯功能。
2.3汽车其他总线
2.3.1LIN总线简介
LIN总线是用于车体控制应用的新兴标准,用于汽车中分布电子系统的新型低成本串行通讯系统,它是现有汽车多重传输网络的补充。
LIN瞄准一些低端应用,在这些应用中每个节点的通讯成本都必须大大低于CAN而且不需要CAN的高性能、高带宽和多功能。
LIN相对于CAN的成本节省主要是由于采用单线传输、硅片中硬件或软件的低实现成本和无需在从属节点中使用石英或陶瓷谐振器。
LIN总线是一种串行通信网络,可以将开关、显示器、传感器和执行器等简单控制设备连接起来,主要用于汽车中的分布式电子控制系统。
LIN采用单主机/多从机的总线拓扑结构(没有总线仲裁),仅使用一根12V信号总线。
主节点包含主任务和从任务,从节点只包含从任务。
它不需要专门的片上通讯模块,采用标准串行通信接口USART,速率可达20kbps,总线长度不大于40m。
LIN总线作为一种辅助的总线网络,在不需要CAN总线的优越性能的场合,相比于CAN总线具有更高的性价比LIN瞄准一些低端应用,在这些应用中每个节点的通讯成本都必须大大低于CAN而且不需要CAN的高性能、高带宽和多功能。
LIN是关于汽车本地互连网络的一个总体通讯概念。
该规范包含协议的定义、物理层以及用于开发工具和应用软件的接口定义。
对于不需要控制器局域网络的高带宽和多种功能的应用,LIN实现了一种具有成本效益的智能传感器和执行器的通讯方式。
这种通讯是基于串行通讯接口(SCI)、数据格式、单宿主/多从概念、单线12V总线和没有稳定时间基的节点的时钟同步。
低端多路通讯的汽车标准不久前才出现。
LIN协会开发了一个串行低成本通讯概念和开发环境的标准,采用这个标准,汽车制造商及其供应商能以非常经济的方式创建、实现和处理复杂的分层化多路复用系统。
LIN规范包含传输协议、传输介质以及用于开发工具和应用软件的接口。
LIN在硬件和软件方面支持网络节点的互操作性并具有可预测的电磁兼容(EMC)行为。
这个概念可以实现无缝的开发和设计工具链并提高了