1、前言
對于程序開發和許多交互式應用來說,UNIX和Windows可以算是優秀的操作系統。然而,它們都不適于實時應用。Tornado是美國WindRiver公司為用戶提供的嵌入式開發平臺,VxWorks是Tornado的運行期組件,也是嵌入式行業應用最為廣泛的實時操作系統。VxWorks的實時性做的非常好,其系統本身的開銷很小,任務調度、任務間通信和中斷處理等系統公用程序精煉而高效,他們造成的延遲很短。VxWorks提供的多任務機制對任務的控制采用了優先級搶占調度和輪轉調度機制,也充分保證了可靠的實時性,使同樣的硬件配置能夠滿足更強的實時性要求,為應用的開發留下更大的余地。
RTW(Real-Time Workshop)是Matlab圖形建模和仿真環境Simulink的一個重要的補充功能模塊,它是一個基于Simulink的代碼自動生出環境,它能直接從Simulink的模型中產生優化的、可移植的和個性化的代碼,并根據目標配置自動生成多種環境下的程序。
RTW提供了幾個快速原型化的目標,其中包括提供了從Simulink模型到VxWorks應用代碼的自動轉換接口Tornado Real-Time Target,可以讓用戶的模型在VxWorks上執行。
2、Tornado(VxWorks)實時目標運行時結構
開發VxWorks實時應用系統的典型配置,如圖1所示:
實時代碼在主機上,用Tornado提供的交叉編譯器編譯。通過RTW的Tornado實時目標生成目標文件(vxmodel.lo),可通過Tornado集成開發環境的WindSh下載到VxWorks目標機。實時程序在VxWorks目標機上執行,通過IO設備和外部硬件交換數據,并保持和主機之間的相互通信。
實時程序運行在VxWorks目標機上,而Simulink運行在主機上。Simulink需要VxWorks目標機上運行的任務來處理通信過程。Tornado(VxWorks)Real-Time Tartget生成如下VxWorks任務:一個用于和Simulink通信,其他用于完成模型功能[2]。
3、Tornado(VxWorks)實時目標的實現過程
3.1 實驗環境
我的實驗環境如下表:
表1 實驗環境
3.2 實時目標的具體實現步驟
為了通過Real-Time Workshop實現和運行一個基于VxWorks的實時程序,用戶可按如下的步驟進行:
(1) 在Matlab/Simulink下建立一個模型,這里以一個經典的PID模型為例:
模型采用外部工作模式(External Mode),并設置Simulink Parameters對話框中的參數:
(2) 配置模板聯編連文件tornado.tmf,該文件位matlabroot%/rtw/c/tornado目錄下,要對這個文件作如下修改:
#———————————— Macros read by make_rtw ————————————-
MAKECMD = C:Tornado2.2hostx86-win32 inmake
HOST = PC
#————————————-Tool Locations————————————————————————————-
WIND_BASE= C:Tornado2.2
WIND_REGISTRY=$(COMPUTERNAME)
WIND_HOST_TYPE=x86-win32
#————————————Vxworks Configuration——————————————————
VX_TARGET_TYPE = pentium
CPU_TYPE = PENTIUM2
#————————————-Macros for Downloading to Target————-
TARGET=target
TGTSVR_HOST=host
VX_CORE_LOC = $(WIND_BASE)/target/config/ pcPentium3/vxWorks
(3) 程序的生成、編譯、連接
設置完參數,保存后,開始創建程序,單擊上圖中的Build按鈕,開始編譯程序,成功后可在當前的目錄中產生了一個vxmodel_tornado_rtw的文件夾和一個目標文件vxmodel.lo。
(4) 手動下載和運行可執行文件
現在可以將實時程序下載到目標機中,具體的方法是在Tornado集成開發環境中啟動WindSh,在WindSh窗口執行如下命令: ld

打開External Mode Control Panel,如圖7所示。點擊Connect按鈕,執行Start real-time code,可以看到Scope上的圖形輸出。此時,可以改變模型的參數(如增益的數值),參數下載后Scope的曲線將隨之改變。仿真時間結束以后,可以看到產生了一個external.mat文件,由目標機會傳到主機,放在Tornado的安裝根目錄下。
針對Matlab的仿真特性和VxWorks操作系統的實時特點,本文介紹了RTW面向Tornado(VxWorks)實時目標的運行結構,并且較為詳細的闡述了Tornado(VxWorks)實時目標的具體實現流程,實現了Simulink在Tornado(VxWorks)實時目標下的仿真。
在結合相關文檔的同時,筆者加入了親身實驗的經驗,增補了一些必要的內容,完善了實驗的具體步驟,降低了為讀者今后實驗的調試難度。