基于TCP/IP的遠(yuǎn)程雷達(dá)配電系統(tǒng)
摘要:針對(duì)多臺(tái)雷達(dá)遠(yuǎn)程配電需求,設(shè)計(jì)了一種基于TCP/IP通信協(xié)議和WinSock技術(shù)的系統(tǒng)解決方案,在介紹系統(tǒng)功能和數(shù)據(jù)交換策略的基礎(chǔ)上,給出了以EIO控制模塊為核心的硬件結(jié)構(gòu),并進(jìn)一步詳細(xì)闡述了客戶端與服務(wù)器端面向連接服務(wù)的數(shù)據(jù)交換和監(jiān)控軟件的實(shí)現(xiàn)方法。本系統(tǒng)已在多個(gè)雷達(dá)站投入使用,較好地解決了多臺(tái)雷達(dá)的遠(yuǎn)程配電要求,具有廣泛的應(yīng)用及推廣價(jià)值。
關(guān)鍵詞:雷達(dá);TCP/IP協(xié)議;遠(yuǎn)程配電;EIO控制模塊
0 引言
雷達(dá)通常一般設(shè)置在控制站附近,對(duì)雷達(dá)設(shè)備的配電控制通常是直接操作控制。而當(dāng)各個(gè)雷達(dá)系統(tǒng)設(shè)置分散、距離雷達(dá)控制站達(dá)數(shù)十千米甚至幾百千米,過(guò)去的直接控制方式已經(jīng)不能滿足遠(yuǎn)程控制的需求。某雷達(dá)控制站在高山海島等配置了多套雷達(dá)設(shè)備,地點(diǎn)分散,每套雷達(dá)系統(tǒng)都包括接收、發(fā)射、信號(hào)處理、伺服控制以及空調(diào)等設(shè)備。由于高山海島氣候條件惡劣,設(shè)備無(wú)人值守,日常需要對(duì)各個(gè)雷達(dá)系統(tǒng)及其分系統(tǒng)進(jìn)行配電、電網(wǎng)參數(shù)和環(huán)境進(jìn)行監(jiān)控管理。
基于此本文設(shè)計(jì)了一種以TCP/IP協(xié)議為網(wǎng)絡(luò)基礎(chǔ),采用WinSock技術(shù),實(shí)現(xiàn)對(duì)各個(gè)雷達(dá)進(jìn)行遠(yuǎn)程配電的系統(tǒng)。
1 系統(tǒng)設(shè)計(jì)
本方案采用客戶機(jī)/服務(wù)器(C/S)模式實(shí)現(xiàn)聯(lián)網(wǎng)控制,上位監(jiān)控計(jì)算機(jī)作為客戶端,每個(gè)雷達(dá)設(shè)備配電開(kāi)關(guān)的控制設(shè)備以及傳感器和網(wǎng)絡(luò)遠(yuǎn)程控制模塊連接,網(wǎng)絡(luò)遠(yuǎn)程控制模塊作為服務(wù)器。系統(tǒng)組成如圖1所示。其中每個(gè)服務(wù)器通過(guò)I/O接口和配電開(kāi)關(guān)的控制接口連接,電力監(jiān)控儀和溫濕度傳感器與服務(wù)器的串口連接。
上位監(jiān)控計(jì)算機(jī)主要負(fù)責(zé)讀取服務(wù)器端開(kāi)關(guān)設(shè)備的狀態(tài)和傳感器數(shù)據(jù),以及向服務(wù)器端發(fā)送用戶的操作請(qǐng)求指令數(shù)據(jù)。服務(wù)器端負(fù)責(zé)接收上位機(jī)的數(shù)據(jù),根據(jù)接收數(shù)據(jù)對(duì)配電開(kāi)關(guān)進(jìn)行控制,分時(shí)發(fā)送傳感器瀆數(shù)據(jù)請(qǐng)求,主動(dòng)向連接的客戶端發(fā)送設(shè)備狀態(tài)數(shù)據(jù)。上位監(jiān)控計(jì)算機(jī)與網(wǎng)絡(luò)遠(yuǎn)程控制模塊之間采用標(biāo)準(zhǔn)的TCP/IP通信協(xié)議進(jìn)行通信和數(shù)據(jù)交換。
TCP/IP協(xié)議是目前廣泛采用的一組完整的網(wǎng)絡(luò)協(xié)議。WinSock是當(dāng)前Windows平臺(tái)上網(wǎng)絡(luò)應(yīng)用編程的標(biāo)準(zhǔn)接口,Socket接口是TCP/IP網(wǎng)絡(luò)最為通用的API,也是在Internet上進(jìn)行應(yīng)用開(kāi)發(fā)最為通用的API。實(shí)際上,Socket在計(jì)算機(jī)中提供了一個(gè)通信端口,可以通過(guò)這個(gè)端口與任何一個(gè)具有Socket接口的計(jì)算機(jī)通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收的信息都通過(guò)這個(gè)Socket接口來(lái)實(shí)現(xiàn)。在應(yīng)用開(kāi)發(fā)中就像使用文件句柄一樣可以對(duì)Socket句柄進(jìn)行讀、寫(xiě)操作。Socket是網(wǎng)絡(luò)的I/O基礎(chǔ)。應(yīng)用程序在需要與遠(yuǎn)端主機(jī)連接時(shí),會(huì)創(chuàng)建一個(gè)Socket,之后它就可以通過(guò)該Socket與遠(yuǎn)程應(yīng)用程序建立連接。通過(guò)從Socket中讀取數(shù)據(jù)以及寫(xiě)入數(shù)據(jù)來(lái)與遠(yuǎn)程應(yīng)用通信。也就是本地程序通過(guò)Socket將信息傳入網(wǎng)絡(luò),當(dāng)信息進(jìn)入網(wǎng)絡(luò)后,網(wǎng)絡(luò)協(xié)議會(huì)引導(dǎo)信息通過(guò)網(wǎng)絡(luò)讓遠(yuǎn)端程序訪問(wèn)它。類(lèi)似地遠(yuǎn)端程序也可將信息輸入Socket,信息將從那里通過(guò)網(wǎng)絡(luò)回到本地程序,從而實(shí)現(xiàn)網(wǎng)絡(luò)程序之間的通信。
2 硬件設(shè)計(jì)
系統(tǒng)的雷達(dá)設(shè)備端采用以太網(wǎng)數(shù)字IO(EIO)控制模塊作為服務(wù)器。EIO控制模塊是同時(shí)集成I/O控制和RS 232/RS 485串口服務(wù)器的以太網(wǎng)設(shè)備,具備開(kāi)關(guān)量輸出、開(kāi)關(guān)量采集、串口服務(wù)器等功能,可同時(shí)替代I/O卡和串口服務(wù)器,客戶端監(jiān)控計(jì)算機(jī)按照Socket標(biāo)準(zhǔn),通過(guò)TCP/IP連接與EIO控制模塊進(jìn)行通信。電力監(jiān)控儀以及溫濕度傳感器等設(shè)備和EIO控制模塊通過(guò)串口連接。
2.1 EIO控制模塊
現(xiàn)代數(shù)據(jù)采集領(lǐng)域中,越來(lái)越多的現(xiàn)場(chǎng)采集設(shè)備需要擴(kuò)展網(wǎng)絡(luò)功能以實(shí)現(xiàn)遠(yuǎn)程控制和數(shù)據(jù)傳輸。以太網(wǎng)以其低成本,易于集成,傳輸距離遠(yuǎn)的優(yōu)勢(shì)使其得到了廣泛應(yīng)用。
EIO控制模塊選用芯片W5100作為網(wǎng)絡(luò)控制芯片,該芯片集成了高度成熟的TCP/IP協(xié)議棧、以太網(wǎng)MAC層、PHY層等,支持TCP,UDP,IPV 4,ICMP,ARP和IGMP等協(xié)議,這些協(xié)議已經(jīng)在很多領(lǐng)域經(jīng)過(guò)了多年的驗(yàn)證。同時(shí)它支持4個(gè)獨(dú)立的Socket通信,內(nèi)部1 6 KB的發(fā)送/接收緩沖區(qū)可快速進(jìn)行數(shù)據(jù)交換,最大有效通信速率可達(dá)25 Mb/s。使用W5100不需要考慮以太網(wǎng)的控制,只需要進(jìn)行簡(jiǎn)單的端口Socket編程,像訪問(wèn)外部存儲(chǔ)器一樣簡(jiǎn)單。它提供兩種并行總線接口(直接總線與間接總線)以及串行SPI接口。W5100大大減少了硬件接口設(shè)計(jì)和網(wǎng)絡(luò)編程的工作量,并且可以實(shí)現(xiàn)可靠穩(wěn)定運(yùn)行的遠(yuǎn)程數(shù)據(jù)通信系統(tǒng)。
EIO控制模塊包括以下資源:
(1)輸入:提供32路開(kāi)關(guān)量輸入(光電隔離);
(2)輸出:提供16路繼電器開(kāi)關(guān)量輸出;
(3)控制通信:以太網(wǎng)TCP/IP或RS 485,RS 232;
(4)UART轉(zhuǎn)TCP/IP:1路RS 485轉(zhuǎn)TOP/IP等功能。
EIO控制模塊結(jié)構(gòu)系統(tǒng)框圖如圖2所示。通過(guò)單片CPU的串口協(xié)議轉(zhuǎn)換后,EIO控制模塊可以實(shí)現(xiàn)串口服務(wù)器功能,串口服務(wù)器是將來(lái)自TCP/IP協(xié)議的數(shù)據(jù)包,解析為串口數(shù)據(jù)流;反之,也可以將串口數(shù)據(jù)流打包成TCP/IP協(xié)議的數(shù)據(jù)包,從而實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)傳輸。
EIO控制模塊上電之初需要對(duì)內(nèi)部器件進(jìn)行初始化操作,當(dāng)然需要對(duì)網(wǎng)絡(luò)芯片進(jìn)行初始化,包括設(shè)置本機(jī)IP地址、子網(wǎng)掩碼,發(fā)送緩沖區(qū)和接收緩沖區(qū)的大小設(shè)置等,然后設(shè)置Socket工作模式,具體如下:
(1)初始化芯片,在W5100內(nèi)部寄存器中設(shè)置MAC地址、IP地址、子網(wǎng)掩碼和網(wǎng)關(guān)等;
(2)建立Socket連接,可以設(shè)置為Server方式或者Client方式;
(3)建立1個(gè)TCP連接,或者UDP連接;
(4)通過(guò)TCP Socket接收和發(fā)送數(shù)據(jù);
(5)關(guān)閉Socket。
2.2 配電開(kāi)關(guān)與傳感器
選擇可以通過(guò)開(kāi)關(guān)量進(jìn)行控制,同時(shí)可以提供狀態(tài)指示的開(kāi)關(guān)作為被控設(shè)備配電開(kāi)關(guān)。
主進(jìn)線開(kāi)關(guān)選用施耐德Compact NS100塑殼斷路器,該開(kāi)關(guān)為模塊化設(shè)計(jì),提供可靠的觸頭指示,具有隔離功能,符合IEC60947-1,2標(biāo)準(zhǔn)。配有電動(dòng)操作機(jī)構(gòu),可自動(dòng)化進(jìn)行開(kāi)合閘控制。它具有過(guò)載保護(hù)、短路保護(hù)、接地保護(hù)等保護(hù)功能。裝有輔助觸頭模塊,可提供以O(shè)F(指示斷路器的觸頭位置)、SD(脫扣指示)、SDE(故障顯示)等。
各支路開(kāi)關(guān)選用施耐德Multi9系列C65N型小型斷路器,它具有短路保護(hù)及過(guò)載保護(hù)功能。裝配有OF狀態(tài)指示接點(diǎn)和SD報(bào)警接點(diǎn),可為系統(tǒng)提供開(kāi)關(guān)狀態(tài)指示及報(bào)警指示。配有遠(yuǎn)動(dòng)控制附件Tm,Tm遠(yuǎn)動(dòng)控制附件通過(guò)控制指令可實(shí)現(xiàn)對(duì)負(fù)載的通斷控制。
采用維博公司生產(chǎn)的WB51GR01智能電量傳感器對(duì)供電系統(tǒng)電力參數(shù)進(jìn)行監(jiān)測(cè),以及選用WB43RS智能溫適度傳感器對(duì)環(huán)境溫度和濕度進(jìn)行監(jiān)測(cè),電力監(jiān)控儀和溫濕度傳感器都采用工業(yè)標(biāo)準(zhǔn)的RS 485通信接口和MODBUS通信協(xié)議。
3 軟件設(shè)計(jì)
監(jiān)控計(jì)算機(jī)(客戶端)和遠(yuǎn)程EIO控制模塊(服務(wù)端)之間采用計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信,具有通信可靠和速度快(10 Mb/s以上)的優(yōu)點(diǎn)。
EIO控制模塊的軟件采用C51編程語(yǔ)言進(jìn)行編寫(xiě),主要負(fù)責(zé)處理網(wǎng)絡(luò)協(xié)議芯片參數(shù)的配置,處理串口數(shù)據(jù)和網(wǎng)絡(luò)報(bào)文數(shù)據(jù)的轉(zhuǎn)換,以及IO控制請(qǐng)求報(bào)文數(shù)據(jù)的轉(zhuǎn)換和控制等,程序固化在單片CPU中。把IO端口和串口的控制設(shè)為兩個(gè)Socket端口,端口號(hào)分別為5100和6020,其中IO端口數(shù)據(jù)發(fā)生變化時(shí)主動(dòng)向連接的客戶端發(fā)送報(bào)文,正常情況下定時(shí)發(fā)送IO狀態(tài)報(bào)文。串口端口接收到客戶端請(qǐng)求后,在串口得到響應(yīng)后發(fā)送報(bào)文。
監(jiān)控計(jì)算機(jī)控制軟件在Windows XP環(huán)境下采用Visual C++6.0工具進(jìn)行編寫(xiě)。Winsocket為Windows下網(wǎng)絡(luò)異步通信提供了一種方便開(kāi)發(fā)和運(yùn)行的環(huán)境,網(wǎng)絡(luò)應(yīng)用程序不直接與TCP/IP核心打交道,而與網(wǎng)絡(luò)應(yīng)用編程界面Socket打交道。CAsyncsocket類(lèi)是CObject類(lèi)的派生類(lèi),封裝了Windows套接字API函數(shù)。它被集成在MFC類(lèi)庫(kù)中,從而將面向?qū)ο蟮姆椒ㄅcWindows套接字聯(lián)系在一起。在本程序中,使用的是CSocket類(lèi)。CSocket類(lèi)是CAsyncsocket類(lèi)的派生類(lèi),與CAsyncsocket類(lèi)相比,CSocket類(lèi)提供了更高層次的套接字支持。也就是說(shuō),使用CSocket類(lèi)可以忽略網(wǎng)絡(luò)通信中的細(xì)節(jié),比如創(chuàng)建窗口、消息發(fā)送和消息綁定等。使用CSocket類(lèi)實(shí)現(xiàn)網(wǎng)絡(luò)間數(shù)據(jù)的發(fā)送和接收,沒(méi)有使用傳統(tǒng)的send與recv函數(shù),而是使用CSocket類(lèi)、CSocketFiIe類(lèi)與CA rchive類(lèi)協(xié)同工作,實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收。
在遠(yuǎn)程網(wǎng)絡(luò)通信模塊中,按照Client/Server模式采用面向連接的服務(wù),其套接字調(diào)用順序如圖3所示。
不管在客戶端還是服務(wù)器端,發(fā)送數(shù)據(jù)都是主動(dòng)的,而接收數(shù)據(jù)都是被動(dòng)的。服務(wù)器創(chuàng)建一個(gè)監(jiān)聽(tīng)線程,隨時(shí)監(jiān)聽(tīng)是否有客戶的連接要求,并決定是否要響應(yīng)該請(qǐng)求,如響應(yīng),則建立Socket來(lái)處理客戶的數(shù)據(jù)通信請(qǐng)求,客戶端也相應(yīng)建立Socket來(lái)接收服務(wù)器傳來(lái)的數(shù)據(jù)。作為客戶端需要處理的網(wǎng)絡(luò)事件有:FD_CONNECT.FD_CLOSE,F(xiàn)D_READ,F(xiàn)D_WRITE。在客戶端應(yīng)用程序中自定義CMySocket類(lèi),根據(jù)用戶對(duì)控制站點(diǎn)的需要,建立CMySocket對(duì)象,用于發(fā)送和接收數(shù)據(jù)。監(jiān)控計(jì)算機(jī)建立數(shù)據(jù)庫(kù),提供系統(tǒng)日記數(shù)據(jù)記錄功能。監(jiān)控計(jì)算機(jī)(客戶端)軟件設(shè)計(jì)流程如圖4所示,通過(guò)編寫(xiě)開(kāi)關(guān)、儀表等控件,優(yōu)化軟件界面設(shè)計(jì),監(jiān)控計(jì)算機(jī)軟件設(shè)計(jì)界面如圖5所示。
4 結(jié)語(yǔ)
隨著現(xiàn)代雷達(dá)對(duì)遠(yuǎn)端設(shè)備無(wú)人值守、智能化功能要求的不斷提高,以及車(chē)載雷達(dá)系統(tǒng)高機(jī)動(dòng)性的需求,對(duì)雷達(dá)整機(jī)的重要組成部分配電系統(tǒng)的設(shè)計(jì)也帶來(lái)了數(shù)字化、智能化、網(wǎng)絡(luò)化的更高要求。本文設(shè)計(jì)的應(yīng)用系統(tǒng),在監(jiān)控計(jì)算機(jī)和各個(gè)雷達(dá)站點(diǎn)的EIO控制模塊之間采用標(biāo)準(zhǔn)的TCP/IP通信協(xié)議,針對(duì)客戶機(jī)/服務(wù)器模式,將Windows Socket編程技術(shù)應(yīng)用于站間通信,給出了系統(tǒng)總體設(shè)計(jì)方案及軟件設(shè)計(jì),實(shí)現(xiàn)了多臺(tái)雷達(dá)的遠(yuǎn)程配電,為類(lèi)似的遠(yuǎn)程控制方案設(shè)計(jì)提供了一個(gè)借鑒。本文設(shè)計(jì)的遠(yuǎn)程配電系統(tǒng)已在多個(gè)雷達(dá)站投入使用,實(shí)際使用結(jié)果表明:本系統(tǒng)具有運(yùn)行穩(wěn)定,數(shù)據(jù)傳輸高效、可靠,界面美觀,人機(jī)對(duì)話友善、擴(kuò)展性好等優(yōu)點(diǎn)。