(中國航發控制系統研究所,江蘇 無錫 214063)
復雜的大型系統如航空航天飛行器、艦船、車輛等都是由機械、電子、液壓、流體、軟件、控制等不同專業系統組成的綜合體。如何更好、更快的開展大系統的正向設計工作,仿真技術已經成為復雜產品設計必不可少的重要手段[1]。
復雜的大型系統已經不再是一個單位、一個專業可以獨立完成的。面對不同領域的設計模型,如何有效集成這些不同專業、不同格式、不同階段的模型,從而開展系統級的功能、性能、接口等驗證工作,并促進不同系統之間的協調是各大型系統設計驗證過程中面臨的重要問題,通過模型的聯合仿真在設計前期就可開展相關的測試驗證工作,促進產品快速迭代以便加速其成熟。
目前,國內外在飛機、飛行器等大型系統研發過程中廣泛采用先進的分布式飛行仿真技術[2]。本文針對控制系統研發過程中的測試仿真需求,構建了一套通用的分布式仿真平臺,支持不同模型的加載、支持模型的實時仿真、支持模型間的實時通訊且可靈活擴展仿真節點。
分布式仿真系統首先需要為多個仿真模型提供通訊技術,用以實現各個模型之間的實時數據交互。為了支持各模型便捷的接入仿真網絡以及在仿真過程中不斷的升級與變更,分布式仿真系統的拓撲結構要簡單易維護,仿真模型的節點數量、節點間的通訊協議均可靈活配置。基本的網絡構型見圖1。

圖1 分布式仿真系統基本網絡構型
分布式仿真中除了基礎的實時數據通訊外,仿真節點的實時仿真能力是另一個關鍵因素。
針對航空航天等安全關鍵的領域,實時性至關重要[3]。數控系統對控制時間有著嚴格的要求,在進行仿真平臺構建時,仿真設備必須要按照控制系統規定控制周期完成規定的仿真任務,以保證仿真時序與控制時序的同步性和一致性[4]。否則仿真時序驗證不到位,與真實時序不一致則可能在后續試驗及使用過程中造成重大的隱患。
實時性并不是指傳輸速度快,它包含了一種確定性[5]。實時性是指在制定的時間內完成制定工作的能力。
在實時仿真系統中,需要與外界設備進行交互,整個響應流程包含外部事件數據的采集功能、仿真模型的運行功能、與其它系統的數據交互功能等。在安全關鍵控制系統的運行過程中,如何在限定的時間內完成對外部的響應至關重要,直接影響整個大系統的運行安全。針對實時系統異常情況產生的后果等級不同,將實時系統標準分為了兩類,硬實時系統和軟實時系統。硬實時系統的時限是剛性不可改變的任何一次偶然的超時都會帶來災難性的影響。軟實時系統的時限相對靈活,偶然的超時不會造成不可挽回的后果[6]。
針對分布式仿真系統架構的需求,本文主要開展實時仿真、實時通訊技術研究。為仿真系統提供硬實時的仿真環境,加載用戶的自定義模型開展實時仿真。利用實時通訊總線實現仿真節點的數據交互,為分布式通用仿真平臺的研發建立實時技術基礎。
對于仿真系統來說,實時性的一個關鍵點在于計算機操作系統的實時性。一般來說,操作系統負責管理計算機的硬件資源和運行在上面的應用程序。實時操作系統用于運行非常精確定時和高可靠性的應用。這些應用在仿真控制中尤為重要,不確定的時間延長對仿真性能及控制效果都會產生影響。
對于實時系統來說,任何操作都會有一個已知的最大操作時間。實時操作系統通過為程序員提供靈活的控制任務優先級,而且通常還允許檢查任務優先級,以確保重要任務的定時要求。
與實時操作系統相比,應用最廣泛的個人電腦操作系統(如Windows)被稱為通用操作系統。通用操作系統(如Windows)是為了響應用戶的各種操作和相關程序(確保“公平”),內核任務的最小時間片為10 ms[7]。實時操作系統為關鍵應用程序提供可靠、精確的定時(關注程序的優先級)。
實時操作系統具有以下特點:
1) 確定性。實時系統中運行的應用程序或者程序的部分代碼,能夠保證在一定的時間誤差范圍內,稱其為確定性;
2) 抖動小。程序開始后,首次循環相對于后續循環在時間上的差異,稱之為抖動。實時操作系統可確保在編程合理的情況下,抖動為最小水平;首次執行與后續循環執行所用的時間非常接近。
根據有關統計,目前存在的實時操作系統有上百種,應用場景各不相同,實時性能好且可應用于大型的實時應用開發系統包含QNX、VxWork、RTX等[8],針對這些常見的實時系統及非實時的Windows系統性能進行比較,其基本性能見表1。

