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

          新聞中心

          EEPW首頁(yè) > 汽車(chē)電子 > 設(shè)計(jì)應(yīng)用 > 基于CAN/LIN網(wǎng)絡(luò)的汽車(chē)門(mén)鎖控制系統(tǒng)

          基于CAN/LIN網(wǎng)絡(luò)的汽車(chē)門(mén)鎖控制系統(tǒng)

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

           汽車(chē)電子化是現(xiàn)代汽車(chē)發(fā)展的重要標(biāo)志。汽車(chē)電子的廣泛使用,使現(xiàn)代汽車(chē)比以往汽車(chē)變得更節(jié)能、更安全、更舒適。但當(dāng)汽車(chē)內(nèi)部電子設(shè)備采用傳統(tǒng)的點(diǎn)對(duì)點(diǎn)方式連接時(shí),電子設(shè)備的不斷增加會(huì)導(dǎo)致連線大幅度增加,致使車(chē)輛重量隨之增加,并削弱了車(chē)輛性能。為適應(yīng)汽車(chē)電子設(shè)備迅速增加的需求,汽車(chē)電子網(wǎng)絡(luò)應(yīng)運(yùn)而生。汽車(chē)內(nèi)部已經(jīng)基本形成了從低速到高速、從電纜到光纖、從有線到無(wú)線、從離散ECU的數(shù)據(jù)通信到中央智能控制的復(fù)雜網(wǎng)絡(luò)系統(tǒng)。其中,在車(chē)身低速電子設(shè)備連接方面,低速CAN總線和LIN總線構(gòu)成的混合網(wǎng)絡(luò)正受到越來(lái)越廣泛的關(guān)注和使用。汽車(chē)門(mén)鎖作為汽車(chē)車(chē)身的重要部件之一,實(shí)現(xiàn)基于的汽車(chē)門(mén)鎖單元,有助于提高汽車(chē)車(chē)身的總體電子化水平。

          汽車(chē)門(mén)鎖是汽車(chē)車(chē)身的重要部件之一,從汽車(chē)發(fā)明至今,經(jīng)歷了機(jī)械式、電氣化至電子化的發(fā)展過(guò)程。汽車(chē)電子門(mén)鎖是采用電子電路控制的以電磁鐵、微型電動(dòng)機(jī)和鎖體作為執(zhí)行機(jī)構(gòu)的機(jī)電一體化的安全裝置。采用汽車(chē)電子門(mén)鎖,駕駛員可以不用金屬鑰匙就能方便地開(kāi)關(guān)汽車(chē)車(chē)門(mén),而且能有效增強(qiáng)汽車(chē)門(mén)鎖的安全性能。相對(duì)于執(zhí)行機(jī)構(gòu),汽車(chē)電子門(mén)鎖的電子線路部分具有極大的靈活性,由此可以將汽車(chē)電子門(mén)鎖分為按鍵式、撥盤(pán)式、電子鑰匙式、觸摸式、生物特征式等多種類(lèi)型。其中,采用電子鑰匙的無(wú)線遙控鎖具有安全、可靠、方案成熟等優(yōu)點(diǎn),因此經(jīng)常被用作汽車(chē)電子門(mén)鎖。傳統(tǒng)的汽車(chē)電子門(mén)鎖采用點(diǎn)對(duì)點(diǎn)的方式與汽車(chē)車(chē)身的其它電子設(shè)備互聯(lián),伴隨著汽車(chē)電子網(wǎng)絡(luò)化的趨勢(shì),汽車(chē)電子門(mén)鎖開(kāi)始逐漸采用網(wǎng)絡(luò)化的結(jié)構(gòu)。

          1 汽車(chē)門(mén)鎖模塊的系統(tǒng)結(jié)構(gòu)

          在本系統(tǒng)中,汽車(chē)車(chē)身控制網(wǎng)絡(luò)采用CAN/LIN混合結(jié)構(gòu),按功能劃分可分為各個(gè)模塊:除門(mén)鎖模塊外,車(chē)身系統(tǒng)還包括座椅模塊、控制面板模塊以及燈組模塊。模塊之間通過(guò)CAN總線互聯(lián),各個(gè)模塊內(nèi)部使用LIN總線互聯(lián)。

          門(mén)鎖模塊是車(chē)身電子設(shè)備中重要的一部分。通過(guò)主節(jié)點(diǎn)管理的無(wú)線遙控門(mén)鎖,可以很便捷地對(duì)各個(gè)車(chē)門(mén)的智能電控單元進(jìn)行控制,同時(shí)及時(shí)反饋節(jié)點(diǎn)運(yùn)行狀態(tài)信息,極大地方便了操作和維護(hù)。自動(dòng)門(mén)鎖單元中包括一個(gè)主節(jié)點(diǎn)和從節(jié)點(diǎn)(四個(gè)門(mén)鎖單元),其結(jié)構(gòu)如圖1所示。

          主節(jié)點(diǎn)作為車(chē)身網(wǎng)絡(luò)中門(mén)鎖模塊的網(wǎng)關(guān),將各種控制命令、車(chē)身狀態(tài)數(shù)據(jù)在LIN總線與CAN總線之間轉(zhuǎn)發(fā),使LIN總線與CAN總線無(wú)縫結(jié)合為一個(gè)整體。

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

            門(mén)鎖模塊主節(jié)點(diǎn)的另一項(xiàng)主要功能是管理門(mén)鎖。門(mén)鎖采用無(wú)線電遙控并結(jié)合按鍵控制的控制方式。按鍵安裝在車(chē)身內(nèi)部,當(dāng)駕駛員處于車(chē)身內(nèi)部時(shí),可以通過(guò)按鍵控制車(chē)門(mén)的開(kāi)/關(guān)鎖,此時(shí)控制單元不需要進(jìn)行開(kāi)鎖密碼檢查。另外,車(chē)鎖也可以以無(wú)線遙控方式進(jìn)行控制。該鎖由微型發(fā)射機(jī)、接收天線和微控制器等組成。微型發(fā)射機(jī)安裝在鑰匙手柄里, 使用鋰電池供電并具有晶體振蕩電路, 能發(fā)出穩(wěn)定的約40MHz的載波。密碼信號(hào)發(fā)生器提供一個(gè)調(diào)頻代碼,天線接收裝置接收信號(hào)后,送入信號(hào)接收器進(jìn)行放大、調(diào)頻、檢波和信號(hào)波形修正, 最后再輸入到比較電路, 與主門(mén)鎖單元中存儲(chǔ)的密碼進(jìn)行比較, 如果一致就執(zhí)行開(kāi)/關(guān)鎖。

          主節(jié)點(diǎn)通過(guò)LIN總線給各個(gè)子單元發(fā)送命令來(lái)控制開(kāi)/關(guān)鎖,子節(jié)點(diǎn)接收到命令后,觸發(fā)電動(dòng)機(jī)傳動(dòng)機(jī)構(gòu), 操縱車(chē)門(mén)開(kāi)鎖或關(guān)鎖。若在10分鐘內(nèi)有15個(gè)或更多的密碼輸入錯(cuò)誤,則系統(tǒng)就認(rèn)為有人企圖竊車(chē),于是停止接收任何信號(hào),包括正確的密碼信號(hào)。系統(tǒng)處于鎖死狀態(tài)后,駕駛員必須用車(chē)門(mén)的機(jī)械鑰匙插入車(chē)鎖孔,才能開(kāi)啟車(chē)門(mén)。系統(tǒng)從鎖死狀態(tài)恢復(fù)到正常工作狀態(tài),可以通過(guò)復(fù)位模塊實(shí)現(xiàn)。另外,如果開(kāi)鎖后,30秒后未打開(kāi)車(chē)門(mén),則車(chē)門(mén)將自動(dòng)關(guān)鎖。

          子節(jié)點(diǎn)通過(guò)LIN總線與主節(jié)點(diǎn)互聯(lián),接收主節(jié)點(diǎn)發(fā)送的命令或返回反饋信息。實(shí)際使用的門(mén)鎖是電機(jī)式的自動(dòng)車(chē)門(mén)鎖,該鎖由可逆式電動(dòng)機(jī)、傳動(dòng)裝置及鎖體總成構(gòu)成。其工作原理是:由電動(dòng)機(jī)帶動(dòng)齒輪齒條,進(jìn)而驅(qū)動(dòng)鎖體總成,實(shí)現(xiàn)鎖緊或開(kāi)啟車(chē)門(mén)。因此,門(mén)鎖模塊子節(jié)點(diǎn)的功能主要是通過(guò)驅(qū)動(dòng)電路控制可逆式電動(dòng)機(jī)的正轉(zhuǎn)或反轉(zhuǎn),實(shí)現(xiàn)開(kāi)/關(guān)鎖。

          2 汽車(chē)門(mén)鎖模塊的硬件設(shè)計(jì)

          汽車(chē)門(mén)鎖模塊由主節(jié)點(diǎn)和若干子節(jié)點(diǎn)構(gòu)成,如圖2所示。主節(jié)點(diǎn)與子節(jié)點(diǎn)之間的通信采用LIN總線,LIN總線通信基于標(biāo)準(zhǔn)的SCI(UART)硬件接口、單主多從且不需要穩(wěn)定時(shí)基,僅需要三根線連接(電源線、地線、數(shù)據(jù)線),有效地降低了硬件成本。微控制器一般都具有SCI(UART)接口,因此只需在微控制器外圍加上LIN總線收發(fā)芯片,就能構(gòu)成一個(gè)LIN總線上的通信節(jié)點(diǎn)。LIN總線收發(fā)器采用Motorola公司的MC33399。MC33399符合LIN規(guī)范,能與中速網(wǎng)絡(luò)中的多個(gè)節(jié)點(diǎn)進(jìn)行數(shù)字通信,波形修正可減少EMI干擾。另外,MC33399具有低電流睡眠模式和專(zhuān)門(mén)的叫醒輸入管腳,使LIN控制節(jié)點(diǎn)可以處于低功耗運(yùn)行狀態(tài)[3]。

          門(mén)鎖單元的主節(jié)點(diǎn)的微控制器采用Motorola公司的16位微控制器單元MC9S12DP256。該芯片內(nèi)部模塊包括16位CPU(HCS12 CPU)、256K字節(jié)的Flash EEPROM、12.0K字節(jié)的RAM、4.0K字節(jié)的EEPROM、兩個(gè)串行通信接口(SCI)、二十九個(gè)數(shù)字I/O通道、五個(gè)CAN2.0 A/B軟件兼容模型(MSCAN12)等。因此,控制節(jié)點(diǎn)無(wú)需再外擴(kuò)存儲(chǔ)單元,I/O資源也完全滿(mǎn)足車(chē)身控制的需求,CAN通信接口可以直接使用片上自帶的CAN模塊。

          遙控門(mén)鎖采用NORDIC公司的nRF401無(wú)線收發(fā)芯片。nRF401芯片所需擴(kuò)展的外圍器件較少,可以直接連接單片機(jī)串口發(fā)送接收數(shù)據(jù),無(wú)需對(duì)數(shù)據(jù)進(jìn)行曼徹斯特編碼,降低了編程和使用的難度。nRF401芯片采用4MHz晶振產(chǎn)生振蕩頻率,經(jīng)頻率合成器合成為40MHz的工作頻率,天線使用微帶天線直接設(shè)計(jì)在電路板上,通過(guò)Din、Dout接口與MC9S12DP256連接。

          門(mén)鎖單元子節(jié)點(diǎn)微控制器采用PHILIPS公司的低成本FLASH單片機(jī)P89LPC904。P89LPC904內(nèi)部自帶1KB Flash程序存儲(chǔ)器、128字節(jié)RAM數(shù)據(jù)存儲(chǔ)器、高精度的內(nèi)部RC振蕩器(不需要外接振蕩器件),具有兩個(gè)通道的8位A/D輸入。同時(shí),它具有空閑和掉電兩種不同的掉電節(jié)電模式。在LIN總線空閑的時(shí)候,系統(tǒng)能切換到節(jié)電模式。
          由于在應(yīng)用中要驅(qū)動(dòng)小馬達(dá),門(mén)鎖單元需要使用到Motorola的H-bridge電機(jī)驅(qū)動(dòng)芯片。微控制器的輸出接口不能直接驅(qū)動(dòng)電機(jī),需要通過(guò)MC33887的電源IC芯片給門(mén)鎖單元提供驅(qū)動(dòng)能力。在電機(jī)驅(qū)動(dòng)過(guò)程中,也會(huì)把電流值適時(shí)地轉(zhuǎn)換成電壓信號(hào)反饋給P89LPC904,供中的故障檢測(cè)之用。

          3 車(chē)鎖模塊的軟件設(shè)計(jì)

          系統(tǒng)軟件設(shè)計(jì)包括主節(jié)點(diǎn)與子節(jié)點(diǎn)兩部分。

          車(chē)鎖模塊主節(jié)點(diǎn)通過(guò)CAN總線接收車(chē)身網(wǎng)絡(luò)總控制單元的控制命令,并返回當(dāng)前車(chē)鎖的開(kāi)關(guān)狀態(tài)以及故障信息。同時(shí),它向車(chē)鎖模塊的子節(jié)點(diǎn)發(fā)送控制命令,接收狀態(tài)信息。主節(jié)點(diǎn)需要對(duì)CAN和LIN總線間的數(shù)據(jù)幀進(jìn)行合適的轉(zhuǎn)換。

          系統(tǒng)中的CAN總線采用CAN2.0B標(biāo)準(zhǔn)幀格式通信。標(biāo)準(zhǔn)格式的CAN2.0B數(shù)據(jù)幀包括仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)三部分。SOF(幀起始)標(biāo)志數(shù)據(jù)幀和遠(yuǎn)程幀的開(kāi)始,由一個(gè)顯位構(gòu)成。仲裁場(chǎng)由標(biāo)識(shí)符和RTR(遠(yuǎn)程發(fā)送請(qǐng)求位)組成。RTR在數(shù)據(jù)幀為顯位,而在遠(yuǎn)程幀中必須為隱位,門(mén)鎖單元主節(jié)點(diǎn)的標(biāo)識(shí)符為0x50??刂茍?chǎng)中,標(biāo)準(zhǔn)幀的IDE位為顯位,r0為保留位,DLC為數(shù)據(jù)長(zhǎng)度碼[4]。CAN2.0B標(biāo)準(zhǔn)幀格式如圖3所示。

          LIN總線通信通過(guò)報(bào)文幀進(jìn)行,報(bào)文幀格式如圖4所示。同步間隙表示新報(bào)文幀的開(kāi)始,同步間隙由主任務(wù)(主節(jié)點(diǎn)內(nèi))產(chǎn)生。同步場(chǎng)的字節(jié)域?yàn)?x55。從任務(wù)總是能檢測(cè)到同步間隙以及同步場(chǎng)字節(jié)流。如果檢測(cè)到新的同步間隙、同步場(chǎng),則中止正在進(jìn)行的傳輸任務(wù),而開(kāi)始新的報(bào)文幀傳輸。報(bào)文頭的標(biāo)識(shí)符由6bit組成,取值范圍為0到63。除去少數(shù)保留特定用途之外,均可以用作通信ID,門(mén)鎖單元中的LIN節(jié)點(diǎn)的標(biāo)識(shí)符分配如表1所示。

          主節(jié)點(diǎn)通過(guò)LIN總線發(fā)送LOCK_DOOR幀給各個(gè)門(mén)鎖單元,其中包括對(duì)門(mén)鎖的鎖定/解鎖命令。子節(jié)點(diǎn)接收?qǐng)?bào)文幀后,解析幀中的數(shù)據(jù)域,數(shù)據(jù)域中的第一字節(jié)標(biāo)記解鎖指令,bit0對(duì)應(yīng)左前門(mén),bit1對(duì)應(yīng)右前門(mén),bit2對(duì)應(yīng)左后門(mén),bit3對(duì)應(yīng)右后門(mén)。第二字節(jié)標(biāo)記鎖定指令,對(duì)應(yīng)關(guān)系與解鎖指令相同。兩個(gè)后門(mén)鎖LOCK_R_L和LOCK_R_R則發(fā)送響應(yīng)幀LOCK_DOOR_RL_STATUS和LOCK_DOOR_RR_STATUS來(lái)向主節(jié)點(diǎn)反饋系統(tǒng)故障和門(mén)鎖馬達(dá)執(zhí)行時(shí)的故障信息。兩個(gè)前門(mén)鎖除了發(fā)送這些信息外,還發(fā)送門(mén)鎖開(kāi)關(guān)狀態(tài)信息給主節(jié)點(diǎn),主節(jié)點(diǎn)利用這些信息可以再次產(chǎn)生鎖定/解鎖命令。

          另外,主節(jié)點(diǎn)通過(guò)CAN總線接收到車(chē)身總控制單元的遠(yuǎn)程幀后,需回復(fù)數(shù)據(jù)幀,通知總控制單元當(dāng)前各個(gè)門(mén)鎖狀態(tài)。當(dāng)門(mén)鎖單元由于輸入錯(cuò)誤密碼而處于死鎖狀態(tài)時(shí),接收到總控制單元的復(fù)位命令幀后,門(mén)鎖單元主節(jié)點(diǎn)恢復(fù)接收密碼信號(hào)。

          遙控門(mén)鎖與鑰匙之間通過(guò)簡(jiǎn)單的通信協(xié)議進(jìn)行開(kāi)/關(guān)鎖,包括一個(gè)字節(jié)的幀頭0x80、2bit的命令、6bit的幀長(zhǎng)、數(shù)據(jù)域以及校驗(yàn)和。對(duì)于遙控開(kāi)/關(guān)鎖命令的數(shù)據(jù)域即開(kāi)/關(guān)鎖命令密碼,需要進(jìn)行一定的加密。實(shí)際上,遙控門(mén)鎖和鑰匙各持有一個(gè)密鑰,鑰匙首先從遙控門(mén)鎖處獲取一個(gè)隨機(jī)生成的明鑰,然后利用明鑰和密鑰對(duì)車(chē)門(mén)密碼進(jìn)行加密,然后發(fā)送給遙控門(mén)鎖,遙控門(mén)鎖根據(jù)明鑰和密鑰對(duì)接收數(shù)據(jù)進(jìn)行解密,獲得密碼后驗(yàn)證正誤?;诎踩煽糠矫娴目紤],發(fā)送明鑰、發(fā)送密碼等一系列過(guò)程都是基于連接的通信。遙控開(kāi)關(guān)鎖命令幀格式如圖5所示。命令字段劃分為:0x00請(qǐng)求獲得明鑰,0x01發(fā)送密碼開(kāi)鎖,0x02發(fā)送密碼關(guān)鎖。

          主節(jié)點(diǎn)應(yīng)用程序基于μC/OS實(shí)時(shí)操作系統(tǒng)。MC9S12DP256微控制器上已移植了μC/OS實(shí)時(shí)操作系統(tǒng),μC/OS內(nèi)核小巧、高效,對(duì)系統(tǒng)性能開(kāi)銷(xiāo)很??;而且基于多任務(wù)的操作系統(tǒng)開(kāi)發(fā)應(yīng)用程序可使得開(kāi)發(fā)更為快捷、容易,同時(shí)增強(qiáng)了可移植性。主節(jié)點(diǎn)功能劃分為不同任務(wù)各自獨(dú)立執(zhí)行。主節(jié)點(diǎn)在完成對(duì)CAN、LIN通信接口以及nRF401芯片的初始化后,創(chuàng)建任務(wù)進(jìn)程O(píng)S_CAN_PROCESS、OS_LIN_PROCESS、OS_WIRELESS_PROCESS并使它們等待信號(hào)量,獲得信號(hào)量后執(zhí)行各自的操作。其中,它們等待的信號(hào)量由相應(yīng)的中斷處理程序發(fā)出,驅(qū)動(dòng)各個(gè)任務(wù)執(zhí)行,執(zhí)行完任務(wù)后,繼續(xù)在信號(hào)量上等待。OS_MAIN_TASK是主節(jié)點(diǎn)的主任務(wù),等待消息隊(duì)列,根據(jù)返回的消息來(lái)區(qū)分不同的操作狀態(tài)。

          OS_CAN_PROCESS與OS_LIN_PROCESS為CAN、LIN總線的數(shù)據(jù)接收任務(wù),接收數(shù)據(jù)后放入緩沖區(qū),并設(shè)置狀態(tài)位,然后通過(guò)消息隊(duì)列通知OS_MAIN_TASK進(jìn)行適當(dāng)?shù)奶幚?。CAN、LIN總線數(shù)據(jù)發(fā)送則直接通過(guò)OS_MAIN_TASK發(fā)起。

          OS_WIRELESS_PROCESS管理無(wú)線通信的連接。無(wú)線連接具有多個(gè)狀態(tài),包括LISTEN、CONNECTED、FIRST_SEND、CLOSED等,分別代表等待連接、連接建立、明鑰已發(fā)送、連接關(guān)閉。無(wú)線連接狀態(tài)切換時(shí)需要通過(guò)消息隊(duì)列通知OS_MAIN_ TASK,主任務(wù)根據(jù)不同連接狀態(tài)進(jìn)行管理控制。OS_MAIN_TASK任務(wù)流程如圖6所示。

          子節(jié)點(diǎn)程序相對(duì)簡(jiǎn)單,同時(shí)子節(jié)點(diǎn)控制芯片的能力較弱,因此程序設(shè)計(jì)基于前后臺(tái)方式。子節(jié)點(diǎn)通過(guò)LIN總線接收主節(jié)點(diǎn)的命令幀后,通過(guò)驅(qū)動(dòng)電路帶動(dòng)電機(jī)開(kāi)/關(guān)鎖。在開(kāi)/關(guān)鎖的過(guò)程中監(jiān)控電機(jī)電流,檢查是否發(fā)生故障,并返回汽車(chē)門(mén)鎖狀態(tài)信息以及故障情況。子節(jié)點(diǎn)的工作流程如圖7所示。

          隨著汽車(chē)的電子網(wǎng)絡(luò)化發(fā)展,低成本的LIN網(wǎng)絡(luò)將會(huì)得到越來(lái)越廣泛的應(yīng)用。本文介紹并實(shí)現(xiàn)的基于CAN/LIN混合網(wǎng)絡(luò)的自動(dòng)門(mén)鎖控制模塊是汽車(chē)車(chē)身控制中的典型應(yīng)用,它提高了車(chē)身整體的自動(dòng)化程度,有著良好的應(yīng)用前景。



          評(píng)論


          技術(shù)專(zhuān)區(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); })();