毕业论文-基于VC和CAN总线的RMS测试平台设计与实现_第1页
毕业论文-基于VC和CAN总线的RMS测试平台设计与实现_第2页
毕业论文-基于VC和CAN总线的RMS测试平台设计与实现_第3页
毕业论文-基于VC和CAN总线的RMS测试平台设计与实现_第4页
毕业论文-基于VC和CAN总线的RMS测试平台设计与实现_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、大连东软信息学院本科毕业设计(论文)论文题目论文题目:基于VC和CAN总线的RMS测试平台设计与实现系 所: 电子工程系 专 业: 电子信息工程(嵌入式系统工程方向) 学生姓名: 学生学号: 指导教师: 导师职称: 讲师 完成日期: 2014年 5月 2日 大连东软信息学院Dalian 大连东软信息学院毕业设计(论文) 摘要 IV基于VC和CAN总线的RMS测试平台设计与实现摘 要随着汽车走进千家万户,汽车的高速发展推动着电子产业的发展。车载电子控制装置(ECU)之间的信息交换,形成汽车电子控制网络,它是汽车的“大脑”,几乎控制着整个行车的性能和安全,而CAN总线就是被设计作为汽车环境中的微控

2、制器之间通讯的,它们的共同作用控制着整个汽车的安全和稳定,为了保障CAN网络和ECU的稳定无差错,在开发车载系统之前都要对ECU的功能和CAN总线通讯做详细的功能测试。本文主要论述了ECU的结构,CAN总线技术的基本原理和传输方式,MFC框架的设计流程,重点详细介绍测试平台的设计和实现方式,最后介绍平台的后期测试和维护。本次设计主要研究CAN总线的通讯方式和数据解析方式,对数据帧的多种情况进行了讨论。UI设计方面,该测试平台使用VC6.0作为软件开发工具,使用了MFC框架,数据保存方面考虑带数据量小,为了避免软件的复杂度,不使用数据库操作,而选用解析CSV文件的方式。软件性能经过长时间和多人次

3、规律和无规律测试,无bug,稳定性优良。该测试平台为针对Infineon TriCore TC277 ECU的测试平台,其他系列的ECU亦可扩展。关键词:ECU,CAN通讯,VC6.0大连东软信息学院毕业设计(论文) AbstractDesign and Implementation of Test Platform Based on CAN Bus and VC6.0AbstractWith automobile car into thousands of households, the rapid development of automobile car pushes the devel

4、opment of the electronics industry. The exchange of information between vehicle electronic control unit (ECU) formation the automotive electronic control network, It is the brain of the car, almost control performance and safety of the whole operation. The CAN bus is designed as the communication be

5、tween the micro-controller in the automotive environment, their common role controls the stability and security of the whole car. In order to guarantee the stability of ECU CAN network and error free, we to do detail functional tests with the function of ECU and CAN bus communication before the deve

6、lopment of vehicle system.This paper mainly discusses the structure of ECU, CAN bus technology and the basic principles of transmission, the design process of MFC framework, design and Realization of the testing platform and last introduce the post-test platform and maintenance.This design mainly di

7、scusses CAN bus communication mode and data analysis methods, also discusses the variety data frames. In UI design, the test platform using VC6.0 as the software development tools and use the MFC framework, taking a small amount of data into consideration, in order to avoid the complexity of the sof

8、tware, do not use the database operation and choose to use parse CSV file method. In performance of software, after a long time and numbers of regular and irregular test, no bug, excellent stability. The test platform for the test platform of Infineon Tri-Core TC277 ECU, other series of ECU can be e

9、xtended as well.Key words: ECU, CAN Communication, VC6.0大连东软信息学院毕业设计(论文) 目录目 录 TOC o 1-3 u 摘 要 PAGEREF _Toc387688979 h IAbstract PAGEREF _Toc387688980 h II第1章绪 论 PAGEREF _Toc387688981 h 11.1 课题研究背景与意义 PAGEREF _Toc387688982 h 11.1.1 历史回顾与我的工作 PAGEREF _Toc387688983 h 11.1.2 研究的意义 PAGEREF _Toc387688984

10、 h 11.2 课题研究内容与方法 PAGEREF _Toc387688985 h 11.3 课题研究现状 PAGEREF _Toc387688986 h 2第2章关键技术介绍 PAGEREF _Toc387688987 h 32.1 CAN总线 PAGEREF _Toc387688988 h 32.2 CSV文件 PAGEREF _Toc387688989 h 42.3 多线程技术 PAGEREF _Toc387688990 h 4第3章系统需求分析 PAGEREF _Toc387688991 h 63.1 系统设计目标 PAGEREF _Toc387688992 h 63.2 系统功能需求

