|
在很多CAN的應用中需要將CAN現場設備網的數據傳輸至遠程技術控制中心,通過GPRS無線傳輸可以很好的滿足系統遠程傳輸數據的要求。本文介紹了一種基于ATMEGA128和ETPro++ GPRS模塊的CAN-GPRS網關的設計方法和實現過程。 關鍵詞:ATMEGA128;CAN;GPRS;網關 1. 引言 CAN(Controller Area Network)即控制器局域網,屬于工業現場總線的范疇。CAN總線與一般的通信總線相比,數據通信具有突出的可靠性、實時性和靈活性,其應用范圍已擴展到自動控制、航空航天、機械工業及傳感器等領域。 GPRS(General Packet Radio Service)是通用分組無線業務的簡稱。相對原來GSM的撥號方式的電路交換數據傳送方式,它是一種基于第二代移動通信系統GSM的無線分組交換技 術,提供端到端的、廣域的無線IP連接。具有“實時在線”、“按量計費”、“快捷登錄”、“高速傳輸”的優點。 隨著GPRS移動通信技術的成熟,通過CAN-GPRS網關將CAN現場設備網和遠程技術控制中心聯系起來,使遠程技術控制中心具備了對CAN現場設備網的即時反應、遠程監測以及遠程診斷的能力。 2. CAN-GPRS網關硬件電路設計 2.1 系統硬件結構框圖
圖 1 CAN-GPRS網關原理框圖 CAN-GPRS網關由CAN收發器、CAN控制器、微控制器、RS-232接口、GPRS模塊組成。原理如圖1所示。微控制器對CAN和RS-232接口的數據進行處理與轉發實現網關的功能。 在 本文的應用中,CAN現場設備網包括CAN主控器和CAN設備,網絡通信包含三種數據,CAN主控器發送的命令數據,CAN設備發送的設備數據和心跳數 據。CAN-GPRS網關對CAN現場設備網的數據進行****,對CAN設備發往CAN主控器的心跳數據和CAN主控器發往CAN設備的命令數據進行過 濾,而只讓CAN設備發送的設備數據通過GPRS網絡傳輸至遠程技術控制中心。遠程技術控制中心則通過GPRS網絡將命令數據轉發至CAN現場設備網。 2.2 系統硬件電路設計 本 文采用ATMEGA128作為系統微控制器,ATmega128為基于AVR RISC結構的8位低功耗CMOS微控制器,具有128K字節的系統內可編程Flash,4K字節的內部SRAM,4K字節的內部EEPROM,使得系統 無需外擴ROM和RAM即可實現網關的功能。CAN控制器采用應用非常廣泛的PHILIPS半導體的獨立CAN控制器SJA1000。CAN收發器采用 PHILIPS的TJA1040,在功能上TJA1040是PCA82C250/251高速CAN收發器的后繼產品。ATMEGA128與SJA1000 以外部總線方式連接。SJA1000的8位數據/地址復用總線、控制總線分別與ATMEGA128的數據/地址復用總線、控制總線連 接;ATMEGA128高8位地址總線的A8位經74F04反向后連接至SJA1000的片選引腳;SJA1000的中斷輸出引腳是開漏輸出,通過上拉電 阻連接至ATMEGA128的INT0引腳。ATMEGA128與SJA1000接口電路圖如下圖所示:
圖2 ATMEGA128與SJA1000接口電路 ETPro++ GPRS模塊是一款內嵌TCP/IP協議的GPRS Modem,通常適用于不具備TCP/IP協議棧的單片機系統。ETPro++ GPRS模塊的硬件接口為RS-232接口。ATMEGA128的UART0經MAXIM3232電平轉換后與ETPro++ GPRS模塊的RS-232接口連接。具體接口電路圖如下圖所示:
圖3 ATMEGA128與MAX3232接口電路圖 3.CAN-GPRS網關軟件程序設計 3.1 引入μC/OS-II實時操作系統 CAN- GPRS網關對系統的實時性和可靠性要求較高,在系統中嵌入μC/OS-II將增強系統的實時性和可靠性。采用μC/OS-II 實時操作系統簡化了設計過程,把應用程序代碼分割成單獨的任務,所有時間占重要地位的事件可以盡可能快和有效的得到處理。系統包括初始化和任務兩大部分。 系統初始化又包括微控制器初始化、CAN初始化、GPRS模塊初始化。任務包含CAN接收數據處理、GPRS接收數據處理兩個任務。 3.2 CAN的初始化 由于需要****CAN現場設備網所有節點發送的數據,所以對SJA1000的驗收屏蔽寄存器(AMR)所有位置位以保證可以接收總線上的所有數據。下面給出這部分的源代碼: INT8U SJA1000Init(void) { 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模式下一旦配置好該模式的參數,進入該模式后,就可以直接按設定的參數進行數據傳輸,而無需再進行干預了。 在 本設計中采用的是SerialNET模式。GPRS模塊的初始化首先通過UART0發送三個’+’退出在線模式,之后大約等待15秒左右,收到 I/ERROR (056)<CR>之后即可以向模塊發送命令。發送AT+IUP<CR>命令上線并建立一個PPP Internet連接開始Internet會話,收到I/ONLINE<CR>后即成功上線。再發送AT+I!SNMD<CR> 激活SerialNET長連接模式,收到I/DONE<CR>即進入serialNET模式,此時則可進行數據傳輸。(源代碼略) 3.4 CAN接收數據處理任務 CAN數據的接收與處理通過外部中斷0來實現,當數據接收完成時產生中斷,在中斷程序中發送CAN信號量通知CAN接收數據處理任務對收到的數據進行處理。其流程圖如下(源代碼略):
圖4 CAN接收數據處理任務流程圖 3.5 GPRS接收數據處理任務 GPRS數據的接收與處理通過UART0接收中斷來實現,在UART0接收中斷程序中發送UART0信號量通知GPRS接收數據處理任務對收到的數據進行處理。不同的是通過UART0將數據轉發到CAN接口上,就不再贅述。 3. 結束語 本文設計的CAN-GPRS網關電路簡單可靠, 使用方便,F已應用于某工程當中,實際運行狀況良好,數據傳輸穩定可靠,很好的達到了預期設計的效果。 本文作者創新點:采用GPRS模塊將CAN現場設備網通過GPRS與遠程技術控制中心聯系起來,實現了遠程技術控制中心對CAN現場設備網的即時反應、遠程監測以及遠程診斷。 參考文獻: [1] 陳嘯吶,賀前華,蘇勇.基于LPC2119的RS485-CAN總線轉換器設計[J].微計算機信息,2006,5-2:20-22 [2] 饒運濤,鄒繼軍,鄭勇蕓.現場總線CAN 原理與應用技術[M].北京航空航天大學出版社, 2003 [3] Labrosses Jean J, 袁勤勇等譯.嵌入式系統構件[M].機械工業出版社, 2002 [4] Labrosses Jean J, 邵貝貝等譯.嵌入式實時操作系統μC/OS II[M].北京航空航天大學出版社,2003 [5] 耿德根,宋建國,馬潮,葉勇建.AVR高速嵌入式單片機原理與應用[M].北京航空航天大學出版社, 2001 作者簡介: 黎 華(1978-),男(瑤族),湖南人,桂林電子科技大學電子工程學院在讀碩士,主要從事自動控制系統研究. 莫 瑋(1956-),男(漢族),廣西人,中國電子技術標準化研究所教授,博士生導師,主要從事電子技術標準化研究. 王寶友(1970-),男(漢族),山東人,中國電子技術標準化研究所高工,博士,主要從事電子技術標準化研究. 通信地址:桂林電子科技大學電子工程學院研E6 黎華 |