汪漢波
(中國電子科技集團公司第三十研究所,四川 成都 610041)
大型自動化試驗環(huán)境由實際儀器設(shè)備、模擬試驗系統(tǒng)和計算機仿真系統(tǒng)構(gòu)成,分布于各個試驗節(jié)點。各個試驗節(jié)點相互協(xié)作,共同完成試驗任務(wù)。為了高效協(xié)同完成試驗,實現(xiàn)對試驗環(huán)境中各個試驗分系統(tǒng)、節(jié)點、通信設(shè)備和實驗過程的控制和管理,需要建立試驗控制管理系統(tǒng),通過它來檢驗試驗設(shè)備在各種環(huán)境下的工作情況,實現(xiàn)試驗過程的部分自動化運行,減少人工操作干涉,提高試驗的效率。
試驗控制管理系統(tǒng)是實驗室的控制和管理中心,由總控模塊和控制代理模塊構(gòu)成。總控模塊部署在總控服務(wù)器上,由管理員操作,實現(xiàn)對各個分系統(tǒng)、節(jié)點和設(shè)備的管理。控制代理模塊部署在各被控設(shè)備上,用于接受控制模塊的指令,實現(xiàn)對被控設(shè)備的管理。
事件控制是試驗過程控制的基礎(chǔ)。根據(jù)事件表依次執(zhí)行事件,推進試驗進行。各個試驗節(jié)點的事件需要調(diào)度和同步,以便配合完成試驗。
試驗控制主要是通過對事件的調(diào)度來完成。事件是試驗控制基礎(chǔ)和依據(jù),由試驗規(guī)劃生成,形成事件表下發(fā)到各個控制代理,由控制代理依據(jù)事件表來完成對本節(jié)點試驗流程的控制。需要解決2方面的問題:①事件調(diào)度:節(jié)點控制代理按照什么樣的方式進行事件的調(diào)度,以按照規(guī)劃的事件表來完成試驗流程的控制;②事件同步:采用何種方式實現(xiàn)整個試驗系統(tǒng)全局事件的同步。
事件調(diào)度可以采用2種方式:事件驅(qū)動和時間驅(qū)動。
事件驅(qū)動方式下,事件間的邏輯關(guān)系一般是由多個節(jié)點間的事件構(gòu)成,單由一個節(jié)點的控制代理難以完成事件的調(diào)度,必須由總控統(tǒng)一協(xié)調(diào),這樣大量的控制工作都集中到了總控,容易形成性能瓶頸,影響試驗的效果。因此這種調(diào)度方式不適合大規(guī)模的系統(tǒng)試驗。
時間驅(qū)動方式下,事件的調(diào)度按照時間的推進來進行,規(guī)劃時只需要明確什么時間觸發(fā)某一事件即可,各節(jié)點控制代理也可以獨立地按照自己事件表順序調(diào)度事件,而不需要關(guān)心其它節(jié)點的運行情況。易于實現(xiàn)分層的試驗控制結(jié)構(gòu),大量控制工作分散到了各控制代理,減輕了總控的負擔(dān)。在實現(xiàn)了各節(jié)點時間同步的基礎(chǔ)上這是一種簡單、有效的調(diào)度方式。
綜上所述,事件的組織和調(diào)度主要基于時間推進而驅(qū)動,同時為便于因果邏輯事件的處理,在時間驅(qū)動中加入一定的事件邏輯關(guān)系處理能力。
試驗規(guī)劃完成后以各節(jié)點的事件組成獨立的事件表,事件表中詳細定義了事件的內(nèi)容、觸發(fā)條件、以及事件間的邏輯關(guān)系。事件設(shè)計如表1所示。

