, ,
(中國工程物理研究院計算機應用研究所,四川 綿陽 621900)
經過信息時代的高速發展,嵌入式系統已經覆蓋到人類生活的各個方面[1-4]。在武器裝備領域,嵌入式系統結構及通信模式呈網絡化發展趨勢,逐漸從單一嵌入式系統發展到多總線類型、多節點協同的網絡化嵌入式系統[5]。網絡化嵌入式系統各節點間多采用復合網絡(包括CAN、1553B、串口、以太網絡、ARINC429等總線類型)作為載體進行信息或數據的采集、傳輸、控制,交互關系復雜,總線接口類型眾多[6-7],其質量保證是一個研究熱點。半實物仿真測試作嵌入式系統質量保證的重要手段,越來越受到人們的重視[8-9]。
目前國外已經出現了一些嵌入式系統半實物仿真測試平臺,如ADS-2系統、Dspace系統等[10-11]。在國內,半實物仿真技術在高速列車網絡控制、工業生產與監控、衛星姿態控制等領域也有了一些研究,建立了專用的半實物仿真測試平臺[12-15]。但這些多是專用的測試平臺,通用性不夠,且這些平臺的測試腳本解析、測試數據解析與收發、測試同步控制、測試任務調度等都是通過測試引擎來完成的[16],這種設計理念會導致測試引擎的負擔過重,一旦變為分布式部署,系統的仿真性能會急劇下降。同時,針對網絡化嵌入式系統總線接口類型眾多的特點,其接口協議的可擴展性也不能得到很好滿足。因此,如何搭建支持分布式部署、接口協議擴展方便的網絡化嵌入式系統半實物仿真測試平臺,具有重要的研究價值。
針對該問題,本文結合網絡化嵌入式系統實際測試需求,設計基于分層架構的半實物仿真測試平臺。該平臺采用“分層+分布式”設計理念,支持各種常用總線通信協議仿真,并且支持其他總線通信協議接口擴展,能夠根據協議自動注入激勵并執行。
在現有研究基礎上,本文設計的通用可配置的激勵數據器的整體技術方案如圖1所示。它模擬實現了真實設備的內部處理邏輯,以接收的報文和讀取的數據為輸入,產生激勵數據,并通過虛擬通信總線將激勵數據注入到被測試設備中。
本文設計的半實物仿真測試系統采用“分層+分布式”設計理念,物理結構分為客戶層、網絡層和控制執行層。客戶層包括各種客戶終端,主要面向測試人員,負責測試環境配置部署、測試腳本和領域化協議庫的設計編輯、測試腳本解析分發等,客戶層的終端可以部署在多臺PC終端上由多名測試人員分別控制,也可以部署在單臺PC上;網絡層主要部署分布式協同仿真總線,對整個分布式測試環境進行交聯互通,并提供高可靠、高實時性的數據通信;控制執行層有多臺測試處理機組成,是測試的具體執行者,負責根據測試腳本,調用領域化協議庫中預置的協議和算法組成具體的單個測試激勵數據幀,并通過具體的總線接口注入到被測設備來完成實際的測試。測試環境硬件結構如圖1所示。

圖1 測試環境硬件結構
本半實物仿真測試系統的整體邏輯架構包涵2層:第1層為客戶層;第2層為多節點的控制執行層。基于“分層+分布式”結構的半實物仿真測試環境系統整體架構如圖2所示,其相比于傳統的半實物仿真架構具有以下優點:
1)將測試業務邏輯與具體激勵數據幀結構分離,使測試腳本設計更簡單,評審更容易;
2)簡化了仿真測試引擎的“負擔”,提高了仿真測試系統的性能;
3)使接口協議的可擴展性需求得到較好滿足;
4)使測試人員從繁瑣的編幀工作中解放出來,更關心業務層測試用例的設計。

圖2 半實物仿真測試平臺體系架構
平臺包含與用戶交互的控制、監控、部署等終端,執行層的控制器、半實物仿真測試儀器等,如圖3所示,其測試過程如下:測試引擎解析測試腳本,生成各個分布式節點的測試控制腳本并分發到各個節點控制器,控制器根據測試控制腳本生成測試序列并調用領域化協議庫中預置的協議和算法,組成具體的單個測試激勵數據幀,并通過半實物仿真環境的真實總線接口注入到被測設備進行測試,測試平臺再實時采集被測設備的輸出數據并發送至數據監控終端。

