文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)12-0027-03
0 引言
工程機(jī)械ECU(Electronic Control Unit)是工程機(jī)械的核心控制部件之一,它通過各種安裝在動(dòng)力系統(tǒng)、執(zhí)行機(jī)構(gòu)上的傳感器,感知系統(tǒng)的運(yùn)行狀態(tài),以用戶的預(yù)期運(yùn)動(dòng)為目標(biāo),由其內(nèi)部的控制算法實(shí)現(xiàn)工程機(jī)械的狀態(tài)控制[1]。目前國(guó)內(nèi)ECU廠商較少,且產(chǎn)品性能偏低,國(guó)內(nèi)ECU市場(chǎng)基本被國(guó)外產(chǎn)品所壟斷。
基于英飛凌公司新一代C166v2架構(gòu)微控制器XC2287M[2]設(shè)計(jì)了一款智能ECU,擁有高度復(fù)用的輸入輸出模塊和豐富的I/O資源,軟件上采用工程機(jī)械控制領(lǐng)域廣泛應(yīng)用的CODESYS軟PLC平臺(tái),支持IEC 61131-3定義的5種標(biāo)準(zhǔn)PLC語言進(jìn)行編程[3-4]。
1 硬件設(shè)計(jì)
設(shè)計(jì)的ECU采用XC2287M作為處理核心,通過XC2287M的外設(shè)資源擴(kuò)展PWM、DO、DI、AI和PI等工程機(jī)械常用輸入輸出接口。硬件部分包括主處理電路和外圍電路,外圍電路由電源電路、存儲(chǔ)器電路、安全監(jiān)控電路、輸入輸出電路和通信接口電路等組成。
1.1 主處理電路
主處理電路選用英飛凌公司具有32位性能的16/32位微控制器XC2287M作為控制核心,外圍電路基于XC2287M的外設(shè)資源進(jìn)行擴(kuò)展。XC2287M將高性能CPU和一組功能強(qiáng)大的外設(shè)單元以高效的方式互連,并集成到一顆芯片中,其原理框圖如圖1所示。
XC2287M的最高工作頻率為80 MHz,擁有16位外部數(shù)據(jù)總線,具有兩個(gè)可同步ADC、一個(gè)16通道捕獲/比較單元CC2、最多4個(gè)可產(chǎn)生靈活PWM信號(hào)的捕獲/比較單元CCU6、兩個(gè)多功能通用定時(shí)器單元GPT、最多8個(gè)通用串行通道USIC、最多6個(gè)CAN節(jié)點(diǎn)的MultiCAN和最多119個(gè)GPIO等豐富的外設(shè)資源,完全能夠滿足工程機(jī)械智能ECU的硬件需求。
1.2 電源電路
工程機(jī)械ECU由主機(jī)的蓄電池供電,電源電路將電池電壓轉(zhuǎn)換為ECU所需的3.3 V、5 V等內(nèi)部電壓,并對(duì)電源反接、過壓和過流等進(jìn)行保護(hù)。電源電路如圖2所示,其允許的輸入電壓范圍為9~36 V。
電源電路選用英飛凌公司的TLE6368多電壓處理器供電芯片[5],它具有高效調(diào)壓系統(tǒng)、5.5 V~60 V寬輸入電壓、待機(jī)功耗低、可通過SPI進(jìn)行控制和診斷,非常適合于車載12 V/24 V蓄電池供電系統(tǒng)。TLE6368的輸入級(jí)使用肖特基二級(jí)管和瞬態(tài)抑制二級(jí)管實(shí)現(xiàn)電源反接和過壓保護(hù);SPI接口與XC2287M的USIC相連,控制TRACK LDO輸出,并可關(guān)斷所有電源供電,使系統(tǒng)進(jìn)入待機(jī)狀態(tài);WAKE引腳與整車的點(diǎn)火線開關(guān)相連,控制系統(tǒng)的上電,MCU監(jiān)測(cè)WAKE引腳的狀態(tài),當(dāng)檢測(cè)到點(diǎn)火線開關(guān)關(guān)閉時(shí),通過SPI關(guān)閉所有供電輸出。TLE6368為數(shù)字和模擬外設(shè)提供1路高達(dá)800 mA的5 V輸出,主處理器和與主處理器相連的數(shù)字電路使用3.3 V輸出,6路TRACK LDO輸出并聯(lián)起來提供高達(dá)100 mA的5 V傳感器供電輸出。
1.3 功率級(jí)輸出電路
功率級(jí)輸出用于控制外部電磁閥、電機(jī)等執(zhí)行器,實(shí)現(xiàn)對(duì)整車動(dòng)作的控制。圖3為2.5 A功率級(jí)輸出電路的原理圖。BTS5125L為2路智能高邊開關(guān),導(dǎo)通電阻90 mΩ,負(fù)載電流可達(dá)3.7 A,提供短路保護(hù)、過壓保護(hù)、ESD保護(hù)和過熱關(guān)斷等功能,可通過狀態(tài)反饋引腳監(jiān)測(cè)輸出狀態(tài),支持阻性、容性和感性負(fù)載。
BTS5215L的輸入引腳與XC2287M的CCU63的輸出引腳相連,實(shí)現(xiàn)PWM輸出和DO輸出的復(fù)用,可滿足不同負(fù)載需求。XC2287M的I/O端口在上電復(fù)位時(shí)為弱上拉,而BTS5215L的輸入為高有效,需要在輸入引腳連接10 kΩ下拉電阻以確保功率級(jí)在上電時(shí)處于關(guān)斷狀態(tài)。BTS5215L的GND引腳連接100 Ω電阻實(shí)現(xiàn)反向電池電壓保護(hù),輸出引腳連接的續(xù)流二級(jí)管可支持感性負(fù)載。為了增加ECU的靈活性,BTS5215L的輸出引腳通過分壓電阻網(wǎng)絡(luò)與MCU的輸入引腳相連,通過軟件可以將輸出端口復(fù)用為輸入。
1.4 安全監(jiān)控電路
安全監(jiān)控電路選用英飛凌公司高性能8051微控制器XC866。XC2287M通過USIC與XC866的SSC相連,XC866工作在SPI從模式,用于監(jiān)控系統(tǒng)的工作狀態(tài),控制安全繼電器,并與工作在SPI主模式的XC2287M共同控制所有功率級(jí)輸出的使能。
XC2287M和XC866各有一個(gè)GPIO用作功率級(jí)使能信號(hào)(PWREN#),所有的功率級(jí)輸出(PWM和DO)都受MCU_PWREN#和DOG_PWREN#的共同控制,只有兩者都有效時(shí),功率級(jí)輸出才被使能。
1.5 通信接口電路
ECU通過CAN總線連接支持CAN總線的傳感器,CAN總線還作為ECU與CODESYS編程環(huán)境的通信通道。通信接口電路由XC2287M的MultiCAN外接CAN總線收發(fā)器構(gòu)成[6],其電路原理圖如圖4所示。
設(shè)計(jì)中XC2287M的工作電壓為3.3 V,CAN總線收發(fā)器選用NXP公司的TJA1042T/3,它兼容3 V~5 V微處理器接口,由VIO(I/O電平適配)引腳決定接口電平。為了提高兼容性,圖4中芯片的第5引腳連接了2個(gè)可選電阻,RXD引腳連接了2.2 kΩ限流電阻,該電路可兼容3 V~5 V系統(tǒng),應(yīng)用時(shí)可根據(jù)需要選擇CAN總線收發(fā)器。設(shè)計(jì)中使用了分裂終端電阻形式,可以有效減少電磁發(fā)射并具有更高的抗干擾性。
2 軟件設(shè)計(jì)
2.1 軟件總體框架
設(shè)計(jì)的ECU運(yùn)行CODESYS軟PLC運(yùn)行時(shí),構(gòu)建了適合IEC 61131-3標(biāo)準(zhǔn)的開放式、可擴(kuò)展ECU平臺(tái)。ECU軟件由Bootloader、BSP和C語言算法庫(kù)、安全監(jiān)控服務(wù)和CODESYS運(yùn)行時(shí)、IEC接口層、IEC應(yīng)用層等構(gòu)成,其軟件架構(gòu)框圖如圖5所示。
Bootloader用于系統(tǒng)程序下載和升級(jí)維護(hù);BSP包含硬件驅(qū)動(dòng)程序,為上層提供平臺(tái)無關(guān)的接口;C語言算法庫(kù)實(shí)現(xiàn)復(fù)雜的控制算法,為應(yīng)用程序提供算法加速;安全監(jiān)控服務(wù)對(duì)系統(tǒng)運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè);CODESYS運(yùn)行時(shí)為用戶IEC程序提供運(yùn)行環(huán)境,并通過Debug接口實(shí)現(xiàn)程序的斷點(diǎn)調(diào)試;IEC程序通過外部庫(kù)接口和I/O映像與運(yùn)行時(shí)和外部硬件進(jìn)行數(shù)據(jù)交互。
2.2 Bootloader設(shè)計(jì)
工程機(jī)械ECU通常工作在較為惡劣的現(xiàn)場(chǎng)環(huán)境中,為了達(dá)到特定的防護(hù)等級(jí),一般采用密封的外殼結(jié)構(gòu)。為了方便后續(xù)的升級(jí)與維護(hù),需要在ECU中實(shí)現(xiàn)Bootloader,其工作流程如圖6所示。
Bootloader是系統(tǒng)上電之后運(yùn)行的第一段程序,它首先執(zhí)行基本的系統(tǒng)初始化和通信接口初始化,然后一直輪詢以檢查是否有上位機(jī)更新請(qǐng)求。當(dāng)接收到更新請(qǐng)求時(shí),進(jìn)入更新服務(wù)流程,若100 ms內(nèi)無更新請(qǐng)求,檢查Flash中指定位置的應(yīng)用程序是否有效,有效時(shí)執(zhí)行相應(yīng)的程序,無效時(shí)則進(jìn)入更新服務(wù)流程。
2.3 CODESYS運(yùn)行時(shí)移植
使用基于IEC 61131-3標(biāo)準(zhǔn)的CODESYS編程環(huán)境對(duì)硬件設(shè)備進(jìn)行編程之前,在設(shè)備中必須安裝部署CODESYS運(yùn)行時(shí)。基于XC2287M的運(yùn)行時(shí)移植主要包括對(duì)Main.c、RtsCst.c、RtsCst.h、RtsInc.h、RtsUsr.h、RtsUtil.c和RtsCan.c等文件的修改與適配。
RtsCst.c是移植工作的重點(diǎn)和難點(diǎn),它主要為運(yùn)行時(shí)提供I/O配置解析、I/O映像讀寫、外部庫(kù)函數(shù)接口的實(shí)現(xiàn),以及IEC程序的保存與加載等功能。在移植中需要根據(jù)ECU的外設(shè)實(shí)現(xiàn)CstIOConfigChanged、CstReadInputs、CstWriteOutputs、CstGetExtRefTable、CstFlashProgram和CstLoadProgram等函數(shù)接口。
運(yùn)行時(shí)通過外部庫(kù)函數(shù)表為IEC程序提供外部庫(kù)函數(shù)接口。函數(shù)CstGetExtRefTable返回用戶外部庫(kù)函數(shù)表s_ExtRefTable的指針。s_ExtRefTable是以NULL結(jié)尾的結(jié)構(gòu)體ExtRef的數(shù)組,其成員結(jié)構(gòu)為:
typedef struct tagExtRef {
char szName[32];//外部庫(kù)函數(shù)名稱,通常為大寫
void(*pFunction)(void);//外部庫(kù)函數(shù)的函數(shù)指針
} ExtRef;
其中,szName為在CODESYS編程環(huán)境中調(diào)用此外部庫(kù)函數(shù)時(shí)使用的樁函數(shù)名稱,pFunction為指向運(yùn)行時(shí)中相應(yīng)函數(shù)的函數(shù)指針。任何需要由運(yùn)行時(shí)導(dǎo)出給IEC程序使用的用戶函數(shù)都需要包含在s_ExtRefTable中,C語言算法庫(kù)也由它提供給IEC程序調(diào)用。
2.4 安全監(jiān)控軟件設(shè)計(jì)
為了滿足工程機(jī)械的安全性要求,設(shè)計(jì)的ECU采用了雙CPU架構(gòu)。XC2287M為主CPU,負(fù)責(zé)執(zhí)行主要功能;XC866為看門狗CPU,負(fù)責(zé)對(duì)整個(gè)ECU進(jìn)行安全監(jiān)控,并在異常時(shí)關(guān)斷安全關(guān)鍵的外部輸出,確保系統(tǒng)安全。ECU的安全狀態(tài)轉(zhuǎn)換如圖7所示。
系統(tǒng)上電后,整個(gè)系統(tǒng)處于初始狀態(tài),所有功率級(jí)輸出被關(guān)閉。主CPU嘗試與看門狗CPU建立通信,并下載安全關(guān)鍵的外設(shè)配置到看門狗CPU。成功建立通信后,看門狗CPU開始監(jiān)測(cè)安全關(guān)鍵外設(shè)和主CPU的狀態(tài),整個(gè)系統(tǒng)進(jìn)入正常工作狀態(tài)。隨后主CPU與看門狗CPU周期性的交換狀態(tài)數(shù)據(jù),當(dāng)通信中斷或外設(shè)異常時(shí),主CPU和看門狗CPU都將進(jìn)入安全狀態(tài),并關(guān)閉所有安全關(guān)鍵的功率輸出。
3 結(jié)束語
設(shè)計(jì)的ECU具有豐富的I/O資源和完善的安全保護(hù)機(jī)制,支持在系統(tǒng)失效時(shí)切換到預(yù)定義的安全輸出狀態(tài),保證異常條件下ECU及外圍設(shè)備的安全。ECU軟件遵循IEC 61131-3標(biāo)準(zhǔn),可以通過CODESYS進(jìn)行用戶編程,支持5種標(biāo)準(zhǔn)PLC編程語言,提供豐富的外部庫(kù)函數(shù)接口。本設(shè)計(jì)具有編程靈活、性能穩(wěn)定、安全可靠、易于擴(kuò)展等諸多優(yōu)點(diǎn),可以廣泛應(yīng)用于各種工程機(jī)械控制系統(tǒng)。設(shè)計(jì)的ECU目前已經(jīng)成功應(yīng)用于包括挖掘機(jī)、推土機(jī)、高空作業(yè)車、大噸位平板車等在內(nèi)的多種工程機(jī)械車型,取得了良好的經(jīng)濟(jì)效益。
參考文獻(xiàn)
[1] 王國(guó)慶,劉潔,張宗濤,等.工程機(jī)械智能化控制器研究[J].筑路機(jī)械與施工機(jī)械化,2008,25(3):73-75.
[2] Infineon Technologies AG.XC2200M Derivatives user′s manual V2.0[D/OL].(2009-03)[2014-09].http://www.infi- neon.com.
[3] 3S-Smart Software Solutions GmbH.The CoDeSys runtime system For C16x Infineon processors V2.2[D/OL].(2001-03)[2014-09].http://www.codesys.com.
[4] 王麗麗,康存鋒,馬春敏,等.基于CoDeSys的嵌入式軟PLC系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代制造工程,2007(3):54-56.
[5] Infineon Technologies AG.TLE6368/SONIC data sheet V2.1[D/OL].(2006-12)[2014-09].http://www.infineon.com.
[6] 張素偉,王志剛,王紅,等.基于Infineon單片機(jī)的CAN網(wǎng)關(guān)研究[J].電子技術(shù)應(yīng)用,2009(12):125-127.
基金項(xiàng)目:國(guó)家自然科學(xué)基金項(xiàng)目(61303045);江蘇省自然科學(xué)基金項(xiàng)目(BK2012237)