沈怡颹,何益康,高四宏,朱晏慶,孟其琛
(1.上海航天控制技術(shù)研究所·上?!?01109;2.上海市空間智能控制技術(shù)重點實驗室·上?!?01109)
基于Matlab的Simulink仿真工具箱,在從編程轉(zhuǎn)向模型構(gòu)造的過程中,能夠快速、準確地實現(xiàn)動態(tài)系統(tǒng)的建模和仿真,支持各類線性、非線性、混合、連續(xù)和離散等系統(tǒng)[1],同時為用戶提供了不少基本模塊,使用戶可以根據(jù)需要從庫瀏覽器里復(fù)制出模塊,并通過修改參數(shù)得到想要的模型,從而輕松有效地完成系統(tǒng)的仿真。同時,Simulink模型的特點是非常直觀,直接面向方框圖[2],可以直接用鼠標畫出所需要的控制系統(tǒng)模型,這樣無論多么復(fù)雜的系統(tǒng),都能相當容易且直觀地完成模型的輸入和仿真計算。
圖1 使用Simulink進行仿真系統(tǒng)搭建Fig.1 Simulation systems architecture using Simulink
隨著應(yīng)用的深入,采用Simulink技術(shù)進行系統(tǒng)仿真也暴露出一些弊端,主要反映在以下幾個方面。
對于在Simulink模型中集成的計算機處理算法,相比基于具體CPU的硬件設(shè)備嵌入式軟件開發(fā)方式,其內(nèi)部嵌入式架構(gòu)的算術(shù)與邏輯處理單元的執(zhí)行方式有比較大的差異,Simulink模型無法完美模擬微控制器的結(jié)構(gòu)[3],例如內(nèi)部定時機制、外部中斷觸發(fā)、不同外設(shè)工作邏輯等,使得運行在Simulink中的計算機核心算法處理和真實CPU算法,在任務(wù)調(diào)度過程中可能存在較大的差異,從而降低仿真效果,使得關(guān)鍵技術(shù)的方案設(shè)計與實際結(jié)果有出入。
傳統(tǒng)的Simulink模型仿真在模擬航天器載設(shè)備運行軟件行為的過程中,基本都能滿足計算精度的要求,對于16位、32位甚至64位的算法處理有著很好的支持,然而相對于具體硬件設(shè)備的特殊要求,例如字或字節(jié)序的顛倒、特殊寄存器的位支持等,往往不能很方便地進行仿真。
Simulink模型不便于開展全系統(tǒng)閉環(huán)仿真測試、故障模擬、命令數(shù)據(jù)注入測試,往往是動態(tài)連續(xù)的過程,而真實環(huán)境下運行在CPU中的控制軟件在運行過程中,由于存在任務(wù)搶占調(diào)度、中斷觸發(fā)等外部激勵情況,可以是非線性、離散型的狀態(tài),導(dǎo)致使用Simulink進行仿真降低了其驗證分析的可信性。
對于特殊單機的協(xié)議定制,相對于C、C++等高級語言,使用Simulink建模未必能夠規(guī)避工作量大、資源浪費的問題,且缺乏靈活性。
在Simulink環(huán)境下,復(fù)雜的軟件算法過程設(shè)計往往導(dǎo)致相對龐大的模型構(gòu)建體系,導(dǎo)致執(zhí)行效率低下,不能體現(xiàn)實時性,其仿真驗證結(jié)果不適用于對時序要求很高的航天領(lǐng)域。
基于上述分析,本文提出了一種基于同步仿真的衛(wèi)星姿軌控軟件驗證方法,為嵌入式軟件開發(fā)提供了一個全面的、純數(shù)字的軟件開發(fā)和驗證平臺;該平臺能夠較好地彌補Simulink在嵌入式建模中存在的問題和不足。
在航天項目研制的早期,需要驗證整個方案設(shè)計的可行性,在軟件與硬件設(shè)備尚未開始設(shè)計的情況下,使用Matlab搭建Simulink模型仿真系統(tǒng)。在Simulink模型內(nèi)部的仿真軟件算法控制等模型,與動力學(xué)模型之間進行輸入輸出數(shù)據(jù)交互,形成一個全數(shù)字的閉環(huán)仿真系統(tǒng),以驗證整個系統(tǒng)方案的可行性,如圖2所示。
圖2 Simulink模型仿真系統(tǒng)Fig.2 Simulink model simulation systems
Simulink模型的仿真數(shù)據(jù)在內(nèi)部傳遞,使用共享內(nèi)存技術(shù)可以實現(xiàn)對Simulink模型的控制。輸入模塊接口實現(xiàn)對Simulink模型的運行控制,輸出模塊接口獲取Simulink模型數(shù)據(jù),使得Simulink算法控制等模型可以與外部數(shù)據(jù)交互,從而達到驗證系統(tǒng)方案設(shè)計的目的。
航天項目的系統(tǒng)方案設(shè)計驗證通過后,可以開始硬件設(shè)備的設(shè)計及軟件設(shè)計。在具體的軟件開發(fā)過程中,Simulink模型仿真系統(tǒng)無法對真實計算機算法處理軟件進行功能驗證與性能測試。針對這種情況,提出了全數(shù)字超實時仿真系統(tǒng),使用虛擬目標機[4]和虛擬計算機軟件來仿真真實硬件目標板,替代早期的Simulink仿真系統(tǒng)中的算法控制單元,在虛擬平臺上直接加載衛(wèi)星控制軟件的二進制運行文件,仿真出與真實硬件相同的運行效果,用以驗證控制軟件的功能,并能進行運行調(diào)試,如圖3所示。
仿真數(shù)據(jù)在虛擬目標機軟件內(nèi)部傳遞,使用全局變量以及分布式總線可以使其與外部數(shù)據(jù)交互。輸入模塊以及輸出模塊完全模擬真實硬件單機接口,與軟件進行數(shù)據(jù)交互,從而達到驗證軟件功能的目的。
圖3 分布式超實時仿真系統(tǒng)Fig.3 Distributed super-real-time simulation systems
在驗證軟件功能的同時,也需要驗證系統(tǒng)控制算法的正確性,使得Simulink算法控制等模型與控制軟件之間能夠進行數(shù)據(jù)交互,形成一個閉環(huán)。由此可以將Simulink模型仿真系統(tǒng)與分布式超實時仿真系統(tǒng)集成,形成一個全數(shù)字閉環(huán)仿真系統(tǒng),如圖4所示。
圖4 集成的閉環(huán)超實時仿真系統(tǒng)Fig.4 Integrated closed-loop super-real-time simulation systems
通過分布式數(shù)據(jù)總線實現(xiàn)Simulink仿真模型與虛擬目標機之間的數(shù)據(jù)交互。二者之間的數(shù)據(jù)同步可以通過外部的同步仿真工具[5]來統(tǒng)一控制,確保仿真步長與周期的正確性,控制仿真速率,從而達到對整個閉環(huán)系統(tǒng)的驗證。
某型號衛(wèi)星姿軌控軟件閉環(huán)調(diào)試系統(tǒng)是基于數(shù)字化的衛(wèi)星仿真環(huán)境和平臺,可以實現(xiàn)超實時的仿真運行,實現(xiàn)姿軌控仿真計算機軟件的開發(fā)調(diào)試與測試,能夠?qū)πl(wèi)星控制策略進行快速仿真驗證,用于星載軟件進行全壽命周期的白盒 (外部輸入輸出和軟件源代碼本身的全過程跟蹤、記錄)和黑盒 (從單元、部件到系統(tǒng)級的)的驗證、開發(fā)、測試、維護,對比純Simulink建模搭建的仿真系統(tǒng),執(zhí)行效率更高、系統(tǒng)驗證更全面、動態(tài)狀態(tài)執(zhí)行控制更逼近真實環(huán)境,可信度高。
通過模擬嵌入式軟件運行所需要的目標機硬件及外部信號,并讓嵌入式軟件像在真實目標機上一樣運行 (計算和處理)。虛擬目標機及其虛擬外圍環(huán)境,在同步仿真軟件的協(xié)同調(diào)度下,實現(xiàn)基于Ada/C/匯編等語言的控制軟件與Simulink仿真模型在系統(tǒng)仿真與驗證平臺全數(shù)字模式下實時、超實時閉環(huán)仿真運行?;谕椒抡娴男l(wèi)星姿軌控軟件驗證方法系統(tǒng)架構(gòu)如圖5所示。
圖5 基于同步仿真的衛(wèi)星姿軌控軟件驗證方法系統(tǒng)架構(gòu)Fig.5 Architecture of the verification methods of satellite attitude and orbit control software based on synchronous simulation
基于分布式網(wǎng)絡(luò)仿真中間件,虛擬目標機加載CPU軟件二進制文件,聯(lián)合虛擬CPU指令解析內(nèi)核,根據(jù)型號各個功能單機或單元的硬件接口、地址空間定制的接口模塊,遙控遙測相關(guān)控制、轉(zhuǎn)發(fā)和顯示功能軟件,以及模型仿真模塊軟件封裝執(zhí)行的動力學(xué)Simulink模型一起構(gòu)建成某型號衛(wèi)星姿軌控軟件閉環(huán)調(diào)試系統(tǒng)。
將同步仿真軟件RTCoordinator用于系統(tǒng)級閉環(huán)仿真時,可在目標機或仿真目標機上運行目標軟件,在系統(tǒng)仿真與驗證平臺系統(tǒng)中負責(zé)仿真開始和結(jié)束的控制、仿真過程中時序的調(diào)度、節(jié)點間數(shù)據(jù)的傳輸,以及模擬星務(wù)計算機部分功能和與星務(wù)計算機通信等。
由面向用戶的操作界面 (Graphical User Interface,GUI)軟件生成的控制指令或測試用例,經(jīng)過RTCoordinator的調(diào)度,將數(shù)據(jù)配置給各個端口和外圍環(huán)境,從而驅(qū)動目標軟件的運行。
由于Simulink模型仿真步長為1ms,要做到同步仿真,則虛擬目標機的仿真步長也必須是1ms。在模型與衛(wèi)星控制軟件集成之后,必須引入同步仿真工具來實現(xiàn)二者之間的周期同步,形成一個時序正確的閉環(huán)衛(wèi)星控制系統(tǒng)仿真工具。
由于基于同步仿真的衛(wèi)星姿軌控軟件驗證方法是全數(shù)字的虛擬仿真平臺,在仿真速度上不僅能達到實時仿真的需求,還能實現(xiàn)超實時仿真。在保證時序正確的前提下,整個衛(wèi)星控制系統(tǒng)的仿真速度可達10倍以上,這在驗證一些需要用長時間等待結(jié)果的功能時尤為重要。
在基于同步仿真的衛(wèi)星姿軌控軟件驗證方法中,還可以接入其他必要的外部終端軟件,最常見的就是故障模擬軟件、遙控注數(shù)軟件及遙測顯示終端,不需要任何修改,可以實現(xiàn)無縫接入。而在早期的單純Simulink模型仿真中,卻難以進行遙測注數(shù)或者故障注入,難以完整驗證算法的正確性。
經(jīng)過最終的測試比對,衛(wèi)星控制系統(tǒng)軟件同步仿真與可信驗證的實現(xiàn)方法——超實時仿真運行的遙測閉環(huán)曲線與真實物理硬件仿真的遙測閉環(huán)曲線基本相同,仿真結(jié)果可信。
圖6 姿態(tài)角曲線對比圖Fig.6 Attitude angles comparison curve
圖7 姿態(tài)角速度曲線對比圖Fig.7 Attitude speeds comparison curve
本文利用基于同步仿真的衛(wèi)星姿軌控軟件驗證方法構(gòu)建了一套某型號衛(wèi)星姿軌控軟件閉環(huán)調(diào)試系統(tǒng),集成了Simulink算法控制模型與衛(wèi)星控制軟件,實現(xiàn)了整套衛(wèi)星控制系統(tǒng)的全數(shù)字閉環(huán)仿真。通過和純Simulink搭建的仿真系統(tǒng)進行比對,結(jié)果表明,在確?;A(chǔ)功能、算法邏輯正確的前提下,系統(tǒng)在軟件功能驗證的全面性、可信性,對故障注入、模擬控制軟件的執(zhí)行狀態(tài)以及對于復(fù)雜算法控制處理模擬過程的實時性和執(zhí)行效率方面有著更大的優(yōu)勢。應(yīng)用該方法,增加了衛(wèi)星控制軟件的可靠性和安全性。