<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è) > 嵌入式系統 > 設計應用 > 基于VB6.0的燃料電池單片電壓巡檢系統的設計

基于VB6.0的燃料電池單片電壓巡檢系統的設計

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

關(guān)鍵詞:RS-485PIC16F873

1 引言
是21世紀最有望取代目前汽車(chē)燃油內燃機的新動(dòng)力體系之一,它是一種將H2和O2的化學(xué)能通過(guò)電極反應直接轉換成電能的裝置。一個(gè)堆是將多片電池片串聯(lián)起來(lái)構成的,整個(gè)電堆的性能和電池有很大的關(guān)系。因此在燃料電池的研制中有必要采集不同條件下電池的值,通過(guò)分析找出H2和O2的反應環(huán)境和單片電池電壓之間的關(guān)系。本文所要介紹的是作者單位正在進(jìn)行的25kW燃料電池轎車(chē)項目中,燃料電池單片電壓測試、分析。本的上位機軟件采用編程語(yǔ)言進(jìn)行開(kāi)發(fā),該語(yǔ)言功能強大,具有面向對象和可視化編程,界面友好,特別適于在 Windows環(huán)境下圖形界面和用戶(hù)程序的編制,數據采集由多個(gè)以8位PIC單片機為核心的數據采集模塊來(lái)完成。

2 組成和工作原理
本系統由上位機、主控單片機和若干個(gè)數據采集模塊所組成,如圖1所示。上位機為一臺工業(yè)控制計算機,其主要功能是通過(guò)RS-232串口實(shí)現和主控單片機的通信,接收采集數據和發(fā)送控制命令;實(shí)時(shí)顯示單片電池的電壓值和繪制同一時(shí)刻單片電壓變化趨勢曲線(xiàn);將測量數據分類(lèi)保存到數據庫,并具有對測量結果進(jìn)行多種數學(xué)分析的功能。

主控單片接收來(lái)自上位機的控制命令

圖1 系統組成圖
實(shí)現對各個(gè)數據模塊的控制,并將各個(gè)模塊發(fā)來(lái)的數據通過(guò)RS-232串口轉發(fā)給上位機。主控單片機和各個(gè)數據采集模塊間采用RS-485總線(xiàn)進(jìn)行通信,并設成主從結構,主控單片機設為主機,各個(gè)數據采集模塊為從機。主控單片機在收到上位機的檢測開(kāi)始命令后,按照輪循的方式依次給各個(gè)數據采集模塊發(fā)采集命令,在每發(fā)出一個(gè)采集命令后就等待接收該采集模塊的采集數據,如果在等待時(shí)間內收到采集模塊發(fā)回的采集數據,就將數據打包轉發(fā)給上位機;如果等待超時(shí)仍然沒(méi)有接收到數據就直接向下一個(gè)采集模塊發(fā)采集命令,如此反復循環(huán)下去。

各數據采集模塊的軟硬件構成是完全一樣的,并通過(guò)RS-485總線(xiàn)實(shí)現和主控單片機的通信。每個(gè)數據采集模塊在收到來(lái)自主控單片機的測試命令后開(kāi)始對其負責測試的16片電池電壓值進(jìn)行采樣,然后將采樣所得的16片電池電壓值打包一起發(fā)送給主控單片機。每一個(gè)數據采集模塊能采集16片單片電池的電壓,可根據電池片的總數相應地增減數據采集模塊的數量。

3 數據采集模塊
在本系統中單片電池電壓值的采集是由各個(gè)數據模塊來(lái)完成。數據采集模塊主要是以PIC16F873單片機為核心加一些外圍電路構成如圖2所示。PIC16F873單片機是Microchip公司生產(chǎn)的一款精簡(jiǎn)指令集(RISC),哈佛雙總線(xiàn)和兩級指令系統流水線(xiàn)結構的高性?xún)r(jià)比的8位嵌入式控制器,具有集成度高、速度快、工作電壓低、功耗低、I/O直接驅動(dòng)、指令簡(jiǎn)單易學(xué)易用等特點(diǎn)。其內置8k14 Flash存儲器,1個(gè)10位四輸入通道A/D轉換器,和一個(gè)UART。并可在線(xiàn)串行編程(ICSP),開(kāi)發(fā)和使用都很方便,所需外圍擴展器件少。在數據采集模塊中多路模擬信號的輸入是通過(guò)16路模擬開(kāi)關(guān)CD4067來(lái)選擇的,單片機通過(guò)I/O口RC1~RC4來(lái)選擇具體那一路輸入。由于單片電池電壓一般比較低在0.5V~1.2V間,這個(gè)電壓在CD4067的準許范圍內,所以在CD4067的輸入口沒(méi)有加隔離電路。由于數據采集模塊和主控單片機之間是通過(guò)485總線(xiàn)通信的,因此單片機的串口輸入/輸出要經(jīng)過(guò)MAX485進(jìn)行電平轉換后才能接到485總線(xiàn)上。采樣速率可由主控單片機控制。由于篇幅有限下位機軟件在此沒(méi)有提及。

