亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于定長(zhǎng)數(shù)據(jù)塊的工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)方法與流程

文檔序號(hào):11518589閱讀:303來(lái)源:國(guó)知局
基于定長(zhǎng)數(shù)據(jù)塊的工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)方法與流程

本發(fā)明涉及工業(yè)數(shù)據(jù)訪問(wèn)技術(shù)領(lǐng)域,具體來(lái)說(shuō)是基于定長(zhǎng)數(shù)據(jù)塊的工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)方法。



背景技術(shù):

隨著物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)等業(yè)務(wù)和技術(shù)的完善,以及國(guó)家中國(guó)制造2025戰(zhàn)略推動(dòng),工業(yè)數(shù)據(jù)中心作為工業(yè)數(shù)據(jù)的匯集以及存儲(chǔ)、分發(fā)中心,將起著不可替代的作用。在工業(yè)應(yīng)用的日常場(chǎng)景中,需要工業(yè)數(shù)據(jù)中心能夠高效的收集離散的工業(yè)測(cè)點(diǎn)數(shù)據(jù)信號(hào),并且能夠高效的檢索數(shù)據(jù),以滿(mǎn)足工業(yè)現(xiàn)場(chǎng)實(shí)時(shí)工藝數(shù)據(jù)展現(xiàn)以及實(shí)時(shí)曲線報(bào)表的要求。而為了滿(mǎn)足工業(yè)實(shí)施信號(hào)的高速訪問(wèn),采用高效的數(shù)據(jù)緩存管理技術(shù)必不可少。

在工業(yè)領(lǐng)域,實(shí)時(shí)信號(hào)的存儲(chǔ)以及檢索方案很多,其中典型方案一般是借助于實(shí)時(shí)數(shù)據(jù)庫(kù)尤其是工業(yè)實(shí)時(shí)數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)測(cè)點(diǎn)數(shù)據(jù)緩存。實(shí)時(shí)數(shù)據(jù)庫(kù)具有高健壯、高吞吐、事務(wù)安全等特點(diǎn),但由于其價(jià)格昂貴,往往用于大型企業(yè)的mes、mrp系統(tǒng)中,對(duì)于數(shù)據(jù)中心這樣為多行業(yè)提供基礎(chǔ)設(shè)施的需求來(lái)說(shuō)其成本不可接受并且沒(méi)有必要。

也有很多技術(shù)方案采用基于memchched、redis等搭建分布內(nèi)存數(shù)據(jù)隊(duì)列來(lái)解決工業(yè)數(shù)據(jù)緩存問(wèn)題,僅僅采用k-value方式來(lái)存儲(chǔ)數(shù)據(jù)是不夠的,仍需要搭建分布數(shù)據(jù)緩存架構(gòu)并根據(jù)業(yè)務(wù)實(shí)際需要搭建相應(yīng)的數(shù)據(jù)結(jié)構(gòu)以及定義訪問(wèn)策略。需要提到的是,ucberkeley的基于內(nèi)存的分布式并行處理框架spark、以及基于mapreduce的storm均提供了基于流處理的數(shù)據(jù)處理機(jī)制,解決了大數(shù)據(jù)的實(shí)時(shí)計(jì)算問(wèn)題,但將其作為單純的數(shù)據(jù)緩沖并不合適。

在研究領(lǐng)域,大數(shù)據(jù)技術(shù)鏈上的內(nèi)存計(jì)算技術(shù)近年來(lái)逐漸被人關(guān)注,2015年國(guó)家863計(jì)劃已經(jīng)將“面向大數(shù)據(jù)的內(nèi)存關(guān)鍵技術(shù)”列為信息技術(shù)領(lǐng)域的重要內(nèi)容。但國(guó)內(nèi)科研機(jī)構(gòu)的科研成果偏于強(qiáng)調(diào)學(xué)術(shù)價(jià)值,成果轉(zhuǎn)化存在一定困難。隨著計(jì)算機(jī)硬件設(shè)備的制造技術(shù)的提升,以及超融合技術(shù)的普及,采用超融合技術(shù)架構(gòu)或者低成本超大容量?jī)?nèi)存服務(wù)器可以為工業(yè)數(shù)據(jù)中心的工業(yè)數(shù)據(jù)緩存帶來(lái)新的解決方案。

從工業(yè)數(shù)據(jù)中心的角度來(lái)說(shuō),工業(yè)數(shù)據(jù)中心往往需要匯聚大量的信號(hào)數(shù)據(jù)。假設(shè)一組服務(wù)器接入1000多個(gè)工業(yè)站點(diǎn),每個(gè)工業(yè)站點(diǎn)需要監(jiān)控1000個(gè)信號(hào)測(cè)點(diǎn),每個(gè)測(cè)點(diǎn)需要實(shí)時(shí)保存檢索2000條數(shù)據(jù),則服務(wù)器需要為近2億條記錄提供保存和檢索服務(wù)。即使這些數(shù)據(jù)全部采用內(nèi)存保存,如不考慮采用合適的數(shù)據(jù)結(jié)構(gòu)和算法,則服務(wù)器檢索計(jì)算壓力巨大,無(wú)法即時(shí)響應(yīng)和處理高頻次的數(shù)據(jù)請(qǐng)求。從建設(shè)成本角度出發(fā),數(shù)據(jù)中心也不宜僅僅為滿(mǎn)足數(shù)據(jù)緩沖需要而使用價(jià)格高昂的超大內(nèi)存服務(wù)器。

