labview汽车CAN 总线.docx
摘要随着欧V排放法规的颁布实施,国际对汽车尾气排放也是越来越加的严格,所以降低汽车尾气排放燃眉之急。然而,只有通过加强对汽车的电子限制管理,这一最经济有效的方法才是适合中国的汽车工业C汽车CAN总线网络是汽车电子眼制管理系统中不行获得的重要组成部分。它就相当于一个公共的信号通道,被用来传输各种汽车传感信号。比如动力系统信号,传动系统信号,底盘系统信号,车身系统信号以和执行器信号等一些其他的信号。本课题基于虚拟仪器1.abVlEW程序开发的汽车CAN总线仿真软件,不仅能够实现实时监测汽车CAN总线信号,而且还能发送模拟的汽车CAN报文。依据本思路建立的简易、廉价、便携的CAN总线通信仿真软件一方面可以模拟实际汽车当中的各种CAN报文的发送和接收,同时还可以与实际的汽车CAN总线进行通讯,从而通过该仿真软件可以实时的监测到汽车真实CAN网络当中的各种信号并以虚拟的仪表仪器直观的显示出来,从而降低了真实仪表仪器的成本,提高了经济性;另一方面,可以通过该仿真软件作为教学软件,让学生了解CAN总线技术和协议,提高学生对CAN总线网络的认知,同时还可以提高学生们的动手编程实力,从而来提高学生编程的系统构架。关键词:欧V,仿真,CAN总线,模型,通信AbstractAsEuropeanVemissionregulationwaspublished,internationalrequirementaboutvehicles'exhaustgasemissionissharperandsharper.Soreducingcars'emissionisourtaskwhatmustbedonenow!AndstrengtheningelectriccontrollingaboutvehiclesisaeconomicwaywhichisoptimaltoChina'scarindustry.CANBUSnetisanindispensablepartincars'electriccontrolandmanagement.Itworksascommonaccesstotransmitvariablesensors'signalssuchasdynamicsystem'ssignals、transmissionsystemssignals、automobilechassissystem'ssignals、carbodysystem'ssignals、actuators'signalsandsoon.Theissuebasedonavehicles'CANBUSsimulationsoftwaredevelopedby1.abVIEWprogramme,notonlycanmonitorcars'CAN-BUSrealtimesignals,butalsocansendsimulativecars'CANBUSmessage.Onaccountoftheideaabove,thispaperfinishedasimple、economicandconvenientCAN-BUScommunicativesimulationsoftware.Ontheonehand,thesoftwareisusedtosimulateCANBUSmessage'sendingandreceiving.Itcancommunicatewithrealcars'CAN-BUSnetmonitoringcars'variablesignalsinitsrealCAN-BUSshownbyvirtualdashbordwhichiseconomicbecauseofloweringthecostingofrealdashbord.Ontheotherhand,thesimulationsoftwarecanbeusedineducationshowingstudentstheskillanddealofCANBUSnet,makingthemknowofCANBUSnet.Andwhat'smore,students'programmingabilityisimproving,soisstudents'ideaaboutprogramming'systemframework.Keywords:EuropeanV,simulation,CAN-BUS,model,communication1班11.1 背%概况1汽车CAN总线概述11.abVlEW的概述2汽车CAN总线仿真软件发展31.2 国内探讨现状41.3 课题探讨的内容和意义41.4 主要工作52系筑的硬件结构62.1 PC机62.2 CAN接11卡63系统的软件设计83.1 软件系统设计83.2 软件的前面板设计93.3 软件的后面板设计123.3.1 软件设备的打开和关闭133.3.2 CAN总线配置153.3.3 CAN报文组成193.3.4 CAN报文内容蛆成和发送193.3.5 CAN报文接收和拆分显示223.3.6 CAN报文列表和保存263.3.7 软件后面板总程序图304窝试结果与324.1 仿真软件CAN报文的发送和接收测试324.2 集成测试365突破的技术难点总结39结论与40致影错误!未定义书签。分考文献411缗论1.1 背景概况1.1.1 汽车CAN总线概述CAN(ControllerAreaNetwork)即限制需局域网络。由于其高性能、高牢然性、和独特的设计,CAN越来越受到人们的重视。国外已有很多大公司的产品采纳了这技术。CAN总线技术最初是由德国的BoSCH公司为汽车监测、限制系统而设计的。现代汽车越来越多地采纳电子装置限制,如发动机的定时、喷油限制,加速、刹车限制(ASC)和困难的抗锁定刹车系统(ABS)等。由于这些限制需检测和交换大房数据,采纳硬接信号线的方式不但烦琐、昂贵,而且难以解决问题,采纳CAN总线上述问题便得到很好地解决。汽车总线系统的探讨与发展可以分为三个阶段:1,探讨汽车的基本限制系统(也称舒适总线系统),如照明、电动车窗、中心集控锁等。2,探讨汽车的主要限制系统(也称动力总线系统),如电喷ECU限制系统、ABS系统、自动变速箱等。3,探讨汽车各电子限制系统之间的综合、实时限制和信息反馈。2003年以后,国际标准化组织接连发布了ISOll898-1(CANdatalinklayer)标准、ISOl1898-2(high-speedMAU)标准、ISO16845(CANconformancetestplan)标准、ISoll898-4(time-trieredCAN)标准等一系列CAN总线相关标准,进一步规范了这一技术的发展,使得CAN总线普和速度进一步加快。CAN总线优点:1,信息共享采纳CAN总线技术可以实现各ECU之间的信息共享,削减不必要的线束和传感器。例如具有CAN总线接口的电喷发动机,其它电器可共享:其供应的转速、水温、机油压力、机油温度、油域瞬时流速等,这样一方面可省去额外的传感器,另一方面可以将这些数据显示在仪表上,便-F司机检杳发动机运行工况,从而便于发动机的保养维护。2,减小线束新型电子通讯产品的出现对汽车的综合布线和信息的共享交互提出了更高的要求,传统的电气系统大多采纳点对点的单通信方式,相互之间少有联系,这样必定造成浩大的布线系统。据统计一辆采纳传统布线方法的高档汽车中,导线长度可达2000米,电气节点达1500个,而且该数字大约每十年增长1倍。这种传统布线方法不能适应汽车的发展。CAN总线可有效削诚线束长度,节约空间。例如某车针对车门、后视镜、摇窗机、门锁限制等功能的传统布线须要2030根,应用总线CAN则只须要2根。无论从材料成本还是工作效率看,传统布线方法都将不能适应汽车的发展C下图分别为相同节点的传统点对点通讯方式和运用总线的通讯方式,从图可以直观地比较线束的变更(图中节点之间的连线仪表示节点间存在的信息交换,并不代表线束的多少)。BBl-I传林的节点整讯方式图12CAN总线通讯方式3,关联限制在肯定事故3须要对各ECU进行关联限制,而这是传统汽车限制方法难以完成的,而CAN总线技术可以实现多EeU的实时关联限制。在发生碰撞事故时,汽车上的多个气囊可通过CAN协调工作,它们通过传感器感受碰撞信号,通过CAN总线将传感器信号传送到一个中心处理器内,限制各平安气囊的启动弹出动作。1.1.21.abVIEW的霰述虚拟仪器(VirtUaIlnStrUment,简称VI)是基于计算机系统的数字化测量测试仪器,它充分利用现有计算机资源,并配以独特设计的仪器硬件和专用软件,能实现一般仪器的全部功能以和一些在一般仪器上无法实现的特别功能,常被称作“软件仪器”。它利用数据采集模块完成一般测依测试仪器的数据采集功能,利用计算机系统完成一般测量:测试仪器的数据分析和输出显示等功能。虚拟仪器是计算机技术、现代测砧技术共同发展的结晶,代表着当今仪器发展的及新趋势。1.abVIEW是虚拟仪器领域中最具有代表性的图形化编程开发平台,是目前国际上首推并应用最广的数据采集和限制开发环境之一,主要应用于仪器限制、数据采集、数据分析、数据显示等领域,并适用于多种不同的操作系统平台。与传统程序语言不同,1.abVIEW采纳强大的图形化语言(G语言)编程,面对测试工程师而非专业程序员,编程特别便利,人机交互界面直观友好,具有强大的数据可视化分析和仪器限制实力等特点。运用1.abVlEW开发环境,用户可以创建32位的编译程序,从而为常规的数据采集、测试、测砧等任务供应了更快的运行速度C1.abVlEW是真正的编译器,用户可以创建独立的可执行文件,能够脱离开发环境而单独运行。1.1 .3汽车CAN总线仿真软件发展随着电子技术的提高,汽车电子也在快速的发展,这就导致了机械式仪器仪表跟不上汽车电f的发展,同时一种实时的电手仪器仪表须要被快速的替代机械式仪器仪表。为门降低成本提高精度,一种汽车CAN总线仿真软件须要被开发出来实时的去监测汽车CAN总线信号,从而来提高汽车的电子限制精度和高限制性能。以前的方法是通过用仪器仪表来显示,精度差,从而带来的误差也较大。所以须要一种虚拟汽车CAN总线仿真软件来监测CAN总线当中的各种信号,不仅成本很低,而且精度也很高.同时随着计算机技术的快速发展,现代的PC计算机有若很高的计算处理功能,为像1.abVlEW这样的虚拟软件或者VB,VC一些编程软件供应(个高性能的平台,借助这些软件来编写虚拟的汽车CAN总线仿真软件系统,从而实时的去监测汽车CAN总线当中的各种信号,同时也可以去发送模拟的汽车CAN报文,提高汽车限制系统的开发精度和降低开发成本C1.2 国内搽讨现状通过搜集国内一些相关文献如:1,桂林航天工业高等专科学校,覃维献,«1.ABVIEW开发汽车CAN总线数据采集系统,该系统自己设计硬件和驱动,这样变导致了开发周期长,经济性较差,硬件部分的功能不够强大,同时对底层的硬件测试也较难。然而本课题干脆跳过硬件部分,购买国内某款特别成熟的USB-CAN通讯转换模块,只须要了解该转换模块的功能以和它的定义还方工作方式,就可以干脆进行本课题的探讨开发,这样就会大大降低探讨开发时间,降低成本。2,同济高校,刘翔,基于1.abVlEW和CAN总线的汽车数据采集监测系统,该系统是利用周立功CAN接口卡调用库函数节点实现的仿真软件编程,但是该系统只是一个堂向的接受CAN报文并解读,没方发送CAN报文的功能,这样就导致了局限性,而没有很好的扩展性。本课题的仿真系统可以实时的依据采集对象的不同来进行程序的微调,从而来实现该仿真系统的扩展性和广泛的好用性。1.3 课题探讨的内容和意义本课题是基于1.abVlEW和USB-CAN的总线通信系统的仿真软件开发,主要是开发出套仿真系统能够实时监测汽车CAN总线网络中的各种信号并以虚拟仪表仪器直观的显示出来,同时又可以发送模拟的汽车CAN报文,同时还可以实现故障诊断.本课题的意义在于:一方面,可以模拟实际汽车当中的各种CAN报文的发送和接收,同时还可以与实际的汽车CAN总线进行通讯,从而通过该仿真软件可以实时的监测到汽车真实CAN网络当中的各种信号并以虚拟的仪表仪器直观的显示出来,从而降低了真实仪表仪器的成本,提高了经济性;另一方面,可以通过该仿真软件作为教学软件,让学生了解CAN总线技术和协议,提高学生对CAN总线网络的认知,同时还可以提高学生们的动手编程实力,从而来提高学生编程的系统构架;1.4 主要工作本课题主要有以卜工作(1)收集国内外相关1.abVIEW仿真汽车CAN总线资料,并对汽车CAN总线有所了解和驾驭。(2)熟识操作1.abVlEW编程软件,运用其中的例子基本娴熟操作此编程软件。(3)结合科瑞兴业有限公司供应的USB-CAN通讯转换模块,采纳调用库函数节点来编写仿真软件模型。(4)对基本上成型的仿真软件进行CAN报文传输的调试和测试。(5)对调试好的仿真软件进行人机界面的美工优化设计。(6)最终是生成仿真软件的应用程序。(7)收集调查资料和测试数据,完成毕业论文。2系端的硬件结构2.1 PCft该系统是由两台或者两台以上(最多16台)的支持WIN98、WIN2000和XP操作系统环境的可移动便携式电脑构成。然后每台电脑上都安装有基于1.abVlEW编写的程序来仿真模拟汽车不同板块的ECU,接入CAN总线当中来进行发送和接收CAN报文C2.2 CAN揍口卡本课题选用的是由北京科瑞兴业科技有限公司供应USB-CAN通讯转换模块智能CAN接口卡(类型是K-7121),它带有1路CAN接口具有USB接口的高性能CAN总线通讯适配卡,使PC机便利地连接到CAN总线上构成一个节点,从而实现CAN2.0协议的数据通讯;该转换模块上自带500个字节的数据存储空间,可达到每秒2000帧的传输速度,保证数据不丢失C该转换模块USB2.0接口,最高可达12MbPS的传输速率;CAN限制器数据传送速率可由用户设定:5Kbps-IMbps;支持CAN20B协议(兼容CAN2.0A),符合ISO/IS11898标准;最高帧流量达到2500帧/秒;CAN上传USB的模块批量匕传线冲区最大为BUHer30013=3900字节,即等于3。0个CAN的扩展帧长,USB下传CAN的模块批属下传缓冲区最大为BUffer=400字节。供电方式:USB总线供电,或运用外接电源(+10V-+30V,400mA);磁铁隔离:DC2500V;工作温度:Oc70;运行环境:Win9XMe.Win2000/XP操作系统。如Z图是CAN总线连接图:图21CAN网络结构为了增加CAN通讯的牢靠性,CAN总线网络的两个端点通常要加入终端匹配电阻,如图3.1所示。终端匹配电阻的大小由传输电缆的特性阻抗所确定。例如双绞线的特性阻抗为120C,则总线上的两个端点也应集成120Q终端电阻。留意:CAN通讯线可以运用双绞线、屏蔽双绞线。若通讯距离超过IKM,应保证线的截面积大于中1.omm2,具体规格应依据距岗而定,常规是随距岗的加长而适当加大。如卜.图是转换模块图片:图2-2K712IUSB-CAN通讯转换模块3系统的软件设计系统硬件构成简洁,结合硬件工作特性,主要围绕软件设计方面进行主要的开发工作。3.1 软件系统设计本课题仿真软件主要包括以下三项功能:1, 发送模拟汽车CAN报文至CAN总线当中。2, 从CAN总线当中接收汽车CAN报文。3, 供应人机界面以设置不同的波特率和数据帧格式。-1.依据需求将发送和接收的汽车CAN报文数据保存以便后续的分析。依据上述需求,该仿真软件系统包括1个主控程序与2个功能子程序:1,主控程序用于启动,设置以和关闭,并且负责处理全部的人机交换界面的操作。2, 数据发送和接收子程序利用USB-CAN通讯转换模块来发送和接收模拟的汽车CAN报文数据。3, 数据列表和保存子程序将发送和接收的汽车CAN报文以列表的方式显示,其中列表当中有序号,时间,帧类型,帧长度,帧ID,-数据。并且保存发送和接收数据列表。以上3个程序主要是在依次结构,条件结构以和While结构程序中运行。主控程序随软件启动运行,它可以依据用户的需求,可以设置波特率以和帧类型,同时可以实时调度其余2个子程序的运行,并将各子程序的运行结果传递给相关功能面板的显示控件以反馈给用户,子程序功能就是实现汽车CAN报文数据的发送和接收以和列表显示、存储。当主控程序正常后动接口卡并使其工作后,数据接收子程序才能运行,数据列表与保存子程序,必需在前两者正常工作后,才能依据用户要求执行相关功能。如图31软件程序结构所示:主控程序数据发送和接收子数据列表及保存了功能需求部分图3-1软件程序结构图CAN报文数据的发送和接收是系统监测功能的基础,而软件本身须要依战接口卡从CAN总线接收数据,因此,要实现全部的功能,必借首先正确启动USB-CAN通讯转换模块,初始化其相关运行参数,使其可以正常运行。USB-CAN转换模块智能CAN接11卡供应了大房的VCl函数库(应用程序接口),这些函数可以从接IlK的驱动文件K7121D1.1.dll中导出,并可以在1.abVlEW中调用,实现对接口卡的启动、设置等相关操作。具体的调用和设置在软件后面板中将会展示。3.2软件的前面板设计前面板设计主要有三大块:1,配置设备板块。2,模拟数据调整板块。3,接收数据显示板块。摸拟数据汽车CAN总线仿真软件CAN报文列表2发动机状况及冷却"XrpnwicX3方一犷e三ffBAR9CMR.:。y"Jr"图3-2配量和调强板块如图3-1所示,该界面总共有7个功能显示控件;1,打开设备一当程序运行时,单击“打开设备”,软件将会自动去识别硬件,从而实现软件和硬件的连接,然后进行卜.一步程序运行。2,退出一当程序运行时,单击“退出”,整个程序将会停止运行,程序处于休眠状态。3,帧类型一当程序运行时,单击“帧类型”,选择接收和发送的CAN报文的帧格式,主要是标准帧和扩展帧两种。4,波特率一当程序运行时,单击“波特率”,选择接收和发送的CAN报文的传输速度,主要有20K,100K,250K,500K四种波特率。5,系统时间一当程序运行时,该显示控件会主动的去读取电脑当前时间,并显示出来,然后可以作为CAN报文发送和接收的时间。6,设备状态一当程序运行时,单击“打开设备”,程序会自动的去识别硬件,当识别胜利,该显示控件会显示“设备打开胜利!”。当由其他缘由导致的设备打开失败,该显示控件会显示“设备打开失败!”7,数据调整一该控件是输入控件,通过变更数值的大小来变更发送的CAN报文数据,从而发送到CAN总线上。图A3显示仪表板块如图3-3所示,该界面主要是仪表控件显示功能:该界面的功能就是显示汽车CAN报文当中的数据。个CAN报文当中最多有8个信号数据,然后每个信号数据是8位,最大值为225。该界面主要是将CAN报文中的每个信号数据以仪表的方式显示,这样便很直观的展示出来.如如3-3所示,该界面有发动机仪表,燃油压力仪表,机油压力仪表,大气压力仪表,大气温度仪表,进气温度仪表,冷却水温度仪表,燃油温度仪表,机油温度仪表,机舱内温度仪表,路面温度仪表。该界面可以敏捷的变更,通过对后面板程序的处理可以依据需求去换其他信号的虚拟仪表,还可以增加更多的虚拟仪表,敏捷性特别大C假如作为一个教学软件的话,这样提高学生对汽车CAN总线技术的理解,还可以熬炼学生的编程思维和实力。同时,还可以依据不同ECU的通讯协议,去变更该软件的一些细微环节去适应各种不同协议的通讯。模拟数据汽车CAN总线仿真软件CAN报文列表1'r*'发送的CANa!文图34报文列表和保存如图3-4所示,该界面是汽车CAN报文列表显示和保存板块,主要功能有卜:1,存储路径一当程序运行时,可以点击该控件从而来选取汽车CAN报文的路径,把CAN报文数据存储在我们想要的地方。2,进制转换一当程序运行时,单击该控件从而来选取以什么进制的格式显示汽车CAN报文当中的信号数据。(该格式为十进制和十六进制两种数据格式)3,存储一当程序运行时,单击该控件以保存发送和接收的汽车CAN报文,以便于后期的数据分析和处理。4, CAN报文数据列表一这是一个列表显示控件,显示接收和发送的汽车CAN报文。该列表当中,第一列是发送和接收CAN报文序号,以便查看到发送的每一条CAN报文。其次列是发送和接收CAN报文时间。第三列是发送和接收每条CAN报文的ID,从而确定地址。第四列是每条CAN报文的数据的类型(标准帧和扩展帧两种)。第五列是每条CAN报文当中数据的K度。第六列是每条CAN报文当中的信号数据(该数据作为后期的分析和处理)。3.3软件的后面板设计该软件的后面板设计主要是采纳了“依次结构”,“While结构”和“条件结构'。主要是采纳调用库函数节点的方法来实现软件和硬件的相结合。如F图35所不(CallUbraryFunctionNod)aw*入7SBW=W三(无0)Eg廉先出HnJ1.U3.-1!-ac2三sUM«D1.UWJ?1M.图35调用库函数节点该函数支持众多数据类型和调用规范。该节点可用于调用大多数标准或自定义D1.1.或共享库中的函数.如需调用含力ACtiVCX对象的D1.1.,可运用打开自动化函数与属性节点和调用节点。3.3.1 软件设备的打开和关闭1,设备打开设计调用转换模块的打开设备函数DeViCeOPen(U1.ONGmindex),函数参数:mindex是指定设备序号(最多可以连接16个设备),函数返回值:1,函数调用胜利;0,函数调用失败。该函数主要是用来打开连接设备。(八)(b)当该函数调用胜利之后,设备打开,函数返回值为1,通过条件结构此时设备状态文本显示控件将会显示“设备打开胜利!”,同时状态指示灯也会亮。当该函数调用失败或者设备连接失败,函数返网值为0,通过条件结构此时设备状态文本显示控件将会显示“设备打开失败!”,同时状态指示灯也是暗的C如F图37程序所示:图37设备连接状态显示2,设备关闭设计调用转换模块的关闭设备函数DeViCee1。Se(U1.oNGmindex),函数参数:mindex是指定设备序号(最多可以连接16个设备),没有函数返回值。该函数主耍是用来关闭设备的。如下图38所示:图38调用DCViCCClOSe函数当用户按须要停止或者结束汽车CAN报文的发送和接收时,单击退出控件时,马上调用关闭设备函数,从而来结束汽车CAN报文的发送和接收,整个程序处于休眠状态。3.3.2 CAN总线配量CAN总线配置设计主要是针对CAN总线的帧类型,首地址,末地址,波特率进行设计。调用转换模块的配置CAN总线函数CanWriteConfig(U1.e)NGmindex,PUCHARbdata),函数参数说明:mindex:指定设备序号。bdata:指向配置参数缓存区的指针,bdata中的参数用于设定CAN接口的参数,共14个字节。函数返回值:1:表示函数调用胜利0:表示函数调用失败.如卜图39配置函数调用:图39调用CanWriteConfig函数1.三.-如下图310对bdata说明:bdata中的参数定义:字节敷bdata微存区参数描述字节1标准帧(0)、rn<1)帧信息只对块的数期传输的效字V2CANJDCANJD,只对块的数抠彼蜿仃效字节3首地处字节0接收监收地址范根的苜地加字W4首地址字箕1字节51地址字节2字节6行地址字节3字节7木地址字节0接收验收地址范成的末地址字节8末地址字片1字节9木地址字节2字HIo末地址字W3字节11CAN波特率字节0CAN的波特率值0字¼12CAN波特率字节1CAN的波特车值1字节13CAN波特率字W2CAN的波特卓伍2字W14CAN波特书字3CAN的波特率值31,帧类型设计帧类型只有标准帧和扩展帧两种格式,它们主要是帧ID长度不样。标准帧的ID是11位,然而扩展帧的ID是29位,这样扩展帧可以携带更多的CAN报文。该设计采纳下拉菜单的方式来设计,标准帧对应数字0,扩展帧对应数字1,从而变更下拉菜单内容来变更输出的数字,以便调用相对应的函数内容。如F图311对下拉菜单的设计:(b)(c)图311下拉菜单设计2, CAN总线ID地址范围设置该CAN总线的首地址是XOooOOO00,木地址是XFFFFFFFF,ID最大长度为29位。如下图3-12所示:EB=baab6obdAod一:三:三二:IN二:一图312CAN总线ID范围3, CAN总线波特率设计依据转换模块供应的波特率表如下图3-13所示:图313波特率表依据转换模块的波特率表以和CAN总线的需求,选择波特率20K,50K,100K,250K,500K从而选择的BTR为OXoOO50095,0x0005003BQXoOO5001D,0x0005000B,0x00050005。波特率采纳条件结构来选择相对应的波特率的BTR。的设置还是采纳下拉菜单的方式,如下图314所示:波特率3佻20k50k100k250k500k皮特率Kbps)51Jl1.I20k,Ki波特率IIIII"100k"波特军卜OOo5003Bf0x00050002kIIIi,5k-20k.RiA,50k,100k,250k,500k,20k.默认'50k,100k,250k,20k.JKU50k,卜OOO500IDhJ100k250k,500k20k,JttU'50k,lk,250k,5k'"250k'TtraI"III-00050095P1.lll20k,如j,50k100k,250k,5k-卜OoO500OB卜B卜OoO5O5k¾M崎s'500kIiBIbc图314CAN总线波特率设涌时下t½i油痔密.夕火后道i寸后面柘的多件钻检合土冼蛙Ill时向3.3.3CAN报文ift成一个完成的CAN报文组成是由帧信息,帧ID和帧数据内容组成的。依据该转换模块的硬件条件,一个完成的CAN报文帧是13个字节,字节内容如下表。如下图315所示:字节0123456789101112I标准帧帧信息ID标准帧数据扩展帧帧信息ID扩展帧数据图315CAN报文构成CAN报文亦扩展帧和标准帧两种类型,主要的不同在于ID长度的不同,标准帧的ID为11位,如上图所示它只占了2个字节长度。而扩展帧的ID为29位,如上图所示它占了4个字节长度。在发送CAN帧报文时,必需依据上表定义添入字节内容。由干受到转换模块的硬件条件,必需在13个字节前增加一个字节添入数字3,表示这是要依据CAN帧格式发送的数据。在读取CAN帧报文时,接收到的每帧都是13个字节长度(0-12),字节内容定义如上表所示,其中有效数据长度由帧信息字节的内容确定。3.3.3 CAN报文内毒取成和发送1, CAN报文内容CAN报文最终是以数组的方式来发送的,所以采纳1.abVlEW的创建数组函数来创建CAN报文。如下图316:图316创建数组依据CAN报文的格式来创建数组,总共是14个字节,每个字节长度是8位。系统软件设计两个CAN报文,都是是标准帧类型。(1)发动机状态报文该报文的帧ID设置为OOOOOODD,报文内容依次是发动机转速,冷却水温度,燃油压力,燃油温度,机油压力,机油温度,最终两个字节为空。由于一个字节长度是8位,所以一个字节的最大数是255,所以在后面板程序框图中,发动机转速除以100之后输入。如下图317所示:图317发动机状态数据(2)环境条件报文该报文的帧ID设置为OoooooEE,报文内容依次是路面温度,进气温度,发动机舱内部温度,大气温度,大气压力,最终3个字节为空,一个字节长度是8位,一个字节的最大数是255。如6图3一如所示:图318环境条件报文2, CAN报文发送调用转换模块的库函数一发送CAN帧CanWriteFrame(U1.oNGmindex,U1.ONGlength,PUCHARbdata),该函数是用来发送一帧数据。函数参数说明:mindex:指定设备序号,。对应第一个设备。1.ength:指定发送长度。bdata:指向填有发送内容的缓存区的指针。(b)(八)(c)图316调用CanWritCFramC函数CAN报文构建完整之后,将构建好的CAN报文数组写入到bdate等待被发送。3.3.4 CAN报文接收和拆分显示1, CAN报文接收调用转换模块的获得模块现已接收的CAN帧字节数依库函数CanRCadFramCnUm(U1.oNGmindex),此函数用来获知模块现已接收到的CAN帧字节数殖。函数参数说明:mindex:指定设备序号,0对应第一个设备。函数返回值:UlNT型整数:表示缓冲区内已收到的字节数欣。0:表示缓冲区为空,没有收到数据C该函数用来检测接收到CAN帧是不是为空,假如为空那么接着读取,假如不为空那么将CAN帧传递给下一个函数读取缓冲区已力的数据,如F图3-17所示:(a)(b)(C)|?|317调用CanReadFramenUm函数调用转换模块的读取缓冲区已有的数据CanReadAnData(U1.ONGmindex,U1.ONGlength,PUCHARbdata),此函数用来读取接收缓冲区已存的CAN帧里的13个字节的数据内容。函数参数说明:mindex:指定设备序号,0对应第一个设备。length:要读取的字节长度,由函数5,6的返回值确定。bdata:指向要保存的数据缓存区的指针。然后接收到的bdate数组进行拆解。如下图318所示:j(b)图318调用CanRCadAllData函数该函数的设置为每次的开启都初始化全部为0,然后把接收到的数组引出来进行卜一步的数组拆解.2, CAN报文的索引拆解接收到数组须要进行拆解,所以在1.abVlEW程序当中采纳索引数组的方式来进行CAN报文数组的拆解。如卜图319所示:图319索引数蛆该函数控件的功能就是依据接收到的CAN报文格式进行依次的拆解,然后再显示出来.(1) CAN报文的ID索引依据前面的CAN报文组成格式,该系统接收到的CAN报文为13个字节长度,CAN报文的ID分布在第1、2、3、4字节中,然而索引只能索引到每个字节,所以须要将索引到的第1、2、3、4字节.内容依据凹凸位的依次拼接起来从而显示为一个完整的CAN报文IDi)如下图320所示:围时常助回S三H8(JoinNumbershi=时©Ioj基于字i?或字长创建数字.(八)整数拼接控件示意图(b)CAN报文ID索引拼接图32。接收的CAN报文ID如上图所示,通过索引第1、2、3、4字节依据高位和低位的依次,先将第1、2字节内容拼接,再将3、4字节内容拼接,然后将两个拼合好的内容再进行最终的拼接整合就形成了接收到的CAN报文ID。(2) CAN报文数据索引依据前面的CAN报文组成格式,该系统接收到的CAN报文为13个字节长度,发刖转速W屋冷却水温度枳治温度RQOOOOOEE1.11fI3j&0CAN报文的数据内容分别分布在第5、6、7、8、9、10、11、12字节中,将这个8个字节内容通过创建数组控件创建成一个数组。然后通过对接收到的CAN报文ID进行推断对比,然后再进行CAN报文数据内容的索引显示。先将CAN报文ID索引出来拼接,进行数值至字符串的转换,将转换后的字符串给条件结构进行对比推断。在文章的陷面已经规定了发动机状态和环境条件两个CAN报文的ID,OXOOOoOOEE和OXOoOOooDD。假如读取的CAN报文和条件结构当中的字符串一样那么进行卜一步的索引显示。如下图321所示:图322发动机状态CAN报文索引显示一困|:汇|:.:|:|:;|:;U如上图所示,在条件结构当中对CAN报文的ID进行对比,假如是OOooOOEE条件结构为其那么对CAN报文数据内容进行次索引显示,第1位是发动机转速,第2位是冷却水温度,第3位是燃油压力,第4位是燃油温度,笫5位是机油压力,第6位是机油温度。由于在CAN报文发送时,发动机的转速是除以100之后的转速,接收到的发动机转速必需*100,所以在发动机转速的仪表上有*100的单位。如下图323所示:图323环境条件CAN报文索引显示如上图所示,在条件结构当中对CAN报文的ID进行对比,假如是OOooooDD条件结构为其那么对CAN报文数据内容进行依次索引显示,第1位是路面温度,第2位是进气温度,第3位是机舱内温度,第4位是大气温度,第5位是大气压力。3.3.5 CAN报文列表和保存1, CAN报文列表山前文第三章其次小节软件的前面板设计所知,CAN报文数据列表是一个列表显示控件,用来显示接收和发送的汽车CAN报文的具体信息。该列表当中,第一列是CAN报文序号,其次列是发送和接收CAN报文时间,第三列是发送和接收每条CAN报文的ID,第四列是每条CAN报文的数据的类型(标准帧和扩展帧两种)。第五列是每条CAN报文当中数据的K度C第六列是每条CAN报文当中的信号数据C在后面板程序框图中采纳创建数组,将这六列列表内容以字符申的格式创建成一个数组,然后将数组传递给多列列表。(1) CAN报文序号CAN报文序号利用累加器方式来进行累加,没收到一次CAN报文然后序号加1累计,初始序号为0,累加之后的序号进行数值转换成字符串传递给“创建数组”控件等待下一步。如下图324所示:1>RTRCountIOunt倍TRCoUm>图324CAN报文列表序号(2) CAN报文时间CAN报文时间主要是来监