《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > 基于ARM 技术的CAN总线和以太网间的互联设计

基于ARM 技术的CAN总线和以太网间的互联设计

2008-05-29
作者:沈 跃,王家鼎

  摘 要: 提出一種CAN總線與以太網互聯" title="互聯">互聯的系統設計方案,實現了CAN總線與以太網的數據互聯。
  關鍵詞: 網關 CAN總線? 以太網? 嵌入式? μC/OS-II

?

  CAN總線是一種設備互聯的總線型控制網絡,與其他現場總線相比,CAN總線的數據通信具有突出的可靠性、實時性" title="實時性">實時性和靈活性。這些特點使其可以滿足過程控制和制造業自動化的需求,因此被認為是最具發展前途的現場總線之一。但是,由于其收發器驅動能力的限制,約束了CAN總線的最遠直接傳輸距離和總線上可以掛接的最大節點數,給系統組網帶來了一定的困難。另一方面,由于以太網的低成本、開放性、應用軟硬件的支持以及強大的組網能力,目前已經是應用最廣泛的局域網絡技術。越來越多的工程師們開始采用CAN總線與以太網結合的技術。針對這一情況,本文提出一種CAN總線與以太網互聯的系統設計方案,實現CAN總線網和以太網的數據互聯。
1 系統結構
  CAN現場總線與以太網互聯系統的網絡架構圖如圖1所示。


  互聯網關的嵌入不僅使管理深入到控制現場,同時給系統組網帶來了很大方便,這主要體現在:
  (1)增大了系統的最大CAN節點數。一個CAN子網" title="子網">子網在不接中繼器的條件下,最多可以掛接110個節點,而每個網關可以連接一個子網,通過多個網關可以把多個子網聯系在一起,從而增加了系統的節點數。
  (2)擴大了系統的組網范圍。CAN的直接通信距離只有10千米左右,系統按照現場區域和節點數構建子網,子網與子網通過以太網連接,從而突破了區域和距離的限制。
  (3)實現了具有不同傳輸速度的現場總線子網的相互通信。網關提供一個友好的人機接口,用戶可以根據需要設置IP地址和CAN控制器的傳輸速率。
  網關的應用給系統帶來方便的同時,也付出了一定的代價。在設計中必須考慮實時性與安全性,以提高系統的整體效率。
  (1)實時性。由于使用網關,對數據的處理必須經歷先存儲、再轉換、最后再發送的過程,這增加了存儲轉發延時。因此在設計中必須考慮系統的實時性,要求系統在存儲新接收到的數據后,立即啟動協議轉換和數據轉發任務,盡量減小系統延時。
  (2)安全性。若網關出現故障,會對CAN子網和以太網間的通信產生影響,甚至導致子網與整個系統的通信癱瘓。因此在硬件設計中,要盡量避免干擾等問題的出現,軟件必須具備對可糾正錯誤及時作出反應、并把錯誤信息返回給用戶的能力。
2 系統硬件設計
  系統硬件設計分為三部分:CAN接口、以太網網絡接口、人機接口。
2.1 主控制器的選擇
  主控制器采用Philips公司生產的ARM控制器LPC2292。LPC2292是一個基于實時仿真和跟蹤的16/32位ARM7TDMI-STM CPU,CPU內核工作電壓為1.8V,引腳工作電壓為3.3V。
  LPC2292嵌入256KB的高速Flash存儲器,無需外擴存儲器,完全可以滿足系統代碼的容量。獨特的加速結構使32位代碼能夠在最大時鐘速率下運行,可實現TCP/IP" title="TCP/IP">TCP/IP協議棧中的ARP、TCP、UDP、ICMP等網絡協議。
  LPC2292內部集成兩個CAN控制器,以方便系統采用冗余設計。CAN控制器主要特性有:單個總線上的數據傳輸速率高達1Mbps;32位寄存器和RAM訪問;兼容CAN2.0B,ISO11898-1規范;全局驗收濾波器可以識別所有的11位和29位Rx標識符;驗收濾波器為選擇的標準標識符提供了FullCAN-style自動接收。
  CPU外部靜態存儲控制器為CPU內部系統總線與外部存儲器或外部I/O器件提供了一個接口。利用這種外部總線可以方便地與以太網網卡控制器連接。
2.2 CAN接口部分
  考慮系統的安全性,CAN接口采用冗余設計。當正常通道發生故障,可自動調用冗余通道進行傳輸。如果冗余通道也發生故障,則進入故障處理。其硬件接口如圖2所示。LPC2292兩路通道分別通過高速總線驅動器TJA1050與總線相連,總線驅動器采用帶隔離的DC/DC單獨供電,不僅實現了兩路通道之間的電氣隔離,也實現了網關與總線之間的電氣隔離。