從工業(yè)遠(yuǎn)程監(jiān)控的實(shí)際應(yīng)用來(lái)看,遠(yuǎn)程監(jiān)控一般需要考慮觀測(cè)工藝節(jié)點(diǎn)關(guān)鍵指標(biāo)數(shù)據(jù),以及觀測(cè)某一關(guān)鍵指標(biāo)某時(shí)間區(qū)域的實(shí)時(shí)曲線。而實(shí)時(shí)信號(hào)的即時(shí)計(jì)算以及實(shí)時(shí)信號(hào)的回溯往往在工業(yè)環(huán)境現(xiàn)場(chǎng)以及本地信息中心處理。因此分析如下:遠(yuǎn)程監(jiān)控在對(duì)工藝節(jié)點(diǎn)監(jiān)測(cè)時(shí),需要參照工藝結(jié)構(gòu)圖觀測(cè)測(cè)點(diǎn)最新數(shù)據(jù),這是僅僅需要服務(wù)器向客戶(hù)端發(fā)送該測(cè)點(diǎn)單條最新數(shù)據(jù)即可;而在觀測(cè)測(cè)點(diǎn)實(shí)時(shí)曲線的時(shí)候,受限于顯示設(shè)備分辨率大小,服務(wù)器僅僅需要向客戶(hù)端發(fā)送固定長(zhǎng)度的測(cè)點(diǎn)數(shù)據(jù)。

因此,傳統(tǒng)技術(shù)中提取的大量數(shù)據(jù)實(shí)際被應(yīng)用在客戶(hù)端的則非常少,造成了數(shù)據(jù)提取過(guò)程的資源浪費(fèi)。如何利用工業(yè)遠(yuǎn)程監(jiān)控在實(shí)際應(yīng)用中的這一數(shù)據(jù)提取特性,減少工業(yè)源點(diǎn)數(shù)據(jù)的提取量,設(shè)計(jì)出一種工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)方法已經(jīng)成為急需解決的技術(shù)問(wèn)題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中工業(yè)信號(hào)源提取的數(shù)據(jù)利用率低造成數(shù)據(jù)提取資源浪費(fèi)的缺陷,提供一種基于定長(zhǎng)數(shù)據(jù)塊的工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)方法來(lái)解決上述問(wèn)題。

為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:

一種基于定長(zhǎng)數(shù)據(jù)塊的工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)方法,包括以下步驟:

構(gòu)建內(nèi)存服務(wù)器集群,根據(jù)測(cè)點(diǎn)實(shí)時(shí)曲線的生成需要設(shè)定數(shù)據(jù)塊長(zhǎng)度,對(duì)內(nèi)存服務(wù)器進(jìn)行內(nèi)存配置,并建立內(nèi)存服務(wù)器節(jié)點(diǎn)信息表;

對(duì)測(cè)點(diǎn)在內(nèi)存服務(wù)器上進(jìn)行編碼,在每臺(tái)內(nèi)存服務(wù)器上分別對(duì)其存儲(chǔ)的測(cè)點(diǎn)進(jìn)行編碼并建立內(nèi)存服務(wù)器的內(nèi)存分配結(jié)構(gòu);

接收數(shù)據(jù)高速總線所發(fā)送的數(shù)據(jù),數(shù)據(jù)寫(xiě)入調(diào)度器接收數(shù)據(jù)高速總線所發(fā)送的數(shù)據(jù),并向內(nèi)存服務(wù)器存入數(shù)據(jù);

內(nèi)存服務(wù)器數(shù)據(jù)的接收與處理,內(nèi)存服務(wù)器接收數(shù)據(jù)寫(xiě)入調(diào)度器發(fā)送的數(shù)據(jù),并進(jìn)行處理,更新相應(yīng)的數(shù)據(jù)塊;

請(qǐng)求服務(wù)器或客戶(hù)端讀取數(shù)據(jù),客戶(hù)端讀取相應(yīng)數(shù)據(jù),以生成測(cè)點(diǎn)實(shí)時(shí)曲線或者展示實(shí)時(shí)工藝數(shù)據(jù)。

所述的構(gòu)建內(nèi)存服務(wù)器集群包括以下步驟:

根據(jù)客戶(hù)端生成測(cè)點(diǎn)實(shí)時(shí)曲線的需求,設(shè)定數(shù)據(jù)塊長(zhǎng)度為128、256、512、1024或2048;

對(duì)測(cè)點(diǎn)建立標(biāo)識(shí)sig_id,標(biāo)識(shí)從0開(kāi)始編號(hào);

計(jì)算每臺(tái)內(nèi)存服務(wù)器內(nèi)存容量,根據(jù)數(shù)據(jù)塊長(zhǎng)度分配每臺(tái)內(nèi)存服務(wù)器所對(duì)應(yīng)的測(cè)點(diǎn)數(shù),并將相對(duì)應(yīng)測(cè)點(diǎn)分配到每臺(tái)內(nèi)存服務(wù)器;

