摘 要:為了滿足仿真系統(tǒng)具有對軟硬件可重配置管理的性能需求,開發(fā)了IOMAP實(shí)用程序,對程序的功能、結(jié)構(gòu)和工作流程進(jìn)行了詳細(xì)設(shè)計(jì)。設(shè)計(jì)完成的實(shí)用程序?qū)崿F(xiàn)了可伸縮性和可維護(hù)性的設(shè)計(jì)要求,較好的滿足了仿真系統(tǒng)的工作需要。
關(guān)鍵詞:可伸縮性;可維護(hù)性;靜態(tài)映射;數(shù)據(jù)庫結(jié)構(gòu)
中圖分類號:TP391.9 文獻(xiàn)標(biāo)識碼:A
1 引言
近年來,隨著計(jì)算機(jī)高新技術(shù)的高速發(fā)展和大量應(yīng)用,采用實(shí)時(shí)仿真技術(shù)研制模擬訓(xùn)練系統(tǒng)代替實(shí)際裝備進(jìn)行人員培訓(xùn)成為現(xiàn)代化裝備訓(xùn)練的常用方法[1]。本仿真系統(tǒng)就屬于半實(shí)物大型仿真訓(xùn)練平臺,整個(gè)仿真平臺的I/O控制設(shè)備種類繁多,I/O節(jié)點(diǎn)數(shù)目龐大,軟硬件體系結(jié)構(gòu)要求具有可伸縮性和可維護(hù)性的特性[2],本文針對這些特點(diǎn)和設(shè)計(jì)需要開發(fā)設(shè)計(jì)了IOMAP實(shí)用程序,通過I/O映射功能實(shí)現(xiàn)對系統(tǒng)軟硬件的可重配置管理,取得良好效果。
2 設(shè)計(jì)要求
2.1 可伸縮性要求
硬件上,仿真系統(tǒng)支持異構(gòu)平臺環(huán)境下可變數(shù)量的I/O控制器節(jié)點(diǎn)數(shù)和在每個(gè)節(jié)點(diǎn)上擁有不同種類以及不同數(shù)量的I/O卡組合情況。相應(yīng)的,軟件上也要具有支持這種動態(tài)變化的適應(yīng)能力,能很方便地修改系統(tǒng)以適應(yīng)硬件配置的改變。
2.2 可維護(hù)性要求
I/O控制器節(jié)點(diǎn)以及I/O點(diǎn)數(shù)發(fā)生變化時(shí),系統(tǒng)可以簡單快速的適應(yīng)這一變化,并迅速的生成仿真I/O系統(tǒng)所需要的配置數(shù)據(jù)。
2.3 IOMAP實(shí)用程序基本設(shè)計(jì)要求
要求能很好地與仿真軟件集成;要求能很方便的增加、刪除和修改I/O點(diǎn)表,以適應(yīng)硬件配置;要求能支持可變的I/O控制節(jié)點(diǎn)、不同類型的I/O卡,以及不同數(shù)量的I/O卡。
3 硬件體系結(jié)構(gòu)
本仿真系統(tǒng)屬于半實(shí)物大型仿真訓(xùn)練平臺,它包含一臺仿真主機(jī),一臺教控臺計(jì)算機(jī),數(shù)臺模擬軟臺屏計(jì)算機(jī),以及數(shù)十臺負(fù)責(zé)連接控制實(shí)物模擬硬臺屏的工控機(jī)。仿真主機(jī)是仿真系統(tǒng)的核心,仿真主機(jī)采用雙MIPSR2200 CPU的ccNUMA體系結(jié)構(gòu)SGI服務(wù)器,它為仿真系統(tǒng)提供全方位的開發(fā)和運(yùn)行環(huán)境,完成所有分系統(tǒng)的控制和仿真計(jì)算功能,仿真主機(jī)和I/O控制器的通信進(jìn)程/線程采用一對一的面向連接的可靠網(wǎng)絡(luò)服務(wù),這一硬件體系結(jié)構(gòu)是一種可伸縮體系結(jié)構(gòu)。仿真主機(jī)接收模擬臺屏系統(tǒng)的模擬數(shù)據(jù)和教控臺的命令,并將仿真計(jì)算的結(jié)果實(shí)時(shí)地傳給模擬臺屏系統(tǒng)。教控臺圖形工作站是控制員和仿真主機(jī)之間的主要接口,它能對仿真過程實(shí)施監(jiān)視和控制。模擬軟臺屏計(jì)算機(jī)用于生成供仿真主機(jī)運(yùn)算的數(shù)字量、模擬量和開關(guān)量,然后仿真主機(jī)將運(yùn)算結(jié)果饋送到模擬軟臺屏計(jì)算機(jī)顯示。工控機(jī)用于采集供仿真主機(jī)運(yùn)算的數(shù)字量、模擬量和開關(guān)量,并將仿真主機(jī)的運(yùn)算結(jié)果饋送到相應(yīng)的模擬硬臺屏設(shè)備。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
圖1 硬件體系結(jié)構(gòu)
4 軟件設(shè)計(jì)
4.1 映射配置方式選擇
映射配置方式可分為動態(tài)可重配置映射方式和靜態(tài)可重配置映射方式,動態(tài)可重配置映射方式是直接通過內(nèi)核提供的函數(shù)動態(tài)創(chuàng)建一段外設(shè)I/O資源到內(nèi)核虛擬地址的映射表,從而在內(nèi)核空間中訪問這段I/O資源,動態(tài)可重配置性要求軟件能自動適應(yīng)硬件變化,雖然提供了I/O管理的簡單性和友好性,但需要額外的系統(tǒng)開銷,而且實(shí)現(xiàn)較為復(fù)雜[3]。靜態(tài)可重配置映射方式由程序員自己創(chuàng)建和修改靜態(tài)映射表,定義外設(shè)I/O資源映射后的虛擬地址,提供了較好的系統(tǒng)性能,本仿真系統(tǒng)采用靜態(tài)可重配置映射方式。
4.2 IOMAP實(shí)用程序的功能
IOMAP實(shí)用程序是一個(gè)Microsoft Access數(shù)據(jù)庫應(yīng)用程序,采取了數(shù)據(jù)庫的方式來管理與硬件I/O、軟件I/O有關(guān)的信息,并能迅速生成仿真系統(tǒng)所需要的數(shù)據(jù)配置。這些信息包括硬件地址與軟件變量之間的映射關(guān)系、操作動作標(biāo)志、模擬設(shè)備的上下限等等。IOMAP是主控制進(jìn)程(MST)I/O處理和教控臺I/O超控的主要數(shù)據(jù)源。本程序處理四類基本的I/O類型:AI,AO,DI,DO。
4.3 IOMAP數(shù)據(jù)庫結(jié)構(gòu)
IOMAP數(shù)據(jù)庫中有兩個(gè)表:Cards表和IOPoints表。Cards表包括了四種基本I/O類型(AI、AO、DI和DO)的實(shí)際硬件配置;IOPoints表包括了所有的映射信息。
Cards表包括四種基本I/O類型的實(shí)際硬件參數(shù),用于產(chǎn)生初始的I/O映射入口(D.IOMPAR),按照硬件需求輸入配置信息,詳細(xì)的字段名信息如表1所示。其中,每塊模擬輸入板卡在表中對應(yīng)一條記錄;每塊模擬輸出板卡在表中對應(yīng)12條記錄;每塊數(shù)字I/O板卡在表中對應(yīng)12條記錄。
表1 Cards表結(jié)構(gòu)
IOPoints表包括所有的從硬件到軟件的映射信息,詳細(xì)的字段名信息如表2所示。其中,每塊模擬輸入板卡在表中對應(yīng)16條記錄;每塊模擬輸出板卡在表中對應(yīng)12條記錄;每塊數(shù)字I/O板卡在表中對應(yīng)12*8=96條記錄。
表2 IOPoints表結(jié)構(gòu)
4.4 程序流程
IOMAP實(shí)用程序根據(jù)數(shù)據(jù)庫中cards和IOPoints兩個(gè)表中的內(nèi)容,按照MST的要求,要產(chǎn)生以下映射文件供MST使用,產(chǎn)生的映射文件如表3所示,(其中??代表AI,AO,DI,DO)。對于IOMAP生成的映射文件,可以采用ftp方式上傳給仿真主機(jī),仿真主機(jī)根據(jù)這些文件中的內(nèi)容確定全局共享緩沖區(qū)中的內(nèi)容以及與各接口計(jì)算機(jī)進(jìn)行交互的數(shù)據(jù)內(nèi)容和格式,具體映射流程如圖2所示。通過映射流程圖我們可以清楚看到雖然IOMAP實(shí)用程序是在主動為MST I/O處理提供數(shù)據(jù),但這不等于仿真系統(tǒng)始終只需要處于被動接收數(shù)據(jù)的地位,對于錯(cuò)誤的配置,系統(tǒng)應(yīng)能夠很容易地檢查出來,提示用戶加以修改。
表3 IOMAP程序產(chǎn)生的映射文件
圖2 映射流程圖
4.5 主要數(shù)據(jù)結(jié)構(gòu)和功能模塊
Type HWInfo_t
invert As Byte ' 要轉(zhuǎn)換的數(shù)字點(diǎn)
scaletype As Byte
lo1 As Integer ' 第一個(gè)LO的下標(biāo)
lo2 As Integer ' 第二個(gè)LO的下標(biāo)
ao1 As Integer
low As Single ' 模擬量的最小值
high As Single ' 模擬量的最大值
End Type
Type IOList_t
Controller As Byte ‘工控機(jī)編號
Device As Byte ‘設(shè)備編號
Port As Byte ‘端口號
channels As Byte ‘通道號
cardtype As String * 64 ‘卡的類型
End Type
Global iompar As iompar_t ‘記錄各類設(shè)備的數(shù)量中每一項(xiàng)的結(jié)構(gòu)
AI d.iompar
Type iompar_i
PortDef As String
Controller As String
Device As String
NumChan As String
StartChan As String
End Type
WriteIOMpar(ByVal filename As String) 將ioparm_i 、ioparm_o、ioparm_p中的數(shù)據(jù)寫入文件filename中。
WriteMap(ByVal filename As String, map() As Long, Count As Long)寫供實(shí)時(shí)執(zhí)行程序和io任務(wù)使用的iomap表。
5 結(jié)束語
實(shí)踐證明,使用IOMAP應(yīng)用程序管理人員可以及時(shí)的根據(jù)硬件配置的變化,方便的增加、刪除和修改點(diǎn)表數(shù)據(jù)庫,進(jìn)而實(shí)現(xiàn)對映射文件的控制,增加、刪除和修改全局共享緩沖區(qū)的軟件變量。程序具有實(shí)時(shí)性、可伸縮性和可維護(hù)性的良好特征,有效滿足了半實(shí)物仿真系統(tǒng)的需要。
參考文獻(xiàn)
[1] 賀慧英,沈建清,魏建華.實(shí)時(shí)仿真系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)的一般
方法[J].海軍工程大學(xué)學(xué)報(bào),2008,4(2):67-70.
[2] 張秀山,等.通用分布式仿真I/O體系結(jié)構(gòu)設(shè)計(jì)及其應(yīng)用[J].計(jì)
算機(jī)應(yīng)用,2005,4(4):926.
[3] 侯慧,等.動態(tài)可重構(gòu)技術(shù)淺述[J].半導(dǎo)體技術(shù),2008,7(7):553-
555.
作者簡介:
彭漢國(1965-),男,碩士,高級工程師.研究領(lǐng)域:電子裝備保
障,仿真系統(tǒng)開發(fā).
張淵博(1980-),男,本科,工程師.研究領(lǐng)域:計(jì)算機(jī)仿真系統(tǒng)研
究與教學(xué).
李春軍(1974-),男,本科,工程師.研究領(lǐng)域:核動力工程管理.