CAN總線互連中網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)
摘要: 本文系統(tǒng)地研究了CAN總線與以太網(wǎng)互連的技術(shù)要點(diǎn),首先分析互連技術(shù)在實(shí)現(xiàn)過程中遇到的難點(diǎn)――協(xié)議轉(zhuǎn)換。然后提出了一種CAN總線與以太網(wǎng)系統(tǒng)互連設(shè)計(jì)方案,并詳細(xì)闡述了其系統(tǒng)的軟硬件實(shí)現(xiàn)方法。為了提高系統(tǒng)的性能,采用高速微控制器SX52來設(shè)計(jì)嵌入式透明網(wǎng)關(guān),詳細(xì)介紹了用SX52在TCP/IP協(xié)議棧實(shí)現(xiàn)的方法,以SX52較強(qiáng)的網(wǎng)絡(luò)協(xié)議處理能力保證了整個(gè)系統(tǒng)性能的提升。
關(guān)鍵詞:CAN,協(xié)議轉(zhuǎn)換,網(wǎng)關(guān),SX52
The gist of CAN bus and internet ethernet network technology are discussed in this paper.First,We analyse difficulty when the protocol was transformed. Second,we put forward a systemic design schema and implementation. In order to improve system performance,We select SX52 with high speed micro-controler to design embedded gateway.at the same time ,we introduce how to use SX52 to realize TCP/IP protocol and improve the performance of network processor so that system can work well.
Keyword: CAN FieldBus ,Protocol conversion,Gateway,SX52
1 引言
科技和社會(huì)的發(fā)展,使20世紀(jì)末的全球化市場競爭空前激烈。競爭中的企業(yè)逐漸開始實(shí)施計(jì)算機(jī)集成制造系統(tǒng),采用系統(tǒng)集成、信息集成的觀點(diǎn)來組織工業(yè)生產(chǎn)。在這個(gè)系統(tǒng)中,為實(shí)現(xiàn)現(xiàn)場智能設(shè)備之間的多點(diǎn)數(shù)字通信,計(jì)算機(jī)測控技術(shù)與計(jì)算機(jī)網(wǎng)絡(luò)緊密地結(jié)合在一起,產(chǎn)生了能在工業(yè)現(xiàn)場環(huán)境運(yùn)行、性能可靠、造價(jià)低廉的現(xiàn)場總線(FieldBus)技術(shù)。
現(xiàn)場總線是用于生產(chǎn)制造現(xiàn)場的最底層通信網(wǎng)絡(luò),它實(shí)現(xiàn)了微機(jī)化的現(xiàn)場測量控制儀器或設(shè)備之間的雙向串行多節(jié)點(diǎn)數(shù)字通信?,F(xiàn)場總線技術(shù)的關(guān)鍵是使自動(dòng)控制系統(tǒng)與現(xiàn)場設(shè)備具備通信能力,將它們連接成網(wǎng)絡(luò)系統(tǒng),實(shí)現(xiàn)現(xiàn)場通信網(wǎng)絡(luò)與控制系統(tǒng)的集成。作為網(wǎng)絡(luò)系統(tǒng),它具有開放統(tǒng)一的通信協(xié)議。CAN總線就是現(xiàn)場總線技術(shù)在工業(yè)應(yīng)用中形成的一個(gè)成熟技術(shù)標(biāo)準(zhǔn)。它的協(xié)議建立在ISO/OSI模型基礎(chǔ)之上,但只采用了該模型底層的物理層、數(shù)據(jù)鏈路層和頂層的應(yīng)用層。在大型企業(yè)自動(dòng)化系統(tǒng)中,上層企業(yè)管理層和生產(chǎn)監(jiān)控層一般采用的都是以太網(wǎng)和PC機(jī),而在下層車間現(xiàn)場都是采用現(xiàn)場總線和單片機(jī)測控設(shè)備。上下兩層的溝通,通常采用工業(yè)控制機(jī)加以太網(wǎng)卡,再加上PC機(jī)插槽上的接口卡或并行打印口的EPP接口卡來實(shí)現(xiàn)。這種連接方式成本高,開發(fā)周期長。針對(duì)這種情況,我們設(shè)計(jì)一種單獨(dú)的CAN以太網(wǎng)網(wǎng)關(guān)互連系統(tǒng),成功地實(shí)現(xiàn)以太網(wǎng)和現(xiàn)有CAN總線網(wǎng)的直接數(shù)據(jù)互聯(lián)。
2 系統(tǒng)總體設(shè)計(jì)
CAN總線是一個(gè)設(shè)備互連總線型控制網(wǎng)絡(luò)。在CAN總線上可以掛接多達(dá)110個(gè)設(shè)備節(jié)點(diǎn),各設(shè)備間可以自主相互通信,實(shí)現(xiàn)復(fù)雜網(wǎng)絡(luò)控制系統(tǒng)。但設(shè)備信息層無法直接到達(dá)信息管理層,要想設(shè)備信息進(jìn)入信息管理層就要通過一種數(shù)據(jù)網(wǎng)關(guān)。
這里我們?cè)O(shè)計(jì)了一個(gè)SX52網(wǎng)關(guān)用于CAN總線與以太網(wǎng)的互連。系統(tǒng)總體分為三部分:現(xiàn)場測控網(wǎng)絡(luò)(CAN網(wǎng)絡(luò))、嵌入式透明SX52網(wǎng)關(guān)、以太網(wǎng)信息管理終端(如監(jiān)控平臺(tái)和網(wǎng)絡(luò)數(shù)據(jù)庫等)。以太網(wǎng)信息管理終端與CAN總線上的CAN節(jié)點(diǎn)通過ETHERNET,SX52網(wǎng)關(guān),CANBUS相互通信,其中SX52網(wǎng)關(guān)起到核心的異構(gòu)網(wǎng)絡(luò)的互連作用。
協(xié)議轉(zhuǎn)換是異構(gòu)網(wǎng)絡(luò)互連的技術(shù)關(guān)鍵和難點(diǎn),協(xié)議轉(zhuǎn)換一般可采用分層轉(zhuǎn)換的方法,自低向上逐層進(jìn)行。目前互連大都是在網(wǎng)際層或網(wǎng)絡(luò)層展開的,因而必須對(duì)互連層以下各層協(xié)議逐層向上轉(zhuǎn)換,這種轉(zhuǎn)換方法的依據(jù)是協(xié)議分層的基本原理:即低層支持高層,高層調(diào)用低層,低層斷開連接后,高層連接也隨之?dāng)嚅_,但高層斷開連接卻不會(huì)影響低層。從網(wǎng)絡(luò)的分層結(jié)構(gòu)上來看,我們?cè)O(shè)計(jì)的互連系統(tǒng)具有如圖一所示的分層結(jié)構(gòu)。以太網(wǎng)上運(yùn)行TCP/IP協(xié)議,它具有應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、以太網(wǎng)數(shù)據(jù)鏈路層和物理層;CAN總線具有應(yīng)用層、數(shù)據(jù)鏈路層和物理層,其中應(yīng)用層由用戶自己定義,數(shù)據(jù)鏈路層和物理層由CAN協(xié)議所定義;SX52數(shù)據(jù)網(wǎng)關(guān)具有物理層、數(shù)據(jù)鏈路層和應(yīng)用層,其應(yīng)用層也就是ETHERNET與CAN的信息數(shù)據(jù)交換層,SX52微控制器在此層相互解釋并轉(zhuǎn)發(fā)這兩種不同協(xié)議的數(shù)據(jù)。
圖 一 CAN總線與以太網(wǎng)互連的網(wǎng)絡(luò)分層結(jié)構(gòu)
在本設(shè)計(jì)中,SX52網(wǎng)關(guān)被設(shè)計(jì)成了一個(gè)透明數(shù)據(jù)網(wǎng)關(guān),也就是在以太網(wǎng)應(yīng)用層構(gòu)建和解析完整的CAN協(xié)議數(shù)據(jù)包,CAN協(xié)議數(shù)據(jù)包作為TCP/IP網(wǎng)絡(luò)應(yīng)用層的數(shù)據(jù)進(jìn)行傳輸,它對(duì)通信數(shù)據(jù)的具體實(shí)際意義不做任何解釋。之所以把數(shù)據(jù)網(wǎng)關(guān)設(shè)計(jì)成透明式,是基于以下三個(gè)方面的考慮:1)透明式網(wǎng)關(guān)設(shè)計(jì)相對(duì)不透明網(wǎng)關(guān)來說較簡單,在硬件上無須擴(kuò)展大容量的數(shù)據(jù)存儲(chǔ)器用于緩存通信數(shù)據(jù);軟件上也不用考慮數(shù)據(jù)的聚集和分發(fā)處理,降低了程序設(shè)計(jì)的復(fù)雜度、提高了通信的速度和實(shí)時(shí)性。2)透明式網(wǎng)關(guān)的適應(yīng)性強(qiáng),它可以應(yīng)用于不同的項(xiàng)目要求,而不透明網(wǎng)關(guān)則要根據(jù)不同要求對(duì)網(wǎng)關(guān)程序作出不同的修改。3)因?yàn)閰f(xié)議轉(zhuǎn)換設(shè)計(jì)簡單,沒有較多復(fù)雜處理,從而提高了通信的可靠性。
CAN總線網(wǎng)絡(luò)的最大通信速率為1Mpbs,而以太網(wǎng)現(xiàn)在一般為10Mbps。這里就需考慮兩者之間的速度匹配問題,這里可以從兩個(gè)方面解決這個(gè)問題:一是在網(wǎng)關(guān)上使用較大的RAM,用來作為通信數(shù)據(jù)緩沖器,提高網(wǎng)路傳輸?shù)男?。二是限制以太網(wǎng)向CAN總線傳輸?shù)臄?shù)據(jù)量,使它小于CAN總線的通信速率。
3 CAN協(xié)議分析
CAN是遵從OSI模型,按照OSI基準(zhǔn)模型,CAN結(jié)構(gòu)劃分為兩層:數(shù)據(jù)鏈路層和物理層。按照IEEE802.2和802.3標(biāo)準(zhǔn),數(shù)據(jù)鏈路層又劃分為:
――邏輯鏈路控制(LLC)
――媒體訪問控制(MAC)
物理層又劃分為:
――物理信令(PLS)
――物理媒體附屬裝置(PMA)
――媒體相關(guān)接口(MDI)
MAC子層運(yùn)行借助稱之為“故障界定實(shí)體(FCE)”的管理實(shí)體進(jìn)行監(jiān)控。故障界定是使判別短暫干擾和永久性故障成為可能的一種自檢機(jī)制。物理層可借助檢測和管理物理媒體故障實(shí)體進(jìn)行監(jiān)控(例如總線短路或中斷,總線故障管理)。LLC和MAC兩個(gè)同等的協(xié)議實(shí)體通過交換幀或協(xié)議數(shù)據(jù)單元(PDU―Protocol Data Unit)相互通信。
LLC子層提供的功能包括:幀接收濾波、超載通告和恢復(fù)管理。其中,超載通告功能是如果接收器內(nèi)部條件要求延遲下一個(gè)LLC數(shù)據(jù)幀或LLC遠(yuǎn)程幀,則通過LLC子層開始發(fā)送超載幀最多可產(chǎn)生兩個(gè)超載幀,以延遲下一個(gè)數(shù)據(jù)幀或遠(yuǎn)程幀。
按照網(wǎng)絡(luò)的OSI七層模型來看,CAN總線網(wǎng)絡(luò)完成了最下面兩層協(xié)議的工作,即物理層和數(shù)據(jù)鏈路層,它們由CAN控制器的硬件實(shí)現(xiàn)電平轉(zhuǎn)換和幀的封裝。在實(shí)際應(yīng)用中,還需要建立自己的上層協(xié)議。這里設(shè)計(jì)了一種簡單實(shí)用的“命令項(xiàng)+數(shù)據(jù)項(xiàng)”結(jié)構(gòu),其完整數(shù)據(jù)幀結(jié)構(gòu)如圖二所示。
圖 二 應(yīng)用層幀結(jié)構(gòu)
考慮到工業(yè)控制中的功能一般不多,因此命令項(xiàng)的長度設(shè)定為1BYTE(可以描述256種命令)。在數(shù)據(jù)項(xiàng)里設(shè)置數(shù)據(jù)長度是考慮到CAN總線是短幀傳送(數(shù)據(jù)幀,每幀數(shù)據(jù)只有8BYTE),有的命令所需的數(shù)據(jù)參數(shù)可能大于7BYTE,同時(shí)很有可能返回的數(shù)據(jù)也較大,所以,這里設(shè)置一個(gè)字節(jié)的數(shù)據(jù)長度項(xiàng),就可使用戶定義數(shù)據(jù)幀長度達(dá)到256字節(jié)。
4 SX52的TCP/IP協(xié)議棧的設(shè)計(jì)
ARP協(xié)議可以實(shí)現(xiàn)邏輯地址到物理地址的動(dòng)態(tài)映射。以太網(wǎng)接口支持一個(gè)唯一的48-bit的物理地址。在SX52中,ARP協(xié)議是通過一個(gè)“IP地址對(duì)應(yīng)以太網(wǎng)地址”的單登記核實(shí)現(xiàn)。當(dāng)遠(yuǎn)程主機(jī)需要知道它的物理地址時(shí),遠(yuǎn)程主機(jī)會(huì)向它發(fā)送ARP請(qǐng)求,這時(shí)它就會(huì)響應(yīng)這個(gè)遠(yuǎn)程主機(jī)的請(qǐng)求,告訴對(duì)方自己的物理地址。當(dāng)應(yīng)用層需要傳輸IP數(shù)據(jù)包時(shí),SX52 ARP協(xié)議也可以請(qǐng)求遠(yuǎn)程目的物理地址。
要傳輸?shù)腎nternet數(shù)據(jù)包數(shù)據(jù)包在以太網(wǎng)控制器的發(fā)送緩沖區(qū)中被構(gòu)建,它使用最近接收到的數(shù)據(jù)包的目的以太網(wǎng)地址作為發(fā)送數(shù)據(jù)包的目的地址。當(dāng)然,這可能不是正確的以太網(wǎng)地址,因此,在實(shí)際發(fā)送數(shù)據(jù)包之前,ARP協(xié)議將檢查發(fā)送數(shù)據(jù)包中的IP地址是否存在于ARP核中,如果發(fā)送數(shù)據(jù)包中的IP地址在這個(gè)核中,在以太網(wǎng)發(fā)送緩沖區(qū)中的數(shù)據(jù)包將使用ARP核中的以太網(wǎng)地址更新,如果不在,則ARP協(xié)議將發(fā)送一個(gè)ARP請(qǐng)求包,然后等待一個(gè)應(yīng)答。一旦這個(gè)ARP應(yīng)答接收到,這個(gè)ARP核將使用剛接收到的目標(biāo)以太網(wǎng)地址更新,接著,等待發(fā)送的數(shù)據(jù)包也將使用這個(gè)以太網(wǎng)地址更新,然后被發(fā)送出去。如果發(fā)送的ARP請(qǐng)求包沒有應(yīng)答,導(dǎo)致ARP定時(shí)器超時(shí),這是等待發(fā)送的數(shù)據(jù)包將被廢棄,正常的協(xié)議棧繼續(xù)運(yùn)行。
IP協(xié)議是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都以IP數(shù)據(jù)報(bào)格式傳輸。IP提供不可靠、無連接的數(shù)據(jù)報(bào)傳送服務(wù),不能保證IP數(shù)據(jù)報(bào)成功地到達(dá)目的地。如果發(fā)生某種錯(cuò)誤時(shí),如某個(gè)路由器暫時(shí)用完了緩沖區(qū),IP有一個(gè)簡單的錯(cuò)誤處理算法:丟棄該數(shù)據(jù)報(bào),然后發(fā)送ICMP 消息報(bào)給信源端。任何要求的可靠性必須由上層來提供。無連接的意思是IP并不維護(hù)任何關(guān)于后續(xù)數(shù)據(jù)報(bào)的狀態(tài)信息,每個(gè)數(shù)據(jù)報(bào)的處理是相互獨(dú)立的。這也說明,IP數(shù)據(jù)報(bào)可以不按發(fā)送順序接收。在本設(shè)計(jì)中,IP協(xié)議是針對(duì)特殊的應(yīng)用環(huán)境下的合理簡化。CAN總線的控制網(wǎng)絡(luò)是一種短幀、實(shí)時(shí)網(wǎng)絡(luò),所以,IP數(shù)據(jù)包無須分片(MF=DF=0),同時(shí),設(shè)置IP服務(wù)類型為一般類型,其頭長為20字節(jié),首部長度字段為5,壽命TTL設(shè)置為64。
TCP向應(yīng)用層提供一種面向連接的、可靠的字節(jié)流服務(wù)。在面向工業(yè)控制上的應(yīng)用時(shí),可以對(duì)復(fù)雜的TCP協(xié)議做合理的簡化,因?yàn)镃AN網(wǎng)絡(luò)傳輸速度較快,數(shù)據(jù)量小且l0Mpbs的以太網(wǎng)傳輸一般不會(huì)發(fā)生阻塞,以太網(wǎng)上的主機(jī)也會(huì)有足夠的能力及時(shí)處理通信數(shù)據(jù)。所以可以固定超時(shí)與重傳的時(shí)間為5s,此外RTL8019AS上有兩個(gè)1500字節(jié)的接收緩沖區(qū),且CAN網(wǎng)絡(luò)為控制網(wǎng),信息量小,所以可以固定接受窗口為1400字節(jié)。設(shè)計(jì)中采用一般的TCP服務(wù)就可以滿足應(yīng)用,所以可以忽略緊急指針和選項(xiàng)和填充字段的值。通過上述的三點(diǎn)簡化,實(shí)際上大大簡化了TCP協(xié)議的實(shí)現(xiàn),因?yàn)門CP的超時(shí)與重傳的時(shí)間的確定和窗口大小的控制有著較復(fù)雜的算法和實(shí)現(xiàn)機(jī)制。
5 創(chuàng)新點(diǎn)總結(jié)
本文的創(chuàng)新點(diǎn)是針對(duì)傳統(tǒng)工業(yè)控制自動(dòng)化現(xiàn)場總線連接方式成本高,開發(fā)周期長的不足之處,設(shè)計(jì)一種單獨(dú)的CAN以太網(wǎng)網(wǎng)關(guān)互連系統(tǒng),成功地實(shí)現(xiàn)以太網(wǎng)和現(xiàn)有CAN總線網(wǎng)的直接數(shù)據(jù)互聯(lián)。現(xiàn)場總線通過與因特網(wǎng)、企業(yè)內(nèi)部網(wǎng)相連,使自動(dòng)控制系統(tǒng)與現(xiàn)場設(shè)備成為企業(yè)綜合自動(dòng)化系統(tǒng)和信息系統(tǒng)的一個(gè)組成部分。系統(tǒng)在開放性、互操作性、現(xiàn)場設(shè)備智能化、系統(tǒng)結(jié)構(gòu)、對(duì)現(xiàn)場環(huán)境適應(yīng)性等性能方面得到了很大的提高,成功實(shí)現(xiàn)兩個(gè)異類網(wǎng)絡(luò)的數(shù)據(jù)通信。
參考文獻(xiàn):
[1] 鄒益仁 馬增良 等,現(xiàn)場總線控制系統(tǒng)的設(shè)計(jì)和開發(fā),2003,國防工業(yè)出版社
[2] 鄭文波 控制網(wǎng)絡(luò)技術(shù),2001,清華大學(xué)出版社
[3] Ed.Taylor ,鄭巖 鄧凌 譯,網(wǎng)絡(luò)互連技術(shù)指南,2001,人民郵電出版社
[4] 李明 嵌入式互連網(wǎng)絡(luò)接口的設(shè)計(jì)與開發(fā),2002,工業(yè)控制計(jì)算機(jī)
[5] 鄧遵義,寧樣,劉保國.基于CAN總線的分布式機(jī)器人控制系統(tǒng)設(shè)計(jì). 微計(jì)算機(jī)信息[J].2006年的22卷6-2期:第254-256頁
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論