建立內(nèi)存服務(wù)器節(jié)點(diǎn)信息表,在內(nèi)存服務(wù)器節(jié)點(diǎn)信息表中建立數(shù)組sig_id_array、數(shù)組下標(biāo)為sig_id,數(shù)組sig_id_array存放信號(hào)名稱(chēng)與測(cè)點(diǎn)標(biāo)識(shí)映射,信號(hào)名稱(chēng)為sig_name,sig_name對(duì)應(yīng)的測(cè)點(diǎn)標(biāo)識(shí)為sig_id;

建立保存測(cè)點(diǎn)數(shù)據(jù)存取對(duì)應(yīng)的內(nèi)存服務(wù)器信息server_element,內(nèi)存服務(wù)器信息server_element結(jié)構(gòu)如下:

{min_sig_id,max_sig_id,server_id,server_address},

其中:min_sig_id為該內(nèi)存服務(wù)器存放的最小測(cè)點(diǎn)編號(hào),max_sig_id為該內(nèi)存服務(wù)器存放的最大測(cè)點(diǎn)編號(hào),serve_id為內(nèi)存服務(wù)器編號(hào),server_address為內(nèi)存服務(wù)器訪問(wèn)地址;

若干個(gè)server_element組成內(nèi)存服務(wù)器測(cè)點(diǎn)分配表sig_server_list;

在內(nèi)存服務(wù)器節(jié)點(diǎn)信息表中保存內(nèi)存服務(wù)器測(cè)點(diǎn)分配表sig_server_list。

所述的對(duì)測(cè)點(diǎn)在內(nèi)存服務(wù)器上進(jìn)行編碼包括以下步驟:

在每個(gè)內(nèi)存服務(wù)器內(nèi)均配置索引,其包含單條測(cè)點(diǎn)數(shù)據(jù)索引mono_ind_array、數(shù)據(jù)塊索引block_ind_array;

單條測(cè)點(diǎn)數(shù)據(jù)索引mono_ind_array為地址的一維數(shù)組,數(shù)組下標(biāo)id從0開(kāi)始,其中下標(biāo)id與sig_id的對(duì)應(yīng)關(guān)系為

id=sig_id-min_sig_id;

數(shù)據(jù)塊索引block_ind_array為二維數(shù)組,其中每個(gè)元素結(jié)構(gòu)為{pos,length,address},

pos用于指示當(dāng)前最新的測(cè)點(diǎn)數(shù)據(jù)存放位置,length用于指示整個(gè)數(shù)據(jù)塊長(zhǎng)度,address用于指示數(shù)據(jù)塊內(nèi)存首地址;

在每個(gè)內(nèi)存服務(wù)器內(nèi)均配置隊(duì)列,其包含單條測(cè)點(diǎn)數(shù)據(jù)隊(duì)列和測(cè)點(diǎn)數(shù)據(jù)塊隊(duì)列,其中單條測(cè)點(diǎn)數(shù)據(jù)隊(duì)列用于存放最近一次接收的測(cè)點(diǎn)數(shù)據(jù),測(cè)點(diǎn)數(shù)據(jù)塊隊(duì)列用于根據(jù)客戶(hù)端要求存放最近一段時(shí)間內(nèi)的測(cè)點(diǎn)數(shù)據(jù),測(cè)點(diǎn)數(shù)據(jù)塊分配按設(shè)定的數(shù)據(jù)塊長(zhǎng)度固定大小,采用獨(dú)立的內(nèi)存空間存放;

對(duì)所有內(nèi)存服務(wù)器數(shù)據(jù)進(jìn)行初始化,對(duì)測(cè)點(diǎn)索引填充對(duì)應(yīng)的內(nèi)存地址,依次向mono_ind_array、block_ind_array填充分配好的內(nèi)存地址的首地址。

所述的接收數(shù)據(jù)高速總線所發(fā)送的數(shù)據(jù)包括以下步驟:

數(shù)據(jù)寫(xiě)入調(diào)度器從高速數(shù)據(jù)總線接收數(shù)據(jù),其數(shù)據(jù)形式為{sig_name,timestamp,value},sig_name為信號(hào)名稱(chēng)的散列值,timestamp為時(shí)間標(biāo)簽,value為測(cè)點(diǎn)信號(hào)值測(cè)點(diǎn)信號(hào)取到的數(shù)值;

數(shù)據(jù)寫(xiě)入調(diào)度器采用二分查找法,從sig_id_array中查找sig_name,得到sig_name的數(shù)組下標(biāo)為sig_id;根據(jù)sig_id檢索sig_server_list查找到內(nèi)存服務(wù)器地址;

數(shù)據(jù)寫(xiě)入調(diào)度器將該條數(shù)據(jù)發(fā)送到查找到的內(nèi)存服務(wù)器。

所述的內(nèi)存服務(wù)器數(shù)據(jù)的接收與處理包括以下步驟:

內(nèi)存服務(wù)器接收數(shù)據(jù),保存到單條測(cè)點(diǎn)數(shù)據(jù);