11、 PAGEREF _Toc387688993 h 63.3 系统非功能需求 PAGEREF _Toc387688994 h 63.4 系统开发环境 PAGEREF _Toc387688995 h 73.5 系统可行性分析 PAGEREF _Toc387688996 h 73.5.1 技术可行性 PAGEREF _Toc387688997 h 73.5.2 经济可行性 PAGEREF _Toc387688998 h 7第4章系统设计 PAGEREF _Toc387688999 h 84.1 系统设计指导原则 PAGEREF _Toc387689000 h 84.2 体系结构设计 PAGEREF

12、_Toc387689001 h 84.3 软件设计 PAGEREF _Toc387689002 h 94.3.1 控制流程设计 PAGEREF _Toc387689003 h 94.3.2 UI界面设计 PAGEREF _Toc387689004 h 94.3.3 功能模块设计 PAGEREF _Toc387689005 h 15第5章系统实现 PAGEREF _Toc387689006 h 175.1环境配置 PAGEREF _Toc387689007 h 175.2功能模块实现 PAGEREF _Toc387689008 h 175.3 系统集成与调试 PAGEREF _Toc387689

13、009 h 26第6章系统测试 PAGEREF _Toc387689010 h 276.1 测试概述 PAGEREF _Toc387689011 h 276.2 测试用例 PAGEREF _Toc387689012 h 276.2.1 Digital Input模块测试测试 PAGEREF _Toc387689013 h 276.2.2 Digital Output模块测试测试 PAGEREF _Toc387689014 h 276.2.3 Analog Input模块测试测试 PAGEREF _Toc387689015 h 28第7章结论 PAGEREF _Toc387689016 h 29

14、参考文献 PAGEREF _Toc387689017 h 30致 谢 PAGEREF _Toc387689018 h 31大连东软信息学院毕业设计(论文)- 第1章绪 论1.1 课题研究背景与意义控制器局域网CAN(Controller Area Network)是由德国Bosch公司在80年代初为解决现代汽车内部测量与执行部件间大量的数据交换而提出的一种串行通信协议。CAN支持多主工作方式,通信可以使用多种物理介质,如双绞线、光纤等。通信速率最高可达1Mbit/s,通信距离最远可达10km。CAN总线规范应用在工业控制领域,是公认的最有前途的现场总线之一。我们都知道交通事故的原因很多,车辆本

15、身的缺陷引起的事故不在少数,追根溯源无非是车辆设计缺陷和测试缺陷,专业的测试可以测出绝大多数潜在问题,可以报告给开发人员查究,不管是我们熟知的微软,google他们都会投入很大的精力去做测试,各种成熟测试工具的使用和新测试工具的开发显得越发重要。面对工作中的各种各样的测试问题,我们需要开发一种易开发,易移植,易维护的测试工具,能够适应不同的测试需求。1.1.1 历史回顾与我的工作对于汽车网络通信前人已有论述,这里只是稍加论述,CAN通信原理也只做简单介绍,作为一款测试工具,我们主要叙述如何设计它的框架和具体功能,如何去测试它的功能和可靠性,对如何进行CAN通信,如何进行数据处理会进行讨论。1.

16、1.2 研究的意义本次测试工具的开发主要面向汽车ECU的出荷测试,软件本身的安全和稳定性直接关系到测试的结果和可靠性,作为开发人员,这个测试工具可以找到开发中的漏洞;作为测试人员,测试工具可以做成测试文档和log;作为客户,测试工具可以随时检测产品的功能,是一种保障,其重要性可见一斑。1.2 课题研究内容与方法本课题主要研究CAN总线通信方式,探索如何发送和接收数据帧,如何解析和处理数据帧;其次,研究如何基于MFC框架设计UI和设计各个功能模块。在做各个模块之前首先要了解所要测试的功能,熟悉Infineon Tri-Core TC277单片机,熟悉它的基本配置,参看通信式样书,了解不同指令下的

17、返回数据并理解其含义。除此之外,我还与底层人员交流,了解单片机的程序处理CAN数据的方法,找到相应的API和Kvaser库。数据观测方面使用了瑞典的Kvaser CAN数据线,软件使用Kvaser CanKing软件。为了准确测量结果,使用逻辑分析仪测量输入输出引脚的脉冲信号,得到高电平时间,周期和脉冲个数。1.3 课题研究现状在国内外的研究设计中,CAN总线因具有突出的可靠性、实时性、灵活性等优点而被广泛应用。CAN总线是一种新型的现场总线,由于突出的性能,可靠性、实时性和灵活性,其应用范围已扩大到航空航天、工业控制、传感器等多种领域。通过报文滤波技术,CAN总线无需专门的调度,可实现点对点