2.3 網絡接口部分
  網卡控制器采用臺灣RETACK公司的10Mbps以太網控制芯片RTL8019。RTL8019支持全雙工工作模式,軟件兼容8位或16位的NE2000模式;內部集成DMA控制器、ISA總線控制器以及16KBRAM、網絡PHY收發器等。其與LPC2292的連接如圖2所示。RTL8019使用LPC2292外部存儲控制的BANK3部分,其數據地址范圍為:0x83400000~0x8340001F。RTL8019的工作電壓為+5V,而LPC2292的引腳工作電壓為3.3V,所以還應在連接線上串聯470Ω的保護電阻。網絡傳輸線采用雙絞線。
2.4 人機接口
  硬件部分還包括LED數碼管顯示和鍵盤。LED用來顯示工作狀態,鍵盤用來根據具體情況修正總線傳輸速率和網關的IP地址。
3 軟件設計
3.1 引入RTOS

  網關對系統的實時性要求比較高,若采用傳統的前后臺設計方法,設計會顯得過于復雜,且實時性不能保證。解決這個問題的最好方法是采用實時操作系統RTOS。μC/OS-II" title="C/OS-II">C/OS-II操作系統是一種源代碼公開的嵌入式實時操作系統,具有代碼短小精悍、簡單易學的特點。針對網關的設計,這是一個理想的選擇。
  μC/OS-II完全是占先式的實時內核,基于優先級。即總是讓就緒態中優先級最高的任務先運行,因此實時性比非占先的內核要好。其大部分代碼是用C語言編寫的,可移植性強。
3.2 系統構成
  嵌入式網關的主要功能是進行以太網數據報文與CAN數據幀之間的協議轉換,實現以太網與CAN總線的互聯;其次是根據應用環境,通過人機交互接口改變網關的IP地址和CAN總線的傳輸速率。整個嵌入式系統的構成如圖3所示。任務設計的前期工作有:
  (1)實時操作系統的移植:μC/OS-II絕大部分代碼是用C語言編寫的,可移植性強,可以在大多數8位、16位、32位以至64位微處理器、微控制器、數字信號處理器(DSP)上運行。μC/OS-II在LPC2292上的移植可參考文獻[1]
  (2)TCP/IP協議和CAN協議的嵌入:μC/OS-II操作系統只包含了實時內核、任務管理、時間管理、任務間的通信同步(信號量、郵箱、消息隊列)和內存管理等功能,用戶必須根據需要添加相應的功能模塊。網關的設計將TCP/IP和CAN協議嵌入到操作系統中,并提供API接口函數供用戶調用。


