www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]0 引言組態(tài)軟件是面向工程監(jiān)控和數(shù)據(jù)采集的軟件平臺工具,具有豐富的設(shè)置項目。組態(tài)軟件所涉及的工業(yè)領(lǐng)域非常廣泛,在工業(yè)監(jiān)控系統(tǒng)中發(fā)揮著越來越重要的作用。組態(tài)軟件要接收現(xiàn)場的采集數(shù)據(jù),并形成動態(tài)畫面,以反映

0  引言

組態(tài)軟件是面向工程監(jiān)控和數(shù)據(jù)采集的軟件平臺工具,具有豐富的設(shè)置項目。組態(tài)軟件所涉及的工業(yè)領(lǐng)域非常廣泛,在工業(yè)監(jiān)控系統(tǒng)中發(fā)揮著越來越重要的作用。組態(tài)軟件要接收現(xiàn)場的采集數(shù)據(jù),并形成動態(tài)畫面,以反映工業(yè)現(xiàn)場的各種狀態(tài),并能夠?qū)ΜF(xiàn)場設(shè)備進(jìn)行控制。這些都依賴于組態(tài)軟件的通信模塊。通信模塊作為組態(tài)運(yùn)行環(huán)境中數(shù)據(jù)交互的重要渠道,通常處于監(jiān)控組態(tài)軟件運(yùn)行環(huán)境的核心區(qū),其功能直接決定著組態(tài)軟件的性能。本文在基于TCP/IP網(wǎng)絡(luò)協(xié)議和SOCKET接口技術(shù)的基礎(chǔ)上,介紹了基于IEC61131-3標(biāo)準(zhǔn)的組態(tài)軟件通訊模塊的設(shè)計與實現(xiàn)方法。

1  通信模塊功能

組態(tài)監(jiān)測系統(tǒng)分為控制器和工程師站兩部分,圖1所示是系統(tǒng)的總體結(jié)構(gòu)圖。圖中的控制器負(fù)責(zé)采集并處理數(shù)據(jù),工程師站負(fù)責(zé)接收控制器發(fā)送過來的數(shù)據(jù),并將數(shù)據(jù)顯示和保存。通信模塊根據(jù)用戶定義的通信協(xié)議實現(xiàn)工程師站組態(tài)軟件與控制器之間的數(shù)據(jù)通信,完成數(shù)據(jù)通信幀的組織下行和上行數(shù)據(jù)幀的校驗、解析。由此可見,在整個組態(tài)軟件中,通信功能模塊擔(dān)負(fù)著上層組態(tài)運(yùn)行環(huán)境與下層控制器之間數(shù)據(jù)交互的重要作用。

2  通信模塊設(shè)計

為了能夠及時、準(zhǔn)確的反映設(shè)備運(yùn)行狀況,設(shè)計時可采用基于TCP/IP協(xié)議的流式套接字(SOCK_STREAM)來實現(xiàn)組態(tài)軟件通信模塊的程序設(shè)計。

為了實現(xiàn)網(wǎng)絡(luò)通訊,Windows為應(yīng)用程序提供了各種編程接口,如Windows Sockets API等,應(yīng)用程序可以直接使用這些API函數(shù)。但對于較大型的應(yīng)用程序來說,應(yīng)該設(shè)計一個虛擬網(wǎng)絡(luò)接口層,以使能用windows提供的各種通訊API來為應(yīng)用程序提供通用的網(wǎng)絡(luò)功能。這樣的接口層可以采用中間DLL的形式,它將應(yīng)用程序和windows的各種API隔離開來,使程序員能更方便地設(shè)計自己的應(yīng)用程序。這樣的設(shè)計可使應(yīng)用程序更易于維護(hù)和移植。

基于通信需求和上述思路,利用基于TCP_IP的SOCKET接口可以實現(xiàn)網(wǎng)絡(luò)通信,通信模塊通常以動態(tài)鏈接庫的形式存在。

2.1 Socket套接字  

Windows Sockets不是一種網(wǎng)絡(luò)協(xié)議,而是一套開放的、可支持多種協(xié)議的、Windows下的網(wǎng)絡(luò)編程接口。Winsock實際在計算機(jī)中提供了一個通信接口,應(yīng)用程序在網(wǎng)絡(luò)上傳輸信息都可以通過這個Socket接口來實現(xiàn)。Windows Sockets分為三種類型:其中流式套接字(sock-stream)定義了一種可靠的面向連接的服務(wù),它使用TCP作為傳輸層協(xié)議,可實現(xiàn)無差錯無重復(fù)地順序數(shù)據(jù)包傳輸;數(shù)據(jù)報套接字(sock-dgram)定義了一種無連接的服務(wù),它使用UDP協(xié)議,數(shù)據(jù)通過相互獨(dú)立的報文進(jìn)行傳輸,而且是無序的,同時不保證可靠和無差錯;原始套接字(sock-raw)允許對低層協(xié)議(如IP或ICMP)直接訪問,主要用于新網(wǎng)絡(luò)協(xié)議的實現(xiàn)和測試等。