18、,单对多及全局广播等多种方式的数据传输,减少了系统软件运行时的负担,他是一种有效支持分布式控制或实时控制的串行通信网络。其总线规范已被ISO国际标准组织定位国际标准。大连东软信息学院毕业设计(论文)第2章关键技术介绍此处先对论文所涉及的关键技术进行简要介绍,下面再针对具体的技术进行说明。2.1 CAN总线Can-Bus总线技术是 “控制器局域网总线技术(Controller Area Network-BUS)”总之,在飞机,坦克等武器电子通讯首次使用,它具有较强的抗干扰和纠错能力。通过遍布车身的传感器,这些数据不会指定唯一的接收者,汽车的各种行驶数据会被发送到“总线”上,可以达到每秒传输32b

19、ytes有效数据。总线快速传输数据,因此可以有效地保证其有效性和数据的准确性。车上需要大量的传统的信号埋线束在发动机室和身体的发送传感器线束,降低减少了故障的可能性,总线技术的应用可以大大减少车身线束的数量。CAN总线技术在汽车应用中,可以减少汽车线束和控制器接口的数量,并且避免风险相互干扰,所以磨损的线束,降低了机动车的电气系统的故障发生率。例如:当你启动车辆,确认关键信息的合法性将通过总线,从而验证了信息比以前更丰富的防盗系统。各种传感器的信息可以实现共享。另外,在Can-Bus技术的帮助下,汽车的防盗性、安全性都得到了较大幅度提升。车钥匙,发动机控制器和报警控制器存储其他信息,校验码立刻

20、是一种混合的代码,从而显著提高了安全性能。检查信息极大地提高了信息传输通过CAN-BUS的可靠性和防盗报警系统是稳定可靠的。目前,CAN-BUS总线技术一般使用在科技含量高的汽车。数据可以被转移到一个接一个的串行总线,总线系统的所有参与者都可以发送和接收数据通过总线上的控制单元接口,该总线是一个多路传输系统中,当一个单元的故障不会影响其它工作单元,数据传输总线不同的速度是不一样的,对发动机电控系统和 ABS等实时控制用数据实施高速传输,对车身调节系统(如空调)的数据实施低速传输,其他如多媒体系统和诊断系统则为中速传输,速率在两者之间,这样的区分提高了总线的传输效率。传统的CAN是基于事件触发的

21、,信息传输时间的不确定性和优先级反转是它固有的缺点。总线的实时性改进以满足实时控制和信息传输的车辆密度日益增长的需求是必要的。因此,传统的CAN和时间触发机制的TTCAN (时间触发CAN)的组合。TTCAN总线和传统CAN总线系统的区别是:TTCAN系统需要全局时间同步,但采用传统CAN控制器很难实现TTCAN,总线上不同的信息定义了不同的时间槽(Timer Slot)。只能有一个消息传输总线上,从而避免了总线仲裁,在同一时隙,也保证了实时信息。因此新推出的CAN控制器如Microchip的MCP2515就增加了与TTCAN相关的硬件资源,它们在软件配合下就能实现TTCAN。2.2 CSV文

22、件(1)CSV文件介绍CSV是( HYPERLINK /view/54964.htm t _blank 逗号分隔值)的英文缩写,通常都是 HYPERLINK /view/8752736.htm t _blank 纯文本文件。CSV文件有以下特点:开头是不留空,以行为单位。可含或不含列名,含列名则居文件第一行。一行数据不跨行,无空行。以半角逗号(即,)作分隔符,列为空也要表达其存在。列内容如存在半角逗号(即,)则用半角引号(即)将该字段值包含起来。列内容如存在半角引号(即)则应替换成半角双引号()转义,并用半角引号(即)将该字段值包含起来。文件读写时引号,逗号操作规则互逆。内码格式不限,可为 A

23、SCII、Unicode 或者其他。不支持特殊字符(2)CSV文件读取方式首先要打开读取的文件,然后读取整行字符串,接着按行读取每一个字符,如果该字符不为“,”,则将字符保存到字符串,如果读到的字符为“,”,则判断当前字符串的个数,根据字符串的个数将相应字符串赋给结构体中对应的成员变量。2.3 多线程技术在学习多线程编程之前,必须先知道什么是线程函数,线程函数就是另一个线程的入口函数。默认情况下一个我们所写的代码都是只有一个线程的,而这个线程的入口函数就是main() 函数,这是系统默认的。而我们创建的另一个线程也需要一个函数来进入,这个函数就叫做线程函数。在C/C+中,可以调用 “运行期库”

