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