日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

0  引言

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

1  通信模塊功能

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

2  通信模塊設計

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

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

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

2.1 Socket套接字  

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

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

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

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

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

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

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

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

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

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

2.4  阻塞的預防及處理

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

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

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

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

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

3.1  實現(xiàn)思路

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

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

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

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

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

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

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

3.2  模塊封裝

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

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

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

4  結(jié)束語

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

 

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

在這篇文章中,小編將對工業(yè)機器人的相關內(nèi)容和情況加以介紹以幫助大家增進對工業(yè)機器人的了解程度,和小編一起來閱讀以下內(nèi)容吧。

關鍵字: 工業(yè)機器人 機器人 編程

延續(xù)三星最小像素0.56微米(μm),以占用更少*的相機模組面積打造2億超高像素傳感器 支持高達30fps(Frames Per Second,畫面每秒傳輸幀數(shù))的速度拍攝8K視頻,捕捉電影般的豐富細節(jié)和色彩...

關鍵字: ISO SoC 三星電子 傳感器

現(xiàn)在網(wǎng)上有很多播放量巨高的免費編程項目教程,很多學編程的同學可能都看過,就導致大家可能寫在簡歷上的內(nèi)容都差不多。

關鍵字: 項目 編程 簡歷

為增進大家對控制器的認識,本文將對影響控制器可靠性的因素以及控制器的常見故障和維修方法予以介紹。

關鍵字: 控制器 指數(shù) 集成電路

為增進大家對控制器的認識,本文將對溫度控制器的分類以及溫度控制器的功能予以介紹。

關鍵字: 溫度控制器 指數(shù) 控制器

為增進大家對控制器的認識,本文將對控制器結(jié)構(gòu)類異常以及常見的幾種電機控制器予以介紹。

關鍵字: 控制器 指數(shù) 電機

Unity [1] 是實時3D互動內(nèi)容創(chuàng)作和運營平臺 [2] 。包括游戲開發(fā)、美術、建筑、汽車設計、影視在內(nèi)的所有創(chuàng)作者,借助Unity將創(chuàng)意變成現(xiàn)實。

關鍵字: LTS版本 SoC 芯片

一直以來,MCU微控制器都是大家的關注焦點之一。因此針對大家的興趣點所在,小編將為大家?guī)鞰CU微控制器的相關介紹,詳細內(nèi)容請看下文。

關鍵字: MCU 微控制器 控制器

北京2022年9月29日 /美通社/ -- 近日,猿編程創(chuàng)始人李翊接受了《中國信息技術教育》雜志專訪?!吨袊畔⒓夹g教育》雜志由教育部主管、中央電化教育館等單位主辦,刊登專訪文章《人工智能教育普惠重在與校園實際結(jié)合 --...

關鍵字: 人工智能 創(chuàng)始人 編程 智能教育

為增進大家對PLC的認識,本文將對PLC編程的技巧予以介紹。

關鍵字: PLC 指數(shù) 編程

工業(yè)控制

13606 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