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