設計了基于PCI總線的1553B總線接口驅動軟件, 系統運行環境為Windows XP加RTX實時擴展模塊, 保證了總線接口驅動軟件的實時性和容錯性。
MIL-STD-1553B為美國國防部制定的國內、國際陸、海、空三軍和航天工業控制系統廣泛應用的數據總線,為電子系統的標準信息傳輸和互聯接口系統。這種數據總線被用來為各種系統之間數據和信息的交換提供媒介,它類似"局域網或LAN"??偩€的傳輸速度為每秒1M 比特,字的長度為20 個比特,數據有效長度為16 個比特,信息量最大長度為32 個字,傳輸方式為半雙工方式,傳輸協議為命令/響應方式,故障容錯有典型的雙冗余方式,第二條總線處于熱備份狀態,信息格式有BC 到RT、RT 到BC、RT 到RT、廣播方式和系統控制方式;能掛31 個遠置終端,終端類型有總線控制器(BC)、遠置終端(RT)和總線監聽器(BM),幀傳輸方式可分為兩部分:幀傳輸方式和廣播幀傳輸方式。在幀傳輸方式中有六種幀傳輸格式,分別為BC 到RT、RT 到BC、RT 到RT 和命令模式三種,傳輸過程中各種字所需的時間:命令字、狀態字和數據字均為20 微秒,響應時間最長為12 微秒。不同幀與幀之間傳輸是有時間間隔的,一般時間間隔為10 到30 微秒,傳輸媒介為屏蔽雙絞線。
RTX 是美國Ardence公司開發的Windows平臺的硬實時系統,可以為用戶提供優秀的實時控制性能,高效的可擴展性及穩定性。RTX 被設計為Windows上的一個實時的擴展子系統,其本身并不是一個獨立的操作系統。RTX 提供了對IRQ、I/O、內存的精確控制,以確保實時任務執行時具有100%的可靠性。由于RTX的操作均在Ring 0 級實現,可以在保證最高性能的基礎上實現最少的配置操作。RTX支持30KHz的持續中斷觸發速度,平均IST延遲小于1微秒。RTX 與Windows 系統無縫地結合在一起,可以利用Windows 系統的各種優勢。包括大量標準的API函數;高效的內存管理機制;以及各種Windows 下的通用資源。RTX 應用程序在開發階段運行于系統的Ring 3 級別;一旦開發者完成了調試工作,RTX 應用程序將被部署到Ring 0 級別以提供最好的時間響應特性。其他的Windows 擴展不具備這種能力。作為一個完全的Windows 擴展系統, RTX 子系統(RTSS, Real-time Sub-system )擁有精確高速的任務調度器,同時支持基于優先級和時間片輪詢兩種調度算法。RTX最高支持1000個獨立的進程,每個進程下可以運行的線程數不受限制。128個優先級可以滿足幾乎所有用戶的編程需要,RTX調度器可以確保線程切換時間保持在500納秒到2微秒之間。通過應用高速的IPC信息和同步機制,RTX 可以實現和Windows之間的數據通訊。精確的時間執行機制對實時系統至關重要,通過選用適合的時鐘,RTX 的時鐘分辨率可以達到100納秒,并且不會產生漂移現象。其定時器周期最低可以做到1000、500、200、100微秒。作為Windows 的擴展子系統,除了借助Windows 的資源外,RTX還可以獨立存在,即使在Windows 系統呈現藍屏時,RTX 依然可以健壯地運行。
- RTX實時擴展子系統架構
---
- 基于RTX下的PCI總線1553B模塊驅動程序主要開發步驟
采用基于PCI總線QPCX-1553板卡開發,下圖是QPCX-1553B板卡的部分寄存器功能。
--
根據板卡說明書,通過對PCI總線的枚舉獲取QPCX-1553板卡基地址,控制寄存器,中斷號等信息,程序如下
PCI_SLOT_NUMBER SlotNumber;
PPCI_COMMON_CONFIG PciData;
UCHAR buffer[PCI_COMMON_HDR_LENGTH];
ULONG uTemp = 0;
USHORT IoBase;
int vendorID;
int deviceID;
PCHAR vBAR0=NULL, vBAR1 = NULL; // pointer virtual memory addresses
vendorID=0x13c6;
deviceID=0x1556;
以上代碼通過RtGetBusDataByOffset函數來枚舉計算機上的所有PCI總線槽,每個槽上插的PCI板卡信息讀取放在PciData結構體里,根據(PciData->VendorID==vendorID)和(PciData->DeviceID==deviceID)來找到我們的板卡,這里我們的1553B板卡的vendorID為0x13c6,deviceID為0x1556,這樣確定我們的板卡。根據板卡手冊確定我們板卡的8MB內存空間,基地址存放在PLX9056的BAR2里面,及在結構體的位置為PciData->u.type0.BaseAddresses[2],獲取基地址后,通過RtMapMemory()函數映射成我們應用程序可以訪問的指正,通過這個指針實現對板卡各個寄存器的操作。RTX環境下具有直接訪問內存和IO的能力,中斷服務線程直接響應物理中斷號,不需要中斷的中轉,板卡中斷服務函數綁定使用以下函數:
HANDLE RtAttachInterruptVector(
PSECURITY_ATTRIBUTES pThreadAttributes,
ULONG StackSize,
VOID (RTFCNDCL *pRoutineIST)(PVOID ContextIST),
PVOID ContextIST,
ULONG Priority,
INTERFACE_TYPE InterfaceType,
ULONG BusNumber,
ULONG BusInterruptLevel,
ULONG BusInterruptVector);
數據傳輸通信協議是指對數據傳輸的約定,包括定時、控制、格式化和數據表示方法等。1553B總線采用指令/響應型通信協議,它有三種終端類型:
(A) 總線控制器(BC),它是在總線上惟一被安排為執行建立和啟動數據傳輸任務的終端。
(B) 遠程終端(RT)它是用戶子系統到數據總線上的接口,它在BC的控制下提取或吸收數據。
(C) 總線監視器(MT),它是監控總線上的信息傳輸,以完成對總線上的數據源進行紀錄和分析,但它本身不參與總線通信
根據1553B總線協議和QPCX-1553B板卡的寄存器功能,在RTX下實現編寫QPCX-1553B的以下功能和函數
--BM功能流程圖
根據BM的流程,實現以下各個功能函數:
初始化卡:BusTools_API_InitExtended()
BM初始化卡: BusTools_BM_Init()
設置總線方式:BusTools_SetInternalBus()
設置信息分配:BusTools_BM_ MessageAlloc()
設置時間模式:BusTools_TimeTagMode ()
設置濾波參數:BusTools_BM_FilterWrite()
耦合方式和電壓:BusTools_SetVoltage()
動BM工作:BusTools_BM_StartStop()
獲取總線消息:BusTools_BM_MessageRead()或者BusTools_BM_MessageReadBlock()
停止BM工作: BusTools_BM_StartStop()
板卡下電:BusTools_API_Close()
--RT功能流程圖
根據RT的流程,實現以下各個功能函數:
初始化卡:BusTools_API_InitExtended()
設置總線方式:BusTools_SetInternalBus()
設置RT有廣播方式:BusTools_SetBroadcast()
設置子地址模式碼方式:BusTools_SetSa31 ()
RT初始化卡: BusTools_RT_Init()
設置模擬RT:BusTools_RT_AbufWrite ()
開收/發緩沖區:BusTools_RT_CbufWrite ()
置模擬RT發送的消息: BusTools_RT_MessageWrite ()
啟動RT工作: BusTools_RT_StartStop ()
讀模擬RT的消息: BusTools_RT_MessageRead ()
停止RT工作: BusTools_RT_StartStop ()
板卡下電:BusTools_API_Close()
--BC功能流程圖
根據BC功能的流程,實現以下各個功能函數:
初始化卡:BusTools_API_InitExtended()
初始化BC功能: BusTools_BC_OneShotInit()
設置耦合和輸出電壓:BusTools_SetVoltage()
開始BC消息傳輸: BusTools_BC_OneShotExecute()
板卡下電:BusTools_API_Close()
基于RTX的1553B總線接口驅動軟件具備與標準Windows驅動軟件高度的一致性,同時具備強大的實時性和容錯性,在某xx導彈單元測試儀中經過實踐驗證,滿足了項目的使用,取得了很好的效果。
● 國防安全和軍事工程
● 航空和航天仿真系統
● 分布式實時仿真系統
● 實時仿真測試系統
● 飛行模擬器顯控系統
● 分布式實時仿真和轉臺控制系統