圖3 集成化仿真測試平臺測試過程
本文仿真平臺設計的核心思想是采用分布式結構,減輕測試引擎負擔,將測試任務調度、激勵數據生成等核心任務分解到各測試處理機的控制器上,其較傳統半實物仿真測試系統的不同之處主要體現在分布式協同仿真總線和控制器上,因此,本文重點闡釋仿真總線及控制器的設計。
針對分布式協同仿真系統,分布式協同仿真總線采用分層的設計模式,采用基于Actor模型的PRC架構,將基于消息派發的集中式總線結構重新劃分,分布在不同組件的之間,形成網絡化的總線結構,靈活實現多設備、多總線類型、多總線協議的通信機制,實現分布式多節點協同仿真。分布式協同仿真總線的架構設計主要分為網絡傳輸層、RPC層、Actor層和服務層,其架構設計如圖4所示。

圖4 分布式協同仿真總線架構
分布式協同仿真總線定義了以數據為中心的發布/訂閱機制,目的是簡化分布式系統中數據的有效發布。其中:RPC層提供了數據發布的基礎架構。消息發布中間件可以在分布式協同仿真平臺通信中提供輕便的、實時信息傳送的中間件技術。基于RPC的分布式仿真總線能夠建立服務組件之間的統一尋址模式。根據仿真的粒度、功能及邊界劃分,形成獨立的Actor模型,實現基于Actor的消息派發及轉換機制;服務層主要包含部署服務、設備管理服務、測試引擎等功能組件,針對仿真設備端口內部的行為或邏輯,采用狀態機的方式實現,當狀態機觸發外部通信時,采用FIFO通信機制,實現端口級的消息交互,能夠有效提升分布式系統的仿真性能;另外,通過線程池的技術方法保證多個Actor模型并行運作,可以避免因單節點死鎖導致系統阻塞的情況,支持構建準實時、分布式組件管理的仿真運行環境。
本文系統中各業務子系統均由Actor模型實現,各Actor之間的協作通過過程調用完成。這些過程調用由RouteActor轉發,其過程如圖5所示。

圖5 Actor模型RPC總體序列圖
分布式節點通過基于RPC的仿真總線實現具體的連接,針對總線接口類型不同,接口連接方式復雜(包括單向連接、雙向連接、選擇性連接)的情況,采用“節點-設備-端口”三級尋址的方式,定位到端口級,而端口級的通信則采用規則鏈表,徹底解決了多設備多接口互連的難題。與廣播模式相比,規則鏈表通過選擇性投遞數據,能夠隔離廣播數據,優化基于RPC的軟總線,大幅減少數據通信量。通過規則鏈表可以對仿真設備的任意端口添加任意條件的規則,通過特定的事件觸發規則,實現對仿真測試平臺的監測、故障注入、事件追蹤、測試流程回放、日志記錄及顯示。
2.2.1 基于XML的測試控制腳本設計
測試控制腳本模擬了某個節點的測試業務邏輯,業務邏輯文件通常以XML的形式體現,定義了一個設備資源的運行流程和處理邏輯,包括設備所有的狀態、各個狀態下能夠處理的事件、每個事件的影響函數以及狀態的遷移等,具體如下:
在上述業務邏輯文件中,規定了主控軟件的狀態遷移和事件處理流程:主控軟件在初始化完成狀態下接收到長延時結束指令或再入延時指令后轉換為不解除保險狀態,接收到的加速度值連續50個值大于5g時轉入解除保險狀態,并解除了每個指令對應的執行動作和參數。
2.2.2 領域化協議庫設計
領域化協議庫是將最基本的協議庫以及測試端口的配置等測試過程中最簡單的接口數據進行統一封裝,領域化協議庫主要包括報文格式的描述:規定接收報文和發送報文的具體格式,通信方式的描述:指明報文的傳輸方式和接收對象,使測試序列解析模塊能夠生成具體的測試序列,具體如下:
2.2.3 測試序列解析方法
在本文平臺的研究中,測試控制腳本規定了設備需要完成動作的執行順序,包括動作的開始時間、動作的周期、動作的傳遞參數等。在測試數據的產生過程中,測試序列解析模塊首先加載、解析測試控制腳本,通過對測試控制腳本的解析,加載相應的動作執行函數,形成內部測試任務隊列。當動作的開始時間達到后,該動作就會被執行,依據動作的執行順序,測試序列解析模塊依據領域化協議庫中預置的協議和算法,并按照傳輸網絡類型和目的地進行數據幀封裝,形成在特定網絡上能夠使用的數據幀,并利用驅動模塊,發送給被測設備,形成自主測試數據。控制層的測試序列解析過程示意圖如圖6所示。

