郭 華,吳澗彤,王俊偉
(總裝備部工程設(shè)計(jì)研究總院,北京 100028)
海量數(shù)據(jù)的實(shí)時(shí)通訊
郭 華,吳澗彤,王俊偉
(總裝備部工程設(shè)計(jì)研究總院,北京 100028)
介紹基于多通道的并發(fā)傳輸技術(shù),該技術(shù)使通訊帶寬由100 K提高到1 M,突破了工業(yè)以太網(wǎng)通訊的瓶頸,實(shí)現(xiàn)了上位機(jī)與PLC之間海量數(shù)據(jù)的實(shí)時(shí)通訊。
海量數(shù)據(jù);實(shí)時(shí)通訊;多通道;并發(fā)傳輸
在舉世矚目的北京奧運(yùn)工程中,在國家體育場“鳥巢”上空的吊掛控制系統(tǒng)、跳躍控制系統(tǒng)、“碗邊”小車控制系統(tǒng)及地面設(shè)備控制系統(tǒng)中,上位機(jī)和PLC(Programmable Logic Controller,可編程邏輯控制器)之間通過工業(yè)以太網(wǎng)連接進(jìn)行數(shù)據(jù)交換。有多種方法實(shí)現(xiàn)工業(yè)以太網(wǎng)通訊,以往采用的是西門子的Softnet通過OPC(OLE for Process Control,用于過程控制的OLE)規(guī)范實(shí)現(xiàn)上位機(jī)和PLC之間的數(shù)據(jù)交換。
OPC技術(shù)在硬件供應(yīng)商和軟件開發(fā)者之間搭上了一座橋梁,它提供一種機(jī)制從數(shù)據(jù)源并且以一個(gè)標(biāo)準(zhǔn)的方式將這些數(shù)據(jù)傳送到任意客戶端應(yīng)用程序。一個(gè)設(shè)備供應(yīng)商現(xiàn)在可以開發(fā)一個(gè)可重用、高度優(yōu)化的服務(wù)器與數(shù)據(jù)源通信,并且高效地從數(shù)據(jù)源或者智能設(shè)備存取數(shù)據(jù)。OPC規(guī)范了接口函數(shù),不管現(xiàn)場設(shè)備以何種形式存在,客戶都以統(tǒng)一的方式去訪問,從而實(shí)現(xiàn)系統(tǒng)的開放性,易于實(shí)現(xiàn)與其他系統(tǒng)的接口。這是因?yàn)镺PC按照面向?qū)ο蟮脑瓌t,將一個(gè)OPC服務(wù)器作為一個(gè)對象封裝起來,只將接口方法暴露在外面,客戶以統(tǒng)一的方式去調(diào)用這個(gè)方法。也就是說,客戶程序設(shè)計(jì)者可以使用相同的OPC客戶端程序代碼,操作不同的硬件裝置,實(shí)現(xiàn)軟件重用和軟件的即插即用。
在劇院的舞臺機(jī)械中,一次同時(shí)動(dòng)作的設(shè)備一般不超過30個(gè)。同時(shí),設(shè)備只有單段運(yùn)行一種運(yùn)行模式,也就是只有一組設(shè)定數(shù)據(jù),在程控啟動(dòng)以前就已經(jīng)將數(shù)據(jù)全部傳送到PLC中去,在程控運(yùn)行過程中上位機(jī)軟件只負(fù)責(zé)顯示設(shè)備的位置、速度、電流、狀態(tài)和故障等信息,而不參與實(shí)時(shí)控制。
在國家體育場中,一套系統(tǒng)(如跳躍系統(tǒng))同時(shí)動(dòng)作的設(shè)備有近百個(gè)。同時(shí),設(shè)備除了單段運(yùn)行模式外,又增加了曲線運(yùn)行模式,如圖1所示,也就是有多組設(shè)定數(shù)據(jù)(最多20組),在程控運(yùn)行過程中上位機(jī)需要實(shí)時(shí)與PLC通訊,根據(jù)當(dāng)前位置、狀態(tài)等信息決定下一步應(yīng)向PLC發(fā)送哪一組設(shè)定數(shù)據(jù)。這就使得上位機(jī)和PLC之間交換的數(shù)據(jù)量成倍增加,上位機(jī)必須參與實(shí)時(shí)控制。
在調(diào)試過程中發(fā)現(xiàn):當(dāng)上位機(jī)和PLC之間交換的數(shù)據(jù)量達(dá)到3 000字節(jié)時(shí),通訊就會有明顯的延遲。此時(shí),如果延長上位機(jī)和PLC之間的數(shù)據(jù)交換周期,通訊延遲現(xiàn)象會有改善。也就是說,通訊延遲與數(shù)據(jù)量成正比,與數(shù)據(jù)交換周期成反比,公式如下:
其中,D:完成指定長度的數(shù)據(jù)通訊實(shí)際需要的時(shí)間,單位為s;
M:一個(gè)周期需要通訊的全部數(shù)據(jù)量,單位為字節(jié);
T:設(shè)定的數(shù)據(jù)交換周期,單位為s。
A股下跌主要原因,一方面是受中美貿(mào)易摩擦的擾動(dòng),另一方面自身內(nèi)部問題也比較突出。首先,2017年開始整個(gè)金融大環(huán)境就是防風(fēng)險(xiǎn)去杠桿。防風(fēng)險(xiǎn)的重要工作是整治金融亂象,2017年以來,先后限制銀行理財(cái)、規(guī)范保險(xiǎn)資金以及券商資管入市,打壓游資炒作,這些都是政治金融亂象的措施。進(jìn)入2018年在防風(fēng)險(xiǎn)的基礎(chǔ)上,去杠桿成為首要任務(wù),去杠桿會導(dǎo)致流動(dòng)性緊縮,進(jìn)而影響增量資金入市,很明顯觀察到,今年兩市日均成交額基本維持在3000-5000億的地量水平。
上位機(jī)和PLC之間的數(shù)據(jù)交換周期不應(yīng)小于250 ms,否則,會使數(shù)據(jù)刷新滯后,明顯地感覺到數(shù)據(jù)是一個(gè)一個(gè)地蹦出來的。這里將上位機(jī)和PLC之間的海量數(shù)據(jù)定義為:3 000字節(jié)以250 ms的數(shù)據(jù)交換周期盡量進(jìn)行通訊,換算成通訊帶寬為100 K。
其中,M:一個(gè)通道的限定字節(jié)數(shù),此處為3 000;
11:一個(gè)字節(jié)的位數(shù),8個(gè)數(shù)據(jù)網(wǎng),1個(gè)起始位,1個(gè)停止位,1個(gè)效驗(yàn)位;
4:通訊頻率,數(shù)據(jù)交換周期的倒數(shù),1 000 ms / 250 ms= 4;
海量數(shù)據(jù)通過OPC進(jìn)行通訊會產(chǎn)生嚴(yán)重的通訊延遲現(xiàn)象,為了解決這個(gè)問題,我們做了大量的實(shí)驗(yàn):
首先想到的是:會不會是OPC造成的瓶頸?于是做了第一個(gè)實(shí)驗(yàn),采用PRODAVE繞過OPC進(jìn)行直接通訊。PRODAVE是西門子的C語言編程接口,可以實(shí)現(xiàn)上位機(jī)和PLC之間的直接通訊,由于OPC規(guī)范要考慮各種硬件、軟件之間的兼容性,因此,從速度和效率上來說,理論上PRODAVE要比OPC快,實(shí)驗(yàn)的結(jié)果是:在數(shù)據(jù)交換周期為250 ms的情況下,3 000字節(jié)的通訊實(shí)際需要380 ms的時(shí)間,可見,采用PRODAVE通訊速度并沒有明顯的改善。
第二個(gè)實(shí)驗(yàn),采用FETCH/WRITE(塊讀寫)協(xié)議進(jìn)行通訊。FETCH/WRITE(塊讀寫)協(xié)議是PLC內(nèi)部的一種通訊協(xié)議,顧名思義就是數(shù)據(jù)整塊地傳送,和字節(jié)傳送相比,速度能提高很多倍。實(shí)驗(yàn)的結(jié)果如下:3 000字節(jié)的數(shù)據(jù)量,數(shù)據(jù)交換周期為250 ms,可以接收到400或者800個(gè)字節(jié)(FETCH/WRITE協(xié)議內(nèi)部默認(rèn)是以400為一塊),將數(shù)據(jù)交換周期改成350 ms,可以接收到2 400個(gè)字節(jié)或者2 800個(gè)字節(jié),將數(shù)據(jù)交換周期改成500 ms,每次都可以接收3 000個(gè)字節(jié)。結(jié)論是FETCH/WRITE(塊讀寫)協(xié)議和PRODAVE的通訊速度差不多。
我們知道工業(yè)以太網(wǎng)的帶寬是100 M,為什么實(shí)際使用中只能達(dá)到100 K呢?于是做了第三個(gè)實(shí)驗(yàn),采用一臺計(jì)算機(jī)模擬PLC,運(yùn)行第二個(gè)實(shí)驗(yàn)中的服務(wù)器端程序,另一臺計(jì)算機(jī)運(yùn)行第二個(gè)實(shí)驗(yàn)中上位機(jī)端程序。結(jié)果發(fā)現(xiàn):在數(shù)據(jù)交換周期為250 ms的情況,每次都可以接收3 000個(gè)字節(jié)。這個(gè)實(shí)驗(yàn)證明:通訊的瓶頸不在以太網(wǎng)上,而在于PLC內(nèi)部。
編寫上位機(jī)軟件主要有兩種方式:一種是選用組態(tài)軟件進(jìn)行組態(tài),另一種是使用各種編程語言(如Visual C++、Visual Basic)直接編寫。我們采用的是第二種方法,通過Visaul C++編程實(shí)現(xiàn)OPC驅(qū)動(dòng)。如果采用第一種方法,即選用組態(tài)軟件進(jìn)行組態(tài),還會有通訊延遲的問題嗎?
目前市場上主流的組態(tài)軟件是這樣實(shí)現(xiàn)數(shù)據(jù)交換的:對數(shù)據(jù)進(jìn)行策劃,按點(diǎn)來管理數(shù)據(jù),根據(jù)每個(gè)點(diǎn)的實(shí)際要求來決定其通訊周期。也就是說每個(gè)點(diǎn)的通訊周期都不同,有的點(diǎn)可以僅在每次程序進(jìn)入時(shí)讀入一次即可,還有的點(diǎn)幾分鐘讀一次也能滿足要求,只有個(gè)別需要實(shí)時(shí)刷新的數(shù)據(jù)才每個(gè)周期都進(jìn)行通訊。這樣,上位機(jī)和PLC之間每個(gè)周期進(jìn)行交換的數(shù)據(jù)就大大減少。比如當(dāng)前位置(一個(gè)長整數(shù)),如果按字節(jié)傳送,就是8個(gè)數(shù)據(jù)項(xiàng),如果改成按點(diǎn)傳送,就是一個(gè)數(shù)據(jù)項(xiàng),這就減少了7/8的數(shù)據(jù)量。
如圖2所示:原來12個(gè)點(diǎn)(數(shù)據(jù)項(xiàng))變成2個(gè)點(diǎn)(數(shù)據(jù)項(xiàng)),且每個(gè)點(diǎn)可以有自己獨(dú)立的數(shù)據(jù)交換周期。
像“組態(tài)王”這樣的組態(tài)軟件還采取了一些其他技巧來減少數(shù)據(jù)通訊量,比如:只刷新當(dāng)前屏幕上顯示的點(diǎn)。這樣,每個(gè)周期必須讀取的點(diǎn)的數(shù)量就顯著減少,通訊速度就能明顯提高。
一般的控制系統(tǒng)中采用這種方案完全可以滿足要求,不會出現(xiàn)通訊延遲的現(xiàn)象。因?yàn)橥ǔI衔粰C(jī)只完成參數(shù)設(shè)定、數(shù)據(jù)及圖形顯示等功能,不直接參與實(shí)時(shí)控制。在一些大型化工項(xiàng)目中,即使數(shù)據(jù)量很大,能多到幾萬個(gè)點(diǎn),但對其中很多實(shí)時(shí)性要求不高的點(diǎn),比如溫度、液位等數(shù)據(jù),完全可以若干個(gè)周期讀取一次。而在國家體育場中,數(shù)據(jù)量大,數(shù)據(jù)交換周期要求高,完全采用上述方案無法徹底解決通訊瓶頸問題。
目前我們遇到的問題,打個(gè)比方來說,上位機(jī)和PLC之間的通訊就像馬路上的交通流量。到此為止一直在一條路上“跑”,如果這條路太堵了,能否多修幾條路?于是自然而然地想到了多線程技術(shù)。
線程都是操作系統(tǒng)的概念。進(jìn)程是應(yīng)用程序的執(zhí)行實(shí)例,每個(gè)進(jìn)程是由私有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進(jìn)程在運(yùn)行過程中創(chuàng)建的資源隨著進(jìn)程的終止而被銷毀,所使用的系統(tǒng)資源在進(jìn)程終止時(shí)被釋放或關(guān)閉。線程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行單元。系統(tǒng)創(chuàng)建好進(jìn)程后,實(shí)際上就啟動(dòng)執(zhí)行了該進(jìn)程的主執(zhí)行線程,主執(zhí)行線程以函數(shù)地址形式,比如說main或WinMain函數(shù),將程序的啟動(dòng)點(diǎn)提供給Windows系統(tǒng)。主執(zhí)行線程終止了,進(jìn)程也就隨之終止。
每一個(gè)進(jìn)程至少有一個(gè)主執(zhí)行線程,它無需由用戶去主動(dòng)創(chuàng)建,是由系統(tǒng)自動(dòng)創(chuàng)建的。用戶根據(jù)需要在應(yīng)用程序中創(chuàng)建其他線程,多個(gè)線程并發(fā)地運(yùn)行于同一個(gè)進(jìn)程中。一個(gè)進(jìn)程中的所有線程都在該進(jìn)程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源,所以,線程間的通訊非常方便,多線程技術(shù)的應(yīng)用也較為廣泛。
多線程可以實(shí)現(xiàn)并行處理,避免了某項(xiàng)任務(wù)長時(shí)間占用CPU時(shí)間,大大地提高CPU的工作效率。
在典型的單處理器主機(jī)上,任務(wù)實(shí)際上并不是同時(shí)執(zhí)行的。內(nèi)核中稱為調(diào)度程序的部分將工作換進(jìn)換出,從而讓所有工作都獲得一輪執(zhí)行。在同一個(gè)時(shí)間間隔內(nèi),并發(fā)模型常常基于事件的編程實(shí)現(xiàn)。
通常情況下,線程數(shù)量取決于應(yīng)用程序的特定需要,理想情況下線程數(shù)量與處理器數(shù)量相當(dāng)為好,雖然線程數(shù)量無法保證傳輸質(zhì)量,但線程太少又會造成傳輸效率低,特別是用戶數(shù)量較多的情況下更為明顯。
基于多通道的并發(fā)傳輸技術(shù)的原理是這樣的:將上位機(jī)和PLC之間通訊的數(shù)據(jù)等分成N塊,上位機(jī)軟件生成N個(gè)線程,每個(gè)線程建立一個(gè)通訊通道,一個(gè)通道只傳輸N分之一的全部數(shù)據(jù)量。如圖3所示。
上位機(jī)作為客戶機(jī),PLC作為服務(wù)器,在客戶機(jī)/服務(wù)器傳輸方式中,服務(wù)器需要打開監(jiān)聽端口,監(jiān)聽網(wǎng)絡(luò)上其它客戶機(jī)向該服務(wù)器發(fā)出的連接請求,當(dāng)收到一個(gè)請求信號時(shí)與該客戶機(jī)建立一個(gè)連接通道,一個(gè)通道其實(shí)就是一個(gè)獨(dú)立的線程,每個(gè)通道傳輸?shù)臄?shù)據(jù)限定為900字節(jié)。
服務(wù)器提供的并發(fā)連接通道是有限定的。因?yàn)椴l(fā)連接數(shù)量越多,所消耗的未分頁內(nèi)存池也越多;等候處理的發(fā)送調(diào)用越多,被鎖定的內(nèi)存頁面也越多,極易超過系統(tǒng)資源的極限。并發(fā)連接通道限定為30。
由此可以計(jì)算出基于多通道的并發(fā)傳輸技術(shù)的帶寬:
其中,M:一個(gè)通道的限定字節(jié)數(shù),此處為900;
11:一個(gè)字節(jié)的位數(shù)8,個(gè)數(shù)據(jù)網(wǎng),1個(gè)起始位,1個(gè)停止位,1個(gè)效驗(yàn)位;
4:通訊頻率,數(shù)據(jù)交換周期的倒數(shù),1 000 ms / 250 ms= 4;
N:通道數(shù),此處為30。
基于多通道的并發(fā)傳輸技術(shù)填補(bǔ)了國內(nèi)主流組態(tài)軟件的空白,解決了海量數(shù)據(jù)的實(shí)時(shí)通訊問題,使上位機(jī)和PLC之間的實(shí)時(shí)控制成為可能,實(shí)現(xiàn)了威亞曲線運(yùn)行模式,保證了奧運(yùn)會、殘奧會開閉幕式四次演出中“星星五環(huán)”、“飛天仙女”、“藍(lán)天白云”、“碗邊郵遞員”等復(fù)雜節(jié)目的順利完成。該項(xiàng)技術(shù)可以廣泛地應(yīng)用于各種海量數(shù)據(jù)的實(shí)時(shí)控制系統(tǒng)中。
(編輯 潘 浪)
1.胡道元.計(jì)算機(jī)網(wǎng)絡(luò)(高級).北京:清華大學(xué)出版社,1999.8 (107)
2.張斌.高波.Linux網(wǎng)絡(luò)編程.北京:清華大學(xué)出版社,2000.1(2-8)
3.RFC 1889.RTP: A Transport Protocol for Real-Time Applications, 1996.1
4.Runtime: Synchronizing processes and threads http://www-900.ibm.com/developerWorks/cn/linux/sdk/rt/part5/index_eng.shtml
The Instant Communication for Mass Data
GUO Hua, WU Jian-tong, WANG Jun-wei
(Center for Engineering Design and Research under the General Equipment Department, Beijing 100028, China)
This paper presents a parallel transmission technology based on the multi-channel service, which improves the
bandwidth from 100K to lM so as to make a communication-breakthough of industrial Novell system and realize.The instant communication for mass data between position machine and PLC .
data, instant communication; multi-channel; parallel transmission technology