<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于SOCK盯編程實現的組態(tài)軟件與控制器的網絡通訊

          基于SOCK盯編程實現的組態(tài)軟件與控制器的網絡通訊

          作者: 時間:2010-09-01 來源:網絡 收藏

          0 引言

          本文引用地址:http://www.ex-cimer.com/article/162872.htm

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

          1 通信模塊功能

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

          2 通信模塊設計

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

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

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

          2.1 Socket套接字

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

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


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();