張世強,蘇士斌,郭 興,馬曉龍,紀少波*,程 勇
(1.山東大學 能源與動力工程學院,山東 濟南 250061;2.青島海信網絡科技股份有限公司,山東 青島 256000; 3.龍口龍泵柴油噴射高科有限公司,山東 龍口 265701)
冷卻系統是保證汽車發動機在正常溫度下工作的重要部分,主要包括水泵、散熱器、冷卻風扇、節溫器等部件;其中冷卻風扇可以保證汽車在低速行駛或發動機溫度過高時及時散熱,維持正常工作溫度。電子風扇是冷卻風扇的一種,能夠起到很好的節能作用,并且由于其獨立運行、調節能力平滑等優勢得到了大量應用,國內外有很多學者對其進行了研究。相對來說,國外研究起步較早,早在20世紀80年代就已有學者在專利中提到電子風扇,之后,在八十年代末期,Roger Clemente[1]提出將電子風扇裝在載貨汽車上。在國內,上世紀90年代才開始對電子風扇的相關研究。其中,張鵬飛[2]對電子風扇的標定匹配問題開展研究,使用CATIA建立了電子風扇的三維結構模型,并且在電子風扇的匹配設計過程中,提出了一種根據風扇結構參數計算其散熱性能的可行方法。
一般來說,電子風扇控制器需要硬件與軟件相互配合,二者相輔相成,硬件用以支持電子風扇控制器的運行,軟件用以控制硬件,保證電子風扇控制器各個模塊協調有序地工作。周碧[3]介紹了一種以AT89C52單片機為控制核心的車用發動機電控冷卻系統的設計,并據此繪制出了系統電路圖,設計出了可行的硬件和電路。完成電子風扇控制系統的硬件設計之后,還需要設計相應的軟件代碼,軟件代碼包括總體框架程序和各功能模塊的底層驅動程序,前者用于管理整個控制過程,后者通過配置微處理器的寄存器,令其按照設定的工作模式工作。兩種程序都是通過Freescale單片機專用單片機編譯環境CodeWarrior[4]實現的。下面對兩種程序的設計進行詳細介紹。
目前電子風扇控制系統具有采集傳感器信號、輸入開關量信號、PWM輸出控制、風扇狀態診斷等功能[5-6],實現以上功能,需要合理設計電路等硬件,并進行相關的測試與優化[7],還需要軟件代碼對相關模塊進行控制。因此需要針對各個模塊設計程序,主要包括晶振配置程序、傳感器信號采集及處理程序、PWM輸出控制程序、風扇狀態診斷程序、開關量信號讀入程序、CAN總線通訊程序、狀態顯示程序等程序;此外,電子風扇控制器工作時需要處理多個任務,為了各個任務能夠有序執行,基于多任務時間規劃機制,設計了系統總體框架程序。
多任務時間規劃機制是根據處理任務的重要性不同,將不同任務分配以不同的優先級,并按照優先級高低依次執行程序;當較高優先級的程序執行完畢時,便降至最低優先級,并根據各程序執行所需要的時間,將各程序的優先級及時恢復,從而保證程序工作持續進行。
程序中的實時時鐘模塊保證了優先級恢復的正常進行:通過該模塊配置最小時間片段,各個程序段依據其運行所需要的時間間隔,結合當前的時間片段,經過累加得到一個變量,當該變量達到一定值時,將程序段優先級的恢復,進入下一次的運行。
系統總體框架程序實現了系統中各個程序的有序進行,下面對各底層驅動程序模塊進行介紹。
控制器是基于S9S08DZ60單片機設計的,該單片機中含有多功能時鐘發生器(MCG)模塊,模塊中包含1個鎖頻環(FLL)和一個鎖相環(PLL),并且可以選擇其中任一個作為單片機的系統時鐘,也可選用外部參考時鐘作為MCU系統時鐘。在單片機的時鐘源配置中,主要用到了MCGSC、MCGC1、MCGC2及MCGC3這4個特殊功能寄存器,本系統中時鐘配置步驟如下:
單片機復位會使時鐘模塊處于FEI模式,因此首先需要通過寄存器配置將FEI模式轉換為FBE模式;這個步驟中需要完成外部振蕩器的配置,選擇外部參考時鐘為系統時鐘源等。將FBE模式轉為BLPE模式,進而轉為PBE模式,在這個步驟中需要選擇PLL模式。之后,將PBE模式轉為PEE模式,完成時鐘頻率的設置。
傳感器信號是控制器通過模數轉換模塊實現的,使用模數轉換模塊時,首先應配置工作模式,即配置采樣精度、采樣速度、采樣模式及采樣通道,該過程涉及到ADCCFG、ADCSC1、ADCSC2、APCTL1、APCTL2及APCTL3等特殊功能寄存器。通過寄存器配置設定數模轉換單元采用低功耗模式,轉換精度為12位,以總線頻率作為時鐘,模數轉化速度為總線頻率的一半;通過配置,在使能數據轉換完成后進入中斷功能,配置用到的引腳為模數轉換功能,屏蔽IO功能。
完成上述配置,便可控制單片機模數轉換功能,采集后續數據時,可通過ADCSC1指定采樣通道,并啟動單次采樣工作模式,采集相應通道的數據,完成采集后進入模數轉換中斷函數,并將采樣結果暫存,置位相關變量,告知有新的數據到來。
采集完成后,需要通過標度變換將采集到的數字量轉化為對應的物理量,此處通過查表實現。在此,建立不同的數組,用來存儲數字量與實際溫度值的對應關系,模數轉換完成后,對數組中的數據進行查表及線性插值處理,得到對應的物理量。針對不同溫度區間數據的使用頻率,設置不同的溫度步長,不常用的溫度區間采取較大的步長,常用的溫度區間則采用較小的步長,這可以減少數組的規模,提高查表速度以及插值的精度。
PWM輸出是通過單片機的定時器脈沖寬度調節器實現的,該模塊支持邊緣對齊及中央對齊PWM模式,此處選擇邊緣對齊模式。該定時器脈沖寬度調節器包含TPM0和TPM1兩個模塊,其中TPM1模塊在此用于邊緣對齊PWM輸出,TPM0模塊用于其他功能。在PWM輸出功能中,需涉及到TPMnSC、TPMnMOD、TPMnCxSC、TPMnCNT及TPMnCxV等特殊功能寄存器,通過配置這些寄存器,控制TPM1定時器溢出中斷使能、采用非中央對齊PEM輸出功能、功能模塊的時鐘總線為總線速率時鐘、總線速率時鐘二分頻后得到TPM1的時鐘源。然后設定計數終點,即TPM1定時器的模值,定時器在達到該值后計入溢出中斷,該寄存器的值可指定PWM信號的頻率。TPM2C0SC寄存器可設置及改變TPM1模塊中第0通道的功能模式,在此設置為普通IO口,TPM1模塊其他通道的初始化也如此設置。最后,將TPM1計數寄存器清0,計數寄存器復位。
上述特殊寄存器設置完成后,才可進入正常工作模式,現以TPM1的第0通道為例,對PWM信號輸出的代碼進行說明。
首先需要根據PWM輸出占空比,對TPM2C0SC進行初始化設置。當占空比為0%時,需要PWM輸出引腳保持輸出低電平,此時將該引腳設置為普通IO口,然后通過代碼控制引腳輸出低電平。當PWM輸出占空比不為0%時,則需將該通道設置為邊緣對齊PWM模式,此時使配置TPM2 -C0SC寄存器,并設置PWM相應的輸出電平模式,從而使該通道為邊緣對齊PWM模式。然后根據該模式中當前的時鐘頻率、TPM1的模值以及當前占空比計算出對應的計數值,并賦值給通道值寄存器TPM2C0V,當TPM1的計數值與TPM2C0V的值相等時,便控制相應的引腳動作,實現PWM信號的輸出。圖1為通過TPM1模塊發出的不同占空比的PWM信號。