24、函数 _beginthreadex(.),来创建一个线程, _beginthreadex(.)函数接受3个参数,其中第3个参数要求传入该线程的入口函数的地址(即:传入线程函数的函数名+&即可), 其它的每个参数的意思可以在msdn或网上查一下, 入门的话其余参数全部传0即可。_beginthreadex(.)函数返回一个句柄,就是新线程的句柄。对于传入的线程函数是有要求的,线程函数必须返回 unsigned _stdcall 类型,并且接受一个 void* 型参数,函数的内容就可以自己定了。当一个线程的任务结束,要退出时, 有四种方法:1.线程函数返回(最好使用这种方法);2.通过调用_end

25、threadex()或ExitThread()函数,线程将自行撤消(最好不要使用这种方法);3.同一个进程或另一个进程中的线程调用TerminateThread()函数(应该避免使用这种方法);4.包含线程的进程终止运行(应该避免使用这种方法)。最好通过其入口函数的返回语句(即:return)来退出线程, 也可以通过调用 C/C+ “运行期库”函数_endthreadex()函数来退出,还有两种退出的方法,都是类似的强制退出。 最好使用线程函数的返回语句(return)来退出线程,只有这样才能安全的回收该线程的处理器资源和内存资源。而实际上 _endthreadex()函数和 _beginth

26、readex(.)函数一样,是封装了windows函数 ExitThread(),如果一定要强制退出线程,那么强烈建议调用 _endthreadex() 函数,这样能安全的回收系统资源。第3章系统需求分析3.1 系统设计目标在MFC框架下做一款上位机软件,通过CAN总线与单片机进行通讯,发送特定的测试指令,单片机程序进行数据的解析和处理,返回相应的指令,上位机接受返回的指令,能够分别对单帧、多帧和错误帧数据进行解析并处理得到相应的结果。初次之外,软件还要能够对各种突发情况和异常做出判断和处理。整个上位机软件要能包含要测试的所有功能模块,并且通过使用逻辑分析仪和CanKing软件比较数据,验证测

27、试的可靠性和准确性。3.2 系统功能需求根据需求调研结果确定本系统主要包括以下功能模块。(1)主体:上位机软件FactoryTest-Infineon(2)测试用板:Infineon Tri-Core TC277(底层程序使用现成的)(3)Panel(相关设置,使用现成的)上位机测试平台模块的描述如表3.1所示。表3.1 上位机测试平台功能功能编号功能名称功能描述优先级1Digital InputIO输入测试-2Digital OutputIO输出测试-3Analog Input模拟量输入测试-4Pulse Count车速信号脉冲测试-5EEPROM TestEEPROM读写测试-6INJ-A

28、SIC R/W喷油芯片-7INJ-Control油缸喷油信号控制信号测试-8Version硬件版本获取测试-3.3 系统非功能需求(1)性能在正常操作下能够准确测试得到数据并在工具上显示相关数据,连续测试没有bug,在不正确的操作下能够识别错误并提示错误,软件在win7和win8下都能够运行。(2)成本时间成本:设计时间:一周,代码编写及调试时间:4周,软件测试时间:一个月;硬件成本:不计3.4 系统开发环境 硬件环境:Infineon Tri-Core TC277软件环境:VC6.03.5 系统可行性分析3.5.1 技术可行性硬件平台采用已经做好的InfineonTC277汽车专用单片机,能

29、够满足系统需求,底层代码也已经能够对数据处理,不需要做太多改动。本软件采用VC6.0集成的MFC架构,采用C+作为开发语言,数据处理避免了复杂的数据库操作,采用更方便的CSV文件解析方式,可以根据不同的需求在CSV文件中添加数据,这样处理对于少量数据而言更容易维护。CAN通信使用Kvaser提供的Canlib库函数进行代码编写。3.5.2 经济可行性在前期调查中发现要使用的ECU过于高端,国内目前市场没有销售的,而实习公司有这样的硬件条件,底层也在做开发,所以使用同时开发的硬件,而测试用的Kvaser leaf国内没有生产的,所以比较昂贵,销售价格在3000人民币左右,所以同样使用已有的资源,

