李宏勝,李 凡,趙 嵐
(南京工程學(xué)院 自動化學(xué)院,南京 211167)
?
多任務(wù)網(wǎng)絡(luò)通信在RTX下的實時性研究*
李宏勝,李凡,趙嵐
(南京工程學(xué)院 自動化學(xué)院,南京211167)
摘要:通信網(wǎng)絡(luò)的實時性是工業(yè)控制系統(tǒng)的核心問題之一。為了研究RT-TCP/IP協(xié)議下的通信網(wǎng)絡(luò)在復(fù)雜環(huán)境中的實時性,基于RTX實時子系統(tǒng)環(huán)境,采用RT-TCP/IP協(xié)議棧和多線程技術(shù),在普通PC機(jī)上實現(xiàn)了客戶端/服務(wù)端模式下的實時多任務(wù)通信;同時,采用回環(huán)接口收發(fā)數(shù)據(jù)包的方法,對多任務(wù)通信網(wǎng)絡(luò)的快速性、穩(wěn)定性、可靠性進(jìn)行了實驗測試和分析。通過實驗得出,多任務(wù)網(wǎng)絡(luò)應(yīng)用對計算機(jī)硬件配置要求高,并存在通信網(wǎng)絡(luò)實時性能不佳的問題,為RTX的實際網(wǎng)絡(luò)應(yīng)用提供重要的依據(jù)。
關(guān)鍵詞:RTX;RT-TCP/IP;客戶端/服務(wù)端模式;多線程;實時性
0引言
現(xiàn)代制造業(yè)的發(fā)展對工業(yè)自動化技術(shù)網(wǎng)絡(luò)化、智能化提出更高的要求。Windows操作系統(tǒng)與RTX實時擴(kuò)展的融合,既支持高效友好的開發(fā)工具和集成開發(fā)環(huán)境,又具有較強(qiáng)的實時性。硬件上工業(yè)PC具有性能較高,價格相對較低的優(yōu)勢,是控制系統(tǒng)開發(fā)的良好平臺。現(xiàn)階段的研究只是籠統(tǒng)地比較了Windows環(huán)境與RTX環(huán)境的網(wǎng)絡(luò)通信性能,得出了RTX實時環(huán)境下的網(wǎng)絡(luò)性能優(yōu)異的結(jié)論[1],并沒有考慮實際復(fù)雜的自動化系統(tǒng)環(huán)境下的多任務(wù)通信問題。
本文在Windows和RTX實時操作系統(tǒng)和通信協(xié)議的基礎(chǔ)上,使用多線程技術(shù)實現(xiàn)多任務(wù)RT-TCP/IP網(wǎng)絡(luò)通信并發(fā)測試,并對結(jié)果進(jìn)行分析,為RTX下的復(fù)雜網(wǎng)絡(luò)應(yīng)用提供參考。
1RTX實時擴(kuò)展的實現(xiàn)

圖1 RTX在Windows操作系統(tǒng)上的實時擴(kuò)展
美國IntervalZero公司開發(fā)的RTX (real-time extension)實時擴(kuò)展為Windows平臺提供了一個實時系統(tǒng)解決方案,其結(jié)構(gòu)如圖1所示。RTX直接在硬件擴(kuò)展層上進(jìn)行了實時擴(kuò)展,形成了RTX實時子系統(tǒng)。實時子系統(tǒng)可以直接訪問硬件平臺,隔離了Windows的中斷機(jī)制,保持了較高的時鐘精度;同時,RTX擁有絕對優(yōu)先的線程調(diào)度機(jī)制,解決了Windows下線程優(yōu)先級少,調(diào)度原則不明確等問題[2]。相應(yīng)的RT-TCP/IP、實時服務(wù)器等服務(wù)都運行在內(nèi)核模式下,避免了Windows的應(yīng)用程序的影響。RTX也提供了標(biāo)準(zhǔn)的動態(tài)鏈接庫和實時硬件驅(qū)動供實時開發(fā)。
2RT-TCP/IP協(xié)議棧結(jié)構(gòu)
RT-TCP/IP協(xié)議棧本身由緩沖區(qū)系統(tǒng),定時系統(tǒng)和幾個服務(wù)線程構(gòu)成,如圖2所示。RT-TCP/IP協(xié)議棧內(nèi)置的緩沖區(qū)系統(tǒng)是用來在相關(guān)堆棧啟動后動態(tài)分配內(nèi)存。每個堆棧分配的內(nèi)存大小取決于套接字和接受隊列的大小,設(shè)備提前分配的接收緩沖區(qū)大小協(xié)議棧定時系統(tǒng)是RT-TCP/IP協(xié)議棧的主要組成部分之一,主要用于管理時間堆棧。協(xié)議棧定時系統(tǒng)也為內(nèi)部程序運行提供定時。中斷服務(wù)線程(IST)是RT-TCP/IP協(xié)議棧中接口驅(qū)動程序的一部分。當(dāng)網(wǎng)卡發(fā)出中斷信號時,中斷服務(wù)線程工作,識別并應(yīng)答接收中斷,然后給接收線程進(jìn)行標(biāo)記。接收線程先等待中斷服務(wù)線程通知的到來,一旦接受到新的數(shù)據(jù)包,接收線程就立即被中斷服務(wù)線程標(biāo)記,并開始處理下一個來自設(shè)備的數(shù)據(jù)包[3]。

