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