1 引言
在現(xiàn)代化工業(yè)控制中,由于被控對(duì)象、測(cè)控裝置等物理設(shè)備的地域分散性,以及控制與監(jiān)控等任務(wù)對(duì)實(shí)時(shí)性的要求,工業(yè)控制本質(zhì)上需要一種分布式實(shí)時(shí)控制系統(tǒng)來(lái)實(shí)現(xiàn)任務(wù)的傳送和控制。在分布式實(shí)時(shí)控制系統(tǒng)中,不同的計(jì)算機(jī)設(shè)備之間的交互式通過(guò)現(xiàn)場(chǎng)通行網(wǎng)絡(luò)來(lái)進(jìn)行信息傳遞的。典型的通信網(wǎng)絡(luò)是現(xiàn)場(chǎng)總線,它是應(yīng)用在工業(yè)現(xiàn)場(chǎng),在微機(jī)化測(cè)量控制設(shè)備間實(shí)現(xiàn)雙向串行多節(jié)點(diǎn)的數(shù)字通信系統(tǒng),又稱為開(kāi)放式、數(shù)字化、多點(diǎn)通訊的現(xiàn)場(chǎng)控制網(wǎng)絡(luò),例如,F(xiàn)F, Profibus, WordFIP, P-NET, CAN和Lonwork等。盡管現(xiàn)場(chǎng)總現(xiàn)通信網(wǎng)絡(luò)獲得了成功的推廣,然而現(xiàn)場(chǎng)總線這類專用實(shí)時(shí)通信網(wǎng)絡(luò)具有成本高、速度低和應(yīng)用有限等缺陷,以及總線通信的多樣性使得不同總線產(chǎn)品間不能直接互連、互用和互操作等。其中,通信已成為關(guān)鍵,用戶對(duì)統(tǒng)一的通信協(xié)議和網(wǎng)絡(luò)的要求日益迫切?,F(xiàn)今,如何把Ethernet應(yīng)用到工業(yè)已成為工業(yè)控制和實(shí)時(shí)通信研究的熱點(diǎn)。
2 Ethernet的通信過(guò)程與特點(diǎn)
以太網(wǎng),英文名為Ethernet,是當(dāng)今世界上應(yīng)用范圍最廣的一種網(wǎng)絡(luò)技術(shù)。它最早起源于美國(guó)夏威夷大學(xué)。60年代末,該校的Norman Abramson及其同事為了將校內(nèi)的IBM 360主機(jī)與分布在其它島上的終端相連接而開(kāi)發(fā)了一個(gè)無(wú)線電系統(tǒng)ALOHA。該系統(tǒng)是一個(gè)爭(zhēng)用型網(wǎng)絡(luò),其上已經(jīng)體現(xiàn)了以太網(wǎng)的設(shè)計(jì)思想,即信道共享和信道爭(zhēng)用。
以太網(wǎng)是最廣泛使用的網(wǎng)絡(luò)標(biāo)準(zhǔn)(IEEE802.3),它采用介質(zhì)訪問(wèn)控制協(xié)議(MAC)的通信標(biāo)準(zhǔn),即(CSMA/CD)(載波監(jiān)聽(tīng)多路訪問(wèn)沖突檢測(cè)協(xié)議,圖1是CSMA/CD通信過(guò)程。當(dāng)網(wǎng)絡(luò)上任一站點(diǎn)在傳送數(shù)據(jù)前,先檢測(cè)是否已有數(shù)據(jù)在介質(zhì)上傳送,若有則等待對(duì)方送完后才能送出。數(shù)據(jù)送出后,在傳送的過(guò)程中不斷檢測(cè)是否與其他站點(diǎn)送出的數(shù)據(jù)發(fā)生碰撞,若發(fā)生碰撞,須等待一段時(shí)間后再重新發(fā)送。當(dāng)在兩個(gè)或更多的節(jié)點(diǎn)間檢測(cè)到?jīng)_突時(shí),發(fā)送節(jié)點(diǎn)就會(huì)停止傳送并等待一個(gè)隨機(jī)的時(shí)間后重新嘗試傳送。由于介質(zhì)訪問(wèn)負(fù)載輕,以太網(wǎng)使用一種簡(jiǎn)單的算法操作網(wǎng)絡(luò),在網(wǎng)絡(luò)負(fù)載輕時(shí)幾乎沒(méi)有時(shí)延。與令牌環(huán)或令牌總線協(xié)議比,以太網(wǎng)訪問(wèn)信道不需要通信帶寬。標(biāo)準(zhǔn)的以太網(wǎng)支持10Mbps的數(shù)據(jù)傳輸率,也支持1Gbps。

