燃料动力电池发动机监控系统软件设计

2020-05-31      1301 次浏览

1引言


车用燃料动力电池具有效率高、启动快、环保性好、响应速度快等优点,是取代汽车内燃机的理想解决方法。燃料动力电池汽车的最大优点是清洁、无污染,在全球环境保护问题日益突出的今天,燃料动力电池汽车作为环保型汽车越来越受到人们的重视。为提高燃料动力电池发动机系统的可靠性,要对发动机的各系统状态进行实时监控,记录试验数据,分析其运行特性,为发动机控制策略的不断改进供应依据,同时对整车性能进行评估。因此,燃料动力电池发动机监控系统的开发具有很重要的现实意义。2系统概述2.1系统结构简介本系统由软件和硬件两部分组成,如图1所示。它以高性能的dsp为核心,开发出控制燃料动力电池发动机的嵌入式控制器。不仅能完成对燃料动力电池发动机的控制,并对整车较为严重的电磁干扰做了相应的处理,增强了控制系统的抗干扰性和稳定性;与其配套的上位机监控软件是一个拥有良好人机界面的试验数据监控和记录中心。系统中dsp的任务重要是完成数据的采集与处理,算法的实现与驱动,并通过串口与上位机通信,将采集到的数据传送给上位机,并接收上位机发来的控制命令。而系统的上位机对燃料动力电池发动机工作状态实现实时监控,完成数据的转换、存储及查询功能。上位机软件是在windows2000/xp操作系统下利用vc++6.0开发完成的,由于篇幅所限,本文重点介绍上位机监控软件的设计与实现。


图1燃料动力电池发动机控制器结构图2.2监控软件的总体设计本系统要监控一系列的参数,记录历史数据及显示实时曲线图,并实时地显示报警事件,供应诊断信息,使监控人员可以及时了解异常情况,查询故障内容。控制器的重要控制对象有氢气供给、空气供给、冷却水循环、电堆功率等,监控软件对其中关键参数进行实时显示、报警显示及数据存储等。根据系统分析确定的目标和功能,采用模块化设计方法,进行了系统的界面结构设计。本系统由多个模块组成,每一个模块完成一项独立的功能,模块与模块之间通过数据相关联。其关系如图2所示。


图2监控系统结构图


3重要功能模块设计3.1信息显示模块完成对系统重要设备运行状态的实时监控,包括用不同的颜色来表示设备的启、停状态,用编辑框实时显示重要的运行参数,如电压、电流、压力、温度等,并设置报警信号。同时,由于控件较多,各部分功能不同,引入属性页使不同用途控件分页表示,达到屏幕美观且操作方便的效果。燃料动力电池车载监控系统的主控画面如图3所示。


图3燃料动力电池车载监控系统主界面3.2串行通信模块完成数据通信并对所收到的数据进行处理、分析、存盘。把接收到的数据进行范围转换后存放到事先含义好的结构体内,并检查每个参数值是否超限,若超限则置报警标志并报警;该软件正常使用时处于长期持续运行状态,通过串口接收数据的工作一直进行。(1)通信协议。在串行通信中,为了实现特定的用户功能,必须在软件中制定通信协议。在开发燃料动力电池串行数据通信程序的过程中,通过长期的调试和不断的总结,最终得到一套完整而可靠的通信协议。该协议一共分为3层,分别为物理层和数据链接层。


物理层。规定了电子电气方面的特性及原始位流在物理链路上的传输,供应了原始位流传输信道;串行通信口:rs-232串口,硬件接口:dsp输出的ttl电平经专用集成模块转换成rs-232信号,波特率:19200,字符格式:8位数据位,2位停止位。


数据链接层。用帧作为信息传输单元,使用了两种帧:控制帧与数据帧。数据帧包括帧头和负载数据,帧头占6个字节,如表1所示,其中count表示负载数据长度,check1表示第二、三字节的校验和。控制帧只有帧头,长为6字节,如表2所示。为保证可靠的传输,在传输开始前,通过握手建立连接,采用发送/应答/重连/失败方式。


cmd表示控制信号。check2表示第二、三字节的校验和,当cmd=check2=0时,表示传输结束。(2)应用层。实现各监控参数的完整性传输,包括监控数据与校验和。


每个监控参数用两个字节表示,低位先传。校验和占两个字节,对监控数据按位异或校验。当通信失败或校验错时,往下位机发出报警信息。


