付修鋒 賈張濤 張霄霄 楊鐵湃 安恒 李雅斯 孔祥炳 金玉川
關鍵詞 數(shù)字孿生 復雜系統(tǒng) 多機協(xié)同仿真 全數(shù)字仿真
1引言
隨著硬件處理能力的提高,復雜嵌入式系統(tǒng)中軟件的規(guī)模大幅增長,航空航天系統(tǒng)已逐漸演變?yōu)檐浖芗拖到y(tǒng),各類嵌入式軟件直接影響嵌入式系統(tǒng)的效能發(fā)揮。而當前嵌入式軟件的質(zhì)量不容樂觀,尤其是在系統(tǒng)級、分系統(tǒng)級測試驗證方面缺乏行之有效的測試手段,需要采用多層級、多粒度的測試驗證方法保證軟件測試的充分性。
近年來,基于數(shù)字孿生的測試驗證方法得到快速發(fā)展和應用,國內(nèi)多家單位已通過構(gòu)建數(shù)字孿生環(huán)境搭建復雜系統(tǒng)的系統(tǒng)級測試環(huán)境,實現(xiàn)復雜系統(tǒng)的充分測試驗證,但基于硬件的數(shù)字孿生環(huán)境構(gòu)建存在成本高、難度大、測試充分性難以度量等問題。國內(nèi)多個廠商通過指令集虛擬化與外設虛擬化技術構(gòu)建了配置項級虛擬化驗證環(huán)境,保障了多個型號測試任務的完成,并支持開展《載人航天工程軟件工程化技術標準CMS?RW?04》要求的目標碼測試,但存在配置項級虛擬化測試驗證環(huán)境難以閉環(huán)、外圍激勵模擬復雜、測試環(huán)境充分性難以保證等問題?;诖?,為了滿足型號任務高安全、高可靠系統(tǒng)測試驗證的需求,本文立足于處理器虛擬化仿真、分布式總線、基于FMI 的聯(lián)合仿真等技術方案,提出基于全數(shù)字仿真的復雜系統(tǒng)數(shù)字孿生環(huán)境構(gòu)建方案,以進一步提高復雜系統(tǒng)的測試驗證水平,保障復雜系統(tǒng)的可靠性和安全性[1~4] 。
2相關技術
2.1全數(shù)字仿真技術
處理器虛擬化技術是全數(shù)字仿真最重要的支撐技術,全數(shù)字仿真允許特定指令集上的軟件運行在另一類異構(gòu)的指令集上。在指令集層次上實現(xiàn)虛擬化,實際上是將某個硬件平臺上的二進制代碼轉(zhuǎn)換為另一個硬件平臺上的二進制代碼,從而實現(xiàn)不同指令集間的兼容,該技術也被稱為二進制翻譯。虛擬化技術實現(xiàn)主要有兩種方式,即解釋執(zhí)行、動態(tài)二進制翻譯。
(1)解釋執(zhí)行技術方案
解釋器對源二進制代碼逐條進行分析,根據(jù)譯碼結(jié)果即指令類型,分解相應的解釋例程執(zhí)行。解釋例程在一個由軟件維護的源體系結(jié)構(gòu)(包括各種結(jié)構(gòu)寄存器、內(nèi)存狀態(tài)等)上用等價的一條或多條目標指令來模擬源指令的執(zhí)行,獲得和源指令同樣的執(zhí)行效果。解釋器工作過程主要包括“取指令→分析指令→完成指令所需的操作→修改處理器狀態(tài)”等步驟,如此循環(huán),如圖1 所示。
(2)動態(tài)二進制翻譯技術方案
動態(tài)二進制翻譯(DBT,Dynamic Binary Translate)解決了代碼發(fā)現(xiàn)與代碼定位問題,動態(tài)翻譯對程序運行時得到的片段(目標代碼塊)進行翻譯,豐富的運行信息克服了靜態(tài)翻譯的缺點,該技術稱為即時編譯(JIT,Just in time)技術。
2.2分布式仿真總線
2.2.1DDS規(guī)范
DDS是對象管理組織(OMG)制定的實現(xiàn)訂閱/發(fā)布通信模式、滿足實時性要求的軟件設計標準和規(guī)范,該規(guī)范對分布式實時系統(tǒng)中的數(shù)據(jù)發(fā)布、傳遞和接收的接口與行為進行了標準化。
2.2.2DDS結(jié)構(gòu)模型
DDS 規(guī)范描述了2 個層次的接口,即以數(shù)據(jù)為中心的發(fā)布/ 訂閱層(DCPS) 和數(shù)據(jù)本地重構(gòu)層(DL?RL),其結(jié)構(gòu)如圖2 所示。DCPS 層是DDS 的基礎層,為應用軟件提供了數(shù)據(jù)發(fā)布和訂閱的功能,使發(fā)布者能夠識別數(shù)據(jù)對象并發(fā)布數(shù)據(jù); DL?RL 層是建立在DCPS 層之上的一個可選層,能夠?qū)⒎蘸唵蔚丶傻綉脤?,在?shù)據(jù)更新后自動重組數(shù)據(jù),并通知訂閱者及時更新[5~8] 。
DDS 將分布式網(wǎng)絡中傳輸?shù)臄?shù)據(jù)定義為主題,將數(shù)據(jù)的產(chǎn)生和接收對象分別定義為發(fā)布者和訂閱者,從而構(gòu)成數(shù)據(jù)的發(fā)布/ 訂閱傳輸模型。各個節(jié)點在邏輯上無主從關系,點與點之間都是對等關系,通信方式可以是點對點、點對多及多對多等。
2.2.3QoS保障
實時信息交換平臺設計通過提供QoS 策略,為各種業(yè)務提供更深程度的控制及更完善的支持。實時信息交換平臺將各種傳輸控制集中體現(xiàn)在QoS 參數(shù)上,即不同的傳輸需求無須調(diào)用不同的接口,僅須修改接口中的QoS 參數(shù),使得面向應用軟件的接口簡單化、標準化。
3基于全數(shù)字仿真的復雜系統(tǒng)數(shù)字孿生環(huán)境
3.1整體技術方案
基于全數(shù)字仿真系統(tǒng),構(gòu)建高精度虛擬化可配置的仿真環(huán)境,實現(xiàn)對復雜系統(tǒng)硬件環(huán)境的替代;由于復雜系統(tǒng)包通常包含多個處理任務,本文重點解決復雜系統(tǒng)的仿真環(huán)境與硬件環(huán)境的時鐘同步問題,保證虛擬化仿真環(huán)境與硬件時序的一致性。針對復雜系統(tǒng)虛擬化仿真環(huán)境資源開銷大、分布式協(xié)同仿真消息通信可靠性差的問題,本文提出基于DDS 的分布式協(xié)同仿真技術方案,保障復雜系統(tǒng)分布式仿真及時鐘同步及消息通信的可靠性。針對現(xiàn)有測試環(huán)境無法閉環(huán)的問題,本文提出基于FMI 集成框架的多源異構(gòu)模型接入集成方案,實現(xiàn)Matlab 和C/ C++等模型的轉(zhuǎn)換和接入,構(gòu)建閉環(huán)仿真環(huán)境。實現(xiàn)基于全數(shù)字仿真環(huán)境的復雜系統(tǒng)數(shù)字孿生環(huán)境的構(gòu)建。其系統(tǒng)結(jié)構(gòu)圖如圖3 所示。
為進一步闡述基于全數(shù)字仿真的復雜系統(tǒng)數(shù)字孿生環(huán)境構(gòu)建方案,本文主要從全數(shù)字仿真時鐘同步、高精度分布式協(xié)同仿真、多源模型仿真接入與控制等三個方面對該方案進行詳細闡述。
3.2基于DDS的協(xié)同仿真
針對復雜系統(tǒng)虛擬化仿真環(huán)境資源開銷大、分布式協(xié)同仿真消息通信可靠性差的問題,本文提出基于DDS 的分布式協(xié)同仿真技術方案,保障復雜系統(tǒng)分布式仿真的時鐘同步和消息通信的可靠性。通過同時運行多個單處理器嵌入式軟件測試平臺,形成復雜系統(tǒng)仿真測試環(huán)境的構(gòu)建,主要解決多平臺之間的實時數(shù)據(jù)交換和多個處理器之間時間同步的問題。
3.2.1多平臺之間的實時數(shù)據(jù)交換
多個嵌入式軟件測試平臺是指多個單處理嵌入式軟件測試平臺同時運行,且在運行中,一個測試平臺的輸出數(shù)據(jù)可能是另一個測試平臺的輸入數(shù)據(jù)。因此,解決多個測試平臺之間的實時數(shù)據(jù)交換問題,是復雜系統(tǒng)能否成功運行的關鍵問題之一。
復雜系統(tǒng)間的數(shù)據(jù)交換技術是基于DDS 發(fā)布/ 訂閱傳輸模型實現(xiàn)的。在復雜系統(tǒng)數(shù)字孿生環(huán)境中,每個節(jié)點都有輸出數(shù)據(jù)和輸入數(shù)據(jù)信息。按照DDS 規(guī)范,把節(jié)點的輸出數(shù)據(jù)稱為發(fā)布,把節(jié)點的輸入數(shù)據(jù)稱為訂閱。在構(gòu)建復雜系統(tǒng)數(shù)字孿生環(huán)境時,將一個節(jié)點的發(fā)布數(shù)據(jù)和另一個節(jié)點中屬于相同主題的訂閱數(shù)據(jù)捆綁起來,即可在節(jié)點需要該數(shù)據(jù)的時候快速獲取,如圖4 所示。
3.2.2多個處理器之間時間同步
復雜系統(tǒng)軟件有著自己的運行時序,因此每個單處理器嵌入式軟件測試平臺有著自己的運行時序。而復雜系統(tǒng)數(shù)字孿生環(huán)境的多個處理器同時運行時,每個處理器之間的時序同步問題也是多個嵌入式測試平臺能否正確運行的關鍵問題之一。
為了解決上述問題,采用分布式計算方式,將全數(shù)字平臺部署在用網(wǎng)絡連接的多臺計算機。為保證網(wǎng)絡通信的高可靠性,采用DDS 網(wǎng)絡中間件作為網(wǎng)絡傳輸?shù)牡讓訕?gòu)件。在此基礎上設計了基于通道的系統(tǒng)模型,如圖5 所示。
該模型由通道和節(jié)點構(gòu)成,代表了由多個配置項軟件組成的復雜系統(tǒng)。每一個單處理器軟件測試平臺代表通道上的一個節(jié)點,所有需要進行信息交換的節(jié)點都掛接在同一個通道上。節(jié)點與節(jié)點之間通過元數(shù)據(jù)(MetaData)和心跳信號(BeatData) 進行通信。節(jié)點可以全部部署在網(wǎng)絡中的一個物理節(jié)點上,也可以部署在網(wǎng)絡中的任意物理節(jié)點上。對每個節(jié)點的描述信息分為基本信息、輸出數(shù)據(jù)、輸入數(shù)據(jù)、輸出心跳名稱和輸入心跳名稱。其中,基本信息包含節(jié)點ID、通道號及節(jié)點類型等信息,這些基本信息描述了節(jié)點在平臺中的基本特征; 發(fā)布信息描述了節(jié)點輸出數(shù)據(jù)的相關信息; 訂閱數(shù)據(jù)描述了節(jié)點輸入數(shù)據(jù)的相關信息; 輸入心跳和輸出心跳都描述了節(jié)點的運行時鐘周期。
復雜系統(tǒng)數(shù)字孿生環(huán)境運行需要解決的另一個問題是多個處理器間時間同步的問題。嵌入式軟件是按照一定的時序去運行,因此復雜系統(tǒng)數(shù)字孿生環(huán)境中的每一個節(jié)點也需要統(tǒng)一步調(diào)去進行正常運行。采用引入一個同步節(jié)點,專門去同步不同節(jié)點的運行周期。解決方案如圖6 所示,具體實現(xiàn)方法如下:(1)當同一通道的所有節(jié)點已經(jīng)處于就緒狀態(tài)后,同步節(jié)點發(fā)送同步信號,當同步節(jié)點收到所有其他節(jié)點的同步好信號后,當前平臺初始化工作結(jié)束;(2)同步節(jié)點中設置同步周期,假設為1ms,平臺中任意一個節(jié)點先啟動運行,運行1ms 后,把自己的輸出心跳輸出給同步節(jié)點,然后該節(jié)點停止運行,等待同步節(jié)點下一次心跳數(shù)據(jù)。其他節(jié)點類似,當同步節(jié)點收到通道中所有節(jié)點的心跳數(shù)據(jù)后,平臺該周期運行完成; (3)平臺中所有節(jié)點運行完一個周期(1ms)后,同步節(jié)點輸出心跳數(shù)據(jù),通知平臺中所有節(jié)點繼續(xù)下一周期的運行。如此循環(huán),直至整個嵌入式軟件運行結(jié)束。
3.3多源模型仿真接入與控制
本文提出基于FMI 集成框架的多源異構(gòu)模型接入集成方案,可實現(xiàn)Matlab 和C/ C++等模型的轉(zhuǎn)換和接入,構(gòu)建閉環(huán)仿真環(huán)境。復雜系統(tǒng)的系統(tǒng)設計與驗證環(huán)節(jié)往往涉及多專業(yè)協(xié)同。典型的飛行仿真試驗涵蓋空氣動力學/ 運動學、執(zhí)行機構(gòu)、動力組件、慣性導航組件、控制算法等多專業(yè)要素。復雜系統(tǒng)的建模平臺可歸納為C/ C++,Matlab/ Simulink,SimulationX,AMESim等。
3.3.1基于FMI 標準的模型解析
當FMU 模型導入集成仿真軟件時,首先解析模型的XML 描述文件,解析流程如圖7 所示,讀取模型的屬性信息和模型的輸入輸出信息,并將每個FMU的輸入和輸出關聯(lián)起來。配置好模型參數(shù)后,仿真軟件會調(diào)用執(zhí)行文件來仿真。仿真進行時,仿真軟件對模型文件執(zhí)行調(diào)度,采用分組方式進行單線程順序或多線程仿真。
3.3.2異構(gòu)模型系統(tǒng)集成方案
模型轉(zhuǎn)換工具使用FMI 標準將不同來源的模型封裝為FMU, 實現(xiàn)接口規(guī)范化。系統(tǒng)集成基于FMI1.0/2.0 協(xié)議實現(xiàn)了相應的接口功能,能夠?qū)⒍嘣串悩?gòu)模型封裝成的FMU,將外部軟件系統(tǒng)、硬件系統(tǒng)、腳本封裝為偽FMU 并提供FMI 標準接口,可按照標準加載FMI 格式模型,與FMU 模型一同組成模型庫并調(diào)度模塊進行仿真,方案如圖8 所示。
執(zhí)行仿真試驗任務時,復雜系統(tǒng)數(shù)字孿生環(huán)境的仿真引擎可通過TCP 網(wǎng)絡協(xié)議接收控制執(zhí)行,執(zhí)行命令處理線程,將不同的FMU 或偽FMU 分配到不同的線程執(zhí)行操作,從而實現(xiàn)集成模型的被外部平臺調(diào)度的基本模式,系統(tǒng)仿真調(diào)度流程如圖9 所示。
3.4全數(shù)字仿真時鐘同步
復雜嵌入式系統(tǒng)的復雜程度日益增加,一個系統(tǒng)內(nèi)往往包含多個分系統(tǒng)協(xié)同工作,不同分系統(tǒng)通過定時器實現(xiàn)不同配置項之間的同步。虛擬化仿真運行條件下,單配置項的運行速率受指令集架構(gòu)、指令集復雜程度、指令集實現(xiàn)方案、外設復雜程度、外設接入方式的影響。復雜系統(tǒng)涉及不同的架構(gòu)處理,不同配置項之間,簡單的通過虛擬化仿真很難實現(xiàn)系統(tǒng)級協(xié)同仿真,需要提供一種可配置的協(xié)同仿真接口實現(xiàn)系統(tǒng)級協(xié)同仿真,實現(xiàn)對復雜系統(tǒng)的測試驗證。
3.4.1定時補償技術方案
嵌入式系統(tǒng)的非周期中斷需要特定的觸發(fā)條件,在滿足條件下觸發(fā)中斷即可,不是本文的重點,本文通過運行時補償技術實現(xiàn)對周期中斷時序的逐步求精,實現(xiàn)系統(tǒng)級協(xié)同仿真[9] 。運行時補償技術主要通過控制虛擬化處理器運行的執(zhí)行過程,系統(tǒng)啟動后,通過系統(tǒng)內(nèi)各個處理器的特性和參數(shù),計算出定時補償?shù)某跏贾?定時校準模塊負責記錄中斷觸發(fā)時刻并反饋給多機協(xié)同控制模塊,多級協(xié)同控制模塊根據(jù)中斷觸發(fā)時刻的誤差計算定時補償?shù)男拚蜃?,并對定時補償參數(shù)進行動態(tài)修正,逐步求精,實現(xiàn)不同配置項之間的協(xié)同。為了降低多機協(xié)同仿真開銷對整個系統(tǒng)的影響,要盡可能提高一個補償周期內(nèi)運行指令條數(shù)。基于定時補償技術的多級協(xié)同仿真技術方案及調(diào)整因子計算過程如圖10 所示。
多機協(xié)同控制是多級協(xié)同仿真的控制核心,其運行過程如下:(1)系統(tǒng)啟動,多機協(xié)同控制模塊獲取系統(tǒng)內(nèi)所有處理器(CPU)的初始狀態(tài);(2)多機協(xié)同控制模塊置處理器定時補償初始值;(3)不同處理器運行速率不同,根據(jù)運行狀態(tài)判定是否需要定時補償;(4)向多機協(xié)同控制模塊發(fā)送定時校準信息,多機協(xié)同控制模塊根據(jù)校準信息調(diào)整處理器定時補償。
3.4.2定時補償?shù)男拚蜃忧蠼馑惴?/p>
不同架構(gòu)處理器虛擬化仿真速率不同,多級協(xié)同仿真算法主要通過修正定時補償參數(shù)[10] ,將整個系統(tǒng)運行等比放慢(加快),實現(xiàn)系統(tǒng)級協(xié)同仿真。
4數(shù)字孿生環(huán)境時鐘同步結(jié)果驗證
4.1多機協(xié)同仿真試驗驗證
本文以某系統(tǒng)的控制分系統(tǒng)作為試驗驗證的應用場景,該分系統(tǒng)包含三個配置項,控制系統(tǒng)處理器為DSP C6713,氣體控制模塊處理器為DSP 2812,電源管理模塊處理器為C51,不同配置項通過兩路CAN總線進行通信,外部仿真數(shù)據(jù)通過Matlab 仿真模型進行接入。其系統(tǒng)結(jié)構(gòu)圖如圖11 所示。
基于全數(shù)字仿真的復雜系統(tǒng)虛擬化仿真環(huán)境構(gòu)建方法,構(gòu)建該分系統(tǒng)的虛擬化協(xié)同仿真環(huán)境E1;基于傳統(tǒng)全數(shù)字仿真技術方案,沒有采用DDS 和時鐘同步方案,外設數(shù)據(jù)輸入采用文本方式,搭建虛擬化仿真環(huán)境,記為E2。
本方案通過FMI 構(gòu)建閉環(huán)仿真環(huán)境,降低系統(tǒng)構(gòu)建的成本,提高仿真系統(tǒng)構(gòu)建效率,并提高外設仿真的精度;通過DDS 和全數(shù)字仿真時鐘同步兩個方面保證復雜系統(tǒng)時序仿真的精度和不同分系統(tǒng)仿真的一致性。由于引入DDS 和全數(shù)字仿真時鐘技術,對全數(shù)字仿真系統(tǒng)的仿真效率有一定影響。分別從分系統(tǒng)仿真精度、仿真效率兩個方面進行對比分析,驗證方案的合理性,并記錄分系統(tǒng)修正因子運行變化,進一步驗證本方案的可行性。
4.1.1仿真精度、仿真效率對比分析
表1 中,E1 TKs 為環(huán)境E1 對應采樣時刻仿真時鐘周期數(shù)除以硬件環(huán)境時鐘周期數(shù);E2 TKs 為環(huán)境E2 對應時刻仿真時鐘周期數(shù)除以硬件環(huán)境時鐘周期數(shù)。E1_Vmips 為環(huán)境E1 對應采樣時刻仿真效率,單位為MIPS;E2_Vmips 為環(huán)境E3 對應采樣時刻仿真效率,單位為MIPS。
試驗表明,本方案可提升復雜系統(tǒng)仿真的精度,平均精度提升3.99%,仿真精度進一步接近硬件執(zhí)行;仿真效率略有下降,下降0.96%。
4.1.2修正因子運行變化記錄
驗證系統(tǒng)三個配置項周期中斷的最大公約數(shù)為INT_GCD = 0.5ms,作為定時補償?shù)某跏贾?,控制每個虛擬內(nèi)核的指令運行情況,根據(jù)系統(tǒng)運行情況,統(tǒng)計出修正因子的數(shù)值變化,如圖12 所示。
圖12 中,橫軸表示調(diào)整因子的調(diào)整次數(shù),調(diào)整周期為0.5ms,縱軸表示調(diào)整因子的數(shù)值;多次運行該虛擬化協(xié)同仿真系統(tǒng)(35 次),記錄調(diào)整因子的變化情況,對每個調(diào)整周期的修正因子累加求平均值,修正因子具體數(shù)值如表1 所列。調(diào)整十次之后,中斷的精度誤差小于千分之二,隨著系統(tǒng)運行,系統(tǒng)會對修正因子進一步求精,實現(xiàn)復雜系統(tǒng)的協(xié)同仿真。
5結(jié)論
本文針對當前航空航天等高安全、高可靠領域嵌入式軟件的測試驗證嚴重依賴專用硬件環(huán)境、測試充分性難以保證等問題,立足于處理器虛擬化仿真、分布式總線、基于FMI 的聯(lián)合仿真等技術方案,提出基于全數(shù)字仿真的復雜系統(tǒng)數(shù)字孿生環(huán)境構(gòu)建方案,解決復雜系統(tǒng)時鐘同步、復雜系統(tǒng)分布式仿真、分布式仿真通信保障、基于FMI 的多源異構(gòu)模型接入等問題,實現(xiàn)復雜系統(tǒng)數(shù)字孿生環(huán)境的構(gòu)建。同時,本文對數(shù)字孿生環(huán)境的時序一致性進行了驗證,結(jié)果表明本方法可以提升復雜系統(tǒng)仿真的精度,系統(tǒng)能夠正確運行,中斷、時序無錯誤;整個系統(tǒng)運行過程中與硬件數(shù)據(jù)同步、一致、無差錯。該數(shù)字孿生環(huán)境在空間站某艙段分系統(tǒng)的測試中得到實際應用。