圖2 RT-TCP/IP協(xié)議棧結(jié)構(gòu)
3多任務(wù)網(wǎng)絡(luò)通信系統(tǒng)設(shè)計
3.1多任務(wù)并發(fā)的實現(xiàn)
Windows操作系統(tǒng)與RTSS實時子系統(tǒng)都支持多進(jìn)程和多線程的多任務(wù)操作。其中,Windows上的進(jìn)程都是以串行方式執(zhí)行,即使在多處理器的計算機(jī)上,程序每次也只會使用一個處理器,多個進(jìn)程是輪換執(zhí)行,只能提供一個粗粒度的多任務(wù)并發(fā)(任務(wù)切換時間大于100ms)[4]。相比較多進(jìn)程的多任務(wù)機(jī)制,Windows可以將一個進(jìn)程下的多線程調(diào)度到不同的處理器上同時執(zhí)行,線程之間資源也是共享的,系統(tǒng)的開銷較小,相應(yīng)的程序結(jié)構(gòu)也會得到簡化[5]。但由于Windows是一個非實時系統(tǒng),Windows下的多線程應(yīng)用并不能保證其實時性。經(jīng)過RTX的實時擴(kuò)展改進(jìn)之后,線程切換時間僅為10μs~20μs,能滿足多任務(wù)并發(fā)執(zhí)行的目標(biāo)。
3.2基于C/S模式的多任務(wù)網(wǎng)絡(luò)通信模型建立
一個基于RT-TCP/IP的網(wǎng)絡(luò)應(yīng)用程序執(zhí)行多任務(wù)是一個基本要求,多個用戶在同時訪問服務(wù)端的時候不能始終在等待,客戶端與服務(wù)器之間也是不斷的通過各種渠道進(jìn)行數(shù)據(jù)交換。在設(shè)計網(wǎng)絡(luò)通信的客戶端和服務(wù)端時,將程序設(shè)計為兩部分,客戶端與服務(wù)端的主線程用于網(wǎng)絡(luò)連接的請求和應(yīng)答,而子線程負(fù)責(zé)數(shù)據(jù)在客戶端與服務(wù)端之間進(jìn)行發(fā)送和接收。事實上C/S模式下雙方不對稱,服務(wù)端處于監(jiān)聽被動狀態(tài),客戶端處于請求主動狀態(tài)。實際程序設(shè)計中,客戶端主動發(fā)起通信連接請求,而通信子線程則可以通過調(diào)用RtAPI庫中的RtCreateThread函數(shù)開啟指定數(shù)量線程,而服務(wù)端在接收客戶端的請求后,立即開啟相應(yīng)數(shù)量的通信子程提供服務(wù)。在服務(wù)完成后,兩端的通信子線程都會被終止并釋放所占的資源。而服務(wù)端的主線程在整個中始終保持監(jiān)聽客戶端請求的狀態(tài)。

