<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 基于LIN總線的車燈控制系統(tǒng)

          基于LIN總線的車燈控制系統(tǒng)

          作者: 時(shí)間:2017-06-08 來源:網(wǎng)絡(luò) 收藏

          近幾年隨著LIN總線技術(shù)的出現(xiàn),由于其成本低廉,且采用可有效保證通信負(fù)載的一主多從結(jié)構(gòu),在通信速率要求不太高的車身電子領(lǐng)域,可以部分替代低速CAN|0">總線。筆者結(jié)合所研制的車燈網(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í)作為-網(wǎng)關(guān),與車身網(wǎng)連接。從節(jié)點(diǎn)為相應(yīng)位置的車燈節(jié)點(diǎn),節(jié)點(diǎn)間通過總線連接,系統(tǒng)結(jié)構(gòu)圖如圖1所示。主節(jié)點(diǎn)完成組合開關(guān)狀態(tài)的檢測,檢測到狀態(tài)變化時(shí),主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送控制幀,從節(jié)點(diǎn)接收控制幀,完成對(duì)車燈負(fù)載的控制,同時(shí)監(jiān)測過壓過流過溫情況的發(fā)生,并記錄其狀態(tài)。主節(jié)點(diǎn)周期性地發(fā)送查詢車燈狀態(tài)的狀態(tài)幀,并得到狀態(tài)。

            ● 關(guān)鍵技術(shù)

          圖1系統(tǒng)結(jié)構(gòu)圖

          本文引用地址:http://www.ex-cimer.com/article/201706/350839.htm

            (1)開關(guān)檢測

            組合開關(guān)信號(hào)的狀態(tài)檢測采用飛思卡爾的可編程多路開關(guān)檢測接口器件MC33993實(shí)現(xiàn),該器件可以檢測多達(dá)22路開關(guān)量輸入,采用SPI方式與進(jìn)行狀態(tài)設(shè)置及開關(guān)狀態(tài)反饋,不僅實(shí)現(xiàn)對(duì)開關(guān)狀態(tài)的可靠實(shí)時(shí)檢測,同時(shí)提供“濕性電流”保護(hù)開關(guān)觸點(diǎn),保證開關(guān)觸點(diǎn)的接觸完整性。

            (2)車燈控制

            車燈負(fù)載包括遠(yuǎn)光燈、近光燈、小燈、霧燈和轉(zhuǎn)向燈,其控制采用飛思卡爾的智能功率器件MC33888和MC33984實(shí)現(xiàn)。這些器件不僅提供開關(guān)控制功能,還提供電流控制、限流、熱保護(hù)、過壓保護(hù)和先進(jìn)的負(fù)載診斷。

            (3)過壓保護(hù)

            車燈負(fù)載不能很好地承受高電壓,過壓是導(dǎo)致車燈壽命變短的重要原因。車燈額定工作電壓為13.5V,實(shí)際上當(dāng)提供18V以上電壓達(dá)幾秒,就會(huì)產(chǎn)生故障,可以采用PWM的方式控制車燈的有效電壓值。設(shè)車燈電阻為R,車燈兩端電壓為U,則在時(shí)間T內(nèi),消耗的熱量W=U2T/R

            車燈電阻R為固定值,這樣車燈承受能量正比于電壓U的平方和工作時(shí)間T??梢酝ㄟ^PWM調(diào)節(jié)占空比d,從而調(diào)節(jié)有效工作時(shí)間T,這樣當(dāng)電壓達(dá)到18V 時(shí),調(diào)節(jié)占空比d到(13.5/18)2=56%,便能保證車燈的正常工作。在電路中通過檢測電壓值V,當(dāng)電壓值V>13.5V時(shí),按照如下公式計(jì)算占空比:

             d=(13.5/V)2

            這樣通過調(diào)節(jié)占空比,實(shí)現(xiàn)了對(duì)車燈工作電壓平均值的控制,有效保護(hù)了車燈負(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的可以采用中斷服務(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ù)雜,需要綜合考慮汽車環(huán)境和網(wǎng)絡(luò)的安全性、實(shí)時(shí)性等因素。本文結(jié)合所研制的車燈控制系統(tǒng),從信號(hào)及其組裝、幀的定義實(shí)現(xiàn),進(jìn)度表的制定的角度,初步探討基于LIN總線的應(yīng)用協(xié)議的制定及實(shí)現(xiàn)。

            (1)信號(hào)及其組裝

            “信號(hào)”是“響應(yīng)”的組成要素,信號(hào)的定義取決于系統(tǒng)的運(yùn)行特點(diǎn)和控制對(duì)象的特性,在本車燈LIN網(wǎng)內(nèi),需要定義的有車燈控制信號(hào)、車燈狀態(tài)信號(hào)和車燈選擇對(duì)象信號(hào)。以布爾信號(hào)的形式定義車燈控制信號(hào)和狀態(tài)信號(hào),以單字節(jié)信號(hào)的形式定義車燈選擇對(duì)象。

          表1車燈選擇信號(hào)

            車燈控制信號(hào)包括車燈點(diǎn)亮信號(hào)Flight_on、車燈關(guān)斷信號(hào)Flight_off、車燈閃爍信號(hào)Flight_glitter。通過對(duì)車燈進(jìn)行數(shù)字編號(hào)的方式,定義了車燈選擇信號(hào)Flight_select。將之按照在“響應(yīng)”中的位置(以位為單位)組裝為如下的方式,在控制幀內(nèi)傳輸?! ?

            每路車燈負(fù)載對(duì)應(yīng)一布爾信號(hào),表示該路是否出現(xiàn)故障(過溫、過壓、過電流、負(fù)載開路),各車燈將相關(guān)信號(hào)組裝起來,在各自的狀態(tài)幀中傳輸。

            (2)幀的定義及實(shí)現(xiàn)

            根據(jù)LIN協(xié)議,幀包括無條件幀、事件觸發(fā)幀、零星幀三種。以無條件幀的形式定義控制幀和狀態(tài)幀,由于車燈的控制規(guī)律,左右燈要同時(shí)打開,所以左前車燈 ECU和右前車燈ECU共用一個(gè)前燈控制幀,左后車燈ECU和右后車燈ECU共用一個(gè)后燈控制幀,針對(duì)4個(gè)車燈節(jié)點(diǎn),相應(yīng)定義了4個(gè)狀態(tài)幀,用于反饋當(dāng)前控制對(duì)象的工作狀態(tài),即是否有過壓、過流、過溫情況發(fā)生。

            對(duì)無條件幀而言,只要時(shí)間槽輪轉(zhuǎn)到該無條件幀,便要在總線上完整地傳輸。而零星幀的傳輸取決于所關(guān)聯(lián)的無條件幀內(nèi)信號(hào)的更新情況,只有在信號(hào)被更新的情況下,才傳輸所關(guān)聯(lián)的最高優(yōu)先級(jí)的無條件幀,然后在下個(gè)時(shí)間槽再次輪轉(zhuǎn)到該零星幀時(shí),再傳輸?shù)蛢?yōu)先級(jí)的無條件幀,否則該時(shí)間槽內(nèi)總線保持靜默??紤]到汽車環(huán)境對(duì)各個(gè)ECU的低功耗要求很高,且組合開關(guān)的操作是偶爾且即時(shí)的,所以以零星幀填充進(jìn)度表,這樣在大部分時(shí)間內(nèi),開關(guān)狀態(tài)不會(huì)產(chǎn)生變化,即所關(guān)聯(lián)的控制幀中信號(hào)不會(huì)被更新,當(dāng)時(shí)間槽輪轉(zhuǎn)到零星幀時(shí),總線保持靜默,超過4秒沒有總線信號(hào),主從節(jié)點(diǎn)便可以進(jìn)入休眠狀態(tài),滿足低功耗要求。表2給出了零星幀和所關(guān)聯(lián)控制幀的說明。

          表2零星幀和所關(guān)聯(lián)控制幀的說明

            為了降低總線負(fù)載,將4個(gè)狀態(tài)幀關(guān)聯(lián)到同一個(gè)事件觸發(fā)幀,當(dāng)時(shí)間槽輪轉(zhuǎn)到該事件觸發(fā)幀時(shí),如果各個(gè)狀態(tài)幀內(nèi)信號(hào)沒有更新,這樣在主節(jié)點(diǎn)發(fā)送幀頭后,該時(shí)間槽的其余時(shí)間內(nèi)保持靜默。如果有多個(gè)狀態(tài)幀內(nèi)的信號(hào)發(fā)生更新,這時(shí)便會(huì)產(chǎn)生“沖突”,主節(jié)點(diǎn)在當(dāng)前時(shí)間槽結(jié)束后切換進(jìn)度表,依次讀取各個(gè)ECU的狀態(tài)。

            (3)進(jìn)度表的制定

            LIN總線的進(jìn)度表定義了幀在網(wǎng)絡(luò)中傳輸?shù)拇涡?,以及幀間的時(shí)間間隔,保證了LIN總線不會(huì)過載,同時(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)度表,這樣可以在組合開關(guān)沒有動(dòng)作的情況下讓LIN集群處于休眠狀態(tài),休眠指令按照LIN幀的形式發(fā)送,采用數(shù)據(jù)場第一個(gè)字節(jié)為0x00的診斷幀實(shí)現(xiàn)。Status_table中包含對(duì)應(yīng)于四個(gè)車燈節(jié)點(diǎn)的四個(gè)狀態(tài)幀,Trigger_table中包含關(guān)聯(lián)于四個(gè)無條件狀態(tài)幀的事件觸發(fā)幀。由于各個(gè)車燈ECU可以對(duì)過流、過壓、過溫進(jìn)行保護(hù),且有保持車燈電壓的功能,所以主節(jié)點(diǎn)可以以較長的周期把進(jìn)度表切換到Trigger_table,查詢相應(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í)為左前車燈ECU>左后車燈ECU>右前車燈ECU>右后車燈ECU。

            具體細(xì)節(jié)如下。當(dāng)時(shí)間槽輪轉(zhuǎn)到零星幀control時(shí),如果開關(guān)狀態(tài)沒有改變,即所關(guān)聯(lián)的控制幀中信號(hào)沒有被更新,該時(shí)間槽內(nèi)總線保持靜默,如果有一個(gè)控制幀的信號(hào)被更新,該時(shí)間槽內(nèi)便會(huì)發(fā)送該無條件控制幀,如果在無條件控制幀中有多于一個(gè)信號(hào)被更新,主節(jié)點(diǎn)對(duì)這些控制幀做出“pending”標(biāo)志,然后在該時(shí)間槽內(nèi)發(fā)送最高優(yōu)先級(jí)(優(yōu)先級(jí)在零星幀中定義)的無條件控制幀,當(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ù)場的第一個(gè)字節(jié)沒有得到任何數(shù)據(jù),即所關(guān)聯(lián)的無條件狀態(tài)幀沒有狀態(tài)信號(hào)被更新,總線在“響應(yīng)場”內(nèi)保持靜默,如果收到一個(gè)所關(guān)聯(lián)的無條件狀態(tài)幀的ID,后續(xù)得到的數(shù)據(jù)即該無條件狀態(tài)幀中被更新的“信號(hào)”,如果得到一個(gè)無法匹配的ID,便認(rèn)為總線沖突,即同時(shí)有至少兩個(gè)所關(guān)聯(lián)幀中的信號(hào)被更新,這時(shí),主節(jié)點(diǎn)要在該進(jìn)度表下一個(gè)時(shí)間槽開始時(shí)切換進(jìn)度表到Status_table,然后輪詢各個(gè)狀態(tài)幀,輪詢結(jié)束后進(jìn)度表再切換回主進(jìn)度表Normal_table。

          結(jié)束語

            本文結(jié)合所研制的車燈控制系統(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)了車燈控制和診斷。

          參考文獻(xiàn)

          [1] 鄭榮良,袁鵬平.局域互聯(lián)網(wǎng)絡(luò)LIN總線在車輛上的應(yīng)用.江蘇大學(xué)學(xué)報(bào).2004,2
          [2] 李暉,曾潔,郭永偉.基于MC33993的鍵盤控制接口電路設(shè)計(jì).微電子技術(shù). 2004,3
          [3] 劉曉明,高青春,熊東.基于CAN/LIN總線的汽車通信網(wǎng)絡(luò)設(shè)計(jì).微機(jī)發(fā)展.2005,8
          [4] 侯樹梅,張?jiān)讫?蘇劍.一種新型汽車車身低端通信總線LIN.汽車技術(shù).2003,11
          [5] 張翔,湯孫壽,曾虹.LIN總線在汽車車身控制中的應(yīng)用.杭州電子科技大學(xué)學(xué)報(bào).200,6



          關(guān)鍵詞: LIN CAN ECU MCU

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();