表1 操作系統實時性指標 (μs)
QNX和Vxworks是當前應用較廣的實時操作系統,在國內外廣泛應用于航空航天等實時性要求嚴苛的領域,操作系統實時性好,但整體應用復雜,代碼移植難度較大,且費用高。
RTX是基于Windows操作系統的實時解決方案,是目前Windwos平臺的唯一純軟件的硬實時擴展子系統[9]。RTX不對Windows系統進行任何封裝或修改,其通過在HAL層增加實時HAL擴展來實現基于優先級的搶占式的實時任務的管理和調度,詳細架構見圖2。

圖2 RTX架構圖
RTX實時子系統RTSS的線程優先于所有Windows線程,提供了對IRQ、I/O、內存的精確直接控制,以確保實時任務的100%可靠性。通過高速的IPC通訊和同步機制,RTX方便地實現與Windows之間的數據交換。RTX的定時器時鐘分辨率為100納秒,最低定時器周期為100微秒[10]。
在RTX的定時器回調函數中,對I/O板卡進行操作,輸出10 kHz(0.1 ms)高低電壓方波,通過邏輯分析儀抓取定時器的時間間隔。RTX最小定時精度100 us的實測均值為99.76 μs,抖動范圍在99 μs至100.4 μs之間。詳細數據見圖3。

圖3 RTX100 μs定時精度測試圖(100 ns)
RTX作為Windows的嵌入式實時子系統,可通過共享內存與Windows進行及時的數據交互[11]。仿真平臺中可利用Windows提供友好的人機交互界面,利用RTX提供實時仿真功能。基于RTX的應用開發難度相對較小,性能指標與QNX等相當,可兼顧實時性和友好性[12]。因此,本文選用RTX作為分布式仿真系統中各仿真節點中的實時操作系統。
仿真節點作為通用模塊,需要提供通用的數據交互功能、通用的數據處理功能、能夠靈活的加載用戶自定義的不同模型功能,詳細架構見圖4。

圖4 仿真節點詳細架構圖
仿真平臺要實現通用性要求,核心在于仿真節點通用。仿真節點的通用需要設計以下幾個方面來實現,首先是要構建通用的數據接口,可通過實時總線與其它節點實現靈活的數據交互,其次需要支持模型加載功能,實現不同模型的仿真與數據交互。
通用數據接口可在實時通訊基礎上,定義通用的數據協議,利用配置的方式來實現不同節點的靈活交互。模型加載方面通過動態調用Rtdll的方式來實現[13]。仿真平臺中設計了基于Rtdll的通用接口,首先設計規范的輸入、輸出格式,其次在模板Rtdll中規范初始化、運行、關閉3個通用接口。各模型根據實際情況,可自定義通用模型接口中的邏輯,或者嵌套調用已有的Rtdll的模式,從而實現自定義邏輯的封裝。詳細模型接口見圖5。

圖5 模型模板架構
仿真系統中采用Rtdll的格式實現模型的加載,但在實際仿真過程中,來自不同單位的不同模型的格式也不盡相同。分布式仿真系統可以加載哪些類型的模型、如何加載不同類型的模型?本文設計了模型加載技術路徑可以支持源碼、Simulink、Rtdll三種格式模型的封裝路徑,詳見圖6。Rtdll類型的模型通過模型模板規范接口,以及再次封裝實現模型加載。C/C++源碼類型的模型可直接參照模型模板生成目標模型Rtdll。Simulink類型的模型可通過Matlab的RTW環境自動生成C/C++代碼,再通過模型模板封裝成目標模型Rtdll[14]。

