李兆陽,陳泉根
(1.中國工程物理研究院計算機應用研究所,綿陽 621900; 2.中國工程物理研究院研究生院,綿陽 621900)
一種基于分布式結構的半實物仿真測試環境設計
李兆陽1,2,陳泉根1
(1.中國工程物理研究院計算機應用研究所,綿陽 621900; 2.中國工程物理研究院研究生院,綿陽 621900)
半實物仿真技術廣泛用于航空航天,通信,軍事等領域,對于驗證嵌入式軟件的可靠性提供了有利的依據。針對分布式和可擴展的測試需求,提出了一種基于分布式結構的半實物仿真測試環境設計,并且討論了該測試環境中測試腳本、控制器、軟設備等關鍵部分的設計方法,最后將該系統與現有半實物測試環境進行對比并進行了總結。
分布式;半實物;仿真
半實物仿真又稱硬件在回路的仿真,其通過I/O,CAN,1553B等外部接口模擬被測件工作環境與其進行數據交換來達到測試軟件可靠性等目的。半實物仿真系統能保持嵌入式系統的完整性,它只對被測件的外部交聯系統以及物理環境進行仿真,同時在高實時性要求的靠可性測試中,能夠提供更高的置信度。
隨著被測系統的多樣化,對于半實物測試系統的分布式測試場景愈來愈多,常常出現“單測試節點”對“多被測節點”的情況,這種情況的增加對于傳統半實物測試系統的分布式能力提出了更高的要求。并且隨著測試領域的多樣化,測試系統外部接口的可擴展能力也面臨挑戰。因此,需要引入新的系統設計方案來解決上述問題。
本文針對以上問題提出了一種分布式的半實物測試系統的設計方法,希望通過該設計提升半實物系統的接口可擴展性以及分布式測試能力。
1.1 測試環境硬件結構
本文設計的測試環境硬件結構示意圖如圖1所示,硬件設計采用主從式結構,即一臺測試引擎部署宿主計算機,通過網絡連接多臺測試處理計算機。對于現有的大多數半實物仿真測試環境而言,要完成這種分布式部署是可能的,但是因為現有半實物測試環境采用的是多數工作在宿主機上完成,即仿真測試引擎的“負擔”過重,一旦變為分布式部署,使系統性能下降。測試引擎不光要完成測試腳本解釋翻譯,命令傳輸,更需要進行多節點的任務調度,并且隨著測試領域的增多和測試接口的復雜化,接口協議的可擴展性也不能得到很好滿足。因此,我們提出一種三層結構的系統設計方法,希望通過這個設計簡化和明確測試過程中各個部分的任務,通過設計多節點上下位機交互協議、引入自定義的測試命令、加入軟設備等方式來實現圖1所示結構。
1.2 系統整體架構
基于分布式結構的半實物仿真測試環境系統整體架構如圖2所示。
系統的整體架構包涵三層,由測試總線和控制總線隔開,第一層為仿真引擎層;第二層為多節點的控制器層;第三層為軟設備層。測試人員通過仿真引擎部署的宿主計算機,進行測試用例的設計與測試腳本開發,將測試腳本通過測試總線傳輸到目的節點控制器存儲,當引擎向掛載的節點處理器下達統一的測試命令時,節點控制器按照自定義的腳本命令進行有時序的任務執行調度,此時的任務調度是控制器對于掛載在其上面的軟設備進行的時序操作,最終單個測試用例注入命令由軟設備通過I/0總線傳入被測件而達到測試目的。
由于為了使得系統的分布式能力和可擴展性,設計較傳統半實物仿真測試環境的不同之處主要體現在第二和第三層上,因此以下著重討論系統整體架構中第二和第三層所進行的一些設計。
2.1 測試總線服務
測試總線加載于網絡上的總線,其為測試主要提供兩種服務:①測試準備或進行時節點控制器和仿真引擎的數據交換服務。②測試開始時的時鐘對齊服務。
在TCP/IP模型中,存在TCP和UDP兩個傳輸層協議,負責承擔數據傳輸任務。其中,TCP是面向連接的協議,它能夠保證傳輸的可靠性,但相對于UDP而言,UDP的處理簡單相對,并且效率高于TCP,在分布式的數據傳輸中,要求數據傳輸是大量的,測試的實時數據要求能夠做到大量的可靠傳輸,因此,為了保證測試過程中能做到實時數據可靠傳輸,由能提高效率,我們對UDP進行以下的改造:
1)在測試總線服務的程序設計時,設置相應大小的緩存區,以防止多個節點向引擎回饋實時數據時發生的阻塞現象。
2)每個UDP包中尾部加上一個節點順序戳序號以及一個校驗和,當引擎與控制器通過網絡建立連接,分發測試命令時,控制器根據控制命令描述字符位獲得命令,并且驗證數據校驗和以及順序序號,驗證校驗和保證了數據的完整性,節點順序戳序號保證該節點當前獲得的測試信息順序正確,如二者都正確,則說明此次通信正確,沒有丟包的情況存在。如果校驗和與順序戳序號有誤,則處理器要求引擎重新發送數據。