圖2給出了一種典型的C/S(客戶端服務(wù)器)面向連接套接字調(diào)用的實現(xiàn)流程。

本系統(tǒng)中,工程師站組態(tài)軟件一般可作為客戶端向控制器發(fā)送連接請求,以建立連接。由于控制器采集數(shù)據(jù)是周期性的,組態(tài)軟件采用異步選擇機(jī)制判斷控制器是否有數(shù)據(jù)發(fā)送過來。Windows Sockets的異步選擇函數(shù)提供了消息機(jī)制的網(wǎng)絡(luò)事件選擇功能,當(dāng)它所登記的網(wǎng)絡(luò)事件發(fā)生時,應(yīng)用程序相應(yīng)的窗口會收到一個消息,消息中指明了所發(fā)生的網(wǎng)絡(luò)事件以及與該網(wǎng)絡(luò)事件相關(guān)的一些信息。

    連接建立之后,即可調(diào)用Winsock提供的函數(shù)來發(fā)送和接收數(shù)據(jù),進(jìn)程結(jié)束時,則關(guān)閉兩個套接字。

2.2  數(shù)據(jù)交互

通訊模塊主要與框架、在線兩個模塊以及控制器存在數(shù)據(jù)交互。圖3所示是其通訊模塊與組態(tài)軟件的其它模塊及控制器之間進(jìn)行數(shù)據(jù)交互的流程圖。其中,通訊模塊發(fā)送給框架窗口的消息主要有三項功能:一是通知在線模塊讀取控制器返回的應(yīng)答數(shù)據(jù);二是在通訊中出現(xiàn)異常時,返回錯誤信息;三是在通訊出現(xiàn)超時時,返回超時信息。

2.3  數(shù)據(jù)傳輸協(xié)議

TCP/IP協(xié)議族的核心部分是傳輸層和網(wǎng)絡(luò)層。傳輸層主要為應(yīng)用程序提供端到端的通信,TCP/IP協(xié)議族有兩個互不相同的傳輸協(xié)議,即TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報協(xié)議)。

TCP是一種面向連接的協(xié)議,它可給用戶進(jìn)程提供可靠的全雙工的數(shù)據(jù)通信,其所做的工作是把應(yīng)用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層,同時確認(rèn)接收到的分組,并提供流量控制、設(shè)定超時及重傳等機(jī)制。由于TCP提供有高可靠性的端到端的通信,因此,應(yīng)用程序可以忽略所有這些細(xì)節(jié)。

Winsock的Nagle算法會降低小數(shù)據(jù)包的發(fā)送速度,因此應(yīng)當(dāng)定義一種數(shù)據(jù)結(jié)構(gòu),以將發(fā)送的數(shù)據(jù)按照這種數(shù)據(jù)結(jié)構(gòu)以字符型ASCII發(fā)送,客戶端接收到服務(wù)器傳來的數(shù)據(jù),按照這種數(shù)據(jù)結(jié)構(gòu)解析數(shù)據(jù),這樣做可以減少小數(shù)據(jù)包的數(shù)目,避免協(xié)議使用Nagle算法。此外通過消息響應(yīng)代替輪詢也是提高傳輸實時性的一種措施。

2.4  阻塞的預(yù)防及處理

TCP/IP協(xié)議本身的滑動窗口控制可以有效的防止阻塞的發(fā)生。假設(shè)服務(wù)器和客戶端的收發(fā)緩沖區(qū)大小為100 K字節(jié),服務(wù)器每發(fā)送一個大小為80 K字的數(shù)據(jù)包,客戶端接收到這個數(shù)據(jù)包后,將返回一個應(yīng)答,應(yīng)答中包含有下次服務(wù)器能夠發(fā)送的最大的字節(jié)數(shù),即下次服務(wù)器只能發(fā)送大小不能超過20 K字的數(shù)據(jù)。按照這種控制方法,TCP/IP可根據(jù)滑動窗口的大小控制發(fā)送的速度,滑動窗口大,則發(fā)送的數(shù)據(jù)量大,滑動窗口過小,則發(fā)送的數(shù)據(jù)量也會減小,這樣即可以防止阻塞的發(fā)生。

該通訊模塊中使用的防阻塞方法是在同步方式中采用select函數(shù)來檢查接收發(fā)送緩沖區(qū)的讀寫可用狀態(tài)。服務(wù)器端發(fā)送數(shù)據(jù)前,應(yīng)先檢查服務(wù)器的發(fā)送緩沖區(qū)是否可寫,如不可寫,說明發(fā)送緩沖區(qū)己經(jīng)寫滿,需要等待發(fā)送緩沖區(qū)有剩余空間時再發(fā)送,以避免阻塞。同樣,客戶端在讀緩沖區(qū)數(shù)據(jù)前,也應(yīng)先檢查一下緩沖區(qū)是否可讀。如果發(fā)送緩沖區(qū)一直不可寫,那么可能是因為網(wǎng)絡(luò)斷開,或者網(wǎng)絡(luò)負(fù)載過大,使數(shù)據(jù)不能發(fā)送出去。

