当前位置:首页 > 电源 > 数字电源
[导读]1 引言   车用燃料电池具有效率高、启动快、环保性好、响应速度快等优点,是取代汽车内燃机的理想解决方案。燃料电池汽车的最大优点是清洁、无污染,在全球环境保护问题日益突出的今天,燃料

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控件microsoft communications control。这种方法较简单,只需要对串口进行简单配置,但在数据量较大且高速传递时程序易挂起。二是直接采用windows api通信函数,同时利用多线程技术来提高程序的效率。这种方法通信过程稳定,适用于要求较高的通信环境,但使用较复杂。第三种方法是利用第三方提供或自己编写的通信类,只要理解这种类的几个成员函数就能方便的使用,且通信稳定。本程序采用第三种方法,使用了由remon spekreijse提供的多线程串口类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文本),不能处理二进制发送,而本系统需要发送二进制数据,所以需要对原类进行一些改进,添加一个发送函数:

                    void cserialport::writetoport(byte *bt, int n)
                    {
                    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为字节型发送数据
                    串口接收简单代码举例如下:
                    long c******::oncomm(wparam ch, lparam port)
                    {
                    ………
                    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
                    {
                    byte dol=*(char*)(buf+2);
                    //接受处理数据    
                    byte doh=*(char*)(buf+3);
                    ………
                    }
                    connectdb();//连接数据库
                    ………             

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

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

作为全球知名的独立内燃机制造商,康明斯不断聚力,2020年,其旗下的合资公司北京福田康明斯发动机有限公司更是成功跻身全球“灯塔工厂”,为行业提供了落地样板。

关键字: 发动机 智能制造

本文中,小编将对汽油机予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 汽油机 发动机

在能源科技领域中,燃料电池作为一种高效、环保的能源转换装置,已经引起了全球范围内的广泛关注。而作为燃料电池的核心部件之一,双极板(又称集流板或隔板)发挥着举足轻重的作用。本文旨在深入探讨双极板的作用及其在科技领域中的意义...

关键字: 燃料电池 双极板

生物电池,又称为生物燃料电池或微生物燃料电池(Microbial Fuel Cells, MFCs),是一种利用微生物将有机物中的化学能直接转化为电能的装置。自20世纪初这一概念被提出以来,生物电池因其环保、可持续和高效...

关键字: 生物电池 燃料电池 能源

随着汽车工业的快速发展,空气流量传感器作为发动机管理系统的核心组件之一,其技术发展对于提高发动机性能、燃油经济性和排放控制至关重要。本文综述了空气流量传感器的发展历程、技术原理、分类以及最新进展,并探讨了未来可能的技术趋...

关键字: 传感器 发动机 汽车

在内燃机中,活塞和容纳活塞的气缸之间有细小的间隙,在燃烧行程中产生的高压废气和未燃烧的混合气体泄漏到曲轴箱内。这种气体被成为“窜气”,是造成大气污染的原因之一。因此,目前的车辆都要求采用密封的曲轴箱,这种结构不会释放气体...

关键字: 电磁阀 内燃机 发动机

介绍了汽车发动机生产企业智能化系统中动力总成制造执行系统(power Train Manufacturing Execution system,PTMES)应用于发动机装配生产的工作原理,分析了发动机数据信息统计存在错传...

关键字: 发动机 PLC

业内消息,日前太原钢铁(集团)有限公司首次开发出超级超纯铁素体TFC22-X连接体材料并实现了批量供货,填补了我国在燃料电池领域的空白,解决了燃料电池行业关键战略材料“卡脖子”问题。

关键字: 燃料电池

伺服电机是指在伺服系统中控制机械元件运转的发动机,是一种辅助马达间接变速的设备。它主要由两部分组成:电机和控制系统。电机部分包括定子和转子,其中定子通常由硅钢片叠加而成,转子则由硅钢片叠成的铁芯和绕组组成。控制系统则包括...

关键字: 伺服电机 机械元件 发动机

为增进大家对监控系统的认识,本文将对监控系统的分类、监控系统的一些优势予以介绍。

关键字: 监控系统 指数 无线监控系统
关闭
关闭