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