圖1 CSMA/CD的傳送數(shù)據(jù)過(guò)程
3 Ethernet實(shí)時(shí)性問(wèn)題研究的現(xiàn)狀
在理論研究領(lǐng)域,對(duì)于以太網(wǎng)通信的延遲不確定性,國(guó)內(nèi)外的學(xué)者提出了各種改進(jìn)方法。這些方法可分為兩類;硬實(shí)時(shí)改進(jìn)方法和軟實(shí)時(shí)改進(jìn)方法。
(1) 硬實(shí)時(shí)方法
是指通過(guò)設(shè)計(jì)適當(dāng)?shù)挠布娐?,限制?jié)點(diǎn)訪問(wèn)網(wǎng)絡(luò)的時(shí)間和速率,來(lái)減少網(wǎng)絡(luò)碰撞和排隊(duì)延遲,以滿足通信的實(shí)時(shí)性。但與目前廣泛使用的以太網(wǎng)標(biāo)準(zhǔn)相比,這種方法大大增加了節(jié)點(diǎn)的硬件成本,不利于大面積推廣應(yīng)用。
(2) 軟實(shí)時(shí)改進(jìn)方法
是指在不增加節(jié)點(diǎn)成本的同時(shí),用軟件調(diào)度策略對(duì)CSMA/CD和BEB機(jī)制進(jìn)行改進(jìn),以提高通信的實(shí)時(shí)性。這種方法又可分為沖突避免和沖突解決兩種。
·時(shí)分多路獲取策略(TDMA)
在沖突避免方面,最直接的方法是采用時(shí)分多路獲取策略(TDMA),事先給每個(gè)節(jié)點(diǎn)預(yù)先分配一定的帶寬,節(jié)點(diǎn)只有在分配給它的固定時(shí)間內(nèi)才能向網(wǎng)絡(luò)上發(fā)送信息,從而保證每個(gè)節(jié)點(diǎn)的確定發(fā)送時(shí)間。
·可預(yù)測(cè)CSMA-PCSMA
由于TDMA不能反映每個(gè)節(jié)點(diǎn)的實(shí)際帶寬需求,又產(chǎn)生了可預(yù)測(cè)CSMA-PCSMA,在假定所有實(shí)時(shí)信息都是周期性的情況下,對(duì)信息的時(shí)態(tài)特征進(jìn)行靜態(tài)調(diào)度。上述方法都是以改變以太網(wǎng)結(jié)構(gòu)為代價(jià)。
由于以太網(wǎng)的介質(zhì)訪問(wèn)控制協(xié)議采用的是CSMA/CD技術(shù),這就會(huì)導(dǎo)致以太網(wǎng)在重負(fù)載的情況下,某些節(jié)點(diǎn)的數(shù)據(jù)可能會(huì)延遲很長(zhǎng)時(shí)間才能發(fā)出去或根本無(wú)法傳送,從而造成數(shù)據(jù)丟失。本文提出了以Modbus協(xié)議為應(yīng)用層協(xié)議,與TCP/IP,Ethernet,的控制網(wǎng)絡(luò)通信模型。
4 Modbus協(xié)議
Modbus協(xié)議由美國(guó)著名的自動(dòng)化設(shè)備制造商莫迪康公司開(kāi)發(fā),是應(yīng)用于自動(dòng)控制器上的一種通用協(xié)議。通過(guò)此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一種通用工業(yè)標(biāo)準(zhǔn)。Modbus協(xié)議是一種主從協(xié)議,網(wǎng)段的一個(gè)節(jié)點(diǎn)被指定為主節(jié)點(diǎn),其他節(jié)點(diǎn)為從節(jié)點(diǎn)。為保證每個(gè)節(jié)點(diǎn)都有機(jī)會(huì)傳送數(shù)據(jù),主節(jié)點(diǎn)通常對(duì)從節(jié)點(diǎn)依次逐一的輪詢,形成嚴(yán)格的周期性報(bào)文傳輸,它還允許一臺(tái)主機(jī)和一個(gè)或多個(gè)從機(jī)通訊,以完成編程、數(shù)據(jù)傳送及程序下載等功能。其查詢—回應(yīng)過(guò)程如圖2所示:

