李木國(guó),吳鎮(zhèn)曦,褚曉安
(大連理工大學(xué)海岸與近海工程國(guó)家重點(diǎn)實(shí)驗(yàn)室,遼寧大連 116024)
隨著WiFi無(wú)線通信技術(shù)的不斷發(fā)展與進(jìn)步,使用不斷普及,以其傳輸可靠性強(qiáng)、速率高、傳輸距離遠(yuǎn)和組網(wǎng)靈活等優(yōu)點(diǎn)[1],使得WiFi的應(yīng)用技術(shù)已經(jīng)滲透到了工業(yè)控制領(lǐng)域。WiFi的通信距離最高可以達(dá)到300米,如果使用天線技術(shù)可以達(dá)到1 000米。
WiFi技術(shù)一般采用的是 2.4 GHz的頻段,基于IEEE802.11標(biāo)準(zhǔn)。
在當(dāng)今的工業(yè)現(xiàn)場(chǎng)中,數(shù)據(jù)采集量與傳輸數(shù)據(jù)較多,對(duì)傳輸速率和距離有一定的要求,相比于紅外傳輸、藍(lán)牙技術(shù)、ZigBee技術(shù),WiFi無(wú)線通信技術(shù)擁有其獨(dú)特的優(yōu)點(diǎn),可以很好的滿足某些系統(tǒng)設(shè)計(jì)的要求。如今,現(xiàn)代測(cè)控系統(tǒng)的發(fā)展趨勢(shì)是將無(wú)線網(wǎng)絡(luò)技術(shù)盡可能取代傳統(tǒng)有線網(wǎng)絡(luò)技術(shù),這也推動(dòng)了物聯(lián)網(wǎng)技術(shù)在工業(yè)監(jiān)控領(lǐng)域的發(fā)展。
傳統(tǒng)的現(xiàn)場(chǎng)總線技術(shù)由于現(xiàn)場(chǎng)布線繁雜、硬件成本較高、組網(wǎng)不易施工等缺點(diǎn)。針對(duì)這些問(wèn)題,本文提出了一種基于WiFi的無(wú)線浪高采集系統(tǒng)。該系統(tǒng)利用單片機(jī)作為從站的處理核心,再結(jié)合TCP/IP技術(shù)將數(shù)據(jù)經(jīng)WiFi無(wú)線網(wǎng)絡(luò)發(fā)送到系統(tǒng)主站,在系統(tǒng)主站軟件當(dāng)中動(dòng)態(tài)顯示和分析數(shù)據(jù),具有一定的應(yīng)用價(jià)值。
基于WiFi的無(wú)線浪高數(shù)據(jù)采集系統(tǒng)的總體框架圖如圖1所示。一臺(tái)主站PC機(jī),處理無(wú)線模塊的數(shù)據(jù)信號(hào);多個(gè)下位機(jī),每個(gè)下位機(jī)的浪高傳感器連接相應(yīng)的無(wú)線WiFi模塊和存儲(chǔ)芯片。系統(tǒng)總體結(jié)構(gòu)當(dāng)中需要配置無(wú)線路由器或者無(wú)線AP站點(diǎn),作為無(wú)線接入點(diǎn)。在系統(tǒng)上位機(jī)與下位機(jī)之間使用Socket技術(shù)和TCP/IP協(xié)議來(lái)實(shí)現(xiàn)無(wú)線數(shù)據(jù)的傳輸。系統(tǒng)上位機(jī)與下位機(jī)之間構(gòu)成C/S結(jié)構(gòu),上位機(jī)作為服務(wù)器端處理作為客戶端的下位機(jī)傳來(lái)的數(shù)據(jù)。在實(shí)際應(yīng)用中,由于單個(gè)試驗(yàn)需要多只波浪傳感器,這給實(shí)時(shí)無(wú)線數(shù)據(jù)傳輸造成較大的壓力,為了保證數(shù)據(jù)準(zhǔn)確可靠傳輸,當(dāng)實(shí)時(shí)采集數(shù)據(jù)時(shí),指定一臺(tái)下位機(jī)反饋數(shù)據(jù),其他下位機(jī)把采集的數(shù)據(jù)保存到存儲(chǔ)芯片中。試驗(yàn)完成后,上位機(jī)作為服務(wù)端同時(shí)處理多個(gè)下位機(jī) (客戶端)存儲(chǔ)芯片中的數(shù)據(jù)[2]。
圖1 系統(tǒng)總體框架圖
下位機(jī)硬件電路結(jié)構(gòu)示意圖如圖2所示。首先,各個(gè)下位機(jī)接收來(lái)自與自己相連的浪高傳感器的電壓信號(hào)。浪高傳感器得到的電壓信號(hào)是非常微弱而且不斷變化的模擬量,還經(jīng)常伴隨著一定的干擾。為了使得到的電壓模擬信號(hào)達(dá)到AD轉(zhuǎn)換器的滿量程,要將得到的電壓模擬信號(hào)進(jìn)行偏置放大和低通濾波處理。運(yùn)算放大器和低通濾波器選用美國(guó)AD公司的AD8512芯片,它是一款單片集成及雙運(yùn)放的芯片,具有超低失調(diào)、零漂移、超低偏置電流的特性。它的一個(gè)運(yùn)算放大器被設(shè)計(jì)成電壓偏置放大電路,另一個(gè)運(yùn)算放大器被設(shè)計(jì)成二階低通濾波電路。
經(jīng)過(guò)電壓偏置、放大、低通濾波處理之后的信號(hào)經(jīng)過(guò)PIC24單片機(jī)內(nèi)部自帶的10位高速A/D轉(zhuǎn)換器完成模擬信號(hào)的采集,然后把采集的數(shù)據(jù)通過(guò)SPI1模塊傳送給存儲(chǔ)芯片[3]。當(dāng)上位機(jī)通過(guò)無(wú)線模塊向指定的單片機(jī)發(fā)送中斷請(qǐng)求時(shí),PIC24單片機(jī)響應(yīng)此中斷,此時(shí)單片機(jī)開始讀取數(shù)據(jù),將轉(zhuǎn)換好的數(shù)字量通過(guò)無(wú)線WiFi模塊的串口自動(dòng)成幀并進(jìn)行協(xié)議轉(zhuǎn)換,然后通過(guò)SPI2模塊向上位機(jī)發(fā)送數(shù)據(jù)。
考慮到開發(fā)成本和效率,選擇了美國(guó)Microchip公司的PIC單片機(jī),型號(hào)為PIC24FJ256GA106。PIC24系列單片機(jī)精簡(jiǎn)指令集RICS、哈佛雙總線和兩級(jí)指令流水結(jié)構(gòu)。它具有速度快、功耗低、工作電壓低等特點(diǎn)。PIC24單片機(jī)作為WiFi模塊的控制器,一方面通過(guò)SPI總線控制存儲(chǔ)芯片,另一方面需要把轉(zhuǎn)換之后的10位數(shù)字量通過(guò)WiFi模塊傳送給主機(jī)。無(wú)線WiFi模塊和上位機(jī)服務(wù)器之間通過(guò)TCP協(xié)議進(jìn)行傳輸。TCP協(xié)議又稱為傳輸控制協(xié)議,使用三次握手建立連接,保證數(shù)據(jù)傳輸?shù)目煽啃院屯暾浴?/p>
WiFi模塊要在使用之前,設(shè)定模塊協(xié)議類型、服務(wù)器地址、端口號(hào)、波特率,保證每一個(gè)WiFi模塊都可以可靠地與固定IP地址的上位機(jī)相連接。上位機(jī)系統(tǒng)通過(guò)TCP/IP的方式接收無(wú)線模塊發(fā)送來(lái)的浪高。數(shù)據(jù)[4]。
圖2 下位機(jī)硬件電路結(jié)構(gòu)示意圖
整個(gè)硬件電路中需要+3.3 V以及±5 V的電源,由于下位機(jī)硬件電路采用電池供電,考慮到電池的電量消耗,選擇使用+12 V的電源供電[5]。每一個(gè)從站都需要一個(gè)電源,在從站中首先使用穩(wěn)壓芯片L5973D將+12 V轉(zhuǎn)換成+5 V,在使用穩(wěn)壓芯片AS1117-3.3將+5 V轉(zhuǎn)換成+3.3 V,同時(shí)還要使用電荷泵反相器CAT600將+5 V轉(zhuǎn)換成-5 V。
系統(tǒng)從站硬件主要包括3個(gè)功能模塊,分別為電容式浪高傳感器、無(wú)線WiFi模塊和存儲(chǔ)模塊電路。
電容式浪高傳感器其結(jié)構(gòu)圖,如圖3所示主要由一根漆包線和一個(gè)弓形的鋼片組成,在弓形鋼片上還需要預(yù)留下接線座和安裝孔[6]。其中漆包線的直徑為1 mm,長(zhǎng)為0.5 m,與弓形的鋼片構(gòu)成一個(gè)電容器,其電容大小為:
其中:Cx為電容器電容量,ε為電容介電常數(shù),S為漆包線右半部外表面積,d為漆包線與鋼片間的距離。
圖3 電容式浪高傳感器結(jié)構(gòu)圖
如果將傳感器的一部分沒(méi)入水中,此時(shí)傳感器的電容大小就變成了兩個(gè)不同介質(zhì)系數(shù)的電容并聯(lián)之后的值,即:
S1為沒(méi)入水中漆包線右半部分外表面積,S2為水面上段漆包線右半部分外表面積,ε1為水的介電常數(shù),ε2為空氣介電常數(shù)。由于ε1遠(yuǎn)大于ε2,所以公式 (2)中的第二項(xiàng)可以忽略,則可以寫成:
O為漆包線的直徑,Hx為浪高傳感器浸入水中的長(zhǎng)度,對(duì)于浪高傳感器來(lái)說(shuō)K為常數(shù),所以浪高傳感器的電容大小與沒(méi)入水中的傳感器長(zhǎng)度是成正比的。當(dāng)浪高發(fā)生變化的時(shí)候就會(huì)引起電容傳感器沒(méi)入水中長(zhǎng)度的變化,從而也導(dǎo)致了電容式浪高傳感器電容大小的變化。
無(wú)線WiFi模塊選用紅心物聯(lián)HX-M02 WiFi無(wú)線透?jìng)髂K,內(nèi)置無(wú)線網(wǎng)絡(luò)協(xié)議IEEE802.11協(xié)議棧以及TCP/IP協(xié)議棧。其尺寸大小為37×23 mm。工作電壓為3.3 V±0.3,工作電流為170 mA接口速率為1200`460800 bps。
微處理器和WiFi模塊都支持UART和SPI通信總線。UART是異步收發(fā)傳輸,是一種串行數(shù)據(jù)總線。SPI是一種高速的,全雙工同步的通信總線[7]。
如表1所示,SPI通信速率快于UART,而且可以實(shí)現(xiàn)全雙工的發(fā)送與接收,所以選用SPI接口作為微處理器與無(wú)線WiFi模塊的通信接口。
表1 通信速率對(duì)比
WiFi模塊采用SPI串行數(shù)據(jù)接口,通訊速率可達(dá)44 KBytes,可以大大的提高傳輸?shù)臄?shù)據(jù)量。由于PIC單片機(jī)與WiFi模塊之間存在雙向的數(shù)據(jù)通信,所以這里采用三線制的SPI通信模式實(shí)現(xiàn)WiFi無(wú)線模塊與PIC單片機(jī)過(guò)程數(shù)據(jù)通信。PIC單片機(jī)作為SPI主機(jī)使用第二個(gè)SPI模塊與無(wú)線模塊相連,而無(wú)線模塊作為從機(jī)[8]。PIC單片機(jī)和無(wú)線WiFi模塊HX-M02連接方式,如圖4所示。
圖4 單片機(jī)與WiFi模塊接口電路圖
單片機(jī)的RD8被配置成數(shù)字量輸出與WiFi無(wú)線模塊SPI_CS相連,用于傳輸片選信號(hào),低電平有效。單片機(jī)SPI2模塊的SCK2與無(wú)線模塊的SPI_SCK相連,提供SPI的位移時(shí)鐘信號(hào)。單片機(jī)的SPI2模塊的串行數(shù)據(jù)輸出與SDO2與無(wú)線模塊SPI_SI相連,用于向無(wú)線模塊輸出SPI的串行數(shù)據(jù)。單片機(jī)SPI2模塊的串行數(shù)據(jù)輸入SDI2與無(wú)線模塊SPI_SO相連,用于接收WiFi模塊輸出的SPI串行數(shù)據(jù)。單片機(jī)的RD10被配置成數(shù)字量輸入與WiFi模塊的SPI_INT相連,用于接收無(wú)線模塊的SPI中斷信號(hào),低電平有效。
為了實(shí)現(xiàn)試驗(yàn)過(guò)程數(shù)據(jù)采集存儲(chǔ),選用winbond公司的Flash芯片W25Q64來(lái)存儲(chǔ)數(shù)據(jù)。該芯片大小為8 Mbyte,每頁(yè)最大字節(jié)數(shù)為256字節(jié),支持標(biāo)準(zhǔn)、雙輸出和四輸出的SPI三種工作方式,工作電壓3.3 V,具有較低的功耗[9]。W25Q64設(shè)計(jì)電路圖如圖5所示。
圖5 W25Q64設(shè)計(jì)電路圖
芯片工作時(shí),CS引腳拉低,操作完畢后再將CS引腳拉高。電源VCC端通過(guò)一個(gè)0.1 μF的陶瓷電容進(jìn)行噪聲濾波。HOLD引腳拉高,設(shè)備正常運(yùn)行。WP是寫保護(hù)端,用來(lái)防止?fàn)顟B(tài)寄存器被寫入。所以,將HOLD引腳與WP引腳直接與VCC端相連。
根據(jù)上位機(jī)的特點(diǎn),采用多線程技術(shù)來(lái)編寫上位機(jī)軟件。上位機(jī)功能模塊包括發(fā)送和解析數(shù)據(jù)幀、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)顯示,這3個(gè)上位機(jī)功能模塊獨(dú)立運(yùn)行。
當(dāng)單通道實(shí)時(shí)采集數(shù)據(jù)時(shí),多個(gè)線程的程序同時(shí)運(yùn)行,操作系統(tǒng)為每一個(gè)線程分配不同的CPU時(shí)間片。CPU只執(zhí)行一個(gè)時(shí)間片內(nèi)的線程,多個(gè)時(shí)間片中的線程在CPU內(nèi)輪流執(zhí)行,由于時(shí)間非常短。在宏觀上,每個(gè)線程好像是并行執(zhí)行。
上位機(jī)軟件使用C++語(yǔ)言來(lái)描寫,軟件程序流程圖如圖6所示。把數(shù)據(jù)幀的發(fā)送與解析、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)顯示這3個(gè)功能模塊分別放到一個(gè)線程中去執(zhí)行,利用多線程技術(shù)來(lái)保證各個(gè)功能的并行執(zhí)行。
圖6 上位機(jī)軟件程序流程圖
下位機(jī)軟件程序指的是PIC單片機(jī)里面的程序。整個(gè)下位機(jī)采集單元由無(wú)線WiFi模塊、運(yùn)算放大器、AD轉(zhuǎn)換、存儲(chǔ)芯片、電源芯片和PIC單片機(jī)組成。除了運(yùn)算放大器和電源芯片以外,其它部分都需要單片機(jī)的控制才能正常工作,所以單片機(jī)的軟件設(shè)計(jì)是整個(gè)軟件環(huán)節(jié)的重要組成部分[10]。圖7所示的是單片機(jī)主程序流程圖。
圖7 PIC單片機(jī)主程序流程圖
本系統(tǒng)采用C語(yǔ)言來(lái)實(shí)現(xiàn)單片機(jī)的控制代碼。從模塊化的角度把程序分成3個(gè)模塊:單片機(jī)主程序模塊、AD轉(zhuǎn)換模塊、SPI串行通信模塊。單片機(jī)主程序模塊是一個(gè)順序執(zhí)行的循環(huán)程序,實(shí)現(xiàn)系統(tǒng)軟、硬件資源的整體管理和單片機(jī)系統(tǒng)初始化。AD轉(zhuǎn)換模塊是利用PIC24FJGA106芯片內(nèi)部自帶的10位高速16通道A/D轉(zhuǎn)換器完成模擬數(shù)據(jù)的采集,當(dāng)接收到上位機(jī)中斷指令時(shí),開始對(duì)模擬數(shù)據(jù)進(jìn)行AD轉(zhuǎn)換。PIC24單片機(jī)可以集成出3個(gè)SPI模塊,這里我們使用兩個(gè),分別與WiFi模塊和存儲(chǔ)芯片通信。
為驗(yàn)證本文設(shè)計(jì)的無(wú)線浪高傳感器的實(shí)際性能,利用實(shí)驗(yàn)水槽一端的造波機(jī)模擬波浪環(huán)境。每一個(gè)下位機(jī)都接上一個(gè)浪高傳感器,將20個(gè)浪高傳感器放置于水槽的不同位置,一臺(tái)路由器作為AP接入點(diǎn),一臺(tái)PC機(jī)作為主站。在實(shí)驗(yàn)水池中,利用造波機(jī)產(chǎn)生波高為40 mm,周期為1 s的規(guī)則波。選定1號(hào)從站通過(guò)無(wú)線模塊實(shí)時(shí)采集和上傳數(shù)據(jù),系統(tǒng)的采樣周期為20 ms。圖8位上位機(jī)軟件上顯示的實(shí)時(shí)浪高曲線,由圖可知浪高曲線光滑,數(shù)據(jù)點(diǎn)均勻分布。
圖8 單通道實(shí)時(shí)浪高曲線
實(shí)驗(yàn)結(jié)束后,其余下位機(jī)存儲(chǔ)器保存的數(shù)據(jù)上傳到上位機(jī)。通過(guò)上位機(jī)軟件進(jìn)行數(shù)據(jù)回放和分析,圖9顯示3、9、13號(hào)從站的數(shù)據(jù)回放。主站PC機(jī)存儲(chǔ)10 000組數(shù)據(jù),數(shù)據(jù)丟失率不到0.1%。在WiFi熱點(diǎn)覆蓋范圍之內(nèi),實(shí)驗(yàn)達(dá)到了預(yù)期的數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性與準(zhǔn)確性。
圖9 回放浪高曲線
WiFi網(wǎng)絡(luò)數(shù)據(jù)傳輸由于其傳輸速度快、可靠性高、覆蓋范圍廣、組網(wǎng)成本低,將會(huì)是未來(lái)無(wú)線數(shù)據(jù)采集的發(fā)展趨勢(shì)?;赪iFi的無(wú)線浪高數(shù)據(jù)采集系統(tǒng),將數(shù)據(jù)還原為了實(shí)際浪高值,取得了預(yù)期的效果。但是,在以后的實(shí)際應(yīng)用中,如何實(shí)現(xiàn)多通道實(shí)時(shí)上傳數(shù)據(jù),提高傳輸速率,保證不丟幀傳輸,是面臨的一個(gè)重要問(wèn)題。