圖1 不同占空比的PWM信號對比
該程序主要讀取風扇故障狀態及風扇轉速,研究的電子風扇內部具有故障診斷功能,當電子風扇出現溫度、壓力過高等故障時,相應的引腳便輸出高電平,可據此判斷電子風扇是否有故障。該電平信號是在控制器給電子風扇發出的PWM信號為低電平時輸出,且PWM信號的占空比是實時變化的,即PWM信號為低電平的情況也是一直在變化的,因此便需要一個模塊來捕捉風扇電平信號,此處采用TPM0模塊的輸出比較功能來捕捉PWM信號為低的時刻。
首先,需要對TPM0模塊進行初始化配置,包括時鐘源、時鐘頻率以及計數寄存器等,其配置過程與上文中TPM1模塊相似,每次通過TPM1進行PWM占空比配置時,同步對TPM0進行配置,實現輸出比較功能。這需要通過對通道狀態控制寄存器進行配置,該寄存器允許中斷使能,將引腳功能配置為輸出比較模式。為了能夠準確捕捉風扇狀態電平,將輸出比較的中斷時刻設定在PWM信號低電平的中間位置,這里通過對通道值寄存器的配置實現,此時信號的狀態穩定,更容易獲取準確的狀態。圖2為不同占空比下,讀取風扇狀態電平的時刻示意圖,其中黃線是輸出的PWM信號,綠色線表征另外一根引腳的反轉時刻,以便觀察中斷時刻。由以下三個圖可知,在這三種占空比狀態下,都可以在PWM信號的低電平位置出現中斷,這也是讀取風扇狀態電平的最佳時刻。

