黨 琦,董廣然,茍茹君,秦 勃
(1.西安衛星測控中心,陜西 西安 710043;
2.航天器在軌故障診斷與維修重點實驗室,陜西 西安 710043)
?
測控設備運行流程遠程定制技術研究
黨琦1,2,董廣然1,茍茹君1,秦勃1,2
(1.西安衛星測控中心,陜西 西安 710043;
2.航天器在軌故障診斷與維修重點實驗室,陜西 西安 710043)
摘要針對我國航天測控設備監控軟件采用固定的自動化流程,提出了一種遠程流程定制的方法,設計了基于Lua的自動化流程架構。通過分析研究設備的自動化流程,對關鍵技術及腳本執行效率進行了測試驗證,結果表明提出的方法可行。Lua腳本和C++語言的效率比在一個量級之內,完全勝任航天測控領域實時任務對測控流程的性能需求。這種方法能減少軟件的重復開發,實現對設備的精細化操作。
關鍵詞腳本語言;測控設備;流程定制;自動化運行;Lua

0引言
流程是測控設備自動化運行的核心。我國航天測控設備的自動化運行是固定過程的自動化運行,設備以測控計劃為依據,按照時間段劃分為若干個自動化運行流程。這種方式在單站跟蹤時能夠較好地完成任務,但是當需要多站接力測控或需要調整某個自動化運行流程時,就凸現出固定過程的缺陷:
① 多站接力跟蹤。測控設備自動按照固定過程運行,完成雙捕后自動加上行,這會對前站上行造成影響。此時需要人工對后跟蹤的設備進行操作,以降低對前站設備影響的程度。隨著發射任務越來越密集,這種方式已經不適應任務要求,嚴重影響了測控網自動化運行的工作進程。
② 設備自動化運行流程調整。測控資源監控軟件由設備研制部門設計開發,自動化流程為固定過程,要對流程進行優化或更改時,需要對所有的測控設備監控分系統軟件進行修改和測試,涉及面廣、人員工作強度大,工作效率低、影響域大,并且無法滿足多種應急預案的實施。
針對上述問題提出了一種基于Lua構建測控設備控制流程引擎的方法,實現測控設備自動化運行流程的動態調整,增強測控設備的適應性。
1Lua
Lua語言小巧、高效,能很好地與C語言一起工作[1,2],屬嵌入式腳本語言,它與PHP、Tcl、Perl、JavaScript和Python等不同,支持數據描述機制擴展功能[2],具有以下特點:
① 輕量級。Lua官方版本只包括一個精簡的核心和最基本的庫,體積小、啟動速度快,適合嵌入到別的程序里[3]。
② 可擴展。Lua以簡潔的API實現與宿主語言的接口,可通過宿主語言實現許多擴展功能,且在所有操作系統和平臺上都可以編譯和運行[4]。
③ 配置功能。Lua可以作為普通的配置文件,代替XML和INI等文件,容易理解和維護,并能以函數形式來控制變量等之間的邏輯關系,具有更大的靈活性[5]。
④ Lua具備自動內存管理,提供多線程支持功能。
由此可見,Lua很適合嵌入式流程定制技術中的設備控制語言的設計。
2航天測控設備自動流程分析
測控設備的監控分系統擔負著系統內各個設備運行狀態監視、工作參數設置、系統配置、自檢、測試、標校以及跟蹤測控等任務[6]。
正常情況下,監控分系統接收任務中心發送的測控計劃,根據計劃分解生成單圈次或多圈次的工作流程,包括系統自檢、設備標校、轉等待點、捕獲跟蹤和事后處理等[7-9]。系統的基本工作流程如圖1所示,其中T0為測控計劃中的跟蹤開始時間。自動化運行流程一旦中斷,后續工作只能通過設備監控客戶端手動操作實現。

