汽车尾气余热热电转换监控软件设计与开发——毕业论文_第1页
汽车尾气余热热电转换监控软件设计与开发——毕业论文_第2页
汽车尾气余热热电转换监控软件设计与开发——毕业论文_第3页
汽车尾气余热热电转换监控软件设计与开发——毕业论文_第4页
汽车尾气余热热电转换监控软件设计与开发——毕业论文_第5页
免费预览已结束,剩余51页可下载查看

下载本文档

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

文档简介

武汉理工大学毕业论文(设计)1 绪论1.1 引言汽车尾气余热发电是一种汽车利用尾气余热进行发电的技术,属于汽车部件制造技术领域,在后排气管上安装有能量转换器,能量转换器的电量输出端通过连接器连接汽车电池的输入端。汽车发动机工作时,通过后排气管排放高热量的尾气,能量转换器吸收热能并转换成电能,向电池充电。该技术有效地回收、利用了汽车残余能量,大大地提高了能源使用效率,有利于环境保护,性能可靠。在尾气余热发电装置内由两种金属组成的回路中,如果两个接触点之间产生温度差,金属电子的状态会发生变化形成电流,这种热电转换现象即为热电效应。尾气余热发电原理就是利用不同金属间的温度差进行发电,将尾气中含有的热量转化为汽车动力来源,采用这种装置后,预计可将汽车燃油经济性提高10,而且还可以减少二氧化碳等有害废气的排放。根据研究,汽油燃烧产生的能量中有70通过尾气排放等形式散失到大气之中,最多只有30的能量转化为机械能,其中还有一些由于齿轮、轮胎的机械摩擦、蓄电池工作等原因而被消耗掉,最后只有20左右转化为驱动行驶的动力。开发中的尾气余热发电系统主要采用热电转换技术,由不同的金属和半导体成对组合,可以安装在汽车下部的催化转化器和消声器之间,利用高温尾气和低温冷却水之间的温度差发电,充分利用和回收热量,提高热效率。 热电转换模块是整个汽车尾气余热发电系统的核心环节,利用热电效应将尾气余热转换为电能。汽车尾气余热发电装置的中心环节是热电转换,该模块将汽车所排放的高温尾气所携带的热量转换为低压电能,发出的电能一般都为低电压、小电流的小功率电能,不能直接应用,需要经过DCDC升压、储能处理后才能正常利用。并将各小的热电转换模块进行并联,以达到所需电压及功率。1.2 研究意义随着人们生活水平的提高,人们在交通出行上对汽车的依赖程度越来越大,而全球汽车数量的不断增加,给世界环境带来的危害也越来越严重。将热电转换技术运用到汽车尾气排放系统,将极大地减少汽车尾气排放对环境造成的危害,并且能够节约不可再生能源,将废气转换为可再生清洁能源,可谓是一举三得。在汽车尾气余热发电系统的研发阶段,需要对系统的各功能模块进行实时监测,并采集各路信号的参数,传至上位机供设计人员进行分析优化,因此,就必须有一个完善的监控系统软件,来完成各功能模块和上位机之间的通信。首先需要上位机通过监控软件向系统模块发出指令,然后系统各模块响应上位机的指令开始运行,同时将运行中各路信号进行采集并传输至上位机,实时显示在监控界面上,这样研究人员表可以清楚的看到整个系统的运行状况,根据异常信号分析故障、完善系统。1.3 发展现状1.3.1 余热发电技术发展现状余热发电的关键技术是热电转换技术,利用的是热电效应。所谓的热电效应,是当受热物体中的电子,因随着温度梯度由高温区往低温区移动时,所产生电流或电荷堆积的一种现象。而这个效应的大小,则是用参数Q来测量,其定义为Q=E/-dT(E为因电荷堆积产生的电场,dT则是温度梯度)。两种不同成份的导体两端接合成回路,当接合点的温度不同时,在回路中就会产生电动势,这种现象称为热电效应,而这种电动势称为热电势。这项技术由起步到如今也经历了漫长的发展阶段。热电转换技术发展至今已有半个多世纪的历史了,而且正随着现代科学技术的不断进步而逐渐走入我们日常生活。十九世纪六十年代,人类便开始了征服太空的计划。从1969年的登月计划到2001年的火星探测,几十年中取得了很大的飞跃,这其中也有热电转换技术的一份功劳。利用热电转换技术,一枚硬币大小的放射性同位素热源就能够提供长达二十年以上的连续不断的电能,这是其它任何一种能源技术所不能比拟的。美国登月计划中“阿波罗”17号飞船就是使用了热电转换技术提供的电源从月球表面向地球成功地传送了数据,中央部分就是使用放射性同位素为热源的热电发电装置。到1990年为止,热电转换技术已成功应用于美国国家宇航局的二十多次太空飞行任务中,均取得了良好的效果,其中最长的工作时间超过了15年。美国热电直接转换方面处于世界的领先地位,美国能源部、国防部及宇航局共同负责热电转换方面的研究发展工作。热电偶转换、热离子转换、磁流体发电、铁电转换和热磁转换是目前五种基本的热电转换方式。热电偶是最早的热电转换装置,将两种不同材料的物质(通常是金属丝)连接起来,加热结点,在另两端就能得到电动势。这种效应是1821年发现的。但金属和合金的热电转换效率太低,因此直到发现更好的热电转换材料半导体后热电偶电源才投入使用,今天使用的半导体热电偶电源已进入商业市场。另一种热电转换装置是热离子转换器。它利用的是热离子发射原理,当金属温度很高时,电子将从金属表面被蒸发出来。最简单的热离子转换器是由两片靠的很近的金属板构成,当然热离子转换器用于外层空间时,热源可以使用太阳能、放射同位素的衰变能或核反应堆内的裂变能。考虑到其余热必须以辐射方式排除,而热离子转换器可以在比热电偶电源或动力发电设备高得多的温度下运行,因此只需要较小的辐射转换器即可(热辐射正比于绝对温度的四次方)。体积小,相对可靠的热离子转换器已在空间运行器上使用。铁电转换和热磁转换都利用物质受热后物理性质发生的重大改变来进行热电转换,相应的转换装置是真正的热机。在这些装置中,既不用气体工质也不用电子流,而是利用原子和分子在周期性受热时,不断重新排列以达到发电的目的。这种金属内部分子重新排列或晶体结构改变的现象称为二阶转变。铁电转变利用了介电物质的介电常数随温度变化的特殊性质(介电物质为半导体,置于电容两极之间以增加电容量)。热磁转换能与铁电转换能有某些相似之处,不同的是用感应电场能代替了静电场能。因为热电转换有巨大的实用价值,已有的几种热电转换装置的性能和价格还不能满足要求,所以科技人员仍在不断努力的寻找更有效更简便的热电转换装置。目前世界上较为先进的是一种碱金属转换元件AMTEC元件。将碱金属高温热管和固体电解质导电技术结合在一起的AMTEC元件具有热电效率高,结构简单和运行可靠等优点,效率可达30%。1.3.2 监控软件发展现状监控软件经过长期的发展,目前主要有VB、VC、组态王、Lab VIEW等。其中VB和VC+因简便熟悉而较广泛使用,另外两种是集成化的监控软件。组态王开发监控系统软件,是新型的工业自动控制系统以标准的工业计算机软、硬件平台构成的集成系统取代传统的封闭式系统。它具有适应性强、开放性好、易于扩展、经济、开发周期短等优点。通常可以把这样的系统划分为控制层、监控层、管理层三个层次结构。其中监控层对下连接控制层,对上连接管理层,它不但实现对现场的实时监测与控制,且在自动控制系统中完成上传下达、组态开发的重要作用。尤其考虑三方面问题:画面、数据、动画。通过对监控系统要求及实现功能的分析,采用组态王对监控系统进行设计。组态软件也为试验者提供了可视化监控画面,有利于试验者实时现场监控。而且,它能充分利用Windows的图形编辑功能,方便地构成监控画面,并以动画方式显示控制设备的状态,具有报警窗口、实时趋势曲线等,可便利的生成各种报表。它还具有丰富的设备驱动程序和灵活的组态方式、数据链接功能。Lab VIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 与C和BASIC一样,LabVIEW也是通用的编程系统,有一个完成任何编程任务的庞大函数库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。 LabVIEW(Laboratory Virtual instrument Engineering Workbench)是一种图形化的编程语言的开发环境,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。 图形化的程序语言,又称为“G”语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。 利用LabVIEW,可产生独立运行的可执行文件,它是一个真正的32位编译器。像许多重要的软件一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本。 它主要的方便就是,一个硬件的情况下,可以通过改变软件,就可以实现不同的仪器仪表的功能,非常方便,是相当于软件即硬件。现在的图形化主要是上层的系统,国内现在已经开发出图形化的单片机编程系统。1.3.3 界面设计方法发展现状界面的说法以往常见的是在人机工程学中。“人机界面”是指人机间相互施加影响的区域,凡参与人机信息交流的一切领域都属于人机界面。界面设计存在于人与物的信息交流1。“人”是设计界面的一个方面,是认识的主体和设计服务的对象,而作为对象的“物”则是设计界面的另一个方面。它是包含着对象实体、环境及信息的综合体。功能性设计界面,接受物的功能信息,操纵与控制物,同时也包括与生产的接口,即材料运用、科学技术的应用等等。这一界面反映着设计与人造物的协调作用。功能性界面设计要建立在符号学的基础上。设计功能界面,不可避免地要让使用者明白功能操作。每一操作对人来说应是符合思维逻辑的,是人性的,而对机械、电子来说则应是准确的、确定无疑的,这双方的信息传递是功能界面的核心内涵2。监控界面的设计属于功能性界面设计,本文一下研究功能性界面设计的方法。首先要明确界面设计要完成的功能性任务,任务分析采用的技术主要有:逐步求精技术,把任务不断划分为子任务,直至对每个任务的表达都十分清楚;面向对象分析技术,识别出与应用有关的所有客观的对象以及与对象关联的动作3。在界面设计过程中,要经过下面几个步骤:步骤一:建立任务的目标和意图;步骤二:为每个目标和意图制定特定的动作序列;步骤三:按在界面上执行的方式对动作序列进行规约;步骤四:指明系统状态,即执行动作时的界面表现;步骤五:定义控制机制,即用户可用的改变系统状态的设备和动作;步骤六:指明控制机制如何影响系统状态;步骤七:指明用户如何通过界面上的信息解释系统状态。 在界面设计过程中,必须遵循界面设计的一般应原则4,其主要原则主要包括以下五点:1)向导使用原则对于应用中某些部分的处理流程是固定的,用户必须按照指定的顺序输入操作信息,为了使用户操作得到必要的引用应该使用向导,使用户使用功能时比较轻松明了,但是向导必须用在固定处理流程中,并且处理流程应该不少于3个处理步骤。2)响应时间原则系统响应时间包括两个方面:时间长度和时间的易变性。用户响应时间应该适中,系统响应时间不应过长或过短,系统响应时间的易变性是指相对于平均响应时间的偏差。即使响应时间比较长,低的响应时间易变性也有助于建立稳定的节奏。 3)一致性原则在界面设计中应该保持界面的一致性。一致性既包括使用标准的控件,也指使用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面确保一致。在同一个应用中,这些信息的表现方式不一致,会影响这一操作人员的使用,因此应当注重在同一界面系统中表现形式的一致性。4)布局合理化原则应注重在一个窗口内部所有控件的布局和信息组织的艺术性,使得用户界面美观。在一个窗口中按tab键,移动聚焦的顺序不能杂乱无章,tab 的顺序是先从上至下,再从左至右。一屏中首先应输入的和重要信息的控件在tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。布局力求简洁、有序、易于操作。5)鼠标与键盘对应原则应遵循的是可不用鼠标的原则:应用中的功能只用键盘也应当可以完成,即设计的应用中还应加入一些必要的按钮和菜单项。但是,许多鼠标的操作,如双击、拖动对象等,并不能简单地用键盘来模拟即可实现。例如在一个列表框中用鼠标双击其中一项可以表示选中该项内容。为了用键盘也能实现这一功能,必须在窗口中定义一个表示选中的按钮,以作为实现双击功能的替代(或其它方式)。又如在一个窗口中有两个数据窗口,可以用鼠标从一个数据窗口中将一项拖出然后放到另一个中。假如只用键盘,就应当在菜单中设置拷贝或移动的菜单项。1.4 本设计研究内容本设计要求完成汽车尾气余热热电转换监控软件的设计。汽车尾气余热发电装置的中心环节是热电转换,该模块将汽车所排放的高温尾气所携带的热量转换为低压电能,发出的电能一般都为低电压、小电流的小功率电能,不能直接应用,需要经过DCDC升压、储能处理后才能正常利用。并将各小的热电转换模块进行并联,以达到所需电压及功率。本次设计主要针对汽车尾气余热发电系统的各个模块,设计各模块信号采集及显示的监控软件。在对软件设计的基本概念及原则有一定了解的基础上,本设计要仔细分析监控系统设计需求,选择合适的设计方案来完成监控软件显示及通信的功能。经比较分析选择采用VC+串口通信来实现通信显示功能,采用多线程技术来实现多路信号同时采集。监控系统分为三个界面,主界面软件提供监测与设置两种选择,但只有先对系统进行正确的设置才能正确的监测各模块信号。系统设置子界面主要完成对通信口、数据格式及波特率的设置,以保证上位机与模块之间通信的正常进行。系统检测子界面则是执行通信显示的任务,将下位机的数据传送至上位机并显示于界面上。为了验证软件能否实现预定功能,要对软件进行模拟调试,在设计的最后是模拟调试。使用辅助调试软件可以方便快捷的帮助实现调试目的。2设计方案论证2.1软件设计方案论证对于监控软件的设计,Win32下的面向对象工具Visual Basic和C +能开发出又保证功能,实时性又好的监控软件。因此,本设计对这两种开发语言进行比较研究。2.1.1 Visual Basic程序设计研究Visual Basic集成开发环境带有一个标准的控件箱,此外Visual Basic还提供一个巨大的控件库,这个控件库可以满足绝大多数常规程序开发的需要。但由于控实验软件的特殊性,仍然有一些需要的控件是现有的控件库中不曾提供的。Visual Basic可以帮助用户设计自己的控件,这种控件称为用户控件5。用户控件以独特的方式实现了对已有控件的继承。利用这一特性可在已有控件(如Visual Basic的标准控件)的基础上“添加”用户所需的特殊功能得到用户自己的控件,本软件中需要设计两种用户控件。Visual Basic还支持丰富的数据类型和强大的运算能力,支持面向对象的程序设计,并具有与其它语言和环境的良好接口。与基于命令行的应用程序相比,图形化的软件通常有形象生动的界面和易于理解的操作方式6。控制软件在保证实时性的前提下向图形化界面靠拢,Visual Basic开发图形化和拖放操作的应用程序极其方便,是一种优秀的界面开发工具。但Visual Basic的不足之处在于它的硬件访问能力较弱,对硬件配置要求和操作系统的依赖性较强,这是限制它在控制领域应用的重要原因。2.1.2 C+程序设计研究C+语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C+以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用7。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C+完美地体现了面向对象的各种特性。 C+的设计目标,就是要让C+既具有适合于系统程序设计的C语言所具有的可适应性和高效性,又能在其程序组织结构方面具有面向对象程序设计风格。C+所提供的抽象机制能够被应用于那些对效率和可适应性具有极高要求的程序设计任务之中。C+的设计规则被分为基本规则、基于设计的规则、语言的技术性规则以及基于低层次程序设计的规则四个方面。基本规则强调适用于真实世界中各种应用的便捷工具,并充分考虑程序员的技术和取向。从一开始,C+面向的就是那些要做实际项目的程序员。在语言的演化过程中,来自用户的反馈和语言实现者们积累的经验才是最为重要的。由基于设计的规则,C+的一个目标就是提供更易用并具有一定承受能力的设计思想和程序设计技术,进一步提高程序的质量。然而,C+的设计目标总还是在于要支持一定范围内的各种程序设计风格和设计思想。语言的技术性规则要具体结合更多关于基本目标的上下文环境来考虑。在维护一个较庞大的程序时,一个程序员不可避免的会基于某些不完整的知识来对程序作一些修改,只关注全部程序代码中的一小部分。基于此,C+提供了class、namespace和访问控制,使设计决策的各异化成为可能。由基于低层次程序设计的规则,在C+的设计中只要在不严重影响其对强型别检查的支持的地方,都尽量做到与C的“source-link”方式相兼容。C+与C的兼容性使得C+程序员立刻就能有一个完整的语言和工具集可用。还有两点也很重要,一是有大量关于C的高质量的教学素材已经存在,二是C+程序员可以利用C+与C的兼容性而直接并有效的使用大量现成的程序库8。C+是一种传统的编程语言。编写的程序具有代码精炼、执行效率高的优点,同时它提供了丰富的硬件数据访问能力。如开发数据采集、定时控制等功能,C+是理想的选择。关于C+与Visual Basic集成的问题,这两种语言不能混合编程,C+代码不能直接嵌入到Visual Basic,反之亦然。2.1.3 软件设计方案选择 由于本次设计要求对汽车尾气余热发电系统的各路信号进行采集并处理,但Visual Basic的硬件访问能力较弱,对硬件配置要求和操作系统的依赖性较强,不适合作为本次设计的编程语言。而C+编写的程序具有代码精炼、执行效率高的优点,同时它提供了丰富的硬件数据访问能力。对于本次数据采集显示类型的界面设计,C+是理想的选择。故选择C+作为本次设计的界面编程语言。2.2 通信方式论证与外界的信息交换称为通信,基本的通信方式有并行通信和串行通信两种。一条信息的各位数据被同时传送的通信方式称为并行通信。并行通信的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用于近距离(相距数米)的通信。在监控系统中,上位机要同时接收下位机的多路信号,采用并行通信是行不通的。本设计采用另一种通信方式,即串行通信方式。一条信息的各位数据被逐位按顺序传送的通信方式称为串行通信。串行通信的特点是:数据位传送,按位顺序进行,最少只需一根传输线即可完成,成本低但传送速度慢。串行通讯的距离可以从几米到几千米。本设计着重研究串行通信方式。异步串行通信示如图1 所示:图1 异步串行通信示意图2.2.1 串行通信基本概念根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工9。如图2所示:-A-BA-BA-B Add to Project - Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,你只需要关心控件提供的对 Windows 通讯驱动程序的 API 函数的接口。换句话说,只需要设置和监视MSComm控件的属性和事件。在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置。打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是处理串行端口交互作用的一种非常有效的方法。2.3.2 在单线程中实现自定义的串口通信类控件简单易用,但由于必须拿到对话框中使用,在一些需要在线程中实现通信的应用场合,控件的使用显得捉襟见肘。此时,若能够按不同需要定制灵活的串口通信类将弥补控件的不足。该通信类CSimpleComm需手动加入头文件与源文件,其基类为CObject,大致建立步骤如下:1) 打开串口,获取串口资源句柄通信程序从CreateFile处指定串口设备及相关的操作属性。再返回一个句柄,该句柄将被用于后续的通信操作,并贯穿整个通信过程。对于dwFlagAndAttribute参数,对串口有意义的值是FILE_FLAG_OVERLAPPED,该标志表明串口采用异步通信模式,可进行重叠操作;若值为NULL,则为同步通信方式,在同步方式下,应用程序将始终控制程序流,直到程序结束,若遭遇通信故障等因素,将导致应用程序的永久等待,所以一般多采用异步通信。2)串口设置串口打开后,其属性被设置为默认值,根据具体需要,读取当前串口设备控制块DCB设置,修改后将其写入。再需注意异步读写的超时控制设置,通过COMMTIMEOUTS结构设置超时,调用SetCommTimeouts(hComm,&timeouts)将结果写入。3)串口读写操作主要运用ReadFile()与WriteFile()API函数,若为异步通信方式,两函数中最后一个参数为指向OVERLAPPED结构的非空指针,在读写函数返回值为FALSE的情况下,调用GetLastError()函数,返回值为ERROR_IO_PENDING,表明I/O操作悬挂,即操作转入后台继续执。定义全局变量m_Serial作为新建通信类CSimpleComm的对象,通过调用类的成员函数即可实现所需串行通信功能。与上一方法相比,这种方法赋予串行通信程序设计较大的灵活性,端口的读写可选择较简单的查询式,或通过设置与外设数据发送时间间隔TimeCycle相同的定时器:SetTimer (1,TimeCycle,NULL),进行定时读取或发送。2.3.3 多线程下实现串行通信前两种方法适用于单线程通信。在很多工业控制系统中,常通过扩展串口连接多个外设,各外设发送数据的重复频率不同,要求后台实时无差错捕捉,采集,处理,记录各端口数据,这就需要在自定义的串行通信类中创建端口监视线程,以便在指定的事件发生时向相关的窗口发送通知消息。线程是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。Windows内部的抢先调度程序在活动的线程之间分配CPU时间,Win 32 区分两种不同类型的线程,一种是用户界面线程UI,它包含消息循环或消息泵,用于处理接收到的消息;另一种是工作线程,它没有消息循环,用于执行后台任务。用于监视串口事件的线程即为工作线程。多线程通信类的编写在端口的配置,连接部分与单线程通信类相同,在端口配置完毕后,最重要的是根据实际情况,建立多线程之间的同步对象。用PostMessage()向指定窗口的消息队列发送通知消息,相应地,需要在该窗口建立消息与成员函数间的映射,用ON_MESSAGE将消息与成员函数名关联。BEGIN_MESSAGE_MAP (CSampleView, CView)/AFX_MSG_MAP(CSampleView)ON_MESSAGE(ID_COM1_DATA, OnProcessCom1Data)ON_MESSAGE(ID_COM2_DATA, OnProcessCom2Data)./AFX_MSG_MAPEND_MESSAGE_MAP()然后在各成员函数中完成对各串口数据的接收处理,但必须保证在下一次监测到有数据到来之前,能够完成所有的中间处理工作。否则将造成数据的捕捉错误。多线程的实现可以使得各端口独立,准确地实现串行通信,使串口通信具有更广泛的灵活性与严格性,且充分利用了CPU时间。2.3.4串行通信方案选择综上所述,以VC+ 6.0 为工具,实现串行通信的三种方法各有利弊。控件方式虽简单易用,但由于必须拿到对话框中使用,限制了其应用性,在本次设计中不能完成多模块数据接收功能;在单线程中实现自定义的串口通信类虽然较控件方式灵活,但仍只是用于单线程通信;汽车尾气余热发电系统的监控界面要求同时采集四个模块的数据(包括电压巡检模块、温度检测模块、热电转换模块、DCDC模块),因此多线程下的串行通信方式是最佳选择方案。3监控软件设计3.1 主监控系统设计要完成监控软件设计的任务,首先考虑界面设计。Visual C+是一种可视化设计工具,用所见即所得的方式设计软件的界面。在Visual C+集成开发环境中新建一个标准EXE项目,向环境提供的空白窗体中添加ActiveX控件并调整它们的外观位置和属性就能完成界面设计。不过这时完成的界面是一种静止界面,不能对各种事件做出合理的反应,因而无法正常工作,让程序工作起来是代码设计的任务。对事件进行相应处理是Visual C+代码设计的主要内容。如果说窗体设计考虑的是“程序看起来是什么样子”,代码设计时考虑的就是“发生某事件后程序该怎么办”。 Visual C+激活的事件类型非常丰富,包括各种键盘、时钟、鼠标、系统等事件,代码的任务是为这些事件规定计算机应执行的动作,以满足控制的需要。3.1.1 外观设计主界面要求显示供选择的控件,点击其一是完成对上位机与下位机通信的相关参数设置,点击另一个是进入监控子界面。选择FileNew,弹出“New”对话框。在“工程”下选择“MFC AppWizardexe”,工程图5 新建工程名命为“Converse”。如图5示。点击确定后在第一步中选择“一般对话框”,点击“完成”则建立了一个对话框。如图6所示:图6 建立对话框右键点击对话框,在属性设置中将对话框明名为“汽车尾气余热热电转换监控系统”。如图7所示:图7 对话框属性设置向对话框中添加按钮,分别命名为“测试界面”和“系统设置”。如此,则完成了主界面的外观设计。如图8示:图8主界面对话框3.1.2 程序设计双击“测试界面”按钮,则转入程序设计,我们需要将此按钮与监控界面对话框联系,并打开串口。双击“系统测试”按钮,则转入系统设置子界面,须将此按钮与系统设置对话框相联系。要完成此功能,具体程序见附录。其中,当点击“测试界面”时,将运行的主要程序如下12:void CConverseDlg:OnButtonMonitor() / TODO: Add your control notification handler code hereCString strPort;strPort.Format(COM%d,m_port);hCom=CreateFile(strPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,/FILE_FLAG_OVERLAPPED,NULL); /打开一个通讯端口if(hCom=INVALID_HANDLE_VALUE)MessageBox(串口不存在或被其它应用程序占用!,提示,MB_OK);return; /最小化主窗口/ShowWindow(SW_MINIMIZE);/创建监控窗口CMonitorDlg dlg;dlg.DoModal();当点击“系统设置”时,运行的主要程序如下:void CConverseDlg:OnButtonSet() / TODO: Add your control notification handler code hereCSetDlg m_dlg;m_dlg.DoModal();3.2 系统设置子系统设计3.2.1 外观设计上位机要与下位机之间进行异步通信,必须要有共同的通信协议,包括串口选择、波特率和帧格式等。因此,在界面的外观上必须包含以上参数对象,其中,串口选择以单选按钮的形式供四选一,波特率和帧格式以组合框的形式供用户选择。当设定这些值后,须确认以保存并发送。除此之外,还要有编辑框形式的提示语句,以提示用户。在左侧的Converse Resources的Dialog中单击鼠标右键,添加Dialog,则添加进一个对话框。如图9所示:图9 新建对话框将单选框、组合框、文本框、编辑框、按钮从控件栏中拖到对话框中,如图10所示:图10 添加控件设置属性将其分别命名,完成后界面外观如图11所示:图11 系统设置子界面对话框3.2.2 程序设计通讯口选择要求用户从四个串口中选择一个,并将结果赋予主界面程序中的初始值。具体程序见附录。每个通信口对应的变量相关性设置程序为:void CSetDlg:OnRadioButton1() / TODO: Add your control notification handler code heresetcom=1; m_com1.SetCheck(1);m_com2.SetCheck(0);m_com3.SetCheck(0);m_com4.SetCheck(0);GetDlgItem(IDC_EDIT_INTRO)-SetWindowText(选择串口1作为接收热电转换电压和温度的通讯口);void CSetDlg:OnRadioButton2() / TODO: Add your control notification handler code heresetcom=2;m_com1.SetCheck(0);m_com2.SetCheck(1);m_com3.SetCheck(0);m_com4.SetCheck(0);GetDlgItem(IDC_EDIT_INTRO)-SetWindowText(选择串口2作为接收热电转换电压和温度的通讯口);void CSetDlg:OnRadioButton3() / TODO: Add your control notification handler code heresetcom=3;m_com1.SetCheck(0);m_com2.SetCheck(0);m_com3.SetCheck(1);m_com4.SetCheck(0);GetDlgItem(IDC_EDIT_INTRO)-SetWindowText(选择串口3作为接收热电转换电压和温度的通讯口);void CSetDlg:OnRadioButton4() / TODO: Add your control notification handler code heresetcom=4;m_com1.SetCheck(0);m_com2.SetCheck(0);m_com3.SetCheck(0);m_com4.SetCheck(1);GetDlgItem(IDC_EDIT_INTRO)-SetWindowText(选择串口4作为接收热电转换电压和温度的通讯口);选择通信串口时,若未进行人为选择,则默认选择串口四,相应输出为“0001”。对输入进行查询,若选择COM1,则相应输出为“1000”,以此相同的方式依次进行查询。程序流程图如图12所示: 图12 串口选择程序流程图当光标位于波特率设置组合框上时,须向用户提供提示信息:void CSetDlg:OnSetfocusComboBps() / TODO: Add your control notification handler code hereGetDlgItem(IDC_EDIT_INTRO)-SetWindowText(选择接收数据的波特率,必须与下位机发送数据的波特率相同,否则无法正常接收,甚至会造成内存错误);当光标位于帧设置组合框上时,须向用户提供提示信息:void CSetDlg:OnSetfocusComboFrame() / TODO: Add your control notification handler code hereGetDlgItem(IDC_EDIT_INTRO)-SetWindowText(选择接收数据的祯格式);当串口、波特率和帧格式设置完毕以后,确认按钮要完成保存设置的功能,具体程序如下:void CSetDlg:OnOK() / TODO: Add extra validation hereUpdateData(TRUE);CConverseDlg *m_dlg=(CConverseDlg*)AfxGetMainWnd();CString str_bps;/端口m_dlg-m_port=setcom;/协议信息if(m_ctrlframe.GetCurSel()=0)m_dlg-m_protocal.Format(45字节格式);elsem_dlg-m_protocal.Format(19字节格式);/波特率信息m_ctrlbps.GetLBText(m_ctrlbps.GetCurSel(),str_bps);CDialog:OnOK();当点击“恢复默认值”时对参数选择默认参数,程序如下:void CSetDlg:OnButtonReset() / TODO: Add your control notification handler code heresetcom=1; m_com1.SetCheck(1);m_com2.SetCheck(0);m_com3.SetCheck(0);m_com4.SetCheck(0);m_ctrlbps.SetCurSel(1);m_ctrlframe.SetCurSel(1);UpdateData(FALSE);GetDlgItem(IDC_EDIT_INTRO)-SetWindowText(已恢复为默认值);3.3 系统监控子系统设计3.3.1 外观设计系统监控子界面要求对28路热电小模块转换电压进行巡检,对传输线路的6个温度点进行测试采样并显示,还要整个对热电模块的总的输出电压和电流进行检测并显示、对DCDC转换的输出电压和电流进行检测并显示。点击检测按钮,则下位机开始将各路信号数据传送给上位机并显示在监控界面上。点击结束检测则下位机停止发送数据。在左侧的Converse Resources的Dialog中单击鼠标右键,添加Dialog,则添加进一个对话框,将文本框、编辑框、按钮从控件栏中拖到对话框中,设置属性将其分别命名,完成后界面外观如图13所示:图13 热电监测子界面对话框

温馨提示

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

评论

0/150

提交评论