專利名稱:一種半實物實時仿真機和半實物實時仿真系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及仿真技術(shù),特別是指一種半實物實時仿真機和半實物實時仿真系統(tǒng)。
背景技術(shù):
仿真機主要用于對人員進行培訓(xùn),或者用于工程設(shè)計、工程調(diào)試和工程分析用途。 仿真機包括計算機系統(tǒng)、機組控制操作臺和操作站、I/O接口等在內(nèi)的硬件設(shè)備以及軟件; 其中,硬件是仿真機的物理基礎(chǔ),而硬件的運行是由軟件驅(qū)動實現(xiàn)的;不同的軟件具有不同 的用途,系統(tǒng)軟件用于管理仿真機的各種資源;仿真應(yīng)用軟件、驅(qū)動軟件,用于驅(qū)動仿真機 的各個硬件設(shè)備;工具軟件,包括如Borland C++, Visual C++、FoxPro等,用來編制如分布 式控制系統(tǒng)(DCS)、數(shù)字電調(diào)系統(tǒng)(DEH)等的應(yīng)用程序。其中,仿真機的系統(tǒng)軟件稱為實時操作系統(tǒng)(RTOS,Real-Time OperatingSystem), 是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能 在規(guī)定的時間之內(nèi)控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并控制所有實時任務(wù)協(xié)調(diào)一 致運行的操作系統(tǒng)。因而,提供及時響應(yīng)和高可靠性是其本質(zhì)特點。實時操作系統(tǒng)有硬實時 和軟實時之分,硬實時要求在規(guī)定的時間內(nèi)必須完成操作,這是在操作系統(tǒng)設(shè)計時保證的; 軟實時則只要按照任務(wù)的優(yōu)先級,盡可能快地完成操作即可。實時操作系統(tǒng)是保證在一定 時間限制內(nèi)完成特定功能的操作系統(tǒng),例如,為確保生產(chǎn)線上的機器人能獲取某個物體而 設(shè)計的一個操作系統(tǒng)中,如果該操作系統(tǒng)是硬實時操作系統(tǒng),如果不能在允許時間內(nèi)使物 體到達相應(yīng)的位置,生產(chǎn)線的工作過程將因錯誤結(jié)束;與之相對比的是在軟實時操作系統(tǒng) 中,生產(chǎn)線仍然能繼續(xù)工作,但產(chǎn)品的輸出會因產(chǎn)品不能在允許時間內(nèi)到達而減慢。發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題各種現(xiàn)有的 仿真機不支持實時Linux技術(shù),無法應(yīng)用Linux現(xiàn)有的各種資源;而由于無法應(yīng)用Linux提 供的各種資源,導(dǎo)致在現(xiàn)有的仿真機上擴展板卡非常的困難,而且成本非常昂貴,并且由于 板卡驅(qū)動沒有穩(wěn)定的版本,需要技術(shù)人員重新定制甚至重新開發(fā),為用戶增加了很多額外 的技術(shù)和資金風(fēng)險。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種半實物實時仿真機和半實物實時仿真系統(tǒng),用于為用戶 提供一種基于Linux技術(shù)實現(xiàn)的仿真機,解決現(xiàn)有技術(shù)中,各種現(xiàn)有的仿真機不支持實時 Linux技術(shù),無法應(yīng)用Linux操作系統(tǒng)現(xiàn)有的各種資源的缺陷。一種半實物實時仿真機,包括實時內(nèi)核單元201,用于執(zhí)行實時進程,并調(diào)用所 述實時進程中的第一控制指令;所述實時進程包含有完成具體的仿真模型所需要的業(yè)務(wù) 邏輯;所述實時進程管理仿真模型在所述實時內(nèi)核單元201內(nèi)運行時的資源和業(yè)務(wù)邏輯; Linux內(nèi)核單元202,用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第二控制指令;所 述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時中斷處理單元 203,用于在接到各種控制指令之后,對所述控制指令的類型進行判別;當(dāng)所述控制指令為第一控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制指令為第二控制指令 時,設(shè)定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級的級別高于所述第二優(yōu)先級; 處理器單元204,用于處理解析所述控制指令并生成操作指令發(fā)送;板卡接口單元200,與 實物連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所述數(shù)據(jù)發(fā)送給實時內(nèi)核單元201 的實時進程。上述仿真機,還包括編程接口單元205,用于為實時內(nèi)核單元201中的實時任務(wù)/ 實時進程提供實時編程接口 ;所述實時編程接口至少兼容了 P0SIXUNIX和POSIX實時系統(tǒng) 接口 ;編譯器單元206,用于支持能夠在UNIX/Linux操作系統(tǒng)中運行的任何編譯器。上述仿真機,還包括通用驅(qū)動支持單元207,用于存放并調(diào)用通用硬件的各種驅(qū) 動,并且提供與各種驅(qū)動對應(yīng)的驅(qū)動接口 ;其中,所述驅(qū)動接口采用C語言或者C++語言編 寫,并且該驅(qū)動接口符合Linux規(guī)范;前端接入單元209,用于支持所述仿真機與用戶端101 之間構(gòu)成主機-目標(biāo)機模型;其中,用戶端101為主機,支持基于Matlab、Simulink,以及 SystemBuild程序建立仿真模型;所述仿真機102為目標(biāo)機,基于所述板卡接口單元200采 集的數(shù)據(jù)在所述仿真模型中進行仿真運算;所述用戶端101通過網(wǎng)絡(luò)和仿真機102進行通上述仿真機,還包括并行仿真單元208,用于在多個處理器單元204中確定控制 節(jié)點,主計算節(jié)點,從計算節(jié)點,輸出顯示節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的 子任務(wù)分配給上述節(jié)點。一種半實物實時仿真系統(tǒng),包括用戶端101,用于支持各種應(yīng)用程序的運行,通 過界面實現(xiàn)與用戶之間的交互,并包含至少一個仿真集成開發(fā)單元,該仿真集成開發(fā)單元 用于為用戶提供開發(fā)環(huán)境,使得用戶能夠在這一開發(fā)環(huán)境中通過輸入程序語言編寫相應(yīng)的 程序/業(yè)務(wù)邏輯;半實物實時仿真機102,包括實時內(nèi)核單元201,用于執(zhí)行實時進程,并 調(diào)用所述實時進程中的第一控制指令;所述實時進程包含有完成具體的仿真模型所需要的 業(yè)務(wù)邏輯;所述實時進程管理仿真模型在所述實時內(nèi)核單元201內(nèi)運行時的資源和業(yè)務(wù)邏 輯;Linux內(nèi)核單元202,用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第二控制指令; 所述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時中斷處理單元 203,用于在接到控制指令之后,對所述控制指令的類型進行判別;當(dāng)所述控制指令為第一 控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制指令為第二控制指令時,設(shè) 定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級的級別高于所述第二優(yōu)先級;處理 器單元204,用于處理解析所述控制指令并生成操作指令發(fā)送;板卡接口單元200,與實物 連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所述數(shù)據(jù)發(fā)送給實時內(nèi)核單元201的 實時進程。上述的實時仿真系統(tǒng)中,半實物實時仿真機102還包括前端接入單元209,用于 支持所述仿真機與用戶端101之間構(gòu)成主機-目標(biāo)機模型;其中,用戶端101為主機,支持 基于Matlab、Simulink,以及SystemBuild程序建立仿真模型;所述仿真機102為目標(biāo)機, 基于所述板卡接口單元200采集的數(shù)據(jù)在所述仿真模型中進行仿真運算;所述用戶端101 通過網(wǎng)絡(luò)和仿真機102進行通信。上述的實時仿真系統(tǒng)中,用戶端101還包括仿真開發(fā)環(huán)境單元301,用于為用戶 提供一個仿真開發(fā)環(huán)境,該仿真開發(fā)環(huán)境運行在第一操作系統(tǒng)上;所述第一操作系統(tǒng)為通用操作系統(tǒng)。一種多核/多機并行半實物實時仿真系統(tǒng),包括實時內(nèi)核單元201,用于執(zhí)行實 時進程,并調(diào)用所述實時進程中的第一控制指令;所述實時進程包含有完成具體的仿真模 型所需要的業(yè)務(wù)邏輯;所述實時進程管理仿真模型在所述實時內(nèi)核單元201內(nèi)運行時的資 源和業(yè)務(wù)邏輯;Linux內(nèi)核單元202,用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第 二控制指令;所述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時 中斷處理單元203,用于在接到控制指令之后,對所述控制指令的類型進行判別;當(dāng)所述控 制指令為第一控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制指令為第二 控制指令時,設(shè)定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級的級別高于所述第 二優(yōu)先級;處理器單元204,用于處理解析所述控制指令并生成操作指令發(fā)送;板卡接口單 元200,與實物連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所述數(shù)據(jù)發(fā)送給實時內(nèi) 核單元201的實時進程;并行仿真單元208,用于在多個處理器單元204中確定控制節(jié)點, 主計算節(jié)點,從計算節(jié)點,輸出顯示節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的子任 務(wù)分配給上述節(jié)點;或者,在多個半實物實時仿真機102中確定控制節(jié)點,主計算節(jié)點,從 計算節(jié)點,輸出顯示節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的子任務(wù)分配給上述節(jié) 點ο上述的仿真系統(tǒng),還包括消息傳遞并行程序設(shè)計接口,用于支持在多核之間,或 者多機之間傳遞消息;包括三層結(jié)構(gòu),最上層提供API實現(xiàn)點到點通信,以及在點到點通信 基礎(chǔ)上構(gòu)造的集群通信;中間層是抽象設(shè)備接口層,是對各種不同的底層通信庫的不同接 口的統(tǒng)一標(biāo)準(zhǔn);底層是底層通信庫。上述的仿真系統(tǒng),還包括并行多機任務(wù)分配單元,用于將不同的仿真模型分配給 不同的半實物實時仿真機102。應(yīng)用本發(fā)明提供的技術(shù)方案,將來自非實時Linux操作系統(tǒng)的第二控制指令的 優(yōu)先級降低,這樣,則運行在Linux操作系統(tǒng)的非實時進程在經(jīng)過實時中斷處理單元的仲 裁之后,總是讓位于實時操作系統(tǒng)中的實時進程,既保證了實時性,同時也能夠兼容利用 Linux操作系統(tǒng)的各種資源,得以能夠支持任何Linux驅(qū)動以及板卡。
圖1為本發(fā)明半實物實時仿真機應(yīng)用環(huán)境示意圖;圖2為本發(fā)明半實物實時仿真機結(jié)構(gòu)示意圖一;圖3為本發(fā)明半實物實時仿真機結(jié)構(gòu)示意圖二 ;圖4為本發(fā)明半實物實時仿真機結(jié)構(gòu)示意圖三;圖5為本發(fā)明一種半實物實時仿真系統(tǒng)結(jié)構(gòu)示意圖;圖6為本發(fā)明一種并行計算的半實物實時仿真系統(tǒng)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)特征和實施效果更加清楚,下面將結(jié)合附圖及具體實施 例對本發(fā)明的技術(shù)方案進行詳細(xì)描述。本發(fā)明提供的實施例中,引進了先進的實時技術(shù)和 半實物實時仿真平臺?;谕ㄓ肅PU技術(shù)的迅猛發(fā)展,尤其是在多核方面取得的長足發(fā)展,提出了一種基于通用CPU技術(shù)的可擴展性強的半實物仿真系統(tǒng)。如圖1所示,在使用到仿真機的工作環(huán)境中,用戶端101、半實物實時仿真機102與 仿真實物103連接在一起,用戶在用戶端101輸入實時任務(wù)或仿真模型,該實時任務(wù)或仿真 模型包含控制指令,由半實物實時仿真機102解析控制指令,并生成操作指令發(fā)送給仿真 實物103,由仿真實物103具體執(zhí)行操作指令,作出相應(yīng)的響應(yīng)動作。一種半實物實時仿真機,如圖2所示,包括實時內(nèi)核單元201,用于執(zhí)行實時進程,并調(diào)用所述實時進程中的第一控制指令; 所述實時進程包含有完成具體的仿真模型所需要的業(yè)務(wù)邏輯;該業(yè)務(wù)邏輯一般而言由完成 該仿真模型的操作步驟形成;所述實時進程管理仿真模型在所述實時內(nèi)核單元201內(nèi)運行 時的資源和業(yè)務(wù)邏輯;Linux內(nèi)核單元202,用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第二控制 指令;所述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時中斷處理單元203,用于在接到控制指令之后,對所述控制指令的類型進行判 別;當(dāng)所述控制指令為第一控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制 指令為第二控制指令時,設(shè)定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級優(yōu)先于 所述第二優(yōu)先級;處理器單元204,用于處理解析所述控制指令并生成操作指令發(fā)送;板卡接口單元200,與實物連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所 述數(shù)據(jù)發(fā)送給實時內(nèi)核單元201的所述實時進程。該實時進程將這些數(shù)據(jù)代入仿真模型中 進行運算。應(yīng)用所提供的技術(shù)方案,將來自Linux內(nèi)核單元202的第二控制指令的優(yōu)先級降 低,這樣,則運行在Linux內(nèi)核單元202的非實時進程在經(jīng)過實時中斷處理單元203的仲裁 之后,總是讓位于實時內(nèi)核單元201中的實時進程,既保證了實時性,同時也兼容了 Linux 操作系統(tǒng),所以支持任何Linux操作系統(tǒng)下能夠工作的驅(qū)動以及板卡。其中,Linux內(nèi)核單 元202是通用Linux操作系統(tǒng)的內(nèi)核,可以完成Linux操作系統(tǒng)的各種功能,其所能夠執(zhí)行 的非實時進程與通用Linux操作系統(tǒng)中能夠執(zhí)行的各種進程相同。可見,實時仿真機能夠在源代碼層面兼容支持Linux設(shè)備,驅(qū)動和板卡。因而可充 分利用Linux下的各種板卡接口單元(習(xí)慣稱之為數(shù)據(jù)采集卡)200,及各類硬件設(shè)備。很 多用戶使用Fortran語言來進行大規(guī)模實時仿真計算的編程,但是在目前的仿真機中很難 支持Fortran語言,導(dǎo)致在使用Fortran語言的過程中調(diào)試運行容易出錯誤。為解決上述 問題,如圖3所示,半實物實時仿真機中還可以包括編程接口單元205,用于為實時內(nèi)核單元201中運行的實時任務(wù)/實時進程提供實 時編程接口 ;所述實時編程接口至少兼容了 POSix UNIX和POSIX實時系統(tǒng)接口。這樣基于 UNIX/Linux系統(tǒng)運行的大量的程序都可以直接使用,減少了研發(fā)工作量。編譯器單元206,用于支持Intel Fortran高性能編譯器,GNU Fortran編譯器,以 及在UNIX/Linux系統(tǒng)中可以運行的任何編譯器?;趯崟rLinux的仿真系統(tǒng)與現(xiàn)有仿真系統(tǒng)對比如下 如圖4所示,半實物實時仿真機中102還可以包括通用驅(qū)動支持單元207,用于存放各種硬件的驅(qū)動程序,并且提供與各種驅(qū)動對應(yīng) 的各種驅(qū)動接口,其中,驅(qū)動接口采用C語言或者C++語言編寫,并且符合Linux規(guī)范。具 體而言,Linux巨大的市場商機使開放源代碼開發(fā)實驗室(OSDL)及其成員-不同的電信設(shè) 備制造商等共同啟動了 CGL(Carrier GradeLinux)項目,通過基于Linux平臺研發(fā)電信行 業(yè)關(guān)鍵任務(wù)的應(yīng)用技術(shù)規(guī)范,為電信市場提供高穩(wěn)定性、高安全性、高質(zhì)量、高性能和高可 用性的Linux平臺,為Linux電信級應(yīng)用掃清障礙。CGL是OSDL發(fā)布的一個電信運營級Linux規(guī)范。CGL1. 1標(biāo)準(zhǔn)于2002年7月發(fā)布, 該規(guī)范包括一系列的技術(shù)要求和建議標(biāo)準(zhǔn),其中明確規(guī)定了符合電信級客戶需求的操作系 統(tǒng)的應(yīng)用特性,Linux企業(yè)可以根據(jù)這些規(guī)范保證自己的Linux產(chǎn)品能夠為電信運營商所采用。實時仿真具有硬實時操作系統(tǒng)的特性,因此,需要保證仿真模型的計算結(jié)果在預(yù) 先設(shè)定的時間內(nèi)得出,為此,在仿真機中通過設(shè)置多核或者在仿真系統(tǒng)中通過設(shè)置多仿真機協(xié)同計算來保障硬實時性,為此仿真機中還包含并行仿真單元208。前端接入單元209,用于支持仿真機102與用戶端101之間構(gòu)成主機-目標(biāo) 機(Host-Target)模型;其中,用戶端101為主機,支持基于Matlab、Simulink,以及 SystemBuild程序建立仿真模型;仿真機102為目標(biāo)機,基于板卡接口單元200采集的數(shù)據(jù) 在所述仿真模型中進行仿真運算;用戶端101通過網(wǎng)絡(luò)和仿真機102進行通信。半實物實 時仿真機102支持和Matlab,Simulink, SystemBuild等軟件之間的無縫融合,用戶可以在 用戶端101的通用操作系統(tǒng)(General 0S,例如Window)上,利用Matlab中的多領(lǐng)域仿真和 基于模型的設(shè)計工具(Simulink和RTW工具包)進行實時仿真模型的研發(fā);提供Eclipse 圖形界面開發(fā)工具MainControl前端控制面板,可以實時的觀察實時仿真機的數(shù)據(jù)顯示, 動態(tài)的設(shè)置實時仿真機的參數(shù)等。仿真支持語言為C,C++, VC, Fortran, Ada, Simulink, Matlab, SystemBuild,虛擬儀器(LabVIEff, Laboratory Virtual instrument Engineering Workbench)等。如圖4所示的半實物實時仿真機中,存在多個處理器單元204,這些處理器單元 204處于并行工作狀態(tài)以提高半實物實時仿真機的工作性能。這種多核工作模式的半實物 實時仿真機,主要用于大規(guī)??茖W(xué)實時計算,電力,電子數(shù)字仿真,核武器仿真和對計算量 要求非常大的環(huán)境。因此,仿真機102中還包括并行仿真單元208,用于在多個處理器單元204中確定控制節(jié)點,主計算節(jié)點,從 計算節(jié)點,輸出顯示節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的子任務(wù)分配給上述節(jié) 點。其中,控制節(jié)點,主計算節(jié)點,從計算節(jié)點,輸出顯示節(jié)點對應(yīng)完成仿真模型中不同的子 任務(wù);例如,控制節(jié)點負(fù)責(zé)完成對整個仿真模型的業(yè)務(wù)邏輯_工作步驟的控制,主計算節(jié)點 完成核心的主要計算任務(wù),從計算節(jié)點完成非主要計算任務(wù),輸出顯示節(jié)點用于實現(xiàn)顯示 功能或者與其他設(shè)備的通信。應(yīng)用所提供的技術(shù)方案,繼承了目前實時仿真系統(tǒng)的優(yōu)勢,比如,通用驅(qū)動支持單 元207支持大量的外設(shè)接口,編程接口單元205支持靈活的編程接口,對外圍的硬件響應(yīng)控 制在1微秒以內(nèi),也避免了目前實時仿真機的一些缺點。在上述實時仿真機中,使用了大量 成熟穩(wěn)定的商業(yè)驅(qū)動和硬件,使用了目前成熟的虛擬化實時技術(shù),兼容了 Linux操作系統(tǒng), 所以任何板卡的Linux驅(qū)動都可以在本發(fā)明提供的實時仿真系統(tǒng)上得到使用。本發(fā)明還提供了一種半實物實時仿真系統(tǒng),如圖5所示,包括用戶端101,用于支持各種應(yīng)用程序的運行,通過界面實現(xiàn)與用戶之間的交互,并 包含至少一個仿真集成開發(fā)單元,該仿真集成開發(fā)單元用于為用戶提供開發(fā)環(huán)境,使得用 戶能夠在這一開發(fā)環(huán)境中通過輸入程序語言編寫相應(yīng)的程序/業(yè)務(wù)邏輯。半實物實時仿真機102,包括實時內(nèi)核單元201,用于執(zhí)行實時進程,并調(diào)用所述實時進程中的第一控制指令; 所述實時進程包含有完成具體的仿真模型所需要的業(yè)務(wù)邏輯;Linux內(nèi)核單元202,用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第二控制 指令;所述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯;實時中斷處理單元203,用于在接到控制指令之后,對所述控制指令的類型進行判 別;當(dāng)所述控制指令為第一控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制 指令為第二控制指令時,設(shè)定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級優(yōu)先于所述第二優(yōu)先級;處理器單元204,用于處理解析所述控制指令并生成操作指令發(fā)送;板卡接口單元200,與實物連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所 述數(shù)據(jù)發(fā)送給實時內(nèi)核單元201的實時進程。應(yīng)用所提供的技術(shù)方案,將來自Linux內(nèi)核單元202的第二控制指令的優(yōu)先級降 低,則運行在Linux內(nèi)核單元202的非實時進程在經(jīng)過實時中斷處理單元203的仲裁之后, 總是讓位于實時內(nèi)核單元201中的實時進程,既保證了實時性,同時也兼容了 Linux系統(tǒng), 所以支持任何Linux驅(qū)動以及板卡。因此,在本發(fā)明提供的仿真機上,由于支持Linux技術(shù), 能夠應(yīng)用Linux現(xiàn)有的各種資源,這樣在UNIX/Linux下面大量的程序都可以直接使用,減 少了大量的工作量。半實物實時仿真機102還包括前端接入單元209,用于支持所述仿真機與用戶端 101之間構(gòu)成主機-目標(biāo)機模型;其中,用戶端101為主機,支持基于Matlab、Simulink,以 及SystemBuild程序建立仿真模型;所述仿真機102為目標(biāo)機,基于所述板卡接口單元200 采集的數(shù)據(jù)在所述仿真模型中進行仿真運算;所述用戶端101通過網(wǎng)絡(luò)和仿真機102進行
通{曰。為了給用戶提供更友好的開發(fā)環(huán)境,本發(fā)明的實施例中,在用戶端101進行優(yōu)化, 因此,所述用戶端101支持運行第一操作系統(tǒng),并且還包括仿真開發(fā)環(huán)境單元301,用于為用戶提供一個仿真開發(fā)環(huán)境,該仿真開發(fā)環(huán)境運行 在第一操作系統(tǒng)上。具體而言,第一操作系統(tǒng)通常是Window、Linux、Mac OS等等。仿真開 發(fā)環(huán)境可以是Matlab,則用戶只需要在Window上利用Matlab中的simulink和RTW進行實 時仿真程序開發(fā)。同時也支持仿真開發(fā)環(huán)境LabVIEW進行實時仿真。如此,則整個實時仿真系統(tǒng)中,采用Matlab/LabVIEW進行前端仿真模型設(shè)計,然 后控制實時控制軟件把模型轉(zhuǎn)化為相應(yīng)的實時代碼,自動在實時仿真機上運行。調(diào)試。測 試等。整個系統(tǒng)全部在Windows系統(tǒng)中全部完成。無須用戶具有實時系統(tǒng)的專業(yè)知識,只 需要會使用Matlab/LabVIEW進行前端設(shè)計即可。方便用戶使用。大規(guī)模并行計算實時仿真機主要用于大規(guī)??茖W(xué)實時計算,電力,電子數(shù)字仿真, 核武器仿真和對計算量要求非常大的環(huán)境。為此,如圖6所示,還提供了一種多核/多機并 行半實物實時仿真系統(tǒng),其中,存在多個半實物實時仿真機102 ;每一個半實物實時仿真機 102中,包括實時內(nèi)核單元201,用于執(zhí)行實時進程,并調(diào)用所述實時進程中的第一控制指令; 所述實時進程包含有完成具體的仿真模型所需要的業(yè)務(wù)邏輯;該業(yè)務(wù)邏輯一般而言由完成 該仿真模型的操作步驟形成;所述實時進程管理仿真模型在所述實時內(nèi)核單元201內(nèi)運行 時的資源和業(yè)務(wù)邏輯;Linux內(nèi)核單元202,用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第二控制 指令;所述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時中斷處理單元203,用于在接到控制指令之后,對所述控制指令的類型進行判 別;當(dāng)所述控制指令為第一控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制 指令為第二控制指令時,設(shè)定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級優(yōu)先于 所述第二優(yōu)先級;
處理器單元204,用于處理解析所述控制指令并生成操作指令發(fā)送;板卡接口單元200,與實物連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所 述數(shù)據(jù)發(fā)送給實時內(nèi)核單元201的所述實時進程。該實時進程將這些數(shù)據(jù)代入仿真模型中 進行運算。以及,并行仿真單元208,用于在多個處理器單元204中確定控制節(jié)點,主計算節(jié)點,從 計算節(jié)點,輸出顯示節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的子任務(wù)分配給上述節(jié)
點或者,在多個半實物實時仿真機102中確定控制節(jié)點,主計算節(jié)點,從計算節(jié)點,輸出顯 示節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的子任務(wù)分配給上述節(jié)點。其中,控制節(jié) 點,主計算節(jié)點,從計算節(jié)點,輸出顯示節(jié)點對應(yīng)完成仿真模型中不同的子任務(wù);例如,控制 節(jié)點負(fù)責(zé)完成對整個仿真模型的業(yè)務(wù)邏輯_工作步驟的控制,主計算節(jié)點完成核心的主要 計算任務(wù),從計算節(jié)點完成非主要計算任務(wù),輸出顯示節(jié)點用于實現(xiàn)顯示功能或者與其他 設(shè)備的通信。應(yīng)用所提供的技術(shù)方案,能夠支持多臺半實物實時仿真機102并行的處理復(fù)雜的 仿真模型。由于個體半實物實時仿真機102計算能力的限制,單臺半實物實時仿真機102 難以計算復(fù)雜的仿真模型,所以這里提供多臺半實物實時仿真機102并行仿真復(fù)雜模型的 方式,多臺半實物實時仿真機102之間通過反射內(nèi)存卡等網(wǎng)絡(luò)進行連接以及通信。并且,為了使得各個半實物實時仿真機102之間能夠?qū)崿F(xiàn)協(xié)同工作,仿真系統(tǒng)還 包括消息傳遞并行程序設(shè)計接口,用于支持在多核之間,或者多機之間傳遞消息;消息 傳遞并行程序設(shè)計接口包括三層結(jié)構(gòu),最上層提供應(yīng)用程序編程接口(API,Application Programming Interface)實現(xiàn)點到點通信,以及在點到點通信基礎(chǔ)上構(gòu)造的集群通 信(Collective Communication);中間層是抽象設(shè)備接口層(ADI,Abstract Device Interface),是對各種不同的底層通信庫的不同接口的統(tǒng)一標(biāo)準(zhǔn);底層是底層通信庫。還包括并行多機任務(wù)分配單元,用于將不同的仿真模型分配給不同的半實物實時仿真機 102。這些分配到仿真模型的半實物實時仿真機102,如果是多核仿真機,則通過其并行仿真 單元208將仿真模型切分為不同的子任務(wù),將不同的子任務(wù)分配給上述節(jié)點。對于多核/多機并行半實物實時仿真系統(tǒng)而言,可以出現(xiàn)如下的工作方式(1) 一臺半實物實時仿真機102單獨工作,且該半實物實時仿真機102是單核仿真 機。(2) —臺半實物實時仿真機102單獨工作,且該半實物實時仿真機102是多核仿真 機,內(nèi)置有并行仿真單元208用于在多核之間分配子任務(wù)。(3)多臺半實物實時仿真機102協(xié)同工作,且每臺半實物實時仿真機102均是單核 仿真機。并行多機任務(wù)分配單元將不同的仿真模型分配給不同的半實物實時仿真機102。(4)多臺半實物實時仿真機102協(xié)同工作,且至少一臺半實物實時仿真機102是多 核仿真機。并行多機任務(wù)分配單元將不同的仿真模型分配給不同的半實物實時仿真機102。 并且在多核仿真機中,并行仿真單元208用于在多核之間分配子任務(wù)。
提供上述工作方式供技術(shù)人員參考,但不用于限定本發(fā)明的發(fā)明思想。應(yīng)用所提供的技術(shù)方案,能夠進行模型分割和安排不同模型運行到不同的仿真機 上的能力;可以大規(guī)模的提供仿真機的仿真計算能力;支持不同仿真方式在不同仿真機器 上運行;支持實時MPI并行仿真庫;支持單機多核仿真方式和多機多核的方式仿真。本發(fā)明的實施例具有以下有益效果,將來自Linux內(nèi)核單元202的第二控制指令 的優(yōu)先級降低,則運行在Linux內(nèi)核單元202的非實時進程在經(jīng)過實時中斷處理單元203 的仲裁之后,總是讓位于實時內(nèi)核單元201中的實時進程,既保證了實時性,同時也兼容了 Linux系統(tǒng),所以支持任何Linux驅(qū)動以及板卡。因此,在本發(fā)明提供的仿真機上,由于支 持Linux技術(shù),能夠應(yīng)用Linux現(xiàn)有的各種資源,這樣在UNIX/Linux下面大量的程序都可 以直接使用,減少了大量的工作量。應(yīng)當(dāng)說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制,所有的參數(shù) 取值可以根據(jù)實際情況調(diào)整,且在該權(quán)利保護范圍內(nèi)。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可 以對本發(fā)明的技術(shù)方案進行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神范圍,其 均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
一種半實物實時仿真機,其特征在于,包括實時內(nèi)核單元(201),用于執(zhí)行實時進程,并調(diào)用所述實時進程中的第一控制指令;所述實時進程包含有完成具體的仿真模型所需要的業(yè)務(wù)邏輯;所述實時進程管理仿真模型在所述實時內(nèi)核單元(201)內(nèi)運行時的資源和業(yè)務(wù)邏輯;Linux內(nèi)核單元(202),用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第二控制指令;所述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時中斷處理單元(203),用于在接到各種控制指令之后,對所述控制指令的類型進行判別;當(dāng)所述控制指令為第一控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制指令為第二控制指令時,設(shè)定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級的級別高于所述第二優(yōu)先級;處理器單元(204),用于處理解析所述控制指令并生成操作指令發(fā)送;板卡接口單元(200),與實物連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所述數(shù)據(jù)發(fā)送給實時內(nèi)核單元(201)的實時進程。
2.根據(jù)權(quán)利要求1所述的仿真機,其特征在于,還包括編程接口單元(205),用于為實時內(nèi)核單元(201)中的實時任務(wù)/實時進程提供實時編 程接口 ;所述實時編程接口至少兼容了 POSIX UNIX和POSIX實時系統(tǒng)接口 ;編譯器單元(206),用于支持能夠在UNIX/Linux操作系統(tǒng)中運行的任何編譯器。
3.根據(jù)權(quán)利要求1所述的仿真機,其特征在于,還包括通用驅(qū)動支持單元(207),用于存放并調(diào)用通用硬件的各種驅(qū)動,并且提供與各種驅(qū)動 對應(yīng)的驅(qū)動接口 ;其中,所述驅(qū)動接口采用C語言或者C++語言編寫,并且該驅(qū)動接口符合 Linux規(guī)范;前端接入單元(209),用于支持所述仿真機與用戶端(101)之間構(gòu)成主機-目標(biāo)機模 型;其中,用戶端(101)為主機,支持基于Matlab、Simulink,以及SystemBuild程序建立仿 真模型;所述仿真機(102)為目標(biāo)機,基于所述板卡接口單元(200)采集的數(shù)據(jù)在所述仿真 模型中進行仿真運算;所述用戶端(101)通過網(wǎng)絡(luò)和仿真機(102)進行通信。
4.根據(jù)權(quán)利要求1所述的仿真機,其特征在于,還包括并行仿真單元(208),用于在多個處理器單元(204)中確定控制節(jié)點,主計算節(jié)點,從 計算節(jié)點,輸出顯示節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的子任務(wù)分配給上述節(jié)點ο
5.一種半實物實時仿真系統(tǒng),其特征在于,包括用戶端(101),用于支持各種應(yīng)用程序的運行,通過界面實現(xiàn)與用戶之間的交互,并包 含至少一個仿真集成開發(fā)單元,該仿真集成開發(fā)單元用于為用戶提供開發(fā)環(huán)境,使得用戶 能夠在這一開發(fā)環(huán)境中通過輸入程序語言編寫相應(yīng)的程序/業(yè)務(wù)邏輯; 半實物實時仿真機(102),包括實時內(nèi)核單元(201),用于執(zhí)行實時進程,并調(diào)用所述實時進程中的第一控制指令;所 述實時進程包含有完成具體的仿真模型所需要的業(yè)務(wù)邏輯;所述實時進程管理仿真模型在 所述實時內(nèi)核單元(201)內(nèi)運行時的資源和業(yè)務(wù)邏輯;Linux內(nèi)核單元(202),用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第二控制指 令;所述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時中斷處理單元(203),用于在接到控制指令之后,對所述控制指令的類型進行判別;當(dāng)所述控制指令為第一控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制 指令為第二控制指令時,設(shè)定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級的級別 高于所述第二優(yōu)先級;處理器單元(204),用于處理解析所述控制指令并生成操作指令發(fā)送; 板卡接口單元(200),與實物連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所述 數(shù)據(jù)發(fā)送給實時內(nèi)核單元(201)的實時進程。
6.根據(jù)權(quán)利要求5所述的實時仿真系統(tǒng),其特征在于,半實物實時仿真機(102)還包括前端接入單元(209),用于支持所述仿真機與用戶端(101)之間構(gòu)成主機-目標(biāo)機模 型;其中,用戶端(101)為主機,支持基于Matlab、Simulink,以及SystemBuild程序建立仿 真模型;所述仿真機(102)為目標(biāo)機,基于所述板卡接口單元(200)采集的數(shù)據(jù)在所述仿真 模型中進行仿真運算;所述用戶端(101)通過網(wǎng)絡(luò)和仿真機(102)進行通信。
7.根據(jù)權(quán)利要求6所述的實時仿真系統(tǒng),其特征在于,用戶端(101)還包括仿真開發(fā)環(huán)境單元(301),用于為用戶提供一個仿真開發(fā)環(huán)境,該仿真開發(fā)環(huán)境運行在 第一操作系統(tǒng)上;所述第一操作系統(tǒng)為通用操作系統(tǒng)。
8.一種多核/多機并行半實物實時仿真系統(tǒng),其特征在于,包括實時內(nèi)核單元(201),用于執(zhí)行實時進程,并調(diào)用所述實時進程中的第一控制指令;所 述實時進程包含有完成具體的仿真模型所需要的業(yè)務(wù)邏輯;所述實時進程管理仿真模型在 所述實時內(nèi)核單元(201)內(nèi)運行時的資源和業(yè)務(wù)邏輯;Linux內(nèi)核單元(202),用于執(zhí)行非實時進程,并調(diào)用所述非實時進程中的第二控制指 令;所述非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時中斷處理單元(203),用于在接到控制指令之后,對所述控制指令的類型進行判 別;當(dāng)所述控制指令為第一控制指令時,設(shè)定該第一控制指令具有第一優(yōu)先級,當(dāng)所述控制 指令為第二控制指令時,設(shè)定該第二控制指令具有第二優(yōu)先級;且所述第一優(yōu)先級的級別 高于所述第二優(yōu)先級;處理器單元(204),用于處理解析所述控制指令并生成操作指令發(fā)送; 板卡接口單元(200),與實物連接,用于采集仿真過程中所述實物生成的數(shù)據(jù),將所述 數(shù)據(jù)發(fā)送給實時內(nèi)核單元(201)的實時進程;并行仿真單元(208),用于在多個處理器單元(204)中確定控制節(jié)點,主計算節(jié)點,從 計算節(jié)點,輸出顯示節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的子任務(wù)分配給上述節(jié)點;或者,在多個半實物實時仿真機(102)中確定控制節(jié)點,主計算節(jié)點,從計算節(jié)點,輸出顯示 節(jié)點;將仿真模型切分為不同的子任務(wù),將不同的子任務(wù)分配給上述節(jié)點。
9.根據(jù)權(quán)利要求8所述的仿真系統(tǒng),其特征在于,還包括消息傳遞并行程序設(shè)計接口,用于支持在多核之間,或者多機之間傳遞消息; 包括三層結(jié)構(gòu),最上層提供API實現(xiàn)點到點通信,以及在點到點通信基礎(chǔ)上構(gòu)造的集 群通信;中間層是抽象設(shè)備接口層,是對各種不同的底層通信庫的不同接口的統(tǒng)一標(biāo)準(zhǔn);底層是底層通信庫。
10.根據(jù)權(quán)利要求8所述的仿真系統(tǒng),其特征在于,還包括并行多機任務(wù)分配單元,用于將不同的仿真模型分配給不同的半實物實時仿真機 (102)。
全文摘要
本發(fā)明提供一種半實物實時仿真機和半實物實時仿真系統(tǒng),仿真機包括實時內(nèi)核單元,執(zhí)行實時進程,調(diào)用實時進程中的第一控制指令;實時進程包含有完成仿真模型所需要的業(yè)務(wù)邏輯;實時進程管理仿真模型在實時內(nèi)核單元內(nèi)運行時的資源和業(yè)務(wù)邏輯;Linux內(nèi)核單元,執(zhí)行非實時進程,并調(diào)用非實時進程中的第二控制指令;非實時進程包含有完成具體的應(yīng)用任務(wù)所需要的業(yè)務(wù)邏輯和資源;實時中斷處理單元,在接到各種控制指令之后,對控制指令的類型進行判別。本發(fā)明中將來自Linux操作系統(tǒng)的第二控制指令的優(yōu)先級降低,則運行在Linux操作系統(tǒng)的非實時進程經(jīng)過仲裁之后總是讓位于實時操作系統(tǒng)中的實時進程,保證了實時性也兼容了Linux操作系統(tǒng)的各種資源。
文檔編號G06F9/455GK101887378SQ201010202480
公開日2010年11月17日 申請日期2010年6月18日 優(yōu)先權(quán)日2010年6月18日
發(fā)明者李清風(fēng), 陽堅 申請人:陽堅