- 可靠性檢測(cè)裝置的實(shí)現(xiàn)方法和功能
- 集中控制的實(shí)現(xiàn)
- 實(shí)時(shí)檢測(cè)與處理程序
- 接收服務(wù)器的參數(shù)設(shè)置、基本操作,并上傳試驗(yàn)狀態(tài)及失效信息
本文所提出的繼電器可靠性檢測(cè)系統(tǒng)由服務(wù)器和多臺(tái)可靠性檢測(cè)裝置(客戶端)組成,可靠性檢測(cè)裝置是進(jìn)行可靠性試驗(yàn)的必要手段。服務(wù)器和可靠性檢測(cè)裝置通過(guò)調(diào)用TCP協(xié)議提供的套接字傳送數(shù)據(jù),實(shí)現(xiàn)了服務(wù)器對(duì)多臺(tái)檢測(cè)裝置的實(shí)時(shí)集中檢測(cè)和控制,在節(jié)省人力的同時(shí)有利于失效試驗(yàn)數(shù)據(jù)的分析和處理。
可靠性檢測(cè)裝置的實(shí)現(xiàn)方法和功能
檢測(cè)裝置主要完成繼電器試品的定數(shù)截尾試驗(yàn),記錄失效信息,對(duì)檢測(cè)結(jié)果進(jìn)行分析[2]。通過(guò)與服務(wù)器建立連接,實(shí)時(shí)上傳當(dāng)前試驗(yàn)狀態(tài)以及失效信息,并接收服務(wù)器的控制命令。
1實(shí)現(xiàn)方法
為了滿足試驗(yàn)環(huán)境的需要,采用工業(yè)控制計(jì)算機(jī)作為檢測(cè)裝置的核心。對(duì)觸點(diǎn)電壓的采集則選用兩塊高性能數(shù)據(jù)采集卡來(lái)實(shí)現(xiàn),可同時(shí)對(duì)兩組共32對(duì)觸點(diǎn)進(jìn)行檢測(cè),兩組試品可以是不同型號(hào)不同廠商的繼電器,而且對(duì)檢測(cè)觸點(diǎn)的常開(kāi)常閉不做限制。
需要注意的是,當(dāng)觸點(diǎn)電壓為交流信號(hào)時(shí),為了保證電壓有效值的計(jì)算精度,采集卡在一個(gè)工頻周期內(nèi)要完成16個(gè)采集通道至少320次的AD轉(zhuǎn)換,這就要求采集卡的采集速率非???,本裝置采用的是研華的PCL-818HG。每塊采集卡還提供了一個(gè)20-PIN數(shù)字輸出口,用來(lái)控制試品線圈回路的通斷電。試品觸點(diǎn)回路采用一塊多通道的數(shù)字量輸出卡,通過(guò)固態(tài)繼電器實(shí)現(xiàn)對(duì)兩組試品觸點(diǎn)回路的通斷電控制。繼電器可靠性檢測(cè)裝置的結(jié)構(gòu)框圖如圖1所示。
圖1可靠性檢測(cè)裝置結(jié)構(gòu)圖
如果某個(gè)試品的全部觸點(diǎn)均達(dá)到了最大允許失效次數(shù),那么在接下來(lái)的試驗(yàn)中此試品要被剔除,不再進(jìn)行試品線圈回路和觸點(diǎn)回路的通斷電操作,避免故障試品因長(zhǎng)時(shí)間通電而發(fā)生危險(xiǎn)[3]。
2實(shí)現(xiàn)功能
檢測(cè)裝置的軟件由兩大部分組成:
一是實(shí)時(shí)檢測(cè)與處理程序,包括了試驗(yàn)參數(shù)的設(shè)置,對(duì)試驗(yàn)狀態(tài)以及失效數(shù)據(jù)的保存,對(duì)失效數(shù)據(jù)進(jìn)行數(shù)學(xué)分析,打印報(bào)表等,檢測(cè)裝置記錄的失效數(shù)據(jù)有失效時(shí)間,失效試品號(hào)、觸點(diǎn)號(hào),觸點(diǎn)失效的類型,失效時(shí)觸點(diǎn)電壓以及各觸點(diǎn)累計(jì)失效次數(shù)等;
二是通訊程序,接收服務(wù)器的參數(shù)設(shè)置、基本操作,并上傳試驗(yàn)狀態(tài)及失效信息。圖2為檢測(cè)裝置的操作界面,菜單項(xiàng)代表了所能實(shí)現(xiàn)的所有操作,文本顯示區(qū)對(duì)設(shè)置參數(shù)、試驗(yàn)狀態(tài)以及失效發(fā)生時(shí)的失效信息進(jìn)行顯示。軟件采用可視化編程語(yǔ)言VC++6.0嵌入?yún)R編語(yǔ)言的方法實(shí)現(xiàn)[4]。
圖2檢測(cè)裝置操作界面
集中控制的實(shí)現(xiàn)
以太網(wǎng)只定義了物理層和鏈路層,但目前在傳輸層和網(wǎng)絡(luò)層已基本上統(tǒng)一,TCP/IP協(xié)議被普遍采用。傳輸層協(xié)議包括UDP協(xié)議和TCP協(xié)議。無(wú)論是基于UDP協(xié)議或者TCP協(xié)議,都要保證網(wǎng)絡(luò)傳輸?shù)囊欢ǖ目煽啃院蛯?shí)時(shí)性。由于UDP協(xié)議具有實(shí)現(xiàn)機(jī)制簡(jiǎn)單、傳輸效率高的特點(diǎn),其較多地被應(yīng)用到高效率的實(shí)時(shí)系統(tǒng)中。但為了實(shí)現(xiàn)傳輸?shù)目煽啃裕托枰趹?yīng)用層采用一些差錯(cuò)控制機(jī)制,而這些措施與TCP協(xié)議中自帶的傳輸機(jī)制非常相似。
實(shí)際上,在許多實(shí)時(shí)性的系統(tǒng)中,采用TCP協(xié)議也基本可以滿足傳輸時(shí)間的要求,還避免了在應(yīng)用層進(jìn)行繁瑣的處理[5]。因此在本方案中傳輸層選擇使用TCP協(xié)議。
應(yīng)用層的協(xié)議目前還沒(méi)有統(tǒng)一,本文旨在研究一個(gè)可廣泛適用于多種應(yīng)用場(chǎng)合和多種應(yīng)用層協(xié)議的通用的通信方案,用戶可根據(jù)需要選擇不同的應(yīng)用層協(xié)議,也可以定義自己的數(shù)據(jù)包格式。
[page]
1套接字(Socket)
TCP/IP網(wǎng)絡(luò)環(huán)境下的應(yīng)用程序是通過(guò)網(wǎng)絡(luò)系統(tǒng)編程界面套接字Socket(在Windows操作系統(tǒng)下稱之為Winsock)來(lái)實(shí)現(xiàn)的。套接字構(gòu)成了核心協(xié)議的用戶視圖,通過(guò)套接字應(yīng)用程序可訪問(wèn)通信協(xié)議,套接字是網(wǎng)絡(luò)通信的基本構(gòu)件。套接字是可以被命名的通信端點(diǎn),應(yīng)用程序通過(guò)它在網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù)。每個(gè)套接字都有其類型,并有一個(gè)與之相連的進(jìn)程。
TCP/IP提供3種類型套接字:
1)流式套接字(StreamScoket)。該接口提供一個(gè)面向連接、可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無(wú)差錯(cuò)、無(wú)重復(fù)地發(fā)送,且按發(fā)送順序接收。內(nèi)設(shè)流量控制,避免數(shù)據(jù)流超限;數(shù)據(jù)被看作字節(jié)流,無(wú)長(zhǎng)度限制。流式套接字提供了一種可靠的面向連接的數(shù)據(jù)傳輸方式,如果想發(fā)送大批量數(shù)據(jù)或想讓數(shù)據(jù)按順序無(wú)重復(fù)地到達(dá)目的地,流式套接字最為有用。
2)數(shù)據(jù)包套接字(DatagramScoket)。該接口提供一個(gè)無(wú)連接服務(wù)。數(shù)據(jù)包以獨(dú)立包形式被發(fā)送,不提供無(wú)錯(cuò)保證,數(shù)據(jù)可能丟失或重復(fù),并且接收順序混亂。數(shù)據(jù)包套接字比較適用于數(shù)據(jù)包或記錄型數(shù)據(jù)的傳輸,數(shù)據(jù)包的發(fā)送不能得到保證,而且不能排序到達(dá)。
3)原始套接字(RawScoket)。該接口允許對(duì)較低層協(xié)議,如IP、ICMP直接訪問(wèn),主要用于新的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)的測(cè)試等[6]。
在進(jìn)行網(wǎng)絡(luò)開(kāi)發(fā)時(shí),阻塞問(wèn)題是網(wǎng)絡(luò)編程中十分重要的問(wèn)題。由于在阻塞模式下,在I/O操作完成前,執(zhí)行操作的Winsock函數(shù)會(huì)一直等待下去,不會(huì)立即返回程序(將控制權(quán)交還給程序)。故用這種方式,服務(wù)器應(yīng)用程序?qū)⒑茈y同時(shí)通過(guò)多個(gè)建好連接的套接字進(jìn)行通信。在此系統(tǒng)的應(yīng)用中,需要實(shí)現(xiàn)一臺(tái)服務(wù)器同時(shí)和六個(gè)套接字進(jìn)行通信,因此結(jié)合對(duì)有限硬件資源的考慮,選擇了非阻塞類型的套接字,這也是一般協(xié)議開(kāi)發(fā)中通常用到的套接字通信方式。
2通信的實(shí)現(xiàn)
系統(tǒng)通信采用客戶機(jī)/服務(wù)器模式,利用VC的微軟基礎(chǔ)類(MFC)進(jìn)行網(wǎng)絡(luò)開(kāi)發(fā),MFC提供了兩種類型描述WindowsSocket,分別是CAsynSocket和CSocket。其中CAsynSocket類封裝了WindowsSocketsAPI,并將與Socket有關(guān)的Windows消息轉(zhuǎn)換為回調(diào)函數(shù)。CAsynSocket處于網(wǎng)絡(luò)更底層,其使用就更具靈活性,相應(yīng)要求編程者應(yīng)熟悉網(wǎng)絡(luò)底層細(xì)節(jié)。而CSocket類是CAsynSocket類的派生類,通過(guò)MFC中的CArchive類的對(duì)象提供了更高層次的抽象,它封裝了Socket實(shí)現(xiàn)中的許多細(xì)節(jié)。這里我們采用CAsynSocket類實(shí)現(xiàn)系統(tǒng)中“一對(duì)多”的數(shù)據(jù)發(fā)送,通過(guò)在服務(wù)器中建立Winsock空間數(shù)組的方式來(lái)解決[7]。
首先,構(gòu)造CAsyncSocket類型的對(duì)象,然后利用該對(duì)象創(chuàng)建內(nèi)嵌的Socket句柄。例如:
CAsyncSocketm_listen;
m_listen.Create(nPort);//服務(wù)器指定端口
若是客戶端,需要用CAsyncSocket::Connect()函數(shù)連接服務(wù)器端的套接字。其次,若是服務(wù)器端的套接字,創(chuàng)建完成就可以偵聽(tīng)端口,以便接收試圖連接到此端口的客戶端的套接字。接收了一個(gè)連接請(qǐng)求后就可以進(jìn)行口令驗(yàn)證或直接建立連接等工作。服務(wù)器偵聽(tīng)的函數(shù)是CAsyncSocket::Listen(),接收客戶端套接字的函數(shù)是CAsyncSocket::Accept()。
繼而采用CAsyncSocket類的成員函數(shù)進(jìn)行數(shù)據(jù)的收發(fā)。發(fā)送的函數(shù)是CAsyncSocket::send(),接收的函數(shù)是CAsyncSocket::Receive()。
最后,通信結(jié)束后,通過(guò)CAsyncSocket::Close()函數(shù)銷毀對(duì)象。服務(wù)器與檢測(cè)裝置的通訊流程見(jiàn)圖3。
圖3服務(wù)器與檢測(cè)裝置通信流程圖
CAsyncSocket類對(duì)網(wǎng)絡(luò)回調(diào)函數(shù)做了較好的封裝。當(dāng)有連接請(qǐng)求時(shí),服務(wù)器端的套接字就會(huì)收到OnAccept消息,此消息觸發(fā)網(wǎng)絡(luò)回調(diào)函數(shù)OnAccept();當(dāng)服務(wù)器接收了連接后,客戶端的套接字就會(huì)收到OnConnect消息,此消息觸發(fā)網(wǎng)絡(luò)回調(diào)函數(shù)OnConnect();當(dāng)有數(shù)據(jù)傳來(lái)時(shí),套接字會(huì)收到OnReceive消息,此消息觸發(fā)網(wǎng)絡(luò)回調(diào)函數(shù)OnReceive()。程序員也可以在CAsyncSocket類的派生類中重載以上回調(diào)函數(shù),實(shí)現(xiàn)特定的功能。
3數(shù)據(jù)傳輸及服務(wù)器功能
服務(wù)器與檢測(cè)裝置在不同的狀態(tài)下需要傳輸大量的數(shù)據(jù),數(shù)據(jù)所代表的含義也各不相同,例如服務(wù)器通過(guò)以太網(wǎng)對(duì)檢測(cè)裝置的操作:簡(jiǎn)單的有開(kāi)始試驗(yàn)、暫停試驗(yàn)等,復(fù)雜的有設(shè)置檢測(cè)裝置工作參數(shù)、對(duì)號(hào)設(shè)置、讀取失效信息等。因此需要對(duì)服務(wù)器和檢測(cè)裝置傳輸?shù)臄?shù)據(jù)進(jìn)行嚴(yán)格的定義,這里采?。?br /> Command+Length+Content
Command:通信命令號(hào),Length:文本字節(jié)長(zhǎng)度,Content:文本字節(jié)內(nèi)容。
如果傳輸內(nèi)容為簡(jiǎn)單的控制數(shù)據(jù),則文本字節(jié)長(zhǎng)度和文本字節(jié)內(nèi)容都為零,否則應(yīng)按具體的通信內(nèi)容進(jìn)行添加。
服務(wù)器內(nèi)部配置一預(yù)先定義的超時(shí)時(shí)間間隔,這個(gè)時(shí)間要足夠長(zhǎng),以使檢測(cè)裝置能夠作出正常的反應(yīng),超時(shí)事件將觸發(fā)服務(wù)器來(lái)處理錯(cuò)誤。
服務(wù)器操作界面的菜單項(xiàng)和檢測(cè)裝置基本一致,在文本顯示區(qū)顯示所有建立連接的檢測(cè)裝置的試驗(yàn)狀態(tài)和數(shù)據(jù)。建立連接后,通過(guò)服務(wù)器對(duì)檢測(cè)裝置進(jìn)行操作和在現(xiàn)場(chǎng)直接操作檢測(cè)裝置的效果是一樣的。
為了驗(yàn)證本方案的可行性,整個(gè)檢測(cè)系統(tǒng)在宏發(fā)公司進(jìn)行了長(zhǎng)期的運(yùn)行,通過(guò)網(wǎng)絡(luò)監(jiān)視軟件的分析,數(shù)據(jù)傳輸?shù)恼`碼率極低,在同一局域網(wǎng)內(nèi)數(shù)據(jù)傳輸?shù)耐禃r(shí)間大部分集中在100ms以內(nèi),達(dá)到了傳輸時(shí)間的要求,網(wǎng)絡(luò)傳輸中斷的情況基本沒(méi)有出現(xiàn)。
因此,本文所提出的基于以太網(wǎng)的繼電器可靠性檢測(cè)系統(tǒng)的通信方案,實(shí)時(shí)性較好,可靠性較高,能夠?qū)崿F(xiàn)服務(wù)器對(duì)現(xiàn)場(chǎng)設(shè)備的實(shí)時(shí)數(shù)據(jù)采集與監(jiān)控的功能,是切實(shí)可行的。且其開(kāi)放性、可操作性也較高能夠適用于很多數(shù)據(jù)采集與監(jiān)控場(chǎng)合。