亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于VB的燃料電池發動機監控系統設計

基于VB的燃料電池發動機監控系統設計

時間:2008-10-20 10:38:00來源:ronggang

導語:?應用Visual Basic6.0開發燃料電池發動機車載監控系統軟件,包括動態主控界面設計、通訊程序設計、控制程序設計和數據存儲程序設計
摘 要: 應用Visual Basic6.0開發燃料電池發動機車載監控系統軟件,包括動態主控界面設計、通訊程序設計、控制程序設計和數據存儲程序設計。描述了整個監控畫面的設計原理和方法,詳細地介紹了通信協議和上位機監控程序的工作流程,并補充說明了VB中PID控制算法的實現,用以調整電堆溫度、壓力、水位等各種監控參數;最后介紹了歷史數據存儲程序的操作方法。實踐證明,該系統圖形界面友好,數據采集準確可靠,操作簡單,安全穩定。 關鍵詞: VB;燃料電池發動機;串行數據通信;PID控制 前言   為了保護地球環境,以燃料電池代替燃油發動機是未來汽車發展的趨勢。燃料電池汽車與傳統汽車的區別主要在于由燃料電池動力系統替換了傳統的內燃機動力系統。顯然,其發動機系統的研究成了燃料電池電動汽車研發的關鍵。因此,在研發過程中,需要對發動機的各系統進行實時監控,記錄各種相關試驗數據,分析其運行特性,為發動機控制策略的不斷改進提供依據,同時對整車性能進行評估。因此,燃料電池發動機車載控制系統的開發具有很重要的現實意義。   VisualBasic6.0提供了豐富的控件,可以方便、快捷地開發燃料電池發動機車載系統的整個軟件程序,達到對現場各個參數有效監控的目的。同時,VB中PID控制算法也可以對燃料電池水量、溫度、壓力等各個監控量進行實時整定。 1 燃料電池車載監控系統的軟件設計   Visual Basic(簡稱VB),是微軟公司推出的強有力的系列開發軟件之一。不但提供了良好的界面設計能力,而且在微機串口通信方面也有很強的功能,它提供的串行通信控件MSComm32.OCX,全面提供了使用RS-232進行數據通信的所有協議,我們可以使用不同的工作方式來處理和解決燃料電池車載監控系統通信軟件設計的所有問題。   1.1 主控界面設計   燃料電池主控界面的設計是整個上位機軟件設計的重點之一,它直接影響發動機系統監控效率的高低。因此,清晰、人性化的界面設計是整個軟件開發的重要前提。   以VB6.0為軟件平臺開發的燃料電池車載監控系統的主控畫面如圖1所示。 通過該主界面可以完成對系統主要設備運行狀態的實時監控,包括用不同的顏色來表示設備的啟、停,用文本框顯示系統主要的運行參數,如電壓、電流、壓力等,利用CommandButton控件的Click事件完成布爾變量的發送,從而實現對開關和閥門的開啟、關閉控制。同時,添加各種控件,導入圖片,并通過設置其不同屬性,達到了美觀、實用的效果。 [align=center] 圖1 燃料電池車載監控系統主畫面[/align]   1.2 通信程序設計   燃料電池發動機車載監控系統的通信包括上位機和下位機的通信。主要是PC機和下位機硬件之間通過串口線完成數據的傳輸,以期對工業現場采集的信息進行適時準確地監控。   1.2.1 通信協議   在串行通信的實現過程中,底層為通信工作以及操作系統和計算機硬件提供了有力的支持,但是為了實現特定的用戶功能,必須在軟件中制定基于應用的通信協議。在開發燃料電池串行數據通信程序的過程中,通過長期的調試和不斷的總結,最終得到一套完整而可靠的通信協議.該協議一共分為3層,分別為:   1.物理層。規定了電子電氣方面的特性及原始位流在物理鏈路上的傳輸,提供了原始位流傳輸信道;   串行通信口:RS-232串口   硬件接口:DSP輸出的TTL電平經專用集成塊轉換成RS-232信號   波特率:9600   字符格式:8位數據位,1位停止位   差錯校驗:無奇偶校驗   2.數據鏈接層。定義了數據幀作為信息傳輸單元,使用差錯校驗和幀應答等技術,屏蔽物理路上的噪聲,使傳輸通道變成一條可靠的信道;數據鏈接層為數據的準確通信提供了充足的信息。表1描述了設備數據包傳輸的結構。   表1 數據包傳輸結構
  LENGTH——數據包字節總數;   TYPE——命令類型。分為系統型(0X00)、具體型(0X11,0X13,0X15,0X16,0X17,0X18,0X1A,0X1B)和多協議型(0X14);   CMD——命令的ID號。決定命令類型為命令信息還是應答信息;   DATA——由CMD決定數據字節長度;   CHKSUM——校驗和碼。循環冗余校驗是一種常用的校驗碼。   3.應用層。負責建立通信伙伴之間的連接關系,實現操作同步,報警及數據完整性等管理任務。對用戶及用戶程序提供以下功能:  ?。?)選擇控制多臺下位機定時,即時或適時跟蹤采樣現場信息,將數據送數據庫保存,數據庫存儲一定時段的數據,程序具有對數據二次處理,繪制曲線圖及報警等功能;  ?。?)設置采樣參數;  ?。?)當通信線路中斷或通信失敗時,往下位機發出報警信息;   1.2.2 上位機工作流程   燃料電池發動機車載監控系統的上位機軟件分為手動程序和自動程序,自動程序是通信程序設計的最終版,一旦進入開機工作狀態,就能夠自動完成對下位機的監控功能,包括發送和接收信息。(‘*******為注釋部分)  ?。?) 發送信息程序段。其工作流程如下圖2。簡單代碼舉例如下:   Private Sub Cmdstop_Click() ‘***********發送開機命令***********   byteout(0) = &HAA   byteout(1) = &H55   MSComm1.Output = byteout   End Sub  ?。?)接收信息程序段。接收部分需要準確采集現場上傳的適時參數,如溫度、電流、電壓、水位等,以便分析和改進整車性能,是通信程序設計的重點,通過VB中MSComm控件的OnComm事件來完成。其工作流程如下圖3,簡單代碼舉例如下:   Private Sub MSComm1_OnComm() ‘***數據接收   Dim buf() As Variant   Dim buf1(1 To 2) As Byte   buf = MSComm1.Input ‘***通過MSComm的Iutput屬性接收數據   buf1(1) = buf(0)   buf1(2) = buf(1)   Text1.Text = buf1(2) * 256 + buf1(1)   End Sub [align=center] 圖2 上位機發送信息流程圖 圖3 上位機接收信息流程圖[/align] 2 控制程序設計   PID控制是比例,積分,微分控制的縮寫。它具有原理簡單、使用方便、適用性廣和魯棒性強等特點,在工業控制領域具有強大的生命力。改變P可提高響應速度,減小靜態誤差,但太大會增大超調量和穩定時間;I與P的作用基本相似,但要使靜態誤差為0,必須使用積分;D與P,I的作用相反,主要是為了減小超調,減小穩定時間。在仿真和實驗中,如果被控對象的結構和參數不能完全把握,或者得不到精確的數學模型,而且其它常規的控制方法難以實現,這時,系統控制器的結構和參數必須依靠經驗和現場調試來確定,采用PID控制技術最為方便。   現階段,我們對燃料電池電堆的模型不是十分了解,還不能通過有效的測試手段來獲得系統的參數,因此,采用增量PID控制算法比較適合。在VB中,增量PID控制算法是通過自定義Function函數及調用該函數來實現的。   自定義Function函數:   Public Function PID(ByVal P As Single, I As Single, D As Single, PIDset As Single, PIDreturn As Single, DeltaPIDpre_1 As Single, DeltaPIDpre_2 As Single) As Single ‘********增量PID計算自定義函數**********   ‘**P——PID比例系數;I——PID積分系數;D——PID微分系數   ‘**PIDset——PID設定值   ‘**PIDreturn——PID反饋值   ‘**DeltaPIDpre_1——PID偏差前值   ‘**DeltaPIDpre_2——PID偏差前前值   Dim PIDout As Single ‘**PID輸出值**   Dim DeltaPID As Single ‘**PID偏差值,為中間變量**   DeltaPID = PIDset - PIDreturn   PIDout = P * (DeltaPID - DeltaPIDpre_1) + I * DeltaPID + D * (DeltaPID - 2 * DeltaPIDpre_1 + DeltaPIDpre_2)   DeltaPIDpre_2 = DeltaPIDpre_1   DeltaPIDpre_1 = DeltaPID   End Function   要對輸入的控制量進行PID調節,只需簡單的調用上述函數即可。   例如,在對電堆的輸入溫度進行控制時,調用上述函數過程如下:   Private Sub MSComm1_OnComm() ‘*******數據接收***********   Dim Mid As Single   Mid = Format(Round((buf1(5) * 256 + buf1(4) - 4095 / 5) * 125 / 4095, 2), "0.0") ‘*****輸入電堆溫度*****   Text1.Text = Mid + PID(outTP, outTI, outTD, outTPIDset, outTPIDreturn, outTDeltaPIDpre_1, outTDeltaPIDpre_2)   ‘**********outTP——溫度P, outTI——溫度I, outTD——溫度D, outTPIDset——溫度設定, outTPIDreturn——溫度, outTDeltaPIDpre_1——溫度前值, outTDeltaPIDpre_2——溫度后值   End Sub 3 數據存儲程序設計   VB語言提供了多種操縱數據庫的方法,使用Ado Data控件訪問數據庫就是一種很常用的操縱方法。通過設置和操縱其屬性就可以實現與數據庫的連接,通過綁定數據感知控件就能提供一個訪問數據庫的界面,用來對數據庫數據的瀏覽,添加,刪除,修改等操作。整個過程實現和操作起來非常簡單方便。具體連接步驟如下:  ?。?)建立Access數據庫   (2)引用Ado Data控件和數據感知控件DataGrid  ?。?)分別設置Ado Data控件的ConnectionString、CommandType、RecordSource三個重要的屬性以及DataGrid控件的DataSource屬性   在設置Ado Data控件的ConnectionString屬性的最后,將出現“測試連接”的按扭,通過單擊此按扭可以清楚的了解到數據庫連接成功與否,非常簡單方便。具體程序的編寫格式為:   數據庫畫面名稱.Adodc1.Recordset.AddNew   數據庫畫面名稱.Adodc1.Recordset.Fields("日期") = Date   數據庫畫面名稱.Adodc1.Recordset.Fields("時間") = Format(Now, "h:mm:ss")   數據庫畫面名稱.Adodc1.Recordset.Fields("參數名稱") =接收到的參量數據   數據庫畫面名稱.Adodc1.Recordset.Update   數據庫的設計需要特別注意的是:   1.在Access數據庫定義的各個參數的名稱、類型、出現的順序以及格式都必須與代碼中的“參數名稱“完全一致。   2.設置Ado Data控件的ConnectionString屬性的時候,必須選擇正確的數據庫所在路徑。 4 結束語   現場調試表明,該車載監控系統能夠長時間穩定工作,并且抗干擾能力較強,能方便有效地監控現場的各種實驗數據。其數據庫管理操作也具有極大的靈活性和控制力。 本文作者創新點:   1. VB中PID控制算法的實現,以調整電堆溫度、壓力、水位等各種監控參數;   2. 基于VB的串口通信技術在燃料電池車載監控系統中的應用。 參考文獻   【1】 冀常鵬,包劍 基于CANBUS的汽車發動機控制器研究 技術 2005   【2】 王文東,陳實,吳鋒 溫度、壓力和濕度對質子交換膜燃料電池性能的影響 能源研究與信息 Vol.19 No.1 2003   【3】 張永宏,胡德金 基于Visual Basic的串行通信技術在自動化監控系統中的應用 組合機床與自動化加工技術 2003年第10期   【4】 夏臨閩,胡仁杰 串行通信中數據正確性的保證 電子工程師2000年第11期   【5】 宋娟,羅志平,全書海 基于PID算法的燃料電池實驗室組態王監控系統 微計算機信息 2006年第22卷第1—1期第28頁

標簽:

點贊

分享到:

上一篇:鍋爐房遠程監控系統

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.siyutn.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 平定县| 黄梅县| 盘山县| 德庆县| 海门市| 定陶县| 三江| 濉溪县| 榆社县| 忻州市| 色达县| 平果县| 滁州市| 喜德县| 河池市| 遂平县| 仁怀市| 新宾| 盐津县| 涿鹿县| 河北区| 淮阳县| 康乐县| 丹棱县| 德清县| 定州市| 奇台县| 南木林县| 东海县| 古蔺县| 周宁县| 庄浪县| 朝阳市| 岳池县| 昂仁县| 雅安市| 巴林右旗| 资溪县| 南丰县| 夏邑县| 房山区|