傳統(tǒng)的TCP/IP參考模型被分為四個層次:應用層、傳輸層、網絡互連層和主機到網絡層。各個層次上均有相應的標準協(xié)議。這些協(xié)議的結合使用構成了整個基于TCP/IP模型的網絡應用。
這組廣泛的協(xié)議中,絕大多數在工業(yè)以太網的方案中得到了應用。其中主機到網絡層主要涉及到的是OSI模型的第一、二層。之后是相當重要的網絡互連層和傳輸層協(xié)議。它們是整個TCP/IP協(xié)議簇的核心,在OSI模型中居于第三、四層。
由于傳輸機制和通信模式的問題主要關聯(lián)到OSI網絡模型的第四層---網絡傳輸層,所以本文重點討論在傳輸層中這幾種主流工業(yè)以太網的差異,其余各層僅作涉及,不做詳細論述。
1、UDP和TCP機制
在工業(yè)以太網應用中,網絡互連層和傳輸層協(xié)議共同構成了整個系統(tǒng)的通信棧。不同的工業(yè)以太網方案在通信棧的構成方式、應用模型上有一定的差別,這種差別也是我們討論的重點。其中最為典型的一個問題就是:傳輸層使用TCP還是使用UDP的問題?
首先我們看一下TCP/IP協(xié)議中關于TCP/UDP的說明:
TCP&UDP分別是Transmission Control Protocol和User Datagram Protocol的英文縮寫。關于兩者之間最廣為人知的區(qū)別就是:是否面向連接。而從工業(yè)以太網的角度,事實上,這種區(qū)別所造成的對網絡性能的影響才是一個關鍵。具體說來:
TCP作為基于連接的協(xié)議,在正式收發(fā)數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次“對話”才能建立起來。而且為確保正確地接收數據,TCP 會為每個封包都加上一個順序碼, 并且要求在目標計算機成功收到數據時發(fā)回一個確認(即 ACK)。如果在某個時限內未收到相應的 ACK,將重新傳送數據包。如果網絡擁塞,這種重新傳送將導致發(fā)送的數據包重復。但是,接收計算機可使用數據包的序號來確定它是否為重復數據包,并在必要時丟棄它。
以上的連接、包計數、接收確認握手等機制確實能使TCP協(xié)議做到為應用程序提供可靠的通信連接,使一臺網絡終端發(fā)出的字節(jié)流無差錯地發(fā)往網絡上的其他終端。但是這些操作卻影響到了網絡在速度上的性能。
而UDP是與TCP相對應的協(xié)議。它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數據包發(fā)送過去!它也沒有TCP 的封包所具有順序碼, 接收端亦不會有響應產生及進行檢查以確認是否收到重復或遺失的封包。這些都決定了UDP是作為一種不可靠的協(xié)議存在的。但是UDP具有TCP所望塵莫及的速度優(yōu)勢。雖然TCP協(xié)議中植入了各種安全保障功能,但是在實際執(zhí)行的過程中會占用大量的系統(tǒng)開銷,無疑使速度受到嚴重的影響。反觀UDP由于排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應用來完成,極大降低了執(zhí)行時間,使速度得到了保證。
從工業(yè)以太網的角度出發(fā),應當從數據通信的需求上對UDP或TCP的選擇問題做一個結論。首先我們來看一看在工業(yè)環(huán)境中,網絡上傳輸的數據具有的特性。
工業(yè)環(huán)境中待傳輸的信息類型包括實時過程控制數據、設備狀態(tài)、監(jiān)控數據、系統(tǒng)故障診斷數據、報警數據等。這些數據通常在量上并不大。這個特點在以往的現(xiàn)場總線體系中有充分的體現(xiàn),例如,LonWorks現(xiàn)場總線的數據包長度只有12個bit,EIB現(xiàn)場總線數據包長度只有22個bit,等等。
而這些數據對實時的傳輸的要求也不盡相同。具體說來,I/O數據對實時性要求最高。而組態(tài)、參數設置、診斷等則不太要求過高的實時性而更偏向可靠的數據傳輸。
對數據傳輸的要求不同決定了協(xié)議的選擇,在工業(yè)以太網的方案中,可以采取的方式是:
對于對實時性要求較高的實時I/O數據,采用UDP/IP協(xié)議來傳送,這時可以獲得UDP的如下幾個好處:
(1) 數據發(fā)送前不用建立連接,減少了開銷和延遲,這一點控制系統(tǒng)來說是非常重要的。
(2) UDP沒有采用可靠交付,數據收發(fā)雙方不用維護很多的用于記錄連接狀態(tài)的表。
(3) UDP 數據報首部很短,只有8字節(jié),處理方便。
(4) UDP取消了擁塞控制,所以發(fā)送方不會降低發(fā)送速度,這點在實時應用上非常重要。
而對實時性要求不太高的顯式信息則采用TCP/IP來傳送。這樣減少了UDP方式的傳輸負擔,也更容易實現(xiàn)。
2、 TCP和UDP選擇的通信模式
在工業(yè)以太網的關鍵任務——實時數據傳輸上,依靠的或者是傳輸可靠的TCP或者是傳輸迅速的UDP?;旧媳容^側重于其中一者。對具體某一種工業(yè)以太網方案而言,在選擇TCP還是UDP的問題上,還有一個重要的原因是其方案中所提供的通信模式。
網絡通信模式大體上有以下幾種:
1.Client/Server(客戶端/服務器) 模式;
2.master/slave(主/從)模式;
3.peer to peer(點對點)模式;
4.producer/consumer(生產者/消費者)模式;
5.Publish/subscribe(發(fā)布者/預定者)模式。
3、基于TCP的工業(yè)以太網
正是基于TCP/IP協(xié)議的可靠和穩(wěn)定性,大多數工業(yè)以太網協(xié)議,如:Modbus/TCP、PROFInet、INTERBUS、MMS TCP/IP及.NET for Manufacturing等都選擇了TCP/IP。由于篇幅有限,下面僅就Modbus/TCP、PROFInet做簡單介紹。
(1)Modbus/TCP
回到對于工業(yè)以太網數據傳輸的特點和需求上,我們可以看到并不是所有的工業(yè)環(huán)境都需要達到微秒級別的時間要求,類似于IDA所采用的RTPS模式雖然能使工業(yè)以太網的傳輸層性能達到相當的標準,但同時又增加了過多的成本。另一方面,某些看上去似乎需要UDP協(xié)議來體現(xiàn)其高速性能的場合,其實可以通過在物理層和鏈路層的優(yōu)化的基礎上(如采用星型交換機等),結合工業(yè)以太網數據量小的特點,采用傳統(tǒng)方式的TCP協(xié)議來實現(xiàn)。這樣即省去了在使用UDP協(xié)議時必須做增強開發(fā)來構造通信的確定性方面所付出的高額代價(TCP本身就是確定性的),又可以實現(xiàn)工業(yè)以太網的實時性要求。這方面的一個典型就是施耐德公司的一個相對價格低廉的工業(yè)以太網方案——Modbus/TCP協(xié)議。
Modbus/TCP協(xié)議是在Modbus協(xié)議的基礎上發(fā)展而來的。為了盡量地使用已有成果,Modbus/ TCP協(xié)議的實現(xiàn)是在不改變原有Modbus協(xié)議的基礎上,只是將它的傳輸層協(xié)議簡單的移植到TCP/IP上。因此在TCP/IP網絡中Modbus/TCP使用傳輸控制協(xié)議(TCP)進行Modbus應用協(xié)議的數據傳輸。參數和數據使用封裝的方法嵌入到TCP報文的用戶數據容器中進行傳送。另外地址和校驗在Modbus/TCP中也由底層的TCP協(xié)議來完成。由于傳輸層以上遵循Modbus協(xié)議,所以采用C/S結構,在數據傳輸前進行之前,需要在客戶和服務器之間建立一個TCP/IP連接。服務器使用端口502作為Modbus/TCP連接的端口。連接的建立通常由TCP/IP的Socket接口的軟件協(xié)議自動實現(xiàn)的,因此對應用完全透明。
一旦客戶和服務器之間的TCP/IP連接建立,同樣的連接可以根據要求的方向用來傳輸任意數量的用戶數據。客戶和服務器還可以同時建立多個TCP/IP連接,最大的連接數量取決于TCP/IP接口的規(guī)范。在輸入輸出數據循環(huán)傳輸的情況下,永久的連接通常維持在客戶和服務器之間,只有在發(fā)生特殊事件而有必要傳送參數和診斷報文時,連接才能在每一次數據傳送后被關閉,需要時再次建立。這也是Modbus/TCP在工業(yè)以太網中采用TCP做為傳輸層協(xié)議而不采用速度更快的UDP協(xié)議的原因所在。
雖然Modbus/TCP由于在傳輸層采用TCP協(xié)議,而使其不得不在傳輸層協(xié)議以下的諸層采取更有效的實時性策略。但與PROFINet,Ethemet/IP和IDA等方案相比,Modbus/TCP在其開放性、簡單和穩(wěn)定的性能上具有優(yōu)勢,是一個具有較高的性能價格比的工業(yè)以太網方案。
(2)ProfiNet
事實上,在工業(yè)以太網應用中,網絡互連層和傳輸層協(xié)議并非僅僅局限在TCP/IP之上。在由Profibus Internationa(PI)組織提出的基于以太網的自動化標準——PROFINET實時以太網中,就采用了獨立的實時通道來擴展系統(tǒng)的實時性能。
PROFINET的通信模型如下圖所示:
可以看到,在PROFINET應用中,其標準參數(如設備參數、組態(tài)和讀取的診斷數據)是由傳統(tǒng)的TCP/UDP+IP+以太網來傳送的。與之對就的是非實時的數據傳輸標準通道。但其實時數據則由PROFINET提供的兩類實時通信通道RT和IRT完成。實時通道RT是軟實時SRT(Software RT)方案,主要用于過程數據的高性能循環(huán)傳輸、事件控制的信號與報警信號等。它位于旁路第3層和第4層,可以提供精確通信能力。為進一步優(yōu)化通信功能,PROFINET根據IEEE802.1p定義了報文的優(yōu)先級,最多可用7級。而實時通道IRT采用了IRT(isochronous realtime)等時同步實時的ASIC芯片解決方案,以進一步縮短通信棧軟件的處理時間,特別適用于高性能傳輸、過程數據的等時同步傳輸、以及快速的時鐘同步運動控制,其可以在1毫秒時間周期內,實現(xiàn)對100多個軸的控制,而抖動不足1微秒。
(基于TCP的工業(yè)以太網比較)
4、基于UDP的工業(yè)以太網
目前,至少有基金會現(xiàn)場總線的HSE、Ethernet/IP、iDA以及ADS-net在傳輸層協(xié)議中或部分或全部的采用了UDP。由于篇幅有限,以下僅就HSE和Ethernet/IP在傳輸機制和通信模式作簡單比較。
4.1 ETHERNET/IP
在EtherNet/IP中,對于對實時性要求較高的實時I/O數據,采用UDP/IP協(xié)議來傳送,而對實時性要求不太高的顯式信息(如組態(tài)、參數設置和診斷等)則采用TCP/IP來傳送。EtherNet/IP 有兩種形式的報文連接:
•顯示報文連接:是一種點對點的關系,用于促進兩個節(jié)點之間的請求――應答連接。這種連接是最通用的并且能無所不及。
•隱式報文:主要用于以常規(guī)的時間間隔傳送特定應用的I/O數據。這種連接自然是多播方式,即建立一對多的關系用以發(fā)揮生產消費模式的優(yōu)點。
在網絡層和傳輸層EtherNet/IP 采用的是INTERNET標準的TCP/IP協(xié)議族在單個或多個設備之間傳送信息,同樣,在這些層標準的CIP信息被打包成TCP/IP包,TCP/IP包允許網上的節(jié)點將他們作為以太網信息的一部分。節(jié)點發(fā)送這些TCP/IP協(xié)議包到數據鏈路層。利用TCP/IP , EtherNet/IP可以傳送用于節(jié)點之間主/從類型事務的顯示報文。
對于實時報文,EtherNet/IP 通過基于IP的UDP協(xié)議采用組播方式實現(xiàn),組播針對一組地址的目標站。這就是CIP的隱式報文在EtherNet/IP 上的傳送方式。隱式報文通常只有I/O數據,沒有協(xié)議信息。這就意味著通訊一建立數據已被提前定義了,自然處理的時間就是最小的。UTP無須建立通道也不對通訊做保證,但盡管如此,UDP的隱式報文比顯式報文更小更快捷。所以EtherNet/IP通過 UDP/IP傳送I/O數據典型地包含了關鍵時間控制信息。CIP的連接機制包含了提供超時機制,即可以檢測數據發(fā)送錯誤,這對于可靠的控制系統(tǒng)是很關鍵的。
EtherNet/IP 利用TCP/IP資源在以太網上傳送報文,為了滿足ODVA組織一致性要求宣言,EtherNet/IP 的產品都要求能完成UCMM接收其他設備的請求。比如像少有的顯示報文傳輸或者實時的I/O數據傳輸。通過UCMM的通訊服務連接資源被保留。打開一個連接的過程被稱為連接生成。而主動提出連接生成的節(jié)點就叫做連接生成器。相反,響應該節(jié)點的節(jié)點就叫做連接目標。
總結一下,也就是說,隱示報文是通過以太網實體采用UDP/IP資源以多播方式傳送數據。
4.2.Ethernet/IP的HSE
下面將結合一個實例來說明通信模式對TCP/UDP協(xié)議選擇問題的影響,研究目標是現(xiàn)場總線基金會旗下的工業(yè)以太網標準——HSE。
HSE協(xié)議中一個重要的組成部分是:現(xiàn)場設備訪問代理(FDA),F(xiàn)DA將整個HSE從概念上分為兩個部分。FDA及其以下的部分,包括HSE管理代理(HMA),它們一起提供HSE通信服務,構成了HSE通信棧。其功能主要相對于OSI七層參考模型一到四層間的部分;FDA以上的實體包括系統(tǒng)管理內核、虛擬現(xiàn)場設備,局域網冗余實體等,統(tǒng)一稱為HSE應用進程,它們利用通信棧提供的服務,和對等實體通信。它們可以看做是通信棧的用戶層。接下來將重點討論FDA以下的部分涉及到的HSE的通信模型和通信方式等問題,而HSE的用戶層等方面的其它內容將在下一章中討論。HSE通信模型圖示如下:
FDA代理在通信模型中主要提供下列服務:
1)作FDA Session的代理;
2)FDA Session 和FMS VCR的接口;
3)TCP /UDP 和 FDA Session之間的接口;
4)轉發(fā)上面 4種 應用層的消息.
而FDA Session是一種應用關系,提供和FDA代理的通信,HSE VCR提供對HSE VFD的訪問,用于傳遞FMS報文。有三種不同的FDA Session:
Client/Server(客戶/服務器)
Sesions,Publisher/Subscriber(公布/訂閱)
Sessions,Report Source/Sink(報告源/接收)Sessions.
HSE Session位于TCP/IP協(xié)議之上,利用以太網和TCP/IP協(xié)議傳輸HSE總線的服務報文,是FF HSE現(xiàn)場總線通信的核心模塊。
Session與 它所支持的VCR端點具有相同的類型,HSE基于業(yè)界廣泛使用TCP/IP協(xié)議簇一共提供了兩種通信方式::
1客戶機/服務器(C/S),采用單播通信模式;
2發(fā)布者/預定者(P/S),報文源服文接收,采用多播通信模式;
其中單播方式提供確認性的FMS服務,而多播提供的FMS服務是無確認的。具體實現(xiàn)中,以套接字方式為基礎。
對于 C/S服務類型的通信,底層采用基于流的套接字,提供有確認的通信服務,故傳輸層基于TCP協(xié)議構建。雖然C/S也可以基于數據報的套接字來實現(xiàn),但一般不采用這種方式(DCOM是個例外)。
對于采用發(fā)布者/預定者、報文源/報文接收兩種采用多播的通信模式,底層采用基于數據的套接字,提供無確認的通信服務,故傳輸層基于UDP協(xié)議構建。同時,在發(fā)送和接收兩端,VCR和Session節(jié)點是預先組態(tài)好的。這樣,多播方式的通信過程比客戶機/服務器類型的方式要簡單許多。這樣使得在多數場合,HSE使用的是多播方式的通信模式更具優(yōu)勢。以至于在一些資料中,HSE和Ethernet/IP、IDA等一塊被認為是基于UDP的工業(yè)以太網實施方案。
(基于UDP的工業(yè)以太網比較)
通過以上實例,我們可以總結如下:
1).當通信模型采用C/S模式,或點對點模式時,采用面向連接的TCP協(xié)議較為合適。
2).而當通信模型采用P/S模式,即發(fā)布者/預定者或生產者/消費者模式時,采用支持多播、組播的UDP協(xié)議更合適。
5.關于幾種工業(yè)以太網的互聯(lián)
最后,我們簡單討論關于這幾種主流工業(yè)以太網的互聯(lián)。
正如上面所述,這同種主流的工業(yè)以太網協(xié)議相互是不兼容的。盡管廣大工業(yè)自動化用戶希望需要一種開放的通用的系統(tǒng)平臺,但是自動化廠商們卻因各自的利益導致這一理想平臺將來很長時間也不會出籠。因此,就只能誕生一種新的中間件技術能解決這個問題——OPC DX.
如下表,大多數工業(yè)以太網協(xié)議選擇了支持OPC DX。
OPC基金會組織已經積極地推出了其數據交換(OPC Data Exchange)與以太網的標準,OPC DX很好地汲取了工業(yè)以太網應用層開放而且可以針對不同廠家的產品定義,其中間件任其能相互操作兼容的優(yōu)點,相當于在幾種工業(yè)以太網協(xié)議中創(chuàng)建了一個可以互操作的兼容層面,如下圖:
總而言之, 其實研發(fā)并推廣一個開放的,通用的工業(yè)以太網協(xié)議,一直就是自動化用戶的共同愿望。但現(xiàn)場總線標準的混亂現(xiàn)象被延續(xù)到了如今的工業(yè)以太網的應用上,這就自然產生了這幾種主流工業(yè)以太網協(xié)議的差異。Profinet、Ethernet/IP、Modbus/TCP、HSE等是當今主流的幾種的工業(yè)以太網協(xié)議,都聲稱兼容于或完全兼容于以太網協(xié)議,或“基于”以太網基礎,或完全采用以太網標準,但是事實上這幾種主流的工業(yè)以太網協(xié)議本身卻不能相互聯(lián)接。隨著工業(yè)以太網的應用越來越成熟,一個開放的,通用的工業(yè)以太網協(xié)議標準的共同愿望會慢慢可期。
卓越TSC工業(yè)以太網,致力于工業(yè)級關鍵以太網絡基礎設施的實施,為正在建設自動化、過程控制、機車及工業(yè)控制等領域的客戶,設計、制造并推廣高可靠性的工業(yè)網絡產品,以提高他們的生產力。