圖6 模型加載技術路徑
仿真節點基于RTX硬實時操作系統開展設計,利用Rtdll的技術路線對用戶的模型進行加載與實時運行,同時為后續實時通訊提供了基礎的實時環境。
由于傳統的以太網不能滿足實時性能的苛刻要求,于是出現了反射內存網。反射內存是一種通過局域網在互連計算機之間提供高效的數據傳輸的技術。反射內存網硬件架構簡單[15],直接在計算機、工控機上安裝專用的反射內存卡,并用光纖網在收發之間互聯即可。整個網絡最多可支持256個通訊節點。
反射內存卡是一組雙口內存板。當數據存儲到反射內存卡時,板上的高速邏輯會自動將此數據連同地址送到網絡的其它反射內存卡板上,數據傳遞完全由硬件驅動,不需要CPU干預。反射內存網一節點寫入數據時,其它節點在400納秒內就會在相同地址處有相同數據。反射內存卡可以看成是由網上所有節點共享的單元內存卡,不存在訪問限制與仲裁,每個節點就像訪問本地內存一樣,實現了節點間的數據共享。
反射內存卡支持多種總線方式,包含PCI、PXI/PXIe等。反射內存網支持兩種拓撲結構,一是節省成本的環形拓撲結構,二是高可靠的星形拓撲結構[16]。
基于反射內存的通訊具有以下特點:高速度和高性能、使用方便、獨立于操作系統和處理機、確定的數據傳輸時間、經濟、高效等。
在分布式仿真實驗中,常規的以太網通訊網絡的通訊延遲與系統的運行狀態、網絡通訊負載相關,具有不可預測性,整體抖動大[17]。為了提高系統的置信度,需要引入先進的實時通訊技術,確保不同節點之間的通訊任務在指定的時間內完成。反射內存通訊技術是一種高速、實時通訊技術,已被廣泛應用于實時仿真、實時控制等多種領域,提升了實時系統的數據傳輸實時性以及傳輸速率[18]。
針對分布式仿真平臺的需求,為了支持模型、數采、監控等節點間的實時通訊,需要研發RTX實時系統下的反射內存實時驅動[19]。在驅動設計過程中,采用不同的實現方式進行設計時,實際應用過程中用于通訊的耗時差異較大,可達到從μs級至ms級的差異,為了滿足控制系統仿真的實時通訊要求,需要開展實時通訊性能的優化設計。對反射內存的通訊鏈路進行分析見圖7。

圖7 反射內存鏈路分析
從反射內存鏈路上分析,識別出反射內存通訊的延遲時間影響因子包含板卡間的通訊延遲和節點基本讀寫時間。通訊延遲是指板卡間的光纖通訊延遲及板卡內存到計算機內存之間的映射延時,該延時為純硬件時間,對整體影響較小[20]。寫時間和讀時間是軟件和計算機內存之間的交互時間,與驅動的設計方式密切相關,本次重點針對該延遲進行優化。
通過鏈路分析,基本讀寫時間的影響因素包含讀寫操作、通訊方式選擇、DMA閾值、傳輸量等,主要影響因素及取值范圍見表2。

表2 基本讀寫時間影響因素分析
分布式仿真平臺中各節點數據傳輸量較小,在幾百字節左右,首先針對傳輸量固定的情況設計試驗,對讀寫方式、通訊方式、DMA閾值的影響進行分析,詳細試驗設計見表3,傳輸量為1 000 B。

表3 影響因素試驗設計
通過測試,獲得1 000 B傳輸數據下的讀耗時試驗數據如圖8,不同測試的讀耗時詳細數據見圖9~12,寫耗時對比見圖13,詳細寫耗時數據見圖14~17。各模式下的平均耗時及抖動數據見表4。

圖8 1 000 B讀數據耗時數據比對

圖9 1 000 B讀數據耗時數據(測試1)

