唐曦文
(上海飛機(jī)設(shè)計(jì)研究院民用飛機(jī)模擬飛行國(guó)家重點(diǎn)實(shí)驗(yàn)室)
在飛控系統(tǒng)地面模擬試驗(yàn)中需要通過(guò)已知的舵面角度θ和力矩值M來(lái)計(jì)算加載系統(tǒng)施加在舵面上相應(yīng)的載荷力F。 通常將舵面角度θ和力矩值M輸入到EXCEL 中, 利用EXCEL 軟件的公式編輯功能來(lái)計(jì)算載荷力F。 這種方法需要掌握一定的OFFICE 操作技巧, 不夠簡(jiǎn)單、 直觀, 而且EXCEL 在生成數(shù)據(jù)圖像時(shí)具有一定的局限性,后期無(wú)法對(duì)數(shù)據(jù)進(jìn)一步分析。 在此,筆者設(shè)計(jì)了一套飛控加載載荷計(jì)算軟件, 只需通過(guò)UI 輸入舵面角度θ和力矩值M即可直接計(jì)算出相應(yīng)的載荷力F,并且可將計(jì)算出的數(shù)據(jù)保存,快速生成相應(yīng)的數(shù)據(jù)圖像,且利用軟件本身的強(qiáng)大功能可以實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)光標(biāo)點(diǎn)捕捉、增加數(shù)據(jù)標(biāo)注點(diǎn)等功能以進(jìn)一步分析數(shù)據(jù),極大地提高了數(shù)據(jù)的計(jì)算效率和分析能力。
軟件構(gòu)架采用模塊/扁平化方式設(shè)計(jì)。模塊按功能劃分為副翼載荷計(jì)算、方向舵載荷計(jì)算、升降舵載荷計(jì)算、水平安定面載荷計(jì)算、縫翼載荷計(jì)算、襟翼載荷計(jì)算和擾流板載荷計(jì)算,各模塊之間相互獨(dú)立,便于后期代碼維護(hù)和功能擴(kuò)展、升級(jí)。
以縫翼載荷計(jì)算模塊為例,軟件有兩種方式計(jì)算載荷力F:
a. 單點(diǎn)模式。 先確定好通道和舵面狀態(tài)后,用戶輸入給定的舵面角度θ和力矩值M,然后點(diǎn)擊“計(jì)算”按鈕,便可直接顯示對(duì)應(yīng)的力臂L和載荷力F。 此時(shí),用戶也可點(diǎn)擊“添加”按鈕,將計(jì)算出的數(shù)值添加到“載荷譜表格”中。
b. 導(dǎo)入模式。 確定好通道和舵面狀態(tài)后,點(diǎn)擊“導(dǎo)入數(shù)據(jù)”按鈕,讀取存儲(chǔ)在EXCEL 文件中的舵面角度θ和力矩值M并添加到 “載荷譜表格”中,同時(shí)計(jì)算出對(duì)應(yīng)的力臂L和載荷力F后也添加到“載荷譜表格”中。
用戶通過(guò)上述兩種方式添加數(shù)據(jù)至“載荷譜表格”后,得到了一張包含通道/舵面狀態(tài)信息的完整數(shù)據(jù)(舵面角度θ、力矩值M、力臂L和載荷力F)表,即載荷譜。 此時(shí),用戶可點(diǎn)擊“導(dǎo)出數(shù)據(jù)”按鈕,將“載荷譜表格”中的數(shù)據(jù)保存成EXCEL 文件。用戶可根據(jù)“載荷譜表格”中的數(shù)據(jù)選擇“X”、“Y”軸所對(duì)應(yīng)的數(shù)據(jù)名稱生成函數(shù)圖像,函數(shù)圖像還具有動(dòng)態(tài)光標(biāo)點(diǎn)捕捉和添加數(shù)據(jù)標(biāo)注點(diǎn)的功能。 用戶還可點(diǎn)擊“保存圖片”按鈕將生成的函數(shù)圖像保存成圖片文件。 軟件的功能界面如圖1所示。
LabWindows/CVI 通過(guò)ActiveX 生成可識(shí)別的.c、.h、.fp、.obj、.sub 等后綴程序文件[1]。 其中,fp為函數(shù)面板文件,LabWindows/CVI 可通過(guò)fp 函數(shù)面板文件提供的庫(kù)函數(shù)調(diào)用EXCEL[2]。 具體方法步驟如下:
a. 從LabWindows/CVI 的Tools 菜單中選擇“Create ActiveX Controller”(圖2);
圖1 軟件功能界面
b. 選擇對(duì)應(yīng)所需調(diào)用EXCEL 的對(duì)象庫(kù)接口(圖3);
c. 生成可調(diào)用EXCEL、 后綴名為.fp 的面板函數(shù)文件(圖4)[3]。
圖2 ActiveX 控制器創(chuàng)建界面
圖3 EXCEL 對(duì)象庫(kù)接口調(diào)用界面
圖4 生成面板函數(shù)文件界面
通過(guò)上述步驟,LabWindows/CVI 可通過(guò)添加的面板函數(shù)文件中提供的各種庫(kù)函數(shù)實(shí)現(xiàn)對(duì)EXCEL 的調(diào)用。
當(dāng)LabWindows/CVI 通過(guò)添加面板函數(shù)實(shí)現(xiàn)調(diào)用EXCEL 時(shí), 本軟件通過(guò)面板函數(shù)中提供的各種庫(kù)函數(shù)與EXCEL 進(jìn)行數(shù)據(jù)通信, 包括對(duì)EXCEL 數(shù)據(jù)的讀取和保存,這也是本軟件的重點(diǎn)和難點(diǎn)。
軟件讀取EXCEL 數(shù)據(jù)的步驟如下:
a. Excel_NewApp(),Excel_SetProperty(),打開(kāi)EXCEL,并設(shè)置其可見(jiàn)屬性為真;
b. Excel_GetProperty(),獲得EXCEL 的“工作簿”屬性;
c. Excel_WorkbooksOpen(),打開(kāi)所需讀取的EXCEL 文件;
d. Excel_GetProperty(),獲得EXCEL 的“工作表”屬性;
e. Excel_SheetsItem(),獲得EXCEL“第一張表”屬性;
f. Excel_WorksheetRange(),獲得EXCEL 中數(shù)據(jù)單元格“范圍”;
g. Excel_RangeGetItem(),CA_VariantGetDispatch(),CA_CreateObjHandleFromIDispatch(),Excel_GetProperty(),獲得EXCEL 中單元格的數(shù)據(jù);
h. CA_VariantHasDouble(),判斷單元格中是否有數(shù)據(jù),若沒(méi)有則跳出讀取數(shù)據(jù)循環(huán);
i. CA_VariantGetDouble (),EXCEL 數(shù) 據(jù) 為variant 型, 賦值給軟件的table 控件前必須轉(zhuǎn)換成對(duì)應(yīng)的數(shù)據(jù)類型;
j. CA_VariantClear(),CA_DiscardObjHandle(),釋放EXCEL 相關(guān)的各種句柄變量。
軟件存儲(chǔ)EXCEL 數(shù)據(jù)的步驟如下:
a. Excel_NewApp(),Excel_SetProperty(),打開(kāi)EXCEL,并設(shè)置其可見(jiàn)屬性為真;
b. Excel_GetProperty(),獲得EXCEL 的“工作簿”屬性;
c. Excel_WorkbooksAdd(), 新 增EXCEL 的“工作簿”;
d. Excel_GetProperty(),Excel_SheetsItem(),獲得“工作簿”中第一張“工作表”;
e. Excel_WorksheetRange(),獲 得EXCEL 中存儲(chǔ)數(shù)據(jù)單元格“范圍”;
f. CA_VariantSetCString(),CA_VariantDouble(),Excel_RangeSetItem(),EXCEL 數(shù)據(jù)為variant 型,軟件table 控件中的數(shù)據(jù)存儲(chǔ)到EXCEL 中之前需先進(jìn)行類型轉(zhuǎn)換;
g. CA_VariantClear(),CA_DiscardObjHandle(),釋放EXCEL 相關(guān)的各種句柄變量。
筆者設(shè)計(jì)的飛控加載載荷計(jì)算軟件利用ActiveX 實(shí)現(xiàn)了LabWindows/CVI 對(duì)EXCEL 的調(diào)用,可使載荷譜數(shù)據(jù)在軟件與EXCEL 之間傳輸,利用LabWindows/CVI 強(qiáng)大的數(shù)據(jù)分析功能分析了載荷譜數(shù)據(jù), 并可將載荷譜數(shù)據(jù)存儲(chǔ)在EXCEL中。 軟件人機(jī)對(duì)話界面友好,操作簡(jiǎn)單、快捷,提高了數(shù)據(jù)分析效率,極大地減輕了試驗(yàn)人員的工作負(fù)擔(dān)。