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