圖1 硬件結構示意圖

圖2 半實物仿真測試環境系統整體架構
在分布式多節點測試時,測試節點的時間一致性是個必然的要求,當測試命令下達時,要求各節點之間軟時鐘同步,需要設置測試開始命令開始時刻為測試零時刻,時間對齊服務使各測試節點測試時間一致,在并行測試過程中,這種對齊機制可以以測試開始時刻為標準,明確每個測試動作時序上的相互關系,并進行記錄。對齊流程如圖3所示。
2.2 控制器及自定義命令
節點控制器的功能主要為負責測試任務的時序地調度,采用單個進程的方式進行實現,軟件設計中,該進程包括一個控制器類,控制器類主要由三個部分組成:①控制器描述符——帶有該節點控制器在該分布式測試中的唯一標識信息以及該控制器下的參數信息如:任務列表地址,任務斷點個數,輸入輸出緩存buff大小,同步時鐘等;②控制器類需要的各種方法;③用于存儲測試命令的測試任務表和等待條件列表。
控制器是一個擁有兩個狀態的二維狀態機,狀態包括測試管理態和測試執行態。兩個狀態通過測試開始或者結束命令進行相互轉換,在測試管理態時,引擎下發的測試管理命令可直接執行無嚴格的時序要求(測試數據查詢,測試設備查詢,測試端口配置等)。而下發的執行命令被控制器存儲進測試任務隊列,待測試進入執行態后再開始執行,現有的半實物環境對于多節點的調度一般集中于仿真引擎之上,我們希望將調度功能放于每個節點分散進行,這需要控制器能夠識別時序進行該節點下的調度過程,因此,我們通過嵌于一種自定義命令格式,按照一定解釋規則,使得控制器能夠完成這個功能,自定義命令格式如下:

其中:
@ :時序命令標志。
time以測試總線對齊時鐘一個計數時常為單位;命令執行條件包括中斷,接受,發出,等待等;進行的操作包括接受,注入,觸發,重復發送等;數據為對各種端口進行操作的具體數據。在測試執行狀態下,控制器對已有的操作任務進行的調度邏輯如圖4所示。

圖3 時鐘對齊流程

