專利名稱:一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包和解包方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸技術(shù),更具體地說(shuō),涉及一種應(yīng)用在核電站全范圍模擬機(jī)中的以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)打包和解包的方法和裝置。
背景技術(shù):
核電站全范圍模擬機(jī)是核電站操作員培訓(xùn)和考試取照的必備設(shè)備,是核電工程建設(shè)關(guān)鍵路徑上的重要設(shè)備之一。全范圍模擬機(jī)的硬件系統(tǒng)包括計(jì)算機(jī)系統(tǒng)、I/o接口系統(tǒng)、電站監(jiān)控機(jī)(如DAS或DCS系統(tǒng)等)仿真設(shè)備、控制盤臺(tái),教練員站、工程師站等等。其中計(jì)算機(jī)系統(tǒng)、I/O接口系統(tǒng)、電站監(jiān)控機(jī)仿真設(shè)備之間需要進(jìn)行大量的數(shù)據(jù)通訊,這些數(shù)據(jù)即指模擬機(jī)所模擬的實(shí)際物理信號(hào)的值。由于核電站的物理仿真模型復(fù)雜以及在運(yùn)行中需要監(jiān)測(cè)的信息很多,從而在模擬機(jī)系統(tǒng)中往往存在幾萬(wàn)個(gè)數(shù)據(jù)。而仿真系統(tǒng)對(duì)于實(shí)時(shí)性的要求很高,因此為了保證能夠?qū)?shù)據(jù)進(jìn)行高速查找,數(shù)據(jù)結(jié)構(gòu)往往采用離散結(jié)構(gòu)例如哈希圖(hashmap)進(jìn)行空間離散,使得查詢效率可以達(dá)到常量級(jí),即是以空間換取性能。但這也造成了這些變量在物理結(jié)構(gòu)上都是離散的。與此同時(shí)底層物理仿真模型為了同上層DCS控制系統(tǒng)進(jìn)行數(shù)據(jù)交互,每隔100-200毫秒就需要把底層物理模型中的這些以離散結(jié)構(gòu)存儲(chǔ)的大批量數(shù)據(jù)需要通過(guò)TCP/IP協(xié)議發(fā)送給接收方系統(tǒng)。因此需要有把以離散結(jié)構(gòu)存儲(chǔ)的大批量數(shù)據(jù)快速高效打包的方案?,F(xiàn)有的方法往往是采用最普通的廣度遍歷的方案,即遍歷離散結(jié)構(gòu)所有變量,遍歷過(guò)程中把離散數(shù)據(jù)存放在一個(gè)連續(xù)地址的內(nèi)存塊中,并在完成該數(shù)據(jù)更新之后將內(nèi)存塊中的數(shù)據(jù)打包發(fā)送。但是這種方法無(wú)論存儲(chǔ)結(jié)構(gòu)如何,隨著變量數(shù)目的增長(zhǎng),打包所用時(shí)間會(huì)隨之增加,從而這點(diǎn)成為了制作具有高度實(shí)時(shí)性的核電全范圍模擬機(jī)的重大隱患和技術(shù)難題。因此需要新的方案來(lái)進(jìn)行替代。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有采用先更新再打包的方式對(duì)離散數(shù)據(jù)進(jìn)行打包傳送從而影響打包速度的缺陷,提供一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包和解包的方法和裝置。本發(fā)明第一方面,提供了一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法,用于將底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)打包發(fā)送,包括以下步驟:地址映射步驟,在發(fā)送緩存中為底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)分配一個(gè)或多個(gè)內(nèi)存塊,并針對(duì)每個(gè)內(nèi)存塊生成映射文件,所述映射文件記載所述底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)到該內(nèi)存塊中連續(xù)地址的映射關(guān)系;文件發(fā)送步驟,將所述映射文件發(fā)送給數(shù)據(jù)接收方用于解包;以及同時(shí)執(zhí)行的以下步驟:數(shù)據(jù)更新步驟,運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)地址映射步驟所生成的映射文件將底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)更新至對(duì)應(yīng)內(nèi)存塊;數(shù)據(jù)打包步驟,將所述發(fā)送緩存中內(nèi)存塊內(nèi)數(shù)據(jù)進(jìn)行打包并發(fā)送給數(shù)據(jù)接收方。在根據(jù)本發(fā)明第一方面所述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法中,所述數(shù)據(jù)更新步驟中:所述同步線程的數(shù)量由底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)總量、所需的數(shù)據(jù)打包發(fā)送時(shí)間和同步線程遍歷內(nèi)存塊的速度確定。本發(fā)明第二方面,提供了一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法,用于將接收的數(shù)據(jù)包解包并存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器中,包括以下步驟:文件接收步驟,接收映射文件,所述映射文件記載底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)到發(fā)送緩存的內(nèi)存塊中連續(xù)地址的映射關(guān)系;反向映射步驟,根據(jù)針對(duì)每個(gè)內(nèi)存塊的映射文件生成針對(duì)每個(gè)內(nèi)存塊的反向映射文件,所述反向映射文件記載該內(nèi)存塊中連續(xù)地址到接收方系統(tǒng)存儲(chǔ)器中離散結(jié)構(gòu)的地址的映射關(guān)系;以及同時(shí)執(zhí)行的以下步驟:數(shù)據(jù)接收步驟,接收數(shù)據(jù)包并存儲(chǔ)至接收緩存的一個(gè)或多個(gè)的內(nèi)存塊中;數(shù)據(jù)存儲(chǔ)步驟,運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)一個(gè)反向映射文件將接收緩存中對(duì)應(yīng)內(nèi)存塊的數(shù)據(jù)更新存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中。在根據(jù)本發(fā)明第二方面所述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法,在所述數(shù)據(jù)存儲(chǔ)步驟中:所述同步線程的數(shù)量等于所接收的映射文件的數(shù)量。本發(fā)明第三方面,提供了一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包裝置,包括發(fā)送緩存以及以離散結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的底層物理存儲(chǔ)器,還包括:地址映射模塊,與所述發(fā)送緩存和底層物理存儲(chǔ)器相連,用于在發(fā)送緩存中為底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)分配一個(gè)或多個(gè)內(nèi)存塊,并針對(duì)每個(gè)內(nèi)存塊生成映射文件,所述映射文件記載所述底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)到該內(nèi)存塊中連續(xù)地址的映射關(guān)系;文件發(fā)送模塊,與所述地址映射模塊相連,用于在數(shù)據(jù)打包模塊發(fā)送數(shù)據(jù)包之前,將所述映射文件發(fā)送給數(shù)據(jù)接收方,用于數(shù)據(jù)接收方解包;數(shù)據(jù)更新模塊,與所述地址映射模塊、所述發(fā)送緩存和底層物理存儲(chǔ)器相連,用于運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)地址映射模塊所生成的一個(gè)映射文件將底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)更新存儲(chǔ)至對(duì)應(yīng)內(nèi)存塊;數(shù)據(jù)打包模塊,與所述發(fā)送緩存相連,用于在所述數(shù)據(jù)更新模塊運(yùn)行同時(shí)將所述發(fā)送緩存中內(nèi)存塊內(nèi)數(shù)據(jù)進(jìn)行打包并發(fā)送給數(shù)據(jù)接收方。在根據(jù)本發(fā)明第三方面所述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包裝置,所述數(shù)據(jù)更新模塊根據(jù)底層物理存儲(chǔ)器中離散結(jié)構(gòu)的數(shù)據(jù)總量、所需的數(shù)據(jù)打包發(fā)送時(shí)間和同步線程遍歷內(nèi)存塊的速度確定所述同步線程的數(shù)量。本發(fā)明第四方面,提供了一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包裝置,包括接收緩存以及接收方系統(tǒng)存儲(chǔ)器,還包括:文件接收模塊,用于接收映射文件,所述映射文件記載底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)到發(fā)送緩存的內(nèi)存塊中連續(xù)地址的映射關(guān)系;反向映射模塊,與所述文件接收模塊相連,用于根據(jù)針對(duì)每個(gè)內(nèi)存塊的映射文件生成針對(duì)每個(gè)內(nèi)存塊的反向映射文件,所述反向映射文件記載該內(nèi)存塊中連續(xù)地址到接收方系統(tǒng)存儲(chǔ)器中離散結(jié)構(gòu)的地址的映射關(guān)系;數(shù)據(jù)接收模塊,用于接收數(shù)據(jù)包并存儲(chǔ)至接收緩存的一個(gè)或多個(gè)內(nèi)存塊中;數(shù)據(jù)存儲(chǔ)模塊,與所述數(shù)據(jù)接收模塊、接收緩存和接收方系統(tǒng)存儲(chǔ)器相連,用于在所述數(shù)據(jù)接收模塊運(yùn)行時(shí)同時(shí)運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)一個(gè)反向映射文件將接收緩存中對(duì)應(yīng)內(nèi)存塊的數(shù)據(jù)更新存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中。在根據(jù)本發(fā)明第四方面所述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包裝置中,所述數(shù)據(jù)存儲(chǔ)模塊采用的所述同步線程的數(shù)量等于所接收的映射文件的數(shù)量。實(shí)施本發(fā)明的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包和解包的方法和裝置,具有以下有益效果:本發(fā)明通過(guò)在主線程執(zhí)行數(shù)據(jù)打包的同時(shí),采用一個(gè)或多個(gè)同步線程,對(duì)以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)進(jìn)行同步更新,在不影響對(duì)數(shù)據(jù)的快速查詢的基礎(chǔ)上,可以有效的改善數(shù)據(jù)打包傳輸?shù)臅r(shí)間,快速地對(duì)將大量數(shù)據(jù)打包發(fā)送到接收方系統(tǒng),且同樣通過(guò)一個(gè)或多個(gè)同步線程進(jìn)行解包存儲(chǔ),也縮短了數(shù)據(jù)解包存儲(chǔ)的時(shí)間,提高了核電站全范圍模擬機(jī)的數(shù)據(jù)傳輸速度,加強(qiáng)了操作性能和仿真逼真度。
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中:圖1為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法的原理不意圖;圖2為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法的流程圖;圖3為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包裝置的豐旲塊不意圖;圖4為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法的原理不意圖;圖5為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法的流程圖;圖6為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包裝置的豐旲塊不意圖;圖7為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)傳送系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。本發(fā)明構(gòu)思一種對(duì)以離散結(jié)構(gòu)存儲(chǔ)的大批量數(shù)據(jù)進(jìn)行快速打包的方法和裝置,以及與之對(duì)應(yīng)的解包方法和裝置,以在要求的短時(shí)間內(nèi)將以離散結(jié)構(gòu)存儲(chǔ)的大批量數(shù)據(jù)進(jìn)行傳送,尤其是應(yīng)用在核電站全范圍模擬機(jī)中將底層物理存儲(chǔ)器中產(chǎn)生的數(shù)據(jù)傳送至接收方系統(tǒng)的存儲(chǔ)器中,因此本發(fā)明也相應(yīng)提供了這樣一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)傳送方法和系統(tǒng)。請(qǐng)參閱圖1,為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法的原理示意圖。如圖1所示,底層物理存儲(chǔ)器102中存儲(chǔ)有離散結(jié)構(gòu)的數(shù)據(jù),如哈希圖。該數(shù)據(jù)為核電站全范圍模擬機(jī)的底層物理仿真模型所產(chǎn)生的數(shù)據(jù)。離散結(jié)構(gòu)的數(shù)據(jù)對(duì)象是無(wú)序數(shù)據(jù)的集合,它與 數(shù)組一樣都是復(fù)雜的數(shù)據(jù)容器,唯一的區(qū)別就是容器的結(jié)構(gòu)不同,自然裝載數(shù)據(jù)的方式也就不同。數(shù)組是線性數(shù)據(jù)結(jié)構(gòu),一般具有一定的規(guī)律,適合進(jìn)行統(tǒng)一的操作,如迭代、循環(huán)等批量操作。而離散結(jié)構(gòu)的數(shù)據(jù)對(duì)象的數(shù)據(jù)之間分散在結(jié)構(gòu)體內(nèi),相互之間沒(méi)有必然的聯(lián)系,其包含的數(shù)據(jù)沒(méi)有位置概念,如圖1中底層物理存儲(chǔ)器內(nèi)的數(shù)據(jù)I至數(shù)據(jù)N,適合查詢。本發(fā)明提供的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法的目的在于將底層物理存儲(chǔ)器102中離散結(jié)構(gòu)的數(shù)據(jù)快速打包發(fā)送。在傳統(tǒng)方法中,采用廣度遍歷的方案,即廣度遍歷在離散結(jié)構(gòu)中存儲(chǔ)的數(shù)據(jù),并存放至發(fā)送緩存104內(nèi)一個(gè)連續(xù)地址的內(nèi)存塊中之后,再進(jìn)行打包發(fā)送,如果數(shù)據(jù)量較大則遍歷的時(shí)間較長(zhǎng),將直接影響數(shù)據(jù)打包發(fā)送的時(shí)間。本發(fā)明的原理是在數(shù)據(jù)打包的同時(shí),采用一個(gè)或多個(gè)同步線程進(jìn)行數(shù)據(jù)同步,把數(shù)據(jù)更新作業(yè)同數(shù)據(jù)打包作業(yè)分割開來(lái),并進(jìn)一步通過(guò)多線程作業(yè)縮短更新時(shí)間,從而實(shí)現(xiàn)以離散結(jié)構(gòu)存儲(chǔ)的大批量數(shù)據(jù)快速高效打包的效果。請(qǐng)參閱圖2,為本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法的流程圖。如圖2所示,該實(shí)施例提供的數(shù)據(jù)打包方法包括:首先在步驟S202中,執(zhí)行地址映射步驟,在圖1所示的發(fā)送緩存104中為底層物理存儲(chǔ)器102中離散結(jié)構(gòu)的數(shù)據(jù)分配一個(gè)或多個(gè)內(nèi)存塊。這些內(nèi)存塊具有連續(xù)的地址。同時(shí)針對(duì)每個(gè)內(nèi)存塊生成映射文件,該映射文件記載了底層物理存儲(chǔ)器102中將要同步到該內(nèi)存塊的各個(gè)數(shù)據(jù)與該內(nèi)存塊中連續(xù)地址的映射關(guān)系。一般以文本文件的方式保存,可以命名為ass文件。隨后,在步驟S204中,執(zhí)行文件發(fā)送步驟,將前述映射文件發(fā)送給數(shù)據(jù)接收方。數(shù)據(jù)接收方可以利用這些映射文件對(duì)數(shù)據(jù)包進(jìn)行解包存儲(chǔ)。如果數(shù)據(jù)打包過(guò)程中不改變映射關(guān)系,即映射文件不發(fā)生改變,則步驟S202和步驟S204可以只在數(shù)據(jù)打包發(fā)送之前執(zhí)行一次即可,數(shù)據(jù)接收方可以采用該映射文件對(duì)數(shù)據(jù)包進(jìn)行解包。隨后,同步執(zhí)行數(shù)據(jù)更新步驟和數(shù)據(jù)打包步驟。在步驟S206中,執(zhí)行數(shù)據(jù)更新步驟,運(yùn)行同步線程,其中每個(gè)同步線程根據(jù)一個(gè)映射文件將底層物理存儲(chǔ)器102中離散結(jié)構(gòu)的數(shù)據(jù)實(shí)時(shí)更新存儲(chǔ)至發(fā)送緩存104的對(duì)應(yīng)內(nèi)存塊。例如圖1中,同步線程I加載針對(duì)第一個(gè)內(nèi)存塊的ass文件,將數(shù)據(jù)I至數(shù)據(jù)N/m存儲(chǔ)至第一個(gè)具有連續(xù)地址的內(nèi)存塊(地址I至地址N/m),以此類推……同步線程m加載針對(duì)第m個(gè)內(nèi)存塊的ass文件,將數(shù)據(jù)N-N/m至數(shù)據(jù)N存儲(chǔ)至第m個(gè)具有連續(xù)地址的內(nèi)存塊(地址N-N/m至地址N)。由于每個(gè)同步線程遍歷的數(shù)據(jù)量相對(duì)離散結(jié)構(gòu)的整體數(shù)據(jù)量而言明顯減少,因此每個(gè)同步線程處理的時(shí)間也將縮短,數(shù)據(jù)從底層物理存儲(chǔ)器102到發(fā)送緩存104的整體同步時(shí)間也相應(yīng)減少。數(shù)據(jù)更新步驟是在實(shí)時(shí)不斷運(yùn)行的,即在一個(gè)時(shí)間段內(nèi)更新完一批數(shù)據(jù)后,再次執(zhí)行數(shù)據(jù)更新步驟,在下一時(shí)間段內(nèi)將底層物理存儲(chǔ)器102中存儲(chǔ)的新的離散結(jié)構(gòu)的數(shù)據(jù)再次更新到對(duì)應(yīng)內(nèi)存塊中,從而保證內(nèi)存塊中的數(shù)據(jù)時(shí)效性滿足核電站全范圍模擬機(jī)要求。在該步驟中,所采用的同步線程的數(shù)量根據(jù)底層物理存儲(chǔ)器中離散結(jié)構(gòu)的數(shù)據(jù)總量、所需的數(shù)據(jù)打包發(fā)送時(shí)間和同步線程遍歷內(nèi)存塊的速度確定。例如,設(shè)需要打包的離散結(jié)構(gòu)的數(shù)據(jù)為N個(gè),所需的數(shù)據(jù)打包發(fā)送時(shí)間為T毫秒,同步線程遍歷內(nèi)存塊的速度為S個(gè)/毫秒,因此同步線程的數(shù)量m為不小于N/(TXS)的自然數(shù)。例如,需要100毫秒完成一次系統(tǒng)間數(shù)據(jù)通訊,如果不計(jì)算數(shù)據(jù)傳輸所需時(shí)間,即以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)和內(nèi)存塊之間要求在100毫秒內(nèi)要完成一次數(shù)據(jù)同步。經(jīng)過(guò)測(cè)試I萬(wàn)個(gè)變量遍歷時(shí)間大概是30毫秒。如果需要打包10萬(wàn)個(gè)離散結(jié)構(gòu)的 數(shù)據(jù)為例:N = 10 萬(wàn),T = 100 毫秒,S = 1/30 (萬(wàn) / 毫秒);N/ (TXS) = 10 萬(wàn) / (100 毫秒 X 1/30 (萬(wàn) / 毫秒))=3 ;因此同步線程的數(shù)量可以取不小于3的自然數(shù),如3、4、5……,且每個(gè)同步線程需要處理的數(shù)據(jù)分別為10/3、10/4、10/5萬(wàn)個(gè)數(shù)據(jù)。因此,同步線程的數(shù)量與所需的數(shù)據(jù)打包發(fā)送時(shí)間、同步線程遍歷內(nèi)存塊的速度均成反比,與需要打包的數(shù)據(jù)的數(shù)量成正比。在本發(fā)明的優(yōu)選實(shí)施例中,映射文件與內(nèi)存塊--對(duì)應(yīng),因此映射文件的數(shù)量由
內(nèi)存塊的數(shù)量確定。優(yōu)選地,內(nèi)存塊的數(shù)量可以與所需的同步線程數(shù)量相等,在這種情況下,每個(gè)內(nèi)存塊的大小可以相等或者不等,只需要滿足這些同步線程中遍歷內(nèi)存塊的最長(zhǎng)時(shí)間不大于數(shù)據(jù)打包時(shí)間即可。在步驟S208中,執(zhí)行數(shù)據(jù)打包步驟,將所述發(fā)送緩存104中內(nèi)存塊內(nèi)更新的數(shù)據(jù)進(jìn)行實(shí)時(shí)打包并發(fā)送給數(shù)據(jù)接收方。該步驟中可以將打包的數(shù)據(jù)通過(guò)TCP/IP協(xié)議或者其他通訊協(xié)議發(fā)送。數(shù)據(jù)打包步驟是在實(shí)時(shí)不斷運(yùn)行的,即不斷將內(nèi)存塊中存儲(chǔ)的更新的數(shù)據(jù)打包。在本發(fā)明的優(yōu)選實(shí)施例中,數(shù)據(jù)打包的步驟和數(shù)據(jù)更新的步驟同時(shí)執(zhí)行,即數(shù)據(jù)打包的步驟可以由主線程完成,而上述數(shù)據(jù)更新的步驟可以由多個(gè)子同步線程來(lái)完成,從而將數(shù)據(jù)更新作業(yè)與數(shù)據(jù)打包作業(yè)分割開來(lái),實(shí)現(xiàn)數(shù)據(jù)的隨時(shí)動(dòng)態(tài)更新,并快速打包。請(qǐng)參閱圖3,為本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包裝置的模塊示意圖。如圖3所示,該數(shù)據(jù)打包裝置300包括底層物理存儲(chǔ)器302、發(fā)送緩存304、地址映射模塊306、數(shù)據(jù)更新模塊308、數(shù)據(jù)打包模塊310和文件發(fā)送模塊312。其中,底層物理存儲(chǔ)器302中存儲(chǔ)有離散結(jié)構(gòu)的數(shù)據(jù)。如圖1中底層物理存儲(chǔ)器內(nèi)的數(shù)據(jù)I至數(shù)據(jù)N。本發(fā)明提供的數(shù)據(jù)打包裝置300的目的在于將底層物理存儲(chǔ)器302中離散結(jié)構(gòu)的數(shù)據(jù)快速打包發(fā)送。地址映射模塊306,與發(fā)送緩存304和底層物理存儲(chǔ)器302相連,用于在發(fā)送緩存304中為底層物理存儲(chǔ)器302中離散結(jié)構(gòu)的數(shù)據(jù)分配具有連續(xù)地址的一個(gè)或多個(gè)內(nèi)存塊。同時(shí)針對(duì)每個(gè)內(nèi)存塊生成映射文件,該映射文件記載了底層物理存儲(chǔ)器302中離散結(jié)構(gòu)的數(shù)據(jù)到發(fā)送緩存304中該內(nèi)存塊內(nèi)連續(xù)地址的映射關(guān)系。一般以文本文件的方式保存,可以命名為ass文件。映射文件與內(nèi)存塊一一對(duì)應(yīng),數(shù)量相等。文件發(fā)送模塊312,與地址映射模塊306相連,用于在數(shù)據(jù)打包模塊310發(fā)送數(shù)據(jù)包之前將映射文件發(fā)送給數(shù)據(jù)接收方。如果離散數(shù)據(jù)打包發(fā)送的過(guò)程中不改變映射關(guān)系,即映射文件不發(fā)生改變,則地址映射模塊306和文件發(fā)送模塊312可以只在數(shù)據(jù)打包發(fā)送之前執(zhí)行一次即可,數(shù)據(jù)接收方即可以采用該映射文件對(duì)數(shù)據(jù)包進(jìn)行解包。數(shù)據(jù)更新模塊308,與地址映射模塊306、發(fā)送緩存304和底層物理存儲(chǔ)器302相連,用于運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)一個(gè)映射文件將底層物理存儲(chǔ)器中離散結(jié)構(gòu)的數(shù)據(jù)實(shí)時(shí)更新存儲(chǔ)至發(fā)送緩存304的對(duì)應(yīng)內(nèi)存塊中。例如圖1中,同步線程I加載針對(duì)第一個(gè)內(nèi)存塊的ass文件,將數(shù)據(jù)I至數(shù)據(jù)N/m存儲(chǔ)至第一個(gè)具有連續(xù)地址的內(nèi)存塊(地址I至地址N/m),以此類推……同步線程m加載針對(duì)第m個(gè)內(nèi)存塊的ass文件,將數(shù)據(jù)N-N/m至數(shù)據(jù)N存儲(chǔ)至第m個(gè)具有連續(xù)地址的內(nèi)存塊(地址N_N/m至地址N)。由于每個(gè)同步線程遍歷的數(shù)據(jù)量相對(duì)離散結(jié)構(gòu)的整體數(shù)據(jù)量而言明顯減少,因此每個(gè)同步線程處理的時(shí)間也將縮短,數(shù)據(jù)從底層物理存儲(chǔ)器302到發(fā)送緩存304的整體同步時(shí)間也相應(yīng)減少。數(shù)據(jù)更新模 塊308是在實(shí)時(shí)不斷運(yùn)行的,即在一個(gè)時(shí)間段內(nèi)更新完一批數(shù)據(jù)后,再次執(zhí)行數(shù)據(jù)更新步驟,在下一時(shí)間段內(nèi)將底層物理存儲(chǔ)器302中存儲(chǔ)的新的離散結(jié)構(gòu)的數(shù)據(jù)再次更新到對(duì)應(yīng)內(nèi)存塊中。在數(shù)據(jù)更新模塊308中,所采用的同步線程的數(shù)量根據(jù)底層物理存儲(chǔ)器302中離散結(jié)構(gòu)的數(shù)據(jù)總量、所需的數(shù)據(jù)打包發(fā)送時(shí)間和同步線程遍歷內(nèi)存塊的速度確定。例如,設(shè)需要打包的離散結(jié)構(gòu)的數(shù)據(jù)為N個(gè),所需的數(shù)據(jù)打包發(fā)送時(shí)間為T毫秒,同步線程遍歷內(nèi)存塊的速度為S個(gè)/毫秒,因此同步線程的數(shù)量m為不小于N/(TXS)的自然數(shù)。例如,需要100-200毫秒傳遞一次數(shù)據(jù),即數(shù)據(jù)打包發(fā)送時(shí)間要求在100毫秒內(nèi)要完成一次同步。經(jīng)過(guò)測(cè)試I萬(wàn)個(gè)變量遍歷時(shí)間大概是30毫秒。如果需要打包10萬(wàn)個(gè)離散結(jié)構(gòu)的數(shù)據(jù)為例:N = 10 萬(wàn),T = 100 毫秒,S = 1/30 (萬(wàn) / 毫秒),N/ (TXS) = 10 萬(wàn) / (100 毫秒 X 1/30 (萬(wàn) / 毫秒))=3 ;因此同步線程的數(shù)量可以取不小于3的自然數(shù),如3、4、5……,且每個(gè)同步線程需要處理的數(shù)據(jù)分別為10/3、10/4、10/5萬(wàn)個(gè)數(shù)據(jù)。因此,同步線程的數(shù)量與所需的數(shù)據(jù)打包發(fā)送時(shí)間、同步線程遍歷內(nèi)存塊的速度均成反比,與需要打包的離散結(jié)構(gòu)的數(shù)據(jù)的數(shù)量成正比。在本發(fā)明的優(yōu)選實(shí)施例中,映射文件與內(nèi)存塊--對(duì)應(yīng),因此映射文件的數(shù)量由
內(nèi)存塊的數(shù)量確定。優(yōu)選地,內(nèi)存塊的數(shù)量可以與所需的同步線程數(shù)量相等,在這種情況下,每個(gè)內(nèi)存塊的大小可以相等或者不等,只需要滿足這些同步線程中遍歷內(nèi)存塊的最長(zhǎng)時(shí)間不大于數(shù)據(jù)打包時(shí)間即可。數(shù)據(jù)打包模塊310,與發(fā)送緩存304相連,用于在數(shù)據(jù)更新模塊308運(yùn)行同時(shí)將發(fā)送緩存304中內(nèi)存塊內(nèi)更新的數(shù)據(jù)進(jìn)行實(shí)時(shí)打包并發(fā)送給數(shù)據(jù)接收方。數(shù)據(jù)打包模塊310是在實(shí)時(shí)不斷運(yùn)行的,即不斷將內(nèi)存塊中存儲(chǔ)的更新的數(shù)據(jù)打包。數(shù)據(jù)打包模塊310可以將打包的數(shù)據(jù)通過(guò)TCP/IP協(xié)議或者其他通訊協(xié)議發(fā)送。在本發(fā)明的優(yōu)選實(shí)施例的實(shí)際運(yùn)行過(guò)程中,數(shù)據(jù)打包模塊310和數(shù)據(jù)更新模塊308同時(shí)運(yùn)行,即數(shù)據(jù)打包模塊310可以由主線程完成,而上述數(shù)據(jù)更新模塊308可以由多個(gè)子同步線程來(lái)完成,從而將數(shù)據(jù)更新作業(yè)與數(shù)據(jù)打包作業(yè)分割開來(lái),實(shí)現(xiàn)數(shù)據(jù)的隨時(shí)動(dòng)態(tài)更新,并快速打包。作為替代,數(shù)據(jù)打包模塊310和文件發(fā)送模塊312可以由同一個(gè)通信單元實(shí)現(xiàn),將映射文件與離散結(jié)構(gòu)的數(shù)據(jù)包發(fā)送給數(shù)據(jù)接收方。請(qǐng)參閱圖4,為根據(jù)本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法的原理示意圖。如圖4所示,本發(fā)明提供的數(shù)據(jù)解包方法的目的在于接收數(shù)據(jù)包并將離散結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器402中。在傳統(tǒng)方法中,在將數(shù)據(jù)包存儲(chǔ)至接收緩存404中之后,再采用廣度遍歷的方案,即將接收緩存404中連續(xù)地址的數(shù)據(jù)采用一個(gè)線程逐個(gè)更新存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器402的離散結(jié)構(gòu)的地址中。然而數(shù)據(jù)量較大時(shí),遍歷的時(shí)間較長(zhǎng),將直接影響數(shù)據(jù)接收解包的時(shí)間。本發(fā)明的原理是在將數(shù)據(jù)包存儲(chǔ)至接收緩存404的同時(shí),采用一個(gè)或多個(gè)同步線程進(jìn)行數(shù)據(jù)同步,把數(shù)據(jù)更新作業(yè)同數(shù)據(jù)解包作業(yè)分割開來(lái),并通過(guò)多線程作業(yè)縮短存儲(chǔ)時(shí)間,從而實(shí)現(xiàn)對(duì)大批量離散結(jié)構(gòu)數(shù)據(jù)的快速解包存儲(chǔ)。請(qǐng)參閱圖5,為本發(fā) 明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法的流程圖。如圖5所示,該實(shí)施例提供的數(shù)據(jù)解包方法包括:首先在步驟S502中,執(zhí)行文件接收步驟,接收映射文件,該映射文件記載底層物理存儲(chǔ)器中離散結(jié)構(gòu)的數(shù)據(jù)到內(nèi)存塊中連續(xù)地址的映射關(guān)系。如上述數(shù)據(jù)打包方法和裝置中生成的與每個(gè)內(nèi)存塊--對(duì)應(yīng)的ass文件。隨后在步驟S504中,執(zhí)行反向映射步驟,根據(jù)針對(duì)每個(gè)內(nèi)存塊的映射文件生成針對(duì)每個(gè)內(nèi)存塊的反向映射文件,即將映射文件中映射關(guān)系進(jìn)行反向處理就可以得到連續(xù)地址到離散結(jié)構(gòu)的地址的映射關(guān)系,并將其作為接收緩存404的內(nèi)存塊中連續(xù)地址到接收方系統(tǒng)存儲(chǔ)器402中離散結(jié)構(gòu)的地址的映射關(guān)系,供后續(xù)數(shù)據(jù)存儲(chǔ)過(guò)程中使用。在準(zhǔn)備好映射文件后,可以同時(shí)執(zhí)行以下數(shù)據(jù)接收步驟和數(shù)據(jù)存儲(chǔ)步驟。如果離散數(shù)據(jù)打包發(fā)送的過(guò)程中不改變映射關(guān)系,即映射文件不發(fā)生改變,則步驟S502和步驟S504可以在數(shù)據(jù)接收之前僅執(zhí)行一次即可。在步驟S506中,執(zhí)行數(shù)據(jù)接收步驟,實(shí)時(shí)接收數(shù)據(jù)包并存儲(chǔ)至如圖4所示的接收緩存404的具有連續(xù)地址的一個(gè)或多個(gè)內(nèi)存塊中。該步驟中可以接收通過(guò)TCP/IP協(xié)議或者其他通訊協(xié)議傳輸?shù)臄?shù)據(jù)包。例如接收上述數(shù)據(jù)打包方法和裝置發(fā)送的數(shù)據(jù)包。數(shù)據(jù)接收步驟是在實(shí)時(shí)不斷運(yùn)行的,即不斷將接收的數(shù)據(jù)存儲(chǔ)至內(nèi)存塊中。在步驟S508中,執(zhí)行數(shù)據(jù)存儲(chǔ)步驟,運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)一個(gè)反向映射文件將接收緩存404中對(duì)應(yīng)內(nèi)存塊的數(shù)據(jù)實(shí)時(shí)更新存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器402中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中。例如圖4中,同步線程I加載針對(duì)第一個(gè)內(nèi)存塊的反向映射文件,第一個(gè)具有連續(xù)地址的內(nèi)存塊(地址I至地址N/m)內(nèi)的數(shù)據(jù)I至數(shù)據(jù)
N/m存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器402中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中,以此類推......同步線程m加
載針對(duì)第m個(gè)內(nèi)存塊的反向映射文件,將第m個(gè)具有連續(xù)地址的內(nèi)存塊(地址N-N-N/m至地址N)的數(shù)據(jù)N-N-N/m至數(shù)據(jù)N存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器402中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中。在該步驟中,優(yōu)選地所采用的同步線程的數(shù)量等于接收的映射文件的數(shù)量。與上述數(shù)據(jù)打包發(fā)送的原理相似,由于每個(gè)同步線程遍歷的數(shù)據(jù)量相對(duì)離散結(jié)構(gòu)的整體數(shù)據(jù)量而言明顯減少,因此每個(gè)同步線程處理的時(shí)間也將縮短,數(shù)據(jù)從接收緩存404到接收方系統(tǒng)存儲(chǔ)器402的整體同步時(shí)間也相應(yīng)減少。數(shù)據(jù)存儲(chǔ)步驟是在實(shí)時(shí)不斷運(yùn)行的,即在一個(gè)時(shí)間段內(nèi)更新完一批數(shù)據(jù)后,在下一時(shí)間段內(nèi)將接收緩存404中存儲(chǔ)的新的數(shù)據(jù)再次更新到接收方系統(tǒng)存儲(chǔ)器402中。在本發(fā)明的優(yōu)選實(shí)施例中,數(shù)據(jù)接收的步驟和數(shù)據(jù)存儲(chǔ)的步驟同時(shí)執(zhí)行,即數(shù)據(jù)接收的步驟可以由主線程完成,而上述數(shù)據(jù)存儲(chǔ)的步驟可以由多個(gè)子同步線程來(lái)完成,從而將數(shù)據(jù)接收作業(yè)與數(shù)據(jù)存儲(chǔ)作業(yè)分割開來(lái),實(shí)現(xiàn)快速解包以及數(shù)據(jù)的隨時(shí)動(dòng)態(tài)更新。請(qǐng)參閱圖6,為根據(jù)本發(fā)明優(yōu)選實(shí)施例中核電站全范圍模擬機(jī)的離散數(shù)據(jù)接收解包的裝置的模塊示意圖。如圖6所示,該核電站全范圍模擬機(jī)的離散數(shù)據(jù)接收解包的裝置600包括接收方系統(tǒng)存儲(chǔ)器602、接收緩存604、反向映射模塊606、數(shù)據(jù)存儲(chǔ)模塊608、數(shù)據(jù)接收模塊610和文件接收模塊612。本發(fā)明提供的核電站全范圍模擬機(jī)的離散數(shù)據(jù)接收解包的裝置600的目的在于將接收數(shù)據(jù)包并將離散結(jié) 構(gòu)的數(shù)據(jù)存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器602中。文件接收模塊612用于接收映射文件,所述映射文件記載底層物理存儲(chǔ)器中離散結(jié)構(gòu)的數(shù)據(jù)到內(nèi)存塊中連續(xù)地址的映射關(guān)系。如上述數(shù)據(jù)打包方法和裝置中生成的與每個(gè)內(nèi)存塊--對(duì)應(yīng)的ass文件。反向映射模塊606,與文件接收模塊612相連,用于根據(jù)針對(duì)每個(gè)內(nèi)存塊的映射文件生成針對(duì)每個(gè)內(nèi)存塊的反向映射文件,即將映射文件中映射關(guān)系進(jìn)行反向處理就可以得到連續(xù)地址到離散結(jié)構(gòu)的地址的映射關(guān)系,并將其作為接收緩存604的內(nèi)存塊中連續(xù)地址到接收方系統(tǒng)存儲(chǔ)器602中離散結(jié)構(gòu)的地址的映射關(guān)系,供后續(xù)數(shù)據(jù)存儲(chǔ)模塊608使用。如果離散數(shù)據(jù)打包發(fā)送的過(guò)程中不改變映射關(guān)系,即映射文件不發(fā)生改變,則文件接收模塊612和反向映射模塊606可以只在數(shù)據(jù)打包發(fā)送之前執(zhí)行一次即可,計(jì)算出該反向映射文件提供給后續(xù)模塊對(duì)數(shù)據(jù)包進(jìn)行解包。數(shù)據(jù)接收模塊610用于接收數(shù)據(jù)包并存儲(chǔ)至接收緩存604的具有連續(xù)地址的內(nèi)存塊中。數(shù)據(jù)接收模塊610可以接收通過(guò)TCP/IP協(xié)議或者其他通訊協(xié)議傳輸?shù)臄?shù)據(jù)包。例如接收上述數(shù)據(jù)打包方法和裝置發(fā)送的數(shù)據(jù)包。數(shù)據(jù)接收模塊610是在實(shí)時(shí)不斷運(yùn)行的,即不斷將接收的數(shù)據(jù)存儲(chǔ)至內(nèi)存塊中。作為替代,數(shù)據(jù)接收模塊610和文件接收模塊612可以由同一個(gè)通訊模塊實(shí)現(xiàn),從數(shù)據(jù)發(fā)送方接收映射文件與數(shù)據(jù)包。數(shù)據(jù)存儲(chǔ)模塊608,與數(shù)據(jù)接收模塊610、接收緩存604和接收方系統(tǒng)存儲(chǔ)器602相連,用于在數(shù)據(jù)接收模塊610運(yùn)行的同時(shí),再運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)一個(gè)反向映射文件將接收緩存604中對(duì)應(yīng)內(nèi)存塊的數(shù)據(jù)實(shí)時(shí)更新存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器602中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中。例如圖4中,同步線程I加載針對(duì)第一個(gè)內(nèi)存塊的反向映射文件,第一個(gè)具有連續(xù)地址的內(nèi)存塊(地址I至地址N/m)內(nèi)的數(shù)據(jù)I至數(shù)據(jù)
N/m存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中,以此類推......同步線程m加載
針對(duì)第m個(gè)內(nèi)存塊的反向映射文件,將第m個(gè)具有連續(xù)地址的內(nèi)存塊(地址N-N/m至地址N)的數(shù)據(jù)N-N/m至數(shù)據(jù)N存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中。優(yōu)選地,數(shù)據(jù)存儲(chǔ)模塊608所采用的同步線程的數(shù)量等于接收的映射文件的數(shù)量。與前述數(shù)據(jù)打包發(fā)送的原理相似,由于每個(gè)同步線程遍歷的數(shù)據(jù)量相對(duì)離散結(jié)構(gòu)的整體數(shù)據(jù)量而言明顯減少,因此每個(gè)同步線程處理的時(shí)間也將縮短,數(shù)據(jù)從接收緩存604到接收方系統(tǒng)存儲(chǔ)器602的整體同步時(shí)間也相應(yīng)減少。數(shù)據(jù)存儲(chǔ)模塊608是在實(shí)時(shí)不斷運(yùn)行的,即在一個(gè)時(shí)間段內(nèi)更新完一批數(shù)據(jù)后,在下一時(shí)間段內(nèi)將接收緩存604中存儲(chǔ)的新的數(shù)據(jù)再次更新到接收方系統(tǒng)存儲(chǔ)器602中。在本發(fā)明的優(yōu)選實(shí)施例中,數(shù)據(jù)接收模塊610和數(shù)據(jù)存儲(chǔ)模塊608同時(shí)運(yùn)行,即數(shù)據(jù)接收模塊610可以由主線程完成,而上述數(shù)據(jù)存儲(chǔ)模塊608可以由多個(gè)子同步線程來(lái)完成,從而將數(shù)據(jù)接收作業(yè)與數(shù)據(jù)存儲(chǔ)作業(yè)分割開來(lái),實(shí)現(xiàn)快速解包以及數(shù)據(jù)的隨時(shí)動(dòng)態(tài)更新。本發(fā)明還相應(yīng)提供了一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)傳送方法,其采用前述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法,以及應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法,從而將離散結(jié)構(gòu)的數(shù)據(jù)從底層物理存儲(chǔ)器傳送至接收方系統(tǒng)存儲(chǔ)器,該接收方系統(tǒng)存儲(chǔ)器可以包括但不限于上層DCS控制系統(tǒng)存儲(chǔ)器。請(qǐng)參閱圖7,為本發(fā)明優(yōu)選實(shí)施例中應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)傳送系統(tǒng)的結(jié)構(gòu)圖。如圖7所示,該系統(tǒng)包括前述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包裝置710作為數(shù)據(jù)發(fā)送方,以及與之通訊連接的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包裝置720作為數(shù)據(jù)接收方。位于模擬機(jī)的底層物理仿真器中的數(shù)據(jù)打包裝置710包括與前述圖3中各個(gè)對(duì)應(yīng)模塊結(jié)構(gòu)和功能相同的底層物理存儲(chǔ)器711、發(fā)送緩存712、地址映射模塊713、數(shù)據(jù)更新模塊714、數(shù)據(jù)打包模塊715和文件發(fā)送模塊716。相應(yīng)地,位于模擬機(jī)的例如上層DCS控制系統(tǒng)中的數(shù)據(jù)解包裝置720包括與前述圖6中各個(gè)對(duì)應(yīng)模塊結(jié)構(gòu)和功能相同的接收方系統(tǒng)存儲(chǔ)器721、接收緩存722、反向映射模塊723、數(shù)據(jù)存儲(chǔ)模塊724、數(shù)據(jù)接收模塊725和文件接收模塊726。由于底層物理存儲(chǔ)器711中存儲(chǔ)有底層物理仿真器產(chǎn)生的離散結(jié)構(gòu)的數(shù)據(jù),因此通過(guò)上述數(shù)據(jù)傳送系統(tǒng)便可以在對(duì)數(shù)據(jù)打包發(fā)送的同時(shí),采用一個(gè)或多個(gè)同步線程,對(duì)離散結(jié)構(gòu)的數(shù)據(jù)進(jìn)行同步更新,并在接收數(shù)據(jù)的同時(shí),采用一個(gè)或多個(gè)同步線程進(jìn)行解包存儲(chǔ)至例如上層DCS控制系統(tǒng)的接收方系統(tǒng)存儲(chǔ)器721中,從而可以快速地將離散結(jié)構(gòu)的數(shù)據(jù)打包發(fā)送到上層DCS控制系統(tǒng),又不影響底層物理仿真器對(duì)產(chǎn)生的離散結(jié)構(gòu)的數(shù)據(jù)的快速查詢,提高了模擬機(jī)的仿真操作性能,使得模擬機(jī)可以滿足培訓(xùn)操作員的要求。數(shù)據(jù)打包裝置710可以發(fā)送一次映射文件給數(shù)據(jù)解包裝置720之后,就不斷地利用該映射文件執(zhí)行打包解包過(guò)程。本發(fā)明是根據(jù)特定實(shí)施例進(jìn)行描述的,但本領(lǐng)域的技術(shù)人員應(yīng)明白在不脫離本發(fā)明范圍時(shí),可進(jìn)行各種變化和等同替換。此外,為適應(yīng)本發(fā)明技術(shù)的特定場(chǎng)合或材料,可對(duì)本發(fā)明進(jìn)行諸多修改而不脫離其保護(hù)范圍。因此,本發(fā)明并不限于在此公開的特定實(shí)施例,而包括所有落入到權(quán)利要求保護(hù)范圍的實(shí)施例。
權(quán)利要求
1.一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包方法,用于將底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)打包發(fā)送,其特征在于,包括以下步驟: 地址映射步驟,在發(fā)送緩存中為底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)分配一個(gè)或多個(gè)內(nèi)存塊,并針對(duì)每個(gè)內(nèi)存塊生成映射文件,所述映射文件記載所述底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)到該內(nèi)存塊中連續(xù)地址的映射關(guān)系; 文件發(fā)送步驟,將所述映射文件發(fā)送給數(shù)據(jù)接收方用于解包;以及同時(shí)執(zhí)行的以下步驟: 數(shù)據(jù)更新步驟,運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)地址映射步驟所生成的映射文件將底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)更新至對(duì)應(yīng)內(nèi)存塊; 數(shù)據(jù)打包步驟,將所述發(fā)送緩存中內(nèi)存塊內(nèi)數(shù)據(jù)進(jìn)行打包并發(fā)送給數(shù)據(jù)接收方。
2.根據(jù)權(quán)利要求1所述的應(yīng)用在核電站全范 圍模擬機(jī)中的數(shù)據(jù)打包方法,其特征在于,所述數(shù)據(jù)更新步驟中:所述同步線程的數(shù)量由底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)總量、所需的數(shù)據(jù)打包發(fā)送時(shí)間和同步線程遍歷內(nèi)存塊的速度確定。
3.一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法,用于將接收的數(shù)據(jù)包解包并存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器中,其特征在于,包括以下步驟: 文件接收步驟,接收映射文件,所述映射文件記載底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)到發(fā)送緩存的內(nèi)存塊中連續(xù)地址的映射關(guān)系; 反向映射步驟,根據(jù)針對(duì)每個(gè)內(nèi)存塊的映射文件生成針對(duì)每個(gè)內(nèi)存塊的反向映射文件,所述反向映射文件記載該內(nèi)存塊中連續(xù)地址到接收方系統(tǒng)存儲(chǔ)器中離散結(jié)構(gòu)的地址的映射關(guān)系;以及同時(shí)執(zhí)行的以下步驟: 數(shù)據(jù)接收步驟,接收數(shù)據(jù)包并存儲(chǔ)至接收緩存的一個(gè)或多個(gè)的內(nèi)存塊中; 數(shù)據(jù)存儲(chǔ)步驟,運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)一個(gè)反向映射文件將接收緩存中對(duì)應(yīng)內(nèi)存塊的數(shù)據(jù)更新存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中。
4.根據(jù)權(quán)利要求3所述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包方法,其特征在于,在所述數(shù)據(jù)存儲(chǔ)步驟中:所述同步線程的數(shù)量等于所接收的映射文件的數(shù)量。
5.一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包裝置,包括發(fā)送緩存以及以離散結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的底層物理存儲(chǔ)器,其特征在于,還包括: 地址映射模塊,與所述發(fā)送緩存和底層物理存儲(chǔ)器相連,用于在發(fā)送緩存中為底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)分配一個(gè)或多個(gè)內(nèi)存塊,并針對(duì)每個(gè)內(nèi)存塊生成映射文件,所述映射文件記載所述底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)到該內(nèi)存塊中連續(xù)地址的映射關(guān)系; 文件發(fā)送模塊,與所述地址映射模塊相連,用于在數(shù)據(jù)打包模塊發(fā)送數(shù)據(jù)包之前,將所述映射文件發(fā)送給數(shù)據(jù)接收方,用于數(shù)據(jù)接收方解包; 數(shù)據(jù)更新模塊,與所述地址映射模塊、所述發(fā)送緩存和底層物理存儲(chǔ)器相連,用于運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)地址映射模塊所生成的一個(gè)映射文件將底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)更新存儲(chǔ)至對(duì)應(yīng)內(nèi)存塊; 數(shù)據(jù)打包模塊,與所述發(fā)送緩存相連,用于在所述數(shù)據(jù)更新模塊運(yùn)行同時(shí)將所述發(fā)送緩存中內(nèi)存塊內(nèi)數(shù)據(jù)進(jìn)行打包并發(fā)送給數(shù)據(jù)接收方。
6.根據(jù)權(quán)利要求5所述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包裝置,其特征在于,所述數(shù)據(jù)更新模塊根據(jù)底層物理存儲(chǔ)器中離散結(jié)構(gòu)的數(shù)據(jù)總量、所需的數(shù)據(jù)打包發(fā)送時(shí)間和同步線程遍歷內(nèi)存塊的速度確定所述同步線程的數(shù)量。
7.一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包裝置,包括接收緩存以及接收方系統(tǒng)存儲(chǔ)器,其特征在于,還包括: 文件接收模塊,用于接收映射文件,所述映射文件記載底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)到發(fā)送緩存的內(nèi)存塊中連續(xù)地址的映射關(guān)系; 反向映射模塊,與所述文件接收模塊相連,用于根據(jù)針對(duì)每個(gè)內(nèi)存塊的映射文件生成針對(duì)每個(gè)內(nèi)存塊的反向映射文件,所述反向映射文件記載該內(nèi)存塊中連續(xù)地址到接收方系統(tǒng)存儲(chǔ)器中離散結(jié)構(gòu)的地址的映射關(guān)系; 數(shù)據(jù)接收模塊,用于接收數(shù)據(jù)包并存儲(chǔ)至接收緩存的一個(gè)或多個(gè)內(nèi)存塊中; 數(shù)據(jù)存儲(chǔ)模塊,與所述數(shù)據(jù)接收模塊、接收緩存和接收方系統(tǒng)存儲(chǔ)器相連,用于在所述數(shù)據(jù)接收模塊運(yùn)行時(shí)同時(shí)運(yùn)行一個(gè)或多個(gè)同步線程,其中每個(gè)同步線程根據(jù)一個(gè)反向映射文件將接收緩存中對(duì)應(yīng)內(nèi)存塊的數(shù)據(jù)更新存儲(chǔ)至接收方系統(tǒng)存儲(chǔ)器中對(duì)應(yīng)的離散結(jié)構(gòu)的地址中。
8.根據(jù)權(quán)利要求7所述的應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)解包裝置,其特征在于,所述數(shù)據(jù)存儲(chǔ)模塊采用的所述同步線程的數(shù)量 等于所接收的映射文件的數(shù)量。
全文摘要
本發(fā)明提供一種應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包和解包的方法,并且通過(guò)該方法,建立了應(yīng)用在核電站全范圍模擬機(jī)中的數(shù)據(jù)打包和解包的裝置。該方法包括在發(fā)送緩存中為底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)分配具有連續(xù)地址的一個(gè)或多個(gè)內(nèi)存塊中,并針對(duì)每個(gè)內(nèi)存塊生成映射文件,將所述映射文件發(fā)送給數(shù)據(jù)接收方用于解包;運(yùn)行一個(gè)或多個(gè)同步線程根據(jù)映射文件將底層物理存儲(chǔ)器中以離散結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)更新存儲(chǔ)至對(duì)應(yīng)內(nèi)存塊;在數(shù)據(jù)更新步驟運(yùn)行的同時(shí)將內(nèi)存塊中數(shù)據(jù)打包發(fā)送。本發(fā)明通過(guò)采用多線程,分離數(shù)據(jù)更新同步與打包過(guò)程,可有效的改善數(shù)據(jù)打包和接收解包的時(shí)間,快速地將以離散結(jié)構(gòu)存儲(chǔ)的大量數(shù)據(jù)打包發(fā)送到其他子系統(tǒng)。
文檔編號(hào)H04L29/08GK103095738SQ20111033197
公開日2013年5月8日 申請(qǐng)日期2011年10月27日 優(yōu)先權(quán)日2011年10月27日
發(fā)明者張光昱, 章旋, 曹建亭 申請(qǐng)人:中廣核(北京)仿真技術(shù)有限公司, 中國(guó)廣東核電集團(tuán)有限公司