基于LIN總線(xiàn)的車(chē)燈控制系統(tǒng)
近幾年隨著LIN總線(xiàn)技術(shù)的出現(xiàn),由于其成本低廉,且采用可有效保證通信負(fù)載的一主多從結(jié)構(gòu),在通信速率要求不太高的車(chē)身電子領(lǐng)域,可以部分替代低速CAN|0">CAN總線(xiàn)。筆者結(jié)合所研制的車(chē)燈LIN網(wǎng),介紹了系統(tǒng)結(jié)構(gòu)及硬件設(shè)計(jì)關(guān)鍵技術(shù),以及相關(guān)應(yīng)用協(xié)議的實(shí)現(xiàn)。
系統(tǒng)結(jié)構(gòu)及硬件設(shè)計(jì)關(guān)鍵技術(shù)
● 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)包括一個(gè)主節(jié)點(diǎn)和四個(gè)從節(jié)點(diǎn),主節(jié)點(diǎn)同時(shí)作為CAN-LIN網(wǎng)關(guān),與車(chē)身CAN網(wǎng)連接。從節(jié)點(diǎn)為相應(yīng)位置的車(chē)燈節(jié)點(diǎn),節(jié)點(diǎn)間通過(guò)LIN總線(xiàn)連接,系統(tǒng)結(jié)構(gòu)圖如圖1所示。主節(jié)點(diǎn)完成組合開(kāi)關(guān)狀態(tài)的檢測(cè),檢測(cè)到狀態(tài)變化時(shí),主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送控制幀,從節(jié)點(diǎn)接收控制幀,完成對(duì)車(chē)燈負(fù)載的控制,同時(shí)監(jiān)測(cè)過(guò)壓過(guò)流過(guò)溫情況的發(fā)生,并記錄其狀態(tài)。主節(jié)點(diǎn)周期性地發(fā)送查詢(xún)車(chē)燈ECU狀態(tài)的狀態(tài)幀,并得到ECU狀態(tài)。
● 關(guān)鍵技術(shù)
圖1系統(tǒng)結(jié)構(gòu)圖 本文引用地址:http://2s4d.com/article/201706/350839.htm |
(1)開(kāi)關(guān)檢測(cè)
組合開(kāi)關(guān)信號(hào)的狀態(tài)檢測(cè)采用飛思卡爾的可編程多路開(kāi)關(guān)檢測(cè)接口器件MC33993實(shí)現(xiàn),該器件可以檢測(cè)多達(dá)22路開(kāi)關(guān)量輸入,采用SPI方式與MCU進(jìn)行狀態(tài)設(shè)置及開(kāi)關(guān)狀態(tài)反饋,不僅實(shí)現(xiàn)對(duì)開(kāi)關(guān)狀態(tài)的可靠實(shí)時(shí)檢測(cè),同時(shí)提供“濕性電流”保護(hù)開(kāi)關(guān)觸點(diǎn),保證開(kāi)關(guān)觸點(diǎn)的接觸完整性。
(2)車(chē)燈控制
車(chē)燈負(fù)載包括遠(yuǎn)光燈、近光燈、小燈、霧燈和轉(zhuǎn)向燈,其控制采用飛思卡爾的智能功率器件MC33888和MC33984實(shí)現(xiàn)。這些器件不僅提供開(kāi)關(guān)控制功能,還提供電流控制、限流、熱保護(hù)、過(guò)壓保護(hù)和先進(jìn)的負(fù)載診斷。
(3)過(guò)壓保護(hù)
車(chē)燈負(fù)載不能很好地承受高電壓,過(guò)壓是導(dǎo)致車(chē)燈壽命變短的重要原因。車(chē)燈額定工作電壓為13.5V,實(shí)際上當(dāng)提供18V以上電壓達(dá)幾秒,就會(huì)產(chǎn)生故障,可以采用PWM的方式控制車(chē)燈的有效電壓值。設(shè)車(chē)燈電阻為R,車(chē)燈兩端電壓為U,則在時(shí)間T內(nèi),消耗的熱量W=U2T/R
車(chē)燈電阻R為固定值,這樣車(chē)燈承受能量正比于電壓U的平方和工作時(shí)間T??梢酝ㄟ^(guò)PWM調(diào)節(jié)占空比d,從而調(diào)節(jié)有效工作時(shí)間T,這樣當(dāng)電壓達(dá)到18V 時(shí),調(diào)節(jié)占空比d到(13.5/18)2=56%,便能保證車(chē)燈的正常工作。在電路中通過(guò)檢測(cè)電壓值V,當(dāng)電壓值V>13.5V時(shí),按照如下公式計(jì)算占空比:
d=(13.5/V)2
這樣通過(guò)調(diào)節(jié)占空比,實(shí)現(xiàn)了對(duì)車(chē)燈工作電壓平均值的控制,有效保護(hù)了車(chē)燈負(fù)載。
LIN通信的實(shí)現(xiàn)
LIN網(wǎng)絡(luò)的實(shí)現(xiàn)包括協(xié)議驅(qū)動(dòng)器和應(yīng)用協(xié)議兩部分,協(xié)議驅(qū)動(dòng)器完成通信功能,應(yīng)用協(xié)議完成網(wǎng)絡(luò)管理和故障診斷。
● LIN通信概念
LIN協(xié)議是一主多從結(jié)構(gòu),通信只能由主節(jié)點(diǎn)中的主任務(wù)發(fā)起,一個(gè)完整的LIN報(bào)文幀的傳輸是由主任務(wù)和從任務(wù)共同實(shí)現(xiàn)的,主任務(wù)發(fā)送“報(bào)頭”,從任務(wù)發(fā)送或接收“響應(yīng)”。
通信概念如圖2所示。
圖2LIN通信概念圖 |
● 協(xié)議驅(qū)動(dòng)器
LIN基于SCI串行通信的格式,使得帶UART的MCU可以采用中斷服務(wù)程序,以狀態(tài)機(jī)的方式很容易實(shí)現(xiàn)其協(xié)議驅(qū)動(dòng)器。根據(jù)LIN的通信概念,主節(jié)點(diǎn)的協(xié)議驅(qū)動(dòng)器要實(shí)現(xiàn)報(bào)頭的發(fā)送、“響應(yīng)”的處理,從節(jié)點(diǎn)的LIN協(xié)議驅(qū)動(dòng)器要實(shí)現(xiàn)的是報(bào)頭的接收和解析、“響應(yīng)”的處理。
● 應(yīng)用協(xié)議
應(yīng)用協(xié)議規(guī)范各節(jié)點(diǎn)之間的信息交互方式,定義通信規(guī)則,實(shí)現(xiàn)網(wǎng)絡(luò)管理和狀態(tài)管理。其制定比較復(fù)雜,需要綜合考慮汽車(chē)環(huán)境和網(wǎng)絡(luò)的安全性、實(shí)時(shí)性等因素。本文結(jié)合所研制的車(chē)燈控制系統(tǒng),從信號(hào)及其組裝、幀的定義實(shí)現(xiàn),進(jìn)度表的制定的角度,初步探討基于LIN總線(xiàn)的應(yīng)用協(xié)議的制定及實(shí)現(xiàn)。
(1)信號(hào)及其組裝
“信號(hào)”是“響應(yīng)”的組成要素,信號(hào)的定義取決于系統(tǒng)的運(yùn)行特點(diǎn)和控制對(duì)象的特性,在本車(chē)燈LIN網(wǎng)內(nèi),需要定義的有車(chē)燈控制信號(hào)、車(chē)燈狀態(tài)信號(hào)和車(chē)燈選擇對(duì)象信號(hào)。以布爾信號(hào)的形式定義車(chē)燈控制信號(hào)和狀態(tài)信號(hào),以單字節(jié)信號(hào)的形式定義車(chē)燈選擇對(duì)象。
表1車(chē)燈選擇信號(hào) |
車(chē)燈控制信號(hào)包括車(chē)燈點(diǎn)亮信號(hào)Flight_on、車(chē)燈關(guān)斷信號(hào)Flight_off、車(chē)燈閃爍信號(hào)Flight_glitter。通過(guò)對(duì)車(chē)燈進(jìn)行數(shù)字編號(hào)的方式,定義了車(chē)燈選擇信號(hào)Flight_select。將之按照在“響應(yīng)”中的位置(以位為單位)組裝為如下的方式,在控制幀內(nèi)傳輸。
每路車(chē)燈負(fù)載對(duì)應(yīng)一布爾信號(hào),表示該路是否出現(xiàn)故障(過(guò)溫、過(guò)壓、過(guò)電流、負(fù)載開(kāi)路),各車(chē)燈ECU將相關(guān)信號(hào)組裝起來(lái),在各自的狀態(tài)幀中傳輸。
(2)幀的定義及實(shí)現(xiàn)
根據(jù)LIN協(xié)議,幀包括無(wú)條件幀、事件觸發(fā)幀、零星幀三種。以無(wú)條件幀的形式定義控制幀和狀態(tài)幀,由于車(chē)燈的控制規(guī)律,左右燈要同時(shí)打開(kāi),所以左前車(chē)燈 ECU和右前車(chē)燈ECU共用一個(gè)前燈控制幀,左后車(chē)燈ECU和右后車(chē)燈ECU共用一個(gè)后燈控制幀,針對(duì)4個(gè)車(chē)燈節(jié)點(diǎn),相應(yīng)定義了4個(gè)狀態(tài)幀,用于反饋當(dāng)前控制對(duì)象的工作狀態(tài),即是否有過(guò)壓、過(guò)流、過(guò)溫情況發(fā)生。
對(duì)無(wú)條件幀而言,只要時(shí)間槽輪轉(zhuǎn)到該無(wú)條件幀,便要在總線(xiàn)上完整地傳輸。而零星幀的傳輸取決于所關(guān)聯(lián)的無(wú)條件幀內(nèi)信號(hào)的更新情況,只有在信號(hào)被更新的情況下,才傳輸所關(guān)聯(lián)的最高優(yōu)先級(jí)的無(wú)條件幀,然后在下個(gè)時(shí)間槽再次輪轉(zhuǎn)到該零星幀時(shí),再傳輸?shù)蛢?yōu)先級(jí)的無(wú)條件幀,否則該時(shí)間槽內(nèi)總線(xiàn)保持靜默。考慮到汽車(chē)環(huán)境對(duì)各個(gè)ECU的低功耗要求很高,且組合開(kāi)關(guān)的操作是偶爾且即時(shí)的,所以以零星幀填充進(jìn)度表,這樣在大部分時(shí)間內(nèi),開(kāi)關(guān)狀態(tài)不會(huì)產(chǎn)生變化,即所關(guān)聯(lián)的控制幀中信號(hào)不會(huì)被更新,當(dāng)時(shí)間槽輪轉(zhuǎn)到零星幀時(shí),總線(xiàn)保持靜默,超過(guò)4秒沒(méi)有總線(xiàn)信號(hào),主從節(jié)點(diǎn)便可以進(jìn)入休眠狀態(tài),滿(mǎn)足低功耗要求。表2給出了零星幀和所關(guān)聯(lián)控制幀的說(shuō)明。
表2零星幀和所關(guān)聯(lián)控制幀的說(shuō)明 |
(3)進(jìn)度表的制定
LIN總線(xiàn)的進(jìn)度表定義了幀在網(wǎng)絡(luò)中傳輸?shù)拇涡?,以及幀間的時(shí)間間隔,保證了LIN總線(xiàn)不會(huì)過(guò)載,同時(shí)保證了關(guān)鍵信號(hào)的周期性和實(shí)時(shí)性。
根據(jù)該LIN網(wǎng)的特點(diǎn),定義了三個(gè)進(jìn)度表:Normal_table、Status_table、Trigger_table,主節(jié)點(diǎn)根據(jù)當(dāng)前LIN網(wǎng)的狀態(tài)切換進(jìn)度表。 Normal_table由零星幀填充,是主節(jié)點(diǎn)的主要進(jìn)度表,這樣可以在組合開(kāi)關(guān)沒(méi)有動(dòng)作的情況下讓LIN集群處于休眠狀態(tài),休眠指令按照LIN幀的形式發(fā)送,采用數(shù)據(jù)場(chǎng)第一個(gè)字節(jié)為0x00的診斷幀實(shí)現(xiàn)。Status_table中包含對(duì)應(yīng)于四個(gè)車(chē)燈節(jié)點(diǎn)的四個(gè)狀態(tài)幀,Trigger_table中包含關(guān)聯(lián)于四個(gè)無(wú)條件狀態(tài)幀的事件觸發(fā)幀。由于各個(gè)車(chē)燈ECU可以對(duì)過(guò)流、過(guò)壓、過(guò)溫進(jìn)行保護(hù),且有保持車(chē)燈電壓的功能,所以主節(jié)點(diǎn)可以以較長(zhǎng)的周期把進(jìn)度表切換到Trigger_table,查詢(xún)相應(yīng)節(jié)點(diǎn)的狀態(tài),當(dāng)從節(jié)點(diǎn)有相應(yīng)信號(hào)被更新時(shí),主節(jié)點(diǎn)將進(jìn)度表切換到Status_table,得到相應(yīng)節(jié)點(diǎn)的狀態(tài),優(yōu)先級(jí)為左前車(chē)燈ECU>左后車(chē)燈ECU>右前車(chē)燈ECU>右后車(chē)燈ECU。
具體細(xì)節(jié)如下。當(dāng)時(shí)間槽輪轉(zhuǎn)到零星幀control時(shí),如果開(kāi)關(guān)狀態(tài)沒(méi)有改變,即所關(guān)聯(lián)的控制幀中信號(hào)沒(méi)有被更新,該時(shí)間槽內(nèi)總線(xiàn)保持靜默,如果有一個(gè)控制幀的信號(hào)被更新,該時(shí)間槽內(nèi)便會(huì)發(fā)送該無(wú)條件控制幀,如果在無(wú)條件控制幀中有多于一個(gè)信號(hào)被更新,主節(jié)點(diǎn)對(duì)這些控制幀做出“pending”標(biāo)志,然后在該時(shí)間槽內(nèi)發(fā)送最高優(yōu)先級(jí)(優(yōu)先級(jí)在零星幀中定義)的無(wú)條件控制幀,當(dāng)進(jìn)度表輪轉(zhuǎn)到下一個(gè)該零星幀的時(shí)間槽時(shí),“pending”狀態(tài)的候選幀便會(huì)被發(fā)送。
主節(jié)點(diǎn)以1秒鐘的間隔把進(jìn)度表切換到Trigger_table,當(dāng)時(shí)間槽輪轉(zhuǎn)到事件觸發(fā)幀status,如果在該幀數(shù)據(jù)場(chǎng)的第一個(gè)字節(jié)沒(méi)有得到任何數(shù)據(jù),即所關(guān)聯(lián)的無(wú)條件狀態(tài)幀沒(méi)有狀態(tài)信號(hào)被更新,總線(xiàn)在“響應(yīng)場(chǎng)”內(nèi)保持靜默,如果收到一個(gè)所關(guān)聯(lián)的無(wú)條件狀態(tài)幀的ID,后續(xù)得到的數(shù)據(jù)即該無(wú)條件狀態(tài)幀中被更新的“信號(hào)”,如果得到一個(gè)無(wú)法匹配的ID,便認(rèn)為總線(xiàn)沖突,即同時(shí)有至少兩個(gè)所關(guān)聯(lián)幀中的信號(hào)被更新,這時(shí),主節(jié)點(diǎn)要在該進(jìn)度表下一個(gè)時(shí)間槽開(kāi)始時(shí)切換進(jìn)度表到Status_table,然后輪詢(xún)各個(gè)狀態(tài)幀,輪詢(xún)結(jié)束后進(jìn)度表再切換回主進(jìn)度表Normal_table。
結(jié)束語(yǔ)
本文結(jié)合所研制的車(chē)燈控制系統(tǒng),介紹了系統(tǒng)結(jié)構(gòu)及硬件設(shè)計(jì)關(guān)鍵技術(shù),從制定和實(shí)現(xiàn)LIN協(xié)議驅(qū)動(dòng)器和應(yīng)用協(xié)議的兩個(gè)方面論述了LIN通信,實(shí)現(xiàn)了車(chē)燈控制和診斷。
參考文獻(xiàn)
[1] 鄭榮良,袁鵬平.局域互聯(lián)網(wǎng)絡(luò)LIN總線(xiàn)在車(chē)輛上的應(yīng)用.江蘇大學(xué)學(xué)報(bào).2004,2
[2] 李暉,曾潔,郭永偉.基于MC33993的鍵盤(pán)控制接口電路設(shè)計(jì).微電子技術(shù). 2004,3
[3] 劉曉明,高青春,熊東.基于CAN/LIN總線(xiàn)的汽車(chē)通信網(wǎng)絡(luò)設(shè)計(jì).微機(jī)發(fā)展.2005,8
[4] 侯樹(shù)梅,張?jiān)讫?蘇劍.一種新型汽車(chē)車(chē)身低端通信總線(xiàn)LIN.汽車(chē)技術(shù).2003,11
[5] 張翔,湯孫壽,曾虹.LIN總線(xiàn)在汽車(chē)車(chē)身控制中的應(yīng)用.杭州電子科技大學(xué)學(xué)報(bào).200,6
評(píng)論