基于CAN/LIN網(wǎng)絡(luò )的汽車(chē)門(mén)鎖控制系統
汽車(chē)電子化是現代汽車(chē)發(fā)展的重要標志。汽車(chē)電子的廣泛使用,使現代汽車(chē)比以往汽車(chē)變得更節能、更安全、更舒適。但當汽車(chē)內部電子設備采用傳統的點(diǎn)對點(diǎn)方式連接時(shí),電子設備的不斷增加會(huì )導致連線(xiàn)大幅度增加,致使車(chē)輛重量隨之增加,并削弱了車(chē)輛性能。為適應汽車(chē)電子設備迅速增加的需求,汽車(chē)電子網(wǎng)絡(luò )應運而生。汽車(chē)內部已經(jīng)基本形成了從低速到高速、從電纜到光纖、從有線(xiàn)到無(wú)線(xiàn)、從離散ECU的數據通信到中央智能控制的復雜網(wǎng)絡(luò )系統。其中,在車(chē)身低速電子設備連接方面,低速CAN總線(xiàn)和LIN總線(xiàn)構成的混合網(wǎng)絡(luò )正受到越來(lái)越廣泛的關(guān)注和使用。汽車(chē)門(mén)鎖作為汽車(chē)車(chē)身的重要部件之一,實(shí)現基于CAN/LIN網(wǎng)絡(luò )的汽車(chē)門(mén)鎖單元,有助于提高汽車(chē)車(chē)身的總體電子化水平。
汽車(chē)門(mén)鎖是汽車(chē)車(chē)身的重要部件之一,從汽車(chē)發(fā)明至今,經(jīng)歷了機械式、電氣化至電子化的發(fā)展過(guò)程。汽車(chē)電子門(mén)鎖是采用電子電路控制的以電磁鐵、微型電動(dòng)機和鎖體作為執行機構的機電一體化的安全裝置。采用汽車(chē)電子門(mén)鎖,駕駛員可以不用金屬鑰匙就能方便地開(kāi)關(guān)汽車(chē)車(chē)門(mén),而且能有效增強汽車(chē)門(mén)鎖的安全性能。相對于執行機構,汽車(chē)電子門(mén)鎖的電子線(xiàn)路部分具有極大的靈活性,由此可以將汽車(chē)電子門(mén)鎖分為按鍵式、撥盤(pán)式、電子鑰匙式、觸摸式、生物特征式等多種類(lèi)型。其中,采用電子鑰匙的無(wú)線(xiàn)遙控鎖具有安全、可靠、方案成熟等優(yōu)點(diǎn),因此經(jīng)常被用作汽車(chē)電子門(mén)鎖。傳統的汽車(chē)電子門(mén)鎖采用點(diǎn)對點(diǎn)的方式與汽車(chē)車(chē)身的其它電子設備互聯(lián),伴隨著(zhù)汽車(chē)電子網(wǎng)絡(luò )化的趨勢,汽車(chē)電子門(mén)鎖開(kāi)始逐漸采用網(wǎng)絡(luò )化的結構。
1 汽車(chē)門(mén)鎖模塊的系統結構
在本系統中,汽車(chē)車(chē)身控制網(wǎng)絡(luò )采用CAN/LIN混合結構,按功能劃分可分為各個(gè)模塊:除門(mén)鎖模塊外,車(chē)身系統還包括座椅模塊、控制面板模塊以及燈組模塊。模塊之間通過(guò)CAN總線(xiàn)互聯(lián),各個(gè)模塊內部使用LIN總線(xiàn)互聯(lián)。
門(mén)鎖模塊是車(chē)身電子設備中重要的一部分。通過(guò)主節點(diǎn)管理的無(wú)線(xiàn)遙控門(mén)鎖,可以很便捷地對各個(gè)車(chē)門(mén)的智能電控單元進(jìn)行控制,同時(shí)及時(shí)反饋節點(diǎn)運行狀態(tài)信息,極大地方便了操作和維護。自動(dòng)門(mén)鎖單元中包括一個(gè)主節點(diǎn)和從節點(diǎn)(四個(gè)門(mén)鎖單元),其結構如圖1所示。
主節點(diǎn)作為車(chē)身網(wǎng)絡(luò )中門(mén)鎖模塊的網(wǎng)關(guān),將各種控制命令、車(chē)身狀態(tài)數據在LIN總線(xiàn)與CAN總線(xiàn)之間轉發(fā),使LIN總線(xiàn)與CAN總線(xiàn)無(wú)縫結合為一個(gè)整體。
門(mén)鎖模塊主節點(diǎn)的另一項主要功能是管理門(mén)鎖。門(mén)鎖采用無(wú)線(xiàn)電遙控并結合按鍵控制的控制方式。按鍵安裝在車(chē)身內部,當駕駛員處于車(chē)身內部時(shí),可以通過(guò)按鍵控制車(chē)門(mén)的開(kāi)/關(guān)鎖,此時(shí)控制單元不需要進(jìn)行開(kāi)鎖密碼檢查。另外,車(chē)鎖也可以以無(wú)線(xiàn)遙控方式進(jìn)行控制。該鎖由微型發(fā)射機、接收天線(xiàn)和微控制器等組成。微型發(fā)射機安裝在鑰匙手柄里, 使用鋰電池供電并具有晶體振蕩電路, 能發(fā)出穩定的約40MHz的載波。密碼信號發(fā)生器提供一個(gè)調頻代碼,天線(xiàn)接收裝置接收信號后,送入信號接收器進(jìn)行放大、調頻、檢波和信號波形修正, 最后再輸入到比較電路, 與主門(mén)鎖單元中存儲的密碼進(jìn)行比較, 如果一致就執行開(kāi)/關(guān)鎖。
主節點(diǎn)通過(guò)LIN總線(xiàn)給各個(gè)子門(mén)鎖控制單元發(fā)送命令來(lái)控制開(kāi)/關(guān)鎖,子節點(diǎn)接收到命令后,觸發(fā)電動(dòng)機傳動(dòng)機構, 操縱車(chē)門(mén)開(kāi)鎖或關(guān)鎖。若在10分鐘內有15個(gè)或更多的密碼輸入錯誤,則系統就認為有人企圖竊車(chē),于是停止接收任何信號,包括正確的密碼信號。系統處于鎖死狀態(tài)后,駕駛員必須用車(chē)門(mén)的機械鑰匙插入車(chē)鎖孔,才能開(kāi)啟車(chē)門(mén)。系統從鎖死狀態(tài)恢復到正常工作狀態(tài),可以通過(guò)復位門(mén)鎖控制模塊實(shí)現。另外,如果開(kāi)鎖后,30秒后未打開(kāi)車(chē)門(mén),則車(chē)門(mén)將自動(dòng)關(guān)鎖。
子節點(diǎn)通過(guò)LIN總線(xiàn)與主節點(diǎn)互聯(lián),接收主節點(diǎn)發(fā)送的命令或返回反饋信息。實(shí)際使用的門(mén)鎖是電機式的自動(dòng)車(chē)門(mén)鎖,該鎖由可逆式電動(dòng)機、傳動(dòng)裝置及鎖體總成構成。其工作原理是:由電動(dòng)機帶動(dòng)齒輪齒條,進(jìn)而驅動(dòng)鎖體總成,實(shí)現鎖緊或開(kāi)啟車(chē)門(mén)。因此,門(mén)鎖模塊子節點(diǎn)的功能主要是通過(guò)驅動(dòng)電路控制可逆式電動(dòng)機的正轉或反轉,實(shí)現開(kāi)/關(guān)鎖。
2 汽車(chē)門(mén)鎖模塊的硬件設計
汽車(chē)門(mén)鎖模塊由主節點(diǎn)和若干子節點(diǎn)構成,如圖2所示。主節點(diǎn)與子節點(diǎn)之間的通信采用LIN總線(xiàn),LIN總線(xiàn)通信基于標準的SCI(UART)硬件接口、單主多從且不需要穩定時(shí)基,僅需要三根線(xiàn)連接(電源線(xiàn)、地線(xiàn)、數據線(xiàn)),有效地降低了硬件成本。微控制器一般都具有SCI(UART)接口,因此只需在微控制器外圍加上LIN總線(xiàn)收發(fā)芯片,就能構成一個(gè)LIN總線(xiàn)上的通信節點(diǎn)。LIN總線(xiàn)收發(fā)器采用Motorola公司的MC33399。MC33399符合LIN規范,能與中速網(wǎng)絡(luò )中的多個(gè)節點(diǎn)進(jìn)行數字通信,波形修正可減少EMI干擾。另外,MC33399具有低電流睡眠模式和專(zhuān)門(mén)的叫醒輸入管腳,使LIN控制節點(diǎn)可以處于低功耗運行狀態(tài)[3]。
門(mén)鎖單元的主節點(diǎn)的微控制器采用Motorola公司的16位微控制器單元MC9S12DP256。該芯片內部模塊包括16位CPU(HCS12 CPU)、256K字節的Flash EEPROM、12.0K字節的RAM、4.0K字節的EEPROM、兩個(gè)串行通信接口(SCI)、二十九個(gè)數字I/O通道、五個(gè)CAN2.0 A/B軟件兼容模型(MSCAN12)等。因此,控制節點(diǎn)無(wú)需再外擴存儲單元,I/O資源也完全滿(mǎn)足車(chē)身控制的需求,CAN通信接口可以直接使用片上自帶的CAN模塊。
遙控門(mén)鎖采用NORDIC公司的nRF401無(wú)線(xiàn)收發(fā)芯片。nRF401芯片所需擴展的外圍器件較少,可以直接連接單片機串口發(fā)送接收數據,無(wú)需對數據進(jìn)行曼徹斯特編碼,降低了編程和使用的難度。nRF401芯片采用4MHz晶振產(chǎn)生振蕩頻率,經(jīng)頻率合成器合成為40MHz的工作頻率,天線(xiàn)使用微帶天線(xiàn)直接設計在電路板上,通過(guò)Din、Dout接口與MC9S12DP256連接。
門(mén)鎖單元子節點(diǎn)微控制器采用PHILIPS公司的低成本FLASH單片機P89LPC904。P89LPC904內部自帶1KB Flash程序存儲器、128字節RAM數據存儲器、高精度的內部RC振蕩器(不需要外接振蕩器件),具有兩個(gè)通道的8位A/D輸入。同時(shí),它具有空閑和掉電兩種不同的掉電節電模式。在LIN總線(xiàn)空閑的時(shí)候,系統能切換到節電模式。
由于在應用中要驅動(dòng)小馬達,門(mén)鎖單元需要使用到Motorola的H-bridge電機驅動(dòng)芯片。微控制器的輸出接口不能直接驅動(dòng)電機,需要通過(guò)MC33887的電源IC芯片給門(mén)鎖單元提供驅動(dòng)能力。在電機驅動(dòng)過(guò)程中,也會(huì )把電流值適時(shí)地轉換成電壓信號反饋給P89LPC904,供門(mén)鎖控制中的故障檢測之用。
3 車(chē)鎖模塊的軟件設計
系統軟件設計包括主節點(diǎn)與子節點(diǎn)兩部分。
車(chē)鎖模塊主節點(diǎn)通過(guò)CAN總線(xiàn)接收車(chē)身網(wǎng)絡(luò )總控制單元的控制命令,并返回當前車(chē)鎖的開(kāi)關(guān)狀態(tài)以及故障信息。同時(shí),它向車(chē)鎖模塊的子節點(diǎn)發(fā)送控制命令,接收狀態(tài)信息。主節點(diǎn)需要對CAN和LIN總線(xiàn)間的數據幀進(jìn)行合適的轉換。
系統中的CAN總線(xiàn)采用CAN2.0B標準幀格式通信。標準格式的CAN2.0B數據幀包括仲裁場(chǎng)、控制場(chǎng)、數據場(chǎng)三部分。SOF(幀起始)標志數據幀和遠程幀的開(kāi)始,由一個(gè)顯位構成。仲裁場(chǎng)由標識符和RTR(遠程發(fā)送請求位)組成。RTR在數據幀為顯位,而在遠程幀中必須為隱位,門(mén)鎖單元主節點(diǎn)的標識符為0x50??刂茍?chǎng)中,標準幀的IDE位為顯位,r0為保留位,DLC為數據長(cháng)度碼[4]。CAN2.0B標準幀格式如圖3所示。
LIN總線(xiàn)通信通過(guò)報文幀進(jìn)行,報文幀格式如圖4所示。同步間隙表示新報文幀的開(kāi)始,同步間隙由主任務(wù)(主節點(diǎn)內)產(chǎn)生。同步場(chǎng)的字節域為0x55。從任務(wù)總是能檢測到同步間隙以及同步場(chǎng)字節流。如果檢測到新的同步間隙、同步場(chǎng),則中止正在進(jìn)行的傳輸任務(wù),而開(kāi)始新的報文幀傳輸。報文頭的標識符由6bit組成,取值范圍為0到63。除去少數保留特定用途之外,均可以用作通信ID,門(mén)鎖單元中的LIN節點(diǎn)的標識符分配如表1所示。
主節點(diǎn)通過(guò)LIN總線(xiàn)發(fā)送LOCK_DOOR幀給各個(gè)門(mén)鎖單元,其中包括對門(mén)鎖的鎖定/解鎖命令。子節點(diǎn)接收報文幀后,解析幀中的數據域,數據域中的第一字節標記解鎖指令,bit0對應左前門(mén),bit1對應右前門(mén),bit2對應左后門(mén),bit3對應右后門(mén)。第二字節標記鎖定指令,對應關(guān)系與解鎖指令相同。兩個(gè)后門(mén)鎖LOCK_R_L和LOCK_R_R則發(fā)送響應幀LOCK_DOOR_RL_STATUS和LOCK_DOOR_RR_STATUS來(lái)向主節點(diǎn)反饋系統故障和門(mén)鎖馬達執行時(shí)的故障信息。兩個(gè)前門(mén)鎖除了發(fā)送這些信息外,還發(fā)送門(mén)鎖開(kāi)關(guān)狀態(tài)信息給主節點(diǎn),主節點(diǎn)利用這些信息可以再次產(chǎn)生鎖定/解鎖命令。
另外,主節點(diǎn)通過(guò)CAN總線(xiàn)接收到車(chē)身總控制單元的遠程幀后,需回復數據幀,通知總控制單元當前各個(gè)門(mén)鎖狀態(tài)。當門(mén)鎖單元由于輸入錯誤密碼而處于死鎖狀態(tài)時(shí),接收到總控制單元的復位命令幀后,門(mén)鎖單元主節點(diǎn)恢復接收密碼信號。
遙控門(mén)鎖與鑰匙之間通過(guò)簡(jiǎn)單的通信協(xié)議進(jìn)行開(kāi)/關(guān)鎖,包括一個(gè)字節的幀頭0x80、2bit的命令、6bit的幀長(cháng)、數據域以及校驗和。對于遙控開(kāi)/關(guān)鎖命令的數據域即開(kāi)/關(guān)鎖命令密碼,需要進(jìn)行一定的加密。實(shí)際上,遙控門(mén)鎖和鑰匙各持有一個(gè)密鑰,鑰匙首先從遙控門(mén)鎖處獲取一個(gè)隨機生成的明鑰,然后利用明鑰和密鑰對車(chē)門(mén)密碼進(jìn)行加密,然后發(fā)送給遙控門(mén)鎖,遙控門(mén)鎖根據明鑰和密鑰對接收數據進(jìn)行解密,獲得密碼后驗證正誤?;诎踩煽糠矫娴目紤],發(fā)送明鑰、發(fā)送密碼等一系列過(guò)程都是基于連接的通信。遙控開(kāi)關(guān)鎖命令幀格式如圖5所示。命令字段劃分為:0x00請求獲得明鑰,0x01發(fā)送密碼開(kāi)鎖,0x02發(fā)送密碼關(guān)鎖。
主節點(diǎn)應用程序基于μC/OS實(shí)時(shí)操作系統。MC9S12DP256微控制器上已移植了μC/OS實(shí)時(shí)操作系統,μC/OS內核小巧、高效,對系統性能開(kāi)銷(xiāo)很??;而且基于多任務(wù)的操作系統開(kāi)發(fā)應用程序可使得開(kāi)發(fā)更為快捷、容易,同時(shí)增強了可移植性。主節點(diǎn)功能劃分為不同任務(wù)各自獨立執行。主節點(diǎn)在完成對CAN、LIN通信接口以及nRF401芯片的初始化后,創(chuàng )建任務(wù)進(jìn)程O(píng)S_CAN_PROCESS、OS_LIN_PROCESS、OS_WIRELESS_PROCESS并使它們等待信號量,獲得信號量后執行各自的操作。其中,它們等待的信號量由相應的中斷處理程序發(fā)出,驅動(dòng)各個(gè)任務(wù)執行,執行完任務(wù)后,繼續在信號量上等待。OS_MAIN_TASK是主節點(diǎn)的主任務(wù),等待消息隊列,根據返回的消息來(lái)區分不同的操作狀態(tài)。
OS_CAN_PROCESS與OS_LIN_PROCESS為CAN、LIN總線(xiàn)的數據接收任務(wù),接收數據后放入緩沖區,并設置狀態(tài)位,然后通過(guò)消息隊列通知OS_MAIN_TASK進(jìn)行適當的處理。CAN、LIN總線(xiàn)數據發(fā)送則直接通過(guò)OS_MAIN_TASK發(fā)起。
OS_WIRELESS_PROCESS管理無(wú)線(xiàn)通信的連接。無(wú)線(xiàn)連接具有多個(gè)狀態(tài),包括LISTEN、CONNECTED、FIRST_SEND、CLOSED等,分別代表等待連接、連接建立、明鑰已發(fā)送、連接關(guān)閉。無(wú)線(xiàn)連接狀態(tài)切換時(shí)需要通過(guò)消息隊列通知OS_MAIN_ TASK,主任務(wù)根據不同連接狀態(tài)進(jìn)行管理控制。OS_MAIN_TASK任務(wù)流程如圖6所示。
子節點(diǎn)程序相對簡(jiǎn)單,同時(shí)子節點(diǎn)控制芯片的能力較弱,因此程序設計基于前后臺方式。子節點(diǎn)通過(guò)LIN總線(xiàn)接收主節點(diǎn)的命令幀后,通過(guò)驅動(dòng)電路帶動(dòng)電機開(kāi)/關(guān)鎖。在開(kāi)/關(guān)鎖的過(guò)程中監控電機電流,檢查是否發(fā)生故障,并返回汽車(chē)門(mén)鎖狀態(tài)信息以及故障情況。子節點(diǎn)的工作流程如圖7所示。
隨著(zhù)汽車(chē)的電子網(wǎng)絡(luò )化發(fā)展,低成本的LIN網(wǎng)絡(luò )將會(huì )得到越來(lái)越廣泛的應用。本文介紹并實(shí)現的基于CAN/LIN混合網(wǎng)絡(luò )的自動(dòng)門(mén)鎖控制模塊是汽車(chē)車(chē)身控制中的典型應用,它提高了車(chē)身整體的自動(dòng)化程度,有著(zhù)良好的應用前景。
評論