基于ATMEGA128的CAN-GPRS網(wǎng)關(guān)設
1. 引言
CAN(Controller Area Network)即控制器局域網(wǎng),屬于工業(yè)現(xiàn)場總線的范疇。CAN總線與一般的通信總線相比,數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性,其應用范圍已擴展到自動控制、航空航天、機械工業(yè)及傳感器等領域。
GPRS(General Packet Radio Service)是通用分組無線業(yè)務的簡稱。相對原來GSM的撥號方式的電路交換數(shù)據(jù)傳送方式,它是一種基于第二代移動通信系統(tǒng)GSM的無線分組交換技術(shù),提供端到端的、廣域的無線IP連接。具有“實時在線”、“按量計費”、“快捷登錄”、“高速傳輸”的優(yōu)點。www.51kaifa.com
隨著GPRS移動通信技術(shù)的成熟,通過CAN-GPRS網(wǎng)關(guān)將CAN現(xiàn)場設備網(wǎng)和遠程技術(shù)控制中心聯(lián)系起來,使遠程技術(shù)控制中心具備了對CAN現(xiàn)場設備網(wǎng)的即時反應、遠程監(jiān)測以及遠程診斷的能力。
2. CAN-GPRS網(wǎng)關(guān)硬件電路設計
2.1 系統(tǒng)硬件結(jié)構(gòu)框圖
圖 1 CAN-GPRS網(wǎng)關(guān)原理框圖
CAN-GPRS網(wǎng)關(guān)由CAN收發(fā)器、CAN控制器、微控制器、RS-232接口、GPRS模塊組成。原理如圖1所示。微控制器對CAN和RS-232接口的數(shù)據(jù)進行處理與轉(zhuǎn)發(fā)實現(xiàn)網(wǎng)關(guān)的功能。
在本文的應用中,CAN現(xiàn)場設備網(wǎng)包括CAN主控器和CAN設備,網(wǎng)絡通信包含三種數(shù)據(jù),CAN主控器發(fā)送的命令數(shù)據(jù),CAN設備發(fā)送的設備數(shù)據(jù)和心跳數(shù)據(jù)。CAN-GPRS網(wǎng)關(guān)對CAN現(xiàn)場設備網(wǎng)的數(shù)據(jù)進行監(jiān)聽,對CAN設備發(fā)往CAN主控器的心跳數(shù)據(jù)和CAN主控器發(fā)往CAN設備的命令數(shù)據(jù)進行過濾,而只讓CAN設備發(fā)送的設備數(shù)據(jù)通過GPRS網(wǎng)絡傳輸至遠程技術(shù)控制中心。遠程技術(shù)控制中心則通過GPRS網(wǎng)絡將命令數(shù)據(jù)轉(zhuǎn)發(fā)至CAN現(xiàn)場設備網(wǎng)。www.51kaifa.com
2.2 系統(tǒng)硬件電路設計
本文采用ATMEGA128作為系統(tǒng)微控制器,ATmega128為基于AVR RISC結(jié)構(gòu)的8位低功耗CMOS微控制器,具有128K字節(jié)的系統(tǒng)內(nèi)可編程Flash,4K字節(jié)的內(nèi)部SRAM,4K字節(jié)的內(nèi)部EEPROM,使得系統(tǒng)無需外擴ROM和RAM即可實現(xiàn)網(wǎng)關(guān)的功能。CAN控制器采用應用非常廣泛的PHILIPS半導體的獨立CAN控制器SJA1000。CAN收發(fā)器采用 PHILIPS的TJA1040,在功能上TJA1040是PCA82C250/251高速CAN收發(fā)器的后繼產(chǎn)品。ATMEGA128與SJA1000 以外部總線方式連接。SJA1000的8位數(shù)據(jù)/地址復用總線、控制總線分別與ATMEGA128的數(shù)據(jù)/地址復用總線、控制總線連接;ATMEGA128高8位地址總線的A8位經(jīng)74F04反向后連接至SJA1000的片選引腳;SJA1000的中斷輸出引腳是開漏輸出,通過上拉電阻連接至ATMEGA128的INT0引腳。ATMEGA128與SJA1000接口電路圖如下圖所示:www.51kaifa.com
ETPro++ GPRS模塊是一款內(nèi)嵌TCP/IP協(xié)議的GPRS Modem,通常適用于不具備TCP/IP協(xié)議棧的單片機系統(tǒng)。ETPro++ GPRS模塊的硬件接口為RS-232接口。ATMEGA128的UART0經(jīng)MAXIM3232電平轉(zhuǎn)換后與ETPro++ GPRS模塊的RS-232接口連接。具體接口電路圖如下圖所示:www.51kaifa.com
圖3 ATMEGA128與MAX3232接口電路圖 |
3. CAN-GPRS網(wǎng)關(guān)軟件程序設計
3.1 引入μC/OS-II實時操作系統(tǒng)
CAN-GPRS網(wǎng)關(guān)對系統(tǒng)的實時性和可靠性要求較高,在系統(tǒng)中嵌入μC/OS-II將增強系統(tǒng)的實時性和可靠性。采用 μC/OS-II 實時操作系統(tǒng)簡化了設計過程,把應用程序代碼分割成單獨的任務,所有時間占重要地位的事件可以盡可能快和有效的得到處理。系統(tǒng)包括初始化和任務兩大部分。系統(tǒng)初始化又包括微控制器初始化、CAN初始化、GPRS模塊初始化。任務包含CAN接收數(shù)據(jù)處理、GPRS接收數(shù)據(jù)處理兩個任務。
3.2 CAN的初始化
由于需要監(jiān)聽CAN現(xiàn)場設備網(wǎng)所有節(jié)點發(fā)送的數(shù)據(jù),所以對SJA1000的驗收屏蔽寄存器(AMR)所有位置位以保證可以接收總線上的所有數(shù)據(jù)。下面給出這部分的源代碼:
INT8U SJA1000Init(void) www.51kaifa.com
{
if( SJA1000_CREATE_COMMUNATION() )
return FALSE; //SJA1000接口出錯,返回
if( SJA1000_ENTER_RETMODEL() )
return FALSE; //SJA1000進入復位模式出錯,返回
SJA1000_SET_OUTCLK(0xaa,0xc8); //Pelican 模式
SJA1000_SET_BANDRATE(ByteRate_125k); //設置波特率為125Kbps
SJA1000_SET_OBJECT(0,0xff); //設置驗收代碼寄存器、驗收屏蔽寄存器
SJA1000_SET_MOD(); //單濾波器模式
if( BCAN_QUIT_RETMODEL() )
return FALSE; //SJA1000退出復位模式出錯,返回
SJA1000_BCANAdr = (INT8U *)REG_IER; //訪問中斷使能寄存器
*SJA1000_BCANAdr = 0xFD; //使能接收中斷
return (0);
}
3.3 GPRS模塊的初始化
ETPro++ GPRS模塊有兩種工作模式,一種是命令模式,一種是SerialNET模式。在命令模式下的通信,期間需要用命令進行干預。而在SerialNET模式下一旦配置好該模式的參數(shù),進入該模式后,就可以直接按設定的參數(shù)進行數(shù)據(jù)傳輸,而無需再進行干預了。www.51kaifa.com
在本設計中采用的是SerialNET模式。GPRS模塊的初始化首先通過UART0發(fā)送三個’+’退出在線模式,之后大約等待15秒左右,收到I/ERROR (056)CR>之后即可以向模塊發(fā)送命令。發(fā)送AT+IUPCR>命令上線并建立一個PPP Internet連接開始Internet會話,收到I/ONLINECR>后即成功上線。再發(fā)送AT+I!SNMDCR> 激活SerialNET長連接模式,收到I/DONECR>即進入serialNET模式,此時則可進行數(shù)據(jù)傳輸。(源代碼略)
3.4 CAN接收數(shù)據(jù)處理任務
CAN數(shù)據(jù)的接收與處理通過外部中斷0來實現(xiàn),當數(shù)據(jù)接收完成時產(chǎn)生中斷,在中斷程序中發(fā)送CAN信號量通知CAN接收數(shù)據(jù)處理任務對收到的數(shù)據(jù)進行處理。其流程圖如下(源代碼略):
圖4 CAN接收數(shù)據(jù)處理任務流程圖 |
3.5 GPRS接收數(shù)據(jù)處理任務
GPRS數(shù)據(jù)的接收與處理通過UART0接收中斷來實現(xiàn),在UART0接收中斷程序中發(fā)送UART0信號量通知GPRS接收數(shù)據(jù)處理任務對收到的數(shù)據(jù)進行處理。不同的是通過UART0將數(shù)據(jù)轉(zhuǎn)發(fā)到CAN接口上,就不再贅述。
4. 結(jié)束語
本文設計的CAN-GPRS網(wǎng)關(guān)電路簡單可靠, 使用方便?,F(xiàn)已應用于某工程當中,實際運行狀況良好,數(shù)據(jù)傳輸穩(wěn)定可靠,很好的達到了預期設計的效果。
本文作者創(chuàng)新點:采用GPRS模塊將CAN現(xiàn)場設備網(wǎng)通過GPRS與遠程技術(shù)控制中心聯(lián)系起來,實現(xiàn)了遠程技術(shù)控制中心對CAN現(xiàn)場設備網(wǎng)的即時反應、遠程監(jiān)測以及遠程診斷。
參考文獻:
[1] 陳嘯吶,賀前華,蘇勇.基于LPC2119的RS485-CAN總線轉(zhuǎn)換器設計[J].微計算機信息,2006,5-2:20-22
[2] 饒運濤,鄒繼軍,鄭勇蕓.現(xiàn)場總線CAN 原理與應用技術(shù)[M].北京航空航天大學出版社, 2003
[3] Labrosses Jean J, 袁勤勇等譯.嵌入式系統(tǒng)構(gòu)件[M].機械工業(yè)出版社, 2002www.51kaifa.com
[4] Labrosses Jean J, 邵貝貝等譯.嵌入式實時操作系統(tǒng)μC/OS II[M].北京航空航天大學出版社,2003
[5] 耿德根,宋建國,馬潮,葉勇建.AVR高速嵌入式單片機原理與應用[M].北京航空航天大學出版社, 2001
評論