圖4 控制器調度邏輯
當控制器接到時序命令行時,將執行條件位數據存入條件等待列表,標記命令序號,同時將時序關系位,操作位,數據位存入測試任務表,綁定相同的命令序號。測試執行時,一次取列表命令,如條件位為空,則無條件等待,直接執行對應的任務列表命令。當條件不為空時,進行等待,待條件滿足時,取出相同序號的等待條件和測試任務,在滿足條件time個單位時間后,將操作位與操作數通過控制總線下發至軟設備。
2.3 軟設備
控制總線下掛載了多個軟設備模塊,每個軟設備代表一個不同接口類型,如can,I/O,1553b等。
軟設備的目的是將最基本的測試激勵收發以及測試端口的配置等測試過程中最簡單的操作進行統一封裝,對于上層而言,調用軟設備所使用的接口是不變的,這樣就增加了在復雜接口的情況下,系統的插拔和可擴展能力,軟設備采用三層的設計結構。分別包括應用層,協議層以及驅動層,如圖5所示。
應用層主要是為上一層的測試總線和控制器提供統一的操作方法接口,其中包括協議參數配置,協議參數獲取,接受發送激勵,清除或者設置緩存隊列等操作。
協議層主要實現的是各種端口協議的統一封裝,協議層面向應用層的接口也是統一的,主要包括協議修改等操作接口。這樣在協議改變的情況下,就需要修改具體協議個某些方法的具體實現即可,在每一個軟設備的協議層中,都加入了一個FIFO的鏈表緩存隊列,其只保存一定幀數的實時數據,目的是為了方便測試人員在測試過程中能夠回退查找相應端口之前的幾幀數據,從而能夠更加快速的找到測試過程中的問題所在。
驅動層主要包涵兩個函數,_recv()和_send(),其主要面向的是被測件的驅動層,收發函數下面均為調用相應接口的驅動,最終驅動層將測試的整個過程簡化為收發的基本操作。
為了驗證設計的可行性,我們將該半實物仿真環境的原型機應用于某航天遙測系統程控模塊的軟件測試中,主要以CAN和串口為主,將編 輯好的xml文本(內嵌自定義的測試用例命令)導入原型機中,原型機通過解析命令完成測試,一共完成了1 432條測試命令,主要包括功能測試和故障測試,所收到的測試結果均與預期結果一致,并且能夠正常完成測試初始狀態的設置和被測件測試需求的全覆蓋,從而驗證了測試原型機的可行性。

圖5 三層設計結構
本文提出了一種三層架構的分布式半實物仿真測試環境的設計,與現有的半實物仿真測試環境相比,其通過引入時序命令,軟設備模塊等多個設計,將分布式測試過程中的時序調度任務分散到各個節點進行處理,將底層的協議和執行動作進行統一封裝,使得整個系統的測試任務自上而下逐漸細化,從而提高了半實物系統的分布式能力和可擴展性,并且這種設計使得仿真引擎的工作得到了減少,為整個上層系統實現更多的功能集成提供了可行性。不過設計還是有很多不足和值得改進的地方,例如此次設計主要針對半實物仿真測試中下位機部分進行展開,針對引擎部分沒有進行深入探討,另外,測試系統的傳輸速率、實時性,腳本翻譯成時序命令機制等方面還需要進行進一步深入研究。
[1]阮鐮, 劉斌, 陳雪松.軟件可靠性測試及其環境[J].測控技術, 2000, 19(2).
[2]劉斌, 高小鵬, 陸民燕,等.嵌入式軟件可靠性仿真測試系統研究[J]北京航空航天大學學報, 2000, 26(4).
[3]王恒霖,曹建國 .仿真系統的設計與應用[M].北京:科學出版社, 2003.
李兆陽,男,(1991-),碩士,主要研究領域為軟件可靠性測試。
陳泉根,男,(1967-),研究員,碩士生導師,主要研究領域為計算機控制、信息安全。
A Design of Half-physical Simulation Environment Based on Distributed Architecture
LI Zhao-yang1,2, CHEN Quan-gen1
(1.The institute of computer application of CAEP, Mianyang 621900; 2.The Graduate School of CAEP, Mianyang 621900)
Hardware-in-the-loop simulation technology is widely used in aerospace, communications, and military, etc.It provides advantageous basis to verify the reliability of embedded software.In the view of the distributed and scalable test requirements, this paper proposes a design of half-physical simulation environment based on distributed architecture, which describes how to design the key parts of the environment included the script language, the controller, and the soft devices, etc.Finally the design compared with already existing hardware-in-the-loop test environment in a summary.
distributed; half-physical; simulation
TP391
A
1004-7204(2016)05-0082-04