表1 事件表
序號:試驗規(guī)劃時為每一個事件分配的全局唯一編號;觸發(fā)節(jié)點:觸發(fā)該事件的節(jié)點號;事件內(nèi)容:描述該事件要求完成的動作;目的節(jié)點:事件內(nèi)容中描述的動作涉及的目的節(jié)點號,一個事件可以涉及多個目的節(jié)點;推進步長:該事件完成后到下一個事件觸發(fā)之間需要推進的時間;觸發(fā)條件:觸發(fā)該事件需要滿足的條件,即當(dāng)哪些事件已經(jīng)產(chǎn)生才能夠觸發(fā)該事件。觸發(fā)條件描述了事件間的邏輯關(guān)系,可以在按時間推進的基礎(chǔ)上增加按事件驅(qū)動調(diào)度的能力。
控制代理依照事件表中定義的時間順序和邏輯關(guān)系進行事件的調(diào)度,基本事件推進過程如圖1所示。
當(dāng)試驗總控下發(fā)啟動指令時,觸發(fā)啟動事件,控制代理開始依據(jù)事件表進行事件的推進。
后續(xù)事件根據(jù)事件表中定義的到下次事件推進的步長來確定在某一時刻觸發(fā)。
當(dāng)收到總控下發(fā)的停止指令時,觸發(fā)停止事件,結(jié)束事件推進;也可以在事件表中定義最后一個事件觸發(fā)后等待多長時間自動觸發(fā)停止事件。

圖1 事件推進過程
對于未滿足觸發(fā)條件的事件,有2種處理方式:①將其丟失不執(zhí)行,繼續(xù)推進事件表后面的事件;②將其放入到一個等待事件隊列中,然后繼續(xù)推進事件表后面的事件,等到其相關(guān)聯(lián)事件的產(chǎn)生后,再觸發(fā)該事件。可以根據(jù)事件的類型和其在試驗過程的作用來選擇采用何種處理方式。
在試驗過程,控制代理每完成一個事件的工作都需要實時的向試驗總控上報當(dāng)前的試驗運行狀態(tài),使總控了解該節(jié)點的事件推進情況。總控維護有全局事件表,全局事件表中定義有節(jié)點間事件的邏輯關(guān)系,總控通過監(jiān)控各節(jié)點的運行狀態(tài),來協(xié)調(diào)它們之間的調(diào)度和推進流程,如圖2所示。

圖2 總控調(diào)度事件
各個控制代理根據(jù)各自的事件表推動試驗運行,考慮到仿真系統(tǒng)的仿真時間可能快于或慢于實際系統(tǒng)時間,而且存在事件推進中的異常和人為的調(diào)整事件表,會對整個試驗的全局事件同步造成影響。因此,需要試驗總控來統(tǒng)一協(xié)調(diào)各控制代理間的事件同步。
事件同步的基本原則是按照最慢節(jié)點的推進速度進行同步。對事件同步分以下3種情況考慮。
1)當(dāng)仿真系統(tǒng)運行速度快于實物系統(tǒng)運行速度,依據(jù)按照最慢節(jié)點同步的原則,需要按實物系統(tǒng)的物理時間來推進試驗,因此,仿真系統(tǒng)內(nèi)部可以通過增加時延的方式,與實物系統(tǒng)事件同步。這一同步控制可以由仿真控制代理(仿真控制系統(tǒng)獨立完成),不需要試驗總控進行協(xié)調(diào)。
2)當(dāng)仿真系統(tǒng)運行速度慢于實物系統(tǒng)運行速度,依據(jù)按照最慢節(jié)點同步的原則,需要實物系統(tǒng)也按照仿真系統(tǒng)的運行速度來推進試驗,因此,必須對每個實物節(jié)點的運行速度進行調(diào)整,這需要由試驗總控來進行協(xié)調(diào)才能完成全局的事件同步。
3)當(dāng)某個節(jié)點的事件推進出現(xiàn)異常,對后續(xù)事件的推進帶來影響時,會造成整個試驗全局事件的不同步,這也需要由試驗總控來協(xié)調(diào)處理。
因為仿真系統(tǒng)快的情況可以由仿真控制代理獨立實現(xiàn)事件同步,因此主要需要解決是后2種情況。
仿真系統(tǒng)運行速度慢于實物系統(tǒng)時,必須由總控參與協(xié)調(diào)各控制代理間事件同步。
同步的基本思路是計算仿真系統(tǒng)慢于實物系統(tǒng)的時間誤差△T,通過總控的控制將該誤差值增加到所有節(jié)點事件表的推進步長中,使實物節(jié)點按照仿真系統(tǒng)的運行速度來推進試驗,達到全局的事件同步。如為原有推進步長TO,則重新計算后的新推進步長TN有:

事件同步原理如圖3所示。

