李向陽,劉顯勤,張向文
(北京航天發射技術研究所,北京,100076)
應用有限狀態機的實時操作系統平臺流程控制軟件實現技術
李向陽,劉顯勤,張向文
(北京航天發射技術研究所,北京,100076)
在分析嵌入式實時操作系統(Real-Time Operating System,RTOS)平臺與嵌入式無操作系統平臺流程控制軟件架構不統一、無法實現代碼重用的基礎上,提出一種應用有限狀態機的實時操作系統流程控制軟件架構,解決了架構不統一導致代碼無法重用的問題,并經過實際應用驗證,證明架構可行。
實時操作系統;有限狀態機;軟件架構;代碼重用
流程控制軟件是武器發射平臺的重要組成部分,用于實現武器發射平臺的展開、撤收等流程動作的控制;同時通過串口、CAN總線、以太網等通信方式實現與其他系統的通信;通過串口、CAN總線、以太網等接口實現參數的配置查詢等功能。
流程控制軟件要求具有實時性、確定性。因此,運行的平臺一般采用嵌入式無操作系統平臺或嵌入式實時操作系統平臺,比如 VxWorks。為了實現多個任務并行工作,嵌入式無操作系統平臺的流程控制軟件一般采用有限狀態機的架構方式實現,而實時操作系統平臺具有特有的多任務并行工作的優勢,一般通過采用多線程的架構方式實現。
隨著武器型號的發展,型號軟件的研制周期越來越短,而流程控制軟件需要充分的測試驗證才能確保軟件的可靠性。因此,對軟件的通用化、代碼的重用率要求越來越高。目前,現有型號采用嵌入無操作系統平臺實現的流程控制軟件數量多,已經實現架構統一,并形成了一定數量的重用代碼,使得采用嵌入式無操作系統平臺的流程控制軟件在開發效率、可靠性、后期維護性等方面得到了較大提高,同時也大大減少了軟件調試和試驗的時間,降低了研制成本。而采用嵌入式實時操作系統平臺實現的流程控制軟件數量少,可重用代碼相應也少。
采用有限狀態機架構方式實現的流程控制模塊與采用多線程架構方式實現的流程控制模塊一般無法實現通用,這給軟件重用帶來困難,增加了流程控制軟件研制投入,降低了流程控制軟件的可靠性。同時,流程控制軟件中需要流程急停及流程急停繼續、流程急停退出操作,采用有限狀態機的架構方式實現時已經將各個工作任務進行了一定粒度的劃分,只要控制狀態跳轉即可;而采用多線程的架構方式實現流程急停操作時需要采用線程掛起的方式,流程急停繼續操作需要采用線程恢復的方式,流程急停退出操作需要采用線程重啟的方式。這種在軟件正常工作中對線程掛起、恢復及重啟操作屬于非常規的使用方式,有可能對軟件系統造成不可預知的影響。
本文在對有限狀態機架構方式及多線程架構方式的流程控制軟件分析的基礎上,提出了一種有限狀態機和實時操作系統相結合的流程控制軟件實現技術。
嵌入式無操作系統平臺的有限狀態機方式的流程控制軟件采用主循環和一到多個中斷組成的前后臺系統,主循環和中斷之間通過共享資源實現通信。嵌入式無操作系統平臺應用層結構示意如圖1所示。
中斷用于實現硬件處理、定時處理等工作,其他流程控制模塊(或配置查詢功能模塊、故障處理功能模塊)、通信處理功能模塊、數據處理功能模塊、硬件處理功能模塊、網關處理功能模塊的并行處理工作采用有限狀態機的方式實現,由主循環負責調度。
采用有限狀態機架構方式實現的流程控制軟件是將各功能模塊的功能進行一定粒度的劃分,即劃分出來的工作片段占用毫秒級及以下(不超過1 ms)的處理時間,多個工作片段共同完成該功能,并且每個工作片段完成后能夠回到主循環,不影響其他功能模塊工作的實時性。有限狀態機以“事件驅動”方式工作[1,2],在確定轉移條件發生時,做出相應動作,變更工作狀態。以流程控制為例的狀態轉移如圖2所示。流程控制共分為8個狀態。軟件上電后首先進入初始狀態,接收到啟動流程指令后轉入流程進行處理狀態,如果流程正常執行結束則轉入流程正常結束狀態;如果流程中產生故障則轉入流程急停處理狀態,在流程急停處理完成后進入流程暫停狀態,在流程暫停狀態接收到急停退出指令則轉入流程退出處理狀態,處理完成進入流程非正常結束狀態;在流程暫停狀態接收到忽略故障指令則轉入流程繼續處理狀態,處理完成進入流程進行處理狀態,流程結束轉入流程正常結束狀態;在流程正常結束狀態或流出非正常結束狀態接收到啟動流程指令都可繼續進行流程控制。
主循環的調度方式如圖 3所示。主循環負責循環 調用所有外部模塊和軟件自身的功能模塊。
采用有限狀態機的方式實現的流程控制軟件通過有限狀態機來代替操作系統對多個并行工作進行調度,能夠滿足流程控制軟件實時性和確定性的要求。
嵌入式實時操作系統平臺應用層軟件采用多線程的架構方式實現,線程間采用消息隊列、信號量、共享資源等實現通信[3]。嵌入式實時操作系統平臺應用層結構示意如圖4所示。
流程控制功能模塊、配置查詢功能模塊、故障處理功能模塊、通信處理功能模塊、數據處理功能模塊、硬件處理功能模塊、網關處理功能模塊等每個模塊采用一個或多個線程實現。以某流程控制軟件為例,其通過流程處理主線程、流程處理從線程、硬急停線程、急停處理線程、故障處理線程、配置查詢線程、CAN數據處理線程、CAN數據發送線程、以太網接收線程、以太網發送線程[4~8]共同實現,流程處理軟件啟動及線程工作方式如圖5所示。
線程之間通過信號量、消息隊列及共享資源實現信息交換。其中流程處理主線程實現流程控制的主任務,流程處理從線程實現與流程控制主任務并行的任務,如果有多于2個并行的流程控制任務還要增加更多的流程處理線程。當硬急停線程采集到急停命令后掛起流程處理主線程、從線程,并執行相應的急停處理工作。當急停處理線程通過CAN總線數據處理線程接收到流程急停轉移指令后恢復流程處理主、從線程,接收到流程急停退出指令后重啟流程處理主、從線程。嵌入式實時操作系統平臺流程控制軟件實現如圖6所示。
采用上述架構實現的流程控制軟件,一個線程負責連續完成一個工作,不完成一個固定工作相關函數不退出。因此,在嵌入式無操作系統平臺上實現的流程控制軟件無法完全應用在多線程架構下的流程控制軟件;同樣,采用這種方式實現的流程控制軟件也無法應用在嵌入式無操作系統平臺上。如果能將在嵌入式無操作系統平臺上采用的有限狀態機架構方式實現的流程控制軟件的方法也應用在實時操作系統平臺上,則能解決軟件重用的問題,并能夠避免采用線程掛起、線程恢復及線程重啟等操作,確保軟件運行的可靠性。
3.1 控制軟件實現
將原有的嵌入式實時操作系統平臺流程控制軟件直接與外設交互的工作采用單獨的線程實現,其他流程處理主線程、流程處理從線程、急停處理線程、故障處理線程、配置查詢線程合并為一個工作處理線程,如圖7、圖8所示。工作處理線程采用有限狀態機的方式工作,按嵌入式無操作系統平臺方式實現流程控制、配置查詢、故障處理、數據處理等工作。工作處理線程工作方式與嵌入式無操作系統平臺的工作方式相同,如圖8所示。
3.2 控制軟件驗證
某型號的流程控制軟件需要運行在龍芯+VxWorks操作系統平臺(嵌入式實時操作系統平臺),其實現的流程控制、配置查詢等功能與另外一個型號運行在XC164處理器平臺(嵌入式無操作系統平臺)的流程控制軟件基本一致。
因此,該軟件研制時通過采用有限狀態機的嵌入式實時操作系統平臺架構方式,將另外一個型號的嵌入式無操作系統平臺流程控制軟件移植到嵌入式實時操作系統平臺,其研制周期由原來的3~4個月縮短為1.5個月。代碼重用情況如表1所示。除網關處理功能模塊原有的軟件不涉及,硬件處理功能模塊由于運行平臺不同而導致與硬件處理部分差異較大外,其他功能模塊重用率平均達到89.2%。