表4 讀寫數據耗時均值及抖動統計 (μs)
從表3中測試數據中可獲得通訊方式PIO和DMA模式會對讀寫時間產生影響,且DMA閾值對性能也會產生影響。DMA閾值設置合理的情況下,DMA模式下的延遲性能優于PIO模式。
為了驗證DMA閾值對性能的具體影響,在DMA模式下設計試驗,對DMA閾值、傳輸量與耗時之間的影響進行分析。

圖10 1 000 B讀數據耗時數據(測試2)

圖11 1 000 B讀數據耗時數據(測試3)

圖12 1 000 B讀數據耗時數據(測試4)

圖13 1 000 B寫數據耗時比對圖

圖14 1 000 B讀數據耗時數據(測試5)

圖15 1 000 B讀數據耗時數據(測試6)

圖16 1 000 B讀數據耗時數據(測試7)

圖17 1 000 B讀數據耗時數據(測試8)
通過測試,讀耗時的測試數據見表5,針對閾值與傳輸數據量的大小不同進行分析,讀耗時與傳輸數據量大小的關系見圖18~19。寫耗時的測試數據見表6,針對閾值與傳輸數據量大小不同,寫耗時與傳輸量之間的關系見圖20~21所示。

表5 不同數據量和DMA閾值下讀耗時統計

圖18 傳輸量與耗時關系(閾值<傳輸量)

圖19 傳輸量與耗時關系(閾值>傳輸量)
從上述數據可以看出:
當DMA閾值大于傳輸的數據量時,讀、寫耗時明顯減小,且讀寫耗時與傳輸數據量成正比;
在DMA模式下,讀寫耗時基本相當。
通過優化,控制系統仿真平臺中常用的1 000 B的實時數據通訊性能明顯比最初的PIO模式通訊性能更好,讀寫耗時從400多μs降到了30多μs,極大的提升了分布式仿真中的通訊的性能。

表6 不同數據量和DMA閾值下寫耗時統計 (μs)

圖20 傳輸量與寫耗時關系(閾值<傳輸量)

圖21 傳輸量與寫耗時關系(閾值>傳輸量)
在RTX實時操作系統基礎上,利用Rtdll的模型加載與實時運行技術方案,結合基于反射內存的實時通訊技術,本文完成了仿真節點的設計和分布式通訊網絡的設計,形成了一套通用的分布式實時仿真系統,并在某系統聯合仿真中得到應用。
針對系統中的實時仿真節點的通訊性能進行測試,測試方案見圖22。

圖22 節點間傳輸時間測試方案
首先,系統中反射內存采用DMA模式,閾值設置為4 kB。其次,由于系統中節點間的傳輸數據均小于1 kB,通過自研的配置工具對模型節點的輸出數據進行配置,設置為1 kB,模型1的運行周期在20 ms,模型2采用while方式運行。隨后,在兩個節點中加載模型,模型1用于記錄數據,模型2收到數據后直接轉發輸出。最后,運行模型并記錄t2-t1。通過多輪測試,記錄數據。測試結果建圖23。1 kB數據的傳輸延遲均值為125.5 μs,最大延遲不超過160 μs。

圖23 模型節點間的通訊延遲測
圖22方案中,傳輸延遲包含反射內存寫耗時、讀耗時、光纖傳輸時間以及其它影響因素造成的延遲。通過表4~5中的數據進行線性處理,1 kB數據讀時間為31.8 μs,寫時間為34.4 μs。光纖傳輸時間小于1 μs,只考慮上述3種影響因素的理想時間延遲為67.2 μs,小于測試延遲125.5 μs,符合理論分析預期。
本分布式實時仿真系統應用于毫秒級的聯合仿真環境,最高仿真頻率為1 kHz,節點間的延遲在125.5 μs,完全滿足仿真的實時性需求。
本文針對分布式實時仿真需求,基于RTX實時環境對仿真系統、模型加載、實時通訊技術進行研究。設計了基于分布式的仿真系統實時架構,并通過影響因子分析及詳細的數據測試,設計出實時反射內存驅動,確保系統節點間的通訊延遲在200 μs以內,保證了仿真系統實時通訊性能。基于上述關鍵技術構建的分布式通用仿真平臺已在具體項目上進行了應用,為分布式聯合仿真提供了一種有效的解決方案。