圖3 事件同步原理
具體的處理流程如圖4所示。
試驗開始后仿真控制代理(仿真控制系統(tǒng))實時監(jiān)控仿真系統(tǒng)的運行速度。當(dāng)仿真運行速度慢到一定程度時(超過預(yù)先定義的時間誤差閥值 TT),仿真控制代理暫停所有仿真節(jié)點的運行,計算并向試驗總控上報時間誤差△T;總控收到上報后,暫停所有節(jié)點的運行,并將△T通知給各試驗節(jié)點的控制代理,控制代理根據(jù)仿真時間誤差,重新計算事件表,將所有事件的推進步長均增加△T;所有節(jié)點完成同步后,總控重新啟動所有節(jié)點的運行,使所有實物節(jié)點與仿真系統(tǒng)從同一時刻重新開始試驗,實現(xiàn)事件同步。
為降低事件同步對試驗流程的影響,只有當(dāng)仿真延時變化達到一定誤差閥值,對試驗推進將造成極大影響時才進行事件同步。時間誤差閥值TT可以根據(jù)規(guī)劃的事件間最小步長或平均步長乘以一個系數(shù)計算獲得。
節(jié)點試驗運行出現(xiàn)異常會造成整個試驗全局事件的不同步。需要其它的控制代理暫停試驗,調(diào)整相應(yīng)節(jié)點的事件表,然后等待異常節(jié)點推進到正常事件時,再重新啟動試驗。

圖4 事件同步處理流程
事件控制應(yīng)用于某試驗環(huán)境中,采用的服務(wù)器操作系統(tǒng)為 Windows 2000 Server,客戶端操作系統(tǒng)為Windows 2000 Professional,數(shù)據(jù)庫為Oracle 9i。開發(fā)工具為 Visual C++ 6.0 Enterprise。試驗總控部署于服務(wù)器,控制代理部署于超過200個節(jié)點,試驗管理人員錄入試驗?zāi)_本后,轉(zhuǎn)化為系統(tǒng)識別的事件表。事件表按節(jié)點分割后,分發(fā)到各個節(jié)點。事件表內(nèi)容為XML文件形式。各個節(jié)點在試驗總控的指令下,按照事件表的約定進行試驗。圖5為實際應(yīng)用部署圖。

圖5 實際應(yīng)用部署
該實驗室控制管理系統(tǒng)經(jīng)過用戶測試,得到以下結(jié)果:①控制管理節(jié)點數(shù)量不少于300個試驗節(jié)點;②時間同步服務(wù)器可同時連接客戶端數(shù)量不少于300個;③單個試驗事件總數(shù)可不少于30 000個,即每個試驗節(jié)點平均事件數(shù)不少于100個;④各節(jié)點事件出現(xiàn)誤差后,可在0.5 s以內(nèi)實現(xiàn)同步;⑤單節(jié)點出現(xiàn)異常,事件控制機制在1 s以內(nèi)停止其他參試節(jié)點的運行;⑥試驗內(nèi)容規(guī)劃的時間精度達到秒級;⑦規(guī)劃下發(fā)及節(jié)點初始化點時間小于60 s;⑧網(wǎng)絡(luò)時間同步誤差不大于50 ms。
經(jīng)過在試驗環(huán)境中具體應(yīng)用,及用戶的測試,可以看出,在試驗管理中加入事件控制后,提高了試驗過程的可控性,試驗?zāi)_本分解為步步推進的事件,經(jīng)過調(diào)度,有效避免試驗過程因同步問題產(chǎn)生偏差,確保試驗順利進行,減少了人工干預(yù)操作,確保試驗結(jié)果具有檢驗實際效能的意義。
[1] 單家元,孟秀云,丁艷.半實物仿真[M].北京:國防工業(yè)出版社,2008.
[2] 李露楠,熊華鋼.基于 HLA的半實物仿真時間管理策略的研究和實現(xiàn)[J].遙測遙控,2006,27(02):58-62.
[3] 劉芳.分布式仿真系統(tǒng)中想定系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2007.
[4] 劉延彬,金光.半實物仿真的發(fā)展現(xiàn)狀[J].仿真技術(shù),2003(01):27-32.
[5] 宋銘利,王素麗.試驗數(shù)據(jù)管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2011(05):1680-1683.