基于CAN總線的數(shù)據(jù)采集記錄裝置設(shè)計(jì)
當(dāng)所謂的中斷過(guò)程既在中斷服務(wù)子程序(ISR)的入口處,程序的走向由讀取到的ISR的值來(lái)確定。如果收到一個(gè)新的幀,則首先清除接收中斷標(biāo)志,接著讀取幀數(shù)據(jù),等待接收緩沖區(qū)空;如果沒(méi)有收到新的幀,則判斷幀是否發(fā)送完畢,若一幀已發(fā)送完則清除發(fā)送中斷標(biāo)志并讀取狀態(tài)寄存器,并進(jìn)一步判斷發(fā)送隊(duì)列是否還有未發(fā)送的數(shù)據(jù)幀,如果有則繼續(xù)發(fā)送。如果全部數(shù)據(jù)發(fā)送完,則從中斷子程序返回。主程序流程圖如圖1所示。
3.4 CAN控制器軟件設(shè)計(jì)
設(shè)計(jì)中使用的處理器LPC2294內(nèi)部集成了4個(gè)獨(dú)立的CAN模塊,并且為所有的CAN控制器提供了全局的可以接受標(biāo)識(shí)符查詢的功能。設(shè)計(jì)中只使用到CAN控制器1和CAN控制器2兩個(gè)控制器,CAN模塊的存儲(chǔ)器在處理器中的地址映射如下:
AF RAM(2KB):E0038000~E00387FF;
AF RAM寄存器:E003C000~E003C017;
中央CAN寄存器:E0040000~E004000B;
CAN控制器1寄存器:E0044000~E004405F;
CAN控制器2寄存器:E0048000~E004805F;
CAN的驅(qū)動(dòng)程序主要包括四個(gè)部分:CAN的初始化、CAN的數(shù)據(jù)接收、CAN的數(shù)據(jù)發(fā)送和異常處理。
另外,由于CAN通信中沒(méi)有物理地址,只是采用軟件ID辨識(shí)的方式來(lái)對(duì)總線上的信息進(jìn)行過(guò)濾的,并且ID還決定當(dāng)有多個(gè)節(jié)點(diǎn)需要同時(shí)傳送數(shù)據(jù)時(shí)的優(yōu)先級(jí),故對(duì)ID設(shè)置要格外注意。
3.5 CAN與以太網(wǎng)網(wǎng)關(guān)協(xié)議轉(zhuǎn)換
由于以太網(wǎng)和CAN是兩個(gè)不同的通信系統(tǒng),當(dāng)連接在CAN總線上的設(shè)備向以太網(wǎng)發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)必須通過(guò)CAN接口電路發(fā)送到主系統(tǒng)上,通過(guò)協(xié)議轉(zhuǎn)換程序,提取要傳送的數(shù)據(jù),然后對(duì)數(shù)據(jù)添加TCP和IP協(xié)議所需要的幀信息。
在本設(shè)計(jì)中用到的μc/os-Ⅱ操作系統(tǒng)下,應(yīng)用層功能是以5個(gè)主要的任務(wù)來(lái)實(shí)現(xiàn)的,按優(yōu)先級(jí)從高到低依次為:CAN總線接收數(shù)據(jù)包;CAN總線發(fā)送數(shù)據(jù)包;TCP/UDP協(xié)議數(shù)據(jù)包接收;TCP/UDP協(xié)議數(shù)據(jù)包發(fā)送;主系統(tǒng)協(xié)議轉(zhuǎn)換。
4.系統(tǒng)測(cè)試
接通電源,程序正常啟動(dòng)后,數(shù)據(jù)記錄儀開始工作。連通后的ip地址為192.168.
1.102,物理地址為00-26-18-20-d9-f0,通過(guò)ping命令測(cè)試,證明數(shù)據(jù)包收發(fā)成功,設(shè)備聯(lián)通正常。
程序運(yùn)行后,依次完成獲取數(shù)據(jù)容量、讀取時(shí)間、設(shè)定時(shí)間、清空記錄儀、獲取壞塊、初始化記錄儀,接著數(shù)據(jù)記錄儀開始工作,程序運(yùn)行結(jié)果如圖2所示。
5.結(jié)束語(yǔ)
測(cè)試證明:系統(tǒng)完成了CAN和以太網(wǎng)互聯(lián)的功能,具有較高的可靠性和易用性。記錄儀具備了在以太網(wǎng)高速數(shù)據(jù)傳輸下記錄、儲(chǔ)存、分析總線數(shù)據(jù)的能力,使設(shè)備在調(diào)試階段、實(shí)際運(yùn)行工作階段以及日常維護(hù)階段具備了完善的電子數(shù)據(jù)診斷和故障定位能力
評(píng)論