以太網技術在繼電器可靠性檢測系統中的應用
2.2 實現功能
檢測裝置的軟件由兩大部分組成:一是實時檢測與處理程序,包括了試驗參數的設置,對試驗狀態以及失效數據的保存,對失效數據進行數學分析,打印報表等,檢測裝置記錄的失效數據有失效時間,失效試品號、觸點號,觸點失效的類型,失效時觸點電壓以及各觸點累計失效次數等;二是通訊程序,接收服務器的參數設置、基本操作,并上傳試驗狀態及失效信息。圖2為檢測裝置的操作界面,菜單項代表了所能實現的所有操作,文本顯示區對設置參數、試驗狀態以及失效發生時的失效信息進行顯示。軟件采用可視化編程語言VC++6.0嵌入匯編語言的方法實現[4]。
圖2 檢測裝置操作界面
3、集中控制的實現
以太網只定義了物理層和鏈路層,但目前在傳輸層和網絡層已基本上統一,TCP/IP協議被普遍采用。傳輸層協議包括UDP協議和TCP協議。無論是基于UDP協議或者TCP協議,都要保證網絡傳輸的一定的可靠性和實時性。由于UDP協議具有實現機制簡單、傳輸效率高的特點,其較多地被應用到高效率的實時系統中。但為了實現傳輸的可靠性,就需要在應用層采用一些差錯控制機制,而這些措施與TCP協議中自帶的傳輸機制非常相似。實際上,在許多實時性的系統中,采用TCP協議也基本可以滿足傳輸時間的要求,還避免了在應用層進行繁瑣的處理[5]。因此在本方案中傳輸層選擇使用TCP協議。
應用層的協議目前還沒有統一,本文旨在研究一個可廣泛適用于多種應用場合和多種應用層協議的通用的通信方案,用戶可根據需要選擇不同的應用層協議,也可以定義自己的數據包格式。
3.1 套接字(Socket)
TCP/IP網絡環境下的應用程序是通過網絡系統編程界面套接字Socket(在Windows操作系統下稱之為Winsock)來實現的。套接字構成了核心協議的用戶視圖,通過套接字應用程序可訪問通信協議,套接字是網絡通信的基本構件。套接字是可以被命名的通信端點,應用程序通過它在網絡上發送和接收數據。每個套接字都有其類型,并有一個與之相連的進程。TCP/IP提供3種類型套接字:
1)流式套接字(Stream Scoket)。該接口提供一個面向連接、可靠的數據傳輸服務,數據無差錯、無重復地發送,且按發送順序接收。內設流量控制,避免數據流超限;數據被看作字節流,無長度限制。流式套接字提供了一種可靠的面向連接的數據傳輸方式,如果想發送大批量數據或想讓數據按順序無重復地到達目的地,流式套接字最為有用。
2)數據包套接字(Datagram Scoket)。該接口提供一個無連接服務。數據包以獨立包形式被發送,不提供無錯保證,數據可能丟失或重復,并且接收順序混亂。數據包套接字比較適用于數據包或記錄型數據的傳輸,數據包的發送不能得到保證,而且不能排序到達。
3)原始套接字(Raw Scoket)。該接口允許對較低層協議,如IP、ICMP直接訪問,主要用于新的網絡協議實現的測試等[6]。
在進行網絡開發時,阻塞問題是網絡編程中十分重要的問題。由于在阻塞模式下,在I/O操作完成前,執行操作的Winsock函數會一直等待下去,不會立即返回程序(將控制權交還給程序)。故用這種方式,服務器應用程序將很難同時通過多個建好連接的套接字進行通信。在此系統的應用中,需要實現一臺服務器同時和六個套接字進行通信,因此結合對有限硬件資源的考慮,選擇了非阻塞類型的套接字,這也是一般協議開發中通常用到的套接字通信方式。
3.2 通信的實現
系統通信采用客戶機/服務器模式,利用VC的微軟基礎類(MFC)進行網絡開發,MFC提供了兩種類型描述Windows Socket,分別是CAsynSocket和CSocket。其中CAsynSocket類封裝了Windows Sockets API,并將與Socket有關的Windows消息轉換為回調函數。CAsynSocket處于網絡更底層,其使用就更具靈活性,相應要求編程者應熟悉網絡底層細節。而CSocket類是CAsynSocket類的派生類,通過MFC中的CArchive類的對象提供了更高層次的抽象,它封裝了Socket實現中的許多細節。這里我們采用CAsynSocket類實現系統中“一對多”的數據發送,通過在服務器中建立Winsock空間數組的方式來解決[7]。
首先,構造CAsyncSocket類型的對象,然后利用該對象創建內嵌的Socket句柄。例如:
CAsyncSocket m_listen;
m_listen.Create(nPort);//服務器指定端口
若是客戶端,需要用CAsyncSocket::Connect()函數連接服務器端的套接字。
時間繼電器相關文章:時間繼電器
評論