專利名稱:一種多領(lǐng)域協(xié)同分布式仿真系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種多領(lǐng)域協(xié)同分布式仿真系統(tǒng),屬于工程系統(tǒng)數(shù)字分布式協(xié)同仿真技術(shù)領(lǐng)域。
背景技術(shù):
工程系統(tǒng)(包括飛機(jī)、導(dǎo)彈、衛(wèi)星、汽車等)通常由機(jī)械、電氣、液壓、燃油、環(huán)控等不同領(lǐng)域的子系統(tǒng)組成,所以在設(shè)計階段通常需要各種不同領(lǐng)域的建模仿真軟件(如Matlab/ Simulink、ADAMS、Simplorer> Flowmaster> AMESim等)進(jìn)行系統(tǒng)分析。而不同領(lǐng)域的子系統(tǒng)之間相互影響,所以需要不同領(lǐng)域的仿真軟件進(jìn)行協(xié)同仿真分析以完成大系統(tǒng)分析的功倉泛。
而不同領(lǐng)域的仿真軟件其建模機(jī)理、解算方法都有所不同,解算步長通常外部也無法控制,軟件時鐘也各自獨(dú)立,這就增加了各仿真軟件協(xié)同仿真的難度。而且通常各仿真軟件運(yùn)行在不同的計算機(jī)上,而且運(yùn)行不同的操作系統(tǒng),多數(shù)軟件本身并不支持分布式數(shù)據(jù)傳輸,這使分布式協(xié)同仿真更加困難。
目前現(xiàn)有的進(jìn)行多領(lǐng)域協(xié)同仿真的系統(tǒng)均采用將不同軟件建立的模型通過S函數(shù)等形式嵌入到Matlab/Simulink中,成為Simulink的子模型,然后通過Simulink的解算器或者內(nèi)嵌的自帶解算器進(jìn)行解算,時鐘推進(jìn)及數(shù)據(jù)交互由Simulink完成,這種協(xié)同仿真模式存在如下問題
I.不是所有的仿真軟件均能夠封裝成Simulink下的模型并支持導(dǎo)出,這就限制了協(xié)同仿真軟件的種類;
2.不同仿真軟件通常使用自帶的適合該領(lǐng)域系統(tǒng)模型的解算器,該解算器在導(dǎo)出時由于脫離各自仿真軟件獨(dú)立運(yùn)行,其功能均有所裁剪,這將影響協(xié)同仿真的解算精度,甚至導(dǎo)致解算失??;
3.不同仿真軟件的解算步長均不同,而且多數(shù)采用變步長解算,而這種嵌入到 Simulink的模式,其解算步長由Simulink指定,Simulink必須設(shè)置步長為所有軟件生成模型所需要的最小步長才能使協(xié)同仿真正常解算,這不僅嚴(yán)重影響了解算效率,而且可能帶來不必要的數(shù)值誤差;
4.嵌入到Simulink的模式通常無法進(jìn)行分布式仿真,而單機(jī)仿真解算時間收到 CPU的制約,從而導(dǎo)致解算時間過長,而且收到Simulink長期解算導(dǎo)致的軟件穩(wěn)定性的影響,容易導(dǎo)致解算失??;
5.由于不同軟件仿真步長、系統(tǒng)初值等不同,這種嵌入到Simulink的模式無法實現(xiàn)不同步長模型之間的數(shù)據(jù)內(nèi)外差值補(bǔ)償,從而在數(shù)據(jù)交互過程中模型由于輸入數(shù)據(jù)的突變導(dǎo)致系統(tǒng)剛性,致使局部解算失敗而導(dǎo)致協(xié)同仿真失敗;
6.由于嵌入到Simulink模式將不同領(lǐng)域軟件生成的模型進(jìn)行了封裝,無法在運(yùn)行過程中監(jiān)視模型內(nèi)部數(shù)據(jù)變化,不利于仿真分析;
7.各領(lǐng)域模型的數(shù)據(jù)交互傳輸均需通過Simulink環(huán)境完成,無法實現(xiàn)點(diǎn)對點(diǎn)直接傳輸,當(dāng)數(shù)據(jù)傳輸量很大時,這種傳輸方式將嚴(yán)重影響仿真速度。發(fā)明內(nèi)容
本發(fā)明為解決現(xiàn)有的協(xié)同仿真系統(tǒng)存在的采用將不同軟件建立的模型嵌入同一系統(tǒng)時存在的不支持所有仿真軟件導(dǎo)出、協(xié)同仿真的解算精度和解算效率較差以及容易導(dǎo)致協(xié)同仿真失敗的問題,進(jìn)而提供了一種多領(lǐng)域協(xié)同分布式仿真系統(tǒng)。為此,本發(fā)明提供了如下的技術(shù)方案
一種多領(lǐng)域協(xié)同分布式仿真系統(tǒng),包括
主控模塊,用于通過載入預(yù)定模型的描述文件獲得相應(yīng)的模型信息,根據(jù)所述模型信息設(shè)置時鐘基頻并下發(fā)所述時鐘基頻及仿真控制指令,根據(jù)所述模型信息設(shè)置位于數(shù)據(jù)服務(wù)模塊中的模型之間的數(shù)據(jù)傳輸通道并定義各個數(shù)據(jù)通道的數(shù)據(jù)更新周期;
數(shù)據(jù)服務(wù)模塊,用于通過建立具有獨(dú)立數(shù)據(jù)傳輸周期的數(shù)據(jù)鏈路,為分布式協(xié)同仿真的仿真數(shù)據(jù)提供數(shù)據(jù)通道;
模型接口模塊,用于建立主控模塊與仿真子引擎的連接關(guān)系和調(diào)度管理,并將所述時鐘基頻及仿真控制指令發(fā)送給仿真子引擎,以完成相應(yīng)模型的解算。
本發(fā)明的有益效果包括提出了獨(dú)立于多領(lǐng)域仿真軟件的獨(dú)立運(yùn)行的協(xié)同仿真環(huán)境架構(gòu),不同仿真軟件在該架構(gòu)統(tǒng)一管理下進(jìn)行協(xié)同仿真運(yùn)行;提出了多領(lǐng)域仿真軟件數(shù)據(jù)點(diǎn)對點(diǎn)傳輸模式,無需通過中間軟件環(huán)境傳輸,當(dāng)傳輸數(shù)據(jù)量較大時不會影響其它軟件, 提高了仿真效率;提出了協(xié)同仿真數(shù)據(jù)軟總線的概念,將模型解算周期與總線數(shù)據(jù)傳輸周期分離,不僅更加逼近實際系統(tǒng)行為,而且便于進(jìn)行數(shù)據(jù)控制及數(shù)據(jù)預(yù)測算法實現(xiàn);將仿真引擎分為主引擎和子引擎兩層管理,不僅提高了效率,而且增加了靈活性;子引擎的時鐘與主引擎時鐘同步推進(jìn)但相對獨(dú)立,對應(yīng)的仿真時間各自獨(dú)立,從而便于系統(tǒng)中仿真節(jié)點(diǎn)動態(tài)加入與退出;支持分布式協(xié)同仿真節(jié)點(diǎn)運(yùn)行在不同操作系統(tǒng)環(huán)境下進(jìn)行異構(gòu)系統(tǒng)仿真; 支持實時仿真時鐘調(diào)度,子仿真節(jié)點(diǎn)可運(yùn)行在實時操作系統(tǒng)中,并可通過物理I/o接口與外部實物連接。
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖I是本發(fā)明的具體實施方式
提供的多領(lǐng)域協(xié)同分布式仿真系統(tǒng)的結(jié)構(gòu)示意圖2是本發(fā)明的具體實施方式
提供的仿真子引擎的內(nèi)部架構(gòu)示意圖3是本發(fā)明的具體實施方式
提供的當(dāng)前變量表內(nèi)部原理示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
本具體實施方式
提供了一種多領(lǐng)域協(xié)同分布式仿真系統(tǒng),如圖I所示,包括
主控模塊1,用于通過載入預(yù)定模型的描述文件獲得相應(yīng)的模型信息,根據(jù)所述模型信息設(shè)置時鐘基頻并下發(fā)所述時鐘基頻及仿真控制指令,根據(jù)所述模型信息設(shè)置位于數(shù)據(jù)服務(wù)模塊2中的模型之間的數(shù)據(jù)傳輸通道并定義各個數(shù)據(jù)通道的數(shù)據(jù)更新周期;
數(shù)據(jù)服務(wù)模塊2,用于通過建立具有獨(dú)立數(shù)據(jù)傳輸周期的數(shù)據(jù)鏈路,為分布式協(xié)同仿真的仿真數(shù)據(jù)提供數(shù)據(jù)通道;
模型接口模塊3,用于建立主控模塊I與仿真子引擎的連接關(guān)系和調(diào)度管理,并將所述時鐘基頻及仿真控制指令發(fā)送給仿真子引擎,以完成相應(yīng)模型的解算。
本具體實施方式
提出的支持多核多模型并行分布式實時仿真的系統(tǒng)架構(gòu)由三部分組成主控模塊、數(shù)據(jù)服務(wù)模塊和模型接口模塊。
具體的,主控模塊I負(fù)責(zé)分布式協(xié)同仿真設(shè)計、運(yùn)行管控等功能,包含的子模塊及功能如下
主控模塊完成分布式實時仿真調(diào)度引擎功能,
(I)主孔子模塊通過載入預(yù)定模型的描述文件得到模型信息,根據(jù)模型信息設(shè)置時鐘管理子模塊的時鐘基頻,并將該時鐘基頻及仿真控制指令下發(fā)送給各個仿真子引擎的子時鐘(SubTimer);
(2)協(xié)同仿真設(shè)計子模塊根據(jù)載入的模型信息設(shè)置位于數(shù)據(jù)服務(wù)模塊中的模型之間的數(shù)據(jù)傳輸通道,并定義各個通道的數(shù)據(jù)更新周期,如果是事件類型的數(shù)據(jù)通道則不受數(shù)據(jù)更新周期制約;
(3)數(shù)據(jù)服務(wù)管理子模塊通過設(shè)置仿真運(yùn)行需要監(jiān)視的數(shù)據(jù)完成數(shù)據(jù)在線監(jiān)視、 保存等功能,同時為了提高數(shù)據(jù)傳輸效率,該模塊所需數(shù)據(jù)直接通過數(shù)據(jù)服務(wù)模塊采集,無需通過子仿真節(jié)點(diǎn)單獨(dú)發(fā)送;
(4)仿真運(yùn)行管理子模塊負(fù)責(zé)協(xié)同仿真調(diào)度功能,負(fù)責(zé)仿真子引擎的啟動、運(yùn)行、 暫停/恢復(fù)、停止等功能,處理仿真節(jié)點(diǎn)的動態(tài)加入與退出以及仿真過程中的事件處理和協(xié)調(diào)功能。
數(shù)據(jù)服務(wù)模塊2采用DDS (Data Distribution Service,數(shù)據(jù)分發(fā)服務(wù))作為基層服務(wù),DDS支持實時數(shù)據(jù)分發(fā)及數(shù)據(jù)線路協(xié)議,完整的數(shù)據(jù)質(zhì)量服務(wù)等功能。在DDS服務(wù)的基礎(chǔ)上該層添加了軟總線服務(wù),每條傳輸數(shù)據(jù)相同的通道定義為一條虛擬鏈路,并設(shè)置該虛擬鏈路傳輸?shù)臄?shù)據(jù)為一個Topic,并通過系統(tǒng)自動生成該Topic。數(shù)據(jù)服務(wù)模塊2是分布式協(xié)同仿真的數(shù)據(jù)通道,采用點(diǎn)對點(diǎn)的數(shù)據(jù)服務(wù)策略,并通過內(nèi)部機(jī)制確保數(shù)據(jù)的完整性、 確定性及數(shù)據(jù)傳輸順序,物理介質(zhì)采用以太網(wǎng)以便于分布式仿真,在網(wǎng)絡(luò)應(yīng)用層建立虛擬數(shù)據(jù)鏈路,每條鏈路具有獨(dú)立的數(shù)據(jù)傳輸周期,形成數(shù)據(jù)軟總線。
模型接口模塊3通過仿真子引擎完成模型調(diào)度、數(shù)據(jù)傳輸?shù)裙δ?。模型接口模塊 3首先完成模型的初始化、數(shù)據(jù)服務(wù)層對應(yīng)該仿真節(jié)點(diǎn)服務(wù)的初始化,向主控計算機(jī)發(fā)送其運(yùn)行消息,以及建立子引擎線程的任務(wù)。在初始化完成之后,子引擎開始建立數(shù)據(jù)總線與模型輸入輸出之間的連接關(guān)系和調(diào)度管理。模型接受子引擎的調(diào)度完成模型解算。具體流程如圖2所示。模型接口模塊3通過在仿真軟件中嵌入自定義的模塊接口在仿真初始化時建立仿真子引擎,該子引擎又通過模塊接口實現(xiàn)仿真軟件與子引擎的數(shù)據(jù)交互,子引擎又通過模塊接口控制該模塊接口的解算,從而實現(xiàn)外部控制仿真軟件解算過程的目的。子引擎通過接收主引擎發(fā)送的時鐘基頻,并根據(jù)各自仿真軟件建立的模型信息及軟總線鏈路數(shù)據(jù)傳輸周期進(jìn)行模型解算控制及數(shù)據(jù)向總線傳輸控制。
子引擎獨(dú)立于模型計算與數(shù)據(jù)總線之外,來進(jìn)行子系統(tǒng)模型數(shù)據(jù)的分發(fā)與時鐘管理,完成三個主要功能
(I)在數(shù)據(jù)總線上取得主控計算機(jī)發(fā)出的同步時鐘時間,進(jìn)而判斷是否與子模型的模型解算周期匹配(即是否是模型解算周期的倍數(shù)關(guān)系),如果匹配則觸發(fā)子模型進(jìn)行一步運(yùn)算。
(2)子引擎在數(shù)據(jù)總線上按照輸入端口總線周期是否匹配主控時鐘的原則更新訂閱其他模型發(fā)出的本模型輸入端口數(shù)據(jù)。
(3)子引擎將與主控時鐘匹配的輸入端口總線數(shù)據(jù)進(jìn)行更新,再存入CVT (當(dāng)前變量表)中,將與主控時鐘匹配的輸出端口數(shù)據(jù)從CVT中進(jìn)行拷貝,并發(fā)布到數(shù)據(jù)總線上。
當(dāng)前變量表(CVT)用于存儲模型的端口信息。這些信息包括端口的ID,端口的名稱,端口的數(shù)據(jù)類型,端口的數(shù)據(jù)維數(shù),數(shù)據(jù)隊列長度,端口的數(shù)據(jù)方向,端口的初始值等。 CVT中數(shù)據(jù)的存儲以隊列結(jié)構(gòu)實現(xiàn)。此意味著當(dāng)子引擎向數(shù)據(jù)總線訂閱數(shù)據(jù)以更新CVT時將保持一定數(shù)量的歷史數(shù)據(jù),并將歷史數(shù)據(jù)中最陳舊的一個拋棄,而進(jìn)入一個最新的數(shù)據(jù), 如圖3所示。
CVT完成兩個主要功能
(I)接受子引擎訂閱的總線數(shù)據(jù),并存入隊列,當(dāng)模型進(jìn)入其解算周期時,將隊頭的數(shù)據(jù)拷貝給模型相應(yīng)的輸入端口。
(2)當(dāng)模型輸出端口的總線周期匹配到主控時鐘時,將隊頭的數(shù)據(jù)拷貝給子引擎, 通過子引擎向數(shù)據(jù)總線進(jìn)行數(shù)據(jù)發(fā)布。
采用本具體實施方式
提供的技術(shù)方案,提出了獨(dú)立于多領(lǐng)域仿真軟件的獨(dú)立運(yùn)行的協(xié)同仿真環(huán)境架構(gòu),不同仿真軟件在該架構(gòu)統(tǒng)一管理下進(jìn)行協(xié)同仿真運(yùn)行;提出了多領(lǐng)域仿真軟件數(shù)據(jù)點(diǎn)對點(diǎn)傳輸模式,無需通過中間軟件環(huán)境傳輸,當(dāng)傳輸數(shù)據(jù)量較大時不會影響其它軟件,提高了仿真效率;提出了協(xié)同仿真數(shù)據(jù)軟總線的概念,將模型解算周期與總線數(shù)據(jù)傳輸周期分離,不僅更加逼近實際系統(tǒng)行為,而且便于進(jìn)行數(shù)據(jù)控制及數(shù)據(jù)預(yù)測算法實現(xiàn);將仿真引擎分為主引擎和子引擎兩層管理,不僅提高了效率,而且增加了靈活性; 子引擎的時鐘與主引擎時鐘同步推進(jìn)但相對獨(dú)立,對應(yīng)的仿真時間各自獨(dú)立,從而便于系統(tǒng)中仿真節(jié)點(diǎn)動態(tài)加入與退出;支持分布式協(xié)同仿真節(jié)點(diǎn)運(yùn)行在不同操作系統(tǒng)環(huán)境下進(jìn)行異構(gòu)系統(tǒng)仿真;支持實時仿真時鐘調(diào)度,子仿真節(jié)點(diǎn)可運(yùn)行在實時操作系統(tǒng)中,并可通過物理I/o接口與外部實物連接。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明實施例揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種多領(lǐng)域協(xié)同分布式仿真系統(tǒng),其特征在于,包括 主控模塊,用于通過載入預(yù)定模型的描述文件獲得相應(yīng)的模型信息,根據(jù)所述模型信息設(shè)置時鐘基頻并下發(fā)所述時鐘基頻及仿真控制指令,根據(jù)所述模型信息設(shè)置位于數(shù)據(jù)服務(wù)模塊中的模型之間的數(shù)據(jù)傳輸通道并定義各個數(shù)據(jù)通道的數(shù)據(jù)更新周期; 數(shù)據(jù)服務(wù)模塊,用于通過建立具有獨(dú)立數(shù)據(jù)傳輸周期的數(shù)據(jù)鏈路,為分布式協(xié)同仿真的仿真數(shù)據(jù)提供數(shù)據(jù)通道; 模型接口模塊,用于建立主控模塊與仿真子引擎的連接關(guān)系和調(diào)度管理,并將所述時鐘基頻及仿真控制指令發(fā)送給仿真子引擎,以完成相應(yīng)模型的解算。
2.根據(jù)權(quán)利要求I所述的多核多模型并行分布式實時仿真系統(tǒng),其特征在于,所述主控模塊包括 主控子模塊,用于通過載入預(yù)定模型的描述文件獲得模型信息,根據(jù)所述模型信息設(shè)置時鐘管理子模塊的時鐘基頻,并將所述時鐘基頻及仿真控制指令下發(fā)送給各個仿真子引擎的子時鐘; 協(xié)同仿真設(shè)計子模塊,用于根據(jù)載入的模型信息設(shè)置位于數(shù)據(jù)服務(wù)模塊中中的模型之間的數(shù)據(jù)傳輸通道,并定義各個通道的數(shù)據(jù)更新周期; 數(shù)據(jù)服務(wù)管理子模塊,用于通過設(shè)置仿真運(yùn)行需要監(jiān)視的數(shù)據(jù)完成數(shù)據(jù)在線監(jiān)視和數(shù)據(jù)保存; 仿真運(yùn)行管理子模塊,用于仿真子引擎的啟動、運(yùn)行、暫停、恢復(fù)或停止,并處理仿真節(jié)點(diǎn)的動態(tài)加入與退出以及仿真過程中的事件處理和協(xié)調(diào)功能。
全文摘要
本發(fā)明提供了一種多領(lǐng)域協(xié)同分布式仿真系統(tǒng),包括主控模塊,用于通過載入預(yù)定模型的描述文件獲得相應(yīng)的模型信息,根據(jù)所述模型信息設(shè)置時鐘基頻并下發(fā)所述時鐘基頻及仿真控制指令,根據(jù)所述模型信息設(shè)置位于數(shù)據(jù)服務(wù)模塊中的模型之間的數(shù)據(jù)傳輸通道并定義各個數(shù)據(jù)通道的數(shù)據(jù)更新周期;數(shù)據(jù)服務(wù)模塊,用于通過建立具有獨(dú)立數(shù)據(jù)傳輸周期的數(shù)據(jù)鏈路,為分布式協(xié)同仿真的仿真數(shù)據(jù)提供數(shù)據(jù)通道;模型接口模塊,用于建立主控模塊與仿真子引擎的連接關(guān)系和調(diào)度管理,并將所述時鐘基頻及仿真控制指令發(fā)送給仿真子引擎,以完成相應(yīng)模型的解算。本發(fā)明支持所有仿真軟件導(dǎo)出、具有協(xié)同仿真的解算精度和解算效率較高以及不易導(dǎo)致協(xié)同仿真失敗的優(yōu)點(diǎn)。
文檔編號G06F17/50GK102982197SQ20121042602
公開日2013年3月20日 申請日期2012年10月30日 優(yōu)先權(quán)日2012年10月30日
發(fā)明者李成功, 孫巖, 熊運(yùn)鴻 申請人:北京華力創(chuàng)通科技股份有限公司