汽车CAN总线仿真软件发展概述_第1页
汽车CAN总线仿真软件发展概述_第2页
汽车CAN总线仿真软件发展概述_第3页
汽车CAN总线仿真软件发展概述_第4页
汽车CAN总线仿真软件发展概述_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

...wd......wd......wd...摘要随着欧Ⅴ排放法规的公布实施,国际对汽车尾气排放也是越来越加的严格,所以降低汽车尾气排放迫在眉睫。然而,只有通过加强对汽车的电子控制管理,这一最经济有效的方法才是适合中国的汽车工业。汽车CAN总线网络是汽车电子控制管理系统中不可获取的重要组成局部。它就相当于一个公共的信号通道,被用来传输各种汽车传感信号。比方动力系统信号,传动系统信号,底盘系统信号,车身系统信号以及执行器信号等一些其他的信号。本课题基于虚拟仪器LabVIEW程序开发的汽车CAN总线仿真软件,不仅能够实现实时监测汽车CAN总线信号,而且还能发送模拟的汽车CAN报文。依据本思路建设的简易、廉价、便携的CAN总线通信仿真软件一方面可以模拟实际汽车当中的各种CAN报文的发送和接收,同时还可以与实际的汽车CAN总线进展通讯,从而通过该仿真软件可以实时的监测到汽车真实CAN网络当中的各种信号并以虚拟的仪表仪器直观的显示出来,从而降低了真实仪表仪器的本钱,提高了经济性;另一方面,可以通过该仿真软件作为教学软件,让学生了解CAN总线技术和协议,提高学生对CAN总线网络的认知,同时还可以提高学生们的动手编程能力,从而来提高学生编程的系统构架。关键词:欧Ⅴ,仿真,CAN总线,模型,通信目录1绪论11.1背景概况11.1.1汽车CAN总线概述11.1.2LabVIEW的概述21.1.3汽车CAN总线仿真软件开展21.2国内研究现状31.2课题研究的内容和意义31.4主要工作42系统的硬件构造52.1PC机52.2CAN接口卡53系统的软件设计73.1软件系统设计73.2软件的前面板设计83.3软件的后面板设计113.3.1软件设备的翻开和关闭123.3.2CAN总线配置143.3.3CAN报文组成183.3.3CAN报文内容组成及发送183.3.4CAN报文接收及拆分显示213.3.5CAN报文列表及保存253.3.6软件后面板总程序图284测试结果与验证304.1仿真软件CAN报文的发送和接收测试304.2集成测试345突破的技术难点总结37结论与展望381绪论背景概况汽车CAN总线概述CAN(ControllerAreaNetwork)即控制器局域网络。由于其高性能、高可靠性、及独特的设计,CAN越来越受到人们的重视。国外已有许多大公司的产品采用了这一技术。CAN总线技术最初是由德国的BOSCH公司为汽车监测、控制系统而设计的。现代汽车越来越多地采用电子装置控制,如发动机的定时、喷油控制,加速、刹车控制(ASC)及复杂的抗锁定刹车系统(ABS)等。由于这些控制需检测及交换大量数据,采用硬接信号线的方式不但烦琐、昂贵,而且难以解决问题,采用CAN总线上述问题便得到很好地解决。汽车总线系统的研究与开展可以分为三个阶段:研究汽车的根本控制系统〔也称舒适总线系统〕,如照明、电动车窗、中央集控锁等。研究汽车的主要控制系统〔也称动力总线系统〕,如电喷ECU控制系统、ABS系统、自动变速箱等。研究汽车各电子控制系统之间的综合、实时控制和信息反响。2003年以后,国际标准化组织陆续发布了ISO11898-1〔CANdatalinklayer〕标准、ISO11898-2〔high-speedMAU〕标准、ISO16845〔CANconformancetestplan〕标准、ISO11898-4〔time-triggeredCAN〕标准等一系列CAN总线相关标准,进一步标准了这一技术的开展,使得CAN总线普及速度进一步加快。CAN总线优点:1,信息共享采用CAN总线技术可以实现各ECU之间的信息共享,减少不必要的线束和传感器。例如具有CAN总线接口的电喷发动机,其它电器可共享其提供的转速、水温、机油压力、机油温度、油量瞬时流速等,这样一方面可省去额外的传感器,另一方面可以将这些数据显示在仪表上,便于司机检查发动机运行工况,从而便于发动机的保养维护。2,减小线束新型电子通讯产品的出现对汽车的综合布线和信息的共享交互提出了更高的要求,传统的电气系统大多采用点对点的单一通信方式,相互之间少有联系,这样必然造成庞大的布线系统。据统计一辆采用传统布线方法的高档汽车中,导线长度可达2000米,电气节点达1500个,而且该数字大约每十年增长1倍。这种传统布线方法不能适应汽车的开展。CAN总线可有效减少线束长度,节省空间。例如某车针对车门、后视镜、摇窗机、门锁控制等功能的传统布线需要20~30根,应用总线CAN则只需要2根。无论从材料本钱还是工作效率看,传统布线方法都将不能适应汽车的开展。以下列图分别为一样节点的传统点对点通讯方式和使用总线的通讯方式,从图可以直观地比拟线束的变化〔图中节点之间的连线仅表示节点间存在的信息交换,并不代表线束的多少〕。图1-1传统的节点通讯方式图1-2CAN总线通讯方式3,关联控制在一定事故下,需要对各ECU进展关联控制,而这是传统汽车控制方法难以完成的,而CAN总线技术可以实现多ECU的实时关联控制。在发生碰撞事故时,汽车上的多个气囊可通过CAN协调工作,它们通过传感器感受碰撞信号,通过CAN总线将传感器信号传送到一个中央处理器内,控制各安全气囊的启动弹出动作。LabVIEW的概述虚拟仪器(VirtualInstrument,简称VI)是基于计算机系统的数字化测量测试仪器,它充分利用现有计算机资源,并配以独特设计的仪器硬件和专用软件,能实现普通仪器的全部功能以及一些在普通仪器上无法实现的特殊功能,常被称作“软件仪器〞。它利用数据采集模块完成一般测量测试仪器的数据采集功能,利用计算机系统完成一般测量测试仪器的数据分析和输出显示等功能。虚拟仪器是计算机技术、现代测量技术共同开展的结晶,代表着当今仪器开展的最新趋势。LabVIEW是虚拟仪器领域中最具有代表性的图形化编程开发平台,是目前国际上首推并应用最广的数据采集和控制开发环境之一,主要应用于仪器控制、数据采集、数据分析、数据显示等领域,并适用于多种不同的操作系统平台。与传统程序语言不同,LabVIEW采用强大的图形化语言(G语言)编程,面向测试工程师而非专业程序员,编程非常方便,人机交互界面直观友好,具有强大的数据可视化分析和仪器控制能力等特点。使用LabVIEW开发环境,用户可以创立32位的编译程序,从而为常规的数据采集、测试、测量等任务提供了更快的运行速度。LabVIEW是真正的编译器,用户可以创立独立的可执行文件,能够脱离开发环境而单独运行。汽车CAN总线仿真软件开展随着电子技术的提高,汽车电子也在快速的开展,这就导致了机械式仪器仪表跟不上汽车电子的开展,同时一种实时的电子仪器仪表需要被快速的替代机械式仪器仪表。为了降低本钱提高精度,一种汽车CAN总线仿真软件需要被开发出来实时的去监测汽车CAN总线信号,从而来提高汽车的电子控制精度和高控制性能。以前的方法是通过用仪器仪表来显示,精度差,从而带来的误差也较大。所以需要一种虚拟汽车CAN总线仿真软件来监测CAN总线当中的各种信号,不仅本钱很低,而且精度也很高。同时随着计算机技术的快速开展,现代的PC计算机有着很高的计算处理功能,为像LabVIEW这样的虚拟软件或者VB,VC一些编程软件提供了一个高性能的平台,借助这些软件来编写虚拟的汽车CAN总线仿真软件系统,从而实时的去监测汽车CAN总线当中的各种信号,同时也可以去发送模拟的汽车CAN报文,提高汽车控制系统的开发精度和降低开发本钱。1.2国内研究现状通过搜集国内一些相关文献如:1,桂林航天工业高等专科学校,覃维献,《LABVIEW开发汽车CAN总线数据采集系统》,该系统自己设计硬件和驱动,这样变导致了开发周期长,经济性较差,硬件局部的功能不够强大,同时对底层的硬件测试也较难。然而本课题直接跳过硬件局部,购置国内某款非常成熟的USB-CAN通讯转换模块,只需要了解该转换模块的功能以及它的定义还有工作方式,就可以直接进展本课题的研究开发,这样就会大大降低研究开发时间,降低本钱。2,同济大学,刘翔,《基于LabVIEW和CAN总线的汽车数据采集监测系统》,该系统是利用周立功CAN接口卡调用库函数节点实现的仿真软件编程,但是该系统只是一个单向的承受CAN报文并解读,没有发送CAN报文的功能,这样就导致了局限性,而没有很好的扩展性。本课题的仿真系统可以实时的根据采集对象的不同来进展程序的微调,从而来实现该仿真系统的扩展性和广泛的实用性。课题研究的内容和意义本课题是基于LabVIEW和USB-CAN的总线通信系统的仿真软件开发,主要是开发出一套仿真系统能够实时监测汽车CAN总线网络中的各种信号并以虚拟仪表仪器直观的显示出来,同时又可以发送模拟的汽车CAN报文,同时还可以实现故障诊断。本课题的意义在于:一方面,可以模拟实际汽车当中的各种CAN报文的发送和接收,同时还可以与实际的汽车CAN总线进展通讯,从而通过该仿真软件可以实时的监测到汽车真实CAN网络当中的各种信号并以虚拟的仪表仪器直观的显示出来,从而降低了真实仪表仪器的本钱,提高了经济性;另一方面,可以通过该仿真软件作为教学软件,让学生了解CAN总线技术和协议,提高学生对CAN总线网络的认知,同时还可以提高学生们的动手编程能力,从而来提高学生编程的系统构架;1.4主要工作本课题主要有以下工作〔1〕收集国内外相关LabVIEW仿真汽车CAN总线资料,并对汽车CAN总线有所了解和掌握。〔2〕熟悉操作LabVIEW编程软件,运用其中的例子根本熟练操作此编程软件。〔3〕结合科瑞兴业提供的USB-CAN通讯转换模块,采用调用库函数节点来编写仿真软件模型。〔4〕对根本上成型的仿真软件进展CAN报文传输的调试和测试。〔5〕对调试好的仿真软件进展人机界面的美工优化设计。〔6〕最后是生成仿真软件的应用程序。〔7〕收集调查资料和测试数据,完成毕业论文。2系统的硬件构造2.1PC机该系统是由两台或者两台以上〔最多16台〕的支持WIN98、WIN2000和XP操作系统环境的可移动便携式电脑构成。然后每台电脑上都安装有基于LabVIEW编写的程序来仿真模拟汽车不同板块的ECU,接入CAN总线当中来进展发送和接收CAN报文。2.2CAN接口卡本课题选用的是由北京科瑞兴业科技提供USB-CAN通讯转换模块智能CAN接口卡〔类型是K-7121〕,它带有1路CAN接口具有USB接口的高性能CAN总线通讯适配卡,使PC机方便地连接到CAN总线上构成一个节点,从而实现CAN2.0协议的数据通讯;该转换模块上自带500个字节的数据存储空间,可到达每秒2000帧的传输速度,保证数据不丧失。该转换模块USB2.0接口,最高可达12Mbps的传输速率;CAN控制器数据传送速率可由用户设定:5Kbps~1Mbps;支持CAN2.0B协议〔兼容CAN2.0A〕,符合ISO/IS11898标准;最高帧流量到达2500帧/秒;CAN上传USB的模块批量上传缓冲区最大为Buffer[300][13]=3900字节,即等于300个CAN的扩展帧长,USB下传CAN的模块批量下传缓冲区最大为Buffer=400字节。供电方式:USB总线供电,或使用外接电源〔+10V~+30V,400mA〕;磁铁隔离:DC2500V;工作温度:0℃~70℃;运行环境:Win9X/Me、Win2000/XP操作系统。如以下列图是CAN总线连接图:图2—1CAN网络构造为了增强CAN通讯的可靠性,CAN总线网络的两个端点通常要参加终端匹配电阻,如图3.1所示。终端匹配电阻的大小由传输电缆的特性阻抗所决定。例如双绞线的特性阻抗为120Ω,则总线上的两个端点也应集成120Ω终端电阻。注意:CAN通讯线可以使用双绞线、屏蔽双绞线。假设通讯距离超过1KM,应保证线的截面积大于Φ1.0mm2,具体规格应根据距离而定,常规是随距离的加长而适当加大。如以下列图是转换模块图片:图2-2K7121USB-CAN通讯转换模块3系统的软件设计系统硬件构成简单,结合硬件工作特性,主要围绕软件设计方面进展主要的开发工作。3.1软件系统设计本课题仿真软件主要包括以下三项功能:发送模拟汽车CAN报文至CAN总线当中。从CAN总线当中接收汽车CAN报文。提供人机界面以设置不同的波特率和数据帧格式。根据需求将发送和接收的汽车CAN报文数据保存以便后续的分析。根据上述需求,该仿真软件系统包括1个主控程序与2个功能子程序:主控程序——用于启动,设置以及关闭,并且负责处理所有的人机交换界面的操作。数据发送和接收子程序——利用USB-CAN通讯转换模块来发送和接收模拟的汽车CAN报文数据。数据列表及保存子程序——将发送和接收的汽车CAN报文以列表的方式显示,其中列表当中有序号,时间,帧类型,帧长度,帧ID,帧数据。并且保存发送和接收数据列表。以上3个程序主要是在顺序构造,条件构造以及While构造程序中运行。主控程序随软件启动运行,它可以根据用户的需求,可以设置波特率以及帧类型,同时可以实时调度其余2个子程序的运行,并将各子程序的运行结果传递给相关功能面板的显示控件以反响给用户,子程序功能就是实现汽车CAN报文数据的发送和接收以及列表显示、存储。当主控程序正常启动接口卡并使其工作后,数据接收子程序才能运行,数据列表与保存子程序,必须在前两者正常工作后,才能根据用户要求执行相关功能。如图3—1软件程序构造所示:主控程序数据发送和接收子程序数据列表及保存子程序启动CAN接口卡主控程序数据发送和接收子程序数据列表及保存子程序启动CAN接口卡配置CAN总线启动CAN总线发送CAN报文接收CAN报文列表显示保存路径文本文档功能需求局部图3—1软件程序构造图CAN报文数据的发送和接收是系统监测功能的根基,而软件本身需要依靠接口卡从CAN总线接收数据,因此,要实现所有的功能,必须首先正确启动USB-CAN通讯转换模块,初始化其相关运行参数,使其可以正常运行。USB-CAN转换模块智能CAN接口卡提供了大量的VCI函数库(应用程序接口),这些函数可以从接口卡的驱动文件K7121DLL.dll中导出,并可以在LabVIEW中调用,实现对接口卡的启动、设置等相关操作。具体的调用和设置在软件后面板中将会展示。3.2软件的前面板设计前面板设计主要有三大块:1,配置设备板块。2,模拟数据调整板块。3,接收数据显示板块3-2配置和调整板块654如图3-1所示,该界面总共有7个功能显示控件;1,翻开设备—当程序运行时,单击“翻开设备〞,软件将会自动去识别硬件,从而实现软件和硬件的连接,然后进展下一步程序运行。2,退出—当程序运行时,单击“退出〞,整个程序将会停顿运行,程序处于休眠状态。3,帧类型—当程序运行时,单击“帧类型〞,选择接收和发送的CAN报文的帧格式,主要是标准帧和扩展帧两种。4,波特率—当程序运行时,单击“波特率〞,选择接收和发送的CAN报文的传输速度,主要有20K,100K,250K,500K四种波特率。5,系统时间—当程序运行时,该显示控件会主动的去读取电脑当前时间,并显示出来,然后可以作为CAN报文发送和接收的时间。6,设备状态—当程序运行时,单击“翻开设备〞,程序会自动的去识别硬件,当识别成功,该显示控件会显示“设备翻开成功!〞。当由其他原因导致的设备翻开失败,该显示控件会显示“设备翻开失败!〞7,数据调整—该控件是输入控件,通过改变数值的大小来改变发送的CAN报文数据,从而发送到CAN总线上。图3—3显示仪表板块如图3—3所示,该界面主要是仪表控件显示功能:该界面的功能就是显示汽车CAN报文当中的数据。一个CAN报文当中最多有8个信号数据,然后每个信号数据是8位,最大值为225。该界面主要是将CAN报文中的每个信号数据以仪表的方式显示,这样便很直观的展示出来。如如3—3所示,该界面有发动机仪表,燃油压力仪表,机油压力仪表,大气压力仪表,大气温度仪表,进气温度仪表,冷却水温度仪表,燃油温度仪表,机油温度仪表,机舱内温度仪表,路面温度仪表。该界面可以灵活的改变,通过对后面板程序的处理可以按照需求去换其他信号的虚拟仪表,还可以增加更多的虚拟仪表,灵活性非常大。如果作为一个教学软件的话,这样提高学生对汽车CAN总线技术的理解,还可以锻炼学生的编程思维和能力。同时,还可以根据不同ECU的通讯协议,去改变该软件的一些细节去适应各种不同协议的通讯。43214321图3—4报文列表及保存如图3-4所示,该界面是汽车CAN报文列表显示及保存板块,主要功能有下:1,存储路径—当程序运行时,可以点击该控件从而来选取汽车CAN报文的路径,把CAN报文数据存储在我们想要的地方。2,进制转换—当程序运行时,单击该控件从而来选取以什么进制的格式显示汽车CAN报文当中的信号数据。〔该格式为十进制和十六进制两种数据格式〕3,存储—当程序运行时,单击该控件以保存发送和接收的汽车CAN报文,以便于后期的数据分析和处理。4,CAN报文数据列表—这是一个列表显示控件,显示接收和发送的汽车CAN报文。该列表当中,第一列是发送和接收CAN报文序号,以便查看到发送的每一条CAN报文。第二列是发送和接收CAN报文时间。第三列是发送和接收每条CAN报文的ID,从而确定地址。第四列是每条CAN报文的数据的类型〔标准帧和扩展帧两种〕。第五列是每条CAN报文当中数据的长度。第六列是每条CAN报文当中的信号数据〔该数据作为后期的分析和处理〕。3.3软件的后面板设计该软件的后面板设计主要是采用了“顺序构造〞,“While构造〞和“条件构造’。主要是采用调用库函数节点的方法来实现软件和硬件的相结合。如以下列图3—5所示:图3—5调用库函数节点该函数支持众多数据类型和调用标准。该节点可用于调用大多数标准或自定义DLL或共享库中的函数。如需调用含有ActiveX对象的DLL,可使用翻开自动化函数与属性节点和调用节点。3.3.1软件设备的翻开和关闭1,设备翻开设计调用转换模块的翻开设备函数DeviceOpen〔ULONGmindex〕,函数参数:mindex是指定设备序号〔最多可以连接16个设备〕,函数返回值:1,函数调用成功;0,函数调用失败。该函数主要是用来翻开连接设备。如以下列图3—6所示:〔a〕(b)图3—6调用DeviceOpen函数当该函数调用成功之后,设备翻开,函数返回值为1,通过条件构造此时设备状态文本显示控件将会显示“设备翻开成功!〞,同时状态指示灯也会亮。当该函数调用失败或者设备连接失败,函数返回值为0,通过条件构造此时设备状态文本显示控件将会显示“设备翻开失败!〞,同时状态指示灯也是暗的。如以下列图3—7程序所示:〔a〕(b)图3—7设备连接状态显示2,设备关闭设计调用转换模块的关闭设备函数DeviceClose(ULONGmindex),函数参数:mindex是指定设备序号〔最多可以连接16个设备〕,没有函数返回值。该函数主要是用来关闭设备的。如以下列图3—8所示:图3—8调用DeviceClose函数当用户按需要停顿或者完毕汽车CAN报文的发送和接收时,单击退出控件时,立即调用关闭设备函数,从而来完毕汽车CAN报文的发送和接收,整个程序处于休眠状态。3.3.2CAN总线配置CAN总线配置设计主要是针对CAN总线的帧类型,首地址,末地址,波特率进展设计。调用转换模块的配置CAN总线函数CanWriteConfig(ULONGmindex,PUCHARbdata),函数参数说明:mindex:指定设备序号。bdata:指向配置参数缓存区的指针,bdata中的参数用于设定CAN接口的参数,共14个字节。函数返回值:1:表示函数调用成功0:表示函数调用失败。如以下列图3—9配置函数调用:〔a〕(b)图3—9调用CanWriteConfig函数如以下列图3—10对bdata说明:图3—10配置参数bdate定义1,帧类型设计帧类型只有标准帧和扩展帧两种格式,它们主要是帧ID长度不一样。标准帧的ID是11位,然而扩展帧的ID是29位,这样扩展帧可以携带更多的CAN报文。该设计采用下拉菜单的方式来设计,标准帧对应数字0,扩展帧对应数字1,从而改变下拉菜单内容来改变输出的数字,以便调用相对应的函数内容。如以下列图3—11对下拉菜单的设计:〔a〕(b)(c)图3—11下拉菜单设计2,CAN总线ID地址范围设置该CAN总线的首地址是X00000000,末地址是XFFFFFFFF,ID最大长度为29位。如以下列图3—12所示:图3—12CAN总线ID范围3,CAN总线波特率设计根据转换模块提供的波特率表如以下列图3—13所示:图3—13波特率表根据转换模块的波特率表以及CAN总线的需求,选择波特率20K,50K,100K,250K,500K。从而选择的BTR为0x00050095,0x0005003B,0x0005001D,0x0005000B,0x00050005。波特率的设置还是采用下拉菜单的方式,采用条件构造来选择相对应的波特率的BTR。通过下拉菜单项选择择波特率,然后通过后面板的条件构造会去选择相对应的波特率BTR数据,然后将数据输入配置函数当中,从而来调节CAN总线的波特率。图3—14CAN总线波特率设计如以下列图3—14所示:通过下拉菜单项选择择波特率,然后通过后面板的条件构造会去选择相对应的波特率BTR数据,然后将数据输入配置函数当中,从而来调节CAN总线的波特率。图3—14CAN总线波特率设计3.3.3CAN报文组成一个完成的CAN报文组成是由帧信息,帧ID和帧数据内容组成的。根据该转换模块的硬件条件,一个完成的CAN报文帧是13个字节,字节内容如下表。如以下列图3—15所示:图3—15CAN报文构成CAN报文有扩展帧和标准帧两种类型,主要的不同在于ID长度的不同,标准帧的ID为11位,如上图所示它只占了2个字节长度。而扩展帧的ID为29位,如上图所示它占了4个字节长度。在发送CAN帧报文时,必须按照上表定义添入字节内容。由于受到转换模块的硬件条件,必须在13个字节前增加一个字节添入数字3,表示这是要按照CAN帧格式发送的数据。在读取CAN帧报文时,接收到的每帧都是13个字节长度〔0-12〕,字节内容定义如上表所示,其中有效数据长度由帧信息字节的内容决定。3.3.3CAN报文内容组成及发送1,CAN报文内容CAN报文最终是以数组的方式来发送的,所以采用LabVIEW的创立数组函数来创立CAN报文。如以下列图3—16:图3—16创立数组按照CAN报文的格式来创立数组,总共是14个字节,每个字节长度是8位。该系统软件设计两个CAN报文,都是是标准帧类型。〔1〕发动机状态报文该报文的帧ID设置为000000DD,报文内容依次是发动机转速,冷却水温度,燃油压力,燃油温度,机油压力,机油温度,最后两个字节为空。由于一个字节长度是8位,所以一个字节的最大数是255,所以在后面板程序框图中,发动机转速除以100之后输入。如以下列图3—17所示:图3—17发动机状态数据〔2〕环境条件报文该报文的帧ID设置为000000EE,报文内容依次是路面温度,进气温度,发动机舱内部温度,大气温度,大气压力,最后3个字节为空,一个字节长度是8位,一个字节的最大数是255。如以下列图3—18所示:图3—18环境条件报文2,CAN报文发送调用转换模块的库函数—发送CAN帧CanWriteFrame(ULONGmindex,ULONGlength,PUCHARbdata),该函数是用来发送一帧数据。函数参数说明:mindex:指定设备序号,0对应第一个设备。Length:指定发送长度。bdata:指向填有发送内容的缓存区的指针。如图3—16所示:〔a〕(b)〔c〕图3—16调用CanWriteFrame函数CAN报文构建完整之后,将构建好的CAN报文数组写入到bdate等待被发送。3.3.4CAN报文接收及拆分显示1,CAN报文接收调用转换模块的获取模块现已接收的CAN帧字节数量库函数CanReadFramenum(ULONGmindex),此函数用来获知模块现已接收到的CAN帧字节数量。函数参数说明:mindex:指定设备序号,0对应第一个设备。函数返回值:UINT型整数:表示缓冲区内已收到的字节数量。0:表示缓冲区为空,没有收到数据。该函数用来检测接收到CAN帧是不是为空,如果为空那么继续读取,如果不为空那么将CAN帧传递给下一个函数读取缓冲区已有的数据。如以下列图3—17所示:〔a〕(b)〔c〕图3—17调用CanReadFramenum函数调用转换模块的读取缓冲区已有的数据CanReadAllData(ULONGmindex,ULONGlength,PUCHARbdata),此函数用来读取接收缓冲区已有的CAN帧里的13个字节的数据内容。函数参数说明:mindex:指定设备序号,0对应第一个设备。length:要读取的字节长度,由函数5,6的返回值确定。bdata:指向要保存的数据缓存区的指针。然后接收到的bdate数组进展拆解。如以下列图3—18所示:〔a〕(b)(c)图3—18调用CanReadAllData函数该函数的设置为每次的开启都初始化全部为0,然后把接收到的数组引出来进展下一步的数组拆解。2,CAN报文的索引拆解接收到数组需要进展拆解,所以在LabVIEW程序当中采用索引数组的方式来进展CAN报文数组的拆解。如以下列图3—19所示:图3—19索引数组该函数控件的功能就是根据接收到的CAN报文格式进展顺序的拆解,然后再显示出来。〔1〕CAN报文的ID索引根据前面的CAN报文组成格式,该系统接收到的CAN报文为13个字节长度,CAN报文的ID分布在第1、2、3、4字节中,然而索引只能索引到每个字节,所以需要将索引到的第1、2、3、4字节内容按照上下位的顺序拼接起来从而显示为一个完整的CAN报文ID。如以下列图3—20所示:〔a〕整数拼接控件示意图〔b〕CAN报文ID索引拼接图3—20接收的CAN报文ID如上图所示,通过索引第1、2、3、4字节按照高位和低位的顺序,先将第1、2字节内容拼接,再将3、4字节内容拼接,然后将两个拼合好的内容再进展最后的拼接整合就形成了接收到的CAN报文ID。〔2〕CAN报文数据索引根据前面的CAN报文组成格式,该系统接收到的CAN报文为13个字节长度,CAN报文的数据内容分别分布在第5、6、7、8、9、10、11、12字节中,将这个8个字节内容通过创立数组控件创立成一个数组。然后通过对接收到的CAN报文ID进展判断比照,然后再进展CAN报文数据内容的索引显示。先将CAN报文ID索引出来拼接,进展数值至字符串的转换,将转换后的字符串给条件构造进展比照判断。在文章的前面已经规定了发动机状态和环境条件两个CAN报文的ID,0X000000EE和0X000000DD。如果读取的CAN报文和条件构造当中的字符串一样那么进展下一步的索引显示。如以下列图3—21所示:图3—22发动机状态CAN报文索引显示如上图所示,在条件构造当中对CAN报文的ID进展比照,如果是000000EE条件构造为真那么对CAN报文数据内容进展一次索引显示,第1位是发动机转速,第2位是冷却水温度,第3位是燃油压力,第4位是燃油温度,第5位是机油压力,第6位是机油温度。由于在CAN报文发送时,发动机的转速是除以100之后的转速,接收到的发动机转速必须*100,所以在发动机转速的仪表上有*100的单位。如以下列图3—23所示:图3—23环境条件CAN报文索引显示如上图所示,在条件构造当中对CAN报文的ID进展比照,如果是000000DD条件构造为真那么对CAN报文数据内容进展依次索引显示,第1位是路面温度,第2位是进气温度,第3位是机舱内温度,第4位是大气温度,第5位是大气压力。3.3.5CAN报文列表及保存1,CAN报文列表由前文第三章第二小节软件的前面板设计所知,CAN报文数据列表是一个列表显示控件,用来显示接收和发送的汽车CAN报文的详细信息。该列表当中,第一列是CAN报文序号,第二列是发送和接收CAN报文时间,第三列是发送和接收每条CAN报文的ID,第四列是每条CAN报文的数据的类型〔标准帧和扩展帧两种〕。第五列是每条CAN报文当中数据的长度。第六列是每条CAN报文当中的信号数据。在后面板程序框图中采用创立数组,将这六列列表内容以字符串的格式创立成一个数组,然后将数组传递给多列列表。〔1〕CAN报文序号CAN报文序号利用累加器方式来进展累加,没收到一次CAN报文然后序号加1累计,初始序号为0,累加之后的序号进展数值转换成字符串传递给“创立数组〞控件等待下一步。如以下列图3—24所示:图3—24CAN报文列表序号〔2〕CAN报文时间CAN报文时间主要是来监视CAN报文发送和接收的时间的,在LabVIEW调用“获取日期/时间〔秒〕〞和“获取日期/时间字符串〞两个控件,通过LabVIEW系统获取当前时间然后再进展字符串的转换传递给“创立数组〞控件等待下一步。如以下列图3—25所示:图3—25CAN报文时间〔3〕CAN报文ID根据“创立数组〞的要求,所有的子元素格式必须一致,所以CAN报文的ID也必须进展数值至字符串的转换,通过调用“数值至十六进制字符转换〞控件转换后的字符串传递给“创立数组〞控件等待下一步。如以下列图3—26所示:图3—26CAN报文ID转换〔4〕CAN报文帧类型根据前面板的帧类型选择控件,选择帧类型。然后通过条件构造选择帧类型文本字样,传递给“创立数组〞控件等待下一步。如以下列图3—27所示:〔a〕(b)图3—27CAN报文帧类型〔5〕CAN报文数据长度CAN报文的数据长度为8,直接调用“数值至十进制字符串转换〞转换成字符串之后传递给“创立数组〞等待下一步。〔6〕CAN报文数据内容调用“数组至电子表格字符串转换〞控件,将接收到的CAN报文数据数组进展字符串的转换,同时参加一个数据格式的转换条件,可以讲数据内容进展十进制和十六进制的的一个转换。然后将转换后的数据内容传递给“创立数组〞等下下一步。如以下列图3—28所示:〔a〕十六进制〔b〕十进制图3—28CAN报文数据内容字符串转换2,CAN报文保存CAN报文的保存就是将CAN报文数据保存下来以便后期的处理分析。该保存设计采用了LabVIEW当中“条件构造〞,“路径〞,“写入电子表格文件〞控件。将CAN报文数据通过条件构造的选择,再经过用户的路径选择最终写入电子表格。如图3—29所示:图3—29CAN报文保存如上图所示,该CAN报文是二维数据,通过“储存〞控件按键选择保存CAN报文数据。当条件构造为假时,对CAN报文数据不做任何处理和保存。本小节主要是CAN报文数据的多列列表显示以及CAN报文数据的保存。以下列图将显示整个CAN报文的多列列表显示和CAN报文的数据保存。如以下列图3—30所示:图3—30CAN报文多列列表显示及保存3.3.6软件后面板总程序图根据前文第3章第3节对软件每个模块的设计,最后将各个设计好的模块组合起来形成最终的系统软件后面板总程序。这样很清晰的看到每个模块,然后根据需要的不同来随时的修改每个模块,同时还能加强对系统软件程序的管理。如以下列图3—31和3—32所示:图3—1CAN报文发送图3—32CAN报文接收4测试结果与验证4.1仿真软件CAN报文的发送和接收测试为了验证该仿真软件的稳定性和正确性,采用北京科瑞兴业科技提供的VB环境软件作为该系统软件的测试软件,从而来监测该仿真软件的正确性和稳定性。如以下列图4—1所示:图4—1测试软件界面如上图所示,该测试软件既能发送模拟CAN报文,又能接收模拟CAN报文。从而通过测试软件的发送和接收,来验证仿真软件的正确性和稳定性。1,仿真软件的模拟CAN报文发送测试该仿真软件发送的两组模拟CAN报文:〔1〕发动机状况CAN报文报文顺序依次是:发动机转速5600rpm/min、冷却水温120°、燃油压力8BAR、燃油温度40°、机油压力9BAR、机油温度98°,ID是0X000000DD。〔2〕环境条件CAN报文报文顺序依次是:路面温度60°、进气温度25°、发动机舱内部温度80°、气温度30、大气压力8BAR,ID是0X000000EE。如以下列图4—2所示:〔a〕仿真软件发送的CAN报文〔b〕发动机状况CAN报文十六进制和十进制〔c〕环境条件CAN报文十六进制和十进制图4—2仿真软件发送CAN报文仿真软件发送测试验证:如以下列图4—3所示:〔a〕发动机状况CAN报文测试结果〔b〕环境条件CAN报文测试结果图4—3测试结果通过科瑞兴业科技提供的测试软件验证与测试,从图4—2和图4—3的比照得出仿真软件发送的CAN报文数据内容与测试软件接收到的CAN报文数据内容完全一样,结果说明该仿真软件发送到CAN总线当中的CAN报文完全正确并且稳定性非常可靠。2,仿真软件的模拟CAN报文接收测试软件发送的两组CAN报文:〔1〕ID是0X000000DD,报文数据内容依次是0X46、0X33、0X5F、0X44、0X60、0、0、0。〔2〕ID是0X000000EE,报文数据内容依次是0X35、0X77、0X6、0X33、0X6、0X66、0、0。如以下列图4—4所示:〔a〕ID为0X000000DD报文〔b〕ID为0X000000EE报文图4—4测试软件发送CAN报文仿真软件接收测试验证:如以下列图4—5所示:〔a〕仿真软件环境条件CAN报文显示〔b〕接收到的环境条件CAN报文〔c〕仿真软件发动机状况CAN报文显示〔d〕接收到的发动机状况CAN报文图4—5仿真软件的接收CAN报文通过科瑞兴业科技提供的测试软件验证与测试,从图4—4和图4—5的比照得出仿真软件接收的CAN报文数据内容与测试软件发送的CAN报文数据内容完全一样,结果说明该仿真软件接收到CAN总线当中的CAN报文完全正确并且稳定性非常可靠。4.2集成测试通过上一节对仿真软件的发送和接收分别测试,结果说明该仿真软件的CAN报文发送和CAN报文的接收都非常正确并且非常稳定。这一小节将对仿真软件集成测试,就是用该仿真软件发送CAN报文,再用该仿真软件接收CAN报文,最后通过仿真软件发送的CAN报文内容和仿真软件接收的CAN报文内容进展比照作出结论。仿真软件发送的CAN报文:〔1〕发动机状态CAN报文报文

温馨提示

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

评论

0/150

提交评论