圖6 測試序列解析示意圖
2.2.4 測試任務調度方法
分布式多節點仿真測試的整個測試環節,測試腳本的自動運行技術,是實現自動化測試的基礎。通常測試腳本都是采用邊解釋/編譯、邊執行的方式,能夠滿足一般性軟件測試的需求,可是對于實時性軟件測試而言,由于腳本執行的效率受限于腳本解釋器/編譯器的執行速度,特別是存在大量腳本需要執行的情況,因此這種方式很難滿足要求。提高腳本執行效率的關鍵是:在測試控制器的設計上,將腳本的解釋和執行分離,即測試腳本下發到控制器器時先進行解析,形成測試任務隊列,后當動作執行時間達到后,測試控制器來調取執行,省去了解釋腳本的時間,客觀上提高了測試的實時性。本文為滿足實時性軟件測試要求,設計的測試腳本自動運行方法如圖7所示。測試腳本自動運行框架由客戶端的測試腳本分發服務和測試處理機中的測試序列解析、測試任務調度、測試任務執行等功能模塊組成。本文框架采用腳本解釋與執行互相分離的方式,通過測試序列解析,將測試任務分解為最小執行單元,調用各接口與被測對象交互,獲得測試反饋的模式實現。

圖7 測試腳本自動運行框圖
測試腳本中包含了動作、數據、測試邏輯3個方面內容[7],平臺對腳本解析后的執行過程由任務調度、延遲處理、測試反饋、外部調用4個部分構成:
1)任務調度。測試腳本有測試序列繼續模塊解析后,分解為任務,加入到生成的任務隊列中。出隊列轉化為最小執行單元任務的方式可以是立即執行、條件執行、并發執行3種方式,取決于從腳本進入到任務隊列時測試任務的標識。
2)延遲處理。單元任務執行的時刻,如果腳本中有延時控制,則在循環時鐘模塊介入下,經過精確的時鐘等待從任務隊列轉化為最小執行單位且立即執行;在沒有延時執行最小測試單元的情況下,直接實時調用串口、以太網、CAN口等接口與被測對象交互,完成測試動作執行。
3)測試反饋。反饋到測試任務管理器的包括兩種測試反饋,一種是測試任務執行的時刻,任務等待時間,任務執行線程的序號等測試任務執行反饋;另一種是在最小執行單元完成接口測試動作后的接口回令等測試結果反饋。測試腳本程序負責接收管理測試反饋,并記錄日志。
4)外部調用。為了實現測試腳本自動運行的受控,項目方案中預留了外部接口,在分布式仿真平臺其他功能模塊有需要或者在以后有多個被測對象有協同需求時,可以通過外部調用接口讀取測試任務管理器中的測試反饋日志等信息,發送控制命令,實現對測試腳本運行的實時控制。
通過測試腳本調用平臺的資源,控制測試步驟的自動執行,實現與被測系統的信息交互。
基于以上平臺體系結構和任務調度方法的仿真測試平臺已經成功應用于某測控系統的測試,圖8給出了部署控制終端界面截圖。該系統的接口類型包括CAN、1553B、以太網、ARINC428、RS485/422、AD等,最小仿真精度為200 μs。測試中通過領域化協議庫將全部總線接口數據進行封裝并下發,運行所有測試用例187個,耗時2.1 h,均滿足實時性要求并且得到正確數據結果。在某控制系統軟件的測試中,體現出本平臺分布式性能好好、測試效率高、實時性高的特點。

圖8 部署控制終端界面
對于該平臺的實時性能評估,采用的測試環境為H3C千兆交換機;部署控制終端為研華ACP-4320-JY7工控機,8 GB內存,Windows7操作系統,千兆網卡;測試處理機為NI PXIe-8135 Core i7-3610QE,EST操作系統,千兆網卡。本文設計的測試過程如圖9所示。通過信號發生器給1號測試處理機節點的DI端口輸出高電平,測試處理機1在查詢到高電平后向測試控制器發送變更通知,控制器在收到變更通知后通過CAN端口輸出數據幀,后向測試操作終端輸出變更通知,利用示波器監測信號發生器與測試處理機CAN端口輸出的高電平之間的時間差來評估平臺的實時性。