計(jì)算單條測(cè)點(diǎn)數(shù)據(jù)索引下標(biāo)為i_cursor=sig_id–min_sig_id得到測(cè)點(diǎn)在當(dāng)前服務(wù)器的單點(diǎn)索引位置;從索引mono_ind_array[i_cursor]處獲得測(cè)點(diǎn)數(shù)據(jù)存放的內(nèi)存地址,在此地址寫(xiě)入數(shù)據(jù);

內(nèi)存服務(wù)器接收數(shù)據(jù),保存數(shù)據(jù)到測(cè)點(diǎn)數(shù)據(jù)塊,步驟如下:

計(jì)算i_cursor=sig_id–min_sig_id;得到測(cè)點(diǎn)在當(dāng)前服務(wù)器的測(cè)點(diǎn)數(shù)據(jù)塊索引位置;

從block_ind_array[i_cursor]得到該測(cè)點(diǎn)數(shù)據(jù)存放數(shù)據(jù)塊首地址block_address,并得到數(shù)據(jù)塊當(dāng)前測(cè)點(diǎn)數(shù)據(jù)存放位置pos,數(shù)據(jù)塊長(zhǎng)度len;

計(jì)算pos=posmodlen;在block_address[pos]存放測(cè)點(diǎn)信號(hào)數(shù)據(jù)記錄;在當(dāng)前位置覆蓋最新的測(cè)點(diǎn)信號(hào)數(shù)據(jù);

將block_ind_array[i_cursor]當(dāng)前位置pos更新為pos+1modlen。

所述的請(qǐng)求服務(wù)器或客戶(hù)端讀取數(shù)據(jù)包括以下步驟:

客戶(hù)端發(fā)送請(qǐng)求到數(shù)據(jù)訪問(wèn)調(diào)度器,請(qǐng)求包含sig_name,以及請(qǐng)求數(shù)據(jù)為單條還是數(shù)據(jù)塊,

根據(jù)請(qǐng)求的信號(hào)名稱(chēng)sig_name,從sig_id_array查找到測(cè)點(diǎn)標(biāo)志sig_id;檢查sig_server_list查找對(duì)應(yīng)內(nèi)存服務(wù)器,將請(qǐng)求發(fā)送到對(duì)應(yīng)的內(nèi)存服務(wù)器;

若請(qǐng)求為讀取單條測(cè)點(diǎn)數(shù)據(jù),內(nèi)存服務(wù)器從mono_ind_array[sig_id-min_sig_id]處直接讀取數(shù)據(jù)記錄并放置臨時(shí)緩沖區(qū);

若請(qǐng)求為信號(hào)實(shí)時(shí)曲線,則內(nèi)存服務(wù)器從block_address=

block_ind_array[sig_id–min_sig_id]處直接讀取數(shù)據(jù)塊全部?jī)?nèi)容放置臨時(shí)緩沖區(qū);

在臨時(shí)緩沖區(qū)對(duì)數(shù)據(jù)塊內(nèi)容整理,步驟如下:

將block_address[0..pos-1]的數(shù)據(jù)與block_address[pos..len-1]數(shù)據(jù)內(nèi)容交換后放到臨時(shí)緩沖區(qū);

編碼器根據(jù)請(qǐng)求服務(wù)器或者客戶(hù)端要求將臨時(shí)緩沖區(qū)數(shù)據(jù)編碼成xml格式或者json格式,放置輸出隊(duì)列,輸出隊(duì)列采用fifo方式輸出到請(qǐng)求服務(wù)器或者客戶(hù)端。

有益效果

本發(fā)明的基于定長(zhǎng)數(shù)據(jù)塊的工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)方法,與現(xiàn)有技術(shù)相比利用工業(yè)遠(yuǎn)程監(jiān)控的數(shù)據(jù)特性采用單條測(cè)點(diǎn)隊(duì)列和數(shù)據(jù)塊隊(duì)列存儲(chǔ)數(shù)據(jù),并采用索引方式提高了內(nèi)存服務(wù)器對(duì)工業(yè)信號(hào)的檢索速度。本發(fā)明采用索引方式將一定時(shí)間序列的測(cè)點(diǎn)數(shù)據(jù)全部取出并發(fā)送,以減少服務(wù)檢索負(fù)載,從而降低了服務(wù)器檢索數(shù)據(jù)的計(jì)算負(fù)荷,滿(mǎn)足了客戶(hù)端的工藝關(guān)鍵數(shù)據(jù)實(shí)時(shí)展現(xiàn)以及工業(yè)曲線報(bào)表的實(shí)時(shí)展現(xiàn)要求。

附圖說(shuō)明

圖1為本發(fā)明的方法順序圖;

圖2為本發(fā)明中內(nèi)存服務(wù)器的內(nèi)存分配圖;

圖3為現(xiàn)有技術(shù)中工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)連接框圖。

具體實(shí)施方式

為使對(duì)本發(fā)明的結(jié)構(gòu)特征及所達(dá)成的功效有更進(jìn)一步的了解與認(rèn)識(shí),用以較佳的實(shí)施例及附圖配合詳細(xì)的說(shuō)明,說(shuō)明如下:

