王 萌,張 靜,王家樂
(北京強(qiáng)度環(huán)境研究所,北京 100076)
結(jié)構(gòu)靜力試驗(yàn)技術(shù),是用試驗(yàn)的方法觀察和研究構(gòu)件或結(jié)構(gòu)在靜載荷作用下的剛度、強(qiáng)度和穩(wěn)定性,分析其應(yīng)力分布和變形情況。靜力加載試驗(yàn),是用試驗(yàn)技術(shù)和設(shè)備模擬復(fù)現(xiàn)載荷、邊界條件和疲勞極限,它不僅是驗(yàn)證結(jié)構(gòu)形式的合理性和結(jié)構(gòu)靜力分析正確性的重要手段,而且為建立新的分析模型和工程理論提供結(jié)構(gòu)特性參數(shù),在產(chǎn)品鑒定、安全評估提供試驗(yàn)資料和實(shí)測數(shù)據(jù),為研制新型導(dǎo)彈與運(yùn)載火箭積累設(shè)計資料,對改進(jìn)結(jié)構(gòu)設(shè)計減小結(jié)構(gòu)質(zhì)量與提高產(chǎn)品可靠性等方面均起著重大作用。
在進(jìn)行結(jié)構(gòu)靜力試驗(yàn)中,按試驗(yàn)載荷類型分類,可分為分布載荷試驗(yàn),單一載荷試驗(yàn)和組合載荷試驗(yàn)[1]。在加載控制中需要對試驗(yàn)條件下的載荷進(jìn)行生成和控制,成熟的多通道靜力加載控制系統(tǒng)基本由國外壟斷,國外相關(guān)產(chǎn)品,如MOOG和MTS產(chǎn)品功能完備,可靠性高,但與航天靜力試驗(yàn)規(guī)范、操作流程等并不完全匹配。本文通過分析國內(nèi)試驗(yàn)流程,參照經(jīng)典譜參數(shù)設(shè)置方式實(shí)現(xiàn)譜的生成與控制,開發(fā)基于FPGA的可執(zhí)行的加載譜生成、命令控制算法與程序,滿足現(xiàn)有控制中對加載譜和命令的操作,實(shí)現(xiàn)單載荷步和多載荷步的生成與控制[2-3]。
在靜力加載試驗(yàn)中,加載情況多為分級加載、單調(diào)緩慢加載和循環(huán)加載。每一級加載用一個載荷步表示,多個載荷步組合成為試驗(yàn)加載譜。在經(jīng)典譜參數(shù)設(shè)置中,上位機(jī)操作者可以根據(jù)試驗(yàn)需求定義多個不同的目標(biāo)值,每個目標(biāo)值為一個數(shù)組,用于表示多通道的目標(biāo)值,然后根據(jù)目標(biāo)值、曲線類型、時間和循環(huán)次數(shù)等參數(shù)定義不同的載荷步。選取不同的載荷步形成一個載荷步組,不同的載荷步組及其重復(fù)次數(shù)組成一個大載荷步,不同的大載荷步及其重復(fù)次數(shù)組成一個試驗(yàn)譜,即加載譜[4-7]。
在譜生成算法中,首先基于以上參數(shù)將加載譜組裝成一個個載荷步;第二步獲取一個周期的基本點(diǎn),1 024或2 048個點(diǎn);第三步以半周期點(diǎn)為基礎(chǔ),通過查表、插值算法形成當(dāng)前控制頻率下的一個載荷步的信號;第四步將各個載荷步的信號進(jìn)行連接,形成加載譜信號,并根據(jù)不同試驗(yàn)要求實(shí)現(xiàn)加載譜生成過程中的各種控制[8-9]。
一個載荷步信號是從起始值到目標(biāo)值的離散點(diǎn)的集合,形成該信號需要的參數(shù)包括曲線類型、所用時間、次數(shù)、起始值和目標(biāo)值。其中曲線類型指從起始值到目標(biāo)值的曲線形式,如折線和正弦等,圖1為一個周期內(nèi)的三角波和正弦波曲線樣式;起始值到目標(biāo)值的過程為半周期波形(0~1);所用時間指信號生成過程中由起始值到達(dá)目標(biāo)值所用的時間;次數(shù)是指達(dá)到目標(biāo)值后返回原值再次到達(dá)目標(biāo)值的次數(shù)(1~0~1),即循環(huán)次數(shù)[10-11]。
圖1 曲線基本點(diǎn)
載荷步信號是由基本曲線點(diǎn)通過插值生成的?;军c(diǎn)為一個周期內(nèi)的1 024個等間隔點(diǎn)(1~1 024)的取值,如圖1所示。為提高精度,也可以在某一種信號中選取2 048個值作為基本點(diǎn)?;军c(diǎn)為0~1~0的過程(不包含首個0點(diǎn))。在固定采樣頻率下,根據(jù)所用時間參數(shù)可以計算出載荷步信號離散點(diǎn)的數(shù)量N,通過對前半周期基本點(diǎn)進(jìn)行查表、插值,可以得到0~1的N個離散點(diǎn),將離散點(diǎn)通過運(yùn)算可得到由起始值到目標(biāo)值的離散點(diǎn)。同樣的,通過對后半周期基本點(diǎn)進(jìn)行查表、插值可得到目標(biāo)值到起始值的N個離散點(diǎn),對離散點(diǎn)進(jìn)行組合即可得到多次到達(dá)目標(biāo)值的離散點(diǎn),即載荷步信號,如圖2所示[12-14]。
圖2 載荷步算法
在加載譜中,載荷步與載荷步之間是連續(xù)的,一個載荷步的起始值為上一個載荷步的目標(biāo)值或生成中斷后的終值,根據(jù)載荷步信號生成算法可以對加載譜中所有相鄰兩個載荷步的離散信號進(jìn)行連接,最后得到整個加載譜的離散信號。
曲線基本點(diǎn)可通過LabVIEW RT中的提供的函數(shù)計算出一個周期內(nèi)的三角波和正弦波基本點(diǎn)數(shù)據(jù),通過DMA FIFO存儲到FPGA基本點(diǎn)寄存器的不同地址中,RT同樣通過DMA FIFO將載荷步參數(shù)發(fā)送到FPGA并存儲在參數(shù)寄存器中。FPGA根據(jù)載荷步參數(shù),選擇一個波形基本點(diǎn)后對其進(jìn)行相位累加、查表、線性插值和半周期計數(shù),得到歸一化的載荷步信號,如圖3所示。
圖3 載荷步生成算法FPGA實(shí)現(xiàn)
對曲線基本點(diǎn)進(jìn)行查表、插值是將當(dāng)前點(diǎn)相位的一部分字節(jié)長度作為地址進(jìn)行查表,一部分字節(jié)長度做線性插值運(yùn)算。每經(jīng)過一次基本點(diǎn)數(shù)據(jù)的查表與計算,相位便進(jìn)行一次累加,累加量與曲線的頻率(由載荷步的時間參數(shù)計算獲得)和當(dāng)前采樣頻率有關(guān)。對于正弦信號,其相位角φ、角速度ω和頻率f的關(guān)系如下:
(1)
在采樣頻率固定的情況下,對于離散系統(tǒng)而言(采樣周期Δt為固定值),有:
φ(n)=φ0+2πnfΔt
(2)
采樣頻率R=1/Δt,則:
(3)
上述公式表述了歸一化的累加相位pn與曲線頻率f和采樣頻率R之間的關(guān)系,相位pn的周期為1,該公式對于三角波同樣適用。
在FPGA程序中,設(shè)置pn的數(shù)據(jù)格式為無符號的32位定點(diǎn)類型,而基本點(diǎn)在寄存器中的存儲類型為無符號16位定點(diǎn)類型。基本點(diǎn)數(shù)量為1 024時,每兩個基本點(diǎn)之間需進(jìn)行27次插值。相位pn的高10位(210=1 024)對應(yīng)著基本點(diǎn)在寄存器中的存儲地址,可用于查表索引,高10位之后的7位(27),其大小與插值次數(shù)對應(yīng),每完成兩個基本點(diǎn)之間的所有插值后,便向高10位進(jìn)1,基本點(diǎn)的存儲地址便加1,插值次數(shù)歸零。插值次數(shù)n可用于線性插值計算插入點(diǎn)yn:
yn=(ypn10+1-ypn10)×xpn7+ypn10
(4)
其中:ypn10是由相位pn的高10位作為查表的地址從基本點(diǎn)寄存器中索引到的基本點(diǎn),ypn10+1是緊鄰ypn10的下一個基本點(diǎn),xp7是由相位pn的后高7位的大小決定的一個[0,1)之間的數(shù)值。若基本點(diǎn)數(shù)量為2 048,每兩個基本點(diǎn)之間則進(jìn)行26次插值,相位pn的高11位對應(yīng)著2 048個基本點(diǎn)的存儲地址,高11位之后的6位,大小與插值次數(shù)對應(yīng)。
查表插值計算在FPGA上是實(shí)時進(jìn)行的,每滿半周期便計數(shù)1次,若載荷步參數(shù)中循環(huán)次數(shù)為m,則共計數(shù)2m-1后停止計算,并將數(shù)值1代替計算出的插值,保持?jǐn)?shù)值1實(shí)時輸出。輸出的新數(shù)值點(diǎn)同樣為歸一化數(shù)據(jù),與目標(biāo)值和起始值的差值進(jìn)行比例運(yùn)算得到從起始值到目標(biāo)值的具體增量,再與起始值進(jìn)行累加得到當(dāng)前載荷步的輸出信號。
多載荷步信號生成采用載荷步信號拼接的方式實(shí)現(xiàn)。由于試驗(yàn)譜參數(shù)設(shè)置比較復(fù)雜,在程序?qū)崿F(xiàn)上,首先在RT上對其參數(shù)進(jìn)行處理,如圖4所示,將目標(biāo)值添加進(jìn)入載荷步參數(shù)中,載荷步組、大載荷步和載荷譜參數(shù)按執(zhí)行順序組成由載荷步編號形成的數(shù)組,通過數(shù)組序號可索引到載荷步編號,再根據(jù)編號索引到對應(yīng)的具體載荷步,綜上所述,加載譜是一個個載荷步按順序組成的集合體。
圖4 RT中對試驗(yàn)譜參數(shù)的處理
由于在不同的載荷步組中載荷步可任意組合和重復(fù),在大載荷步中載荷步組也具有重復(fù)次數(shù)等,所以形成的載荷步編號數(shù)組的數(shù)量有可能會很大??紤]FPGA的資源問題和載荷步信號之間的連續(xù)性,使用兩個參數(shù)寄存器或一個參數(shù)寄存器的兩個地址分別存儲連續(xù)的兩個載荷步參數(shù),在FPGA中通過交替索引和順序更新實(shí)現(xiàn)載荷步的連接。如圖5所示,在RT中存儲所有載荷步的參數(shù)和載荷步編號數(shù)組,試驗(yàn)加載譜按照載荷步編號數(shù)組的索引序號順序生成相應(yīng)的載荷步信號。開始運(yùn)行后,按照數(shù)組序號的奇偶性分別將第1、2個載荷步的參數(shù)和序號(序號分別為0和1)存儲在對應(yīng)的寄存器或同一寄存器的兩個地址中。按存儲到不同寄存器為例,F(xiàn)PGA首先選擇“參數(shù)寄存器0”進(jìn)行載荷步信號的生成,生成完成后立即切換到“參數(shù)寄存器1”生成第2個載荷步,F(xiàn)PGA通過移位寄存器實(shí)時存儲生成信號的當(dāng)前值。第1個載荷步生成完成后的最終值會作為第2個載荷步的起始值,這樣能夠?qū)蓚€載荷步順利連接起來。同時FPGA將當(dāng)前載荷步運(yùn)行完畢的信息上傳到RT,RT根據(jù)該信息將序號為2的載荷步參數(shù)和序號下發(fā)到FPGA并存儲在“參數(shù)寄存器0”中。FPGA通過交替索引和更新寄存器實(shí)現(xiàn)所有載荷步之間的順利連接。
圖5 試驗(yàn)譜運(yùn)行流程
在參數(shù)寄存器中存儲的載荷步序號信息用于確定當(dāng)前運(yùn)行的載荷步在載荷譜中的位置,載荷步數(shù)組大小值在開始運(yùn)行前通過“讀寫節(jié)點(diǎn)”發(fā)送到FPGA,當(dāng)載荷步序號等于載荷步數(shù)組的大小值-1時,譜段將不再更新,運(yùn)行完該載荷步后停止運(yùn)行。
基于以上算法和程序,在FPGA上生成了一個試驗(yàn)加載譜信號,該譜由三個載荷步組成,如表1和如圖6所示,信號的采樣頻率為2 kHz。載荷步與載荷步之間實(shí)現(xiàn)了平滑連接。
表1 加載譜信號參數(shù)
圖6 加載譜信號
在試驗(yàn)譜信號生成過程中,試驗(yàn)人員可對其進(jìn)行控制,包括停止到零、譜的單步調(diào)節(jié)、單點(diǎn)控制、選擇譜段控制、運(yùn)行下一載荷步、控制方式切換等。
停止到零是一個特殊的載荷步,其作用是在試驗(yàn)譜生成過程中停止譜的生成,并將信號恢復(fù)到零的過程或譜運(yùn)行完成后自動恢復(fù)到零的過程。停止到零載荷步的目標(biāo)值為0,次數(shù)為1,將其參數(shù)存儲到“參數(shù)寄存器2”中。當(dāng)監(jiān)測到最后一個載荷步(序號等于載荷步數(shù)組大小值-1)且運(yùn)行完畢后,F(xiàn)PGA索引該參數(shù)寄存器;或在載荷步生成過程中,通過主動控制直接切換索引,以便能夠在加載完成后或過載狀態(tài)下卸載。
在靜力加載試驗(yàn)中,除實(shí)時運(yùn)行試驗(yàn)譜外,還能夠進(jìn)行載荷步的逐級加載,即一次加載只運(yùn)行一個載荷步然后保持加載值,此時就需要對譜進(jìn)行“單步調(diào)節(jié)”。“單步調(diào)節(jié)”的FPGA實(shí)現(xiàn)中,僅需通過DMA FIFO發(fā)送該載荷步參數(shù)信息且序號參數(shù)設(shè)置為1,總的載荷步數(shù)量設(shè)置為1即可,運(yùn)行完該載荷步后不會觸發(fā)停止到零載荷步,實(shí)現(xiàn)保持最終加載值的輸出。
譜的“單點(diǎn)控制”與“單步調(diào)節(jié)”類似,不同之處在于該控制方法可以重新設(shè)置目標(biāo)值、時間、曲線等參數(shù)。在RT中需要將其參數(shù)重新組裝成載荷步參數(shù),之后按照“單步調(diào)節(jié)”的方式下發(fā)信息,實(shí)現(xiàn)上位機(jī)操作者的任意加載設(shè)置。
“選擇譜段控制”指在設(shè)置好的試驗(yàn)譜中,不需要從第一個載荷步開始生成信號,而是可以任意選擇一個載荷步作為起始載荷步進(jìn)行加載。根據(jù)選擇的譜段信息,在RT中索引到該載荷步和其下一載荷步,將參數(shù)和序號下發(fā)到FPGA進(jìn)行信號生成即可,后續(xù)試驗(yàn)譜段的執(zhí)行與原試驗(yàn)譜運(yùn)行方式完全相同。
“運(yùn)行下一載荷步”指在當(dāng)前載荷步停止后,根據(jù)試驗(yàn)譜載荷步的順序生成下一個載荷步的信號,生成完成后停止。其在FPGA的實(shí)現(xiàn)中與譜的“單步調(diào)節(jié)”類似,不同之處在于不需要在RT中選擇某個載荷步,而是直接在設(shè)置好的試驗(yàn)譜中選擇下一個序號的載荷步,然后下發(fā)參數(shù)信息和序號即可。
在靜力加載試驗(yàn)中,控制方式分為位移控制和力控制兩種,“控制方式切換”是指位移信號和力信號轉(zhuǎn)換反饋的過程。力控切換到位控時,為保持輸出信號沒有較大的變化(當(dāng)前位置和受力不變),加載譜需保持當(dāng)前輸出,等到控制參數(shù)切換后輸出信號需立即切換為位移反饋量,同時試驗(yàn)譜由加載譜更換為位移譜。位移譜一般為相對量,在參數(shù)下發(fā)到FPGA中后需根據(jù)當(dāng)前反饋轉(zhuǎn)換為絕對量。
由于插值點(diǎn)與實(shí)際點(diǎn)有誤差,對于16位插值來說,分辨率為3.05176E-5,如果不是其整數(shù)倍,均會導(dǎo)致誤差的存在,16位基本點(diǎn)的取值如表2所示。
表2 16位曲線基本點(diǎn)的取值
正弦基本點(diǎn)中最大間隔為:
sin(n2)-sin(n1)=0.00308228
三角曲線基本點(diǎn)為等間隔,y(n2)-y(n1)=0.001 953 12,得出最大插入點(diǎn)數(shù)量為101,為計算方便,在FPGA的實(shí)現(xiàn)上進(jìn)行128(27)次插值,以充分利用16位的分辨率。
控制頻率設(shè)置為2 kHz,通過對載荷步時間參數(shù)的設(shè)置,在FPGA上分別實(shí)現(xiàn)0.1 Hz、1 Hz、20 Hz和300 Hz頻率的載荷步生成,選取頻率所產(chǎn)生的信號數(shù)據(jù)均不為1 024的整數(shù)倍或整數(shù)分之一,同時最后的輸出值要保證數(shù)值1的輸出,查表插值后會產(chǎn)生一個較大的誤差。通過對信號數(shù)據(jù)和上位機(jī)參考數(shù)據(jù)進(jìn)行比較,得到的誤差如表3所示,其歸一化誤差均在0.01%以內(nèi)。在FPGA實(shí)現(xiàn)上,為保證控制的一致性,將力控的壓力值和位移控制的長度值均通過靈敏度和數(shù)據(jù)格式轉(zhuǎn)換,形成有符號的16位定點(diǎn)數(shù),取值范圍為±16,可與±10 V量程的傳感器匹配。此時起始值與目標(biāo)值差值的最大比例系數(shù)為32,其誤差仍能夠控制在0.01%以內(nèi)。
表3 誤差表
在載荷步連接過程中,控制程序是通過切換參數(shù)寄存器的方式實(shí)現(xiàn)的,由于參數(shù)寄存器中信息的更新需要RT與FPGA相互配合,二者在數(shù)據(jù)傳輸中存在時間差,該時間差對載荷步的總持續(xù)時間有影響。RT與FPGA的交互信息是通過“讀寫節(jié)點(diǎn)”進(jìn)行的,該通訊是實(shí)時的,然而RT在對其進(jìn)行監(jiān)測時的最大時間間隔為10 ms。為保證RT將新載荷步信息下發(fā)并存儲到空閑的參數(shù)寄存器中,以實(shí)現(xiàn)載荷步的順利連接,每個載荷步的總持續(xù)時間不能少于10 ms。通過使用cRIO-9035進(jìn)行加載譜生成試驗(yàn),結(jié)合硬件資源實(shí)現(xiàn)了八通道加載譜不同目標(biāo)值的生成與控制過程,各通道采用串行運(yùn)算方式,單通道循環(huán)一次用時約50 ns,綜合其他控制算法FPGA可實(shí)現(xiàn)50 kHz控制頻率的信號生成。
本文研究的靜力加載譜生成和控制算法,在FPGA上實(shí)現(xiàn)了加載譜的信號生成和控制手段,滿足了當(dāng)前靜力試驗(yàn)的加載操作需求。該算法通過利用RT與FPGA的信息交互,合理分配了計算資源。綜合FPGA的資源配置,能夠?qū)刂仆ǖ肋M(jìn)行擴(kuò)展。通過對生成的加載譜信號進(jìn)行分析,其誤差在靜力加載的允許誤差范圍內(nèi),滿足靜力加載試驗(yàn)的單通道或多通道同步控制需求。對于多通道獨(dú)立控制,在FPGA上需獨(dú)立完成加載譜的寄存和實(shí)時解析功能,同時不同通道載荷步的切換與更新互不干擾,生成的加載譜與位控和力控的PID控制算法相配合,以實(shí)現(xiàn)靜力加載控制器的試驗(yàn)驗(yàn)證。