圖2 數據采集模塊原理圖

4 上位機通信程序設計
應用VB6.0內嵌MSComm控件只要通過(guò)簡(jiǎn)單的設置與編程,就能實(shí)現串行數據的發(fā)送與接收。MSComm控件提供了一系列封裝好的標準串行通信的屬性和方法,使用它可以建立應用程序和串口的連接,完成串行數據的發(fā)送與接收。其初始化屬性設置如下:
If MSComm1.PortOpen=True Then
MSComm1.PortOpen=False
End If
MSComm1.CommPort=CommNum ‘串口號
'9600波特,無(wú)奇偶校驗,8 位數據,一個(gè)停止位。
MSComm1.Settings="9600,N,8,1"
MSComm1.InputLen=0
MSComm1.RThreshold=20 ‘接收數據門(mén)限
MSComm1.SThreshold=0 ‘發(fā)送完不成生事件
MSComm1.InputMode=comInputModeBinary
‘通信為二進(jìn)制模式
MSComm1.PortOpen=True ‘打開(kāi)串口
MSComm1.InBufferCount=0 ‘清空接收緩沖區
MSComm1.OutBufferCount=0 ‘清空發(fā)送緩沖區
下位機向上位機發(fā)送的數據幀格式如圖3所示:

圖3 接收數據幀式

每一幀數據由20個(gè)字節組成,依次是:一個(gè)字節的幀起始標志為FF;一個(gè)字節的數據組號;16個(gè)字節的數據;一個(gè)字節的校驗和,校驗和是組號和16個(gè)字節的數據間相互異或的結果;最后一個(gè)字節為幀結束標志為FD。16個(gè)字節的數據中每個(gè)字節表示一片電池的電壓值,為0~255的一個(gè)整數,將該數除以100及得到電壓實(shí)際值,一般單片電池電壓在0.5V~1.2V間。用MSComm進(jìn)行串行通信接收數據時(shí)可采用兩種方式實(shí)現,一種是查詢(xún)方式,另一種是事件觸發(fā)方式。在本系統中選擇的是事件觸發(fā)方式,每當接收緩沖區中數據字節數到達20個(gè)時(shí)就觸發(fā)一個(gè)接收事件。接收通信程序如下:
Private Sub MSComm1_OnComm()
Dim InputData() As Byte
Dim strSum As Byte
Dim i As Integer
Dim Volvalue(0 To 18) As Single
With MSComm1
Select Case .CommEvent'判斷通信事件
comEvReceive: '收到20字節的數據
InputData = .Input‘讀接收緩沖區
If InputData(0) = 253 And InputData(18) = 237 Then ‘判斷收到的幀格式正確否
For i = 1 To 17 Step 1
Volvalue(i) = InputData(i)
Next I
strSum = InputData(1)
For i = 2 To 17‘計算校驗和
strSum = InputData(i) Xor strSum
Next I ‘將接受數據校驗和與發(fā)送校驗和異或
If strSum = "0" Then‘如果接收數據正確
Volvalue(N) = InputData(i) / 100
‘換算得到電壓實(shí)際值
…………數據處理
Case Else
MSComm1.InBufferCount = 0 ‘清空接收緩沖區
MsgBox "串口通信錯誤"
Exit Sub
End Sub

在此要注意的一點(diǎn)是從緩沖區讀數據時(shí),數組InputData()一定要定義成Byte類(lèi)型不能為Integer或Single,因為接收模式設置為二進(jìn)制。上位機發(fā)送的指令較少也很簡(jiǎn)單在此就沒(méi)有仔細分析。

5 結束語(yǔ)
燃料電池作為21世紀前景比較看好的一種新的、潔凈型能源,有關(guān)它的各項技術(shù)的研究都有助于推動(dòng)它向實(shí)用階段進(jìn)一步發(fā)展。本文在單片電壓的檢測和分析系統的設計上作了一些工作。雖然是面向燃料電池的,但也可借鑒到其它類(lèi)似的多點(diǎn)檢測和控制系統的設計當中去。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品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>