<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 燃料電池發(fā)動(dòng)機監控系統軟件設計

燃料電池發(fā)動(dòng)機監控系統軟件設計

作者: 時(shí)間:2011-11-17 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

本文引用地址:http://dyxdggzs.com/article/178392.htm


  車(chē)用具有效率高、啟動(dòng)快、環(huán)保性好、響應速度快等優(yōu)點(diǎn),是取代汽車(chē)內燃機的理想解決方案。汽車(chē)的最大優(yōu)點(diǎn)是清潔、無(wú)污染,在全球環(huán)境保護問(wèn)題日益突出的今天,汽車(chē)作為環(huán)保型汽車(chē)越來(lái)越受到人們的重視。為提高燃料電池系統的可靠性,需要對的各系統狀態(tài)進(jìn)行實(shí)時(shí)監控,記錄試驗數據,分析其運行特性,為控制策略的不斷改進(jìn)提供依據,同時(shí)對整車(chē)性能進(jìn)行評估。因此,燃料電池發(fā)動(dòng)機的開(kāi)發(fā)具有很重要的現實(shí)意義。

2 系統概述

  2.1 系統結構簡(jiǎn)介

本系統由和硬件兩部分組成,如圖1所示。它以高性能的dsp為核心,開(kāi)發(fā)出控制燃料電池發(fā)動(dòng)機的嵌入式控制器。不僅能完成對燃料電池發(fā)動(dòng)機的控制,并對整車(chē)較為嚴重的電磁干擾做了相應的處理,增強了控制系統的抗干擾性和穩定性;與其配套的上位機監控是一個(gè)擁有良好人機界面的試驗數據監控和記錄中心。系統中dsp的任務(wù)主要是完成數據的采集與處理,算法的實(shí)現與驅動(dòng),并通過(guò)串口與上位機通信,將采集到的數據傳送給上位機,并接收上位機發(fā)來(lái)的控制命令。而系統的上位機對燃料電池發(fā)動(dòng)機工作狀態(tài)實(shí)現實(shí)時(shí)監控,完成數據的轉換、存儲及查詢(xún)功能。上位機是在windows2000/xp操作系統下利用vc++ 6.0開(kāi)發(fā)完成的,由于篇幅所限,本文重點(diǎn)介紹上位機監控軟件的與實(shí)現。

圖1 燃料電池發(fā)動(dòng)機控制器結構圖

  2.2 監控軟件的總體

本系統需要監控一系列的參數,記錄歷史數據及顯示實(shí)時(shí)曲線(xiàn)圖,并實(shí)時(shí)地顯示報警事件,提供診斷信息,使監控人員可以及時(shí)了解異常情況,查詢(xún)故障內容??刂破鞯闹饕刂茖ο笥袣錃夤┙o、空氣供給、冷卻水循環(huán)、電堆功率等,監控軟件對其中關(guān)鍵參數進(jìn)行實(shí)時(shí)顯示、報警顯示及數據存儲等。根據系統分析確定的目標和功能,采用模塊化方法,進(jìn)行了系統的界面結構設計。本系統由多個(gè)模塊組成,每一個(gè)模塊完成一項獨立的功能,模塊與模塊之間通過(guò)數據相關(guān)聯(lián)。其關(guān)系如圖2所示。

圖2 結構圖



3 主要功能模塊設計

  3.1 信息顯示模塊

  完成對系統主要設備運行狀態(tài)的實(shí)時(shí)監控,包括用不同的顏色來(lái)表示設備的啟、停狀態(tài),用編輯框實(shí)時(shí)顯示主要的運行參數,如電壓、電流、壓力、溫度等,并設置報警信號。

  同時(shí),由于控件較多,各部分功能不同,引入屬性頁(yè)使不同用途控件分頁(yè)表示,達到屏幕美觀(guān)且操作方便的效果。燃料電池車(chē)載的主控畫(huà)面如圖3所示。

圖3 燃料電池車(chē)載監控系統主界面

  3.2 串行通信模塊

完成數據通信并對所收到的數據進(jìn)行處理、分析、存盤(pán)。把接收到的數據進(jìn)行范圍轉換后存放到事先定義好的結構體內,并檢查每個(gè)參數值是否超限,若超限則置報警標志并報警;該軟件正常使用時(shí)處于長(cháng)期連續運行狀態(tài),通過(guò)串口接收數據的工作一直進(jìn)行。

  (1)通信協(xié)議。在串行通信中,為了實(shí)現特定的用戶(hù)功能,必須在軟件中制定通信協(xié)議。在開(kāi)發(fā)燃料電池串行數據通信程序的過(guò)程中,通過(guò)長(cháng)期的調試和不斷的總結,最終得到一套完整而可靠的通信協(xié)議。該協(xié)議一共分為3層,分別為物理層和數據鏈接層。

物理層。規定了電子電氣方面的特性及原始位流在物理鏈路上的傳輸,提供了原始位流傳輸信道;串行通信口:rs-232串口,硬件接口:dsp輸出的ttl電平經(jīng)專(zhuān)用集成模塊轉換成rs-232信號,波特率:19200,字符格式:8位數據位,2位停止位。

