《電子技術應用》
您所在的位置:首頁 > 電源技術 > 設計應用 > 燃料電池發動機監控系統軟件設計
燃料電池發動機監控系統軟件設計
摘要: 為提高燃料電池發動機系統的可靠性,需要對發動機的各系統狀態進行實時監控,記錄試驗數據,分析其運行特性,為發動機控制策略的不斷改進提供依據,同時對整車性能進行評估。因此,燃料電池發動機監控系統的開發具有很重要的現實意義。
Abstract:
Key words :

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)\0",(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  結束語
                   
  現場調試表明,該監控系統能夠長時間穩定工作,并且抗干擾能力較強,能方便有效地監控現場的各種實驗數據,其數據庫管理操作也具有極大的靈活性.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲裸体视频| 99视频在线观看一区三区| 国产视频在线观看一区二区三区| 鲁大师影院一区二区三区| 亚洲精品资源| 亚洲免费在线精品一区| 亚洲欧洲精品一区二区三区不卡| 欧美日韩视频专区在线播放 | 欧美精品在线观看| 欧美一区二区视频网站| 日韩午夜剧场| 亚洲第一在线综合网站| 中文一区在线| 91久久精品日日躁夜夜躁国产| 国产精品自拍网站| 欧美视频国产精品| 久久综合久久久久88| 午夜久久电影网| 亚洲色图在线视频| 亚洲欧美激情在线视频| 日韩视频中午一区| 在线观看欧美精品| 国产精品美女主播| 欧美日韩国产美女| 午夜老司机精品| 一区二区电影免费观看| 欧美在线高清视频| 亚洲天堂免费在线观看视频| 亚洲高清视频在线| 国产欧美精品日韩区二区麻豆天美 | 性欧美大战久久久久久久免费观看| 一本色道**综合亚洲精品蜜桃冫 | 一区二区三区高清| 一区二区高清在线| 亚洲欧美www| 欧美制服丝袜第一页| 久久综合色播五月| 欧美久久精品午夜青青大伊人| 欧美日韩综合不卡| 国产欧美日韩高清| 韩国av一区二区三区在线观看 | 一区二区三区精品视频在线观看| 一区二区三区国产在线| 亚洲中无吗在线| 久久九九全国免费精品观看| 久久综合五月天婷婷伊人| 欧美精品久久久久久久久久| 国产精品久久久久久久久免费桃花 | 午夜国产欧美理论在线播放| 久久精品九九| 欧美激情一区二区三区在线视频观看| 欧美日韩一区二区在线| 国产视频欧美| 亚洲精品国精品久久99热一| 亚洲素人在线| 亚洲自拍都市欧美小说| 日韩视频在线一区| 亚洲专区在线| 亚洲激情视频在线| 亚洲综合99| 久久亚洲欧美| 欧美日韩一区二区精品| 国产日韩亚洲欧美| 亚洲国内自拍| 亚洲一级在线观看| 亚洲精品1234| 欧美中文在线观看| 欧美精品18videos性欧美| 国产视频亚洲| 一本色道久久综合亚洲精品不卡 | 午夜精品福利在线观看| 亚洲另类一区二区| 久久久91精品国产一区二区三区 | 亚洲综合色网站| 麻豆成人av| 国产精品天天看| 亚洲国产专区校园欧美| 午夜精品国产更新| 一区二区三区四区五区精品视频 | 国产亚洲精品v| 亚洲国产一区二区三区高清 | 西西人体一区二区| 欧美高清一区| 国产综合香蕉五月婷在线| 亚洲免费大片| 亚洲电影免费观看高清| 午夜综合激情| 欧美日韩三级电影在线| 在线观看国产精品淫| 亚洲欧美成aⅴ人在线观看| 亚洲精品中文在线| 久久久久久噜噜噜久久久精品| 欧美日韩免费观看一区二区三区| 国产亚洲欧洲一区高清在线观看| 亚洲三级电影在线观看| 久久成人精品无人区| 亚洲综合日韩| 欧美精品久久一区二区| 影音先锋亚洲电影| 欧美亚洲尤物久久| 午夜日韩在线观看| 欧美日韩在线播放三区| 最新中文字幕亚洲| 亚洲欧洲久久| 蜜臀久久99精品久久久久久9| 国产精品入口麻豆原神| 日韩午夜在线播放| 夜夜嗨av一区二区三区网站四季av | 久久美女性网| 国产欧美亚洲精品| 亚洲深夜激情| 亚洲影视在线| 国产精品久99| 亚洲午夜小视频| 亚洲午夜精品久久| 欧美日韩不卡视频| 亚洲乱码一区二区| 99视频热这里只有精品免费| 欧美激情麻豆| 亚洲全部视频| 亚洲精品一区二| 欧美激情精品久久久久久黑人 | 欧美日韩精品久久久| 亚洲国产精品一区二区尤物区| 欧美自拍丝袜亚洲| 久久精品国产免费观看| 国产视频一区在线| 欧美亚洲在线观看| 久久久久久久久久久久久女国产乱| 国产伦精品一区二区三区在线观看| 亚洲无线视频| 亚洲欧美卡通另类91av| 久久国产精品网站| 国产一区二区三区在线免费观看| 亚洲永久免费视频| 久久riav二区三区| 国产日韩精品在线播放| 久久大综合网| 美女91精品| 亚洲毛片网站| 亚洲一区二区三区四区中文| 国产精品高潮呻吟| 亚洲欧美日韩国产一区二区三区| 午夜精品久久久久久| 国产亚洲激情在线| 久久精品欧美| 欧美激情一区二区三区在线视频 | 国产亚洲欧洲一区高清在线观看 | 狂野欧美激情性xxxx欧美| 亚洲第一精品久久忘忧草社区| 亚洲日本中文字幕免费在线不卡| 女人色偷偷aa久久天堂| 亚洲精品日韩在线| 亚洲在线视频网站| 国产一区二区三区高清| 亚洲高清自拍| 欧美精品九九| 亚洲一区视频在线观看视频| 先锋影音国产精品| 激情综合在线| 亚洲欧美日韩精品久久亚洲区| 久久九九免费视频| 亚洲黄色小视频| 国产精品99久久99久久久二8| 国产精品一二一区| 亚洲国产成人久久综合一区| 欧美剧在线观看| 亚洲综合成人在线| 欧美 日韩 国产精品免费观看| 日韩一区二区精品| 久久国产乱子精品免费女| 亚洲国产成人一区| 亚洲欧美清纯在线制服| 激情成人在线视频| 亚洲一区国产视频| 国产专区精品视频| aa级大片欧美| 国产情侣一区| 日韩香蕉视频| 国产欧美 在线欧美| 亚洲精品久久久一区二区三区| 欧美三区视频| 亚洲第一福利社区| 国产精品多人| 亚洲国产日韩综合一区| 欧美婷婷久久| 亚洲国产欧美在线人成| 国产精品免费一区二区三区观看| 久久成人国产| 国产精品麻豆va在线播放| 亚洲日本激情| 国产欧美视频一区二区三区| 99视频热这里只有精品免费| 国产亚洲一本大道中文在线| av不卡免费看| 狠狠88综合久久久久综合网| 亚洲一区3d动漫同人无遮挡| 在线免费观看视频一区| 欧美在线一级视频| 一本久久a久久精品亚洲|