圖2 Modbus查詢—回應(yīng)過(guò)程示意圖
5 控制網(wǎng)絡(luò)通信模型
Modbus+TCP/IP通信協(xié)議模型如圖3所示。數(shù)據(jù)鏈路層協(xié)議和物理層協(xié)議就是以太網(wǎng)標(biāo)準(zhǔn)中規(guī)定的那些協(xié)議,如IEEE802.3。網(wǎng)絡(luò)層采用IP協(xié)議,傳輸層采用TCP協(xié)議。TCP協(xié)議是面向連接的,它通過(guò)三次握手提供可靠的數(shù)據(jù)報(bào)傳送服務(wù)。在傳輸層中,還有另外一種協(xié)議,即UDP協(xié)議。該協(xié)議是非連接的,它不提供報(bào)文到達(dá)確認(rèn)、排序以及流量控制等功能。由于省去了確認(rèn)等功能,UDP協(xié)議適合傳輸實(shí)時(shí)性要求較高的數(shù)據(jù)。在實(shí)驗(yàn)中我們發(fā)現(xiàn),Quantum系列PLC不支持UDP協(xié)議,因此我們開(kāi)發(fā)的通信程序只針對(duì)TCP協(xié)議。應(yīng)用層則采用Modbus協(xié)議。

圖3 Modbus+TCP/IP通信協(xié)議模型
6 模型測(cè)試
控網(wǎng)絡(luò)模型提出以后,對(duì)此通信模型進(jìn)行測(cè)試。實(shí)驗(yàn)建立由圖4所示,1個(gè)主站與3個(gè)從站通過(guò)以太網(wǎng)連接,而且主站與從站之間的通信是不相關(guān)的。