圖3 基于C/S模式的多任務(wù)通信模型
4性能測試與分析
4.1測試環(huán)境
硬件條件:Intel i3-4150@3.5GHz處理器,4GB RAM內(nèi)存
軟件條件:Windows 7 with Service Pack 1,RTX實時擴(kuò)展為RTX64 2014 with Service Pack 1
軟件編譯與調(diào)試條件:Visual Studio Premium 2013 with update 3
RTSS子環(huán)境配置: HAL層定時周期:100μs;本地內(nèi)存池,1024KB;擴(kuò)展內(nèi)存池2048KB:監(jiān)視非分頁內(nèi)存:200MB;RT-TCP/IP棧內(nèi)存:2048KB;套接字最大值:64;棧內(nèi)部時鐘:100μs;最大傳輸單元(MTU):1500byte。
4.2測試指標(biāo)
RT-TCP/IP在進(jìn)行通信傳遞信息時,會受到起始地到目的地路徑上的擁塞(延遲、丟失)的約束[5]。在實時網(wǎng)絡(luò)通信中,我們主要關(guān)心的是傳輸速率,穩(wěn)定性以及可靠性。本研究選取了時延,誤包數(shù),丟包數(shù)作為實時網(wǎng)絡(luò)性能的指標(biāo):
(1)時延:一個數(shù)據(jù)包從一端到另一端所需的時間。本研究對于實時交互性很強(qiáng)的網(wǎng)絡(luò)通信采用了往返時延的測試方法,記錄客戶端節(jié)點發(fā)送數(shù)據(jù)包的起始時間T1,服務(wù)端節(jié)點接收到信息后立馬發(fā)還該數(shù)據(jù)包至客戶端節(jié)點,此時記錄終止時間T2,往返時延RTT=T2-T1。
(2)誤包數(shù):在數(shù)據(jù)包從客戶端發(fā)送至服務(wù)端,再由服務(wù)端發(fā)送至客戶端的過程之后,對比發(fā)送和回收到的數(shù)據(jù)包情況,前后不一致的數(shù)據(jù)包個數(shù)。
(3)丟包數(shù):在數(shù)據(jù)包從客戶端發(fā)送至服務(wù)端,再由服務(wù)端發(fā)送至客戶端的過程中,最終未收到的數(shù)據(jù)包個數(shù)。
4.3測試方法
本研究采用主動發(fā)送和接收數(shù)據(jù)包的方式來研究實時網(wǎng)絡(luò)通信的性能。本研究在一臺計算機(jī)上實現(xiàn)了客戶端和服務(wù)端應(yīng)用程序,建立了IP地址為127.0.0.1的回送(Loopback)地址用于自發(fā)自收。在RTSS實時環(huán)境下,客戶端先通過主線程與服務(wù)端建立連接,此時計算機(jī)通過應(yīng)用程序接口開通若干個通信子線程,一個線程的客戶端通過實時網(wǎng)絡(luò)向服務(wù)端發(fā)送一個1024byte大小的數(shù)據(jù)包,記錄起始時間,服務(wù)端在收到數(shù)據(jù)包的同時把收到的數(shù)據(jù)包發(fā)回給客戶端,記錄終止時間,并對比發(fā)送和收回的數(shù)據(jù)包的情況,若有不同則錯包數(shù)量加一,若未收到數(shù)據(jù)包則丟包數(shù)據(jù)量加一。這樣的收發(fā)數(shù)據(jù)包一共進(jìn)行500次,最終統(tǒng)計出單個數(shù)據(jù)包收發(fā)的最短、最長時間,以及傳輸?shù)钠骄鶗r間,誤包數(shù)和丟包數(shù),測試流程如圖4。本研究還在Windows系統(tǒng)和不同硬件平臺下的中執(zhí)行同樣任務(wù)的情況進(jìn)行了同樣條件和方法的測量。

