基于CAN總線的數(shù)據(jù)采集記錄裝置設計
1.緒論
現(xiàn)場總線作為生產(chǎn)現(xiàn)的場數(shù)據(jù)通信與控制的網(wǎng)絡技術,在測量控制領域隨著信息技術的發(fā)展已得到廣泛的應用?,F(xiàn)在的工業(yè)現(xiàn)場總線控制網(wǎng)絡技術已經(jīng)被認為是一種比較的成熟的技術,同時也被認為是目前最具有前途的一種現(xiàn)場總線之一。然而,CAN現(xiàn)場總線作為一種面向工業(yè)底層控制的通信網(wǎng)絡,其局限性也是顯而易見的。首先,它不能與Internet互連,不能實現(xiàn)遠程信息共享。其次,它不易與上位控制機直接接口。因此,我們在本文中引入以太網(wǎng)技術。
以太網(wǎng)是在上個世紀70年代為連接多個實驗室而開發(fā)出的一種局域網(wǎng)技術,隨著互聯(lián)網(wǎng)技術和計算機的迅猛發(fā)展,以太網(wǎng)已成為當今世界上應用范圍最廣、最為常見的一種網(wǎng)絡技術。他在工業(yè)控制中的優(yōu)勢是顯而易見的:首先,基于TCP/IP協(xié)議的以太網(wǎng)是一種標準開放式的網(wǎng)絡,由其組成的系統(tǒng)兼容性和互操作性好,資源共享能力強,可以很容易的實現(xiàn)將控制現(xiàn)場的數(shù)據(jù)與信息系統(tǒng)上的資源共享;其次,數(shù)據(jù)的傳輸距離長、傳輸速率高,而且很容易與Internet連接。
本設計利用基于ARM7內(nèi)核的LPC2294處理器,在深入分析了以太網(wǎng)、TCP/IP協(xié)議和CAN總線的基礎上,實現(xiàn)了兩路CAN總線和以太網(wǎng)的通信互聯(lián)。
2.系統(tǒng)硬件結(jié)構設計
本設計使用的處理器是PHIIPS公司推出的LPC2294,他是一款基于支持實時仿真和跟蹤的ARM7TDMI內(nèi)核,功能強大且功耗低。
其顯著的優(yōu)點是非常適合于通訊網(wǎng)關、協(xié)議轉(zhuǎn)換器以及其它各種類型的應用。設計中圍繞LPC2294內(nèi)核,進行了最小系統(tǒng)和相應的擴展器件電路設計,設計里包括了復位電路、晶振電路、電源電路等關鍵電路。
2.1系統(tǒng)電源電路設計
由于核心控制器LPC2294需要2組電源:
1.8V的內(nèi)核供電電源和3.3V的IO口供電電源,而以太網(wǎng)控制器RTL8019AS需要的供電電源為5V.因此,我們設計了3個電壓轉(zhuǎn)換電路:采用降壓穩(wěn)壓器LM1575將輸入電壓轉(zhuǎn)換為穩(wěn)定的5V輸出,再通過低壓差(LDO)穩(wěn)壓器SPX1117M-3.3把LM1575穩(wěn)壓輸出的5V作為輸入電源,轉(zhuǎn)換為3.3V輸出電源,同時利用SPX1117M-1.8得到了1.8V電源。
2.2以太網(wǎng)電路設計
以太網(wǎng)通信模塊采用了以太網(wǎng)控制器RTL8019AS(5V供電)和隔離接口HR90117A的組合方式。設計中使用兩路CAN進行數(shù)據(jù)采集,由于 LPC2294具有4路CAN控制器,其功能與SJA1000相似,因此只需外接兩個高速CAN隔離收發(fā)器便可達到通信的目的[2].
2.3 CAN電路設計
CAN總線模塊是本設計的核心部分,負責實現(xiàn)數(shù)據(jù)采集的功能。設計中使用的CTM1050T是一款帶隔離的高速CAN收發(fā)器芯片,該芯片內(nèi)部集成了所有必需的CAN隔離及CAN收、發(fā)器件,這些都被集成在不到3平方厘米的芯片上,芯片的主要功能是將CAN控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平并且具有DC2500V的隔離功能及ESD(Electro-Static Discharge,靜電釋放)保護作用。
本記錄儀使用CTM1050T向上兼容的3.3V和5V CAN控制器,實現(xiàn)了兩路CAN數(shù)據(jù)采集,所以LPC2294和CTM1050T之間數(shù)據(jù)發(fā)送接收引腳可以直接連接,同時我們還需加入一個電阻阻值為20Ω的終端電阻來提高數(shù)據(jù)通信的抗干擾性及可靠性。
3.系統(tǒng)軟件設計
3.1程序設計開發(fā)環(huán)境及設計流程
設計以VC++6.0為開發(fā)環(huán)境,C語言為開發(fā)語言,首先完成了系統(tǒng)的移植,接著完成了RTL8019AS軟件設計與CAN控制器軟件設計,實現(xiàn)了CAN與以太網(wǎng)網(wǎng)關協(xié)議轉(zhuǎn)換。
3.2μc/os-Ⅱ的移植
為了使一個內(nèi)核能夠運行在微處理器或微控制器上,我們首先需要做的便是進行移植。完成移植的過程中我們修改了3個和CPU相關的文件,分別是os_cpu.h、os_cpu_a.asm和os_cpu_c.c,移植的過程中發(fā)現(xiàn):
根據(jù)處理器的不同,一個移植實例需要編寫或改寫的代碼數(shù)量不盡相同,可能介于50~500行之間。
3.3 RTL8019AS軟件設計
RTL8019AS的工作模式有查詢和中斷兩種模式,本設計中考慮到實時性、多任務,以最大限度的利用CPU與μc/os-Ⅱ系統(tǒng)的實時性、提高系統(tǒng)的響應速度為目的,采用了中斷的方式來實現(xiàn)RTL8019AS的收發(fā)功能。
當所謂的中斷過程既在中斷服務子程序(ISR)的入口處,程序的走向由讀取到的ISR的值來確定。如果收到一個新的幀,則首先清除接收中斷標志,接著讀取幀數(shù)據(jù),等待接收緩沖區(qū)空;如果沒有收到新的幀,則判斷幀是否發(fā)送完畢,若一幀已發(fā)送完則清除發(fā)送中斷標志并讀取狀態(tài)寄存器,并進一步判斷發(fā)送隊列是否還有未發(fā)送的數(shù)據(jù)幀,如果有則繼續(xù)發(fā)送。如果全部數(shù)據(jù)發(fā)送完,則從中斷子程序返回。主程序流程圖如圖1所示。
3.4 CAN控制器軟件設計
設計中使用的處理器LPC2294內(nèi)部集成了4個獨立的CAN模塊,并且為所有的CAN控制器提供了全局的可以接受標識符查詢的功能。設計中只使用到CAN控制器1和CAN控制器2兩個控制器,CAN模塊的存儲器在處理器中的地址映射如下:
AF RAM(2KB):E0038000~E00387FF;
AF RAM寄存器:E003C000~E003C017;
中央CAN寄存器:E0040000~E004000B;
CAN控制器1寄存器:E0044000~E004405F;
CAN控制器2寄存器:E0048000~E004805F;
CAN的驅(qū)動程序主要包括四個部分:CAN的初始化、CAN的數(shù)據(jù)接收、CAN的數(shù)據(jù)發(fā)送和異常處理。
另外,由于CAN通信中沒有物理地址,只是采用軟件ID辨識的方式來對總線上的信息進行過濾的,并且ID還決定當有多個節(jié)點需要同時傳送數(shù)據(jù)時的優(yōu)先級,故對ID設置要格外注意。
3.5 CAN與以太網(wǎng)網(wǎng)關協(xié)議轉(zhuǎn)換
由于以太網(wǎng)和CAN是兩個不同的通信系統(tǒng),當連接在CAN總線上的設備向以太網(wǎng)發(fā)送數(shù)據(jù)時,數(shù)據(jù)必須通過CAN接口電路發(fā)送到主系統(tǒng)上,通過協(xié)議轉(zhuǎn)換程序,提取要傳送的數(shù)據(jù),然后對數(shù)據(jù)添加TCP和IP協(xié)議所需要的幀信息。
在本設計中用到的μc/os-Ⅱ操作系統(tǒng)下,應用層功能是以5個主要的任務來實現(xiàn)的,按優(yōu)先級從高到低依次為: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)測試
接通電源,程序正常啟動后,數(shù)據(jù)記錄儀開始工作。連通后的ip地址為192.168.[!--empirenews.page--]
1.102,物理地址為00-26-18-20-d9-f0,通過ping命令測試,證明數(shù)據(jù)包收發(fā)成功,設備聯(lián)通正常。
程序運行后,依次完成獲取數(shù)據(jù)容量、讀取時間、設定時間、清空記錄儀、獲取壞塊、初始化記錄儀,接著數(shù)據(jù)記錄儀開始工作,程序運行結(jié)果如圖2所示。
5.結(jié)束語
測試證明:系統(tǒng)完成了CAN和以太網(wǎng)互聯(lián)的功能,具有較高的可靠性和易用性。記錄儀具備了在以太網(wǎng)高速數(shù)據(jù)傳輸下記錄、儲存、分析總線數(shù)據(jù)的能力,使設備在調(diào)試階段、實際運行工作階段以及日常維護階段具備了完善的電子數(shù)據(jù)診斷和故障定位能力。