汪新舜,吳星云,劉曉飛,邢香園,吳劍鋒
(上海衛(wèi)星裝備研究所,上海 200240)
為了模擬航天器電池板在外太空環(huán)境中的零重力展開(kāi),需在地面使用動(dòng)力傳動(dòng)設(shè)備模擬太空中的零重力環(huán)境[1],在試驗(yàn)的過(guò)程中,需實(shí)時(shí)采集控制壓力傳感器等數(shù)據(jù),目前國(guó)內(nèi)外主要采用在傳動(dòng)軸的頂部安裝壓片式力傳感器,內(nèi)部嵌入數(shù)據(jù)采集板卡,使用有線網(wǎng)絡(luò)的方式將數(shù)據(jù)傳輸至電腦終端處理。傳動(dòng)軸進(jìn)行全方位轉(zhuǎn)動(dòng)時(shí),存在線纜纏繞的現(xiàn)象,操作人員需及時(shí)調(diào)整位置進(jìn)行試驗(yàn),且傳感器單點(diǎn)采集,無(wú)法對(duì)多個(gè)傳感器組網(wǎng),導(dǎo)致現(xiàn)場(chǎng)布置和試驗(yàn)不便。隨著無(wú)線物聯(lián)技術(shù)的迅速發(fā)展,市場(chǎng)推出了一系列的物聯(lián)網(wǎng)芯片和IOT解決方案,現(xiàn)有的物聯(lián)平臺(tái)存在以下問(wèn)題[2-5]:
1)模擬量數(shù)據(jù)采集頻率較低,不能滿(mǎn)足試驗(yàn)50 Hz/S的采集速率;
2)模擬量數(shù)據(jù)采集精度較低,不能滿(mǎn)足試驗(yàn)12位的采集精度;
3)大多數(shù)產(chǎn)品使用數(shù)字量信號(hào)采集,采集電壓電流信號(hào)時(shí)的功耗過(guò)高,電池用電快;
4)原有采集軟件不能進(jìn)行自定義的數(shù)據(jù)處理,包括數(shù)據(jù)擬合,加速度擬合,數(shù)據(jù)聯(lián)合比對(duì)等;
5)原有的物聯(lián)平臺(tái)采集軟件不具備PID算法,無(wú)法完成模擬量參數(shù)和傳動(dòng)機(jī)構(gòu)的聯(lián)合控制。
針對(duì)以上問(wèn)題,根據(jù)航天某院航天器機(jī)構(gòu)展開(kāi)試驗(yàn)任務(wù)要求,研制了一套基于ESP8266和LabVIEW的嵌入式分布式無(wú)線壓力傳感器參數(shù)采集控制系統(tǒng),硬件采用STM32、ADC及ESP8266芯片,設(shè)計(jì)了信號(hào)調(diào)理電路、信號(hào)采集電路、信號(hào)發(fā)送電路及低功耗智能供電管理電路。上位機(jī)軟件使用LabVIEW虛擬儀器平臺(tái),采用多線程低耦合的QMH隊(duì)列框架,功能模塊化編寫(xiě),便于開(kāi)發(fā)人員維護(hù),可實(shí)現(xiàn)設(shè)備通訊,傳感器零位校準(zhǔn),數(shù)據(jù)采集處理等功能,使用PSP服務(wù)器動(dòng)態(tài)實(shí)時(shí)共享試驗(yàn)數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)間快速交換,提高系統(tǒng)的數(shù)據(jù)處理速度,同時(shí)具備數(shù)據(jù)動(dòng)態(tài)擬合及超限報(bào)警等功能;在固件程序中采用循環(huán)中斷的架構(gòu),實(shí)現(xiàn)了設(shè)備初始化配置,網(wǎng)絡(luò)配置連接服務(wù)器,數(shù)據(jù)采集無(wú)線發(fā)送,新增了增量式積分分離PID算法,完成了數(shù)據(jù)采集和傳動(dòng)機(jī)構(gòu)的聯(lián)合控制,解決了試驗(yàn)過(guò)程中存在的非線性、參數(shù)時(shí)變性和模型不確定性等問(wèn)題,減少了壓力控制的超調(diào)量,增強(qiáng)了控制精度[6]。
嵌入式分布式無(wú)線壓力傳感器參數(shù)采集系統(tǒng)的硬件參數(shù)及要求如表1所示。
表1 測(cè)控系統(tǒng)硬件參數(shù)
軟件的功能需求包括:上位機(jī)可實(shí)時(shí)監(jiān)測(cè)各點(diǎn)支撐力的工作情況,顯示未工作(灰色)、工作中(綠色)及報(bào)警(紅色)等多種工作狀態(tài);上位機(jī)可完成服務(wù)器網(wǎng)絡(luò)配置,多個(gè)無(wú)線傳感器連接組網(wǎng),無(wú)線傳感器數(shù)據(jù)采集存儲(chǔ)及PID壓力控制設(shè)置參數(shù)的下發(fā);上位機(jī)可實(shí)時(shí)監(jiān)測(cè)各點(diǎn)支撐力的波動(dòng),自動(dòng)擬合支撐力的波動(dòng)曲線,擬合曲線可以和實(shí)時(shí)曲線在同一坐標(biāo)系下顯示;上位機(jī)可實(shí)時(shí)監(jiān)測(cè)產(chǎn)品速度的變化趨勢(shì),自動(dòng)擬合出速度波動(dòng)曲線,擬合曲線可以和實(shí)時(shí)曲線在同一坐標(biāo)系下顯示;上位機(jī)具有力傳感器閾值設(shè)置過(guò)載報(bào)警顯示功能,可實(shí)時(shí)顯示力傳感器的剩余電量,使用特定數(shù)據(jù)格式保存數(shù)據(jù);上位機(jī)具備數(shù)據(jù)回看等功能。
嵌入式分布式無(wú)線采集系統(tǒng)基于STM32微處理器和ESP8266無(wú)線模塊設(shè)計(jì),設(shè)計(jì)ADC信號(hào)采集,信號(hào)調(diào)理及無(wú)線信號(hào)發(fā)送電路。傳感器將力物理量線性轉(zhuǎn)換為電流模擬量,信號(hào)調(diào)理模塊將電流轉(zhuǎn)換為標(biāo)準(zhǔn)的輸出電壓,ADC模塊采集電壓,將模擬量轉(zhuǎn)換為數(shù)字量,傳輸至微處理器的串口端,微處理器使用指令配置無(wú)線模塊連接路由,工作在網(wǎng)絡(luò)客戶(hù)端模式,將接收到的傳感器數(shù)據(jù)包發(fā)送至無(wú)線模塊,無(wú)線模塊通過(guò)連接無(wú)線路由組網(wǎng),將數(shù)據(jù)傳送至上位機(jī)服務(wù)器,其余觀測(cè)客戶(hù)端可遠(yuǎn)程連接PSP服務(wù)器,讀取共享數(shù)據(jù)進(jìn)行處理。無(wú)線傳感器動(dòng)態(tài)接收上位機(jī)的壓力參數(shù)控制設(shè)置值,與動(dòng)力傳動(dòng)軸使用串口通訊,采用增量式積分分離PID算法控制傳統(tǒng)軸的轉(zhuǎn)動(dòng)速度來(lái)動(dòng)態(tài)調(diào)節(jié)壓力參數(shù),上位機(jī)負(fù)責(zé)數(shù)據(jù)的濾波處理顯示存儲(chǔ)及報(bào)警設(shè)置等功能,硬件連接原理圖如圖1所示。
圖1 硬件連接示意圖
試驗(yàn)人員將多個(gè)帶有嵌入式無(wú)線采集板卡的力傳感器安置在試驗(yàn)平臺(tái)上,打開(kāi)電源開(kāi)關(guān),嵌入式無(wú)線采集控制板卡上電自檢,完成網(wǎng)絡(luò)配置后,開(kāi)始連接無(wú)線路由器,連接上位機(jī)服務(wù)器,如果上位機(jī)服務(wù)器未打開(kāi),連續(xù)發(fā)送請(qǐng)求等待連接終端服務(wù)器指令直至連接成功,連接無(wú)線路由成功LED指示燈為藍(lán)色,不成功為紅色,連接上位機(jī)服務(wù)器成功指示燈為綠色。試驗(yàn)人員打開(kāi)采集軟件界面,配置IP地址,端口號(hào),打開(kāi)服務(wù)器,建立網(wǎng)絡(luò)連接,網(wǎng)絡(luò)連接成功后,傳感器按照軟件編寫(xiě)的采集隊(duì)列依次發(fā)送數(shù)據(jù),數(shù)據(jù)實(shí)時(shí)顯示在界面上,點(diǎn)擊擬合按鈕,界面顯示加速度擬合曲線,試驗(yàn)人員可自由選擇傳感器數(shù)據(jù)在同一波形圖中做對(duì)比查看,數(shù)據(jù)實(shí)時(shí)存入PSP服務(wù)器,其他的觀測(cè)電腦也可以同步讀取數(shù)據(jù)查看,選定某個(gè)傳感器,發(fā)送壓力設(shè)定參數(shù),進(jìn)行PID控制,設(shè)定傳感器參數(shù)報(bào)警上限值,一旦數(shù)據(jù)超限,軟件發(fā)出提示,如果試驗(yàn)過(guò)程中,無(wú)線傳感器發(fā)生通訊故障,軟件報(bào)錯(cuò)提示試驗(yàn)人員,軟件嘗試重新連接,重新連接失敗后,及時(shí)更換傳感器,重新采集,繼續(xù)試驗(yàn),系統(tǒng)運(yùn)行的流程如圖2所示。
圖2 系統(tǒng)運(yùn)行流程圖
工業(yè)現(xiàn)場(chǎng)長(zhǎng)距離傳輸模擬信號(hào),如采用電壓信號(hào),傳輸線的分布電阻會(huì)產(chǎn)生電壓壓降,導(dǎo)致數(shù)據(jù)存在不確定的零漂[7],為了解決以上問(wèn)題,傳感器的信號(hào)使用4~20 mA電流信號(hào),4 mA表示零信號(hào),20 mA表示信號(hào)滿(mǎn)刻度。由于ADC采集模塊的輸入范圍是0~5 V,使用運(yùn)放搭建如圖3的信號(hào)調(diào)理電路,將電流信號(hào)轉(zhuǎn)換為電壓信號(hào),電路的前端是電流檢測(cè)放大電路,使用固定阻值將采集的電流轉(zhuǎn)換為電壓信號(hào),通過(guò)差分放大電路,輸出的電壓UA=(R5/R3)*(I檢測(cè)*R1),R5和R3取值相等,UA=I檢測(cè)*R1,R1的值取100 Ω,UA的范圍是400~2 000 mV;電壓跟隨電路產(chǎn)生的電壓UB,用來(lái)調(diào)節(jié)基準(zhǔn)信號(hào),UA和UB作為減法電路的輸入,輸出電壓為(R11/R9)*(UA-UB),R11與R9取值相等,即值等于UA-UB,當(dāng)輸入的電流I檢測(cè)為4 mA 時(shí),調(diào)節(jié)高精度電阻R8,使得UA=UB=400 mV,減法輸出電壓為0 V,完成基準(zhǔn)校準(zhǔn)的過(guò)程;當(dāng)輸入電流I檢測(cè)為20 mA時(shí),減法電路的輸出為(I檢測(cè)*R1)-UB=1 600 mV,輸出的量程為5 V,(R14/R13)為電壓放大倍數(shù),調(diào)節(jié)R14高精度電阻,使得UC的電壓為5 V,完成了輸入4~20 mA電流至0~5 000 mV的線性電壓輸出。
圖3 信號(hào)調(diào)理電路
ESP8266是由樂(lè)鑫智能平臺(tái)提供的一款高性能無(wú)線模組,支持softAP模式(無(wú)線接入點(diǎn)),station模式(無(wú)線終端)以及softAP+station共存模式,程序使用softAP模式進(jìn)行多點(diǎn)組網(wǎng)[8-9]。STM32微處理器的管腳PB10與ESP8266的管腳UTXD相連,PB11與URXD相連,使用USART串口與ESP8266的數(shù)據(jù)進(jìn)行收發(fā)。
參考樂(lè)鑫提供的AT指令集,STM32使用串口發(fā)送指令字符串對(duì)ESP8266做通訊,如表2所示。
表2 AT指令集
ADC即Analogto Digital Converter,模擬數(shù)字轉(zhuǎn)換器,使用AD9280芯片,分辨率為12位,32 MSPS數(shù)據(jù)轉(zhuǎn)換率,內(nèi)部集成了采樣保持放大器和電源基準(zhǔn)源[10]。芯片的AIN管腳的輸入電壓范圍為0~2 V,信號(hào)調(diào)理電路的輸出電壓為0~5V,使用運(yùn)放搭建差分放大和電壓跟隨電路,實(shí)現(xiàn)電壓轉(zhuǎn)換,如圖4所示。前級(jí)使用差分放大電路,Vout=Vin*R11/(R10+R8),R10取3 kΩ,R8取2 kΩ,R11取2 kΩ,則Vout=(2/5)Vin,當(dāng)Vin輸入為5 V時(shí),Vout=2 V,使用電壓跟隨電路接入AD芯片的AIN管腳,采集電壓信號(hào)。
圖4 ADC采集電路
系統(tǒng)軟件分為兩大部分:上位機(jī)采集軟件和嵌入式固件程序,上位機(jī)采集系統(tǒng)軟件部分基于LabVIEW開(kāi)發(fā),它是美國(guó)國(guó)家儀器(NI)公司研制的程序開(kāi)發(fā)環(huán)境。LabVIEW被稱(chēng)為“G”語(yǔ)言,即圖形化編程語(yǔ)言,其核心是“數(shù)據(jù)流”,通過(guò)數(shù)據(jù)在連線上的流動(dòng),完成程序流程的控制及功能的實(shí)現(xiàn)[11-12]。嵌入式固件程序使用C語(yǔ)言基于STM32CubeIDE開(kāi)發(fā),實(shí)現(xiàn)設(shè)備初始化配置、ADC數(shù)據(jù)采集、WIFI配置、無(wú)線數(shù)據(jù)傳輸及PID控制等功能。
嵌入式固件程序分為外設(shè)配置,中斷服務(wù)和主循環(huán)3個(gè)部分,在外設(shè)配置模塊中,實(shí)現(xiàn)串口的配置,包括:串口GPIO的時(shí)鐘、串口外設(shè)的時(shí)鐘、串口發(fā)送引腳的推挽復(fù)用模式、串口接收引腳的浮空輸入模式、波特率、數(shù)據(jù)幀字長(zhǎng)、停止位、校驗(yàn)位、硬件流控制、中斷優(yōu)先級(jí)及串口使能等設(shè)置;實(shí)現(xiàn)LED指示燈和延時(shí)函數(shù)的配置;實(shí)現(xiàn)無(wú)線WIFI模塊ESP8266引腳配置;實(shí)現(xiàn)ADC模塊的配置,包括:ADC的IO端口時(shí)鐘、IO引腳模式、連續(xù)轉(zhuǎn)換模式、轉(zhuǎn)換結(jié)構(gòu)對(duì)齊方式、轉(zhuǎn)換通道個(gè)數(shù)、時(shí)鐘分頻系數(shù)、通道轉(zhuǎn)換順序、采樣時(shí)間、初始化校準(zhǔn)及中斷優(yōu)先級(jí)配置等;實(shí)現(xiàn)PID控制的配置,包括PWM輸出管腳GPIO的時(shí)鐘,推挽輸出方式的設(shè)置;PID計(jì)算周期定時(shí)器的配置開(kāi)啟,F(xiàn)lash24C02模塊的初始化,從Flash存儲(chǔ)器中將上次保存的PID參數(shù)Kp、計(jì)算周期T、積分時(shí)間Ti、微分時(shí)間Td讀取至PID參數(shù)結(jié)構(gòu)體中。
中斷服務(wù)包括STM32串口中斷、ESP8266串口中斷和ADC采集中斷,在STM32串口中斷服務(wù)中,判斷中斷標(biāo)志位是否置位,如果發(fā)生中斷,串口接收ESP8266發(fā)來(lái)的數(shù)據(jù),依次將數(shù)據(jù)存儲(chǔ)至結(jié)構(gòu)體中,如果數(shù)據(jù)幀接收完畢,結(jié)構(gòu)體中的接收完成位置位,軟件清除中斷標(biāo)志位;在ADC采集中斷服務(wù)中,判斷ADC中斷采集標(biāo)志位是否置位,如果發(fā)生中斷,執(zhí)行ADC轉(zhuǎn)換讀取函數(shù),執(zhí)行完畢,清除ADC中斷采集標(biāo)志位;在ESP8266串口中斷服務(wù)中,判斷串口中斷標(biāo)志位是否置位,如果置位,依次將串口數(shù)據(jù)存儲(chǔ)至結(jié)構(gòu)體中,接收完畢后,判斷接收字符串是否為“CLOSD ”,將判斷結(jié)果存至TCP連接標(biāo)志位中,標(biāo)志位為1則代表TCP連接關(guān)閉,不為1則代表TCP保持連接。
主循環(huán)中執(zhí)行連接狀態(tài)判斷、串口數(shù)據(jù)透?jìng)骱蚉ID計(jì)算控制PWM占空比輸出的任務(wù)。判斷TCP連接標(biāo)志位,如果保持連接,將ADC采集的電壓數(shù)據(jù)使用串口向ESP8266發(fā)送數(shù)據(jù),ESP8266將數(shù)據(jù)通過(guò)網(wǎng)絡(luò)連接發(fā)送至電腦服務(wù)器,如果連接斷開(kāi),退出透?jìng)髂J?,獲取連接狀態(tài),確認(rèn)失聯(lián)后重新連接,直至下次連接成功。無(wú)線傳感器在發(fā)送數(shù)據(jù)的過(guò)程中,動(dòng)態(tài)地接收上位機(jī)下發(fā)PID壓力設(shè)置值和PID參數(shù)設(shè)置值,PID的初始設(shè)置值開(kāi)機(jī)從FLASH內(nèi)存中讀取上次的保存值,使用定時(shí)器設(shè)置PID的計(jì)算周期,在PID計(jì)算周期中,使用ADC讀取的壓力實(shí)時(shí)值與設(shè)置值相減得到偏差,對(duì)偏差進(jìn)行增量式的比例,積分,微分算法,計(jì)算出PID控制值,該值為PID控制輸出引腳PWM高電平輸出占空比的值,輸出引腳連接至MOS-光耦隔離開(kāi)關(guān)電路,動(dòng)態(tài)控制動(dòng)力傳動(dòng)機(jī)構(gòu)的運(yùn)行速度,將壓力值控制至設(shè)置值。固件程序開(kāi)發(fā)流程如圖5所示。
圖5 固件程序開(kāi)發(fā)流程圖
工業(yè)控制過(guò)程中,被控對(duì)象實(shí)時(shí)采集的數(shù)據(jù)與設(shè)定值之間產(chǎn)生偏差,對(duì)偏差使用比例、積分和微分做控制的算法,形成PID算法,PID控制具有原理簡(jiǎn)單,魯棒性強(qiáng)和實(shí)用面廣等優(yōu)點(diǎn),被廣泛應(yīng)用[13],圖6為PID算法的示意圖。
圖6 PID算法示意圖
其中Sv為用戶(hù)設(shè)定值,即控制的目標(biāo)值,Pv是控制對(duì)象的當(dāng)前壓力值,偏差E是Sv減去Pv的值,代表了負(fù)載的當(dāng)前值與目標(biāo)值的誤差程度。歷史偏差值是系統(tǒng)投入運(yùn)行以來(lái),控制算法每隔一段時(shí)間讀取傳感器的壓力值Pv,用Sv減去Pv形成多個(gè)偏差E的數(shù)組;當(dāng)前偏差是當(dāng)前時(shí)刻的偏差E值,以單個(gè)浮點(diǎn)數(shù)字表示;最近偏差是當(dāng)前時(shí)刻最近的兩到3個(gè)控制周期獲取的偏差數(shù)組。3個(gè)偏差作為PID控制算法的輸入,輸出已調(diào)的脈沖寬度PWM波形至光耦-MOS開(kāi)關(guān)電路,動(dòng)態(tài)控制傳動(dòng)機(jī)構(gòu)的開(kāi)關(guān)占空比,最終將壓力控制在設(shè)定值。
系統(tǒng)的讀取周期使用Td來(lái)表示,每個(gè)控制周期讀取控制對(duì)象的壓力值用X來(lái)表示,0~N個(gè)周期讀取的壓力數(shù)組可以表示為[X1Td,X2Td,X3Td…X(N-2)Td,X(N-1)Td,XNTd]。第n個(gè)讀取周期的誤差EnTd=Sv-XnTd,歷史偏差數(shù)組序列可以用[E1Td,E2Td,E3Td…E(n-2)Td,E(n-1)Td,EnTd]來(lái)表示。EnTd的值大于0,則說(shuō)明控制未達(dá)標(biāo);EnTd的值等于0,則說(shuō)明控制已達(dá)標(biāo);EnTd的值小于0,則說(shuō)明控制已超標(biāo);引入常量KP,輸出POUT=KP×EnTd,輸出指的是PWM周期的占空比,PWM的周期用Tk表示,即系統(tǒng)的控制周期,電壓處于高電平的時(shí)間為T(mén)H=Tk×POUT,在該時(shí)間段內(nèi),MOS開(kāi)關(guān)處于導(dǎo)通狀態(tài),傳動(dòng)電路處于全功率輸出狀態(tài)。比例控制是按照偏差大小來(lái)修正輸出值,當(dāng)用戶(hù)設(shè)定值和當(dāng)前壓力值相等的時(shí)候,EnTd偏差為0時(shí),POUT=0 ,比例控制不起作用,為了避免以上情況的發(fā)生,在比列控制輸出值上疊加一個(gè)常數(shù)POUT0,POUT=KP×EnTd+POUT0 ,即使EnTd偏差為0,POUT不等于0,比例控制仍然作用,單獨(dú)使用比例控制加入常數(shù)POUT0。
在第n個(gè)讀取周期Td時(shí),最近的兩個(gè)偏差相減,得到偏差之差DnTd=EnTd-E(n-1)Td,偏差的變化率VDnTd= (EnTd-E(n-1 )Td)/Td,當(dāng)VDnTd的值大于0,即偏差值變大,偏離控制目標(biāo)程度大;當(dāng)VDnTd的值小于0,即偏差值變小,偏離控制目標(biāo)程度?。籚DnTd的值用來(lái)預(yù)測(cè)未來(lái)的偏差走勢(shì),速率變大,適當(dāng)?shù)目刂戚敵鲂盘?hào)減弱趨勢(shì),速率變小,適當(dāng)?shù)目刂戚敵鲂盘?hào)增強(qiáng)趨勢(shì),產(chǎn)生微分算法控制的效果。使用VDnTd的值產(chǎn)生一個(gè)微分控制輸出信號(hào)DOUT,引入常量Kp,DOUT=Kp×VDnTd,微分控制是不可以獨(dú)立行動(dòng)的,當(dāng)VDnTd等于0的時(shí)候,變化率是直線,沒(méi)有變大的趨勢(shì)也沒(méi)有變小的趨勢(shì),偏差始終存在,微分算法只考察偏差是否變化,并不考察偏差是否存在,控制系統(tǒng)偏差即使很大,偏差變化為0,單獨(dú)使用微分控制,不會(huì)產(chǎn)生輸出。為了在微分控制變化率沒(méi)有改變的情況下,系統(tǒng)依然受控,在微分控制輸出值上疊加一個(gè)常數(shù)DOUT0 ,DOUT=Kp×VDnTd+DOUT0 ,增強(qiáng)控制的穩(wěn)定性。
根據(jù)以上結(jié)論,推導(dǎo)PID算法的數(shù)學(xué)模型:
PIDOUT=POUT+IOUT+DOUT
(1)
其中:POUT=KP×EnTd+POUT0 ,IOUT=Kp×Sn+IOUT0 ,DOUT=Kp×VDnTd+DOUT0 ,帶入表達(dá)式(1)中,POUT0 +IOUT0 +DOUT0是常數(shù),使用常數(shù)OUT0來(lái)表示,化簡(jiǎn)得到式(2)如下:
PIDOUT=Kp×(EnTd+Sn+VDnTd)+OUT0
(2)
其中:Sn可以用如式(3)表示:
(3)
其中:Ti是積分時(shí)間,在程序中,采樣周期、讀取周期及控制周期都是Td,PWM的輸出周期使用Tpwm來(lái)表示,Td并不是固定的,根據(jù)實(shí)際情況變化。假設(shè)先去除DOUT的影響,只有POUT和IOUT的作用,構(gòu)成PI控制器,當(dāng)系統(tǒng)偏差EnTd<0 的時(shí)候,且Sn<0,POUT和IOUT認(rèn)為在過(guò)去的這段時(shí)間內(nèi),系統(tǒng)未達(dá)標(biāo),POUT和IOUT選擇共同作用,共同作用的時(shí)間稱(chēng)之為積分時(shí)間Ti,Ti和Sn的值成反比,Ti越大,積分輸出IOUT越小。
偏差之差VDnTd的值用式(4)表示如下:
VDnTd=Tvd×((EnTd-E(n-1)Td)/Td)
(4)
其中:Tvd為微分時(shí)間常數(shù),Tvd與微分項(xiàng)作用DOUT成正比,Tvd設(shè)置的越大,DOUT越大。為了方便分析,去除IOUT。當(dāng)傳感器的回讀值Pv并沒(méi)有達(dá)到控制系統(tǒng)的設(shè)定值Sv,且偏差在向增大的趨勢(shì)發(fā)展,比例輸出POUT和微分輸出DOUT同時(shí)做增大調(diào)整,POUT和DOUT共同運(yùn)行的時(shí)間稱(chēng)為微分時(shí)間常數(shù)Tvd。在表達(dá)式(4)中,計(jì)算周期Td出現(xiàn)在分母上,Td的值取的越大,偏差變化率越小,不能充分體現(xiàn)控制系統(tǒng)變差的變化程度,在程序設(shè)計(jì)微分算法輸出DOUT時(shí),Td的值不宜取的過(guò)大[14]。
將表達(dá)式(4)中的Sn和表達(dá)式(3)中的VDnTd帶入表達(dá)式(2),得到PIDOUT輸出,如表達(dá)式(5)所示:
Kp×Tvd×((EnTd-E(n-1)Td)/Td)+OUT0
(5)
在表達(dá)式(5)中,計(jì)算得到的PIDOUT的值用于表示PWM的脈沖寬度,這種調(diào)控方式成為位置式PID,優(yōu)點(diǎn)是可直接輸出控制值;缺點(diǎn)是需要累加大量的歷史偏差值,導(dǎo)致MCU的運(yùn)算工作量過(guò)大,不適合多通道的控制[15]。
為了避免位置式PID過(guò)程中計(jì)算工作量大等問(wèn)題,引入增量式PID算法。增量式PID是計(jì)算控制量的增加值,即當(dāng)前輸出相對(duì)于上個(gè)計(jì)算周期輸出的變化值ΔPIDOUT。第n-1個(gè)計(jì)算周期的PIDOUT(n-1)的表達(dá)式(6)如下所示:
Kp×Tvd×((E(n-1)Td-E(n-2)Td)/Td)+OUT0
(6)
第n個(gè)個(gè)計(jì)算周期的ΔPIDOUT用PIDOUTn減去PIDOUT(n-1),化簡(jiǎn)后如表達(dá)式(7)所示:
Kp×Tvd×((EnTd-2E(n-1)Td+E(n-2)Td)/Td)
(7)
在表達(dá)式(7)中,EnTd表示第n次計(jì)算周期的偏差,只需要EnTd、E(n-1 )Td表示第n-1次計(jì)算周期的偏差,E(n-2 )Td表示第n-2 次計(jì)算周期的偏差,增量式PID只需要計(jì)算EnTd、E(n-1 )Td和E(n-2 )Td的偏差值,相比于位置式PID中的大量過(guò)去偏差值之和,減少了單片機(jī)的資源占用量和計(jì)算工作量。位置式與增量式PID控制的區(qū)別如下:
1)輸出不同:位置PID控制的輸出需要使用整個(gè)整定過(guò)程中累加的誤差值,數(shù)據(jù)量大;增量PID的輸出僅與當(dāng)前周期和前兩周期的誤差有關(guān),計(jì)算量少,不過(guò)多占用系統(tǒng)內(nèi)存;
2)積分部件:采用增量PID控制,為控制量增量輸出,未采用積分算法,適用對(duì)象需帶有積分部分,位置PID適用的執(zhí)行對(duì)象,不需要積分部件。
3)記憶功能:增量PID是控制量增量輸出控制,當(dāng)系統(tǒng)出現(xiàn)故障,則影響較小,執(zhí)行器具備記憶功能,不會(huì)嚴(yán)重影響系統(tǒng)的工作,而位置輸出不具備記憶功能,直接使用近幾個(gè)周期的誤差對(duì)系統(tǒng)輸出,對(duì)系統(tǒng)有較大的影響[16]。
為了解決系統(tǒng)的超調(diào)問(wèn)題,引入積分分離的控制方式。系統(tǒng)控制開(kāi)始時(shí),Pv和Sv之間存在偏差E,且E>0,在Pv和Sv第一次相等之前,所有的偏差之和都是正數(shù)相加,導(dǎo)致偏差之和比較大,偏差之和與積分輸出IOUT成正比,系統(tǒng)此刻已經(jīng)達(dá)標(biāo),POUT不再起作用,IOUT的輸出效果加強(qiáng),在PI控制中會(huì)產(chǎn)生過(guò)沖超調(diào)的現(xiàn)象,Pv會(huì)超出Sv,偏差E<0,偏差之和由于加入負(fù)數(shù),逐漸減小,IOUT的輸出效果也逐漸減小,最終Pv趨近于Sv。因此在控制系統(tǒng)中,為了避免過(guò)沖超調(diào)現(xiàn)象的出現(xiàn),在Pv和Sv第一次相等之前,將積分時(shí)間Ti設(shè)置的非常大,1/Ti無(wú)限接近0,POUT與1/Ti成正比,積分輸出也接近于0,忽略積分項(xiàng)的作用,PID算法不斷的對(duì)偏差進(jìn)行判斷,當(dāng)Pv接近Sv的80%時(shí),修改Ti的值,加入積分作用,避免積分項(xiàng)過(guò)早的投入運(yùn)行,有效的減小偏差之和,減小過(guò)沖超調(diào)的效果,這種方式稱(chēng)為積分分離,即將積分算法在早期分離出去,不用歷史數(shù)據(jù)來(lái)對(duì)當(dāng)前對(duì)象做調(diào)整。在Pv和Sv第一次相等之后,積分算法體現(xiàn)出優(yōu)勢(shì),控制系統(tǒng)一旦達(dá)標(biāo),比列項(xiàng)不產(chǎn)生作用,積分項(xiàng)使用歷史偏差產(chǎn)生控制信號(hào)。
總結(jié)如下,比例算法只考慮當(dāng)前是否有偏差,與輸入偏差成比例關(guān)系,系統(tǒng)一旦存在偏差,比例控制產(chǎn)生作用以減小偏差,單獨(dú)使用比例控制,系統(tǒng)始終存在穩(wěn)態(tài)誤差,稱(chēng)為有差系統(tǒng)。積分算法是對(duì)系統(tǒng)之前的偏差進(jìn)行累加積分,時(shí)間越長(zhǎng),積分作用越大,減小穩(wěn)態(tài)誤差,直至偏差為零。積分控制用于減小系統(tǒng)的穩(wěn)態(tài)誤差,提高系統(tǒng)控制準(zhǔn)確性,使用積分控制,導(dǎo)致相位滯后,系統(tǒng)易發(fā)生超調(diào)。因此,引入積分分離的方式,有效減小系統(tǒng)誤差積分累加值,從而控制的超調(diào)值。使用微分算法,輸出與偏差的變化率成正比關(guān)系,提前控制輸出信號(hào)的變化趨勢(shì),減小超調(diào)量。PID控制結(jié)合了比例、積分、微分3種控制算法的優(yōu)點(diǎn),適當(dāng)選取KP、KI和KD參數(shù)的數(shù)值,產(chǎn)生良好的控制質(zhì)量,具有較大的應(yīng)用范圍[17]。
為了防止數(shù)據(jù)傳遞的丟失及線程耦合產(chǎn)生競(jìng)爭(zhēng)關(guān)系,重新設(shè)計(jì)了程序框架,程序使用QMH框架(QueueMessageHandle線程隊(duì)列處理),該框架是基于生產(chǎn)者/消費(fèi)者隊(duì)列機(jī)制搭建[18],如圖7所示,在寄存器中開(kāi)辟獨(dú)立棧進(jìn)行事件或數(shù)據(jù)的隊(duì)列出入棧操作,執(zhí)行網(wǎng)絡(luò)配置、網(wǎng)絡(luò)連接、數(shù)據(jù)處理存儲(chǔ)解析等一系列事件,實(shí)現(xiàn)了事件線程之間的解耦合,確保了程序的穩(wěn)定性。
圖7 軟件設(shè)計(jì)框架
NI公司基于NI-PSP協(xié)議,提供了網(wǎng)絡(luò)變量庫(kù)(Network Variable Library),旨在解決測(cè)控系統(tǒng)分布式數(shù)據(jù)同步的問(wèn)題,用戶(hù)可以在多個(gè)分布式系統(tǒng)或程序間做數(shù)據(jù)同步,且不影響程序的運(yùn)行性能[19-20];
SVE引擎(SharedVariableEngine)用于共享變量的網(wǎng)絡(luò)發(fā)布及部署,SVE通過(guò)如圖8所示鏈路所示部屬發(fā)布該值,在B/S系統(tǒng)中,SVE客戶(hù)端起到共享變量服務(wù)器的作用。
圖8 NI-PSP服務(wù)器協(xié)議共享變量發(fā)布接收鏈路
在航天器機(jī)構(gòu)展開(kāi)任務(wù)壓力傳感器參數(shù)測(cè)控系統(tǒng)中,主控上位機(jī)負(fù)責(zé)試驗(yàn)的主要測(cè)控任務(wù),大數(shù)據(jù)的存儲(chǔ)讀取顯示處理會(huì)占有線程的運(yùn)行周期,從而延長(zhǎng)試驗(yàn)的PID控制周期,導(dǎo)致系統(tǒng)運(yùn)行緩慢,壓力控制超調(diào),穩(wěn)定誤差過(guò)大,將試驗(yàn)數(shù)據(jù)通過(guò)共享變量的形式使用NI-PSP協(xié)議發(fā)送至SVE服務(wù)器,多臺(tái)主測(cè)電腦同步從SVE服務(wù)器讀取試驗(yàn)共享變量數(shù)據(jù)做處理,不影響整個(gè)試驗(yàn)的測(cè)控速度,實(shí)現(xiàn)一主多測(cè)的試驗(yàn)?zāi)J?,?shí)現(xiàn)PID的快速控制,限制壓力超調(diào),保證控制精度。
無(wú)線數(shù)據(jù)采集軟件采用模塊化編程,根據(jù)測(cè)控需求將軟件分為試驗(yàn)登錄、試驗(yàn)配置、試驗(yàn)過(guò)程、試驗(yàn)數(shù)據(jù)分析及試驗(yàn)維護(hù)等模塊,每個(gè)模塊又分為若干個(gè)小的功能模塊,這樣設(shè)計(jì)既方便調(diào)試和修改,又可靈活配置使用于不同應(yīng)用場(chǎng)景。
試驗(yàn)登錄包括用戶(hù)權(quán)限管理及界面選擇功能;試驗(yàn)配置包括試驗(yàn)信息配置、數(shù)據(jù)存儲(chǔ)路徑配置、報(bào)警信息存儲(chǔ)路徑配置、服務(wù)器網(wǎng)絡(luò)配置、采集通道零位校準(zhǔn)及PID參數(shù)配置;試驗(yàn)過(guò)程包括:加載配置表、遍歷巡檢無(wú)線傳感器、數(shù)據(jù)采集存儲(chǔ)數(shù)據(jù)庫(kù)、動(dòng)態(tài)擬合加速度曲線、動(dòng)態(tài)修改通道設(shè)置、動(dòng)態(tài)修改PID控制參數(shù)、故障反饋重連機(jī)制;試驗(yàn)數(shù)據(jù)分析包括:數(shù)據(jù)庫(kù)讀取、歷史數(shù)據(jù)拼接和自動(dòng)生成試驗(yàn)報(bào)表;試驗(yàn)維護(hù)包括:用戶(hù)數(shù)據(jù)庫(kù)維護(hù)、試驗(yàn)數(shù)據(jù)庫(kù)維護(hù)、設(shè)備啟動(dòng)維護(hù)及試驗(yàn)表單維護(hù)等,具體的試驗(yàn)功能劃分如圖9所示。
圖9 軟件功能模塊
軟件的前面板界面如圖10所示。
圖10 軟件界面設(shè)計(jì)
系統(tǒng)設(shè)計(jì)開(kāi)發(fā)完成后,選取典型的壓力階梯控制工況進(jìn)行試驗(yàn),使用多個(gè)無(wú)線壓力傳感器連接傳動(dòng)機(jī)構(gòu)和路由器,開(kāi)啟終端服務(wù)器。編寫(xiě)工況列表,程序根據(jù)設(shè)置時(shí)間,自動(dòng)切換被控對(duì)象的壓力為10 kg、20 kg、30 kg,做壓力階梯控制試驗(yàn),分別使用常規(guī)PID算法和改進(jìn)的積分分離PID算法試驗(yàn)結(jié)果如圖11所示。
圖11 階梯壓力采集控制試驗(yàn)結(jié)果
常規(guī)的PID算法,未能及時(shí)有效地消除積分項(xiàng)帶來(lái)的超調(diào)偏差,有損壞儀器設(shè)備的風(fēng)險(xiǎn)。10 kg壓力控制工況時(shí),最大實(shí)測(cè)值為12.68 kg;20 kg壓力控制工況時(shí),最大實(shí)測(cè)值為22.71 k;30 kg壓力控制工況時(shí),最大實(shí)測(cè)值為30.66 kg,超差率較大,不符合設(shè)計(jì)要求。采用改進(jìn)的積分分離增量式PID算法,在PID控制開(kāi)始階段,設(shè)定了積分分離的百分比,在控制剛開(kāi)始的階段,積分算法不參與控制,當(dāng)控制值達(dá)到了積分分離的設(shè)置值后,積分算法參與控制,有效的控制歷史誤差的積分和,減小超調(diào)偏差。不同的積分分離百分比,對(duì)于不同的控制系統(tǒng),產(chǎn)生的控制效果不同,實(shí)測(cè)值如表3所示。
表3 實(shí)測(cè)值對(duì)比表
使用PSP服務(wù)器協(xié)議,有效的較少了PID控制周期,提高了控制精度,同時(shí)減小了超調(diào)誤差,選用90%的積分分離百分比,控制效果最佳,試驗(yàn)的超調(diào)誤差不超過(guò)0.5 kg,動(dòng)態(tài)穩(wěn)定誤差不超過(guò)±0.4 kg,符合試驗(yàn)大綱的設(shè)計(jì)要求。
基于ESP8266和LabVIEW虛擬儀器的嵌入式分布式無(wú)線壓力傳感器參數(shù)測(cè)控系統(tǒng),使用STM32微處理器、ESP8266無(wú)線模塊及ADC芯片等設(shè)計(jì)系統(tǒng)硬件,固件程序?qū)崿F(xiàn)多通道的信號(hào)無(wú)線采集和PID控制,結(jié)合LabVIEW開(kāi)發(fā)上位機(jī)軟件,采用多線程低耦合的QMH隊(duì)列框架和PSP服務(wù)器協(xié)議,實(shí)現(xiàn)了網(wǎng)絡(luò)設(shè)備多線程的并發(fā),采用增量式積分分離PID算法,實(shí)現(xiàn)了傳動(dòng)機(jī)構(gòu)與傳感器的聯(lián)合控制,系統(tǒng)在解決了航天器展開(kāi)機(jī)構(gòu)參數(shù)測(cè)試無(wú)線化的基礎(chǔ)上,提高了數(shù)據(jù)采集頻率和通道數(shù),較少了PID控制周期,提高了系統(tǒng)的測(cè)控響應(yīng)速度,減小了系統(tǒng)超調(diào),提高了PID控制精度,系統(tǒng)具備高精度和高穩(wěn)定性等特點(diǎn)。