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

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