倪朋朋,顧海全,王文斌,鄭麗麗
(常州星宇車(chē)燈股份有限公司,江蘇常州 213000)
車(chē)燈是汽車(chē)必不可少的零部件,除了夜間照明外,更重要的是對(duì)其他行駛車(chē)輛和行人具有警示和提醒的作用,汽車(chē)轉(zhuǎn)向燈作為指示汽車(chē)運(yùn)行狀態(tài)的信號(hào)燈關(guān)乎汽車(chē)運(yùn)行安全,國(guó)際和國(guó)內(nèi)都制定了一些重要法規(guī)來(lái)保障動(dòng)態(tài)轉(zhuǎn)向燈的安全可靠。
主機(jī)廠和燈具生產(chǎn)企業(yè)為了保障燈具安全可靠,除了遵守相關(guān)法規(guī)外,還會(huì)制定一些項(xiàng)目開(kāi)發(fā)流程來(lái)對(duì)項(xiàng)目進(jìn)行規(guī)范和節(jié)點(diǎn)把控。燈具控制器作為燈具的核心部件,其硬件和軟件一直是設(shè)計(jì)過(guò)程中的重點(diǎn)。軟件的運(yùn)行依賴于硬件平臺(tái),按照傳統(tǒng)的開(kāi)發(fā)方式,需要等硬件完成后才能調(diào)試軟件,如果此時(shí)發(fā)現(xiàn)大的邏輯缺陷,不僅軟件硬件需要修改,可能整個(gè)設(shè)計(jì)方案都需要更改,影響項(xiàng)目開(kāi)發(fā)效率和項(xiàng)目節(jié)點(diǎn)。目前主機(jī)廠和一些零部件供應(yīng)商對(duì)ECU單元的開(kāi)發(fā)多采用基于模型的設(shè)計(jì),使用MATLAB等工具箱進(jìn)行前期模型的設(shè)計(jì)及仿真,可以驗(yàn)證方案的可行性,并對(duì)模型進(jìn)行測(cè)試。最后將可靠的模型生成不同的目標(biāo)代碼下載到ECU單元,可縮短項(xiàng)目開(kāi)發(fā)時(shí)間,提高開(kāi)發(fā)效率。
動(dòng)態(tài)轉(zhuǎn)向燈控制系統(tǒng)主要由車(chē)身端BCM、控制芯片MCU、LED驅(qū)動(dòng)電路組成。BCM一個(gè)通道輸出13.5 V常電,一個(gè)通道輸出頻率為1.25 Hz;PWM的占空比為50%;13.5 V常電經(jīng)LDO轉(zhuǎn)換成5 V給MCU供電,PWM給LED驅(qū)動(dòng)供電。同時(shí)MCU檢測(cè)PWM信號(hào)的上升沿來(lái)保證動(dòng)態(tài)轉(zhuǎn)向燈的同步性,系統(tǒng)原理如圖1所示。
動(dòng)態(tài)轉(zhuǎn)向燈控制器會(huì)對(duì)LED驅(qū)動(dòng)芯片錯(cuò)誤反饋引腳進(jìn)行實(shí)時(shí)監(jiān)控,一旦出現(xiàn)錯(cuò)誤信息,LED驅(qū)動(dòng)芯片F(xiàn)ault引腳輸出高電平,MCU檢測(cè)到高電平信號(hào)時(shí),首先關(guān)閉動(dòng)態(tài)轉(zhuǎn)向燈,然后向MCU內(nèi)部的EEPROM寫(xiě)入錯(cuò)誤代碼。
系統(tǒng)重新上電時(shí)若檢測(cè)到Fault反饋端仍然為高電平,那么動(dòng)態(tài)轉(zhuǎn)向燈繼續(xù)關(guān)閉;若檢測(cè)到Fault反饋端為低電平,則說(shuō)明上次的故障檢測(cè)屬于錯(cuò)誤的檢測(cè),那么MCU將擦除上次存儲(chǔ)的故障代碼,重新開(kāi)啟動(dòng)態(tài)轉(zhuǎn)向燈。邏輯功能流程如圖2所示。
圖1 系統(tǒng)硬件框圖
圖2 邏輯功能流程
根據(jù)動(dòng)態(tài)轉(zhuǎn)向燈的控制系統(tǒng)硬件框圖,分別對(duì)BCM、LED驅(qū)動(dòng)及MCU建模,其中MCU的模型主要包括信號(hào)濾波及信號(hào)處理功能。
通過(guò)對(duì)主機(jī)廠BCM輸出波形實(shí)測(cè),發(fā)現(xiàn)BCM在電壓低于13.1 V時(shí)輸出頻率為1.25 Hz、占空比50%的方波;當(dāng)電壓高于13.1 V時(shí),BCM進(jìn)行過(guò)壓保護(hù),輸出的方波在高電平周期會(huì)帶有100 Hz的載波,且載波隨著電壓的升高,頻率不變、占空比減小。為了實(shí)現(xiàn)這種波形,選用鋸齒波模塊,該信號(hào)在周期內(nèi)線性增大,每個(gè)周期都復(fù)位歸零。由于BCM輸出的方波為1.25 Hz,所以在鋸齒波的設(shè)置中,將幅值范圍設(shè)置為[0,2],周期為[0,0.8]。生成變占空比PWM信號(hào),還需要正弦波模塊,與鋸齒波進(jìn)行幅值比較,將正弦波幅值設(shè)為[0,1],經(jīng)布爾邏輯運(yùn)算輸出波形,搭建好的模型結(jié)構(gòu)如圖3所示。
圖3 BCM模型
為了能準(zhǔn)確反映BCM工作機(jī)制,同時(shí)也是生成代碼的需要,將仿真的步長(zhǎng)設(shè)置為固定步長(zhǎng),步長(zhǎng)越小仿真越精確不失真,所以將步長(zhǎng)設(shè)置為1 ms。為了模擬出BCM在13.1 V以上帶載波的情況,需要將正弦波的頻率參數(shù)設(shè)置為2×π×100,即正弦波的頻率為100 Hz,BCM模型輸出波形如圖4所示。上面為鋸齒波,中間為頻率100 Hz的正弦波,下面為頻率1.25 Hz、占空比50%的方波,同時(shí)在高電平周期帶有100 Hz載波。
圖4 BCM模型輸出的波形
MCU作為主控芯片主要功能是對(duì)信號(hào)檢測(cè)濾波,根據(jù)信號(hào)進(jìn)行邏輯判斷,輸出高電平驅(qū)動(dòng)LED電路工作,因此對(duì)MCU的建模主要針對(duì)這些功能進(jìn)行。
(1)信號(hào)檢測(cè)及濾波模型
MCU的管腳對(duì)PMW信號(hào)進(jìn)行檢測(cè),在高電平周期控制動(dòng)態(tài)轉(zhuǎn)向燈流水點(diǎn)亮。為了保證所有燈具的同步性,需要對(duì)PWM上升沿檢測(cè),由于BCM輸出電壓高于13.1 V時(shí),高電平帶有100 Hz載波,因此如果不對(duì)載波進(jìn)行濾波,動(dòng)態(tài)轉(zhuǎn)向燈將無(wú)法正常工作。通過(guò)分析載波特征,發(fā)現(xiàn)載波周期不變、占空比隨電壓升高而變大。因此可以在轉(zhuǎn)向燈正常工作最高電壓下測(cè)出載波低電平時(shí)間,設(shè)置一個(gè)閾值,即可將載波濾除,輸出頻率1.25 Hz、占空比50%的方波。采用Sateflow建模如圖5所示。
圖5 載波濾波模型
濾波效果如圖6所示,下方為帶載波PWM,上方為濾波后PWM。
圖6 濾波效果
(2)上升沿檢測(cè)模型
為了保證汽車(chē)左右燈具的同步性,對(duì)PWM進(jìn)行上升沿檢測(cè),檢測(cè)到上升沿信號(hào)后才執(zhí)行動(dòng)態(tài)轉(zhuǎn)向功能,上升沿檢測(cè)模型如圖7所示。PWM信號(hào)輸入,通過(guò)一個(gè)Delay模塊將信號(hào)分為前一個(gè)狀態(tài)u和后一狀態(tài)u0,2個(gè)信號(hào)進(jìn)入Chart進(jìn)行邏輯判斷輸出上升沿信號(hào)PWM_edge。
圖7 上升沿檢測(cè)模型
圖8為上升沿檢測(cè)輸出波形,上方為輸入PWM信號(hào),下方為輸出的上升沿信號(hào),具有很好的追隨性,延遲時(shí)間為1 ms。
圖8 上升沿檢測(cè)信號(hào)輸出
(3)信號(hào)邏輯處理模型
經(jīng)過(guò)上述幾個(gè)模塊對(duì)信號(hào)的檢測(cè)處理,可以獲得高電平狀態(tài)PWM_State及上升沿信號(hào)Up_Flag,對(duì)2個(gè)信號(hào)進(jìn)行邏輯判斷的模型如圖9所示。模型有2個(gè)狀態(tài):OFF和ON狀態(tài)。OFF狀態(tài)是默認(rèn)狀態(tài)對(duì)LED進(jìn)行關(guān)閉,ON狀態(tài)是按照設(shè)置的時(shí)序?qū)ED依次打開(kāi)。
圖9 動(dòng)態(tài)轉(zhuǎn)向燈開(kāi)關(guān)狀態(tài)切換
LED驅(qū)動(dòng)模型工作流程如圖10所示。
圖10 模型工作流程
當(dāng)MCU管腳輸出高電平時(shí),可以使LED驅(qū)動(dòng)導(dǎo)通將LED點(diǎn)亮。為了能夠顯示模型工作狀態(tài),建立一個(gè)LED模型,當(dāng)LED模型接收到高電平信號(hào)后,由白色變成黃色,表示LED點(diǎn)亮。采用S函數(shù)的方式創(chuàng)建LED模型,在仿真的各個(gè)階段,Simulink引擎調(diào)用不同的方法,執(zhí)行各項(xiàng)任務(wù)。在第一次執(zhí)行循環(huán)之前,Simulink引擎會(huì)初始化S函數(shù),然后進(jìn)入仿真循環(huán)階段,在每個(gè)循環(huán)內(nèi)系統(tǒng)會(huì)按照初始化階段決定的次序依次執(zhí)行各模塊,模型工作流程如圖10所示。
根據(jù)模型工作流程圖編寫(xiě)S函數(shù)的t_led.m文件,將t_led.m添加到S-Function模塊中,再將模塊封裝成LED驅(qū)動(dòng)模型,LED關(guān)閉時(shí)為白色,點(diǎn)亮?xí)r為灰色,如圖11所示。
圖11 LED驅(qū)動(dòng)模型
將上述創(chuàng)建的各單元模型,根據(jù)硬件系統(tǒng)框圖,組成基于Simulink/Stateflow的動(dòng)態(tài)轉(zhuǎn)向燈控制系統(tǒng)模型,如圖12所示。運(yùn)行控制系統(tǒng)模型,BCM模塊輸出PWM信號(hào),經(jīng)過(guò)濾波模塊和上升沿檢測(cè)模塊,將處理的信號(hào)傳遞給Turn_LED模塊,控制LED周期性流水點(diǎn)亮。
圖12 控制系統(tǒng)模型
通過(guò)示波器Scope采樣每組LED的輸入電流,如圖13所示。共9組LED依次點(diǎn)亮,每組間隔20 ms,幅值可以表示電流大小,仿真結(jié)果符合預(yù)期。
將控制系統(tǒng)模型利用Simulink工具箱進(jìn)行覆蓋度檢測(cè)、兼容性檢測(cè)、軟件在環(huán)測(cè)試、硬件在環(huán)測(cè)試后,將算法部分利用代碼生成工具Code Generation生成C代碼,并將代碼嵌入手寫(xiě)應(yīng)用程序中,編譯通過(guò)后下載到硬件電路板,用示波器和電流鉗實(shí)測(cè)時(shí)序電流圖,縱坐標(biāo)設(shè)置為電流值(mA),橫坐標(biāo)為時(shí)間(ms),如圖14所示。
圖13 仿真轉(zhuǎn)向燈時(shí)序電流圖
圖14 實(shí)測(cè)動(dòng)態(tài)轉(zhuǎn)向燈時(shí)序電流圖
本文作者通過(guò)對(duì)汽車(chē)轉(zhuǎn)向燈控制系統(tǒng)的研究,采用基于模型設(shè)計(jì)的方式,以MATLAB2016a為軟件平臺(tái),基于Simulink/Stateflow對(duì)硬件系統(tǒng)進(jìn)行建模。對(duì)模型進(jìn)行仿真和測(cè)試,并將控制算法自動(dòng)生成C代碼,再將C代碼嵌入到工程中下載到硬件電路板,實(shí)測(cè)波形與仿真波形一致。采用基于模型設(shè)計(jì)的方式,工程師前期可以脫離硬件平臺(tái)研究需求,快速進(jìn)行算法驗(yàn)證。同時(shí)進(jìn)行自動(dòng)代碼生成和對(duì)代碼進(jìn)行測(cè)試,避免了傳統(tǒng)手寫(xiě)代碼開(kāi)發(fā)項(xiàng)目,前期需要依賴硬件平臺(tái),開(kāi)發(fā)周期長(zhǎng),一般需要重復(fù)多次才能成功的弊端。