段禮邦,孟憲霖,王 海,巫江虹
(華南理工大學機械與汽車工程學院,廣東 廣州 510641)
隨著汽車技術和智能控制技術的發(fā)展,汽車搭載的系統(tǒng)越來越多,如防抱死系統(tǒng)、空氣過濾系統(tǒng)、智能空調(diào)系統(tǒng)、自動駕駛系統(tǒng)等,用來實現(xiàn)各種功能。汽車智能空調(diào)系統(tǒng)可根據(jù)車內(nèi)的實時冷、熱負荷來調(diào)整變頻壓縮機、變頻風機和節(jié)流閥等執(zhí)行部件的動作,進而實現(xiàn)車內(nèi)溫度的調(diào)節(jié),保證乘員的舒適性,同時讓變頻壓縮機、變頻風機等執(zhí)行部件工作在最佳狀態(tài),盡可能地降低汽車空調(diào)的能耗[1]。
現(xiàn)階段基于CAN總線設計的汽車空調(diào)在調(diào)節(jié)車內(nèi)溫度時,主要根據(jù)車輛的穩(wěn)態(tài)冷、熱負荷進行調(diào)節(jié)。本文設計了一款基于CAN總線的汽車空調(diào)智能控制軟件——汽車空調(diào)動態(tài)熱負荷計算軟件,該軟件基于C語言開發(fā),通過對汽車外形、車外熱環(huán)境及車內(nèi)熱環(huán)境進行建模,采用反應系數(shù)法,同時考慮車體外圍護結(jié)構對熱負荷傳遞的削減及延遲作用,利用各種車載傳感器獲得的數(shù)據(jù),計算汽車行駛過程中在不同經(jīng)緯度、不同車速、不同太陽照度下的動態(tài)熱負荷,為汽車空調(diào)的選型、設計提供數(shù)據(jù)支持。
汽車空調(diào)動態(tài)熱負荷計算模塊由帶有液晶顯示屏的增強型STM32F103單片機開發(fā)板、普通DMSTM-L單片機開發(fā)板以及CAN物理總線構成。其中,STM32F103單片機開發(fā)板作為主板, DMSTM-L單片機開發(fā)板作為副板,如圖1所示,圖中左側(cè)的是主板,右側(cè)是副板,兩塊單片機開發(fā)板上的CAN模塊采用的芯片均為TJA1050。
圖1 汽車空調(diào)動態(tài)熱負荷計算模塊
在STM32F103主板內(nèi)寫入汽車空調(diào)動態(tài)熱負荷的計算程序以及CAN總線通訊程序;在DMSTM-L副板內(nèi)寫入傳感器數(shù)據(jù)獲取/保存程序以及CAN總線通訊程序。通過CAN總線,可以將動態(tài)熱負荷計算模塊的主副板與各類車載傳感器、執(zhí)行部件連接在一起,實現(xiàn)彼此之間的數(shù)據(jù)通訊。
CAN總線連接線采用的是普通物理線束,每個CAN模塊有兩個信號通道CAN-H和CAN-L,分別負責發(fā)送高電平信號和低電平信號,兩個通道的高低電平可以組成穩(wěn)定的差分信號,用于表示二進制0或1。正是通過傳遞這種由CAN-H與CAN-L兩個通道形成的差分信號,來實現(xiàn)主、副板與各個傳感設備、執(zhí)行部件之間的數(shù)據(jù)通訊。
汽車空調(diào)動態(tài)熱負荷計算模塊中用到的傳感器通過物理線束與副板連接,用于采集、計算車內(nèi)熱負荷所需要的溫度、濕度、太陽輻射強度等數(shù)據(jù)。每個傳感器相當于副板下的一個節(jié)點,副板通過發(fā)送相關的CAN信號指令來獲取各個傳感器數(shù)據(jù)。表1列出了汽車空調(diào)動態(tài)熱負荷計算過程中用到的傳感器。
表1 動態(tài)熱負荷計算過程中用到的傳感器
汽車空調(diào)系統(tǒng)使用的車載變頻壓縮機、變頻風機、電子膨脹閥等執(zhí)行部件則通過物理線束與主板連接。其中車載變頻壓縮機通過主板上CAN模塊發(fā)送的變頻指令來調(diào)節(jié)壓縮機轉(zhuǎn)速;變頻風機通過主板上的I/O引腳發(fā)送脈沖信號并采用PWM脈寬調(diào)制方法來實現(xiàn)變頻運轉(zhuǎn);電子膨脹閥則是通過主板上I/O引腳發(fā)送的2-2相勵磁脈沖信號來實現(xiàn)開度控制。
眾所周知,在行駛過程中汽車行駛工況、外界環(huán)境和乘客人數(shù)的變化都會引起車內(nèi)熱負荷的變化,汽車空調(diào)動態(tài)熱負荷計算模塊在計算得到車內(nèi)熱負荷的變化量后,自動控制執(zhí)行部件執(zhí)行相關動作,調(diào)節(jié)車內(nèi)溫度。
具體調(diào)節(jié)過程如下:首先,熱負荷計算模塊的副板每隔一段時間通過CAN總線發(fā)送指令至車速傳感器、車內(nèi)外溫度傳感器、太陽輻射強度傳感器、車輛GPS系統(tǒng)等電子設備,各傳感設備收到由副板發(fā)送過來的指令后,返回當前實測的傳感器數(shù)據(jù)給副板,并將數(shù)據(jù)保存在副板中,由此整個熱負荷計算模塊便可獲得車速、車外大氣溫度、車內(nèi)環(huán)境溫度、太陽輻射強度、汽車行駛工況等實測數(shù)據(jù);然后,主板啟動汽車空調(diào)動態(tài)熱負荷計算程序,調(diào)用副板中存儲的傳感器數(shù)據(jù),計算當前時刻汽車空調(diào)的熱負荷;最后,根據(jù)熱負荷計算結(jié)果及預先設定的空調(diào)系統(tǒng)控制策略對變頻壓縮機、變頻風機、電子膨脹閥等執(zhí)行部件進行實時調(diào)節(jié),調(diào)節(jié)信號由主板通過CAN總線發(fā)送至執(zhí)行部件。
變頻壓縮機、變頻風機、電子膨脹閥等執(zhí)行部件收到執(zhí)行命令以后,會參照在主板中預先設定的專家系統(tǒng),將壓縮機轉(zhuǎn)速、風機轉(zhuǎn)速、膨脹閥開度調(diào)節(jié)至合理狀態(tài)[2]。在調(diào)節(jié)過程中,優(yōu)先滿足車內(nèi)乘員艙的舒適性;在保證車內(nèi)熱負荷處于理想狀態(tài)的前提下,對壓縮機轉(zhuǎn)速、風機轉(zhuǎn)速和膨脹閥開度進行微調(diào),直至空調(diào)系統(tǒng)功耗為局部最低工況的功耗,從而降低整個系統(tǒng)的功耗。
汽車空調(diào)熱負荷計算軟件是筆者所在團隊自主開發(fā)的線下計算軟件,用C語言編寫,軟件通過VS平臺在PC上運行。
計算汽車整體動態(tài)熱負荷時,軟件將熱負荷分成5類,分別是圍護結(jié)構導熱負荷、太陽透過車窗輻射入車廂熱負荷、人員濕熱負荷、空調(diào)新風熱負荷和機械熱負荷,將上述5類熱負荷累加在一起便可得到汽車整體的熱負荷。對各部分熱負荷的計算是基于動態(tài)熱負荷計算理論,并根據(jù)動態(tài)熱負荷計算公式以及相關經(jīng)驗參數(shù)得出熱負荷結(jié)果的。
軟件在計算熱負荷時所涉及的輸入?yún)?shù)包括車體幾何參數(shù)、車體圍護結(jié)構性參數(shù)、當前車內(nèi)外溫濕度、車內(nèi)乘客數(shù)量、當前車速等[3]。但是在實際計算過程中,需要人為將上述參數(shù)輸入到PC中,然后才可以得到相應參數(shù)下的各類熱負荷,因此該軟件本身并不具有實時性。在使用STM32單片機實時計算汽車動態(tài)熱負荷之前,需要先將基于VS平臺的軟件移植到STM32單片機中。本文中STM32單片機的程序編譯環(huán)境是基于Keil V5,采用C語言編寫。
由于單片機內(nèi)部存儲空間不如PC,因此在軟件移植過程中需要將熱負荷計算公式中涉及的部分復雜參數(shù)進行化簡,盡可能用一個常量因子去替代原始公式中多個常量系數(shù)的運算結(jié)果。除此之外,移植過程中最重要的問題是實時獲得以下參數(shù):車速、車外大氣溫度、車內(nèi)環(huán)境溫度、太陽輻射強度、汽車行駛工況等。本文采用表1中的傳感器來獲得上述參數(shù)的實時數(shù)據(jù),并將這些數(shù)據(jù)用于計算當前的熱負荷。獲取這部分數(shù)據(jù)的程序是基于傳感器的特性自主編寫的。
下面本文以溫度獲取程序為例來說明車內(nèi)外溫度數(shù)據(jù)獲取與傳遞的程序?qū)崿F(xiàn)過程。本文使用的溫度傳感器是DS18B20,該溫度傳感器屬于數(shù)值型溫度傳感器,每個溫度傳感器都有全球唯一的激光ROM碼,相當于溫度傳感器的代號,當熱負荷計算模塊副板中的程序給DS18B20發(fā)送讀ROM指令后,DS18B20會自動返回一個64位的ROM碼給副板。在獲得各個DS18B20傳感器的ROM后,副板發(fā)送ROM匹配指令,各溫度傳感器收到匹配指令后會將自身的ROM碼與接收到的ROM進行對比,若ROM碼相同,則傳送實測的溫度數(shù)據(jù)至副板中,若ROM碼不同,則不發(fā)送溫度數(shù)據(jù)。副板間斷發(fā)送不同的ROM匹配指令,便可以得到不同的溫度傳感器實測數(shù)據(jù)。主板中的熱負荷程序在計算熱負荷時,向副板發(fā)送指令,副板收到指令后,將得到的傳感器數(shù)據(jù)通過CAN總線按照一定順序發(fā)送給主板。主板中的熱負荷計算程序得到相關傳感器參數(shù)以后,便可實時計算各部分汽車動態(tài)熱負荷。然后將計算所得的實時熱負荷與目標熱負荷進行對比,再按照預先設定的控制策略來調(diào)節(jié)各執(zhí)行部件的動作,便可實現(xiàn)車內(nèi)溫度的實時調(diào)節(jié)。
STM32單片機軟件中的其他傳感器數(shù)據(jù)獲取方法與溫度傳感器類似,這部分工作均是在Keil V5環(huán)境下通過C代碼編譯完成。
計算熱負荷過程中車體幾何參數(shù)和車體圍護結(jié)構物性參數(shù)對于具體的汽車來說是固定不變的,因此在程序移植過程中可以將其設定為常量,并固化在STM32單片機中。經(jīng)過軟件移植后,CAN總線上兩節(jié)點進行汽車空調(diào)動態(tài)熱負荷計算時的輸入輸出參數(shù)如圖2所示。
圖2 汽車空調(diào)動態(tài)熱負荷計算輸入輸出參數(shù)
STM32F103單片機主板與DMSTM-L副板上搭載的CAN模塊都具有32位ID,其中主板的ID設置為0x0000、副板的ID設置為0x0001。因為本文中CAN總線系統(tǒng)中僅有主副板兩個節(jié)點,故不設置報文過濾ID,兩個節(jié)點上的CAN收發(fā)器可以監(jiān)聽在CAN總線上傳輸?shù)乃行盘?。主副板之間的CAN通訊波特率統(tǒng)一設定為500 kbit/s,采用Normal模式工作。
實際應用中,CAN總線物理層上可以設置多個節(jié)點,節(jié)點之間沒有主從之分;各個節(jié)點之間都可以相互通訊,且通訊方式較為靈活。但是,汽車空調(diào)動態(tài)熱負荷計算軟件中,因為熱負荷計算程序存放在STM32F103單片機主板中,在程序?qū)嶋H運行中,也只是由主板向副板發(fā)送指令,副板只是被動地傳送數(shù)據(jù)給主板,所以可以人為地將主板設定為主節(jié)點,將副板設為從節(jié)點。主、副板間的CAN總線通訊流程如圖3所示。
第1步,開啟CAN總線系統(tǒng)。STM32F103單片機開發(fā)板主板和DMSTM-L副板初始化;
第2步,主板通過CAN總線向副板發(fā)送指令;
第3步,副板接收到指令后將汽車空調(diào)動態(tài)熱負荷計算所需的各類實時數(shù)據(jù)拆分成組,并通過CAN總線數(shù)據(jù)幀發(fā)送回主板;
第4步,主板接收副板發(fā)送來的數(shù)據(jù)后,將數(shù)據(jù)傳遞給汽車空調(diào)動態(tài)熱負荷計算程序。
CAN總線通訊試驗分為兩個部分,分別是傳感器參數(shù)獲取與傳遞試驗和主板計算動態(tài)熱負荷試驗。為了方便查看試驗結(jié)果,在主板上安裝了液晶顯示屏幕,并通過編程把總線系統(tǒng)運行時主板上的各類數(shù)據(jù)實時顯示在液晶屏上。
圖3 主、副板CAN總線通訊流程
試驗步驟如下:1)將程序以及數(shù)據(jù)燒寫進主板和副板;2)接通主板與副板電源并按下兩板的復位鍵;3)按下主板KEY0鍵開啟主副板之間的CAN通訊,副板開始向主板傳送傳感器實測數(shù)據(jù);4)觀察主板液晶屏幕上的數(shù)據(jù)并與預期結(jié)果對比。
程序運行后液晶顯示屏上顯示的數(shù)據(jù)有7個,分別是計算動態(tài)熱負荷的時刻、車外環(huán)境溫度、車外環(huán)境濕度、車內(nèi)環(huán)境溫度、車內(nèi)環(huán)境濕度、車速以及每名乘客所需空調(diào)新風量。將這7個數(shù)據(jù)與實測值做對比可以判斷傳感器工作是否正常。
主板接收完傳感器數(shù)據(jù)后,啟動程序計算汽車空調(diào)動態(tài)熱負荷,并將結(jié)果顯示在液晶屏上,如圖4所示。圖4的下半部分一共顯示5列計算結(jié)果,分別對應5個時刻的汽車空調(diào)動態(tài)熱負荷。每一列計算結(jié)果均由6行組成,從上至下依次為車體圍護結(jié)構導熱負荷、乘客熱濕負荷、太陽輻射導熱負荷、機械負荷、新風負荷以及空調(diào)總負荷。由于上述5個時刻試驗車的乘客數(shù)量、車速以及行車角度不發(fā)生改變,故人員負荷、機械負荷與太陽輻射負荷的計算值不變。車外大氣溫度與濕度的變化導致車體圍護結(jié)構導熱負荷和新風負荷發(fā)生變化。
圖4 主板接收數(shù)據(jù)顯示
根據(jù)汽車空調(diào)動態(tài)熱負荷的計算流程,計算程序首先從主板內(nèi)存中讀入試驗車體的結(jié)構參數(shù)和物性參數(shù)并根據(jù)這些參數(shù)計算車體圍護結(jié)構的反應系數(shù)序列,之后程序進入汽車空調(diào)動態(tài)熱負荷的計算過程。熱負荷計算所用時長是從主板向副板發(fā)出指令的時刻開始計算的,到主板上顯示屏顯示動態(tài)熱負荷計算結(jié)果的時刻為止。
實測結(jié)果顯示,熱負荷計算所用時長為42 s,運行時間較長,導致節(jié)點的實時性不強。經(jīng)過測試和分析,發(fā)現(xiàn)原軟件計算車體圍護結(jié)構的反應系數(shù)序列花費了大量的時間。實際上,同種型號汽車一經(jīng)產(chǎn)出其圍護結(jié)構反應系數(shù)就基本不發(fā)生改變,故實際應用時不需要將圍護結(jié)構的計算程序燒寫進單片機中,可以在線下計算出結(jié)果后,將其設定為常量存放在數(shù)組中。在熱負荷計算時,由熱負荷計算程序直接調(diào)用數(shù)組中相關常量,由此可以大大縮短主板處理數(shù)據(jù)的時間。試驗測得,優(yōu)化計算程序后的汽車動態(tài)熱負荷計算時長由42 s縮短至24 s。
考慮到本文熱負荷計算時長包括了主板驅(qū)動液晶顯示屏所消耗的時間,如果去除這部分時間,那么實際的熱負荷計算時長將小于24 s,而且在實際運用中無需一次計算5組不同時刻的動態(tài)熱負荷,因此熱負荷計算程序在計算某單一時刻的動態(tài)熱負荷所花費的時間將遠少于24 s,完全滿足汽車動態(tài)熱負荷計算的實時性要求。
汽車動態(tài)熱負荷的計算過程較為復雜,多數(shù)熱負荷計算軟件只是一種線下計算工具,不具有實時性。本文采用STM32單片機實現(xiàn)了汽車空調(diào)動態(tài)熱負荷的實時計算,并通過試驗驗證了其滿足實時性要求。通過計算汽車空調(diào)系統(tǒng)動態(tài)熱負荷可以調(diào)節(jié)汽車空調(diào)運行工況,在保證乘員艙舒適性的前提下盡量降低功耗,對汽車節(jié)能減排具有一定的現(xiàn)實意義。
本文中關于汽車空調(diào)動態(tài)熱負荷的實時控制策略未作詳細闡述,后續(xù)工作中可將動態(tài)熱負荷的計算與熱負荷的控制結(jié)合起來,以尋找最佳的控制策略。