圖4 模型測(cè)試結(jié)構(gòu)圖
6.1 網(wǎng)絡(luò)通信設(shè)計(jì)
由于TCP/IP協(xié)議的復(fù)雜性,本程序用VB中的Winsock控件實(shí)現(xiàn)網(wǎng)絡(luò)接口。Winsock是一種標(biāo)準(zhǔn)API(Application Programming Interface,應(yīng)用程序編程接口),主要用于網(wǎng)絡(luò)中的數(shù)據(jù)通信,它允許兩個(gè)或者多個(gè)應(yīng)用程序在同一臺(tái)機(jī)器上或網(wǎng)絡(luò)相互通信。使用Winsock編程接口,應(yīng)用程序可通過(guò)普通網(wǎng)絡(luò)協(xié)議如TCP/IP,或IPX(Internet Packet Exchange, Internet數(shù)據(jù)包交換)協(xié)議建立通信。
Modbus協(xié)議有兩種傳送模式,即ASCII(美國(guó)標(biāo)準(zhǔn)信息交換碼)和RTU(遠(yuǎn)動(dòng)終端模式)。本程序采用RTU模式,其典型的消息幀如表1所示:
表1 典型的RTU模式消息幀
6.2 部分通信程序
(1) 初始化程序
Private Sub bbbb_Load()
aflag = True
bflag = True
outbuf(0) = &H0
outbuf(1) = &H0
outbuf(2) = &H0
outbuf(3) = &H0
outbuf(4) = &H0
outbuf(5) = &H6
outbuf(6) = &H0
outbuf(7) = &H1 'Op-Code
outbuf(8) = &H0 'Start-Hi
outbuf(9) = &H0 'Start-Lo
outbuf(10) = &H0 'Count-Hi
outbuf(11) = &H1 'Count-Lo
End Sub
(2) 連接PLC
Private Sub connectbutton_Click()
Winsock.Close
Winsock.LocalPort = 0
Winsock.Connect
End Sub
(3) 發(fā)送數(shù)據(jù)
Private Sub readbutton_Click()
Winsock.SendData outbuf
End Sub
(4) 提取數(shù)據(jù)
Private Sub Winsock_DataArrival(ByVal bytesTotal
As Long)
Dim inBuf(20) As Byte
For i = 0 To bytesTotal-1
Winsock.GetData inBuf(i)
Next
If coil.value = True Then
value.Caption = Str(inBuf(9))
// 提取0xxxxx中的數(shù)據(jù)
Else
value.Caption = Str(inBuf(9) * 256 + inBuf(10)) //提取4xxxxx中的數(shù)據(jù)
bflag = Not bflag
n = n + 1
Winsock.Close
Winsock.LocalPort = 0
Winsock.Connect
End If
(5) 連續(xù)發(fā)送
Private Sub Winsock_Connect()
Do While (n <= step And ((aflag Xor bflag) = True))
Winsock.SendData outbuf
aflag = bflag
Loop
If n > step Then
status.Caption = “命令執(zhí)行完畢,仍保持連接狀態(tài)”
End If
End Sub
aflag和bflag的數(shù)值類型為布爾型,它們是用來(lái)判斷命令執(zhí)行次數(shù)是否完成。outbuf數(shù)組按照Modbus的請(qǐng)求數(shù)據(jù)格式填寫(xiě),outbuf(7)里的數(shù)據(jù)表示操作功能碼(詳細(xì)情況參見(jiàn)Modbus協(xié)議手冊(cè),可從www.modbus.org下載),outbuf(8)和outbuf(9)里的數(shù)據(jù)表示起始寄存器的高位地址和低位地址,outbuf(10)和outbuf(11)里的數(shù)據(jù)表示寄存器的個(gè)數(shù)。此例中的數(shù)據(jù)格式表明上位機(jī)要讀取000001寄存器中的數(shù)據(jù)。
6.3結(jié)果分析
我們用上述程序進(jìn)行了上位機(jī)與Quantum系列PLC的通信試驗(yàn),記錄了命令執(zhí)行所花費(fèi)的時(shí)間,具體結(jié)果見(jiàn)表2和表3。Modbus協(xié)議是主從介質(zhì)訪問(wèn)協(xié)議,網(wǎng)段的一個(gè)節(jié)點(diǎn)被指定為主節(jié)點(diǎn),其他節(jié)點(diǎn)為從節(jié)點(diǎn)。由主節(jié)點(diǎn)負(fù)責(zé)控制該網(wǎng)段上的所有通信連接。為保證每個(gè)節(jié)點(diǎn)都有機(jī)會(huì)傳送數(shù)據(jù),主節(jié)點(diǎn)通常對(duì)從節(jié)點(diǎn)逐一查詢,形成嚴(yán)格的周期性報(bào)文傳輸,主節(jié)點(diǎn)不停地傳送報(bào)文,并等待相應(yīng)的從節(jié)點(diǎn)的應(yīng)答報(bào)文。Modbus適合于一臺(tái)主機(jī)和多個(gè)從設(shè)備的環(huán)境中,主機(jī)訪問(wèn)從設(shè)備的方法采用輪詢的方法,即按照從設(shè)備1,從設(shè)備2,……從設(shè)備n的順序依次訪問(wèn),一次訪問(wèn)結(jié)束后,再?gòu)念^開(kāi)始。
循環(huán)時(shí)間 
式中:ti為站1從開(kāi)始發(fā)送幀到全部發(fā)送完畢的時(shí)間;
N為站的數(shù)量;
W2是站1到站2的循環(huán)時(shí)間。
整個(gè)輪詢系統(tǒng)的巡回時(shí)間L是各站的巡回時(shí)間的平均值wi之和
將式(1)兩端求平均值,Ti為平均發(fā)送時(shí)間,得出平均循環(huán)時(shí)間Tc為

