沈怡颹,何益康,高四宏,朱晏慶,孟其琛
(1.上海航天控制技術研究所·上?!?01109;2.上海市空間智能控制技術重點實驗室·上海·201109)
基于Matlab的Simulink仿真工具箱,在從編程轉向模型構造的過程中,能夠快速、準確地實現動態系統的建模和仿真,支持各類線性、非線性、混合、連續和離散等系統[1],同時為用戶提供了不少基本模塊,使用戶可以根據需要從庫瀏覽器里復制出模塊,并通過修改參數得到想要的模型,從而輕松有效地完成系統的仿真。同時,Simulink模型的特點是非常直觀,直接面向方框圖[2],可以直接用鼠標畫出所需要的控制系統模型,這樣無論多么復雜的系統,都能相當容易且直觀地完成模型的輸入和仿真計算。

圖1 使用Simulink進行仿真系統搭建Fig.1 Simulation systems architecture using Simulink
隨著應用的深入,采用Simulink技術進行系統仿真也暴露出一些弊端,主要反映在以下幾個方面。
對于在Simulink模型中集成的計算機處理算法,相比基于具體CPU的硬件設備嵌入式軟件開發方式,其內部嵌入式架構的算術與邏輯處理單元的執行方式有比較大的差異,Simulink模型無法完美模擬微控制器的結構[3],例如內部定時機制、外部中斷觸發、不同外設工作邏輯等,使得運行在Simulink中的計算機核心算法處理和真實CPU算法,在任務調度過程中可能存在較大的差異,從而降低仿真效果,使得關鍵技術的方案設計與實際結果有出入。
傳統的Simulink模型仿真在模擬航天器載設備運行軟件行為的過程中,基本都能滿足計算精度的要求,對于16位、32位甚至64位的算法處理有著很好的支持,然而相對于具體硬件設備的特殊要求,例如字或字節序的顛倒、特殊寄存器的位支持等,往往不能很方便地進行仿真。
Simulink模型不便于開展全系統閉環仿真測試、故障模擬、命令數據注入測試,往往是動態連續的過程,而真實環境下運行在CPU中的控制軟件在運行過程中,由于存在任務搶占調度、中斷觸發等外部激勵情況,可以是非線性、離散型的狀態,導致使用Simulink進行仿真降低了其驗證分析的可信性。
對于特殊單機的協議定制,相對于C、C++等高級語言,使用Simulink建模未必能夠規避工作量大、資源浪費的問題,且缺乏靈活性。
在Simulink環境下,復雜的軟件算法過程設計往往導致相對龐大的模型構建體系,導致執行效率低下,不能體現實時性,其仿真驗證結果不適用于對時序要求很高的航天領域。
基于上述分析,本文提出了一種基于同步仿真的衛星姿軌控軟件驗證方法,為嵌入式軟件開發提供了一個全面的、純數字的軟件開發和驗證平臺;該平臺能夠較好地彌補Simulink在嵌入式建模中存在的問題和不足。
在航天項目研制的早期,需要驗證整個方案設計的可行性,在軟件與硬件設備尚未開始設計的情況下,使用Matlab搭建Simulink模型仿真系統。在Simulink模型內部的仿真軟件算法控制等模型,與動力學模型之間進行輸入輸出數據交互,形成一個全數字的閉環仿真系統,以驗證整個系統方案的可行性,如圖2所示。

圖2 Simulink模型仿真系統Fig.2 Simulink model simulation systems
Simulink模型的仿真數據在內部傳遞,使用共享內存技術可以實現對Simulink模型的控制。輸入模塊接口實現對Simulink模型的運行控制,輸出模塊接口獲取Simulink模型數據,使得Simulink算法控制等模型可以與外部數據交互,從而達到驗證系統方案設計的目的。
航天項目的系統方案設計驗證通過后,可以開始硬件設備的設計及軟件設計。在具體的軟件開發過程中,Simulink模型仿真系統無法對真實計算機算法處理軟件進行功能驗證與性能測試。針對這種情況,提出了全數字超實時仿真系統,使用虛擬目標機[4]和虛擬計算機軟件來仿真真實硬件目標板,替代早期的Simulink仿真系統中的算法控制單元,在虛擬平臺上直接加載衛星控制軟件的二進制運行文件,仿真出與真實硬件相同的運行效果,用以驗證控制軟件的功能,并能進行運行調試,如圖3所示。
仿真數據在虛擬目標機軟件內部傳遞,使用全局變量以及分布式總線可以使其與外部數據交互。輸入模塊以及輸出模塊完全模擬真實硬件單機接口,與軟件進行數據交互,從而達到驗證軟件功能的目的。

圖3 分布式超實時仿真系統Fig.3 Distributed super-real-time simulation systems
在驗證軟件功能的同時,也需要驗證系統控制算法的正確性,使得Simulink算法控制等模型與控制軟件之間能夠進行數據交互,形成一個閉環。由此可以將Simulink模型仿真系統與分布式超實時仿真系統集成,形成一個全數字閉環仿真系統,如圖4所示。

