<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于VB6.0的燃料電池單片電壓巡檢系統(tǒng)的設(shè)計

          基于VB6.0的燃料電池單片電壓巡檢系統(tǒng)的設(shè)計

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

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

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

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

          主控單片接收來自上位機的控制命令

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

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

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

          圖2 數(shù)據(jù)采集模塊原理圖

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

          圖3 接收數(shù)據(jù)幀式

          每一幀數(shù)據(jù)由20個字節(jié)組成,依次是:一個字節(jié)的幀起始標(biāo)志為FF;一個字節(jié)的數(shù)據(jù)組號;16個字節(jié)的數(shù)據(jù);一個字節(jié)的校驗和,校驗和是組號和16個字節(jié)的數(shù)據(jù)間相互異或的結(jié)果;最后一個字節(jié)為幀結(jié)束標(biāo)志為FD。16個字節(jié)的數(shù)據(jù)中每個字節(jié)表示一片電池的電壓值,為0~255的一個整數(shù),將該數(shù)除以100及得到電壓實際值,一般單片電池電壓在0.5V~1.2V間。用MSComm進(jìn)行串行通信接收數(shù)據(jù)時可采用兩種方式實現(xiàn),一種是查詢方式,另一種是事件觸發(fā)方式。在本系統(tǒng)中選擇的是事件觸發(fā)方式,每當(dāng)接收緩沖區(qū)中數(shù)據(jù)字節(jié)數(shù)到達(dá)20個時就觸發(fā)一個接收事件。接收通信程序如下:
          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字節(jié)的數(shù)據(jù)
          InputData = .Input‘讀接收緩沖區(qū)
          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 ‘將接受數(shù)據(jù)校驗和與發(fā)送校驗和異或
          If strSum = "0" Then‘如果接收數(shù)據(jù)正確
          Volvalue(N) = InputData(i) / 100
          ‘換算得到電壓實際值
          …………數(shù)據(jù)處理
          Case Else
          MSComm1.InBufferCount = 0 ‘清空接收緩沖區(qū)
          MsgBox "串口通信錯誤"
          Exit Sub
          End Sub

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

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



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();