30、这样经济可行性方面完全没有问题。第4章系统设计4.1 系统设计指导原则(1)先进性本系统在Win7和Win8操作系统测试通过,可在在这两个平台上完美运行,只需要将将单片机控制板的电源线、USB线和CAN总线连接好打开软件就可以测试单片机的相关数据,没有复杂的操作,只需要在软件上做简单的数据设置即可,测得的数据简单直观。(2)可靠性及安全性测试用的底层软件是Infineon汽车专用单片机,测试板安全可靠,而数据传输时通过CAN总线传输,系统可靠性相当高;系统8大功能之间互不干扰,在Digital Input、Digital Output和Annalog Input上的数据读取都采用的双击列表行和

31、单机Button的方式来保证读取的数据正确性,对各种错误操作的提示也很到位,数据的读取是直接从文件读取,单从软件是无法改变这些数据的。4.2 体系结构设计系统体系架构如图4.1所示。图4.1 系统体系结构4.3 软件设计由于要对Infineon TC277底层软件进行详细测试,包括管脚的输入电平测试、管脚的输出电平测试、模拟输入电平测试、管脚脉冲捕捉测试、EEPROM读写测试、硬件版本测试。为了保证测试的准确性,各个功能互不干扰,每个模块内的各个功能能够独立运行,测试结果一目了然,能够反复进行测试。4.3.1 控制流程设计由于8个模块之间互不干扰,所以在控制上进行逐一控制,需要什么功能直接选择

32、该功能,然后子功能会按照他的流程运行。4.3.2 UI界面设计作为一款实用性软件,软件UI不能太复杂,功能区划分要明确,布局要简洁明了,在此基础下我做了如下UI设计:主界面:考虑到底层文件的加载模式,额外添加了load mot功能,然后根据8个测试功能添加了8个Button,比较传统的表格布局方式简洁美观,让人一目了然,考虑到软件的使用方便和后期维护,我还添加了菜单项,可以根据需要添加退出和About功能。主界面如图4.2所示。图4.2 主界面UIDigital Input子界面:该功能为输入电平捕捉测试,界面主要包括一个显示数据的列表,列表数据由CSV文件获得;一个Button按钮和两个显示

33、状态的显示框,为了测试的需要,第一个显示框显示选中的数据项,第二个显示框返回状态结果:“Success”or“NG”。Digital Input子界面如图4.3所示。图4.3 Digital Input子界面UIDigital Output子界面:Digital Output功能与Digital Input功能相似,所以界面布局也基本一样,界面由一个显示数据的列表、设置电平高低的Radio Group和两个显示框组成,由于测的是输出电平,所以加入的设置输入电平高低的功能,显示框分别显示选中项和测试状态的结果。Digital Output子界面如图4.4所示。图4.4 Digital Outpu

34、t子界面UIAnalog Input子界面:模拟电平捕捉测试功能主要测试设置的各个引脚的模拟电平高低,功能上和输入输出捕捉测试类似,界面包括一个列表,一个测试按钮和一个测试状态结果显示框。Analog Input子界面如图4.5所示。图4.5 Analog Input子界面UIPulse Count子界面:脉冲捕捉测试,界面包括一个显示测试数据的列表,设置脉冲时间的编辑框,显示结果的静态显示框和一个开始按钮。Pulse Count子界面如图4.6所示。图4.6 Pulse Count子界面EEPROM TEST子界面:EEPROM读写测试分为两个功能块,分别为读和写,所以在布局上用两个Grid

35、分开,Write功能主要包括一个可选写数据的下拉框、一个显示测试结果的显示框和一个Write按钮;Read功能包括一个显示读数据的显示框、显示测试结果的显示框和一个Read按钮。EEPROM TEST子界面如图4.7所示。图4.7 EEPROM TEST子界面UIINJ-ASIC R/W子界面:INJ数据读写包括两个功能模块,分别为读数据和写数据,写数据部分包括了可输入数据的编辑框和可选的选择框,还有开始写的数据的按钮和显示状态结果的显示框;读数据部分包括了显示读数据的显示框和显示处理结果的状态显示框,这样的布局清晰美观。INJ-ASIC R/W子界面如图4.8所示。图4.8 INJ-ASIC

36、 R/W子界面UIINJ-Control 子界面:该功能的界面主要包括3个部分,第一个部分由6个单选框组成,用来选择缸号;第二个部分由3个数据设置项组成;第三个部分由3个静态显示框组成,用来显示反馈结果;最后还包括一个显示处理结果的显示框。INJ-Control 子界面如图4.9所示。图4.9 INJ-Control 子界面UIVersion子界面:该功能为附加功能,用来或许应该版本号等功能,在布局上也分为了3小块,第一小块的显示框显示的是硬件型号;第二小块显示版本的最大最小值;第三部分显示处理状态。Version子界面如图4.10所示。图4.10 Version子界面UI4.3.3 功能模块

