基于RTX的舵機控制系統(tǒng)研制
摘要 設計并研制了一種基于RTX實時擴展模塊的2.4 m風洞虛擬飛行試驗的舵機控制系統(tǒng)。該系統(tǒng)用于采集天平、陀螺儀、舵機、光電編碼器信號,為飛機各主要部件的氣動特性評估提供了重要依據(jù)。文中介紹了RTX實時模塊和硬件設計、軟件設計。并通過實際應用表明,該系統(tǒng)具有實時性強、算法可靠、精度高、用戶操作簡單等優(yōu)點。
關鍵詞 RTX;驅(qū)動程序;PXI;舵控仿真
舵機控制是虛擬飛行實驗中的關鍵技術,為滿足測試的實時性要求,文中設計了一套基于Windows RTX環(huán)境下的舵機控制系統(tǒng),通過采集天平、陀螺儀、舵機、光電編碼器信號,分析飛機各主要部件的氣動特性。該控制系統(tǒng)的主要功能包括:舵機控制軟件可以自動完成對舵機的上電及解鎖操作;舵機響應可根據(jù)實際需要作出相應的模式選擇和參數(shù)設置;采集到的數(shù)據(jù)可做到實時界面顯示,用于現(xiàn)場實驗分析。
1 RTX實時模塊
在工業(yè)控制、航空航天等領域,對系統(tǒng)實時性有很高的要求。系統(tǒng)的事件響應如果不確定或超時,就可能會導致系統(tǒng)出錯,甚至崩潰,Windows系統(tǒng)很難滿足實時性的要求。RTX正是應這一要求,利用Windows平臺提供的豐富的設備驅(qū)動模型,通過定制硬件抽象層(HAL,Hardw are Abstraction Layer),對Windows系統(tǒng)進行了實時擴展。RTX使得系統(tǒng)具有較強的實時性,能在一個事先定義好的時間限制中對外部或內(nèi)部的事件進行響應和處理RTX是一個嵌入Windows的獨立實時系統(tǒng),支持在Windows平臺下基于Visual Studio的實時應用程序開發(fā)。RTX給開發(fā)者提供了操作系統(tǒng)和實時性的最佳結合,既可以使用Windows的豐富資源和軟件開發(fā)調(diào)試工具,又可以在一個獨立的控制子系統(tǒng)上實現(xiàn)硬實時。RTX Release7.1支持絕大部分的Microsoft操作系統(tǒng),同時支持單處理器(Uniprocessor)、多處理器(Multi-processor)、移動處理器(Mobile Processor)、超線程(Hyper-threading-enabled),以及多核平臺(Multiple-core platform)。
文中基于RTX,在Windows平臺上實現(xiàn)了舵控仿真系統(tǒng)中高確定性和高速反應時間的應用部件和模塊與其它非實時應用部件的正常運行。
2 系統(tǒng)的硬件設計
該系統(tǒng)的構成如圖1所示。硬件系統(tǒng)包括上位機一工業(yè)控制計算、下位機-PXI機箱、位于PXI機箱中的PXI測試板卡、電源和顯示器構成,所有這些部件都組裝在一個雙聯(lián)測試機柜中。PXI測試板卡包括數(shù)字I/O板卡、A/D轉(zhuǎn)換卡、串口卡、RS422卡和PXI轉(zhuǎn)PCI套件。
3 軟件設計
為提高Windows下數(shù)據(jù)采集的實時性,又滿足舵機控制實時性的要求,舵機控制采用模塊化的設計,設計分為上下兩層,兩層之間需要共享內(nèi)存進行數(shù)據(jù)通信。軟件組成的結構體系如圖2所示。
RTX程序開發(fā)平臺選擇VC6.0+Ardence RTX,RTX將開發(fā)環(huán)境直接嵌入到用戶熟悉的VC6.0中,用RTX提供的向?qū)Ъ纯缮蒖TX環(huán)境下的設備驅(qū)動和應用程序,大大縮短了開發(fā)周期。RTX和Windows運行在一臺計算機上,也節(jié)省了系統(tǒng)的硬件成本,提高了系統(tǒng)可靠性。[!--empirenews.page--]
3.1 上層軟件
在啟動舵機控制程序之前,先要啟動RTX實時環(huán)境,因為底層驅(qū)動程序和上層舵機控制程序是同時運行的。軟件的具體操作流程如圖3所示。
3.2 底層軟件
根據(jù)舵機控制軟件對數(shù)據(jù)采集的實時性要求,首先要對各采集板卡做在RTX下的驅(qū)動開發(fā),這是舵機控制系統(tǒng)解決實時性問題的重點和難點。編寫基于RTX的驅(qū)動程序,可以通過調(diào)用實時應用程序編程接口(RTAPI,Real-Time Applieation Programming Interface)函數(shù)來訪問實時子系統(tǒng)(RTSS,Real-Time Sub-System),并維持其系統(tǒng)的實時性。這樣處理的優(yōu)點是硬件可以通過RTX函數(shù)直接訪問,驅(qū)動開發(fā)也更加簡單。
所謂驅(qū)動程序,就是直接控制設備進行工作的底層程序,實現(xiàn)了硬件和高層應用程序的交互。如果要使用PXI總線設備上的某個功能,就需要CPU能通過某段范圍的地址訪問或內(nèi)存訪問的方式與該功能交互。RTX驅(qū)動程序可以將獲得的基地址轉(zhuǎn)換成系統(tǒng)能夠識別的虛擬地址,然后通過讀寫函數(shù)對不同板卡的底層寄存器進行操作,從而實現(xiàn)控制板卡正常工作。PCI定位寄存器配置由BIOS自動完成初始化,如分配總線號、中斷向量、地址空間等,驅(qū)動程序只需要對數(shù)據(jù)偏移寄存器,即設備內(nèi)部寄存器進行配置。訪問內(nèi)部寄存器,首先要獲得PCI設備在BIOS上的映射基地址,然后根據(jù)設備的寄存器偏移量和格式對寄存器進行訪問。
[!--empirenews.page--]
在RTX環(huán)境下,PXI設備驅(qū)動程序的基本結構如圖4所示。其中,PXI設備和RTX位于結構底層,PXI設備與RTX內(nèi)核通過中斷和I/O端口來進行數(shù)據(jù)交互,RTX內(nèi)核通過庫函數(shù)和設備驅(qū)動程序來提供所需服務。上層應用程序與底層驅(qū)動程序通過建立共享內(nèi)存來進行通信。
在RTX環(huán)境下進行PXI設備驅(qū)動開發(fā),首先需要將Windows下的設備轉(zhuǎn)換為RTX下的設備。RTX提供實現(xiàn)該功能的屬性窗,如圖5所示。利用RTX屬性窗進行轉(zhuǎn)換分主要分為兩個步驟:
(1)添加RTX的INF支持;
(2)在設備管理器中更新設備驅(qū)動,將PXI設備從Windows支持轉(zhuǎn)換為RTX支持。
RTX環(huán)境下一個完整的PXI驅(qū)動程序至少由以下幾方面組成:
(1)設備初始化和釋放。查找PCI設備傳送設備號和廠家號兩個主要參數(shù),并遍歷所有的PCI插槽直到匹配為止。找到設備后,讀出中斷號、基地址等,為以后的工作做準備。
(2)地址到虛擬地址的映射,使系統(tǒng)能夠識別硬件。由于對硬件的讀寫操作是基于物理地址,而應用程序?qū)崿F(xiàn)讀寫操作使用的是虛擬地址,所以驅(qū)動程序必須要完成地址映射。
設計的PXI板卡驅(qū)動程序首先用接口函數(shù)DeviceSearch()在總線上輪詢,并查找到設備。然后通過DeviceInit()函數(shù)獲得設備的硬件資源,如中斷號、內(nèi)存、輸入輸出I/O和DMA等。通過RtGetBusDataByOffset()函數(shù)訪問設備的整個PCI配置空間,得到本地配置寄存器和存儲空間內(nèi)存的基地址和中斷號等信息,然后根據(jù)獲得的基地址利用RtTranslateBusAddress()和RtMapMem ory()函數(shù)將讀取出來的基地址轉(zhuǎn)換為系統(tǒng)能夠訪問的虛擬地址。需要指出的是,板卡的本地寄存器和存儲空間可以通過Memory映像和I/O直接訪問,文中設計的驅(qū)動程序的運用的是Memory映像。如選用I/O直接訪問,可以通過調(diào)用RtEnablePortIo()和RtReadPortUchar()等函數(shù)即實現(xiàn)對端口的直接讀寫。當找到并打開板卡后就可以自定義讀寫函數(shù)對板卡進行讀寫操作,從而達到控制板卡的目的,具體開發(fā)流程如圖6所示。
4 結束語
RTX環(huán)境下的驅(qū)動程序可以通過RTX函數(shù)進行直接訪問的,能夠隨時停止隨時配置。文中基于RTX,在Windows平臺實現(xiàn)了風洞虛擬飛行試驗舵控仿真系統(tǒng)。與直接基于Windows平臺設計的系統(tǒng)相比,系統(tǒng)的響應時間提高到ms級,滿足了實時性要求。由于測試軟件是基于VC++環(huán)境開發(fā)的可視化軟件,系統(tǒng)具有良好的可擴展性,通用性較強。通過聯(lián)調(diào),驗證了仿真系統(tǒng)的可靠性和實時性。