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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 燃料電池轎車(chē)水冷卻監(jiān)控系統(tǒng)的實(shí)現(xiàn)

          燃料電池轎車(chē)水冷卻監(jiān)控系統(tǒng)的實(shí)現(xiàn)

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


          圖2 電源管理

          4. 軟件描述

          軟件編程主要實(shí)現(xiàn)兩大功能:監(jiān)控功能和在線參數(shù)標(biāo)定及在線編程功能。

          4.1 監(jiān)控功能

          監(jiān)控功能主要包括以下功能模塊:AD 信號(hào)采集模塊;控制算法模塊;PWM 信號(hào)輸出模塊;CAN 通訊模塊。

          AD 信號(hào)采集模塊

          該模塊主要進(jìn)行AD 定時(shí)采樣,定時(shí)器使用MC68HC908GZ16 的基本時(shí)鐘模塊,考慮到溫度和壓力不會(huì)突變,因此采樣步長(zhǎng)取為1 秒。

          控制算法模塊

          該模塊含有兩個(gè)子模塊:狀態(tài)機(jī)模塊和算法實(shí)現(xiàn)模塊。

          狀態(tài)機(jī)模塊主要是根據(jù)當(dāng)前的CAN 總線消息以及各傳感器執(zhí)行器的狀態(tài)來(lái)決定當(dāng)前系統(tǒng)所處于的狀態(tài)。其狀態(tài)圖如圖3 所示。首先進(jìn)入控制器上電狀態(tài),在該狀態(tài)下進(jìn)行初始化程序;然后等待水泵變頻器的高壓上電信號(hào),當(dāng)檢測(cè)到該信號(hào)后,狀態(tài)躍遷進(jìn)就緒狀態(tài);在就緒狀態(tài)下,如果高壓電斷開(kāi),則返回控制器上電狀態(tài);在就緒狀態(tài)下如果收到整車(chē)控制器的Enable 信號(hào),則進(jìn)入工作狀態(tài);在工作狀態(tài)下如果收到整車(chē)控制器的Disable 信號(hào),則退出工作狀態(tài)進(jìn)入就緒狀態(tài)。工作狀態(tài)下又分為正常和故障兩個(gè)狀態(tài):首先進(jìn)入正常狀態(tài),在該狀態(tài)下調(diào)用算法實(shí)現(xiàn)模塊;當(dāng)檢測(cè)到故障時(shí),則進(jìn)入故障狀態(tài),在該狀態(tài)下,進(jìn)行故障處理。本系統(tǒng)故障主要有以下幾種:溫度傳感器短路、溫度傳感器斷路、壓力傳感器斷路、水路阻塞、水路泄漏、電機(jī)驅(qū)動(dòng)故障、水泵變頻器故障。由于以上各種故障故障等級(jí)相對(duì)較低,因此當(dāng)故障消失后系統(tǒng)狀態(tài)仍然返回正常狀態(tài)。


          圖3 系統(tǒng)狀態(tài)圖

          算法實(shí)現(xiàn)模塊是根據(jù)當(dāng)前時(shí)刻的溫度壓力值,按照一定的控制方法對(duì)冷卻風(fēng)扇和水泵轉(zhuǎn)速進(jìn)行控制,以使冷卻水溫度保持在正常溫度范圍內(nèi)。根據(jù)實(shí)際情況,本系統(tǒng)溫度控制并不需要很精確,因此控制方案采用分級(jí)控制,即把溫度分成若干等級(jí),在不同等級(jí)下冷卻風(fēng)扇和水泵轉(zhuǎn)速各不相同,以此來(lái)保證冷卻水溫度在正常溫度范圍內(nèi),同時(shí)保證較低的能源消耗。

          PWM 信號(hào)輸出模塊

          該模塊使用兩路定時(shí)器,一路輸出給電機(jī)驅(qū)動(dòng)MC33186,一路輸出給水泵變頻器濾波電路。兩路PWM 均采用帶緩沖的PWM 輸出,考慮到電機(jī)噪聲,PWM頻率選用10K。其占空比由算法實(shí)現(xiàn)模塊的輸出控制量來(lái)決定。

          CAN 通訊模塊

          該模塊實(shí)現(xiàn)CAN 底層驅(qū)動(dòng),接受CAN 總線消息,其中包括來(lái)自整車(chē)控制器的命令消息以及來(lái)自PC 機(jī)標(biāo)定工具(MCD)的CCP 消息;并且發(fā)送給整車(chē)控制器系統(tǒng)狀態(tài)消息,以及給PC 機(jī)標(biāo)定工具(MCD)的CCP 回復(fù)消息。

          4.2 在線參數(shù)標(biāo)定及在線編程功能

          在線參數(shù)標(biāo)定及在線編程是基于CCP 協(xié)議實(shí)現(xiàn)的,其主要有兩大模塊:微控制器側(cè)的CCP 驅(qū)動(dòng)模塊和PC 機(jī)側(cè)的標(biāo)定工具。

          CCP 協(xié)議介紹

          CCP(CAN Calibration Protocol)是為了滿(mǎn)足車(chē)載電子系統(tǒng)匹配標(biāo)定要求的新一代開(kāi)放通用標(biāo)定協(xié)議。

          CCP 基于CAN 總線,采用主從式通訊。一個(gè)主機(jī)與多個(gè)從機(jī)相連。主機(jī)是測(cè)量標(biāo)定設(shè)備(MCD);從機(jī)是車(chē)載控制器。主機(jī)通過(guò)向從機(jī)發(fā)送命令來(lái)啟動(dòng)CAN 上的數(shù)據(jù)傳輸。CCP 支持兩種變量測(cè)量模式:即命令控制方式(Polling)和數(shù)據(jù)采集方式(DAQ)。其中Polling 模式是通過(guò)與從機(jī)交互實(shí)現(xiàn)功能的。主機(jī)和從機(jī)的邏輯連接初始化以后,主機(jī)與從機(jī)之間的數(shù)據(jù)通訊都是由主機(jī)命令進(jìn)行控制。所有來(lái)自主機(jī)的命令都必須要得到所選從機(jī)命令返回消息的應(yīng)答(含有命令返回代碼或者錯(cuò)誤代碼)。在這種模式下,主機(jī)每隔一定時(shí)間向從機(jī)發(fā)一幀命令消息,該消息中含有主機(jī)所要測(cè)量變量的存儲(chǔ)地址及數(shù)據(jù)長(zhǎng)度;從機(jī)收到主機(jī)傳來(lái)的命令消息后,把對(duì)應(yīng)存儲(chǔ)地址以及數(shù)據(jù)長(zhǎng)度的數(shù)據(jù)值通過(guò)命令返回消息上傳給主機(jī)。這種模式實(shí)現(xiàn)簡(jiǎn)單,但總線利用率不高。在DAQ 模式下,首先由主機(jī)命令遵循應(yīng)答機(jī)制來(lái)配置對(duì)象描述表(Object Descriptor Table:ODT)。每一條主機(jī)配置命令必須要得到從機(jī)的應(yīng)答。而在配置過(guò)程結(jié)束后,從機(jī)就能根據(jù)主機(jī)的配置信息確定所要上傳主機(jī)的數(shù)據(jù)以及相應(yīng)上傳周期,自行獨(dú)立上傳數(shù)據(jù),無(wú)須再由主機(jī)命令控制。這種方式實(shí)現(xiàn)起來(lái)較為復(fù)雜,但總線利用率較高。

          CCP 協(xié)議的實(shí)現(xiàn)只依賴(lài)兩個(gè)CAN 消息幀(見(jiàn)圖4):命令接收消息(Command Receive Object:CRO)和數(shù)據(jù)傳送消息(Data Transmission Object:DTO)


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();