圖4 客戶端/服務(wù)端收發(fā)數(shù)據(jù)包測試流程
4.4測試結(jié)果與分析
4.4.1多任務(wù)執(zhí)行下的網(wǎng)絡(luò)性能
本測試同時執(zhí)行1到20個同樣的數(shù)據(jù)包收發(fā)任務(wù),得到了如圖5的數(shù)據(jù)。從圖上可以看出,隨著并發(fā)執(zhí)行越來越多的任務(wù),傳輸時延逐漸上升,RT-TCP/IP網(wǎng)絡(luò)對于實際壓力非常敏感,在20個任務(wù)時最大時延已經(jīng)超過了1ms,且當(dāng)同時執(zhí)行8個任務(wù)時,就有任務(wù)在傳輸任務(wù)中出現(xiàn)了誤包的情況,這在實時網(wǎng)絡(luò)中是不允許出現(xiàn)的,誤包和丟包都會使得網(wǎng)絡(luò)的穩(wěn)定性和可靠性下降導(dǎo)致諸如實時網(wǎng)絡(luò)控制出現(xiàn)錯誤控制指令的情況,整個系統(tǒng)可能會產(chǎn)生嚴(yán)重后果。由本測試可以看出,多任務(wù)下的實時網(wǎng)絡(luò)速度明顯受到多任務(wù)因素的影響,穩(wěn)定性和可靠性存在問題,不能保證網(wǎng)絡(luò)的實時性。這是因為在RT-TCP/IP協(xié)議棧應(yīng)用了socket接口的形式中提供通信服務(wù),socket在實現(xiàn)過程中涉及了大量的信號量操作,而信號量主要用于RTSS系統(tǒng)中線程保護(hù)機(jī)制,在RTSS子環(huán)境下進(jìn)行多線程網(wǎng)絡(luò)通信時線程之間必然會互相影響,所以此時網(wǎng)絡(luò)通信無法達(dá)到較好的預(yù)期效果。

圖5 多任務(wù)執(zhí)行下的網(wǎng)絡(luò)性能
4.4.2不同系統(tǒng)環(huán)境下的網(wǎng)絡(luò)性能
本測試在同時執(zhí)行5個任務(wù)時,對Windows和RTSS環(huán)境下網(wǎng)絡(luò)通信性能進(jìn)行比較。Windows下線程調(diào)度和中斷響應(yīng)是一個復(fù)雜而且不確定的過程,這種系統(tǒng)特性也影響到了其網(wǎng)絡(luò)性能,由圖6可以看出,每個任務(wù)之間的傳輸時延差別很大,抖動也非常大,而且出現(xiàn)了較多誤包的情況,這說明Windows下的網(wǎng)絡(luò)是不能用于進(jìn)行實時通信的。而RTSS環(huán)境下的實時網(wǎng)絡(luò)則較為穩(wěn)定,各任務(wù)都保持了良好的運行性能。

圖6 RTSS與Windows環(huán)境下的網(wǎng)絡(luò)性能
4.4.3不同硬件平臺下的網(wǎng)絡(luò)性能
本測試在同時執(zhí)行5個任務(wù)時,分別選取了兩臺配備Intel Core i3-4150@3.5GHz和Intel Core i5-4200m@2.5GHz的CPU的計算機(jī)進(jìn)行性能測試。經(jīng)PassMark測試,i3-4150評分為4922,i5-4200m評分為4070[6]。測試結(jié)果如圖7所示,i3-4150平臺下的傳輸速度,穩(wěn)定性,可靠性都優(yōu)于i5-4200m。這是因為RTX實時擴(kuò)展采用獨占CPU的方式來運行RTSS子系統(tǒng),在執(zhí)行多任務(wù)過程中,各個任務(wù)需要通過CPU實時運行,CPU也要實時的處理網(wǎng)絡(luò)上的數(shù)據(jù),雖然在簡單任務(wù)情況下CPU不會成為網(wǎng)絡(luò)性能的瓶頸,但隨著任務(wù)越來越復(fù)雜,CPU的性能會逐漸影響到實時網(wǎng)絡(luò)的性能。
綜上所述,通過基于客戶端/服務(wù)端的網(wǎng)絡(luò)通信平臺的性能測試發(fā)現(xiàn),基于RT-TCP/IP協(xié)議的多任務(wù)實時通信雖然相比于傳統(tǒng)的Windows環(huán)境下優(yōu)勢明顯,在處理簡單的網(wǎng)絡(luò)通信任務(wù)時表現(xiàn)出了良好的性能,但隨著任務(wù)的越來越復(fù)雜,其自身任務(wù)機(jī)制和網(wǎng)絡(luò)協(xié)議的復(fù)雜性影響了網(wǎng)絡(luò)傳輸?shù)膶崟r性。

