關(guān)凱元,夏靜
(南京理工大學(xué)機(jī)械工程學(xué)院,江蘇南京210094)
工業(yè)現(xiàn)場及武器試驗(yàn)場中數(shù)據(jù)采集單元往往分布在不同的地方,通常需要利用總線設(shè)計(jì)將分散采集到的數(shù)據(jù)傳輸?shù)揭粋€(gè)集中的監(jiān)控設(shè)備,以便于監(jiān)控和管理。采用無線通信技術(shù)組建數(shù)據(jù)采集網(wǎng)絡(luò)可以簡化布線操作且不受工作環(huán)境限制,適用于多點(diǎn)分布的數(shù)據(jù)采集情況[1-8]。本文設(shè)計(jì)一種基于STM32和SX1278的星型拓?fù)渚W(wǎng)絡(luò)結(jié)構(gòu)無線數(shù)據(jù)采集系統(tǒng),可實(shí)現(xiàn)1 km范圍內(nèi)網(wǎng)絡(luò)主從節(jié)點(diǎn)之間的指令傳輸和數(shù)據(jù)交換。
系統(tǒng)由數(shù)據(jù)采集模塊和主機(jī)兩部分組成。數(shù)采模塊作為數(shù)采網(wǎng)絡(luò)從節(jié)點(diǎn)分布于測試現(xiàn)場,以STM32為核心實(shí)現(xiàn)數(shù)據(jù)采集的參數(shù)配置、采集、存儲(chǔ)等功能。主機(jī)作為網(wǎng)絡(luò)主節(jié)點(diǎn),負(fù)責(zé)對數(shù)據(jù)采集模塊發(fā)出指令并接收模塊上傳的數(shù)據(jù)文件。此外,數(shù)據(jù)采集模塊可通過觸摸屏進(jìn)行獨(dú)立操作完成數(shù)據(jù)采集任務(wù)。
無線數(shù)據(jù)采集系統(tǒng)的組成如圖1所示。星型拓?fù)渚W(wǎng)絡(luò)具有結(jié)構(gòu)簡單、組網(wǎng)方便、控制容易等優(yōu)點(diǎn),非常適合于無線數(shù)據(jù)采集網(wǎng)絡(luò)的搭建[9]。網(wǎng)絡(luò)主從節(jié)點(diǎn)之間通過地址識(shí)別實(shí)現(xiàn)點(diǎn)對點(diǎn)通信。
數(shù)采模塊通過無線網(wǎng)絡(luò)接收主機(jī)指令進(jìn)行數(shù)據(jù)采集的參數(shù)設(shè)置,也可以根據(jù)模塊觸摸屏輸入的指令進(jìn)行參數(shù)設(shè)置。接入數(shù)采模塊8個(gè)通道的模擬信號(hào)輸入到STM32的ADC單元進(jìn)行A/D轉(zhuǎn)換,STM32根據(jù)預(yù)設(shè)參數(shù)及指令將轉(zhuǎn)換結(jié)果進(jìn)行處理后保存至存儲(chǔ)卡中。數(shù)采模塊根據(jù)主機(jī)發(fā)出的命令,通過無線網(wǎng)絡(luò)或串口將存儲(chǔ)卡中的數(shù)據(jù)發(fā)送至主機(jī)進(jìn)行后續(xù)處理與保存。本無線數(shù)據(jù)采集系統(tǒng)的技術(shù)要求如下:
圖1 無線數(shù)據(jù)采集系統(tǒng)原理圖
1)系統(tǒng)支持8模塊*8通道數(shù)據(jù)采集;
2)主從節(jié)點(diǎn)通信距離可達(dá)1 km;
3)數(shù)采模塊可實(shí)現(xiàn)人機(jī)交互,能獨(dú)立工作;
4)數(shù)采模塊可進(jìn)行多觸發(fā)方式選擇,實(shí)現(xiàn)多模塊同步觸發(fā)或分時(shí)觸發(fā);
5)數(shù)采模塊中的數(shù)據(jù)可通過無線網(wǎng)絡(luò)、串口或存儲(chǔ)卡3種方式上傳至主機(jī);
6)模塊最高采樣頻率為10 kHz;
7)模塊A/D轉(zhuǎn)換精度為12 Bit;
8)數(shù)采模塊數(shù)據(jù)保存在外擴(kuò)存儲(chǔ)芯片中,實(shí)現(xiàn)掉電保存。
數(shù)據(jù)采集模塊硬件PCB和組裝實(shí)物圖如圖2所示。數(shù)采模塊由5部分構(gòu)成:主控單元、通信單元、數(shù)據(jù)存儲(chǔ)單元、電源管理單元和輔助單元。
圖2 系統(tǒng)硬件PCB和組裝實(shí)物圖
數(shù)采模塊采用意法半導(dǎo)體公司(ST)生產(chǎn)的STM32F103ZET6作為控制中心。STM32F103ZET6基于Cortex-M3內(nèi)核,其最高主頻率為72 MHz,擁有512 Kb FLASH,同時(shí)擁有SPI、IIC和SDIO等豐富的外圍接口。STM32擁有16個(gè)12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器,最大轉(zhuǎn)換速率為1 MHz,滿足系統(tǒng)設(shè)計(jì)要求[10-14]。由于STM32供電電壓最高為3.3 V,所以輸入AD單元的最高電壓應(yīng)鉗制在3.3 V,而本數(shù)據(jù)采集系統(tǒng)輸入電壓信號(hào)上限為10 V,故信號(hào)電壓經(jīng)串并聯(lián)分壓電阻分壓至原始電壓值的1/3后輸入AD單元。
數(shù)采模塊采用4.3寸TFT彩屏作為顯示屏,該顯示屏采用NT35510作為驅(qū)動(dòng)顯示芯片,觸摸驅(qū)動(dòng)IC采用OTT2001A芯片,支持IIC通信[14],其分辨率為800RGB*480像素點(diǎn)。液晶顯示屏通過2*17的排針與主電路板連接。TFTLCD模塊采用8080總線接口,8080并口是由因特爾公司提出的,全稱為8080并口協(xié)議,主要通過“讀使能(RE)”和“寫使能(WR)”兩條控制線進(jìn)行操作[14]。LCD控制器需要21個(gè)I/O口,背光控制1個(gè)I/O口,電容觸摸屏需要4個(gè)I/O口,其中背光供電需要5 V電源,其他部分電源供電需要3.3 V,因此要求模塊有雙電源。
數(shù)采模塊可以采用無線和有線兩種方式與主機(jī)建立連接。無線方式即通過無線網(wǎng)絡(luò)連接,有線方式通過串口轉(zhuǎn)USB方式連接。
主機(jī)與數(shù)采模塊均通過串口與無線通信單元連接,構(gòu)成星型拓?fù)渚W(wǎng)絡(luò)結(jié)構(gòu)。數(shù)采模塊搭載以SX1278為核心的TTL-32-1W串口無線通信單元,具有軟件FEC向前糾錯(cuò)算法,在突發(fā)干擾的情況下,能主動(dòng)糾正被干擾的數(shù)據(jù)包,提高數(shù)據(jù)傳輸?shù)目煽啃院蛡鬏斁嚯x。通過實(shí)測,無線通信單元有效通信距離可達(dá)1 km,可通過串口指令進(jìn)行在線參數(shù)配置,可配置65536個(gè)地址,設(shè)置多信道,無線空中傳輸速率最大為19.2 kb/s。
主控芯片 STM32的串口 2(PA2,PA3)與無線通信單元串口連接,GPIO口的PC2、PC3連接無線單元M0、M1端口。通過配置M0、M1引腳實(shí)現(xiàn)無線單元4種工作模式的切換,如表1所示。
表1 無線單元工作模式
數(shù)采模塊采用串口轉(zhuǎn)USB的方式與主機(jī)有線連接。STM32串口 1(PA9,PA10)經(jīng)過 CH340芯片與USB+、USB-端口相連。主機(jī)通過安裝虛擬串口驅(qū)動(dòng)程序與模塊串口連接。
在保證采樣頻率和可存儲(chǔ)數(shù)據(jù)量的前提下,要求數(shù)采模塊具有掉電保存數(shù)據(jù)的能力,實(shí)現(xiàn)數(shù)據(jù)離線采集與存儲(chǔ)的功能。因此數(shù)采模塊存儲(chǔ)單元由片外FLASH和存儲(chǔ)卡組成。片外FLASH選用W25Q128存儲(chǔ)芯片,芯片容量為16 MByte,選用STM32的SPI2接口連接,滿足模塊設(shè)計(jì)要求。存儲(chǔ)卡選用TF卡,通過SDIO接口與主控芯片連接。
數(shù)采模塊可選用7.4 V鋰電池或外接12 V直流電源2種供電方式。主控芯片標(biāo)準(zhǔn)電源電壓為3.3 V,LCD屏需5 V供電。為提高電源利用率并滿足雙電壓要求,模塊采用二級降壓的方式,先通過MP2359降壓芯片將輸入電壓降至5 V后,再經(jīng)過AMS1117-3.3芯片將5 V電壓轉(zhuǎn)降至3.3 V。
為提高數(shù)采模塊獨(dú)立工作的能力,完善其人機(jī)交互功能,模塊設(shè)計(jì)有電源和工作狀態(tài)指示燈、蜂鳴器、傳感器電源、觸發(fā)電路、自檢報(bào)警、功能按鍵等輔助功能單元。
上位機(jī)軟件基于LabVIEW平臺(tái)開發(fā),主要分為模塊設(shè)置單元、在線查詢單元、數(shù)據(jù)載入單元、數(shù)據(jù)保存單元等,上位機(jī)軟件界面如圖3所示。
圖3 上位機(jī)軟件界面
上位機(jī)主程序主要采用改進(jìn)的LabVIEW“生產(chǎn)者-消費(fèi)者循環(huán)”為主要設(shè)計(jì)框架。經(jīng)典的“生產(chǎn)者-消費(fèi)者循環(huán)”主要由事件響應(yīng)循環(huán)-生產(chǎn)者循環(huán),以及事件處理循環(huán)-消費(fèi)者循環(huán)組成[15-16]。本系統(tǒng)軟件在經(jīng)典的循環(huán)上增加了通知器和通知器循環(huán),用來傳輸和顯示子VI傳遞來的數(shù)據(jù);并且增加了用戶事件,使得改進(jìn)的“生產(chǎn)者-消費(fèi)者循環(huán)”能更加穩(wěn)定的退出。
上位機(jī)軟件第一次運(yùn)行或添加數(shù)采模塊,都需要進(jìn)行串口參數(shù)配置,包括串口地址、通道號(hào)、波特率的配置,使上位機(jī)軟件串口地址和數(shù)采模塊無線通信地址對應(yīng),以實(shí)現(xiàn)點(diǎn)對點(diǎn)數(shù)據(jù)傳輸。
在進(jìn)行數(shù)據(jù)采集之前,必須對數(shù)采模塊進(jìn)行單獨(dú)的數(shù)據(jù)采集參數(shù)設(shè)置。參數(shù)設(shè)置完成后,上位機(jī)軟件將設(shè)置信息通過串口發(fā)送到無線通信單元,無線通信單元通過點(diǎn)對點(diǎn)模式(上位機(jī)無線通信單元目標(biāo)地址設(shè)置為對應(yīng)數(shù)采模塊地址),將參數(shù)發(fā)送至對應(yīng)數(shù)采模塊。數(shù)據(jù)采集參數(shù)設(shè)置主要包括采樣率、采樣時(shí)間、文件編號(hào)、零點(diǎn)設(shè)置、通道選擇、標(biāo)定系數(shù)設(shè)置和觸發(fā)方式選擇等。
為了判斷選擇的數(shù)采模塊能否正常工作,需要對其進(jìn)行在線查詢。檢查完畢之后,上位機(jī)軟件會(huì)自動(dòng)關(guān)閉無法正常通訊的數(shù)據(jù)采集模塊。
上位機(jī)軟件通過串口向無線通信單元發(fā)送開始數(shù)據(jù)采集命令,無線通信單元通過廣播模式(上位機(jī)無線通信單元目標(biāo)地址設(shè)置為0xFFFF)向所有在線的數(shù)采模塊發(fā)送開始數(shù)據(jù)采集命令,并且等待1.2倍的的最大采集時(shí)間,使上位機(jī)程序在采集進(jìn)行中不響應(yīng)用戶命令,以防止上位機(jī)軟件對數(shù)據(jù)采集產(chǎn)生干擾。無線開始數(shù)據(jù)采集方式與另外3種觸發(fā)方式(按鍵觸發(fā)、上升沿觸發(fā)、下降沿觸發(fā))不同時(shí)兼容,需在數(shù)據(jù)采集參數(shù)配置過程中進(jìn)行唯一設(shè)置。
在數(shù)據(jù)采集完成之后,需要載入采集到的數(shù)據(jù)。點(diǎn)擊上位機(jī)軟件數(shù)采模塊指示燈下面的載入按鈕,可以選擇單通道載入數(shù)據(jù)或全通道載入數(shù)據(jù)。
數(shù)據(jù)載入時(shí),每100點(diǎn)數(shù)據(jù)將會(huì)通過通知器來顯示數(shù)據(jù)。載入完成之后,上位機(jī)軟件會(huì)將數(shù)據(jù)轉(zhuǎn)換成波形數(shù)據(jù),轉(zhuǎn)換后的波形數(shù)據(jù)自動(dòng)保存至軟件根目錄的“數(shù)據(jù)”文件夾。
下位機(jī)程序使用C語言基于Keil 5平臺(tái)進(jìn)行編寫,實(shí)現(xiàn)數(shù)采模塊初始化、觸摸屏參數(shù)設(shè)置、無線通信、數(shù)據(jù)采集、曲線顯示和存儲(chǔ)等功能。
數(shù)采模塊通過STM32的FSMC接口來控制TFTLCD觸摸屏,通過存儲(chǔ)于W25Q128芯片中的GBK字庫和FSMC相關(guān)庫函數(shù)繪制模塊觸摸屏界面,如圖4所示。
圖4 數(shù)采模塊屏幕界面
數(shù)采模塊通過FATFS文件系統(tǒng)單元管理TF卡,實(shí)現(xiàn)TF卡新建文件、寫入文件、存儲(chǔ)文件、修改文件等功能。FATFS單元移植的時(shí)候,需修改2個(gè)文件:即ffconf.h和didkio.c。FATFS單元的所有配置選項(xiàng)都是存放在ffconf.h里,通過配置其中的一些選項(xiàng)來滿足要求。FATFS的移植主要步驟:
1)在integer.h里定義的數(shù)據(jù)類型需與使用的MDK編譯器一致;
2)通過ffconf.h配置FATFS相關(guān)功能;
3)打開diskio,c進(jìn)行底層驅(qū)動(dòng)編寫。
為了驗(yàn)證本系統(tǒng)功能,對某小型固體火箭發(fā)動(dòng)機(jī)進(jìn)行壓力、推力的兩通道數(shù)據(jù)采集試驗(yàn)。在該固體火箭發(fā)動(dòng)機(jī)燃燒室壁面安裝壓力傳感器,推力傳感器固定于測試臺(tái)的承力樁,另一端與發(fā)動(dòng)機(jī)的頭部接觸但不產(chǎn)生軸向力。數(shù)據(jù)采集模塊1通道用于采集壓力信號(hào),2通道用于采集推力信號(hào)。兩傳感器供電橋壓設(shè)置為10 V,采樣時(shí)間為2 s,采樣頻率為1 kHz。
圖5 某固體火箭發(fā)動(dòng)機(jī)推壓力試驗(yàn)曲線
如圖5所示為某固體火箭發(fā)動(dòng)機(jī)推力和壓力試驗(yàn)曲線,試驗(yàn)數(shù)據(jù)經(jīng)無線網(wǎng)絡(luò)上傳至上位機(jī)軟件顯示并保存。該固體火箭發(fā)動(dòng)推壓力結(jié)果分析如表2所示。
表2 某固體火箭發(fā)動(dòng)機(jī)推壓力參數(shù)
通過驗(yàn)證試驗(yàn)的數(shù)據(jù)分析,本測試系統(tǒng)達(dá)到設(shè)計(jì)技術(shù)要求,具有較高的穩(wěn)定性和采樣精度,具備一定的實(shí)用價(jià)值。
本文介紹了一種基于星型拓?fù)渚W(wǎng)絡(luò)的分布式無線數(shù)據(jù)采集系統(tǒng)。數(shù)據(jù)采集模塊采用前置液晶屏作為人機(jī)交互界面,基于STM32主控芯片實(shí)現(xiàn)模塊8通道的離線數(shù)據(jù)采集與存儲(chǔ)功能。數(shù)采模塊搭載的TTL-32-1W串口無線通訊單元實(shí)現(xiàn)了復(fù)雜環(huán)境下的穩(wěn)定無線通訊。作為網(wǎng)絡(luò)主節(jié)點(diǎn)的上位機(jī)通過LabVIEW軟件實(shí)現(xiàn)發(fā)送指令和接收數(shù)據(jù)的功能。通過試驗(yàn)驗(yàn)證本數(shù)據(jù)采集系統(tǒng)達(dá)到了預(yù)期要求,具有較好的運(yùn)用價(jià)值。