当前位置:首页 > 电源 > 数字电源
[导读]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  结束语
                   
  现场调试表明,该监控系统能够长时间稳定工作,并且抗干扰能力较强,能方便有效地监控现场的各种实验数据,其数据库管理操作也具有极大的灵活性.

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

慕尼黑2025年9月11日 /美通社/ -- 当地时间9月9日,赛力斯动力在德国慕尼黑国际车展期间举办技术发布与交流会,正式在海外市场推出全新一代赛力斯超级增程、高效发动机和新一代分布式电驱动系统,同时与来自全球的汽车产...

关键字: 慕尼黑 分布式 发动机 新能源汽车

9月4日消息,中国民营商业火箭已经进入了飞速发展阶段,各项成过不断涌现!

关键字: 发动机

轨/姿控卫星发动机试验需要进行多种不同工况下的点火试验来验证发动机的性能 , 每次点火结束后都要对点火 数据进行处理分析 ,用 以计算下一次点火的工况 。 由于发动机点火对于总体时长有严格要求 ,故提出一种试验数据实时处...

关键字: 发动机 工况计算 实时处理 Pacific6000数据采集系统

【2025年7月22日, 德国慕尼黑讯】凭借在磁位置传感器领域的深厚积累,全球功率系统和物联网领域的半导体领导者英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)推出了第三代XENSIV™ 3D磁性...

关键字: 3D磁传感器 SPI总线 发动机

在现代汽车的复杂系统中,传感器宛如汽车的 “感知神经”,悄无声息却至关重要。从发动机的高效运转,到底盘的稳定操控,再到车身的舒适体验以及智能驾驶的安全保障,传感器无处不在,发挥着不可替代的作用。

关键字: 传感器 智能驾驶 发动机

上海2025年4月21日 /美通社/ -- 智能动力管理公司伊顿今日宣布,将于 2025 上海车展上重点展示其最新的商用车发动机技术,该技术旨在提升中重型卡车性能和效率,并推动行业的可持续发展。 伊顿1.5S高功率制动...

关键字: 发动机 制动系统 温度 驱动技术

在全球倡导绿色出行与可持续发展的大背景下,新型燃料电池汽车凭借其高效、清洁的特点,逐渐成为汽车产业未来发展的重要方向。然而,由于氢具有易燃、易爆、扩散性强等特性,燃料电池汽车氢系统的安全问题备受关注。传感技术作为保障氢系...

关键字: 燃料电池 汽车 氢系统

在全球倡导绿色出行与可持续发展的大背景下,新型燃料电池汽车凭借其高效、清洁的特点,逐渐成为汽车产业未来发展的重要方向。然而,由于氢具有易燃、易爆、扩散性强等特性,燃料电池汽车氢系统的安全问题备受关注。传感技术作为保障氢系...

关键字: 燃料电池 汽车 氢系统

随着全球对环境保护和可持续发展的日益重视,汽车行业正经历着前所未有的变革。在这场变革中,燃料电池作为一种高效、清洁的能源技术,正逐渐成为汽车能源领域的焦点。本文将从多个维度探讨燃料电池为何可能是汽车能源的终极解决方案。

关键字: 汽车 燃料电池 汽车能源

在现代汽车技术高速发展的背景下,汽车电子燃油泵作为发动机燃油供给系统的核心部件,其性能与稳定性直接影响到汽车的动力性、经济性和排放性能。为了确保汽车电子燃油泵的正常工作,及时准确地监测和分析其信号变得尤为重要。而汽修示波...

关键字: 汽车电子 示波器 发动机
关闭