基于CAN總線的嵌入式車燈監(jiān)控系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為了確保車燈的質(zhì)量可靠性,提出了一種嵌入式車燈控制及電氣參數(shù)檢測(cè)系統(tǒng)的設(shè)計(jì)方案。系統(tǒng)包括上位機(jī)監(jiān)控終端和下位機(jī)控制節(jié)點(diǎn),監(jiān)控終端負(fù)責(zé)設(shè)置各車燈的工作參數(shù)和顯示車燈的工作狀態(tài);控制節(jié)點(diǎn)采用基于Cortex—M3內(nèi)核的嵌入式微處理器LM3S2965為核心,將實(shí)時(shí)操作系統(tǒng)μCOS-II植入其中,提高系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性,同時(shí)將我國(guó)自主研發(fā)的iCAN協(xié)議應(yīng)用到系統(tǒng)中,從而實(shí)現(xiàn)對(duì)車燈的網(wǎng)絡(luò)化監(jiān)控。結(jié)果表明,系統(tǒng)最多可對(duì)63個(gè)車燈進(jìn)行實(shí)時(shí)的電氣參數(shù)檢測(cè)與控制,具有較高的可靠性。
關(guān)鍵詞:車燈監(jiān)控系統(tǒng);μCOS-II;iCAN協(xié)議;LM3S2965
當(dāng)前我國(guó)的汽車總數(shù)呈現(xiàn)爆發(fā)式增長(zhǎng),由于汽車照明與交通安全有著密不可分的關(guān)系,因此對(duì)車燈產(chǎn)品進(jìn)行可靠性檢測(cè)是很有必要的。針對(duì)這種情況,提出了基于CAN總線的嵌入式車燈監(jiān)控系統(tǒng)的設(shè)計(jì)思想,結(jié)合總線技術(shù)和單片機(jī)嵌入式技術(shù),實(shí)現(xiàn)對(duì)車燈進(jìn)行功能控制以及電壓電流參數(shù)檢測(cè)。其中,iCAN協(xié)議在CAN總線網(wǎng)絡(luò)中的使用,可以實(shí)現(xiàn)對(duì)多個(gè)車燈同時(shí)進(jìn)行網(wǎng)絡(luò)化監(jiān)控,進(jìn)而可以實(shí)時(shí)準(zhǔn)確地掌握各個(gè)車燈的工作情況,確保車燈產(chǎn)品的質(zhì)量可靠性。
1 系統(tǒng)整體結(jié)構(gòu)
系統(tǒng)主要由上位機(jī)和多個(gè)下位機(jī)節(jié)點(diǎn)組成。上位機(jī)是由VC編成的監(jiān)測(cè)軟件,PC機(jī)通過PCI-CAN卡與CAN總線相連,完成與下位機(jī)節(jié)點(diǎn)的通信,顯示各車燈的電流電壓及工作情況,并完成功能的設(shè)置。下位機(jī)節(jié)點(diǎn)以LM3S2965為主體,采樣車燈工作時(shí)的電壓電流,并對(duì)車燈進(jìn)行控制。系統(tǒng)整體結(jié)構(gòu)框圖如圖1所示。
2 節(jié)點(diǎn)的硬件設(shè)計(jì)
下位機(jī)節(jié)點(diǎn)的硬件結(jié)構(gòu)設(shè)計(jì)框圖如圖2所示。節(jié)點(diǎn)主要完成以下工作:1)定期對(duì)車燈工作時(shí)的電壓電流進(jìn)行AD采樣,并將結(jié)果發(fā)送到CAN總線上,供上位機(jī)接收;2)接收上位機(jī)發(fā)送到CAN總線上的命令,并控制車燈實(shí)現(xiàn)相應(yīng)的功能。因此,節(jié)點(diǎn)主要包括微處理器部分、CAN通訊模塊、電源模塊。
2.1 微處理器選型
為了確保系統(tǒng)對(duì)車燈進(jìn)行實(shí)時(shí)、可靠地控制及檢測(cè),這里選用可植入實(shí)時(shí)操作系統(tǒng)的Cortex-M3內(nèi)核芯片LM3S2965。LM3S2965是南TI公司Stellaris所提供的首款基于ARM Cortex-M3的控制器對(duì)CAN總線應(yīng)用方案而設(shè)計(jì)的芯片,具有較高的代碼密度和指令執(zhí)行效率。片內(nèi)有256 kB的單周期訪問的Flash,64KB的單周期SRAM,為操作系統(tǒng)的植入和運(yùn)行提供了足夠的容量;內(nèi)部集成了兼容CAN2.0A/B的CAN控制器和ADC模數(shù)轉(zhuǎn)換器,可以簡(jiǎn)化節(jié)點(diǎn)中CAN通訊電路和AD采樣的電路的設(shè)計(jì),同時(shí)也降低了軟件開發(fā)的難度。[!--empirenews.page--]
2.2 CAN通訊模塊設(shè)計(jì)
CAN通訊接口可實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)與上位機(jī)之間的通訊,從而完成數(shù)據(jù)的共享和命令的收發(fā)[1]。LM3S2965有兩個(gè)兼容CAN2.0A/B的CAN控制器,可以實(shí)現(xiàn)數(shù)據(jù)鏈路層的功能,為實(shí)現(xiàn)物理層,這里只需要增加一個(gè)CAN收發(fā)器。Philips公司的TJA1040是一款通用的高速CAN收發(fā)器,它可將CAN控制器的邏輯電平與CAN總線上的差分電平進(jìn)行相互的轉(zhuǎn)化,同時(shí)具有優(yōu)秀的EMC性能,可靠性高。本節(jié)點(diǎn)中,CAN接口電路如圖3所示,微處理器內(nèi)置的兩個(gè)CAN控制器分別與TJA1040連接,一路與CAN總線相連,完成與上位機(jī)的通訊;另一路與車燈相連,完成與車燈之間的通訊,實(shí)現(xiàn)對(duì)車燈的控制。
2.3 電源模塊設(shè)計(jì)
電源模塊可對(duì)供電電源進(jìn)行凈化處理,濾除高次諧波,避免供電電源對(duì)主控單元形成干擾。嵌入式系統(tǒng)的性能在很大程度上取決于電源電路的穩(wěn)定性和可靠性,因此設(shè)計(jì)穩(wěn)定可靠的電源模塊非常重要。本節(jié)點(diǎn)中,LM3S2965的電源輸入分為模擬輸入和數(shù)字輸入兩種,電壓為+3.3 V;CAN收發(fā)器TJA1040采用+5 V的供電電壓。首先采用穩(wěn)壓器將外部直流輸入電壓穩(wěn)壓成5 V供給CAN收發(fā)器工作,然后用LT1086CM-3.3將5 V電壓轉(zhuǎn)換成+3.3 V供給微處理器工作。由于模擬電源和數(shù)字電源本身的性質(zhì)差異,為保證這兩種電源不會(huì)相互影響,這里在模擬電源和數(shù)字電源間用電感進(jìn)行隔離。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的軟件部分由上位機(jī)軟件和下位機(jī)軟件組成。上位機(jī)完成對(duì)系統(tǒng)功能參數(shù)的設(shè)置以及顯示各車燈的電壓電流;下位機(jī)軟件主要完成基于iCAN協(xié)議的總線通訊,實(shí)時(shí)傳遞車燈的工作情況。
3.1 下位機(jī)軟件設(shè)計(jì)
下位機(jī)軟件設(shè)計(jì)流程圖如圖3所示,包括操作系統(tǒng)μCOS-II、節(jié)點(diǎn)初始化、外設(shè)驅(qū)動(dòng)程序以及應(yīng)用程序。
操作系統(tǒng)μCOS-II是系統(tǒng)運(yùn)行的核心部分,完成任務(wù)的調(diào)度、時(shí)間管理和資源管理,在操作系統(tǒng)源碼中通過對(duì)OS_CPU_C.C、OS_CPU_ A.ASM和OS_CPU.H 3個(gè)文件中與微處理器相關(guān)的數(shù)據(jù)類型和處理函數(shù)進(jìn)行修改和重新編寫后,便可將μCOS-II植入LM3S2965。初始化代碼完成對(duì)MCU外設(shè)、μCOS-II操作系統(tǒng)以及CAN節(jié)點(diǎn)的初始化。應(yīng)用程序在操作系統(tǒng)的基礎(chǔ)上,分配任務(wù)堆??臻g,然后建立任務(wù)間通訊的信號(hào)量以及消息郵箱等,進(jìn)而創(chuàng)建任務(wù),并分配不同的優(yōu)先級(jí),此系統(tǒng)的任務(wù)劃分如表1所示。
[!--empirenews.page--]
3.1.1 CAN節(jié)點(diǎn)初始化
系統(tǒng)的主要任務(wù)是實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的通訊,將下位機(jī)節(jié)點(diǎn)采集到的電壓電流參數(shù)上傳至上位機(jī)并顯示給用戶,實(shí)時(shí)反映車燈的工作狀況。因此CAN通訊任務(wù)具有最高級(jí)別的優(yōu)先級(jí)。在任務(wù)taskican中,首先完成CAN節(jié)點(diǎn)的初始化,包括端口初始化、設(shè)定波特率、設(shè)置驗(yàn)收濾波等,初始化通過調(diào)用Stellaris外設(shè)驅(qū)動(dòng)庫(kù)中的相應(yīng)函數(shù)來完成。函數(shù)SysCtlPeripheralEnable()和GPIOPinTvpeCAN()可完成CAN模塊外設(shè)的端口初始化,CANSetBitTiming()可以設(shè)定波特率,本設(shè)計(jì)中的通訊波特率設(shè)定為1 MB/s,并且總線上的節(jié)點(diǎn)都設(shè)置成相同的波特率,canAcceptFilterSet()可完成驗(yàn)收濾波設(shè)置。完成CAN節(jié)點(diǎn)的初始化之后,在任務(wù)taskican中每10 ms調(diào)用一次iCAN調(diào)度函數(shù)ICAN_Sche dul(),完成一次數(shù)據(jù)收發(fā)工作,同時(shí)將下位機(jī)節(jié)點(diǎn)采集的電壓電流值上傳至上位機(jī)并刷新顯示。
3.1.2 基于iCAN協(xié)議的消息處理
iCAN協(xié)議,即工業(yè)CAN-bus應(yīng)用層協(xié)議。是由我國(guó)自主研發(fā)的基于CAN總線的高層應(yīng)用協(xié)議,詳細(xì)的定義了CAN報(bào)文中ID以及數(shù)據(jù)的分配和應(yīng)用,建立了一個(gè)統(tǒng)一的設(shè)備模型,定義了設(shè)備的I/O資源和訪問規(guī)則,采用“基于連接,面向節(jié)點(diǎn)”的通訊方式,既支持主從方式通訊模式,又支持事件觸發(fā)通訊模式。系統(tǒng)中,上位機(jī)主節(jié)點(diǎn)的ID為0x01,下位機(jī)各節(jié)點(diǎn)的ID可以根據(jù)具體情況設(shè)定,范圍為0x00-0x3F。
節(jié)點(diǎn)中,數(shù)據(jù)的發(fā)送和接收是由微處理器集成的CAN控制器自動(dòng)完成。為滿足實(shí)時(shí)性的要求,數(shù)據(jù)的接收操作采用中斷方式。由于下位機(jī)節(jié)點(diǎn)數(shù)量較多,數(shù)據(jù)的發(fā)送接收量比較大,為了保證不丟失數(shù)據(jù),這里設(shè)計(jì)了兩個(gè)深度為40字節(jié)的CAN報(bào)文緩沖區(qū),分別用作發(fā)送和接收緩存。對(duì)緩沖區(qū)的操作,由函數(shù)canCirBufRead和函數(shù)canCirBufWrite來完成。而對(duì)于CAN消息的發(fā)送和接收由函數(shù)ICANTxMsgObjSend、canFr ameSend和ICANRxMsgObjExplain來完成。
CAN消息的發(fā)送接收流程圖如圖5所示。數(shù)據(jù)的發(fā)送調(diào)用函數(shù)ICANTxMsgObiSend,其中先按照iCAN協(xié)議規(guī)定的格式填寫報(bào)文的ID和數(shù)據(jù)段,然后查詢緩沖區(qū)的狀態(tài),如果發(fā)送緩沖區(qū)未滿,則調(diào)用canCirBufWrite將整合后的數(shù)據(jù)寫入發(fā)送緩沖區(qū),最后調(diào)用函數(shù)canFrameSend將數(shù)據(jù)發(fā)送到CAN總線上。
接收采用中斷方式,當(dāng)有中斷產(chǎn)生,即收到一幀數(shù)據(jù),此時(shí)首先查詢接收緩沖區(qū)的狀態(tài),如果未滿,則調(diào)用函數(shù)canCirBufWrite將接收到的數(shù)據(jù)寫入接收緩沖區(qū)。[!--empirenews.page--]
通過調(diào)用函數(shù)ICANRxMsgObiExplain對(duì)接收到的數(shù)據(jù)進(jìn)行處理。其中,首先調(diào)用函數(shù)canCirBufRead從接收緩沖區(qū)讀取一幀報(bào)文,然后解析出報(bào)文的功能碼FuncID和數(shù)據(jù)段內(nèi)容,根據(jù)不同的功能碼,按照iCAN協(xié)議填寫不同的響應(yīng)報(bào)文,最后調(diào)用數(shù)據(jù)發(fā)送函數(shù)ICANTxMsgObjSend返回響應(yīng)幀。
3.2 上位機(jī)軟件設(shè)計(jì)
上位機(jī)軟件的編寫利用開發(fā)工具VC,利用MFC結(jié)合PCI-CAN卡的VCI庫(kù)函數(shù)完成,軟件界面如圖6所示。
其中,利用VCI庫(kù)中的函數(shù),可以實(shí)現(xiàn)數(shù)據(jù)的發(fā)送、接收以及設(shè)備的初始化。VC自帶標(biāo)準(zhǔn)控件和模態(tài)對(duì)話框的使用,可以完成對(duì)下位機(jī)控制節(jié)點(diǎn)工作參數(shù)的設(shè)定,同時(shí)顯示并保存各車燈的電樂電流及工作情況,當(dāng)電壓或電流超出量程時(shí),會(huì)有相應(yīng)的報(bào)警提示。電壓電流監(jiān)測(cè)界面如圖7所示。
4 結(jié)論
結(jié)果表明,系統(tǒng)可以同時(shí)對(duì)多組車燈進(jìn)行功能控制,并且對(duì)車燈工作時(shí)的電壓電流進(jìn)行實(shí)時(shí)可靠的監(jiān)測(cè)。該系統(tǒng)可以用于對(duì)新出廠的車燈進(jìn)行測(cè)試,對(duì)其質(zhì)量以及性能加以評(píng)定。這樣,對(duì)保證日后車燈的質(zhì)量有著重要的意義。