圖7 不同CPU下的網(wǎng)絡(luò)性能
5結(jié)論
本文通過多線程技術(shù)實現(xiàn)了在Windows 實時擴(kuò)展的平臺下的實時多任務(wù)網(wǎng)絡(luò)通信,深入探討了基于RT-TCP/IP協(xié)議棧的實時網(wǎng)絡(luò)的性能測試方法,對多任務(wù)多平臺下的實時網(wǎng)絡(luò)進(jìn)行了性能測試。通過測試發(fā)現(xiàn),由于受制于RTSS子系統(tǒng)的線程機(jī)制和RT-TCP/IP協(xié)議棧的運行效能,基于RT-TCP/IP的實時網(wǎng)絡(luò)對運行的軟硬件平臺要求較高,在并發(fā)多任務(wù)條件下處理復(fù)雜事務(wù)的性能并不理想。在實際網(wǎng)絡(luò)控制系統(tǒng)的應(yīng)用中需要通過優(yōu)化系統(tǒng)結(jié)構(gòu),提高軟件運行效率,提升基本控制器和網(wǎng)絡(luò)的硬件性能,或者改進(jìn)實時協(xié)議棧等方法以保證網(wǎng)絡(luò)的實時性。
[參考文獻(xiàn)]
[1] 皇甫禎,陳懷民,吳成富,等. 基于RTX的實時網(wǎng)絡(luò)應(yīng)用研究[J]. 測控技術(shù),2008,27(1):67-69.
[2] 楊紅松,杜承烈,尤濤,等. 基于RT-TCP/IP的虛擬試驗通信平臺研究[J].測控技術(shù),2009,28(3): 60-63,67.
[3] IntervalZero,Inc.RTX64Help[EB/OL].http://www.intervalzero.com/library/RTX64/HTML5/RTX64_Help.htm. 2015-2-3.
[4] Joe Duffy.Windows并發(fā)編程指南[M]. 聶雪軍,譯.北京:機(jī)械工業(yè)出版社, 2010.
[5] 潘愛民. Windows內(nèi)核原理與實現(xiàn)[M]. 北京:電子工業(yè)出版社, 2010.
[6] 葉樹華. 網(wǎng)絡(luò)編程實用教程[M].2版.北京:人民郵電出版社, 2010.
[7] 孫曉夢,王志斌. 基于TCP的多線程Socket通信實例[J]. 遼東學(xué)院學(xué)報(自然科學(xué)版), 2013,20(3): 178-182.
[8] Thomas Bonald, Mathieu Feuillet.網(wǎng)絡(luò)性能分析原理與應(yīng)用[M]. 王玲芳, 馮玉芬,譯.北京:機(jī)械工業(yè)出版社, 2013.
[9] Prytz G. A performance analysis of EtherCAT and PROFINET IRT[A]. IEEE International Conference on Emerging Technologies & Factory Automation, 2008. ETFA 2008. [C]. IEEE, Hamburg. 2008,9: 408-415.
[10] 徐亞軍,張曉林,郭蔡健,等. FC網(wǎng)絡(luò)性能測試與研究[J].計算機(jī)工程與應(yīng)用, 2007, 43(15): 137-139 .
[11] PassMarkSoftware.CPUBenchmarks[EB/OL].http://www.cpubenchmark.net/high_end_cpus.html. 2015-6-7.
(編輯趙蓉)
Research on Real-Time Capability of Multi-task Network Communication in RTX
LI Hong-sheng, LI Fan, ZHAO Lan
(School of Automation, Nanjing Institute of Technology, Nanjing 211167,China)
Abstract:The real-time capability of communication network is one of core issues in industrial control system. In order to research real-time capability of RT-TCP/IP protocol communication network in complex environment, the real-time multitask communication, under client/server mode and multithread technology, is realized on a personal computer with RTX real-time operation subsystem and RT-TCP/IP protocol stack. The rapidity, stability and reliability of multi-task communication network are tested and analyzed. It is found that real-time capability of the network may be poor, and high performance hardware is required under multitask application. The test results are useful for RTX network application.
Key words:real-time extension (RTX);RT-TCP/IP;client/server mode;multi-thread;real-time capability
中圖分類號:TH165;TG506
文獻(xiàn)標(biāo)識碼:A
作者簡介:李宏勝(1966— ),男,南京人,南京工程學(xué)院教授,碩士生導(dǎo)師,博士,研究方向為數(shù)控技術(shù)、高性能伺服驅(qū)動、機(jī)器人控制,(E-mail)zdhxlhs@njit.edu.cn。
*基金項目:江蘇省科技支撐計劃-工業(yè)部分(BE2014025)
收稿日期:2015-07-21
文章編號:1001-2265(2016)02-0072-04
DOI:10.13462/j.cnki.mmtamt.2016.02.020