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