7 結(jié)束語(yǔ)
從表2和表3的比較中,可以看出讀1個(gè)寄存器的時(shí)間和讀125個(gè)寄存器的時(shí)間基本一樣,這就提示我們?cè)谧x取數(shù)據(jù)時(shí),在一條命令中應(yīng)讀取盡可能多的寄存器,這樣就能提高數(shù)據(jù)傳送效率,縮短輪詢時(shí)間。
通過(guò)計(jì)算分析,該網(wǎng)絡(luò)通信模型速度快,執(zhí)行一次讀取命令的時(shí)間在7ms左右。若將該通信協(xié)議應(yīng)用于工業(yè)自動(dòng)化系統(tǒng)中,它完全滿足通信時(shí)延要求。若在主站對(duì)從站的輪詢中,采用算法的優(yōu)化處理,將可以大大減少時(shí)間,滿足工業(yè)需要。
如果在工業(yè)以太網(wǎng)專題">工業(yè)以太網(wǎng)的應(yīng)用層采用Modbus這樣的確定性協(xié)議,即主設(shè)備需要和哪個(gè)從設(shè)備通信,該從設(shè)備才能響應(yīng)主設(shè)備的請(qǐng)求,如果主設(shè)備沒(méi)有請(qǐng)求,從設(shè)備是不會(huì)主動(dòng)發(fā)送數(shù)據(jù)的。這樣,任何時(shí)刻在工業(yè)以太網(wǎng)上只有一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù),根本就不會(huì)出現(xiàn)節(jié)點(diǎn)沖突的現(xiàn)象。
Modbus+TCP/IP協(xié)議適合于一臺(tái)主機(jī)和多個(gè)從設(shè)備的環(huán)境中,主機(jī)訪問(wèn)從設(shè)備的方法采用輪詢的方法,即按照從設(shè)備1,從設(shè)備2,……從設(shè)備n的順序依次訪問(wèn),一次訪問(wèn)結(jié)束后,再?gòu)念^開(kāi)始。有人認(rèn)為這樣做會(huì)降低效率,的確,這種輪詢的方法不如Modbus Plus多主訪問(wèn)模式的效率高,但這種輪詢的方式也有它的優(yōu)點(diǎn),那就是用上層協(xié)議的確定性消除了下層協(xié)議的不確定性,況且以太網(wǎng)的傳輸速率相當(dāng)高,目前最高已達(dá)10Gbps,主機(jī)對(duì)所有從設(shè)備輪詢一遍的時(shí)間可能都比Modbus Plus訪問(wèn)一個(gè)設(shè)備的時(shí)間短,那我們有什么理由不去應(yīng)用Modbus/TCP這樣的通信協(xié)議呢?
本文利用完全公開(kāi)的Modbus協(xié)議,配合TCP/IP協(xié)議,實(shí)現(xiàn)了Quantum系列PLC與上位機(jī)的以太網(wǎng)通信。試驗(yàn)結(jié)果表明,Modbus+TCP/IP+Ethernet網(wǎng)絡(luò)通信模型,通信速度快,可靠性高,配置方便,適宜在工控領(lǐng)域推廣應(yīng)用。另外,Web技術(shù)和Ethernet技術(shù)的結(jié)合,將實(shí)現(xiàn)生產(chǎn)過(guò)程的遠(yuǎn)程監(jiān)控、遠(yuǎn)程設(shè)備管理、遠(yuǎn)程軟件維護(hù)和遠(yuǎn)程設(shè)備診斷。由此可見(jiàn),以太網(wǎng)是很有發(fā)展前景的一種現(xiàn)場(chǎng)控制網(wǎng)絡(luò)。
參考文獻(xiàn)
[1] Xianming Huang, Jikai Yi, Yanhong Zhang. An Open Inbbbligent Network Based on Ethernet Framework and Its Application to Project[J]. Proceeding of the 4th World Congress on Inbbbligent Control and Automation, June10-14, Shanghai, P.R.China.
[2] Kyung Chang Lee, Suk Lee. Perbbbbance bbbbuation of Switched Ethernet for Networked Control Systems[J]. IEEE, 2002: 3170-3175.
Jiming Chen, Zhi Wang, Youxian Sun. Real-Time Capacity Analysis of Ethernet in Industrial Application[J]. IEEE, 2001: 2227-2230.
[4] Marco Conti, Lorenzo Donatiello, Marco Furini. Design and Analysis of RT-Ring: A Protocol for Supporting Real-Time Communications[J]. IEEE transbbbbbbs on industrialelectionics, 2002, 49(6).
[5] F.A.Tobagi. Multiaccess Protocols in Packet CommunicationSystem[J] IEEE Trans. Comm,1980,28(4): 468-488.
[6] Modbus application protocol V1.1[EB]. www.modbus.org/default.htm.
[7] 劉瑞新,汪遠(yuǎn)征. Visual Basic程序設(shè)計(jì)教程[M].北京;機(jī)械工業(yè)出版社,2001.
[8] Modicon TSX Quantum硬件手冊(cè)[Z]. 施耐德電氣公司.
[9] Tony Cardiello. Modbus: The Open Protocol Over TCP/IP[M].2002.
[10] Market Routes. Modbus TCP: An Open Way Forward[M].2002.
[11] Tony Cardiello.Modbus Supports Web Developments[M].2002.