圖4 集成的閉環超實時仿真系統Fig.4 Integrated closed-loop super-real-time simulation systems
通過分布式數據總線實現Simulink仿真模型與虛擬目標機之間的數據交互。二者之間的數據同步可以通過外部的同步仿真工具[5]來統一控制,確保仿真步長與周期的正確性,控制仿真速率,從而達到對整個閉環系統的驗證。
某型號衛星姿軌控軟件閉環調試系統是基于數字化的衛星仿真環境和平臺,可以實現超實時的仿真運行,實現姿軌控仿真計算機軟件的開發調試與測試,能夠對衛星控制策略進行快速仿真驗證,用于星載軟件進行全壽命周期的白盒 (外部輸入輸出和軟件源代碼本身的全過程跟蹤、記錄)和黑盒 (從單元、部件到系統級的)的驗證、開發、測試、維護,對比純Simulink建模搭建的仿真系統,執行效率更高、系統驗證更全面、動態狀態執行控制更逼近真實環境,可信度高。
通過模擬嵌入式軟件運行所需要的目標機硬件及外部信號,并讓嵌入式軟件像在真實目標機上一樣運行 (計算和處理)。虛擬目標機及其虛擬外圍環境,在同步仿真軟件的協同調度下,實現基于Ada/C/匯編等語言的控制軟件與Simulink仿真模型在系統仿真與驗證平臺全數字模式下實時、超實時閉環仿真運行?;谕椒抡娴男l星姿軌控軟件驗證方法系統架構如圖5所示。

圖5 基于同步仿真的衛星姿軌控軟件驗證方法系統架構Fig.5 Architecture of the verification methods of satellite attitude and orbit control software based on synchronous simulation
基于分布式網絡仿真中間件,虛擬目標機加載CPU軟件二進制文件,聯合虛擬CPU指令解析內核,根據型號各個功能單機或單元的硬件接口、地址空間定制的接口模塊,遙控遙測相關控制、轉發和顯示功能軟件,以及模型仿真模塊軟件封裝執行的動力學Simulink模型一起構建成某型號衛星姿軌控軟件閉環調試系統。
將同步仿真軟件RTCoordinator用于系統級閉環仿真時,可在目標機或仿真目標機上運行目標軟件,在系統仿真與驗證平臺系統中負責仿真開始和結束的控制、仿真過程中時序的調度、節點間數據的傳輸,以及模擬星務計算機部分功能和與星務計算機通信等。
由面向用戶的操作界面 (Graphical User Interface,GUI)軟件生成的控制指令或測試用例,經過RTCoordinator的調度,將數據配置給各個端口和外圍環境,從而驅動目標軟件的運行。
由于Simulink模型仿真步長為1ms,要做到同步仿真,則虛擬目標機的仿真步長也必須是1ms。在模型與衛星控制軟件集成之后,必須引入同步仿真工具來實現二者之間的周期同步,形成一個時序正確的閉環衛星控制系統仿真工具。
由于基于同步仿真的衛星姿軌控軟件驗證方法是全數字的虛擬仿真平臺,在仿真速度上不僅能達到實時仿真的需求,還能實現超實時仿真。在保證時序正確的前提下,整個衛星控制系統的仿真速度可達10倍以上,這在驗證一些需要用長時間等待結果的功能時尤為重要。
在基于同步仿真的衛星姿軌控軟件驗證方法中,還可以接入其他必要的外部終端軟件,最常見的就是故障模擬軟件、遙控注數軟件及遙測顯示終端,不需要任何修改,可以實現無縫接入。而在早期的單純Simulink模型仿真中,卻難以進行遙測注數或者故障注入,難以完整驗證算法的正確性。
經過最終的測試比對,衛星控制系統軟件同步仿真與可信驗證的實現方法——超實時仿真運行的遙測閉環曲線與真實物理硬件仿真的遙測閉環曲線基本相同,仿真結果可信。

圖6 姿態角曲線對比圖Fig.6 Attitude angles comparison curve

圖7 姿態角速度曲線對比圖Fig.7 Attitude speeds comparison curve
本文利用基于同步仿真的衛星姿軌控軟件驗證方法構建了一套某型號衛星姿軌控軟件閉環調試系統,集成了Simulink算法控制模型與衛星控制軟件,實現了整套衛星控制系統的全數字閉環仿真。通過和純Simulink搭建的仿真系統進行比對,結果表明,在確保基礎功能、算法邏輯正確的前提下,系統在軟件功能驗證的全面性、可信性,對故障注入、模擬控制軟件的執行狀態以及對于復雜算法控制處理模擬過程的實時性和執行效率方面有著更大的優勢。應用該方法,增加了衛星控制軟件的可靠性和安全性。