37、设计本系统分别由8个小模块组成,分别为Digital Input、Digital Output、Analog Input、Pulse Count、EEP-ROM TEST、INJ-ASIC R/W、INJ-Control和Version。8个模块独立工作,互不干扰。系统软件功能框图如图4.11所示。 图4.11 系统软件功能框图大连东软信息学院毕业设计(论文)第5章系统实现5.1环境配置(1)包含底层代码的Infineon TC277单片机开发板(2)Win8系统上可运行的VS20105.2功能模块实现(1)Digital Input模块实现Digital Input功能是测试CPU引脚的输入

38、电平。首先通过API判断CAN是否初始化完成,如果初始化失败,则提示“can initial fail”,如果初始化完成,则从软件目录下寻找对应的CSV文件,读取CSV文件中的数据显示在列表中,我们只要把signal项对应的数据显示在列表的第一列中,然后选中任意一行点击check按钮或者双击该行通过signal名来获取该数据项在CSV文件中的对应行,然后读取到剩余的数据项,将数据通过转换存到对应的发送指令中,最后将指令通过CAN总线发送到底层处理,底层处理后在PC端接受返回的指令,在解析返回的指令时首先判断databuffer2是否为0 x4A,是的话状态显示框显示“Success”,然后继续

39、判断databuffer3等于0还是等于1,等于0的话为低电平,等于1的话为高电平,显示在列表对应的Status栏;如果databuffer2不为0 x4A,状态显示框显示“NG”。Digital Input模块流程图如图5.1所示。图5.1 模块一流程图核心代码如下:void Digital_Input_DIALOG:OnBnClickedDigitalinputCheckBt()/ TODO: Add your control notification handler code hereint port_temp = _ttoi(csv_check1.struct_csvi+2.port)

40、;int bit_temp = _ttoi(csv_check1.struct_csvi+2.bit);int cs_temp = 0 x0a+port_temp+bit_temp;txData.DLC = 5;txData.ID = 0 x6F1;txData.DATA0 = 0 x04;txData.DATA1 = cs_temp;txData.DATA2 = 0 x0A;txData.DATA3 = port_temp;txData.DATA4 = bit_temp;txData.DATA5 = 0 x00;txData.DATA6 = 0 x00;txData.DATA7 = 0 x0

