窗控制中的應(yīng)用:低成本車(chē)載通信協(xié)議實(shí)戰(zhàn)解析)
1. 從車(chē)窗按鈕到LIN總線一個(gè)被低估的通信協(xié)議當(dāng)你按下駕駛位車(chē)門(mén)上的車(chē)窗升降按鈕期待玻璃平穩(wěn)滑落時(shí)你可能不會(huì)想到這個(gè)看似簡(jiǎn)單的動(dòng)作背后正運(yùn)行著一套精密的通信系統(tǒng)。在汽車(chē)電子架構(gòu)中像車(chē)窗、后視鏡、雨刮、座椅調(diào)節(jié)這類(lèi)功能對(duì)通信的實(shí)時(shí)性和帶寬要求遠(yuǎn)不如發(fā)動(dòng)機(jī)控制或剎車(chē)系統(tǒng)那么苛刻但它們數(shù)量龐大、分布廣泛且對(duì)成本極其敏感。如果為每一個(gè)這樣的節(jié)點(diǎn)都部署一條高速的CAN總線成本將難以承受。于是LIN總線應(yīng)運(yùn)而生成為了這類(lèi)車(chē)身電子控制領(lǐng)域的“性價(jià)比之王”。今天我們就來(lái)深入聊聊這個(gè)在車(chē)載網(wǎng)絡(luò)中無(wú)處不在卻又常常被忽視的通信協(xié)議——LIN特別是它在車(chē)窗控制這個(gè)經(jīng)典場(chǎng)景中的應(yīng)用。LIN全稱(chēng)Local Interconnect Network即本地互聯(lián)網(wǎng)絡(luò)。它的設(shè)計(jì)初衷非常明確作為CAN總線的補(bǔ)充用于實(shí)現(xiàn)汽車(chē)中的分布式電子系統(tǒng)控制是一種低成本的串行通信網(wǎng)絡(luò)。在車(chē)窗控制系統(tǒng)中主控單元通常是車(chē)門(mén)模塊或車(chē)身控制器BCM作為L(zhǎng)IN主節(jié)點(diǎn)而四個(gè)車(chē)門(mén)上的車(chē)窗電機(jī)驅(qū)動(dòng)器則作為L(zhǎng)IN從節(jié)點(diǎn)。當(dāng)你按下按鈕主節(jié)點(diǎn)會(huì)向?qū)?yīng)的從節(jié)點(diǎn)發(fā)送指令從節(jié)點(diǎn)驅(qū)動(dòng)電機(jī)動(dòng)作并將狀態(tài)如堵轉(zhuǎn)、防夾觸發(fā)反饋回主節(jié)點(diǎn)。整個(gè)過(guò)程數(shù)據(jù)就在這一主多從的簡(jiǎn)單網(wǎng)絡(luò)里安靜而可靠地流轉(zhuǎn)。理解LIN不僅是理解一種通信協(xié)議更是理解汽車(chē)電子在成本、可靠性與功能之間所做的精妙權(quán)衡。2. LIN協(xié)議核心機(jī)制為何簡(jiǎn)單即是美要理解LIN在車(chē)窗控制中的應(yīng)用必須先吃透它的協(xié)議機(jī)制。LIN的設(shè)計(jì)哲學(xué)是“夠用就好”這體現(xiàn)在其通信模型的方方面面。2.1 單主多從與基于調(diào)度的通信LIN網(wǎng)絡(luò)采用單主節(jié)點(diǎn)、多從節(jié)點(diǎn)的結(jié)構(gòu)這是其低成本的關(guān)鍵。主節(jié)點(diǎn)控制整個(gè)網(wǎng)絡(luò)的通信節(jié)奏它內(nèi)部有一個(gè)預(yù)先定義好的“調(diào)度表”。這個(gè)表規(guī)定了在什么時(shí)間發(fā)送哪個(gè)“幀”的“幀頭”。你可以把調(diào)度表想象成一份公交時(shí)刻表主節(jié)點(diǎn)是唯一的調(diào)度員它嚴(yán)格按照時(shí)刻表來(lái)喊“現(xiàn)在1路車(chē)幀ID為0x01的幀準(zhǔn)備發(fā)車(chē)”這里就引出了LIN幀的結(jié)構(gòu)。一個(gè)完整的LIN幀由主節(jié)點(diǎn)發(fā)送的“幀頭”和從節(jié)點(diǎn)或主節(jié)點(diǎn)自己發(fā)送的“幀響應(yīng)”組成。幀頭包含同步間隔場(chǎng)、同步字節(jié)固定為0x55和受保護(hù)的標(biāo)識(shí)符場(chǎng)PID。這個(gè)PID至關(guān)重要它既包含了幀的ID低6位也包含了幀數(shù)據(jù)場(chǎng)的字節(jié)數(shù)信息高2位。從節(jié)點(diǎn)監(jiān)聽(tīng)總線當(dāng)識(shí)別到屬于自己的幀ID時(shí)便會(huì)在幀頭后的“響應(yīng)間隔”和“響應(yīng)場(chǎng)”中填充數(shù)據(jù)。對(duì)于車(chē)窗控制主節(jié)點(diǎn)車(chē)門(mén)模塊的調(diào)度表可能會(huì)周期性地輪詢各個(gè)車(chē)窗從節(jié)點(diǎn)。例如每20毫秒發(fā)送一個(gè)ID為0x21的幀頭請(qǐng)求左前車(chē)窗電機(jī)上報(bào)當(dāng)前位置和狀態(tài)再隔20毫秒發(fā)送ID為0x22的幀頭請(qǐng)求右前車(chē)窗狀態(tài)。這種基于調(diào)度的輪詢避免了多個(gè)從節(jié)點(diǎn)同時(shí)發(fā)言導(dǎo)致的沖突無(wú)需復(fù)雜的仲裁機(jī)制硬件和軟件實(shí)現(xiàn)都得以簡(jiǎn)化。2.2 非破壞性仲裁與受保護(hù)標(biāo)識(shí)符LIN沒(méi)有CAN那樣的非破壞性位仲裁機(jī)制因?yàn)樗静恍枰?。通信的主?dǎo)權(quán)完全掌握在主節(jié)點(diǎn)手中。那么如何保證幀頭在傳輸過(guò)程中不出錯(cuò)呢答案就在“受保護(hù)標(biāo)識(shí)符”中。PID的計(jì)算方式是ID6位數(shù)據(jù)分別與它們的奇偶校驗(yàn)位進(jìn)行組合。具體算法是將6位IDD0~D5的奇偶校驗(yàn)位P0和P1放在ID的高兩位。其中P0 ID0 XOR ID1 XOR ID2 XOR ID4 P1 !(ID1 XOR ID3 XOR ID4 XOR ID5)。接收方在收到PID后會(huì)按照同樣的規(guī)則進(jìn)行校驗(yàn)。如果校驗(yàn)失敗則丟棄該幀頭。這種機(jī)制以極小的開(kāi)銷(xiāo)2個(gè)奇偶校驗(yàn)位為幀ID即通信的目標(biāo)提供了基本的保護(hù)。在車(chē)窗控制中如果主節(jié)點(diǎn)發(fā)送的請(qǐng)求左前車(chē)窗ID0x21的幀頭在傳輸中因干擾發(fā)生位翻轉(zhuǎn)導(dǎo)致從節(jié)點(diǎn)解析出的ID變成了0x22右前車(chē)窗那么右前車(chē)窗電機(jī)就會(huì)錯(cuò)誤響應(yīng)造成控制混亂。PID校驗(yàn)?zāi)茉诤艽蟪潭壬媳苊膺@類(lèi)錯(cuò)誤。2.3 靈活的幀類(lèi)型與數(shù)據(jù)場(chǎng)LIN定義了多種幀類(lèi)型以適應(yīng)不同場(chǎng)景無(wú)條件幀最常見(jiàn)的類(lèi)型當(dāng)主節(jié)點(diǎn)發(fā)出該幀的幀頭時(shí)指定的從節(jié)點(diǎn)或主節(jié)點(diǎn)自身必須響應(yīng)。車(chē)窗狀態(tài)查詢和電機(jī)控制指令通常使用無(wú)條件幀。事件觸發(fā)幀用于從節(jié)點(diǎn)向主節(jié)點(diǎn)主動(dòng)上報(bào)事件如防夾功能觸發(fā)。多個(gè)從節(jié)點(diǎn)可以共享同一個(gè)幀ID。當(dāng)某個(gè)從節(jié)點(diǎn)有事件需要上報(bào)時(shí)它會(huì)在主節(jié)點(diǎn)發(fā)送該幀頭后搶先響應(yīng)。如果發(fā)生沖突多個(gè)從節(jié)點(diǎn)同時(shí)響應(yīng)主節(jié)點(diǎn)會(huì)通過(guò)后續(xù)發(fā)送各從節(jié)點(diǎn)的無(wú)條件幀來(lái)逐一查詢以分辨是哪個(gè)節(jié)點(diǎn)觸發(fā)了事件。這為像車(chē)門(mén)鎖開(kāi)關(guān)這類(lèi)多個(gè)輸入信號(hào)提供了高效的匯報(bào)機(jī)制。零星幀由主節(jié)點(diǎn)在需要時(shí)才插入調(diào)度表的幀用于非周期性的通信。診斷幀幀ID固定為0x3C主請(qǐng)求和0x3D從響應(yīng)用于讀取從節(jié)點(diǎn)標(biāo)識(shí)、配置參數(shù)或執(zhí)行診斷命令。在生產(chǎn)線末端或4S店維修時(shí)工程師通過(guò)診斷儀連接LIN總線發(fā)送0x3C幀就可以讀取車(chē)窗電機(jī)的序列號(hào)、軟件版本號(hào)或故障碼。數(shù)據(jù)場(chǎng)長(zhǎng)度可以是1到8個(gè)字節(jié)對(duì)于車(chē)窗控制綽綽有余。一個(gè)典型的數(shù)據(jù)場(chǎng)可能包含1字節(jié)控制指令上升、下降、停止、1字節(jié)目標(biāo)位置、1字節(jié)當(dāng)前狀態(tài)運(yùn)行中、堵轉(zhuǎn)、初始化完成、1字節(jié)故障碼。注意LIN 2.0及以上規(guī)范強(qiáng)化了診斷幀的使用并引入了“配置幀”的概念用于動(dòng)態(tài)分配從節(jié)點(diǎn)的地址稱(chēng)為NAD這使得生產(chǎn)線上相同硬件的從節(jié)點(diǎn)可以被靈活配置到不同位置降低了物料管理成本。在車(chē)窗電機(jī)中這可能意味著四個(gè)車(chē)門(mén)可以使用完全相同的電機(jī)硬件通過(guò)LIN配置賦予它們不同的邏輯地址。3. 車(chē)窗控制系統(tǒng)的LIN實(shí)戰(zhàn)從信號(hào)到動(dòng)作理論需要結(jié)合實(shí)際。我們以一個(gè)典型的四門(mén)車(chē)窗控制系統(tǒng)為例拆解LIN通信如何一步步將你的按鈕按壓轉(zhuǎn)化為玻璃的升降。3.1 系統(tǒng)架構(gòu)與節(jié)點(diǎn)分工假設(shè)我們有一個(gè)集成度較高的車(chē)身控制器BCM作為L(zhǎng)IN主節(jié)點(diǎn)同時(shí)管理四個(gè)車(chē)門(mén)的車(chē)窗。每個(gè)車(chē)門(mén)內(nèi)有一個(gè)智能電機(jī)驅(qū)動(dòng)器作為L(zhǎng)IN從節(jié)點(diǎn)。這個(gè)驅(qū)動(dòng)器通常集成了MOSFET H橋用于控制電機(jī)正反轉(zhuǎn)、電流采樣電路、位置傳感器如霍爾傳感器接口和一個(gè)微控制器MCUMCU負(fù)責(zé)LIN協(xié)議處理、電機(jī)驅(qū)動(dòng)算法如PWM控制和防夾邏輯。主節(jié)點(diǎn)BCM職責(zé)掃描所有車(chē)窗升降按鈕包括駕駛位的主控板和各個(gè)車(chē)門(mén)上的分控按鈕和車(chē)窗鎖止開(kāi)關(guān)。根據(jù)按鈕信號(hào)、鎖止?fàn)顟B(tài)、車(chē)輛速度來(lái)自CAN總線和安全邏輯如點(diǎn)火開(kāi)關(guān)狀態(tài)生成車(chē)窗控制指令。維護(hù)LIN調(diào)度表周期性地發(fā)送各車(chē)窗的狀態(tài)查詢幀和控制指令幀。處理從節(jié)點(diǎn)上報(bào)的事件如防夾觸發(fā)并可能通過(guò)CAN總線向儀表盤(pán)發(fā)送警告信息。從節(jié)點(diǎn)車(chē)窗電機(jī)驅(qū)動(dòng)器職責(zé)監(jiān)聽(tīng)LIN總線響應(yīng)屬于自己的幀ID。執(zhí)行主節(jié)點(diǎn)下發(fā)的控制指令驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)。實(shí)時(shí)監(jiān)測(cè)電機(jī)電流和車(chē)窗位置實(shí)現(xiàn)防夾功能。在狀態(tài)查詢幀中上報(bào)當(dāng)前位置、運(yùn)行狀態(tài)、故障信息。在發(fā)生防夾等事件時(shí)通過(guò)事件觸發(fā)幀或改變狀態(tài)字主動(dòng)上報(bào)。3.2 通信報(bào)文交互流程我們模擬一次“駕駛位控制左后車(chē)窗下降”的完整通信過(guò)程事件觸發(fā)駕駛員按下駕駛位主控板上的“左后車(chē)窗下降”按鈕。BCM主節(jié)點(diǎn)的IO口檢測(cè)到該下降信號(hào)。邏輯決策BCM檢查“車(chē)窗鎖止開(kāi)關(guān)”是否處于解鎖狀態(tài)并檢查車(chē)輛是否處于允許車(chē)窗操作的狀態(tài)如非高速行駛。條件滿足BCM生成控制指令。主節(jié)點(diǎn)發(fā)起通信根據(jù)調(diào)度表輪到發(fā)送ID為0x24假設(shè)對(duì)應(yīng)左后車(chē)窗控制幀的幀頭。BCM在幀頭后的數(shù)據(jù)響應(yīng)場(chǎng)中填入控制數(shù)據(jù)例如0x01下降指令、0x00目標(biāo)位置0表示完全下降、0x00保留。從節(jié)點(diǎn)接收與執(zhí)行左后車(chē)窗的電機(jī)驅(qū)動(dòng)器從節(jié)點(diǎn)識(shí)別到幀ID 0x24是給自己的它讀取數(shù)據(jù)場(chǎng)的3個(gè)字節(jié)。解析出下降指令后它立即啟動(dòng)電機(jī)驅(qū)動(dòng)電路使電機(jī)向下降方向旋轉(zhuǎn)。同時(shí)它開(kāi)始實(shí)時(shí)監(jiān)測(cè)電機(jī)電流。狀態(tài)反饋在下一個(gè)調(diào)度周期BCM發(fā)送ID為0x34假設(shè)對(duì)應(yīng)左后車(chē)窗狀態(tài)查詢幀的幀頭。左后車(chē)窗從節(jié)點(diǎn)在響應(yīng)數(shù)據(jù)場(chǎng)中填入當(dāng)前狀態(tài)例如0x40當(dāng)前位置64%、0x02狀態(tài)運(yùn)行中、0x00無(wú)故障。防夾處理在下降過(guò)程中如果電機(jī)電流突然升高超過(guò)設(shè)定閾值表明可能遇到障礙物。從節(jié)點(diǎn)的防夾算法立即觸發(fā)它首先會(huì)命令電機(jī)反轉(zhuǎn)上升一段距離如100mm然后停止。事件上報(bào)防夾觸發(fā)是一個(gè)需要立即通知主節(jié)點(diǎn)的事件。從節(jié)點(diǎn)可以通過(guò)兩種方式上報(bào)方式一事件觸發(fā)幀如果網(wǎng)絡(luò)定義了事件觸發(fā)幀從節(jié)點(diǎn)會(huì)在主節(jié)點(diǎn)發(fā)送對(duì)應(yīng)幀頭時(shí)搶先響應(yīng)在數(shù)據(jù)場(chǎng)中放置防夾事件碼。方式二狀態(tài)字變化更常見(jiàn)的做法是從節(jié)點(diǎn)在下一個(gè)狀態(tài)查詢幀的響應(yīng)中將狀態(tài)字節(jié)的“故障位”置起并填入具體的防夾事件碼。BCM收到后可以發(fā)出提示音并通過(guò)CAN總線在儀表盤(pán)上顯示警告圖標(biāo)。動(dòng)作完成車(chē)窗下降到底部從節(jié)點(diǎn)檢測(cè)到位置傳感器到達(dá)下限位自動(dòng)停止電機(jī)并在狀態(tài)字節(jié)中更新為“停止”狀態(tài)。整個(gè)過(guò)程中LIN總線上的報(bào)文簡(jiǎn)潔而高效。一個(gè)控制幀或狀態(tài)幀通常只有3-5個(gè)數(shù)據(jù)字節(jié)在20kbps的典型速率下傳輸一幀數(shù)據(jù)僅需幾毫秒完全滿足車(chē)窗控制的實(shí)時(shí)性要求。3.3 關(guān)鍵參數(shù)與硬件選型考量在實(shí)際工程中以下幾個(gè)參數(shù)和選型點(diǎn)需要仔細(xì)考量通信速率LIN支持1kbps到20kbps的速率。車(chē)窗控制常用9.6kbps或19.2kbps。速率越低抗干擾能力越強(qiáng)但響應(yīng)時(shí)間會(huì)變長(zhǎng)。需要根據(jù)網(wǎng)絡(luò)長(zhǎng)度通常小于40米和節(jié)點(diǎn)數(shù)量權(quán)衡。我個(gè)人的經(jīng)驗(yàn)是在車(chē)門(mén)這類(lèi)短距離、電磁環(huán)境尚可的區(qū)域19.2kbps是兼顧速度和可靠性的不錯(cuò)選擇。主節(jié)點(diǎn)MCU需要至少一個(gè)UART接口并支持LIN協(xié)議通常作為UART的一個(gè)工作模式。許多汽車(chē)級(jí)MCU如NXP S32K TI Hercules Renesas RH850都內(nèi)置了LIN硬件控制器可以自動(dòng)處理幀頭生成、校驗(yàn)、超時(shí)等大大減輕CPU負(fù)擔(dān)。從節(jié)點(diǎn)方案分立方案MCU 獨(dú)立的LIN收發(fā)器芯片如TJA1020。靈活性高但占板面積大。集成方案選擇內(nèi)置LIN收發(fā)器的電機(jī)驅(qū)動(dòng)芯片或?qū)S脧墓?jié)點(diǎn)芯片。例如一些智能電機(jī)驅(qū)動(dòng)芯片將LIN PHY、預(yù)驅(qū)、MOSFET甚至電流采樣都集成在一顆芯片內(nèi)極大簡(jiǎn)化了從節(jié)點(diǎn)的設(shè)計(jì)。這對(duì)于空間受限的車(chē)門(mén)模塊來(lái)說(shuō)是首選。線束與物理層LIN采用單線傳輸參考地為車(chē)身地。線束一般使用成本更低的非屏蔽線。需要在總線兩端并聯(lián)終端電阻通常主節(jié)點(diǎn)1kΩ從節(jié)點(diǎn)30kΩ等效于1kΩ//30kΩ≈1kΩ以抑制信號(hào)反射。布線時(shí)應(yīng)避免與高壓線束平行走線以減少干擾。4. LIN開(kāi)發(fā)與測(cè)試中的“坑”與應(yīng)對(duì)策略即便LIN協(xié)議相對(duì)簡(jiǎn)單在車(chē)載零部件的開(kāi)發(fā)與測(cè)試中依然有不少細(xì)節(jié)容易踩坑。下面分享幾個(gè)我在項(xiàng)目中遇到的實(shí)際問(wèn)題及解決方法。4.1 同步間隔場(chǎng)與從節(jié)點(diǎn)喚醒的時(shí)序陷阱LIN幀以主節(jié)點(diǎn)發(fā)送一個(gè)“同步間隔場(chǎng)”開(kāi)始該場(chǎng)由至少13位的顯性電平邏輯0和至少1位的隱性電平邏輯1組成。這個(gè)獨(dú)特的長(zhǎng)低電平信號(hào)用于從節(jié)點(diǎn)同步并喚醒處于睡眠模式的從節(jié)點(diǎn)。這里的一個(gè)常見(jiàn)陷阱是從節(jié)點(diǎn)的喚醒靈敏度。為了節(jié)能當(dāng)總線空閑一段時(shí)間后從節(jié)點(diǎn)會(huì)進(jìn)入睡眠模式。此時(shí)只有主節(jié)點(diǎn)發(fā)送的同步間隔場(chǎng)能將其喚醒。但如果總線上存在毛刺或干擾產(chǎn)生了一個(gè)類(lèi)似同步間隔場(chǎng)的長(zhǎng)時(shí)間低電平可能導(dǎo)致從節(jié)點(diǎn)誤喚醒消耗電量。因此在從節(jié)點(diǎn)固件開(kāi)發(fā)時(shí)需要仔細(xì)配置硬件濾波器和軟件上的喚醒驗(yàn)證邏輯例如檢測(cè)到長(zhǎng)低電平后緊接著檢查是否收到有效的同步字節(jié)0x55。另一個(gè)陷阱是主節(jié)點(diǎn)初始化時(shí)間。在整車(chē)網(wǎng)絡(luò)喚醒后BCM主節(jié)點(diǎn)需要完成自身初始化才能開(kāi)始發(fā)送LIN調(diào)度表。而車(chē)窗電機(jī)從節(jié)點(diǎn)可能上電更早它們會(huì)在總線上等待主節(jié)點(diǎn)的幀頭。如果等待超時(shí)LIN規(guī)范有超時(shí)要求從節(jié)點(diǎn)可能會(huì)報(bào)“通信超時(shí)”故障。因此主節(jié)點(diǎn)的啟動(dòng)軟件必須優(yōu)化確保在從節(jié)點(diǎn)超時(shí)前發(fā)出第一個(gè)有效的幀頭。在測(cè)試中我們需要用示波器或LIN分析儀如Vector VN1640A捕獲上電初期的總線波形嚴(yán)格測(cè)量從節(jié)點(diǎn)上電到收到第一個(gè)有效幀頭的時(shí)間間隔。4.2 幀響應(yīng)超時(shí)與從節(jié)點(diǎn)故障診斷根據(jù)LIN規(guī)范從節(jié)點(diǎn)需要在幀頭結(jié)束后的“響應(yīng)間隔”和“響應(yīng)場(chǎng)”時(shí)間內(nèi)完成響應(yīng)。如果從節(jié)點(diǎn)沒(méi)有響應(yīng)主節(jié)點(diǎn)應(yīng)能檢測(cè)到這種超時(shí)。在車(chē)窗控制中如果某個(gè)車(chē)窗電機(jī)無(wú)響應(yīng)可能的原因有電機(jī)供電故障、LIN線斷路或短路、從節(jié)點(diǎn)MCU死機(jī)、從節(jié)點(diǎn)地址配置錯(cuò)誤等。一個(gè)健壯的主節(jié)點(diǎn)軟件應(yīng)該實(shí)現(xiàn)幀響應(yīng)超時(shí)監(jiān)控。當(dāng)連續(xù)多次如3-5次收不到某個(gè)從節(jié)點(diǎn)的響應(yīng)時(shí)主節(jié)點(diǎn)應(yīng)記錄故障碼DTC并可能采取安全措施如禁用對(duì)該車(chē)窗的控制并通過(guò)CAN總線點(diǎn)亮故障燈。在開(kāi)發(fā)階段我們可以使用CANoe.LIN或Peak-System的PCAN-LIN設(shè)備模擬主節(jié)點(diǎn)或從節(jié)點(diǎn)故意制造超時(shí)、錯(cuò)誤響應(yīng)等場(chǎng)景來(lái)驗(yàn)證主從節(jié)點(diǎn)的故障處理機(jī)制是否完善。4.3 防夾功能與LIN通信延遲的耦合車(chē)窗防夾是安全功能其響應(yīng)時(shí)間有嚴(yán)格要求例如遇到障礙物后必須在XX毫秒內(nèi)開(kāi)始反轉(zhuǎn)。這個(gè)響應(yīng)時(shí)間由幾部分組成電流采樣與濾波時(shí)間、算法判斷時(shí)間、電機(jī)控制響應(yīng)時(shí)間以及可能的LIN通信延遲。在“一鍵升降”功能中主節(jié)點(diǎn)發(fā)送一個(gè)“下降到底”的指令后就等待從節(jié)點(diǎn)上報(bào)防夾事件了。從節(jié)點(diǎn)檢測(cè)到障礙物到主節(jié)點(diǎn)得知此事中間存在一個(gè)LIN通信周期。如果調(diào)度表中查詢?cè)撥?chē)窗狀態(tài)的周期是50ms那么在最壞情況下主節(jié)點(diǎn)需要等50ms才知道發(fā)生了防夾這可能會(huì)超出安全時(shí)間要求。解決方案是本地化處理防夾的判斷和緊急反轉(zhuǎn)動(dòng)作必須由從節(jié)點(diǎn)電機(jī)驅(qū)動(dòng)器本地獨(dú)立完成無(wú)需主節(jié)點(diǎn)干預(yù)。從節(jié)點(diǎn)在觸發(fā)防夾并執(zhí)行反轉(zhuǎn)后再通過(guò)LIN將事件狀態(tài)上報(bào)給主節(jié)點(diǎn)。這樣就將安全功能的響應(yīng)時(shí)間與LIN通信延遲解耦確保了實(shí)時(shí)性。在軟件設(shè)計(jì)上必須明確區(qū)分“控制指令通路”和“狀態(tài)報(bào)告通路”安全相關(guān)的實(shí)時(shí)決策必須放在最靠近執(zhí)行器的節(jié)點(diǎn)上。4.4 電磁兼容性測(cè)試的挑戰(zhàn)LIN總線工作在單線、非屏蔽、較低速率的條件下對(duì)電磁干擾比較敏感。在EMC測(cè)試中尤其是射頻輻射抗擾度測(cè)試時(shí)強(qiáng)烈的電磁場(chǎng)可能會(huì)耦合到LIN線上導(dǎo)致幀錯(cuò)誤或通信中斷。我遇到過(guò)的一個(gè)案例是在進(jìn)行車(chē)載收音機(jī)的大電流注入測(cè)試時(shí)車(chē)窗偶爾會(huì)誤動(dòng)作。排查后發(fā)現(xiàn)干擾通過(guò)線束耦合進(jìn)了LIN網(wǎng)絡(luò)導(dǎo)致從節(jié)點(diǎn)錯(cuò)誤解析了幀ID。最終的解決措施是綜合性的硬件上在LIN收發(fā)器靠近MCU的引腳處增加高質(zhì)量的RC濾波確保從節(jié)點(diǎn)的電源網(wǎng)絡(luò)干凈有足夠的去耦電容優(yōu)化PCB布局減少環(huán)路面積。軟件上增加幀數(shù)據(jù)的校驗(yàn)強(qiáng)度雖然LIN本身只有PID和經(jīng)典校驗(yàn)和但可以在應(yīng)用層數(shù)據(jù)中增加自定義的校驗(yàn)字段實(shí)現(xiàn)簡(jiǎn)單的“多數(shù)表決”機(jī)制即連續(xù)收到兩次相同的有效指令才執(zhí)行。系統(tǒng)上審查線束走向讓LIN線纜遠(yuǎn)離潛在的干擾源如電機(jī)、逆變器。5. LIN與車(chē)載網(wǎng)絡(luò)的其他成員定位與未來(lái)最后我們把視角拉高看看LIN在整車(chē)通信網(wǎng)絡(luò)中的位置以及它未來(lái)的演變。5.1 LIN在車(chē)載網(wǎng)絡(luò)金字塔中的位置經(jīng)典的汽車(chē)網(wǎng)絡(luò)是一個(gè)金字塔結(jié)構(gòu)頂層高速主干車(chē)載以太網(wǎng)100/1000BASE-T1用于ADAS、智能座艙、網(wǎng)關(guān)等高帶寬、低延遲通信。中層動(dòng)力與底盤(pán)CAN FD、FlexRay用于發(fā)動(dòng)機(jī)、變速箱、剎車(chē)、轉(zhuǎn)向等對(duì)實(shí)時(shí)性和可靠性要求極高的系統(tǒng)。底層車(chē)身與舒適LIN、低速CAN用于車(chē)門(mén)、車(chē)窗、座椅、燈光、雨刮等控制。LIN牢牢占據(jù)著金字塔的底端負(fù)責(zé)連接那些“智能性”要求不高但數(shù)量眾多的執(zhí)行器和傳感器。它與CAN的分工是明確的CAN用于節(jié)點(diǎn)間需要頻繁、快速、對(duì)等通信的場(chǎng)景LIN則用于主從分明、速率要求低、成本敏感的場(chǎng)景。在車(chē)窗控制中四個(gè)車(chē)窗電機(jī)之間不需要直接對(duì)話它們只聽(tīng)從BCM的指揮并向其匯報(bào)這正是LIN的用武之地。5.2 LIN的未來(lái)LIN over Ethernet隨著汽車(chē)電子電氣架構(gòu)向域控制器和中央計(jì)算架構(gòu)演進(jìn)傳統(tǒng)的分布式LIN網(wǎng)絡(luò)可能會(huì)發(fā)生變化。一種趨勢(shì)是“區(qū)域控制器”的出現(xiàn)一個(gè)區(qū)域控制器如左車(chē)門(mén)控制器通過(guò)一條高速總線如車(chē)載以太網(wǎng)連接到中央網(wǎng)關(guān)同時(shí)它本地又作為L(zhǎng)IN主節(jié)點(diǎn)管理該區(qū)域內(nèi)的多個(gè)LIN從節(jié)點(diǎn)如左前車(chē)窗、左后車(chē)窗、左后視鏡。更前沿的討論是關(guān)于“LIN over Ethernet”或“時(shí)間敏感網(wǎng)絡(luò)中的簡(jiǎn)單設(shè)備”。其思想是保留LIN簡(jiǎn)單的應(yīng)用層協(xié)議但將其承載在基于IP/Ethernet的網(wǎng)絡(luò)上利用TSN時(shí)間敏感網(wǎng)絡(luò)來(lái)保證其確定性和低延遲。這樣可以將車(chē)身網(wǎng)絡(luò)徹底以太網(wǎng)化簡(jiǎn)化線束。然而這對(duì)于一個(gè)車(chē)窗電機(jī)來(lái)說(shuō)意味著需要支持TCP/IP協(xié)議棧和更復(fù)雜的PHY成本會(huì)大幅上升。因此在可預(yù)見(jiàn)的未來(lái)LIN物理層在低端節(jié)點(diǎn)上依然有強(qiáng)大的生命力它可能會(huì)與新的網(wǎng)絡(luò)架構(gòu)共存而不是被完全取代。對(duì)于開(kāi)發(fā)者而言理解LIN不僅意味著能設(shè)計(jì)一個(gè)車(chē)窗控制器更意味著掌握了在成本約束下解決分布式控制問(wèn)題的經(jīng)典范式。它的簡(jiǎn)單、可靠與高效在追求“軟件定義汽車(chē)”的今天依然閃爍著樸素的智慧。當(dāng)你下次按下車(chē)窗按鈕時(shí)或許能感受到這平滑升降的背后是一套歷經(jīng)數(shù)十年演進(jìn)、平衡了無(wú)數(shù)工程約束的精密系統(tǒng)在默默工作。