(3)通信软件设计。vc中进行串口通信通常有三种方法。一是利用microsoft公司供应的activex控件microsoftcommunicationscontrol。这种方法较简单,只要对串口进行简单配置,但在数据量较大且高速传递时程序易挂起。二是直接采用windowsapi通信函数,同时利用多线程技术来提高程序的效率。这种方法通信过程稳定,适用于要求较高的通信环境,但使用较复杂。第三种方法是利用第三方供应或自己编写的通信类,只要理解这种类的几个成员函数就能方便的使用,且通信稳定。本程序采用第三种方法,使用了由remonspekreijse供应的多线程串口类cserialport,并在此基础上进行了一些改进,使之能用于本程序。由于篇幅所限,本文只列出部分关键代码。(1)初始化程序段


//初始化com1//m_serialport是cserialport类的对象,//在头文件中含义if(m_serialport.initport(this,1,19200,`n`,8,2,ev_rxflag|ev_rxchar,1024)){m_serialport.startmonitoring();//启动串口监视线程m_bserialportopened=true;//m_bserialportopened为串口打开标志}(2)串口通讯程序段串口要对下位机进行控制以及准确采集现场上传的实时参数,如温度、电流、电压、水位等,以便分析和改进整车性能,是通信程序设计的重点。其工作流程如图4所示.


图4上位机收发数据流程图由于原类只能发送字符(ascii文本),不能处理二进制发送,而本系统要发送二进制数据,所以要对原类进行一些改进,添加一个发送函数:


voidcserialport::writetoport(byte*bt,intn){assert(m_hcomm!=0);memset(m_szwritebuffer,0,sizeof(m_szwritebuffer));memcpy(m_szwritebuffer,bt,n);//将待发送数据复制到发送缓冲区m_nwritesize=n;setevent(m_hwriteevent);//触发写事件}则发送代码为:m_serialport.writetoport(sendon,4);//sendon为字节型发送数据串口接收简单代码举例如下:longc******::oncomm(wparamch,lparamport){………count++;buf[count]=ch;checksum=checksum^ch;if(count==buf1)//全部字节接受完毕{if(checksum)//校验错{afxmessagebox(接收校验出错);::sendmessage(m_hwnd,wm_resend,(wparam)0,(lparam)0);//wm_resend为重发消息}else{bytedol=*(char*)(buf+2);//接受处理数据bytedoh=*(char*)(buf+3);………}connectdb();//连接数据库………


3.3数据管理模块采集来的数据重要存放在数据库中,方便用户查询各历史数据、显示数据曲线和打印功能。vc语言供应了多种操作数据库的方法,使用odbc(开放数据库连接)访问数据库就是一种很常用的操作方法。另外,通过dbgridcontrol(网格控件)和microsoftremotedatacontrol的协同工作就能供应一个访问数据库的界面,用来进行数据库数据的浏览,添加,删除,修改等操作。整个过程实现和操作起来非常简单方便。具体连接步骤如下:(1)建立access数据库。(2)在工程中加入datagrid和remotedatacontrol控件。remote-data控件在数据库和datagrid控件中起着桥梁用途,完成同数据库的绑定。然后对两控件属性进行设置。(3)由于odbc数据源要手动在控制面板中添加注册,不方便程序的移植,于是程序通过代码动态配置数据源。部分程序如下:


char*szdesc;szdesc=newchar[256];sprintf(szdesc,dsn=%s?description=tocsupportsource?dbq=%s?file=microsoftacces-s?defaultdir=%s??,controlh-istory,lpszfile,spath);//controlhistory为数据源名称,//lpszfile为数据库名称,spath为数据库所//在路径if(false==sqlconfigdatasou-rce(null,odbc_add_dsn,microsoftaccessdriver(*.mdb),(lpcstr)szdesc))afxmessagebox(sqlconfigda-tasourcefailed);(4)加入数据到数据库while(m_bisconnected(iii==1))//m_bisconnected与iii为连接数据库标志{m_set.open();m_set.addnew();………if(m_set.canupdate())m_set.update();………}4结束语现场调试表明,该监控系统能够长时间稳定工作,并且抗干扰能力较强,能方便有效地监控现场的各种实验数据,其数据库管理操作也具有极大的灵活性.


相关文章

推荐品类

为您推荐

东莞市钜大电子有限公司 粤ICP备07049936号