CAN總線與以太網(wǎng)系統(tǒng)互連中網(wǎng)關(guān)的設計與實現(xiàn)
3 CAN協(xié)議分析
CAN是遵從OSI模型,按照OSI基準模型,CAN結(jié)構(gòu)劃分為兩層:數(shù)據(jù)鏈路層和物理層。按照IEEE802.2和802.3標準,數(shù)據(jù)鏈路層又劃分為:
邏輯鏈路控制(LLC)
媒體訪問控制(MAC)
物理層又劃分為:
物理信令(PLS)
物理媒體附屬裝置(PMA)
媒體相關(guān)接口(MDI)
MAC子層運行借助稱之為“故障界定實體(FCE)”的管理實體進行監(jiān)控。故障界定是使判別短暫干擾和永久性故障成為可能的一種自檢機制。物理層可借助檢測和管理物理媒體故障實體進行監(jiān)控(例如總線短路或中斷,總線故障管理)。LLC和MAC兩個同等的協(xié)議實體通過交換幀或協(xié)議數(shù)據(jù)單元(PDU—Protocol Data Unit)相互通信。
LLC子層提供的功能包括:幀接收濾波、超載通告和恢復管理。其中,超載通告功能是如果接收器內(nèi)部條件要求延遲下一個LLC數(shù)據(jù)幀或LLC遠程幀,則通過LLC子層開始發(fā)送超載幀最多可產(chǎn)生兩個超載幀,以延遲下一個數(shù)據(jù)幀或遠程幀。
按照網(wǎng)絡的OSI七層模型來看,CAN總線網(wǎng)絡完成了最下面兩層協(xié)議的工作,即物理層和數(shù)據(jù)鏈路層,它們由CAN控制器的硬件實現(xiàn)電平轉(zhuǎn)換和幀的封裝。在實際應用中,還需要建立自己的上層協(xié)議。這里設計了一種簡單實用的“命令項+數(shù)據(jù)項”結(jié)構(gòu),其完整數(shù)據(jù)幀結(jié)構(gòu)如圖二所示。
考慮到工業(yè)控制中的功能一般不多,因此命令項的長度設定為1BYTE(可以描述256種命令)。在數(shù)據(jù)項里設置數(shù)據(jù)長度是考慮到CAN總線是短幀傳送(數(shù)據(jù)幀,每幀數(shù)據(jù)只有8BYTE),有的命令所需的數(shù)據(jù)參數(shù)可能大于7BYTE,同時很有可能返回的數(shù)據(jù)也較大,所以,這里設置一個字節(jié)的數(shù)據(jù)長度項,就可使用戶定義數(shù)據(jù)幀長度達到256字節(jié)。
4 SX52的TCP/IP協(xié)議棧的設計
ARP協(xié)議可以實現(xiàn)邏輯地址到物理地址的動態(tài)映射。以太網(wǎng)接口支持一個唯一的48-bit的物理地址。在SX52中,ARP協(xié)議是通過一個“IP地址對應以太網(wǎng)地址”的單登記核實現(xiàn)。當遠程主機需要知道它的物理地址時,遠程主機會向它發(fā)送ARP請求,這時它就會響應這個遠程主機的請求,告訴對方自己的物理地址。當應用層需要傳輸IP數(shù)據(jù)包時,SX52 ARP協(xié)議也可以請求遠程目的物理地址。
要傳輸?shù)腎nternet數(shù)據(jù)包數(shù)據(jù)包在以太網(wǎng)控制器的發(fā)送緩沖區(qū)中被構(gòu)建,它使用最近接收到的數(shù)據(jù)包的目的以太網(wǎng)地址作為發(fā)送數(shù)據(jù)包的目的地址。當然,這可能不是正確的以太網(wǎng)地址,因此,在實際發(fā)送數(shù)據(jù)包之前,ARP協(xié)議將檢查發(fā)送數(shù)據(jù)包中的IP地址是否存在于ARP核中,如果發(fā)送數(shù)據(jù)包中的IP地址在這個核中,在以太網(wǎng)發(fā)送緩沖區(qū)中的數(shù)據(jù)包將使用ARP核中的以太網(wǎng)地址更新,如果不在,則ARP協(xié)議將發(fā)送一個ARP請求包,然后等待一個應答。一旦這個ARP應答接收到,這個ARP核將使用剛接收到的目標以太網(wǎng)地址更新,接著,等待發(fā)送的數(shù)據(jù)包也將使用這個以太網(wǎng)地址更新,然后被發(fā)送出去。如果發(fā)送的ARP請求包沒有應答,導致ARP定時器超時,這是等待發(fā)送的數(shù)據(jù)包將被廢棄,正常的協(xié)議棧繼續(xù)運行。
IP協(xié)議是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸。IP提供不可靠、無連接的數(shù)據(jù)報傳送服務,不能保證IP數(shù)據(jù)報成功地到達目的地。如果發(fā)生某種錯誤時,如某個路由器暫時用完了緩沖區(qū),IP有一個簡單的錯誤處理算法:丟棄該數(shù)據(jù)報,然后發(fā)送ICMP 消息報給信源端。任何要求的可靠性必須由上層來提供。無連接的意思是IP并不維護任何關(guān)于后續(xù)數(shù)據(jù)報的狀態(tài)信息,每個數(shù)據(jù)報的處理是相互獨立的。這也說明,IP數(shù)據(jù)報可以不按發(fā)送順序接收。在本設計中,IP協(xié)議是針對特殊的應用環(huán)境下的合理簡化。CAN總線的控制網(wǎng)絡是一種短幀、實時網(wǎng)絡,所以,IP數(shù)據(jù)包無須分片(MF=DF=0),同時,設置IP服務類型為一般類型,其頭長為20字節(jié),首部長度字段為5,壽命TTL設置為64。
TCP向應用層提供一種面向連接的、可靠的字節(jié)流服務。在面向工業(yè)控制上的應用時,可以對復雜的TCP協(xié)議做合理的簡化,因為CAN網(wǎng)絡傳輸速度較快,數(shù)據(jù)量小且l0Mpbs的以太網(wǎng)傳輸一般不會發(fā)生阻塞,以太網(wǎng)上的主機也會有足夠的能力及時處理通信數(shù)據(jù)。所以可以固定超時與重傳的時間為5s,此外RTL8019AS上有兩個1500字節(jié)的接收緩沖區(qū),且CAN網(wǎng)絡為控制網(wǎng),信息量小,所以可以固定接受窗口為1400字節(jié)。設計中采用一般的TCP服務就可以滿足應用,所以可以忽略緊急指針和選項和填充字段的值。通過上述的三點簡化,實際上大大簡化了TCP協(xié)議的實現(xiàn),因為TCP的超時與重傳的時間的確定和窗口大小的控制有著較復雜的算法和實現(xiàn)機制。
5 創(chuàng)新點總結(jié)
本文的創(chuàng)新點是針對傳統(tǒng)工業(yè)控制自動化現(xiàn)場總線連接方式成本高,開發(fā)周期長的不足之處,設計一種單獨的CAN以太網(wǎng)網(wǎng)關(guān)互連系統(tǒng),成功地實現(xiàn)以太網(wǎng)和現(xiàn)有CAN總線網(wǎng)的直接數(shù)據(jù)互聯(lián)。現(xiàn)場總線通過與因特網(wǎng)、企業(yè)內(nèi)部網(wǎng)相連,使自動控制系統(tǒng)與現(xiàn)場設備成為企業(yè)綜合自動化系統(tǒng)和信息系統(tǒng)的一個組成部分。系統(tǒng)在開放性、互操作性、現(xiàn)場設備智能化、系統(tǒng)結(jié)構(gòu)、對現(xiàn)場環(huán)境適應性等性能方面得到了很大的提高,成功實現(xiàn)兩個異類網(wǎng)絡的數(shù)據(jù)通信。
參考文獻:
[1] 鄒益仁 馬增良 等,現(xiàn)場總線控制系統(tǒng)的設計和開發(fā),2003,國防工業(yè)出版社
[2] 鄭文波 控制網(wǎng)絡技術(shù),2001,清華大學出版社
[3] Ed.Taylor ,鄭巖 鄧凌 譯,網(wǎng)絡互連技術(shù)指南,2001,人民郵電出版社
[4] 李明 嵌入式互連網(wǎng)絡接口的設計與開發(fā),2002,工業(yè)控制計算機
[5] 鄧遵義,寧樣,劉保國.基于CAN總線的分布式機器人控制系統(tǒng)設計. 微計算機信息[J].2006年的22卷6-2期:第254-256頁
評論