圖2 不同占空比下風扇狀態電平讀取時刻示意圖
其次,要獲取風扇的轉速信息,了解風扇運轉狀態,但是電子風扇在實際應用中,轉速信號難以直接測量,因此需要用其他參數來間接獲取,而風扇轉速與PWM信號的占空比又是一一對應的,因此可以通過確定兩者之間的關系,依據PWM占空比來獲取電子風扇的轉速。在不用電壓下,PWM占空比與風扇轉速的對應曲線如圖3所示。由圖可知,工作電壓在24 V以上時,工作電壓對風扇轉速的影響不大;當占空比不變時,隨著工作電壓的下降,對應的風扇轉速也隨之降低。

圖3 占空比與風扇轉速對應關系
開關量信號讀入包括風扇故障狀態、啟動開關信號及駕駛員發來的反轉控制信號三部分,在上文中已經介紹風扇故障狀態信號的讀取,其他兩個開關量信號的讀取方法與之相同。在讀取前需要對單片機的IO口初始化配置,并且需要指定IO口的方向,這一功能通過PTnDD特殊功能寄存器實現;而后通過PTAD_PTAD3的狀態來確定PA3引腳電平的高低,其值為1時PA3收到的是高電平,反之為低電平。該方法可獲取各開關輸入信號的狀態。
該程序包含了CAN模塊的初始化、CAN數據的發送和接收等過程,實現該程序的功能需要利用Freescale單片機的局域網通信控制器MSCAN,MSCAN具有監聽模式、MSCAN睡眠模式、MSCAN初始化模式、MSCAN關機模式及環回自測模式五個工作模式,使用時首先需要進行初始化,配置工作模式、傳送波特率、數據幀類型及中斷功能。在正常使用過程中,主要使用發送和接收兩個功能,接收時可以采用查詢方式或中斷方式,在此采用中斷方式以提高程序的運行效率。
在CAN模塊的初始化中,首先判斷CAN模塊是否啟動,若未啟動,則直接開始系統初始化;若已啟動,則在MSCAN沒有等待發送數據幀的前提下,設置模塊進入初始化狀態,在模塊進入初始化狀態后,再向下運行后面的程序。CAN模塊進入初始化狀態后,需要對CAN通訊的波特率進行配置,這里通過CANBTR0和CANBTR1兩個特殊功能寄存器實現。前者用來配置CAN計時參數,包括同步跳轉寬度和波特率的預分頻值;后者根據傳輸速率的高低,設定數據傳輸時的樣本數量,可選擇1個或者3個。且該寄存器也可以設定每個位時間的時鐘周期數和采樣點的位置。
此外,在數據接收過程中,需要對不需要接收的數據進行過濾,這一過程可通過配置標識符掩碼寄存器CANID- MRn、接收寄存器CANIDARn及標識符驗收控制寄存器CANIDAC實現。其中,掩碼寄存器用于配置需要比較的位,接收寄存器則代表比較的地址值。針對不同標識符需要應用不同的寄存器,擴展標識符需要應用四個接收和掩碼寄存器,標準標識符只應用前兩個寄存器,即CANIDAR0/1和CANI- DMR0/1。
當上述寄存器配置完成后,通過判斷CANCTL0和CAN- CTL1寄存器中的標志位,回到正常工作模式,且與總線時鐘進行同步,開始進行數據的收發。為了提高系統的執行效率,將數據的接收配置為中斷模式,這里通過CANRIER寄存器中的RXFIE位進行配置。
上述過程完成了CAN模塊的初始化,之后便可進行數據的發送和接收。首先,需要將發送過程封裝為一個函數,以便進行數據的發送操作,該函數需判斷發送的數據類型及個數是否正確,且在發送過程中,還需通過發送器標志寄存器來確定當前為空的發送緩沖器。確定好發送緩沖器后,再通過選擇寄存器來選定該緩沖器進行數據發送。
發送的CAN報文包含標識符和數據兩部分,在發送時,標識符需裝載在CANTIDRn寄存器中,單片機的CAN模塊具備CANTIDR0~CANTIDR3共計4組標識符寄存器,用于滿足標準幀和擴展幀的標識符加載的需要。對于擴展幀而言,標識符由29位組成,4組標識符寄存器中還有3位特殊的標志位(SRR、IDE及RTR)。在進行標識符加載時,需要通過移位或者與或處理等將地址標識符及3位特殊的標志位加載到CANTIDRn的4組寄存器中。
同理,發送的數據也需要通過數據段寄存器CANTDSRn加載相應的數據實現。此外,在發送數據前還需要通過寄存器CANTDLR指定發送的數據幀中的字節數量;通過CANTTBPR指定數據幀的優先級;通過CANTFLG指定前述確定的發送緩沖器;最終由CAN模塊自動實現數據的發送。
對于CAN數據的接收,需要采用中斷模式,一旦接收的數據通過了接收濾波器的校驗,即可觸發CAN模塊的中斷,并進入中斷函數中。在進入CAN中斷函數中后,首先需要判斷接收的CAN數據的類型是否正確,進而確定當前數據幀中的數據字節數量;由于標識符寄存器中3個特殊標志位的存在,需要對接收的標識符寄存器通過變換,得到真正的地址標識符;最后需要將CAN數據幀的各字節數據依次取出,完成整個數據接收過程。
狀態顯示是通過數碼管完成的,在此采用16通道等電流數碼管驅動芯片MBI5024。狀態顯示程序包括底層驅動程序和顯示內容控制程序兩個方面。
顯示裝置使用了2位數碼管,共16個碼段,MBI5024底層驅動程序包含對數碼管各碼段的控制引腳的規劃。MBI5024通過串行通訊傳遞顯示信息,在此需要兩個字節數據,即16位數據來控制16個碼段,圖16為2位數碼管各碼段與控制字節的對應關系,在工作時,發送的第一個字節數對應右邊的數碼管,用于控制a->h各碼段的數據;發送的第2個字節是左邊的數碼管,即A->H的數據。確定好數碼管的各碼段與字節數據之間的關系后,便建立了數碼管顯示內容的真值表,將真值存入數組中,在使用時根據需要顯示的內容查表便可確定需要發出的字節數據的內容。
顯示程序包括四部分,分別是總體控制程序、數字顯示控制程序、特殊字符顯示控制程序以及MBI5024通訊程序,通過這四部分,可以控制數碼管顯示各種信息,包括控制器當前工作狀態、傳感器測試信號、風扇點擊的故障狀態等信息。其中總體控制程序可根據控制器當前的狀態確定顯示內容,顯示內容包括數字和特殊字符,數字和特殊字符的顯示控制分別由各自的顯示控制程序實現,此外,還需要控制器將數據發送到MBI5024,即需要通訊程序,將數字顯示及特殊字符顯示程序確定的字節內容向外發送,并且可在通訊程序中通過優化的發送機制實現發送速度的調整。
在設計完成后,需要檢測其功能是否完善,各個模塊能否有序協調的工作,是否滿足使用要求。因此,將總體框架程序、各底層驅動程序與電子風扇控制器硬件相結合,在實驗場對電子風扇控制器進行實車測試,對電磁離合器風扇及電子風扇系統的油耗進行了對比分析,對其使用效果進行相關評價,實驗結果表明采用電子風扇后,在各測試工況下都具有明顯的節油效果。

圖4 定遠試驗場地部分實驗路段
實驗在空車、中載和重載三種不同載荷下進行,裝有電磁離合器風扇的車輛和同種裝有電子風扇的車輛分別在各種載荷下采取不同速度測試四到五次,記錄各自的油耗進行對比,如圖5。

圖5 不同裝載下兩種油耗對比
實驗結果可知,不同載荷下節油率稍有變化,但整體電子風扇能夠起到很好的節油作用,設計出的軟件可以很好地控制各個硬件模塊有序協調地進行,具有很好的實用性。
(1)本文分析了電子風扇控制系統在工作時的功能需求,提出了相應的軟件代碼設計方案。
(2)基于Freescale單片機專用編譯環境CodeWarrior對各功能模塊的底層驅動程序進行設計,包括晶振配置程序、傳感器信號采集及處理程序、PWM輸出控制程序、風扇狀態診斷程序、開關量信號讀入程序、CAN總線通訊程序、狀態顯示程序等,能夠控制電子風扇控制系統有序工作。
(3)進行了總體框架的的設計,設計了多任務時間規劃機制實現了上述多種功能的協調工作。