圖9 實時性測試過程
實時性評估分2次進行:首先對測試引擎負責所有節點的測試任務調度、測試數據解析收發的傳統半實物仿真測試平臺進行評估,如圖10(a)所示,其延時時間為200.94 μs;然后評估本文設計的分布式協同仿真半實物測試平臺,如圖10(b)所示,其延時時間為135.54 μs。由此可見,本文設計的平臺架構、測試任務調度方法對仿真測試平臺的性能提升效果非常顯著。

圖10 實時性評估結果
本文針對網絡化嵌入式軟件交互關系復雜、接口種類眾多、具有強實時性要求的特點,在現有研究的基礎上,設計一種基于分層架構的半實物仿真測試平臺。該平臺采用“分層+分布式”的設計理念,基于分布式結構簡化測試引擎,將測試任務調度、激勵數據生成等核心任務分解到測試處理機的控制器上,通過領域化協議庫的方式支持各種常用總線通信協議仿真,并且支持其他總線通信協議接口擴展,能夠根據協議自動注入激勵并執行。應用結果表明,該平臺通用性好,測試效率高,實時性達到百微秒級。目前本文平臺只支持半實物仿真測試,下一步將重點研究能夠無縫集成半實物仿真系統、全數字仿真系統和實裝系統的一體化集成仿真測試平臺。
[1] 陸蓮芳.基于ARM的嵌入式系統開發方法及其應用研究[J].軟件導刊,2012,11(7):36-38.
[2] NI F,GAO X P,LONG X.PCSim:A Multithreaded Full-system Simulator for Embedded Software Develo-pment[C]//Proceedings of ESEP’11.Singapore:Elsevier Ltd.,2011:7763-7773.
[3] 何 勉,許 軍.基于嵌入式WEB的智能家居系統設計[J].陜西理工學院學報(自然科學版),2017,33(1):39-43.
[4] 蔣存波,孔祥麗,金 紅,等.具有射頻識別功能的嵌入式低功耗智能鑰匙設計[J].計算機工程,2017,43(7):54-59.
[5] de OLIVERIRA R S,CARMINATI A,STARKE R A.A Necessary Test for Fixed-priority Real-time Multiprocessor Systems Based on Lazy-adversary Simulation[C]//Proceedings of 2014 IEEE International Conference on Simulation and Modeling Methodologies,Technologies and Applications.Washington D.C.,USA:IEEE Press,2014:321-329.
[6] HAN W J,YAN H,DONG Z H.Design and Implementation of the Embedded Software Testing Platform for the Gun Fire Control System[C]//Proceedings of CiSE’09.Washington D.C.,USA:IEEE Computer Society,2009:111-118.
[7] KIT E,BUWALDA H.Testing and Test Automation:Establishing Effective Architectures[C]//Proceedings of TAREAST 2000 Conference.Orlando Florida:[s.n.],2000:185-187.
[8] 王宏新,劉長亮,成 堅,等.某型無人機的半實物仿真訓練系統設計[J].電子設計工程,2011,19(4):24-27.
[9] 馬長捷,朱小冬,袁 野.基于組合設計的軟件可靠性測試用例設計方法[J].微計算機信息,2006,22(21):263-265.
[10] KRAEMER S,GAO L,WEINSTOCK J,et al.A Fast Simulation Framework for Embedded Software Develop-ment[C]//Proceedings of CODES+ISSS’07. Washington D.C.,USA:IEEE Computer Society,2007:75-80.
[11] di GUGLIELMO G,FUJITA M,di GUGLIELMO L,et al.Model-driven Design and Validation of Embedded Software[C]//Proceedings of International Conference on Software Engineering.New York,USA:ACM Press,2011:98-104.
[12] 王振華,許 輝,陳國棟,等.基于Procyon半實物仿真系統的伺服電機控制[J].制造業自動化,2013,35(6):26-29.
[13] 陳宇宙.實時仿真平臺RT-LAB及其在飛行器設計上的應用研究[D].長沙:國防科學技術大學,2007.
[14] 顏靈偉,張善從.可重構的衛星姿控仿真測試系統設計[J].計算機工程,2010,36(8):236-238.
[15] ZHANG G Q,WANG Y,ZHANG Y.Experimental Modeling of Semi-physical Simulation Platform for Tracking Control of Flexible Multibody Systems[C]//Proceedings of the 7th International Conference on System Simulation and Scientific Computing.Washington D.C.,USA:IEEE Press,2008:1007-1011.
[16] 朱 寶,楊順昆.實時分布式仿真測試平臺時鐘同步算法[J].計算機工程,2010,36(24):231-232.