41、0;pInfineonFactoryTestDlg_0A-index = 0;for (int temp = 0;tempdata_buffertemp = 0;/* send data from can bus*/ret = pInfineonFactoryTestDlg_0A-cDrCanLib.DrCanWrite( txData );Sleep(1);/* read data from can bus*/pInfineonFactoryTestDlg_0A-InfineonFactoryTest_GetAllReceive( strReceive );if(pInfineonFacto

42、ryTestDlg_0A-data_buffer3= 1)status = high;elsestatus = low;if(pInfineonFactoryTestDlg_0A-data_buffer2= 0 x4A)DigitalInput_result_edit.SetWindowText(_T(OK);elseDigitalInput_result_edit.SetWindowText(_T(NG);status = -;IDC_DigitalInput_list.SetItemText(i,1,status);pInfineonFactoryTestDlg_0A-cDrCanLib.

43、DrCanClose();(2)Digital Output模块实现Digital Output功能是测试CPU引脚的输出电平。首先通过API判断CAN是否初始化完成,如果初始化失败,则提示“can initial fail”,如果初始化完成,则从软件目录下寻找对应的CSV文件,读取CSV文件中的数据显示在列表中,我们只要把signal项对应的数据显示在列表的第一列中,在设置然电平高低的单选框中选择电平,然后选中任意一行点击check按钮或者双击该行通过signal名来获取该数据项在CSV文件中的对应行,然后读取到剩余的数据项,将这些数据和选择的电平通过转换存到对应的发送指令中,最后将指令通过

44、CAN总线发送到底层处理,底层处理后在PC端接受返回的指令,在解析返回的指令时首先判断databuffer2是否为0 x4B,是的话状态显示框显示“Success”,然后将选中的电平显示在列表对应的Status栏;如果databuffer2不为0 x4B,状态显示框显示“NG”。Digital Output模块流程图如图5.2所示。图5.2 模块二流程图(3)Analog Input模块实现Analog Input功能是测试CPU引脚的模拟输入电平。首先通过API判断CAN是否初始化完成,如果初始化失败,则提示“can initial fail”,如果初始化完成,则从软件目录下寻找对应的CSV

45、文件,读取CSV文件中的数据显示在列表中,我们只要把signal项对应的数据显示在列表的第一列中,然后选中任意一行点击check按钮或者双击该行通过signal名来获取该数据项在CSV文件中的对应行,然后读取到剩余的数据项,将数据通过转换存到对应的发送指令中,最后将指令通过CAN总线发送到底层处理,底层处理后在PC端接受返回的指令,在解析返回的指令时首先判断databuffer2是否为0 x4C,是的话状态显示框显示“Success”,然后将databuffer3和databuffer4的数据进行AD转换和数据类型转换,显示在列表对应的Status栏;如果databuffer2不为0 x4C,

46、状态显示框显示“NG”。Analog Input模块流程图如图5.3所示。图5.3 模块三流程图(4)Pulse Count模块实现Pulse Count功能是测试CPU引脚的脉冲个数。首先通过API判断CAN是否初始化完成,如果初始化失败,则提示“can initial fail”,如果初始化完成,在列表中添加IF-CRANK等数据项,点击Start按钮后获取设置的count time,判断time_interval_value_int是否大于0小于60000,如果成立则将设置的count time存放到指令中,如果不成立则提示错误重新设置,最后将指令通过CAN总线发送到底层处理,底层处理后

47、在PC端接受返回的指令,在解析返回的指令时首先判断数据帧candata.DATA2是否为0 x7F,candata.DATA4是否为0 x78,是的话再判断第二帧candata.DATA3是否为0 x4D,是的话对candata.DATA4和candata.DATA5的数据进行处理保存到crank_cnt中,对candata.DATA6和candata.DATA7的数据进行处理保存到crank2_cnt中,接着判断第三帧candata.DATA0是否为0 x80,是的话对candata.DATA1和candata.DATA2数据进行处理赋给Cam_cnt,对candata.DATA3 和can

48、data.DATA4数据进行处理赋给Spd_cnt,对candata.DATA5和candata.DATA6数据进行处理赋给Fspd_cnt,把数据显示在列表对应的Status栏;否则状态显示框显示“NG”。Pulse Count模块流程图如图5.4所示。图5.4 模块四流程图核心代码如下:while( iMill InfineonFactoryTest_GetReadData( strTemp );if( ret = TRUE )if( pInfineonFactoryTestDlg_pulse_input-canData.DATA2 = 0 x7F & pInfineonFactoryTe

49、stDlg_pulse_input-canData.DATA4 = 0 x78)pDialog-Pulse_input_result.SetWindowText(_T(Process); ret = FALSE;else if(pInfineonFactoryTestDlg_pulse_input-canData.DATA3 = 0 x4D) Crank_cnt = pInfineonFactoryTestDlg_pulse_input-canData.DATA4;Crank_cnt = (Crank_cnt canData.DATA5;Crank2_cnt = pInfineonFactor

50、yTestDlg_pulse_input-canData.DATA6;Crank2_cnt = (Crank2_cnt canData.DATA7;ret = FALSE;status = TRUE;else if(pInfineonFactoryTestDlg_pulse_input-canData.DATA0 = 0 x80)Cam_cnt = pInfineonFactoryTestDlg_pulse_input-canData.DATA1;Cam_cnt = ( Cam_cntcanData.DATA2;Spd_cnt = pInfineonFactoryTestDlg_pulse_i

51、nput-canData.DATA3;Spd_cnt = ( Spd_cntcanData.DATA4;Fspd_cnt = pInfineonFactoryTestDlg_pulse_input-canData.DATA5;Fspd_cnt = ( Fspd_cntcanData.DATA6;Ctm_cnt = pInfineonFactoryTestDlg_pulse_input-canData.DATA7;ret = FALSE;status = TRUE;else if(pInfineonFactoryTestDlg_pulse_input-canData.DATA0 = 0 x81)

52、Ctm_cnt = ( Ctm_cntcanData.DATA1;strTemp.Format(_T(%d), Crank_cnt);pDialog-IDC_PulseCount_list.SetItemText(0,1,strTemp);strTemp.Format(_T(%d), Crank2_cnt);pDialog-IDC_PulseCount_list.SetItemText(1,1,strTemp);strTemp.Format (_T(%d), Cam_cnt);pDialog-IDC_PulseCount_list.SetItemText(2,1,strTemp);strTem

53、p.Format(_T(%d), Spd_cnt);pDialog-IDC_PulseCount_list.SetItemText(3,1,strTemp);strTemp.Format(_T(%d), Fspd_cnt);pDialog-IDC_PulseCount_list.SetItemText(4,1,strTemp);strTemp.Format(_T(%d), Ctm_cnt);pDialog-IDC_PulseCount_list.SetItemText(5,1,strTemp);pDialog-Pulse_input_result.SetWindowText(_T(Succes

54、s);status = FALSE;break;elsestatus = TRUE;/do nothing /* timeout check */Sleep(1);timeEnd = GetTickCount();iMill = timeEnd - timeStart; (5)EEPROM TEST模块实现EEPROM TEST功能是测试CPU的EEPROM读写功能。首先通过API判断CAN是否初始化完成,如果初始化失败,则提示“can initial fail”,如果初始化完成,首先下拉框中选择写入的数据,点击write按钮,将选择的数据保存到发送的指令中,然后发送指令到底层,底层处理完指令

55、后返回处理指令,PC端接收指令后对数据进行解析,判断数据中candata.DATA2是否为0 x7F和candata.DATA4是否为0 x78,再判断candata.DATA2是0 x71,candata.DATA3是否为0 x05 ,candata.DATA4是否为0 x00,是的话状态显示框显示“Success”,如果candata.DATA4为0 xFF,则状态显示框显示NG。点击read按钮,发送read指令到底层,底层处理返回指令,PC端接收后进行解析,首先判断candata.DATA2是否为0 x7F和candata.DATA4是否为0 x78,再判断candata.DATA2是

56、0 x71,candata.DATA3是否为0 x06,candata.DATA4是否为0 x00,如果candata.DATA4 = 0 x00,读取candata.DATA5,取出数据进行处理,则为读到的数据,状态显示框显示Success,否则状态显示框显示NG。EEPROM TEST模块流程图如图5.5所示。图5.5 模块五流程图(6)INJ-ANSIC模块实现INJ-ANSIC模块流程图如图5.6所示。图5.6 模块六流程图5.3 系统集成与调试所有模块完成之后进行系统集成与调试,将所有模块整合到一起,重新进行软件编译,生成软件后再测试各个模块功能是否完善。大连东软信息学院毕业设计(论

57、文)第6章系统测试该测试平台基于设计好的InfineonTC 277开发板,为了保证ECM程序的稳定性和可靠性,设计该软件来测试ECM的各项数据,系统测试需要覆盖所有可能的情况,包括正常和异常情况。在测试前要编写测试式样书,按照测试式样书来测试,看测试结果与正确结果是否保持一致。6.1 测试概述一个ECU开发完成后,必须对其功能进行全面的测试。现在由于控制系统所完成功能的日渐复杂性,对其进行全面综合的测试,特别是故障情况和极限条件下测试就显得尤为重要。但如果用实际的控制对象进行测试,很多情况是无法实现的,或要付出高昂的代价,但如果用计算机测试软件对ECM进行测试就可以进行各种条件下的测试,特别

58、是故障和极限条件下的测试。由于出荷测试关系到ECM的安全性,所以测试需要很严谨,首先要编写测试式样书,把所有要测试的样例和结果编写好,然后比对测试结果和标准结果,留下必要的测试log,有些数据还需要用逻辑分析仪测量波形,比对波形,发现有异常要分析异常原因是由于何种原因导致并和底层开发人员交流。一般情况下数据的正常发送不会有问题,所以要格外注意异常情况下的处理结果,分析数据帧,找到错误原因。6.2 测试用例6.2.1 Digital Input模块测试测试Digital Input模块测试测试用例如表6.1所示。表 6.1 Digital Input模块测试测试用例对象测试步骤预期结果实际结果D

59、igital Input1.打开Digital Input功能2.双击IS-EBMPOS11、Check signal 显示IS-EBMPOS12、Result显示Success1.check signal显示IS-EBMPOS12、Result显示Success6.2.2 Digital Output模块测试测试Digital Output模块测试测试用例如表6.2所示。表6.2 Digital Input模块测试测试用例对象测试步骤预期结果实际结果Digital Output1.打开Digital Output功能2.双击OS-STARTR-MON1.Check signal 显示OS-S

60、TARTR-MON1.Check signal 显示OS-STARTR-MON2.OS-STARTR-MON显示high6.2.3 Analog Input模块测试测试Analog Input模块测试测试用例如表6.3所示。表6.3 Analog Input模块测试测试用例对象测试步骤预期结果实际结果Analog Input1.打开Analog Input功能2.双击IA-BARO1.IA-BARO显示1.62.Result显示Success1.IA-BARO显示1.62.Result显示Success大连东软信息学院毕业设计(论文)第7章结论本文通过对C+和CAN相关技术的深入研究,并依据本

温馨提示

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

评论

0/150

提交评论