如圖3所示,現(xiàn)有技術(shù)的工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)連接關(guān)系中,高速數(shù)據(jù)總線用于向內(nèi)存服務(wù)器組寫(xiě)入實(shí)時(shí)測(cè)點(diǎn)數(shù)據(jù),可以采用zmq、rabbitmq、zeromq、jms、msmq、activemq、jafka/kafka中任意一種實(shí)現(xiàn)。

內(nèi)存服務(wù)器節(jié)點(diǎn)信息表用于保存內(nèi)存服務(wù)器測(cè)點(diǎn)分配表sig_server_list和數(shù)組sig_id_array。

數(shù)據(jù)寫(xiě)入調(diào)度器從高速數(shù)據(jù)總線讀取測(cè)點(diǎn)信號(hào)數(shù)據(jù),選擇內(nèi)存服務(wù)器保存數(shù)據(jù)。

內(nèi)存服務(wù)器用于存放以及檢索數(shù)據(jù),其內(nèi)存分配圖結(jié)構(gòu)如圖2所示,其中單條測(cè)點(diǎn)數(shù)據(jù)索引用于存放每條測(cè)點(diǎn)數(shù)據(jù)地址,測(cè)點(diǎn)數(shù)據(jù)塊索引保存測(cè)點(diǎn)數(shù)據(jù)塊首地址、以及數(shù)據(jù)塊長(zhǎng)度、當(dāng)前下標(biāo)信息。單條測(cè)點(diǎn)數(shù)據(jù)隊(duì)列保存各個(gè)測(cè)點(diǎn)數(shù)據(jù)記錄,測(cè)點(diǎn)數(shù)據(jù)記錄格式為{sig_name,time_stamp,value}。測(cè)點(diǎn)數(shù)據(jù)塊保存一定時(shí)間序列內(nèi)的測(cè)點(diǎn)數(shù)據(jù)記錄,測(cè)點(diǎn)數(shù)據(jù)塊是固定長(zhǎng)度的。

數(shù)據(jù)訪問(wèn)調(diào)度器接收請(qǐng)求服務(wù)器或者客戶(hù)端數(shù)據(jù)請(qǐng)求,選擇測(cè)點(diǎn)信號(hào)存在的服務(wù)器。如請(qǐng)求的是單一工藝測(cè)點(diǎn)信號(hào)數(shù)據(jù),則從相應(yīng)內(nèi)存服務(wù)器取出單條測(cè)點(diǎn)數(shù)據(jù)記錄。如請(qǐng)求的是一段實(shí)時(shí)曲線數(shù)據(jù),則從相應(yīng)內(nèi)存服務(wù)器中拿出整個(gè)數(shù)據(jù)塊所有數(shù)據(jù)記錄,經(jīng)整理后給出。

編碼器對(duì)數(shù)據(jù)訪問(wèn)調(diào)度器取出的數(shù)據(jù),按請(qǐng)求服務(wù)器或者客戶(hù)端要求編碼。

輸出緩存用于存放編碼后的測(cè)點(diǎn)數(shù)據(jù)記錄,等待請(qǐng)求服務(wù)器或者客戶(hù)端消費(fèi)數(shù)據(jù)。

如圖1所示,本發(fā)明所述的基于定長(zhǎng)數(shù)據(jù)塊的工業(yè)信號(hào)數(shù)據(jù)訪問(wèn)方法,包括以下步驟:

第一步,構(gòu)建內(nèi)存服務(wù)器集群。根據(jù)測(cè)點(diǎn)實(shí)時(shí)曲線的生成需要設(shè)定數(shù)據(jù)塊長(zhǎng)度,對(duì)內(nèi)存服務(wù)器進(jìn)行內(nèi)存配置,并建立內(nèi)存服務(wù)器節(jié)點(diǎn)信息表。在此,為減少數(shù)據(jù)查詢(xún)的耗時(shí),針對(duì)各工業(yè)數(shù)據(jù)節(jié)點(diǎn)來(lái)分配相應(yīng)的內(nèi)存服務(wù)器,并對(duì)內(nèi)存服務(wù)器建立相應(yīng)的索引。在進(jìn)行工業(yè)節(jié)點(diǎn)數(shù)據(jù)查詢(xún)時(shí),無(wú)需查詢(xún)傳統(tǒng)的數(shù)據(jù)庫(kù)或訪問(wèn)工業(yè)節(jié)點(diǎn),只需訪問(wèn)相應(yīng)的內(nèi)存數(shù)據(jù)庫(kù)即可。其具體步驟如下:

(1)根據(jù)客戶(hù)端生成測(cè)點(diǎn)實(shí)時(shí)曲線的需求,設(shè)定數(shù)據(jù)塊長(zhǎng)度為128、256、512、1024或2048,數(shù)據(jù)塊長(zhǎng)度以數(shù)據(jù)位為單位。

(2)對(duì)測(cè)點(diǎn)(工業(yè)信號(hào)節(jié)點(diǎn))建立標(biāo)識(shí)sig_id,標(biāo)識(shí)從0開(kāi)始編號(hào)。

