本發(fā)明屬于計(jì)算機(jī)仿真、系統(tǒng)集成技術(shù)領(lǐng)域,涉及一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊。
背景技術(shù):
在當(dāng)前航天飛行器技術(shù)朝著系統(tǒng)更復(fù)雜、技術(shù)更先進(jìn)的方向發(fā)展。在這一趨勢(shì)下,航天飛行器需要實(shí)現(xiàn)在全工作周期下的高置信度效能評(píng)估,因此結(jié)合數(shù)學(xué)仿真技術(shù)系統(tǒng)與半實(shí)物仿真試驗(yàn)技術(shù)的“一體化集成仿真技術(shù)”對(duì)于提高航天飛行器全工作周期效能評(píng)估的置信度,為總體方案制定和系統(tǒng)研制提供定量數(shù)據(jù)參考具有重要意義。
一體化集成仿真技術(shù)的核心是實(shí)現(xiàn)基于不同仿真機(jī)制的異構(gòu)仿真與試驗(yàn)系統(tǒng)之間的緊耦合聯(lián)合仿真試驗(yàn),因此基于數(shù)學(xué)仿真系統(tǒng)與半實(shí)物仿真試驗(yàn)系統(tǒng)協(xié)同運(yùn)行的一體化綜合集成仿真與試驗(yàn)系統(tǒng)規(guī)模通常都比較大,具有分布式、強(qiáng)實(shí)時(shí)的特點(diǎn)。
當(dāng)前針對(duì)復(fù)雜分布式系統(tǒng)仿真大多采用美國(guó)國(guó)防部的高層體系結(jié)構(gòu)(hla),其仿真推進(jìn)機(jī)制大多采用保守時(shí)間推進(jìn)機(jī)制和樂觀時(shí)間推進(jìn)機(jī)制,高層體系結(jié)構(gòu)很好的解決了大規(guī)模分布式仿真試驗(yàn)系統(tǒng)之間的重用和交互問題。
當(dāng)由于其仿真推進(jìn)機(jī)制是受“時(shí)戳下限值lbts”制約的,每個(gè)聯(lián)邦的本地推進(jìn)都不能超過(guò)這一值也就是要滿足ti+hi≤min(tj+lookaheadj),其中ti表示第i個(gè)聯(lián)邦成員當(dāng)前時(shí)刻,hihi表示該邦元的仿真步長(zhǎng),tj表示第j個(gè)聯(lián)邦成員的當(dāng)前時(shí)刻,lookaheadj表示第j個(gè)聯(lián)邦成員的時(shí)間前瞻量,而lbts則是由全系統(tǒng)中所有聯(lián)邦成員的時(shí)間前瞻量的最小值決定的,即lbtsi=min(tj+lookaheadj),因此當(dāng)系統(tǒng)規(guī)模變大交互變得復(fù)雜之后,只要系統(tǒng)中有一個(gè)聯(lián)邦的時(shí)間推進(jìn)變慢將拖累整個(gè)系統(tǒng)的運(yùn)行速度,這主要是因?yàn)榉抡媛?lián)邦成員的時(shí)間推進(jìn)不僅受到自身仿真步長(zhǎng)的約束,同時(shí)也受仿真系統(tǒng)中其他聯(lián)邦成員的約束。
設(shè)數(shù)學(xué)仿真系統(tǒng)與射頻半實(shí)物仿真系統(tǒng)之間存在數(shù)據(jù)交互的仿真聯(lián)邦成員為fmutual,fmutual為時(shí)間受限成員,fmutual時(shí)間推進(jìn)受其它時(shí)間控制成員的lbtsi的控制。設(shè)min(tj+lookaheadj)所在聯(lián)邦成員為fmin,fmin的當(dāng)前時(shí)刻為tmin-1,仿真步長(zhǎng)為hmin。fmutual的當(dāng)前時(shí)刻為ti-1,fmutual與半實(shí)物仿真系統(tǒng)進(jìn)行數(shù)據(jù)交互的時(shí)刻為tmutual,仿真步長(zhǎng)為hmutual,仿真推進(jìn)過(guò)程如圖1所示。
由于聯(lián)邦成員fmutual需要同半實(shí)物仿真系統(tǒng)進(jìn)行數(shù)據(jù)交互,因此fmutual的仿真時(shí)間軸應(yīng)該與半實(shí)物仿真系統(tǒng)時(shí)間軸成1∶1線性映射關(guān)系,同時(shí)由于fmutual為時(shí)間受限聯(lián)邦成員,因此其仿真推進(jìn)還應(yīng)受到時(shí)間控制成員fmin的影響,其仿真推進(jìn)過(guò)程如圖1所示,fmutual在仿真時(shí)間ti-1時(shí)刻時(shí)fmin的仿真時(shí)間為tmin-1,fmutual仿真推進(jìn)的下一時(shí)刻為ti(ti=ti-1+hmutual),則fmutual的時(shí)戳下限值為tmin-1+lookaheadmin,由圖1可知ti<tmin-1+lookaheadmin滿足聯(lián)邦成員推進(jìn)條件,fmutual在仿真時(shí)刻ti-1時(shí)可以順利推進(jìn)到下一時(shí)刻。當(dāng)fmutual推進(jìn)到仿真時(shí)刻ti時(shí),fmutual仿真推進(jìn)的下一時(shí)刻為tmutual,此刻若fmin還沒有推進(jìn)到tmin,則fmutual的時(shí)戳下限值仍為tmin-1+lookaheadmin,由圖1可知tmutual>tmin-1+lookaheadmin不滿足聯(lián)邦成員推進(jìn)條件,此刻fmutual處于等待狀態(tài)。只有當(dāng)fmin推進(jìn)到tmin時(shí),fmutual滿足推進(jìn)條件時(shí),fmutual才能推進(jìn)到tmutual實(shí)現(xiàn)與半實(shí)物仿真系統(tǒng)的數(shù)據(jù)交互。
綜上可知,在hla的仿真推進(jìn)機(jī)制下各聯(lián)邦成員在推進(jìn)時(shí)需要時(shí)刻判斷l(xiāng)bts,所以,即使聯(lián)邦成員(通常是一個(gè)仿真節(jié)點(diǎn))具有較強(qiáng)的計(jì)算能力保證算法的實(shí)時(shí)性,也不得不因?yàn)槠渌换ス?jié)點(diǎn)的某個(gè)時(shí)間點(diǎn)上的延遲而等待,而這次等待很有可能到在推進(jìn)機(jī)制的作用下導(dǎo)致另外節(jié)點(diǎn)的延遲,當(dāng)系統(tǒng)復(fù)雜之后,在一定的交互關(guān)系下,這種延遲會(huì)擴(kuò)散到全系統(tǒng),導(dǎo)致系統(tǒng)運(yùn)行變慢。
所以說(shuō)hla的這種仿真推進(jìn)機(jī)制能夠?qū)崿F(xiàn)不同仿真步長(zhǎng)聯(lián)邦成員的協(xié)同推進(jìn),能夠兼容連續(xù)系統(tǒng)和離散系統(tǒng)混合的仿真系統(tǒng)構(gòu)建。但在航天飛行器需要全工作周期的高置信度效能評(píng)估的分析仿真鄰域中,系統(tǒng)中包含半實(shí)物試驗(yàn)設(shè)施,系統(tǒng)中各個(gè)分布式節(jié)點(diǎn)之間具有兩大的數(shù)據(jù)交互,全系統(tǒng)的仿真步長(zhǎng)通常在5ms左右,若采用此類仿真推進(jìn)機(jī)制,則會(huì)出現(xiàn)由于系統(tǒng)規(guī)模增大而導(dǎo)致的全系統(tǒng)無(wú)法實(shí)時(shí)運(yùn)行的情況。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù),本發(fā)明的目的在于提供一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊,該模塊只受數(shù)據(jù)驅(qū)動(dòng)而不受其他分布式節(jié)點(diǎn)運(yùn)行速度制約,解決了當(dāng)前高層體系結(jié)構(gòu)在分析仿真鄰域中中實(shí)時(shí)性無(wú)法得到保證的問題。
為了達(dá)到上述目的,本發(fā)明采用以下技術(shù)方案。
本發(fā)明的目的在于提供一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊,該仿真模塊包括:實(shí)時(shí)模型算法模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)發(fā)送模塊、本地時(shí)間管理模塊、多個(gè)輸入端口及對(duì)應(yīng)的多個(gè)輸入緩沖區(qū)、多個(gè)輸出端口及對(duì)應(yīng)的輸出緩沖區(qū);
數(shù)據(jù)接收模塊用于接收其它分布式實(shí)時(shí)仿真計(jì)算節(jié)點(diǎn)發(fā)送的數(shù)據(jù),通過(guò)輸入端口存入對(duì)應(yīng)的輸入緩沖區(qū),并提取接受到的數(shù)據(jù)時(shí)戳提交給本地時(shí)間管理模塊;
實(shí)時(shí)模型算法模塊用于完成分布式實(shí)時(shí)仿真節(jié)點(diǎn)所擔(dān)負(fù)的仿真計(jì)算任務(wù),并輸出實(shí)時(shí)仿真數(shù)據(jù);
數(shù)據(jù)發(fā)送模塊用于發(fā)送存入輸出緩沖區(qū)的實(shí)時(shí)模型算法模塊計(jì)算得到的實(shí)時(shí)仿真數(shù)據(jù),并依據(jù)當(dāng)前物理時(shí)間進(jìn)行時(shí)戳判斷后通過(guò)輸出端口向其它分布式實(shí)時(shí)仿真節(jié)點(diǎn)發(fā)送數(shù)據(jù);
輸入緩沖區(qū)和輸出緩沖區(qū)分別用于存放數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊所需的數(shù)據(jù);
本地時(shí)間管理模塊一方面通過(guò)接受外部同步校準(zhǔn)信號(hào),校準(zhǔn)本地物理時(shí)間使其與分布式實(shí)時(shí)仿真節(jié)點(diǎn)同步,另一方面用于接受實(shí)時(shí)模型算法模塊計(jì)算過(guò)程中的邏輯時(shí)間,建立本地邏輯時(shí)間,并向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊同時(shí)提供當(dāng)前物理時(shí)間和本地邏輯時(shí)間。
進(jìn)一步,所述本地時(shí)間管理模塊首先獲取本地物理時(shí)鐘,通過(guò)接受外部脈沖同步信號(hào)對(duì)本地物理時(shí)間進(jìn)行校準(zhǔn);
其次本地時(shí)間管理模塊接受數(shù)據(jù)接受模塊發(fā)送過(guò)來(lái)的數(shù)據(jù)邏輯時(shí)戳,將本地邏輯時(shí)間與數(shù)據(jù)邏輯時(shí)戳設(shè)置一致,保證實(shí)時(shí)模型算法模塊與輸入數(shù)據(jù)相同步;
在本地物理時(shí)間同步過(guò)程和邏輯時(shí)間設(shè)置過(guò)程結(jié)束后,本地時(shí)間管理模塊分別向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊發(fā)送本地物理時(shí)間,向?qū)崟r(shí)模型算法模塊發(fā)送本地邏輯時(shí)間,實(shí)現(xiàn)整個(gè)仿真運(yùn)行過(guò)程的時(shí)間管理。
進(jìn)一步,所述實(shí)時(shí)模型算法模塊在輸入緩沖區(qū)讀取數(shù)據(jù)后,通過(guò)本地時(shí)間管理模塊確認(rèn)當(dāng)前本地邏輯時(shí)間,并進(jìn)行下一步的仿真計(jì)算,并將實(shí)時(shí)仿真數(shù)據(jù)存入輸出緩沖區(qū)。
進(jìn)一步,所述數(shù)據(jù)接受模塊首先通過(guò)本地時(shí)間管理模塊獲取當(dāng)前物理時(shí)間,判別接受到的外部數(shù)據(jù)是否為過(guò)時(shí)數(shù)據(jù);
數(shù)據(jù)接受模塊獲得本地物理時(shí)間后,數(shù)據(jù)接受模塊接受外部數(shù)據(jù),提取外部數(shù)據(jù)所附帶的數(shù)據(jù)所處的時(shí)戳,并與本地物理時(shí)間比較,若為過(guò)時(shí)數(shù)據(jù)則丟棄并向外部保送過(guò)時(shí)通知,若不是過(guò)時(shí)數(shù)據(jù),則數(shù)據(jù)接受模塊判別所接受數(shù)據(jù)對(duì)應(yīng)的輸入端口,并與相應(yīng)輸入緩沖區(qū)相關(guān)聯(lián);
之后,數(shù)據(jù)接受模塊將數(shù)據(jù)邏輯時(shí)間報(bào)送本地時(shí)間管理模塊,同時(shí)將數(shù)據(jù)存入相應(yīng)的輸入緩沖區(qū)完成數(shù)據(jù)接受過(guò)程。
進(jìn)一步,所述的數(shù)據(jù)輸出模塊的工作流程包括以下步驟:
數(shù)據(jù)輸出模塊從輸出緩沖區(qū)讀取所需輸出數(shù)據(jù),同時(shí)從本地時(shí)間管理模塊獲取當(dāng)前物理時(shí)間,判斷發(fā)送數(shù)據(jù)時(shí)戳,若小于當(dāng)前物理時(shí)間,則進(jìn)行超時(shí)處理,若大于或者等于當(dāng)前物理時(shí)間則進(jìn)行發(fā)送模式判斷,若為全速模式,則直接通過(guò)輸出端口發(fā)送數(shù)據(jù);
若為實(shí)時(shí)模式則進(jìn)行時(shí)戳判斷,若數(shù)據(jù)邏輯時(shí)戳等于物理時(shí)戳則通過(guò)輸出端口發(fā)送數(shù)據(jù);
若數(shù)據(jù)邏輯時(shí)戳大于物理時(shí)間,則進(jìn)行等待,等到物理時(shí)間推進(jìn)到該時(shí)刻再發(fā)送數(shù)據(jù)。
一種包括所述的基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊的分布式實(shí)時(shí)系統(tǒng),該系統(tǒng)包括多個(gè)所述的基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊,每一個(gè)所述的基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊為一個(gè)仿真節(jié)點(diǎn),各個(gè)仿真節(jié)點(diǎn)實(shí)現(xiàn)不同仿真計(jì)算,并通過(guò)每個(gè)仿真模塊的數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊實(shí)現(xiàn)數(shù)據(jù)共享;
當(dāng)某一仿真節(jié)點(diǎn)接受其它仿真節(jié)點(diǎn)輸出的數(shù)據(jù)后,該仿真節(jié)點(diǎn)的數(shù)據(jù)接收模塊將接收到的數(shù)據(jù)中所附的時(shí)戳提取出來(lái),提交給本地時(shí)間管理模塊,由本地時(shí)間管理模塊確定實(shí)時(shí)模型算法模塊的當(dāng)前的本地邏輯時(shí)間,實(shí)時(shí)模型算法模塊依據(jù)接受到的外部輸入數(shù)據(jù)和本地邏輯時(shí)間設(shè)定仿真步長(zhǎng)計(jì)算下一步的實(shí)時(shí)仿真數(shù)據(jù),并通知本地時(shí)間管理模塊;
在實(shí)時(shí)模型算法模塊生成下一步實(shí)時(shí)仿真數(shù)據(jù)后存入輸出緩沖區(qū),數(shù)據(jù)發(fā)送模塊對(duì)存入輸出緩沖區(qū)的實(shí)時(shí)仿真數(shù)據(jù)的邏輯時(shí)間和當(dāng)前的物理時(shí)間進(jìn)行對(duì)比判斷:
若小于當(dāng)前物理時(shí)間,則進(jìn)行超時(shí)處理,若大于或者等于當(dāng)前物理時(shí)間則進(jìn)行發(fā)送模式判斷,若為全速模式,則直接通過(guò)輸出端口發(fā)送數(shù)據(jù)給其它仿真節(jié)點(diǎn);
若為實(shí)時(shí)模式則進(jìn)行時(shí)戳判斷,若數(shù)據(jù)邏輯時(shí)戳等于物理時(shí)戳則通過(guò)輸出端口發(fā)送數(shù)據(jù);
若數(shù)據(jù)邏輯時(shí)戳大于物理時(shí)間,則進(jìn)行等待,等到物理時(shí)間推進(jìn)到該時(shí)刻再發(fā)送數(shù)據(jù)。
進(jìn)一步,所述本地時(shí)間管理模塊首先獲取本地物理時(shí)鐘,通過(guò)接受外部脈沖同步信號(hào)對(duì)本地物理時(shí)間進(jìn)行校準(zhǔn),確保分布式實(shí)時(shí)系統(tǒng)各個(gè)仿真節(jié)點(diǎn)的物理時(shí)間一致;
其次本地時(shí)間管理模塊接受數(shù)據(jù)接受模塊發(fā)送過(guò)來(lái)的數(shù)據(jù)邏輯時(shí)戳,將本地邏輯時(shí)間與數(shù)據(jù)邏輯時(shí)戳設(shè)置一致,保證實(shí)時(shí)模型算法模塊與輸入數(shù)據(jù)相同步;
在本地物理時(shí)間同步過(guò)程和邏輯時(shí)間設(shè)置過(guò)程結(jié)束后,本地時(shí)間管理模塊分別向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊發(fā)送本地物理時(shí)間,向?qū)崟r(shí)模型算法模塊發(fā)送本地邏輯時(shí)間,實(shí)現(xiàn)整個(gè)仿真運(yùn)行過(guò)程的時(shí)間管理。
一種利用所述的基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊進(jìn)行分布式強(qiáng)實(shí)時(shí)數(shù)據(jù)驅(qū)動(dòng)仿真推進(jìn)的方法,該方法包括以下步驟:
步驟一、本地時(shí)間管理模塊通過(guò)接受外部脈沖同步信號(hào)校準(zhǔn)本地物理時(shí)間,并向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊發(fā)送當(dāng)前物理時(shí)間,數(shù)據(jù)接受模塊通過(guò)輸入端口接受外部仿真數(shù)據(jù),并依據(jù)當(dāng)前時(shí)間管理模塊提供的當(dāng)前物理時(shí)間判別接受數(shù)據(jù)的實(shí)時(shí)性,若外部仿真數(shù)據(jù)時(shí)戳大于等于當(dāng)前物理時(shí)間則將外部仿真數(shù)據(jù)存入輸入緩沖區(qū),否則丟棄外部仿真數(shù)據(jù)并上報(bào)過(guò)時(shí)錯(cuò)誤;
步驟二、實(shí)時(shí)模型算法模塊從輸入緩沖區(qū)獲取經(jīng)過(guò)實(shí)時(shí)性校驗(yàn)的外部仿真數(shù)據(jù),并提取外部仿真數(shù)據(jù)的邏輯時(shí)戳,并置位當(dāng)前邏輯時(shí)間進(jìn)行仿真計(jì)算,完成一步仿真計(jì)算后向輸出緩沖區(qū)輸出計(jì)算結(jié)果,并將當(dāng)前邏輯時(shí)間向前推進(jìn)一個(gè)計(jì)算步長(zhǎng);
步驟三、數(shù)據(jù)輸出模塊從輸出緩沖區(qū)讀取所需輸出數(shù)據(jù),同時(shí)從本地時(shí)間管理模塊獲取當(dāng)前物理時(shí)間,判斷發(fā)送數(shù)據(jù)時(shí)戳,若小于當(dāng)前物理時(shí)間,則進(jìn)行超時(shí)處理,丟棄數(shù)據(jù)并上報(bào)錯(cuò)誤;
若大于或者等于當(dāng)前物理時(shí)間則進(jìn)行發(fā)送模式判斷,若為全速模式,則直接通過(guò)輸出端口發(fā)送數(shù)據(jù);
若為實(shí)時(shí)模式則進(jìn)行時(shí)戳判斷,由于之前已經(jīng)進(jìn)行過(guò)一次實(shí)時(shí)性判斷,因此只有可能為實(shí)時(shí)數(shù)據(jù)或者超實(shí)時(shí)數(shù)據(jù),若判斷結(jié)果數(shù)據(jù)邏輯時(shí)戳等于物理時(shí)戳則通過(guò)輸出端口發(fā)送數(shù)據(jù);
若數(shù)據(jù)邏輯時(shí)戳大于物理時(shí)間,則進(jìn)行等待,等到物理時(shí)間推進(jìn)到該時(shí)刻再發(fā)送數(shù)據(jù)。
一種利用所述的分布式實(shí)時(shí)系統(tǒng)進(jìn)行分布式強(qiáng)實(shí)時(shí)數(shù)據(jù)驅(qū)動(dòng)仿真推進(jìn)的方法,該方法包括以下步驟:
步驟一、某一仿真節(jié)點(diǎn)的本地時(shí)間管理模塊通過(guò)接受外部脈沖同步信號(hào)校準(zhǔn)本地物理時(shí)間,并向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊發(fā)送當(dāng)前物理時(shí)間,數(shù)據(jù)接受模塊通過(guò)輸入端口接受其它仿真節(jié)點(diǎn)的仿真數(shù)據(jù),并依據(jù)當(dāng)前時(shí)間管理模塊提供的當(dāng)前物理時(shí)間判別接受數(shù)據(jù)的實(shí)時(shí)性,若其它仿真節(jié)點(diǎn)的仿真數(shù)據(jù)時(shí)戳大于等于當(dāng)前物理時(shí)間則將其它仿真節(jié)點(diǎn)的仿真數(shù)據(jù)存入輸入緩沖區(qū),否則丟棄其它仿真節(jié)點(diǎn)的仿真數(shù)據(jù)并上報(bào)過(guò)時(shí)錯(cuò)誤;
步驟二、實(shí)時(shí)模型算法模塊從輸入緩沖區(qū)獲取經(jīng)過(guò)實(shí)時(shí)性校驗(yàn)的其它仿真節(jié)點(diǎn)的仿真數(shù)據(jù),并提取其它仿真節(jié)點(diǎn)的仿真數(shù)據(jù)的邏輯時(shí)戳,并置位當(dāng)前邏輯時(shí)間進(jìn)行仿真計(jì)算,完成一步仿真計(jì)算后向輸出緩沖區(qū)輸出計(jì)算結(jié)果,并將當(dāng)前邏輯時(shí)間向前推進(jìn)一個(gè)計(jì)算步長(zhǎng);
步驟三、數(shù)據(jù)輸出模塊從輸出緩沖區(qū)讀取所需輸出數(shù)據(jù),同時(shí)從本地時(shí)間管理模塊獲取當(dāng)前物理時(shí)間,判斷發(fā)送數(shù)據(jù)時(shí)戳,若小于當(dāng)前物理時(shí)間,則進(jìn)行超時(shí)處理,丟棄數(shù)據(jù)并上報(bào)錯(cuò)誤;
若大于或者等于當(dāng)前物理時(shí)間則進(jìn)行發(fā)送模式判斷,若為全速模式,則直接通過(guò)輸出端口向其它仿真節(jié)點(diǎn)發(fā)送數(shù)據(jù);
若為實(shí)時(shí)模式則進(jìn)行時(shí)戳判斷,由于之前已經(jīng)進(jìn)行過(guò)一次實(shí)時(shí)性判斷,因此只有可能為實(shí)時(shí)數(shù)據(jù)或者超實(shí)時(shí)數(shù)據(jù),若判斷結(jié)果數(shù)據(jù)邏輯時(shí)戳等于物理時(shí)戳則通過(guò)輸出端口向其它仿真節(jié)點(diǎn)發(fā)送數(shù)據(jù);
若數(shù)據(jù)邏輯時(shí)戳大于物理時(shí)間,則進(jìn)行等待,等到物理時(shí)間推進(jìn)到該時(shí)刻再向其它仿真節(jié)點(diǎn)發(fā)送數(shù)據(jù)。
進(jìn)一步,所述本地時(shí)間管理模塊首先獲取本地物理時(shí)鐘,通過(guò)接受外部脈沖同步信號(hào)對(duì)本地物理時(shí)間進(jìn)行校準(zhǔn),確保分布式實(shí)時(shí)系統(tǒng)各個(gè)仿真節(jié)點(diǎn)的物理時(shí)間一致;
其次本地時(shí)間管理模塊接受數(shù)據(jù)接受模塊發(fā)送過(guò)來(lái)的數(shù)據(jù)邏輯時(shí)戳,將本地邏輯時(shí)間與數(shù)據(jù)邏輯時(shí)戳設(shè)置一致,保證實(shí)時(shí)模型算法模塊與輸入數(shù)據(jù)相同步;
在本地物理時(shí)間同步過(guò)程和邏輯時(shí)間設(shè)置過(guò)程結(jié)束后,本地時(shí)間管理模塊分別向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊發(fā)送本地物理時(shí)間,向?qū)崟r(shí)模型算法模塊發(fā)送本地邏輯時(shí)間,實(shí)現(xiàn)整個(gè)仿真運(yùn)行過(guò)程的時(shí)間管理。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是:
本發(fā)明一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊,利用分布式實(shí)時(shí)系統(tǒng)中的交互數(shù)據(jù)的時(shí)間戳作為仿真推進(jìn)激勵(lì),使得分布式系統(tǒng)中的各個(gè)分節(jié)點(diǎn)的時(shí)間推進(jìn)只與系統(tǒng)的接受數(shù)據(jù)有關(guān),而與其它節(jié)點(diǎn)的運(yùn)行速度無(wú)關(guān),接觸高層體系結(jié)構(gòu)中時(shí)間推進(jìn)中l(wèi)bts的制約,提高全系統(tǒng)的運(yùn)行實(shí)時(shí)性。
本發(fā)明一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊,依據(jù)不同模塊的實(shí)時(shí)性需求,通過(guò)控制數(shù)據(jù)的輸出速率實(shí)現(xiàn)全系統(tǒng)的仿真推進(jìn)。在推進(jìn)過(guò)程中,將全系統(tǒng)的仿真時(shí)間分為物理時(shí)間、本地邏輯時(shí)間和數(shù)據(jù)時(shí)間三個(gè)部分,通過(guò)將本地邏輯時(shí)間與數(shù)據(jù)時(shí)間關(guān)聯(lián)實(shí)現(xiàn)各個(gè)仿真節(jié)點(diǎn)在仿真運(yùn)算中數(shù)據(jù)的時(shí)間同步,在仿真推進(jìn)過(guò)程中,仿真節(jié)點(diǎn)模型的仿真推進(jìn)只受本地邏輯時(shí)間控制,而不受外部節(jié)點(diǎn)和全局物理時(shí)間控制,如圖2所示。
附圖說(shuō)明
圖1是現(xiàn)有技術(shù)時(shí)間控制成員對(duì)時(shí)間同步的影響示意圖;
圖2是本發(fā)明實(shí)施例物理時(shí)間、本地邏輯時(shí)間和數(shù)據(jù)時(shí)戳的關(guān)系示意圖;
圖3是本發(fā)明實(shí)施例一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊示意圖;
圖4是本發(fā)明實(shí)施例一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊數(shù)據(jù)驅(qū)動(dòng)仿真推進(jìn)流程示意圖;
圖5是本發(fā)明實(shí)施例一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊的實(shí)時(shí)模型算法模塊工作流程示意圖;
圖6是本發(fā)明實(shí)施例一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊的數(shù)據(jù)接收模塊工作流程示意圖;
圖7是本發(fā)明實(shí)施例一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊的數(shù)據(jù)發(fā)送模塊工作流程示意圖;
圖8是本發(fā)明實(shí)施例一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊的本地時(shí)間管理模塊工作流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊作詳細(xì)說(shuō)明。
如圖3所示,本發(fā)明一種基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊,包括實(shí)時(shí)模型算法模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)發(fā)送模塊、本地時(shí)間管理模塊、多個(gè)輸入端口及對(duì)應(yīng)的多個(gè)輸入緩沖區(qū)、多個(gè)輸出端口及對(duì)應(yīng)的輸出緩沖區(qū);
數(shù)據(jù)接收模塊用于接收分布式實(shí)時(shí)系統(tǒng)中其它計(jì)算節(jié)點(diǎn)發(fā)送的數(shù)據(jù),輸入端口存入對(duì)應(yīng)的輸入緩沖區(qū),并提取接受到的數(shù)據(jù)包中數(shù)據(jù)所在時(shí)戳提交給本地時(shí)間管理模塊;
實(shí)時(shí)模型算法模塊用于完成分布式實(shí)時(shí)仿真節(jié)點(diǎn)所擔(dān)負(fù)的仿真分析任務(wù);
數(shù)據(jù)發(fā)送模塊用于發(fā)送存入輸出緩沖區(qū)的實(shí)時(shí)模型算法模塊計(jì)算得到的實(shí)時(shí)仿真數(shù)據(jù),并依據(jù)當(dāng)前物理時(shí)間進(jìn)行時(shí)戳判斷后通過(guò)輸出端口向其他節(jié)點(diǎn)發(fā)送數(shù)據(jù);
輸入緩沖區(qū)和輸出緩沖區(qū)分別用于存放數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊所需的數(shù)據(jù);
本地時(shí)間管理模塊一方面用于接受外部時(shí)間同步校準(zhǔn)信號(hào),以校準(zhǔn)本地物理時(shí)間使其與分布式系統(tǒng)中其它節(jié)點(diǎn)同步,另一方面用于接受實(shí)時(shí)模型算法模塊計(jì)算過(guò)程中的邏輯時(shí)間,以建立本地邏輯時(shí)間,并向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊同時(shí)提供當(dāng)前物理時(shí)間和邏輯時(shí)間。
一種分布式實(shí)時(shí)系統(tǒng),包括多個(gè)所述的基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊,如圖4所示,分布式實(shí)時(shí)系統(tǒng)中,每一個(gè)所述的基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊為一個(gè)仿真節(jié)點(diǎn),各個(gè)仿真節(jié)點(diǎn)實(shí)現(xiàn)不同仿真計(jì)算,并通過(guò)每個(gè)仿真模塊的數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊實(shí)現(xiàn)數(shù)據(jù)共享;各仿真節(jié)點(diǎn)的每一個(gè)仿真步長(zhǎng)的運(yùn)行過(guò)程中分為數(shù)據(jù)接受、算法運(yùn)行和數(shù)據(jù)發(fā)送三個(gè)階段;
上述三個(gè)階段又可細(xì)分為:接受外部數(shù)據(jù)、外部數(shù)據(jù)時(shí)戳提取、本地邏輯時(shí)間確定、仿真算法運(yùn)行生成輸出數(shù)據(jù)、輸出數(shù)據(jù)時(shí)戳判斷、過(guò)時(shí)數(shù)據(jù)處理、數(shù)據(jù)輸出模式判斷、實(shí)時(shí)數(shù)據(jù)發(fā)送、全速數(shù)據(jù)發(fā)送9個(gè)處理環(huán)節(jié);
當(dāng)某一仿真節(jié)點(diǎn)接受外部輸入數(shù)據(jù)后,數(shù)據(jù)接收模塊將外部輸入數(shù)據(jù)中所附的時(shí)戳提取出來(lái),提交給本地時(shí)間管理模塊,由本地時(shí)間管理模塊確定實(shí)時(shí)模型算法模塊的當(dāng)前的本地邏輯時(shí)間,實(shí)時(shí)模型算法模塊依據(jù)接受到的外部輸入數(shù)據(jù)和本地邏輯時(shí)間設(shè)定仿真步長(zhǎng)計(jì)算下一步的實(shí)時(shí)仿真數(shù)據(jù),并通知本地時(shí)間管理模塊;
在實(shí)時(shí)模型算法模塊生成下一步實(shí)時(shí)仿真數(shù)據(jù)后存入輸出緩沖區(qū),數(shù)據(jù)發(fā)送模塊對(duì)存入輸出緩沖區(qū)的實(shí)時(shí)仿真數(shù)據(jù)的邏輯時(shí)間和當(dāng)前的物理時(shí)間進(jìn)行對(duì)比判斷:
若由于實(shí)時(shí)模型算法模塊在計(jì)算過(guò)程中的時(shí)間波動(dòng)導(dǎo)致當(dāng)前數(shù)據(jù)的邏輯時(shí)間小于物理時(shí)間,則進(jìn)入過(guò)時(shí)數(shù)據(jù)處理環(huán)節(jié),否則判斷當(dāng)前的數(shù)據(jù)發(fā)送模式,若為實(shí)時(shí)模式則進(jìn)入實(shí)時(shí)發(fā)送環(huán)節(jié),若為全速模式則進(jìn)入全速發(fā)送模式。
如圖5所示,所述實(shí)時(shí)模型算法模塊的工作流程為,實(shí)時(shí)模型算法模塊在相應(yīng)的輸入緩沖區(qū)讀取數(shù)據(jù)后,通過(guò)本地時(shí)間管理模塊確認(rèn)當(dāng)前的本地邏輯時(shí)間進(jìn)行下一步的仿真計(jì)算,并將實(shí)時(shí)仿真數(shù)據(jù)存入輸出緩沖區(qū),實(shí)時(shí)模型算法模塊的工作流程不用涉及具體的時(shí)間同步和仿真推進(jìn)策略。
如圖6所示,所述的數(shù)據(jù)接受模塊的工作流程包括外部數(shù)據(jù)接受、時(shí)戳判斷、輸入端口緩沖區(qū)關(guān)聯(lián)和數(shù)據(jù)緩存四個(gè)步驟;
數(shù)據(jù)接受模塊首先通過(guò)本地時(shí)間管理模塊獲取當(dāng)前物理時(shí)間,用于判別接受到的外部數(shù)據(jù)是否為過(guò)時(shí)數(shù)據(jù);
數(shù)據(jù)接受模塊獲得本地物理時(shí)間后,數(shù)據(jù)接受模塊接受外部數(shù)據(jù),提取外部數(shù)據(jù)所附帶的數(shù)據(jù)所處的時(shí)戳,并與本地物理時(shí)間比較,若為過(guò)時(shí)數(shù)據(jù)則丟棄并向外部保送過(guò)時(shí)通知,若不是過(guò)時(shí)數(shù)據(jù),則數(shù)據(jù)接受模塊判別所接受數(shù)據(jù)對(duì)應(yīng)的輸入端口,并與相應(yīng)輸入緩沖區(qū)相關(guān)聯(lián);
之后,數(shù)據(jù)接受模塊將數(shù)據(jù)邏輯時(shí)間報(bào)送本地時(shí)間管理模塊,同時(shí)將數(shù)據(jù)存入相應(yīng)的輸入緩沖區(qū)完成數(shù)據(jù)接受過(guò)程。
如圖7所示,所述的數(shù)據(jù)輸出模塊的工作流程包括以下步驟:
數(shù)據(jù)輸出模塊從輸出緩沖區(qū)讀取所需輸出數(shù)據(jù),同時(shí)從本地時(shí)間管理模塊獲取當(dāng)前物理時(shí)間,判斷發(fā)送數(shù)據(jù)時(shí)戳,若小于當(dāng)前物理時(shí)間,則進(jìn)行超時(shí)處理,若大于或者等于當(dāng)前物理時(shí)間則進(jìn)行發(fā)送模式判斷,若為全速模式,則直接通過(guò)輸出端口發(fā)送數(shù)據(jù);
若為實(shí)時(shí)模式則進(jìn)行時(shí)戳判斷,由于之前已經(jīng)進(jìn)行過(guò)一次實(shí)時(shí)性判斷,因此只有可能為實(shí)時(shí)數(shù)據(jù)或者超實(shí)時(shí)數(shù)據(jù),若判斷結(jié)果數(shù)據(jù)邏輯時(shí)戳等于物理時(shí)戳則通過(guò)輸出端口發(fā)送數(shù)據(jù);
若數(shù)據(jù)邏輯時(shí)戳大于物理時(shí)間,則進(jìn)行等待,等到物理時(shí)間推進(jìn)到該時(shí)刻再發(fā)送數(shù)據(jù)。
如圖8所示,本地時(shí)間管理模塊的工作流程包括物理時(shí)間同步、本地邏輯時(shí)間設(shè)置和時(shí)間管理三個(gè)過(guò)程;
所述的物理時(shí)間同步過(guò)程為:本地時(shí)間管理模塊獲取本地物理時(shí)鐘,通過(guò)接受外部脈沖同步信號(hào)對(duì)本地物理時(shí)間進(jìn)行校準(zhǔn),確保分布式實(shí)時(shí)系統(tǒng)各個(gè)仿真節(jié)點(diǎn)的物理時(shí)間一致;
所述的本地邏輯時(shí)間設(shè)置過(guò)程為:本地時(shí)間管理模塊接受數(shù)據(jù)接受模塊發(fā)送過(guò)來(lái)的數(shù)據(jù)邏輯時(shí)戳,將本地邏輯時(shí)間與數(shù)據(jù)時(shí)戳設(shè)置一致,從而保證實(shí)時(shí)模型算法模塊能夠與輸入數(shù)據(jù)相同步;
在本地物理時(shí)間同步過(guò)程和邏輯時(shí)間設(shè)置過(guò)程結(jié)束后,本地時(shí)間管理模塊分別向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊發(fā)送本地物理時(shí)間,向?qū)崟r(shí)模型算法模塊發(fā)送本地邏輯時(shí)間,實(shí)現(xiàn)整個(gè)仿真運(yùn)行過(guò)程的時(shí)間管理。
一種利用所述的基于數(shù)據(jù)驅(qū)動(dòng)的仿真模塊進(jìn)行分布式強(qiáng)實(shí)時(shí)數(shù)據(jù)驅(qū)動(dòng)仿真推進(jìn)的方法,該方法包括以下步驟:
步驟一、本地時(shí)間管理模塊通過(guò)接受外部脈沖同步信號(hào)校準(zhǔn)本地物理時(shí)間,并向數(shù)據(jù)接受模塊和數(shù)據(jù)發(fā)送模塊發(fā)送當(dāng)前物理時(shí)間,數(shù)據(jù)接受模塊通過(guò)輸入端口接受外部仿真數(shù)據(jù),并依據(jù)當(dāng)前時(shí)間管理模塊提供的當(dāng)前物理時(shí)間判別接受數(shù)據(jù)的實(shí)時(shí)性,若外部仿真數(shù)據(jù)時(shí)戳大于等于當(dāng)前物理時(shí)間則將外部仿真數(shù)據(jù)存入輸入緩沖區(qū),否則丟棄外部仿真數(shù)據(jù)并上報(bào)過(guò)時(shí)錯(cuò)誤;
步驟二、實(shí)時(shí)模型算法模塊從輸入緩沖區(qū)獲取經(jīng)過(guò)實(shí)時(shí)性校驗(yàn)的外部仿真數(shù)據(jù),并提取外部仿真數(shù)據(jù)的邏輯時(shí)戳,并置位當(dāng)前邏輯時(shí)間進(jìn)行仿真計(jì)算,完成一步仿真計(jì)算后向輸出緩沖區(qū)輸出計(jì)算結(jié)果,并將當(dāng)前邏輯時(shí)間向前推進(jìn)一個(gè)計(jì)算步長(zhǎng);
步驟三、數(shù)據(jù)輸出模塊從輸出緩沖區(qū)讀取所需輸出數(shù)據(jù),同時(shí)從本地時(shí)間管理模塊獲取當(dāng)前物理時(shí)間,判斷發(fā)送數(shù)據(jù)時(shí)戳,若小于當(dāng)前物理時(shí)間,則進(jìn)行超時(shí)處理,丟棄數(shù)據(jù)并上報(bào)錯(cuò)誤;
若大于或者等于當(dāng)前物理時(shí)間則進(jìn)行發(fā)送模式判斷,若為全速模式,則直接通過(guò)輸出端口發(fā)送數(shù)據(jù);
若為實(shí)時(shí)模式則進(jìn)行時(shí)戳判斷,由于之前已經(jīng)進(jìn)行過(guò)一次實(shí)時(shí)性判斷,因此只有可能為實(shí)時(shí)數(shù)據(jù)或者超實(shí)時(shí)數(shù)據(jù),若判斷結(jié)果數(shù)據(jù)邏輯時(shí)戳等于物理時(shí)戳則通過(guò)輸出端口發(fā)送數(shù)據(jù);
若數(shù)據(jù)邏輯時(shí)戳大于物理時(shí)間,則進(jìn)行等待,等到物理時(shí)間推進(jìn)到該時(shí)刻再發(fā)送數(shù)據(jù)。