設(shè)置一個超時時限,可以阻塞發(fā)生時,當(dāng)發(fā)送緩沖區(qū)不可寫的狀態(tài)超過設(shè)置的超時時間,系統(tǒng)則重新建立一個連接。

將這種方法和TCP/IP協(xié)議本身的防阻塞控制結(jié)合使用,可以有效地防止阻塞的發(fā)生。

3  通信模塊的實現(xiàn)

3.1  實現(xiàn)思路

為了實現(xiàn)與控制器之間的異步通訊,通訊模塊的總體設(shè)計如圖4所示。

首先,由主線程調(diào)用外部接口函數(shù)以建立連接,同時,創(chuàng)建發(fā)送和接收線程,以分別用于數(shù)據(jù)的發(fā)送和接收。

當(dāng)要發(fā)送數(shù)據(jù)時,主線程調(diào)用外部接口函數(shù)來發(fā)送數(shù)據(jù)。該函數(shù)先將待發(fā)送的數(shù)據(jù)填充到通訊模塊的發(fā)送緩沖區(qū)中,然后通知發(fā)送線程,并由發(fā)送線程負(fù)責(zé)將發(fā)送緩沖區(qū)中的數(shù)據(jù)發(fā)送出去。

當(dāng)數(shù)據(jù)發(fā)送成功后,可由發(fā)送線程發(fā)送消息,通知接收線程準(zhǔn)備接收數(shù)據(jù)。

當(dāng)有應(yīng)答數(shù)據(jù)到來時,接收線程將接收數(shù)據(jù)并將數(shù)據(jù)放入通訊模塊的接收緩沖區(qū)。接收完后,接收線程將發(fā)送消息以通知主線程讀取應(yīng)答數(shù)據(jù)。

主線程接到通知后,將調(diào)用外部接口函數(shù)接收數(shù)據(jù)。該函數(shù)可將通訊模塊的接收緩沖區(qū)中的應(yīng)答數(shù)據(jù)復(fù)制到應(yīng)用程序指定的緩沖區(qū)中。

數(shù)據(jù)的發(fā)送和接收交替進(jìn)行,就可以完成特定的操作。

3.2  模塊封裝

通過動態(tài)鏈接庫技術(shù)可以提供一種方便、快捷的資源共享途徑。這實質(zhì)上是一些函數(shù)、數(shù)據(jù)和類集合成的可執(zhí)行模塊。通信模塊采用動態(tài)鏈接庫形式,可以在實現(xiàn)同一臺機(jī)器上的多個工程師站組態(tài)軟件進(jìn)程的同時與多個控制器進(jìn)行通訊。

將通信模塊中套接字的建立、端口的綁定、數(shù)據(jù)的接收和發(fā)送封裝到動態(tài)鏈接庫中,同時屏蔽一些操作細(xì)節(jié),這樣的方法可以方便地被其它程序所調(diào)用,更易于程序維護(hù)和移值,也方便將來程序的升級。

根據(jù)窗口句柄發(fā)送消息至該窗口,然后通知應(yīng)用程序有數(shù)據(jù)到達(dá)。最后,還需要在函數(shù)前面使用extern“C”_declspec(dllexport)關(guān)鍵字,以使該P(yáng)EI數(shù)能夠被其它程序所調(diào)用。函數(shù)的參數(shù)分別為端口號和應(yīng)用程序的句柄。在應(yīng)用程序中,只需要調(diào)用該函數(shù),就可以開啟TCP/IP服務(wù)。按照同樣的方法,也可以封裝連接服務(wù)函數(shù)和發(fā)送數(shù)據(jù)函數(shù)。組態(tài)軟件的在線等模塊通過調(diào)用這些導(dǎo)出函數(shù),就可以完成與控制器的通訊,而不用考慮具體的通訊細(xì)節(jié)。具體的通訊細(xì)節(jié)可在這些導(dǎo)出函數(shù)中實現(xiàn)。

4  結(jié)束語

在基于TCP/IP協(xié)議網(wǎng)絡(luò)通訊的基礎(chǔ)上,針對狀態(tài)監(jiān)測中數(shù)據(jù)傳輸?shù)拈g歇這一特殊性,提出了一種基于事件驅(qū)動的網(wǎng)絡(luò)通訊模塊的設(shè)計方法,并將這種方法封裝到動態(tài)鏈接庫中,然后通過函數(shù)接口與應(yīng)用程序交互。由于該通訊模塊是以動態(tài)鏈接庫形式給出的,編程者可以不需要深入了解TCP/IP協(xié)議以及Socket高級編程,而中需簡單地調(diào)用通訊模塊中的函數(shù),即可實現(xiàn)局域網(wǎng)中數(shù)據(jù)的傳輸。本文所介紹的通信模塊的設(shè)計方法目前已經(jīng)實現(xiàn),其可行性也得到了驗證,并已應(yīng)用在實際的組態(tài)軟件開發(fā)項目中。

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