3.3 系統實現
  采用RTOS使整個設計簡單、易調試,各個任務相互獨立且具有不同的優先級來保證緊急任務及時響應,從而有效地對任務進行調度。系統軟件設計由操作系統和一系列用戶應用程序構成。
  主函數是程序首先執行的一個函數,主要實現系統硬件和操作系統的初始化,該函數永遠不返回。硬件初始化包括中斷、鍵盤、顯示等初始化;操作系統初始化包括任務控制塊、事件控制塊的初始化,而且在啟動多任務調度之前,必須至少創建一個任務。此系統創建了一個啟動任務,主要負責時鐘的初始化和啟動、中斷的啟動、CAN控制器的初始化與啟動、端口與IP地址的初始化、RTL8019的初始化與啟動,并且對各個應用任務進行了劃分。在交出CPU的使用權后,自做空閑處理。
  (1)任務的劃分
  要完成多任務系統的各種功能,必須對任務進行劃分。本程序根據各個任務的重要性和實時性,把整個模塊分成7個具有不同優先級的應用任務,即系統監控、CAN數據發送、鍵盤掃描、以太網數據發送、協議轉換、LED顯示、系統配置。表1為任務劃分表。


  除了7個主要應用任務外,還有兩個中斷服務子程序。一個是時鐘節拍中斷,用于提供周期性信號源;另一個是接收中斷,用于把接收到的數據寫入緩沖區。
  (2)任務的具體實現
  任務劃分后,各任務便具有獨立的堆棧空間,彼此爭奪CPU的使用權。一旦獲得CPU的使用權,就會獨立運行,完成特定的功能。
  CAN總線通信模塊包括數據傳輸和總線管理兩部分。數據傳輸實現的功能有CAN初始化、CAN報文發送和CAN報文接收。CAN初始化及報文的接收在啟動任務與中斷服務程序中實現,CAN報文發送和總線管理作為一個單獨的任務獨立運行。總線管理功能塊的主要功能是總線檢測,判斷一路總線是否良好。如否,則進入另一路總線檢測;如果冗余總線良好,則采用冗余總線通信。CAN數據發送任務需要系統調度器通知是否有待發送數據進入發送隊列,任務的實現如圖4所示。
  以太網通信模塊由以太網數據收發功能塊和數據協議管理功能塊構成。數據的收發功能塊主要實現RTL8019的初始化、數據報文的發送與接收。同理,RTL8019的初始化在系統的啟動任務中實現。數據的接收在RTL8019的中斷服務程序中實現。數據協議管理主要實現對接收數據報文的解析及給待發送數據添加協議報頭。以太網數據發送與協議管理分別作為獨立任務運行。


  以太網數據發送任務同樣需要系統調度器通知發送隊列中是否有待發送數據。若沒有數據發送,則將該任務掛起,系統運行其他任務。以太網數據發送任務主要對RTL8019進行操作,根據RTL8019的狀態,將發送隊列中數據通過DMA傳送到8019的發送緩沖區,啟動發送,并根據發送結果對發送隊列指針調整。
  以太網協議管理即協議轉換任務在用戶數據與8019驅動需要的數據報文之間進行協議轉換。TCP/IP協議為四層模型:應用層、傳輸層、網絡層和數據鏈路層,每層具有不同的功能,并有相應的子協議,層與層之間在邏輯上相互獨立。在編程時,可以直接調用嵌入的TCP/IP協議的API函數,對數據報文進行分層。該任務對從8019傳過來的數據處理過程如圖5所示:不同的子協議具有不同的功能號,任務根據功能號對協議進行區別。將用戶數據傳遞給8019驅動的示意圖則為圖5的逆序表示。


  (3)任務間的同步與調度
  通常多任務操作系統的任務不同于一般的函數,它是一個無限循環,而且沒有返回值。如果沒有更高優先級的任務進入就緒態,當前任務不會放棄對CPU的使用權。為了實現操作系統的正常運行和有關事件的同步,必須正確處理任務間的通信和事件標志的設置。系統的功能結構如圖6所示。
  各任務具有不同的優先級,通過調用系統掛起函數或延時函數,可以啟動具有更高優先級的進入就緒態的任務。高優先級的任務(例如1、2、3、4號任務)由于申請某個資源而發生阻塞,進入掛起態。系統調度器啟動低優先級的任務,通過對延時參數的設置,每隔一定時鐘節拍就啟動鍵盤掃描或LED顯示任務。如果其中有任何一事件發生就啟動相關的任務。這個過程通過信號量的通信機制實現。對每個事件分配一個信號量,一旦事件發生就啟動信號量的等待任務列表中進入就緒態的任務,從而保證任務與事件同步。


  在嵌入式硬件平臺的基礎上,用μC/OS-II實時操作系統開發應用程序有其獨到之處,用戶可以直接利用系統的接口函數編寫應用程序,毋需另行開發。這極大方便了用戶編程,縮短了軟件的開發周期,提高了開發效率。基于ARM LPC2292 CAN總線和以太網間的網關,在實驗調試過程中,運行狀況良好,工作穩定。
參考文獻
1 周立功.ARM微控制器基礎與實戰.北京:北京航空航天大學出版社,2003
2 Jean.Labrosses著,邵貝貝譯.嵌入式實時操作系統μC/OS-II.北京:北京航天航空大學出版社,2003
3 饒運濤.現場總線CAN原理與應用技術.北京:北京航空航天大學出版社,2003
4 莫傳孟.基于嵌入式系統μC/OS-II的雙CAN通信構件.微計算機信息,2004;20(3)
5 Jean J.Labrosses著,袁勤勇譯.嵌入式系統構件.北京:機械工業出版社,2002
6 村三公保.TCP/IP網絡試驗程序篇.北京:科學出版社,2003

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 欧美中日韩免费视频| 亚洲色欲久久久综合网东京热| 亚洲精品一区二区三| 国产精品福利在线| 亚洲欧洲精品一区| 高清不卡日本v二区在线| 日本不卡一区二区三区四区| 国产日韩欧美综合| 久久精品国产sm调教网站演员 | 日韩欧美一区二| 久久久久久久少妇| 国产精选一区二区| 国产精品久久久久久久久久久久午夜片 | 国产精品美女免费视频| 国产女精品视频网站免费| 日韩欧美在线一区二区| 久无码久无码av无码| 在线视频不卡国产V| 日本久久久久久久久| 一区二区高清视频| 欧美一区二区视频在线| 亚洲欧美日韩精品在线| 久久精品五月婷婷| 97成人在线观看视频| 电影午夜精品一区二区三区| 97干在线视频| 国产区精品视频| 俄罗斯精品一区二区| 亚洲午夜精品一区二区| 久久人人爽国产| 亚洲精品中文字幕在线| 国产在线观看福利| 97成人在线观看视频| 国产成人一二三区| 国产精品久久久久久免费观看| 日本久久久网站| 日韩中文字幕亚洲精品欧美| 777国产偷窥盗摄精品视频| 久久成年人免费电影| 国产精品高清网站| 精品国产一区二区三区久久狼黑人 |