圖1 基于計劃驅動的自動化運行流程
3基于Lua的自動化流程架構設計
3.1測控設備自動流程分解
測控設備自動化流程實際上是一種業務流程,可以被定義為一個由各種不同功能的活動組成的一系列相互關聯的任務,依照一定的業務邏輯和順序依次執行,業務流程管理正在迅速成為軟件開發獲得敏捷性和適應性的重要方法[10]。測控設備任務執行過程的自動化程度取決于系統是否支持流程可定制、可更改和可運行的目標。
現有測控設備的自動化流程相當于一種程序化的流程,一旦流程運行中斷,后續的所有工作,都需要操作員在監控客戶端以監控命令的方式手動操作。還有,當要對給定的流程進行調整,需要更動監控分系統的程序,影響域比較大,因此考慮采用流程定制的方式,遠程對流程進行控制和維護,以增強設備的適應性。
依據前面對測控設備自動化流程的分析,將自動化流程分解為以下6個子流程,如圖2所示。

圖2 測控設備自動化流程分解



對于?fi,?sik與之對應,sik包含OP的一個子集及對應的邏輯判斷。
測控設備流程執行過程如圖3所示。

圖3 流程執行過程
本文選用Lua作為腳本語言,用其定義測控設備各個自動化子流程,由此提高系統的靈活性、擴展性和高效性。
3.2流程引擎架構設計
流程引擎的主要功能是執行業務流程,而業務流程是指包含那些為用戶創造價值的行為[11],流程引擎設計的好壞、效率高低直接影響到整個業務流程管理的性能高低。
流程引擎架構如圖4所示。