數據鏈接層。用幀作為信息傳輸單元,使用了兩種幀:控制幀與數據幀。數據幀包括幀頭和負載數據,幀頭占6個(gè)字節,如表1所示,其中count表示負載數據長(cháng)度,check1表示第二、三字節的校驗和??刂茙挥袔^,長(cháng)為6字節,如表2所示。為保證可靠的傳輸,在傳輸開(kāi)始前,通過(guò)握手建立連接,采用發(fā)送/應答/重連/失敗方式。

  cmd表示控制信號。

  check2表示第二、三字節的校驗和,當cmd=check2=0時(shí),表示傳輸結束。

  (2) 應用層。實(shí)現各監控參數的完整性傳輸,包括監控數據與校驗和。

  每個(gè)監控參數用兩個(gè)字節表示,低位先傳。

  校驗和占兩個(gè)字節,對監控數據按位異或校驗。

  當通信失敗或校驗錯時(shí),往下位機發(fā)出報警信息。



  (3)通信軟件設計。vc中進(jìn)行串口通信通常有三種方法。一是利用microsoft公司提供的activex控件microsoft communications control。這種方法較簡(jiǎn)單,只需要對串口進(jìn)行簡(jiǎn)單配置,但在數據量較大且高速傳遞時(shí)程序易掛起。二是直接采用windows api通信函數,同時(shí)利用多線(xiàn)程技術(shù)來(lái)提高程序的效率。這種方法通信過(guò)程穩定,適用于要求較高的通信環(huán)境,但使用較復雜。第三種方法是利用第三方提供或自己編寫(xiě)的通信類(lèi),只要理解這種類(lèi)的幾個(gè)成員函數就能方便的使用,且通信穩定。本程序采用第三種方法,使用了由remon spekreijse提供的多線(xiàn)程串口類(lèi)cserialport,并在此基礎上進(jìn)行了一些改進(jìn),使之能用于本程序。

  由于篇幅所限,本文只列出部分關(guān)鍵代碼。

  (1) 初始化程序段

//初始化com1
// m_serialport是cserialport類(lèi)的對象,//在頭文件中定義

if(m_serialport.initport(this,1,19200,`n`,8,2,ev_rxflag|ev_rxchar,1024))
{
m_serialport.startmonitoring();
//啟動(dòng)串口監視線(xiàn)程 m_bserialportopened=true;
// m_bserialportopened為串口打開(kāi)標志
}

  (2) 串口通訊程序段

  串口需要對下位機進(jìn)行控制以及準確采集現場(chǎng)上傳的實(shí)時(shí)參數,如溫度、電流、電壓、水位等,以便分析和改進(jìn)整車(chē)性能,是通信程序設計的重點(diǎn)。其工作流程如圖4所示.

圖4 上位機收發(fā)數據流程圖

  由于原類(lèi)只能發(fā)送字符(ascii文本),不能處理二進(jìn)制發(fā)送,而本系統需要發(fā)送二進(jìn)制數據,所以需要對原類(lèi)進(jìn)行一些改進(jìn),添加一個(gè)發(fā)送函數:

void cserialport::writetoport(byte *bt, int n)
{
assert(m_hcomm != 0);
memset(m_szwritebuffer,0,sizeof(m_szwritebuffer));
memcpy(m_szwritebuffer, bt, n);
//將待發(fā)送數據復制到發(fā)送緩沖區
m_nwritesize=n;
setevent(m_hwriteevent); //觸發(fā)寫(xiě)事件
}
則發(fā)送代碼為:
m_serialport.writetoport(sendon,4);
// sendon為字節型發(fā)送數據
串口接收簡(jiǎn)單代碼舉例如下:
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為重發(fā)消息
}
else
{
byte dol=*(char*)(buf+2);
//接受處理數據
byte doh=*(char*)(buf+3);
………
}
connectdb();//連接數據庫
………



  3.3 數據管理模塊

  采集來(lái)的數據主要存放在數據庫中,方便用戶(hù)查詢(xún)各歷史數據、顯示數據曲線(xiàn)和打印功能。vc語(yǔ)言提供了多種操作數據庫的方法,使用odbc(開(kāi)放數據庫連接)訪(fǎng)問(wèn)數據庫就是一種很常用的操作方法。另外,通過(guò)dbgrid control(網(wǎng)格控件)和microsoft remotedata control的協(xié)同工作就能提供一個(gè)訪(fǎng)問(wèn)數據庫的界面,用來(lái)進(jìn)行數據庫數據的瀏覽,添加,刪除,修改等操作。整個(gè)過(guò)程實(shí)現和操作起來(lái)非常簡(jiǎn)單方便。具體連接步驟如下:

  (1) 建立access數據庫。

  (2) 在工程中加入datagrid和remotedata control控件。remote-data控件在數據庫和datagrid控件中起著(zhù)橋梁作用,完成同數據庫的綁定。然后對兩控件屬性進(jìn)行設置。

   (3) 由于odbc數據源需要手動(dòng)在控制面板中添加注冊,不方便程序的移植,于是程序通過(guò)代碼動(dòng)態(tài)配置數據源。

  部分程序如下:

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為數據源名稱(chēng),//lpszfile為數據庫名稱(chēng),spath為數據庫所//在路徑
if(false==sqlconfigdatasou -rce(null,odbc_add_dsn,microsoft
access driver (*.mdb)国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放

<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>