利用表達(dá)式解析實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理的方法
【專(zhuān)利摘要】本發(fā)明提供了一種利用表達(dá)式解析實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理的方法,步驟:第一步,用戶進(jìn)行表達(dá)式配置:將表達(dá)式中所包含的操作數(shù)中屬于監(jiān)測(cè)單元名稱(chēng)的操作數(shù),用兩個(gè)單引號(hào)包圍起來(lái),表達(dá)式中包含的操作符必須屬于預(yù)先定義的操作符,表達(dá)式中包含的立即數(shù)在預(yù)先定義的數(shù)值范圍之內(nèi);第二步,驗(yàn)證表達(dá)式的合法性;第三步,進(jìn)行表達(dá)式解析并進(jìn)行計(jì)算,將計(jì)算的結(jié)果保存起來(lái)供工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理使用。本發(fā)明通過(guò)解決表達(dá)式解析過(guò)程中操作數(shù)的識(shí)別問(wèn)題,能夠更好的進(jìn)行表達(dá)式的合法性檢驗(yàn),且在進(jìn)行表達(dá)式計(jì)算時(shí)能夠快速識(shí)別堆棧元素的類(lèi)型,便于快速計(jì)算,提高數(shù)據(jù)統(tǒng)計(jì)系統(tǒng)的運(yùn)行性能,更快速的實(shí)現(xiàn)現(xiàn)場(chǎng)底層設(shè)備控制回饋。
【專(zhuān)利說(shuō)明】利用表達(dá)式解析實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,具體地,涉及一種利用表達(dá)式解析實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理的方法。
【背景技術(shù)】
[0002]工業(yè)現(xiàn)場(chǎng)的底層設(shè)備監(jiān)測(cè)管理中,統(tǒng)計(jì)系統(tǒng)是實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)統(tǒng)計(jì)分析子系統(tǒng)的核心子模塊。通常情況下,統(tǒng)計(jì)系統(tǒng)從底層設(shè)備采集所需的數(shù)據(jù),然后根據(jù)用戶(一般是現(xiàn)場(chǎng)底層設(shè)備管理人員)配置的表達(dá)式進(jìn)行解析并進(jìn)行計(jì)算,把計(jì)算結(jié)果存儲(chǔ)起來(lái)做進(jìn)一步的統(tǒng)計(jì)分析,最終的統(tǒng)計(jì)分析結(jié)果可以用來(lái)輔助現(xiàn)場(chǎng)設(shè)備管理人員實(shí)施、或者直接對(duì)底層設(shè)備進(jìn)行相應(yīng)的控制操作。從這一過(guò)程可見(jiàn),對(duì)用戶配置的表達(dá)式的“解析”是關(guān)鍵一步,而實(shí)現(xiàn)表達(dá)式解析的算法和實(shí)現(xiàn)時(shí)使用的數(shù)據(jù)結(jié)構(gòu)則制約著統(tǒng)計(jì)系統(tǒng)的運(yùn)行性能。
[0003] 現(xiàn)有表達(dá)式解析的方法,主要包括以下步驟:
[0004]第一步:檢驗(yàn)用戶配置的表達(dá)式的合法性
[0005]通常情況下,用戶配置的表達(dá)式由“操作符”和“操作數(shù)”組成。對(duì)于統(tǒng)計(jì)系統(tǒng)解析的表達(dá)式而言,操作數(shù)可以是監(jiān)測(cè)單元(所謂監(jiān)測(cè)單元,即指一個(gè)底層設(shè)備采集點(diǎn),例如:管道A的流量)的名稱(chēng)(例如:PIPEA-FL0W-A),也可以是用于輔助計(jì)算的立即數(shù)(例如:10)。在表達(dá)式合法性檢驗(yàn)的過(guò)程中,首先要從待檢驗(yàn)表達(dá)式中識(shí)別出操作符和操作數(shù),然后再檢驗(yàn)該表達(dá)式是否符合規(guī)定。
[0006]在現(xiàn)有技術(shù)中,表達(dá)式中的操作符均是預(yù)先定義的運(yùn)算符,這些操作符很容易被統(tǒng)計(jì)系統(tǒng)識(shí)別,而表達(dá)式中包含的操作數(shù)則是多種多樣的,不容易被識(shí)別。因此,在表達(dá)式的解析過(guò)程中,統(tǒng)計(jì)系統(tǒng)通常將表達(dá)式中的操作符當(dāng)作操作數(shù)之間的分隔符來(lái)識(shí)別表達(dá)式所包含的操作數(shù)。
[0007]例如,用戶配置的表達(dá)式是(Tagl+Tag2)*Tag3,其中包括的操作符有:+,*,(,),包含的操作數(shù)(也就是三個(gè)監(jiān)測(cè)單元的名稱(chēng))有:Tagl,Tag2,Tag3。由于這些操作符被預(yù)先定義,便于識(shí)別,所以將這些操作符作為操作數(shù)Tagl,Tag2,Tag3的分隔符,就可以從表達(dá)式中識(shí)別出操作符和操作數(shù)。
[0008]弟二步:將表達(dá)式從中綴表達(dá)式轉(zhuǎn)換成后綴表達(dá)式
[0009]通常情況下,在表達(dá)式的計(jì)算過(guò)程中均是使用堆棧來(lái)存儲(chǔ)所述操作數(shù)和操作符的,因此,為了方便堆棧的存儲(chǔ)、加快表達(dá)式的計(jì)算速度,需要將用戶配置的中綴表達(dá)式轉(zhuǎn)換成后綴表達(dá)式。中綴表達(dá)式到后綴表達(dá)式的轉(zhuǎn)換方法與計(jì)算機(jī)編譯原理,計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu)等經(jīng)典教科書(shū)中描述的相同,在這里就不再詳細(xì)描述了。
[0010]例如,將上述表達(dá)式(Tagl+Tag2)*Tag3轉(zhuǎn)成后綴表達(dá)式是TaglTag2+Tag3*,在經(jīng)過(guò)中綴表達(dá)式到后綴表達(dá)式的轉(zhuǎn)換之后,統(tǒng)計(jì)系統(tǒng)會(huì)將后綴表達(dá)式按照轉(zhuǎn)換后的順序存放在堆棧中,從棧頂?shù)綏5滓来问?Tagl, Tag2, +, Tag3, *。如下表所示:
[0011]
【權(quán)利要求】
1.一種利用表達(dá)式解析實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理的方法,其特征在于,包括如下步驟: 第一步,用戶進(jìn)行表達(dá)式配置:將表達(dá)式中所包含的操作數(shù)中屬于監(jiān)測(cè)單元名稱(chēng)的那些操作數(shù),用兩個(gè)單引號(hào)包圍起來(lái); 第二步,驗(yàn)證表達(dá)式的合法性: A,根據(jù)預(yù)定義的操作符即作為操作數(shù)之間的分隔符,以及單引號(hào)包圍的監(jiān)測(cè)單元名稱(chēng)格式約定即在兩個(gè)單引號(hào)包圍內(nèi)的操作符不作為操作符處理,識(shí)別出表達(dá)式中包含的監(jiān)測(cè)單元名稱(chēng),操作符和立即數(shù),得到表達(dá)式的中綴形式;在這個(gè)處理過(guò)程中,對(duì)于從表達(dá)式中識(shí)別到的監(jiān)測(cè)單元名稱(chēng),根據(jù)已有的監(jiān)測(cè)單元名稱(chēng)列表判斷監(jiān)測(cè)單元名稱(chēng)是否存在,當(dāng)監(jiān)測(cè)單元名稱(chēng)不存在時(shí),判定表達(dá)式配置非法;對(duì)于從表達(dá)式中識(shí)別出的立即數(shù),如果不屬于預(yù)定義的數(shù)值范圍,則判定表達(dá)式非法;發(fā)生其他無(wú)法完成上述處理得到中綴表達(dá)式的情況時(shí),則判定表達(dá)式非法; B,將表達(dá)式從中綴形式轉(zhuǎn)換成后綴形式,轉(zhuǎn)換過(guò)程中如果發(fā)生錯(cuò)誤,則判定表達(dá)式非法; C,對(duì)于已經(jīng)轉(zhuǎn)換成后綴形式的表達(dá)式,將表達(dá)式中所有的監(jiān)測(cè)單元名稱(chēng)分別賦予簡(jiǎn)單的數(shù)值1,然后進(jìn)行表達(dá)式解析,如果在計(jì)算過(guò)程中發(fā)現(xiàn)有的操作符無(wú)法完成計(jì)算,或者計(jì)算結(jié)束后發(fā)現(xiàn)用于存儲(chǔ)計(jì)算結(jié)果的數(shù)組的大小不等于1,則判定配置的表達(dá)式是非法的; 第三步.進(jìn)行表達(dá)式解析并進(jìn)行計(jì)算: A,將已經(jīng)經(jīng)過(guò)合法性檢驗(yàn)的表達(dá)式從中綴形式轉(zhuǎn)換成后綴形式; 后綴表達(dá)式堆棧中的每個(gè)元素都是一個(gè)數(shù)據(jù)結(jié)構(gòu)體,該數(shù)據(jù)結(jié)構(gòu)體包括兩個(gè)字段的數(shù)據(jù):第一個(gè)字段是類(lèi)型Type,第二個(gè)字段是數(shù)據(jù)Value,其中第一個(gè)字段用來(lái)表示第二個(gè)字段所存儲(chǔ)的數(shù)據(jù)的類(lèi)型;在統(tǒng)計(jì)系統(tǒng)中,根據(jù)表達(dá)式的組成分成三種類(lèi)型:0_操作符;1-操作數(shù)即立即數(shù);2_操作數(shù)即監(jiān)測(cè)單元名稱(chēng);第二個(gè)字段用來(lái)存儲(chǔ)符合第一個(gè)字段值所代表的類(lèi)型的值:對(duì)于O類(lèi)型,存儲(chǔ)的就是實(shí)際的操作符;對(duì)于I類(lèi)型,存儲(chǔ)的就是實(shí)際的數(shù)值;對(duì)于2類(lèi)型,存儲(chǔ)的就是監(jiān)測(cè)單元的名次; B,使用監(jiān)測(cè)到的數(shù)據(jù)進(jìn)行表達(dá)式計(jì)算 在進(jìn)行計(jì)算時(shí),依次取出堆棧中的一個(gè)元素,根據(jù)元素的第一個(gè)字段來(lái)識(shí)別元素的類(lèi)型,使用元素的第二個(gè)字段來(lái)進(jìn)行計(jì)算,當(dāng)元素類(lèi)型是監(jiān)測(cè)單元名稱(chēng)時(shí),將之替換成從底層設(shè)備采集讀取到的對(duì)應(yīng)監(jiān)測(cè)單元的實(shí)時(shí)數(shù)據(jù)值,完成計(jì)算后,將計(jì)算的結(jié)果保存起來(lái)供工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理使用。
2.根據(jù)權(quán)利要求1所述的利用表達(dá)式解析實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理的方法,其特征在于,第一步中,所述表達(dá)式中包含的操作符必須屬于預(yù)先定義的操作符,表達(dá)式中包含的立即數(shù)必須在預(yù)先定義的數(shù)值范圍之內(nèi)。
3.根據(jù)權(quán)利要求1所述的利用表達(dá)式解析實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)底層設(shè)備監(jiān)測(cè)管理的方法,其特征在于,第三步中,在統(tǒng)計(jì)系統(tǒng)運(yùn)行時(shí),對(duì)于需要重復(fù)計(jì)算的表達(dá)式,統(tǒng)計(jì)系統(tǒng)會(huì)在第一次計(jì)算之前完成轉(zhuǎn)換后,將轉(zhuǎn)換結(jié)果即表達(dá)式的后綴形式存儲(chǔ)起來(lái)。
【文檔編號(hào)】G05B19/418GK103914027SQ201310005335
【公開(kāi)日】2014年7月9日 申請(qǐng)日期:2013年1月7日 優(yōu)先權(quán)日:2013年1月7日
【發(fā)明者】謝京雷, 孔曉陽(yáng), 王劍, 沈春鋒, 代真虎 申請(qǐng)人:上海寶信軟件股份有限公司