(3)計(jì)算每臺(tái)內(nèi)存服務(wù)器內(nèi)存容量,根據(jù)數(shù)據(jù)塊長(zhǎng)度分配每臺(tái)內(nèi)存服務(wù)器所對(duì)應(yīng)的測(cè)點(diǎn)數(shù),并將相對(duì)應(yīng)測(cè)點(diǎn)分配到每臺(tái)內(nèi)存服務(wù)器。例如:總計(jì)設(shè)有4臺(tái)內(nèi)存服務(wù)器,每臺(tái)內(nèi)存服務(wù)器均可提供32g內(nèi)存用于存放數(shù)據(jù)塊,設(shè)測(cè)點(diǎn)數(shù)據(jù)塊長(zhǎng)度均為1k,則每臺(tái)服務(wù)器可分配測(cè)點(diǎn)數(shù)為32m個(gè)。

(4)建立內(nèi)存服務(wù)器節(jié)點(diǎn)信息表。在內(nèi)存服務(wù)器節(jié)點(diǎn)信息表中建立數(shù)組sig_id_array、數(shù)組即下標(biāo)為sig_id,數(shù)組sig_id_array存放信號(hào)名稱(chēng)與測(cè)點(diǎn)標(biāo)識(shí)映射,信號(hào)名稱(chēng)為sig_name,sig_name對(duì)應(yīng)的測(cè)點(diǎn)標(biāo)識(shí)為sig_id。為便于快速檢索sig_name采用散列編碼。

(5)建立保存測(cè)點(diǎn)數(shù)據(jù)存取對(duì)應(yīng)的內(nèi)存服務(wù)器信息server_element,內(nèi)存服務(wù)器信息server_element結(jié)構(gòu)如下:

{min_sig_id,max_sig_id,server_id,server_address},

其中:min_sig_id為該內(nèi)存服務(wù)器存放的最小測(cè)點(diǎn)編號(hào),max_sig_id為該內(nèi)存服務(wù)器存放的最大測(cè)點(diǎn)編號(hào),serve_id為內(nèi)存服務(wù)器編號(hào),server_address為內(nèi)存服務(wù)器訪問(wèn)地址。

若干個(gè)server_element組成內(nèi)存服務(wù)器測(cè)點(diǎn)分配表sig_server_list。

(6)在內(nèi)存服務(wù)器節(jié)點(diǎn)信息表中保存內(nèi)存服務(wù)器測(cè)點(diǎn)分配表sig_server_list。

第二步,對(duì)測(cè)點(diǎn)在內(nèi)存服務(wù)器上進(jìn)行編碼。在每臺(tái)內(nèi)存服務(wù)器上分別對(duì)其存儲(chǔ)的測(cè)點(diǎn)進(jìn)行編碼并建立內(nèi)存服務(wù)器的內(nèi)存分配結(jié)構(gòu)。在針對(duì)訪問(wèn)內(nèi)存服務(wù)器的過(guò)程中,也并非傳統(tǒng)的針對(duì)內(nèi)存服務(wù)器進(jìn)行查找,而是采取從相應(yīng)的內(nèi)存服務(wù)器中直接調(diào)取(非查找)的方法。針對(duì)實(shí)際使用中,需要參照工藝結(jié)構(gòu)圖觀測(cè)測(cè)點(diǎn)最新數(shù)據(jù)的數(shù)據(jù)調(diào)取方式,只需讀取單條測(cè)點(diǎn)數(shù)據(jù)隊(duì)列,而單條測(cè)點(diǎn)數(shù)據(jù)隊(duì)列中即為不斷更新的單點(diǎn)(某一工業(yè)信號(hào)源)的數(shù)據(jù),再配以單條測(cè)點(diǎn)數(shù)據(jù)索引進(jìn)行定位;而需生成測(cè)點(diǎn)實(shí)時(shí)曲線時(shí),則需讀取測(cè)點(diǎn)數(shù)據(jù)塊隊(duì)列,測(cè)點(diǎn)數(shù)據(jù)塊隊(duì)列中保存的為單點(diǎn)(某一工業(yè)信號(hào)源)數(shù)據(jù)塊長(zhǎng)度內(nèi)的數(shù)據(jù),再配以數(shù)據(jù)塊索引進(jìn)行定位,從而減少了系統(tǒng)的計(jì)算和響應(yīng)時(shí)間,提高了運(yùn)行效率。其具體步驟如下:

(1)在每個(gè)內(nèi)存服務(wù)器內(nèi)均配置索引,其包含單條測(cè)點(diǎn)數(shù)據(jù)索引mono_ind_array、數(shù)據(jù)塊索引block_ind_array,單條測(cè)點(diǎn)數(shù)據(jù)索引mono_ind_array是一個(gè)地址的一維數(shù)組。數(shù)組下標(biāo)id從0開(kāi)始。其中下標(biāo)id與sig_id的對(duì)應(yīng)關(guān)系為:id=sig_id-min_sig_id;數(shù)據(jù)塊索引block_ind_array是一個(gè)二維數(shù)組,其中每個(gè)元素結(jié)構(gòu)為{pos,length,address},pos用于指示當(dāng)前最新的測(cè)點(diǎn)數(shù)據(jù)存放位置,length用于指示整個(gè)數(shù)據(jù)塊長(zhǎng)度,address用于指示數(shù)據(jù)塊內(nèi)存首地址。