表1 代碼重用情況統計
采用有限狀態機的嵌入式實時操作系統平臺架構方式加重用嵌入式無操作系統平臺流程控制軟件實現的流程控制軟件,經過了各項試驗考核,軟件運行可靠。
本文提出的應用有限狀態機的實時操作系統平臺流程控制軟件架構通過應用具體型號流程控制軟件研制,證明此種架構的可行性。采用此種架構實現的流程控制軟件提高了軟件的可重用程度及開發效率,降低了研制成本,提高了軟件的可驗證程度。同時,采用此種架構實現的流程控制軟件規避了線程掛起、線程恢復及線程重啟等對操作系統線程的非常規操作,進一步提高了軟件的可靠性。
[1] 單茂華. 基于有限狀態機的絕緣在線監測裝置軟件模型與實現[J]. 測控技術, 2007, 26(9): 79-81.
[2] 魏丙楠. 有限狀態機在嵌入式軟件中的應用[J]. 計算機與信息技術, 2005(10): 59-60.
[3] 王金剛. VxWorks程序員指南[M]. 北京: 清華大學出版社, 2003.
[4] 孫健. VxWorks下幾種任務設計模型的分析與實現[J]. 數字技術與應用2015(1): 2-3.
[5] 李勇華. 嵌入式操作系統 VxWorks的實時性能測試分析[J]. 電子技術與軟件工程, 2014(2): 1-2.
[6] 饒冬. 基于 Linux的航天地面站測控軟件架構設計[J]. 遙測遙控, 2015(4): 31-36.
[7] 吳慧婷. 一種高可靠性嵌入式軟件架構設計[J]. 軟件導刊, 2015(10): 1-2.
[8] 劉玉寶. 基于嵌入式軟件架構的可靠性分析方法. 科技資訊, 2014 (8):1-2.
Software Realization of Flow-control Software on RTOS Base on FSM
Li Xiang-yang,Liu Xian-qin,Zhang Xiang-wen
(Beijing Institue of Space Lauch Technology, Beijing, 100076)
Software code can not reuse because difference of software architecture between embendded RTOS and embendded without OS. This article presents a software architecture of RTOS base on Finite State Machine(FSM). This method resolves problem of code reuse, practical application proves this architecture.
Real-time operating system; Finite state machine; Software architecture; Code reuse
TP311.1
A
1004-7182(2017)02-0080-07
10.7654/j.issn.1004-7182.20170218
2016-07-31;
2016-11-03
李向陽(1977-),男,高級工程師,主要研究方向為電液系統控制