圖4 流程引擎架構
本文將流程引擎分為以下5個部分:
① 遠程通信。負責與遠程中心之間的信息交互,接收遠程中心的流程配置和查詢命令,接收遠程中心發送的流程腳本文件,接收遠程中心的控制命令。
② 流程管理。包括流程裝訂和流程存儲2部分功能,負責完成遠程腳本文件的存儲和驗證,為流程執行提供流程索引服務。
③ 流程執行。包括流程加載、流程解析和流程控制3部分功能,負責流程的解析執行和執行控制。
④ 流程存儲。包括設備原子操作動態庫、腳本文件以及腳本與流程之間對應關系的配置文件。
⑤ 流程監視。負責展示流程的執行過程,為流程執行過程中的控制操作提供輔助支持。
3.3腳本與引擎交互方式
3.3.1通過堆棧的交互
Lua通過虛擬機內部的堆棧實現與宿主語言之間的交互。Lua提供了對堆棧操作的API,包括出入棧操作以及通過索引值隨機讀寫棧元素[12]。
3.3.2Lua調用引擎函數
Lua調用函數采用了函數指針的形式,在C++中定義函數時要遵守一定的規則。
Lua可通過棧傳遞無窮個參數。當Lua調用引擎函數的時候,使用和引擎調用Lua相同類型的棧來交互。獲取某變量值的代碼段如下:
static intLuaCallC(1ua_State *LState)
{
int d = luaL_checknumber(LState,1);//檢查值
lua_pushnumber(Lstatue,d);//值入棧
return1;
}
3.3.3引擎調用Lua函數
Lua通過棧傳遞參數及返回值。引擎調用Lua函數時,先把這個函數壓入棧,然后順序壓入所有參數,函數返回后,返回值存放在棧中[10]。
例如在Globa1.1ua文件中有設置UI窗口內容的Lua函數如下:
function SetWindowText(win,txtContent)
Ken_ApiManager.SetWindowText(win,txtContent)
Return 1
end
4測試與分析
測試環境:計算機采用Intel Core i7 CPU,主頻3.4 GHz,內存3G,支持工具為Lua-5.2.2。
4.1功能驗證
根據前面的論述,以現有測控設備監控客戶端程序為基礎,對設備自動化運行流程遠程定制進行了技術上的驗證。主體功能包括:
① 自動化運行流程測試腳本開發:對應6個自動化運行過程,分別編制了以下6個腳本文件:
SetParameter.lua設置任務參數
AngleAdjust.lua角度標校
DistanceAdjust.lua距離校零
Guide.lua轉等待點
Track.lua跟蹤
Aftertrack.lua事后處理
按照圖1實現了一個順序執行的自動化運行腳本,在對應的時間節點調用設置任務參數、角度標校、距離校零、轉等待點、跟蹤和事后處理等6個自動化運行流程,按照順序及時間符合執行6個腳本的C++代碼片段如下:
……
lua_State *m_plua;
PlanTime = GetPlanTime();//讀取計劃時間
while(TRUE)
{
CurrentTime = GetLocalTime();
DiffTime = Difftime(CurrentTime,PlanTime);
if(DiffTime <= 300)
{//執行任務參數設置流程
dofile(“SetParameter.lua”);
}
else if(DiffTime <= 240)
{//執行角度標校流程
luaL_dofile(m_plua,“AngleAdjust.lua”);
}
else if(DiffTime <= 180)
{//執行距離校零流程
luaL_dofile(m_plua,“DistanceAdjust.lua”);
}
else if(DiffTime <= 60)
{
luaL_dofile(m_plua,“Guide.lua”);//執行轉等待點流程
luaL_dofile(m_plua,“Track.lua”);//執行跟蹤流程
luaL_dofile(m_plua,“Aftertrack.lua”);//事后處理流程
}
}
② 腳本控制過程測試:編制了一個腳本,測試控制開始、暫停、繼續和終止等過程操作的腳本片段如下:
lua_line = 0
debug.sethook(hook,“l”)—注冊hook
—hook函數
Function hook()
lua_line = debug.getinfo(1).linedefined
while 1 do
local state = myControlState()
if state==1 then—跳出循環 繼續
break
end
if state==0 then—退出
error(aexit)
end
if state==2 then—暫停
sleep(10)
end
end
end
③ 數據顯示測試:根據需要,顯示流程運行過程中的數據和狀態信息,讓用戶充分掌握流程各運行環節執行狀態,控制數據顯示腳本片段如下:
—實現距離和速度的顯示切換,按照時間,每2 s切換一次
……
Timevalue=2—定義時間間隔初值
d=mytime()—利用宿主語言功能計算時間間隔
Speedvalue()—取速度
if d==0then
RVvalue()—取距離
end
4.2效率測試
4.2.1邏輯測試過程
在宿主語言中定義接口函數l_add,在流程文件test.lua中定義流程模塊Test_Module。腳本測試邏輯序列如圖5所示。該測試用例表征了流程引擎和流程腳本的雙向交互測試。

圖5 邏輯測試序列
4.2.2效率測試過程
配置2個測試流程,分別執行1×106次業務邏輯判斷和1×106次浮點運算。
4.3測試結果分析
分別編寫對應于4.1節的Lua腳本和C++程序,使用預先準備的測試數據完成了4.2.1的邏輯測試,說明本文采用的方法是可行的。為了說明腳本及流程引擎的執行效率,用Lua腳本和C++實現流程業務邏輯判斷效率測試過程和流程浮點運算速度測試過程,各進行了5組測試,測試結果如圖6和圖7所示。

圖6 業務邏輯判斷測試結果比對

