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

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

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

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

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

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

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

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