在每個(gè)內(nèi)存服務(wù)器內(nèi)均配置隊(duì)列,其包含單條測(cè)點(diǎn)數(shù)據(jù)隊(duì)列和測(cè)點(diǎn)數(shù)據(jù)塊隊(duì)列,其中單條測(cè)點(diǎn)數(shù)據(jù)隊(duì)列用于存放最近一次接收的測(cè)點(diǎn)數(shù)據(jù),測(cè)點(diǎn)數(shù)據(jù)塊隊(duì)列用于根據(jù)客戶(hù)端要求存放最近一段時(shí)間內(nèi)的測(cè)點(diǎn)數(shù)據(jù),測(cè)點(diǎn)數(shù)據(jù)塊分配按設(shè)定的數(shù)據(jù)塊長(zhǎng)度固定大小,采用獨(dú)立的內(nèi)存空間存放。

(2)對(duì)所有內(nèi)存服務(wù)器數(shù)據(jù)進(jìn)行初始化,對(duì)測(cè)點(diǎn)索引填充對(duì)應(yīng)的內(nèi)存地址。具體是依次向mono_ind_array,block_ind_array填充分配好的內(nèi)存地址的首地址。

第三步,接收數(shù)據(jù)高速總線所發(fā)送的數(shù)據(jù)。數(shù)據(jù)寫(xiě)入調(diào)度器接收數(shù)據(jù)高速總線所發(fā)送的數(shù)據(jù),并向內(nèi)存服務(wù)器存入數(shù)據(jù)。其具體步驟如下:

(1)數(shù)據(jù)寫(xiě)入調(diào)度器從高速數(shù)據(jù)總線接收數(shù)據(jù),其數(shù)據(jù)形式為{sig_name,timestamp,value},其中:sig_name為信號(hào)名稱(chēng)的散列值,timestamp為時(shí)間標(biāo)簽,value為測(cè)點(diǎn)信號(hào)值測(cè)點(diǎn)信號(hào)取到的數(shù)值。

(2)數(shù)據(jù)寫(xiě)入調(diào)度器采用二分查找法,從sig_id_array中查找sig_name,由第一步(4)可知,對(duì)應(yīng)sig_name的數(shù)組下標(biāo)為sig_id;根據(jù)sig_id檢索sig_server_list查找到內(nèi)存服務(wù)器地址。

(3)數(shù)據(jù)寫(xiě)入調(diào)度器將該條數(shù)據(jù)發(fā)送到查找到的內(nèi)存服務(wù)器。

由此可以看出,本發(fā)明只是在數(shù)據(jù)寫(xiě)入調(diào)度器中進(jìn)行內(nèi)存服務(wù)器的查找,即傳統(tǒng)的工業(yè)信號(hào)大數(shù)據(jù)源的查找,在此變?yōu)檫M(jìn)行內(nèi)存服務(wù)器的查找,查找出所需要的內(nèi)存服務(wù)器地址,大大減少了數(shù)據(jù)查找量。

第四步,內(nèi)存服務(wù)器數(shù)據(jù)的接收與處理。內(nèi)存服務(wù)器接收數(shù)據(jù)寫(xiě)入調(diào)度器發(fā)送的數(shù)據(jù),并進(jìn)行處理,更新相應(yīng)的數(shù)據(jù)塊??紤]到每個(gè)測(cè)點(diǎn)數(shù)據(jù)可能被用作工藝關(guān)鍵指標(biāo)或者是作為工藝曲線一部分,因此需要同時(shí)保存,具體步驟如下:

(1)內(nèi)存服務(wù)器接收數(shù)據(jù),保存到單條測(cè)點(diǎn)數(shù)據(jù);

計(jì)算單條測(cè)點(diǎn)數(shù)據(jù)索引下標(biāo)為i_cursor=sig_id–min_sig_id得到測(cè)點(diǎn)在當(dāng)前服務(wù)器的單點(diǎn)索引位置;從索引mono_ind_array[i_cursor]處獲得測(cè)點(diǎn)數(shù)據(jù)存放的內(nèi)存地址,在此地址寫(xiě)入數(shù)據(jù);

(2)內(nèi)存服務(wù)器接收數(shù)據(jù),保存數(shù)據(jù)到測(cè)點(diǎn)數(shù)據(jù)塊,步驟如下:

計(jì)算i_cursor=sig_id–min_sig_id;得到測(cè)點(diǎn)在當(dāng)前服務(wù)器的測(cè)點(diǎn)數(shù)據(jù)塊索引位置;

從block_ind_array[i_cursor]得到該測(cè)點(diǎn)數(shù)據(jù)存放數(shù)據(jù)塊首地址block_address,并得到數(shù)據(jù)塊當(dāng)前測(cè)點(diǎn)數(shù)據(jù)存放位置pos,數(shù)據(jù)塊長(zhǎng)度len;

計(jì)算pos=posmodlen;在block_address[pos]存放測(cè)點(diǎn)信號(hào)數(shù)據(jù)記錄;在當(dāng)前位置覆蓋最新的測(cè)點(diǎn)信號(hào)數(shù)據(jù)。

將block_ind_array[i_cursor]當(dāng)前位置pos更新為pos+1modlen。用于指示下一條測(cè)點(diǎn)數(shù)據(jù)存放位置。