圖7 浮點運算測試結果比對
測試結果表明,流程業務邏輯判斷效率測試中Lua腳本和C++語言的效率比近似值是7,流程浮點運算速度測試中Lua腳本和C++語言的效率比近似值是3.6。Lua腳本和C++語言的效率比在一個量級之內,完全勝任航天測控領域實時任務對測控流程的性能需求。
5結束語
根據航天測控設備的自動化流程,采用Lua腳本語言,設計了流程引擎架構,通過實驗說明,Lua能夠將程序核心和邏輯控制分離開來,在系統開發過程中,測控設備流程引擎只需提供的測控設備原子操作接口,就可以通過配置不同腳本,實現對設備的邏輯控制。
基于Lua的測控設備自動化流程定制技術很好地兼顧了靈活性和效率,并且能為軟件的后期維護提供便捷的服務支持,能節省大量的程序維護和測試時間,可節約大量的人力資源,為后續測控設備監控系統的設計有一定的參考意義。
參考文獻
[1]Roberto Ierusalimschy,Luiz Henrique de Figueiredo,Waldemar Celes.Lua-an Extensible Extension Language[J].Software-Practice and Experience,1996,26(6):635-652.
[2]Reberto Ierusalimschy,Luiz Henrique de Figueiredo,Waldemar Celes.The Imp1ementation of Lua 5.0[J].Journal of Universal Computer Science,2005,11(7):1 159-1 176.
[3]尹佳,王祖林,馮文全,等.航天器數據管理系統通用測試平臺的設計[J].北京航空航天大學學報,2010,36(3):346-349.
[4]斯庫特碼,瑪尼恩.Lua游戲開發指南實踐[M].田 劍,譯,北京:機械工業出版社,2013.
[5]鄧正陽,陳和平,蘇鵬.動態腳本語言Lua與C++交互方法的研究與實現[J].計算機系統應用,2010,19(5):198-201.
[6]黨琦,吳東星,白大明,等.基于Web的航天測控設備集中監視體系實現[J].宇航動力學學報,2013,3(2):95-98.
[7]劉軍,王軼,馬明,等.典型測控系統自動化運行的設計與實現[J].電訊技術,2005(5):197-199.
[8]高京龍.航天測控站無人值守技術分析[J].無線電工程,2011,41(12):38-40.
[9]侯錦,余軍.測站天線目標自動捕獲跟蹤設計要點[J].電子設計與工程,2011,19(10):77-79.
[10]王劍冰.一種基于流程的高效引擎開發[J].井岡山大學學報(自然科學版),2012,33(4):61-65.
[11]BAI Liang,LIANG Jiye,DANG Chuangyin,et a1.A Novel Attribute Weighting Algorithm for Clustering High-Dimensional Categorical Data[J].Pattern Recognition,2011,44(12):2 843-2 861.
[12]Reberto Ierusalimschy.Lua程序設計(第2版)[M].周惟迪,譯.北京:電子工業出版社,2008.

黨琦男,(1972—),碩士,高級工程師。主要研究方向:計算機網絡、應用軟件技術等。
茍茹君女,(1971—),碩士,高級工程師。主要研究方向:航天器遙測信息處理、應用軟件技術等。
引用格式:黨琦,董廣然,茍茹君,等.測控設備運行流程遠程定制技術研究[J].無線電工程,2016,46(1):16-19,64.
Research on Automation Process Remote Customizing
Technology of TT&C Equipment
DANG Qi1,2,DONG Guang-ran1,GOU Ru-jun1,QIN Bo1,2
(1.Xi’anSatelliteControlCenter,Xi’anShaanxi710043,China;
2.KeyLaboratoryforFaultDiagnosis&MaintenanceofSpacecraftinOrbit,Xi’anShaanxi710043,China)
AbstractTo address the problems in the fixed automation process of monitoring&control software for TT&C equipment,a new method for remote process customization is proposed,and an automation process architecture based on Lua is designed.Through analyzing the equipment automation process,the key technologies and script execution efficiency are tested and validated,and the result shows the feasibility of the method.The efficiency ratios of Lua script and C++ language are in the same level,so the Lua meets the capability requirement of real-time mission in space TT&C.The method can also reduce software re-development and enable the fine operation of equipment.
Key wordsscript language;TT&C equipment;process customizing;automated operation;Lua
作者簡介
收稿日期:2015-09-30
中圖分類號TP391
文獻標識碼A
文章編號1003-3106(2016)01-0016-04
doi:10.3969/j.issn.1003-3106.2016.01.04