工業(yè)以太網技術在繼電器可靠性檢測系統(tǒng)中的應用
2)數據包套接字(Datagram Scoket)。該接口提供一個無連接服務。數據包以獨立包形式被發(fā)送,不提供無錯保證,數據可能丟失或重復,并且接收順序混亂。數據包套接字比較適用于數據包或記錄型數據的傳輸,數據包的發(fā)送不能得到保證,而且不能排序到達。
3)原始套接字(Raw Scoket)。該接口允許對較低層協(xié)議,如IP、ICMP直接訪問,主要用于新的網絡協(xié)議實現的測試等[6]。
在進行網絡開發(fā)時,阻塞問題是網絡編程中十分重要的問題。由于在阻塞模式下,在I/O操作完成前,執(zhí)行操作的Winsock函數會一直等待下去,不會立即返回程序(將控制權交還給程序)。故用這種方式,服務器應用程序將很難同時通過多個建好連接的套接字進行通信。在此系統(tǒng)的應用中,需要實現一臺服務器同時和六個套接字進行通信,因此結合對有限硬件資源的考慮,選擇了非阻塞類型的套接字,這也是一般協(xié)議開發(fā)中通常用到的套接字通信方式。
3.2 通信的實現
系統(tǒng)通信采用客戶機/服務器模式,利用VC的微軟基礎類(MFC)進行網絡開發(fā),MFC提供了兩種類型描述Windows Socket,分別是CAsynSocket和CSocket。其中CAsynSocket類封裝了Windows Sockets API,并將與Socket有關的Windows消息轉換為回調函數。CAsynSocket處于網絡更底層,其使用就更具靈活性,相應要求編程者應熟悉網絡底層細節(jié)。而CSocket類是CAsynSocket類的派生類,通過MFC中的CArchive類的對象提供了更高層次的抽象,它封裝了 Socket實現中的許多細節(jié)。這里我們采用CAsynSocket類實現系統(tǒng)中“一對多”的數據發(fā)送,通過在服務器中建立Winsock空間數組的方式來解決[7]。
首先,構造CAsyncSocket類型的對象,然后利用該對象創(chuàng)建內嵌的Socket句柄。例如:
CAsyncSocket m_listen;
m_listen.Create(nPort);//服務器指定端口
若是客戶端,需要用CAsyncSocket::Connect()函數連接服務器端的套接字。
其次,若是服務器端的套接字,創(chuàng)建完成就可以偵聽端口,以便接收試圖連接到此端口的客戶端的套接字。接收了一個連接請求后就可以進行口令驗證或直接建立連接等工作。服務器偵聽的函數是CAsyncSocket::Listen(),接收客戶端套接字的函數是 CAsyncSocket::Accept()。
繼而采用CAsyncSocket類的成員函數進行數據的收發(fā)。發(fā)送的函數是CAsyncSocket::send(),接收的函數是CAsyncSocket::Receive()。
最后,通信結束后,通過CAsyncSocket::Close()函數銷毀對象。服務器與檢測裝置的通訊流程見圖3。

圖 3 服務器與檢測裝置通信流程圖
CAsyncSocket類對網絡回調函數做了較好的封裝。當有連接請求時,服務器端的套接字就會收到OnAccept消息,此消息觸發(fā)網絡回調函數 OnAccept();當服務器接收了連接后,客戶端的套接字就會收到OnConnect消息,此消息觸發(fā)網絡回調函數OnConnect();當有數據傳來時,套接字會收到OnReceive消息,此消息觸發(fā)網絡回調函數OnReceive()。程序員也可以在CAsyncSocket類的派生類中重載以上回調函數,實現特定的功能。
3.3 數據傳輸及服務器功能
服務器與檢測裝置在不同的狀態(tài)下需要傳輸大量的數據,數據所代表的含義也各不相同,例如服務器通過以太網對檢測裝置的操作:簡單的有開始試驗、暫停試驗等,復雜的有設置檢測裝置工作參數、對號設置、讀取失效信息等。因此需要對服務器和檢測裝置傳輸的數據進行嚴格的定義,這里采?。?BR>
Command+Length+Content
Command:通信命令號,Length:文本字節(jié)長度,Content:文本字節(jié)內容。
如果傳輸內容為簡單的控制數據,則文本字節(jié)長度和文本字節(jié)內容都為零,否則應按具體的通信內容進行添加。
服務器內部配置一預先定義的超時時間間隔,這個時間要足夠長,以使檢測裝置能夠作出正常的反應,超時事件將觸發(fā)服務器來處理錯誤。
服務器操作界面的菜單項和檢測裝置基本一致,在文本顯示區(qū)顯示所有建立連接的檢測裝置的試驗狀態(tài)和數據。建立連接后,通過服務器對檢測裝置進行操作和在現場直接操作檢測裝置的效果是一樣的。
4、實驗驗證
為了驗證本方案的可行性,整個檢測系統(tǒng)在宏發(fā)公司進行了長期的運行,通過網絡監(jiān)視軟件的分析,數據傳輸的誤碼率極低,在同一局域網內數據傳輸的往返時間大部分集中在100ms以內,達到了傳輸時間的要求,網絡傳輸中斷的情況基本沒有出現。
因此,本文所提出的基于工業(yè)以太網的繼電器可靠性檢測系統(tǒng)的通信方案,實時性較好,可靠性較高,能夠實現服務器對現場設備的實時數據采集與監(jiān)控的功能,是切實可行的。且其開放性、可操作性也較高能夠適用于很多數據采集與監(jiān)控場合。
繼電器相關文章:繼電器工作原理
時間繼電器相關文章:時間繼電器
評論