在此,內(nèi)存服務(wù)器不斷進(jìn)行數(shù)據(jù)的更新,以等待請(qǐng)求服務(wù)器或客戶(hù)端進(jìn)行數(shù)據(jù)讀取。

由此方式,可以在固定大小的數(shù)據(jù)塊內(nèi)存中,不斷刷新,保存最近一段時(shí)間內(nèi)的測(cè)點(diǎn)信號(hào)數(shù)據(jù)。

第五步,請(qǐng)求服務(wù)器或客戶(hù)端讀取數(shù)據(jù)??蛻?hù)端讀取相應(yīng)數(shù)據(jù),以生成測(cè)點(diǎn)實(shí)時(shí)曲線或者展示實(shí)時(shí)工藝數(shù)據(jù)。其具體步驟如下:

(1)客戶(hù)端發(fā)送請(qǐng)求到數(shù)據(jù)訪問(wèn)調(diào)度器,請(qǐng)求包含sig_name,以及請(qǐng)求數(shù)據(jù)為單條還是數(shù)據(jù)塊。

根據(jù)請(qǐng)求的信號(hào)名稱(chēng)sig_name,從sig_id_array查找到測(cè)點(diǎn)標(biāo)志sig_id;檢查sig_server_list查找對(duì)應(yīng)內(nèi)存服務(wù)器,將請(qǐng)求發(fā)送到對(duì)應(yīng)的內(nèi)存服務(wù)器。

(2)若請(qǐng)求為讀取單條測(cè)點(diǎn)數(shù)據(jù),內(nèi)存服務(wù)器從mono_ind_array[sig_id-min_sig_id]處直接讀取數(shù)據(jù)記錄并放置臨時(shí)緩沖區(qū)。

(3)若請(qǐng)求為信號(hào)實(shí)時(shí)曲線,則內(nèi)存服務(wù)器從block_address=block_ind_array[sig_id–min_sig_id]處直接讀取數(shù)據(jù)塊全部?jī)?nèi)容放置臨時(shí)緩沖區(qū);

(4)在臨時(shí)緩沖區(qū)對(duì)數(shù)據(jù)塊內(nèi)容整理,

步驟如下:

將block_address[0..pos-1]的數(shù)據(jù)與block_address[pos..len-1]數(shù)據(jù)內(nèi)容交換后放到臨時(shí)緩沖區(qū),保證數(shù)據(jù)塊內(nèi)容是按時(shí)間順序排列;

(5)編碼器根據(jù)請(qǐng)求服務(wù)器或者客戶(hù)端要求將臨時(shí)緩沖區(qū)數(shù)據(jù)編碼成xml格式或者json格式,放置輸出隊(duì)列,輸出隊(duì)列采用fifo方式輸出到請(qǐng)求服務(wù)器或者客戶(hù)端。

在工業(yè)現(xiàn)場(chǎng)監(jiān)控系統(tǒng)中,需要能夠?qū)崟r(shí)的展現(xiàn)出現(xiàn)場(chǎng)測(cè)點(diǎn)數(shù)據(jù)關(guān)鍵工藝指標(biāo)或者展示最近一段時(shí)間內(nèi)的實(shí)時(shí)曲線。而為之服務(wù)的工業(yè)數(shù)據(jù)中心需要能夠高速的保存大量的實(shí)時(shí)現(xiàn)場(chǎng)信號(hào)數(shù)據(jù)并能夠快速的被訪問(wèn)者檢索。本發(fā)明采用內(nèi)存服務(wù)器測(cè)點(diǎn)分配表和測(cè)點(diǎn)索引兩級(jí)結(jié)構(gòu)指示不同信號(hào)數(shù)據(jù)訪問(wèn)的不同的內(nèi)存服務(wù)器以及內(nèi)存地址。本發(fā)明采用單條測(cè)點(diǎn)隊(duì)列和數(shù)據(jù)塊隊(duì)列保存信號(hào)數(shù)據(jù),單條測(cè)點(diǎn)隊(duì)列用于存儲(chǔ)最新一次工藝節(jié)點(diǎn)關(guān)鍵指標(biāo)數(shù)據(jù),數(shù)據(jù)塊隊(duì)列保存最近一段時(shí)間內(nèi)的工藝節(jié)點(diǎn)測(cè)點(diǎn)信號(hào)數(shù)據(jù),由于采用了直接覆蓋方式的存儲(chǔ)機(jī)制,因此不保存歷史數(shù)據(jù)。采用如上機(jī)制的訪問(wèn)方式,使訪問(wèn)者直接利用內(nèi)存服務(wù)器測(cè)點(diǎn)分配表和測(cè)點(diǎn)索引獲取數(shù)據(jù),避免了傳統(tǒng)內(nèi)存數(shù)據(jù)的檢索,大大減少了內(nèi)存服務(wù)器的檢索壓力,適合工業(yè)數(shù)據(jù)中心采用分布式內(nèi)存服務(wù)器集中處理大量工業(yè)信號(hào)數(shù)據(jù)的場(chǎng)景。

以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說(shuō)明書(shū)中描述的只是本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明的范圍內(nèi)。本發(fā)明要求的保護(hù)范圍由所附的權(quán)利要求書(shū)及其等同物界定。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1