專利名稱:基于可擴展式腳本語言的計算方法
技術(shù)領(lǐng)域:
數(shù)據(jù)監(jiān)控與采集系統(tǒng)(SCADA)是構(gòu)建眾多供電、配網(wǎng)自動化應(yīng)用系統(tǒng)的基礎(chǔ),作為SCADA系統(tǒng)數(shù)據(jù)處理功能的重要支撐,計算服務(wù)功能可以支持虛擬遙信、開關(guān)動作/變位模擬、數(shù)值計算、統(tǒng)計計算、設(shè)備/子系統(tǒng)間功能聯(lián)動等輔助邏輯功能。隨著計算機軟硬件系統(tǒng)性能的提高,用戶對于SCADA系統(tǒng)數(shù)據(jù)處理能力提出了越來越高的要求,計算服務(wù)的功能及執(zhí)行效率也成為評價整個SCADA系統(tǒng)性能的重要技術(shù)指標(biāo)。
背景技術(shù):
通訊規(guī)約服務(wù)進程通過數(shù)字通信線路所獲得的遠方受控站點、智能設(shè)備上送的實時信息通常都需要進行處理,并經(jīng)過數(shù)值計算映射到真實的物理量值區(qū)間;數(shù)字量、脈沖量數(shù)值本身意義有限,對其進行統(tǒng)計計算可以得到更直觀的量值信息;自動化監(jiān)控系統(tǒng)的工程應(yīng)用總會遇到各種復(fù)雜多變的用戶需求,從而需要不斷地向基本的SCADA系統(tǒng)中增加應(yīng)用邏輯,甚至對既有功能進行更改。所有這些應(yīng)用需求都對SCADA系統(tǒng)除數(shù)據(jù)采集、存儲、 可視化外的廣義“計算”功能提出了越來越高的要求。應(yīng)用于SCADA系統(tǒng)的傳統(tǒng)計算服務(wù)實現(xiàn)對于“計算”的定義主要有以下幾種類型 (1)算術(shù)運算,例如對SCADA系統(tǒng)采集的數(shù)據(jù)執(zhí)行比例映射(變比、乘系數(shù)等)、加和、平均等操作,僅支持對簡單的數(shù)值類數(shù)據(jù)進行處理,而不能支持對用戶定制邏輯的執(zhí)行;(2)布爾邏輯運算,用戶提供一組基于某些變量的條件表達式,計算服務(wù)引擎依據(jù)對其組合得出的布爾運算結(jié)果來選擇目標(biāo)動作,通常是一些條件跳轉(zhuǎn)及虛擬數(shù)據(jù)對象的值置位;(3)函數(shù)式運算,包括逆波蘭式、函數(shù)式(類似Prolog語法)等單行代碼/腳本式計算邏輯定義, 其執(zhí)行能力能夠覆蓋上類中支持的各種布爾邏輯運算,但此類編碼較不直觀,對其自如地描述需要較深的專業(yè)知識,且單行式腳本對于較復(fù)雜的計算、控制邏輯也無能為力。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明提出了一種基于可擴展式腳本語言的計算方法,支持用戶在各條計算服務(wù)中提供多行腳本代碼,以進行各種復(fù)雜的計算、邏輯處理及系統(tǒng)調(diào)用(通過執(zhí)行宿主系統(tǒng)中的應(yīng)用程序);該技術(shù)與ChRDB面向?qū)ο笫綄崟r數(shù)據(jù)庫系統(tǒng)深度集成,支持如下三種計算腳本邏輯觸發(fā)方式(1)定時器觸發(fā)、(2)具體數(shù)據(jù)點變化/寫入觸發(fā)、(3)某類數(shù)據(jù)對象變化/寫入觸發(fā),可以通過組態(tài)生成較復(fù)雜的基于實時數(shù)據(jù)的實時執(zhí)行邏輯,從而在遇到自動化監(jiān)控項目工程實施中多變的用戶需求時,能夠通過組態(tài)完成相應(yīng)工作,在最大程度地減少系統(tǒng)的二次開發(fā)工作量?;诳蓴U展式腳本語言的計算方法的程序?qū)崿F(xiàn)基于申請人先期研發(fā)的高性能面向?qū)ο髮崟r數(shù)據(jù)庫ChRDB。實時數(shù)據(jù)庫是SCADA系統(tǒng)中各子系統(tǒng)、模塊進行數(shù)據(jù)交換的中介,工程項目配置中的數(shù)據(jù)以面向?qū)ο蟮姆绞奖4嬖趦?nèi)存實時數(shù)據(jù)庫中,實時數(shù)據(jù)庫為 SCADA系統(tǒng)中的各功能模塊、子進程提供高速、實時的數(shù)據(jù)操作和訪問支持。本發(fā)明的技術(shù)方案為一種基于可擴展式腳本語言的計算方法,它包括實時數(shù)據(jù)庫,其特征在于計算服務(wù)的執(zhí)行由驅(qū)動層的定時器及數(shù)據(jù)引擎支撐,二者分別負責(zé)定時計算服務(wù)的觸發(fā)執(zhí)行及數(shù)據(jù)驅(qū)動計算服務(wù)的觸發(fā)執(zhí)行;所述數(shù)據(jù)引擎提供了對實時數(shù)據(jù)庫訪問功能的抽象,其作為實時數(shù)據(jù)庫與計算服務(wù)模塊間的中介,負責(zé)即時地把各條用戶計算服務(wù)所關(guān)注的數(shù)據(jù)寫入及變化操作傳入各計算服務(wù)中所定義的對應(yīng)變量,定時器及數(shù)據(jù)變化/寫入驅(qū)動模塊均通過數(shù)據(jù)引擎實現(xiàn)對實時數(shù)據(jù)庫的訪問;基于定時器其數(shù)據(jù)驅(qū)動的計算服務(wù)一經(jīng)觸發(fā),對應(yīng)的由用戶提供的多行邏輯腳本將被送至腳本引擎進行執(zhí)行,其中的執(zhí)行邏輯通過對指定實時數(shù)據(jù)庫數(shù)據(jù)點進行寫入或帶參執(zhí)行系統(tǒng)中的指定應(yīng)用程序來與自動化監(jiān)控系統(tǒng)中的其他相關(guān)模塊進行交互,實現(xiàn)數(shù)據(jù)共享/交換及邏輯聯(lián)動。上述的基于可擴展式腳本語言的計算方法,其進一步特征在于所述數(shù)據(jù)驅(qū)動計算服務(wù)是指具體數(shù)據(jù)點變化/寫入觸發(fā)及指定類型數(shù)據(jù)對象變化/寫入。上述的基于可擴展式腳本語言的計算方法,其進一步特征在于所述計算服務(wù),由工程實施者根據(jù)用戶需求定義/配置的,應(yīng)用于SCADA系統(tǒng)中實現(xiàn)特定計算功能的輔助功能模塊,它包括定時計算服務(wù)和數(shù)據(jù)驅(qū)動計算服務(wù)。所述定時計算服務(wù),由定時器觸發(fā),按指定時間間隔觸發(fā)的計算服務(wù)。其中包含一個或以上的輸入變量,各輸入變量可空置或綁定于實時數(shù)據(jù)庫中的指定數(shù)據(jù)點,并被指派一個掃描時間間隔及觸發(fā)后待執(zhí)行的邏輯腳本。所述數(shù)據(jù)驅(qū)動計算服務(wù),由實時數(shù)據(jù)庫中數(shù)據(jù)寫入/值變化觸發(fā)的計算服務(wù)。其中包含一個或以上的輸入變量,各輸入變量既可綁定于實時數(shù)據(jù)庫中的指定數(shù)據(jù)點也可以綁定至某型數(shù)據(jù)對象的一個指定屬性,輸入變量的觸發(fā)方式須指定為寫入觸發(fā)或變化觸發(fā),并給出觸發(fā)后待執(zhí)行的邏輯腳本。本發(fā)明的有益效果基于可擴展式腳本語言的計算服務(wù)技術(shù)可以廣泛地應(yīng)用于各種電力監(jiān)控SCADA系統(tǒng)中,支持通過配置創(chuàng)建并執(zhí)行各種數(shù)值計算、統(tǒng)計計算、應(yīng)用程序帶參調(diào)用、SCADA子系統(tǒng)/設(shè)備間的功能聯(lián)動等復(fù)雜計算、執(zhí)行邏輯,在功能上實現(xiàn)了對傳統(tǒng) SCADA系統(tǒng)中所采用的狹義的、面向數(shù)值處理的“計算服務(wù)”的極大的改進和擴充。基于可擴展式腳本語言的計算服務(wù)技術(shù)具有配置靈活、執(zhí)行高效、通用性強的特點,通過其所提供的圖形化配置工具創(chuàng)建的計算服務(wù)可以執(zhí)行較復(fù)雜的數(shù)值計算及控制邏輯,而不必進行任何二次開發(fā)編程,從而在最大限度滿足用戶多變系統(tǒng)需求的前提下,盡可能地減少了工程實施中可能帶來的二次開發(fā)工作量;基于計算服務(wù)實現(xiàn)各種設(shè)備、子系統(tǒng)間的功能聯(lián)動也較好地實現(xiàn)了相關(guān)設(shè)備/系統(tǒng)間的解耦,也間接提高了自動化應(yīng)用系統(tǒng)的可靠性。
圖1為本發(fā)明的系統(tǒng)架構(gòu)圖。
具體實施例方式以下結(jié)合附圖和具體實施例,對本發(fā)明作出進一步詳細闡述?;诳蓴U展式腳本語言的計算服務(wù)架構(gòu)如圖1所示,計算服務(wù)的執(zhí)行由驅(qū)動層的定時器及數(shù)據(jù)引擎支撐,二者分別負責(zé)定時計算服務(wù)的觸發(fā)執(zhí)行及數(shù)據(jù)驅(qū)動計算服務(wù)(具體數(shù)據(jù)點變化/寫入觸發(fā)及指定類型數(shù)據(jù)對象變化/寫入)的觸發(fā)執(zhí)行。數(shù)據(jù)引擎提供了對實時數(shù)據(jù)庫訪問功能的抽象,其作為實時數(shù)據(jù)庫與計算服務(wù)模塊間的中介,負責(zé)即時地把各條用戶計算服務(wù)所關(guān)注的數(shù)據(jù)寫入及變化操作傳入各計算服務(wù)中所定義的對應(yīng)變量, 定時器及數(shù)據(jù)變化/寫入驅(qū)動模塊均通過數(shù)據(jù)引擎實現(xiàn)對實時數(shù)據(jù)的訪問;基于定時器其數(shù)據(jù)驅(qū)動的計算服務(wù)一經(jīng)觸發(fā),對應(yīng)的由用戶提供的多行邏輯腳本將被送至腳本引擎進行執(zhí)行,其中的執(zhí)行邏輯可以通過對指定實時數(shù)據(jù)庫數(shù)據(jù)點進行寫入或帶參執(zhí)行系統(tǒng)中的指定應(yīng)用程序來與自動化監(jiān)控系統(tǒng)中的其他相關(guān)模塊(如HMI畫面,報警,其他聯(lián)機/集成子系統(tǒng))進行交互,實現(xiàn)數(shù)據(jù)共享/交換及邏輯聯(lián)動。定義1計算服務(wù),由工程實施者根據(jù)用戶需求定義/配置的,應(yīng)用于SCADA系統(tǒng)中實現(xiàn)特定計算功能的輔助功能模塊。定義中的計算為廣義概念上的計算任務(wù),包括但不限于數(shù)值運算、布爾運算及應(yīng)用邏輯的執(zhí)行?;诳蓴U展式腳本語言的計算服務(wù)支持兩種類型的計算服務(wù)(1)定時計算服務(wù),由定時器觸發(fā),按一定時間間隔執(zhí)行用戶指定的應(yīng)用邏輯;(2)數(shù)據(jù)驅(qū)動計算服務(wù),與 ChRDB實時數(shù)據(jù)庫深度集成,依據(jù)特定類型數(shù)據(jù)對象的值寫入/變化或指定數(shù)據(jù)點的值寫入/變化觸發(fā),并執(zhí)行用戶指定的計算任務(wù)。定義2定時計算服務(wù),按指定時間間隔觸發(fā)的計算服務(wù)。其中包含一個或以上的輸入變量,各輸入變量可空置或綁定于實時數(shù)據(jù)庫中的指定數(shù)據(jù)點,并被指派一個掃描時間間隔(Timeout)及觸發(fā)后待執(zhí)行的邏輯腳本(Script);可以為定時計算服務(wù)指定一個或多個其他變量,分別與實時數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)點綁定,由各輸入變量邏輯腳本進行讀寫, 從而實現(xiàn)通過實時數(shù)據(jù)庫呈現(xiàn)計算服務(wù)的運行結(jié)果。每間隔相應(yīng)的時間,相應(yīng)的輸入變量的值將與實時庫中的對應(yīng)數(shù)據(jù)點同步(如已綁定),計算服務(wù)引擎將執(zhí)行其包含的邏輯腳本,相應(yīng)腳本在完成數(shù)值計算或其他路由及處理后,可以通過執(zhí)行腳本函數(shù)execO、ShellO實現(xiàn)對宿主系統(tǒng)中指定應(yīng)用程序的帶參調(diào)用,也可以通過對其所包含的指定其他變量進行寫入來通過實時數(shù)據(jù)庫輸出運行結(jié)果,以便其他以實時數(shù)據(jù)為中心的應(yīng)用程序所讀取,其執(zhí)行的如算法1所示。算法1定時計算服務(wù)的執(zhí)行 Loop
ν—輸入變量集合
其他變量集合 For each Vi in V If Vi timeouts then Sync Vi with RDB For each Oi in 0 Sync Oi with RDB End
Execute Vi. Script End
End End0定義3數(shù)據(jù)驅(qū)動計算服務(wù),由實時數(shù)據(jù)庫中數(shù)據(jù)寫入/值變化觸發(fā)的計算服務(wù)。其中包含一個或以上的輸入變量,各輸入變量既可綁定于實時數(shù)據(jù)庫中的指定數(shù)據(jù)點也可以綁定至某型數(shù)據(jù)對象的一個指定屬性,輸入變量的觸發(fā)方式須指定為寫入觸發(fā)或變化觸發(fā),并給出觸發(fā)后待執(zhí)行的邏輯腳本(Script);可以為數(shù)據(jù)驅(qū)動計算服務(wù)指定一個或多個其他變量,分別與實時數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)點綁定,由各輸入變量邏輯腳本進行讀寫,從而實現(xiàn)通過實時數(shù)據(jù)庫呈現(xiàn)計算服務(wù)的運行結(jié)果。算法2數(shù)據(jù)觸發(fā)計算服務(wù)的執(zhí)行 V —輸入變量集合
其他變量集合 Wait for triggering signals For each Oi in 0 Sync Oi with RDB End
Vi Input variable triggered
Sync Vi with RDB Execute Vi. Script End0邏輯腳本定義及功能擴展
計算服務(wù)腳本引擎采用的腳本語言語法與Lua腳本語言相兼容,下面是對其的一份簡要描述。變量
以英文字母或者下劃線開頭的字母、下劃線、數(shù)字序列,例如a,abc, value, totalSum, xl, yl, x2, y2 等等。常量
數(shù)值常量支持整數(shù)、浮點數(shù)、科學(xué)計數(shù)法,例如3. 14,1000, 65535,3. 14e3 ... 字符串常量用雙引號括住的一組字符,例如,Hello World!”,“中文”,“true,,…。數(shù)學(xué)運算
二元運算符+_*/"(加減乘除冪) 一元運算符_ (負值) 注意這些運算符的操作數(shù)都是實數(shù)。關(guān)系運算符
<(小于)>(大于)<=(小于等于)>=(大于等于)==(等于) =(不等于)。邏輯運算符
and (邏輯與)or (邏輯或)not (邏輯非)。賦值語句
形式為變量名=值,例如a=10; pi=3. 14; name="wsi同行的多個賦值語句之間可以用分號(;)隔開,但考慮到腳本代碼的可讀性和可維護性,建議一行只書寫一條賦值語句。if分支語句
if語句有三種形式1)if conditions then// conditions為ー組聯(lián)立的關(guān)系運算或邏輯運算
表達
then-part//式,若其值為true則執(zhí)行then-part部分的語句
end
2)if conditions then// conditions 為 true 則諷行 tnen-part 部分的 語句;
then-part//否則執(zhí)行else-part部分的語句
else
else-part end
3)if conditionsl then// conditionsl 為 true 貝1J執(zhí)行 then-part 部 分的語句;
then-part//否則接著判斷conditions〗,如果其為true則執(zhí)
elseif conditions2 then//行elseif-partl部分的語句,如此繼續(xù)若所有條件 elseif-partl//都不滿足則執(zhí)行else-part部分的語句
··—> 多個 elseif else
else-part end。字符串連接操作
strl. . str2 表示將字符串變量strl與str2相連接并生成ー個新字符串。例如賦值 語句a= “Thank ”.. “you ! ”執(zhí)行完后,字符串變量a的值將為“Thank you!”。值轉(zhuǎn)換函數(shù)
tonumber(str)將字符串變量轉(zhuǎn)換成相應(yīng)的數(shù)值。例如賦值語句 pi=tonumber( “3. 14”)執(zhí)行完后,數(shù)值變量pi的值將為浮點數(shù)3. 14。(num)將數(shù)值變量轉(zhuǎn)換成相應(yīng)的字符串。例如賦值語句str= “pi=” .. tostring(3. 14)執(zhí)行完后,字符串變量str的值將為“pi=3. 14”?;诳蓴U展式腳本語言的計算服務(wù)提供眾多擴展函數(shù),目前共支持34個腳本函 敘(ioads/ saves、丄oadn/ saven、gets/ sets、getn/ setru writevp、write、read、getobid、 getaid、getdatapoint、exec、lock/unlock、machineid、allow、getpasswd、encrypt、who、 matchchoice、precision、invoke、allowa、question、sndplay、shell、sleep、load/save、 get/set),用于計算服務(wù)觸發(fā)腳本邏輯的編寫并執(zhí)行實時數(shù)據(jù)讀/寫/鎖定、用戶帳戶認 證、宿主機器信息獲取、實時數(shù)據(jù)庫應(yīng)用程序執(zhí)行/宿主系統(tǒng)應(yīng)用程序執(zhí)行等功能。腳本引 擎的開放性設(shè)計使得依據(jù)新的用戶需求向其中添加新的腳本函數(shù)也十分地方便,從而實現(xiàn) 了腳本語言的可擴展。典型應(yīng)用作為申請人DSC-9000W自動化監(jiān)控系統(tǒng)的重要功能組件,基于可擴展 式腳本語言的計算服務(wù)技術(shù)已經(jīng)被廣泛地應(yīng)用于各種電カ監(jiān)控SCADA系統(tǒng)中,以之為基礎(chǔ) 實現(xiàn)的用戶培訓(xùn)系統(tǒng)/模塊、實時庫觸發(fā)的系統(tǒng)應(yīng)用程序執(zhí)行、越限統(tǒng)計觸發(fā)報警、虛遙信 置位等邏輯功能已經(jīng)成功應(yīng)用于南京地鐵IMS OA/Web發(fā)布系統(tǒng)、達州-萬州電氣化鐵路電調(diào)系統(tǒng)、伊朗德黑蘭地鐵4號線PSCADA系統(tǒng)等國內(nèi)外系統(tǒng)中,并獲得用戶和工程人員的好評。 雖然本發(fā)明已以較佳實施例公開如上,但具體實施例和附圖并不是用來限定本發(fā)明,任何熟習(xí)此技藝者,在不脫離本發(fā)明之精神和范圍內(nèi),自當(dāng)可作各種變化或潤飾,但同樣在本發(fā)明的保護范圍之內(nèi)。因此本發(fā)明的保護范圍應(yīng)當(dāng)以本申請的權(quán)利要求保護范圍所界定的為準(zhǔn)。
權(quán)利要求
1.一種基于可擴展式腳本語言的計算方法,它包括實時數(shù)據(jù)庫,其特征在于計算服務(wù)的執(zhí)行由驅(qū)動層的定時器及數(shù)據(jù)引擎支撐,二者分別負責(zé)定時計算服務(wù)的觸發(fā)執(zhí)行及數(shù)據(jù)驅(qū)動計算服務(wù)的觸發(fā)執(zhí)行;所述數(shù)據(jù)引擎提供了對實時數(shù)據(jù)庫訪問功能的抽象,其作為實時數(shù)據(jù)庫與計算服務(wù)模塊間的中介,負責(zé)即時地把各條用戶計算服務(wù)所關(guān)注的數(shù)據(jù)寫入及變化操作傳入各計算服務(wù)中所定義的對應(yīng)變量,定時器及數(shù)據(jù)變化/寫入驅(qū)動模塊均通過數(shù)據(jù)引擎實現(xiàn)對實時數(shù)據(jù)庫的訪問;基于定時器其數(shù)據(jù)驅(qū)動的計算服務(wù)一經(jīng)觸發(fā),對應(yīng)的由用戶提供的多行邏輯腳本將被送至腳本引擎進行執(zhí)行,其中的執(zhí)行邏輯通過對指定實時數(shù)據(jù)庫數(shù)據(jù)點進行寫入或帶參執(zhí)行系統(tǒng)中的指定應(yīng)用程序來與自動化監(jiān)控系統(tǒng)中的其他相關(guān)模塊進行交互,實現(xiàn)數(shù)據(jù)共享/交換及邏輯聯(lián)動。
2.根據(jù)權(quán)利要求1所述的基于可擴展式腳本語言的計算方法,其特征在于所述數(shù)據(jù)驅(qū)動計算服務(wù)是指具體數(shù)據(jù)點變化/寫入觸發(fā)及指定類型數(shù)據(jù)對象變化/寫入。
3.根據(jù)權(quán)利要求1所述的基于可擴展式腳本語言的計算方法,其特征在于所述計算服務(wù),由工程實施者根據(jù)用戶需求定義/配置的,應(yīng)用于SCADA系統(tǒng)中實現(xiàn)特定計算功能的輔助功能模塊,它包括定時計算服務(wù)和數(shù)據(jù)驅(qū)動計算服務(wù)。
4.根據(jù)權(quán)利要求3所述的基于可擴展式腳本語言的計算方法,其特征在于所述定時計算服務(wù),由定時器觸發(fā),按指定時間間隔觸發(fā)的計算服務(wù);其中包含一個或以上的輸入變量,各輸入變量可空置或綁定于實時數(shù)據(jù)庫中的指定數(shù)據(jù)點,并被指派一個掃描時間間隔及觸發(fā)后待執(zhí)行的邏輯腳本。
5.根據(jù)權(quán)利要求3所述的基于可擴展式腳本語言的計算方法,其特征在于所述數(shù)據(jù)驅(qū)動計算服務(wù),由實時數(shù)據(jù)庫中數(shù)據(jù)寫入/值變化觸發(fā)的計算服務(wù);其中包含一個或以上的輸入變量,各輸入變量既可綁定于實時數(shù)據(jù)庫中的指定數(shù)據(jù)點也可以綁定至某型數(shù)據(jù)對象的一個指定屬性,輸入變量的觸發(fā)方式須指定為寫入觸發(fā)或變化觸發(fā),并給出觸發(fā)后待執(zhí)行的邏輯腳本。
全文摘要
本發(fā)明提出了一種基于可擴展式腳本語言的計算方法,支持用戶在各條計算服務(wù)中提供多行腳本代碼,以進行各種復(fù)雜的計算、邏輯處理及系統(tǒng)調(diào)用(通過執(zhí)行宿主系統(tǒng)中的應(yīng)用程序);該技術(shù)與ChRDB面向?qū)ο笫綄崟r數(shù)據(jù)庫系統(tǒng)深度集成,支持如下三種計算腳本邏輯觸發(fā)方式(1)定時器觸發(fā)、(2)具體數(shù)據(jù)點變化/寫入觸發(fā)、(3)某類數(shù)據(jù)對象變化/寫入觸發(fā),可以通過組態(tài)生成較復(fù)雜的基于實時數(shù)據(jù)的實時執(zhí)行邏輯,在遇到自動化監(jiān)控項目工程實施中多變的用戶需求時,能夠通過組態(tài)完成相應(yīng)工作,從而最大程度地減少系統(tǒng)的二次開發(fā)工作量。
文檔編號G06F9/44GK102346671SQ20111029534
公開日2012年2月8日 申請日期2011年9月29日 優(yōu)先權(quán)日2011年9月29日
發(fā)明者包德梅, 戴宏斌, 金舒 申請人:南京國電南自軌道交通工程有限公司