999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

類C腳本架構設計及在電力系統中的應用

2017-03-29 05:00:55陳宏君
計算機技術與發展 2017年3期
關鍵詞:定義功能

陳宏君,熊 蕙

(南京南瑞繼保電氣有限公司,江蘇 南京 211102)

類C腳本架構設計及在電力系統中的應用

陳宏君,熊 蕙

(南京南瑞繼保電氣有限公司,江蘇 南京 211102)

不同國家和地區的用戶在電力系統裝置功能和配置上有一定的差別,要求基于工具軟件實現裝置的靈活配置需求。研發人員在采用模塊化、圖形化元件搭建裝置功能過程中,也需要有手段減輕人機接口配置工作量。為此,提出類C腳本的解決方案,設計了適用于電力系統裝置配置建模的API接口函數,支持設置變量屬性、信號連線、定值分組、元件投退、IEC61850建模等功能。開發了腳本解析器,通過構建基于表驅動的詞法提取、基于命令模式的腳本執行、基于遞歸下降法的表達式計算、基于多級Hash查找等關鍵算法,實現了腳本快速解析執行,6萬行腳本解析耗時小于3 s。基于該腳本架構,裝置研發人員可定義模塊化元件腳本,實現多個元件實例配置的自動化復用;可定義全局腳本,根據用戶選項,觸發條件執行語句,實現靈活的裝置選型配置。實踐表明,類C腳本顯著提高了電力系統保護測控裝置的研發效率和產品的適用范圍。

類C腳本;元件腳本;全局腳本;裝置配置

0 引 言

電力系統控制保護產品面向平臺化、智能化的方向發展,要求設計和開發通用硬件、軟件平臺,以提高裝置研發的可靠性和競爭力[1-5]。在面向國內外的工程實施中,不同的用戶往往有不同的需求。國際市場用戶要求支持裝置選型、系統配置、功能投退等可配置功能,要求可選擇裝置軟件的版本、應用場景,例如選擇是分段單CT、分段雙CT或母聯雙CT等場景;要求可配置間隔數目、母線電壓輸入使能、9-2組網模式等。如果每個工程都進行定制化開發,開發周期長,維護成本高。需要提供一種平臺化的產品適應性開發方法,滿足用戶二次配置需求。可視化編程配置逐漸成為主流研發模式,可基于模塊化元件多次實例實現保護測控功能的復用[6]。在完成裝置功能的可視化編程配置后,還需要進行裝置人機HMI接口的配置,例如配置告警變位事件、配置模擬量上送分組、配置IEC61850模型等。這些工作通常是裝置研發集成人員手工操作,也需要提供方法,在制作模塊化符號元件時可以進行元件相關的HMI設置,實現HMI配置的復用。

腳本是依據一定的格式編寫的文本,由程序解釋執行,具有易于掌握、靈活擴展等優點[7-8]。文獻[7]定義了嵌入式Web服務器腳本解析的主要接口,設計了腳本引擎的調用方法。文獻[8]提出一種自定義腳本的實現方法,設計了用于描述界面布局和參數格式的腳本語句,實現系統界面的靈活配置。文獻[9]提出一種基于模型的自動判斷方法,利用腳本驅動判斷模型執行對測試數據的判斷過程,提高判讀效率和準確度。文獻[10]研究了語義可配置的模型轉換技術,利用基于OCL的腳本語言(TSS)來描述轉換語言的語義。

為提高模塊化配置效率和實現面向用戶的選型配置功能,文中設計了類C腳本,支持在模塊化元件研發中編寫元件腳本、裝置集成研發過程中編寫全局腳本。類C腳本支持if-else等控制語句,支持四則運算、標準C庫函數、自定義API函數。

1 類C腳本設計

1.1 腳本需求分析

采用可擴展的腳本系統,源自如下關鍵需求:

(1)實現配置過程的自動化和多個元件實例配置的重用;提高模塊集成效率。例如支持將信號添加到裝置菜單分組中,將定值添加到定值分組中,把變量填寫到IEC61850[11-12]邏輯節點對應的數據屬性中。

(2)根據全局配置選項,條件使能執行相關功能,自動修改對應設置,實現1個工程支持多場景模式開發維護。

(3)一些特殊需求通過專屬腳本實現,減少對工具界面編輯的二次開發及對其他應用的影響。

1.2 腳本函數設計

腳本設計要求簡單,易于研發人員掌握,支持靈活組合,適用于電力系統保護測控裝置的配置場景和滿足用戶配置需求。腳本由一系列經過精心設計的API函數和控制語句組成。按照使用范圍,可分為全局腳本和元件腳本。全局腳本是裝置集成研發人員在裝置選型和界面定義的控制文本段,是在腳本解析時優先執行的函數文本。元件腳本是模塊研發人員在元件圖形庫制作階段定義的配置文本段。腳本函數定義的通用形式如下:

(1)返回值類型 函數名(形參1,形參2,形參…);

(2)返回值類型 函數名(條件執行表達式,形參1,形參2,形參…)。

腳本中支持if、if-elseif-else、if-else等條件控制段,例如:

if(表達式){

腳本函數段1…

}

else if(表達式){

腳本函數2…

}

else{

腳本函數3…

}

對腳本功能按照大類進行歸類精簡,規范統一函數命名,通過傳入不同形參細分子選項。通過對電力系統裝置開發配置場景進行規劃,共定義了50余個腳本API接口。按照功能可分為:宏定義、信號拉線、信號描述設置、信號屬性設置、引用表操作、定值分組和操作、頁面和元件使能操作、IEC61850通信中CID(裝置能力描述)建模、設置插件型號、修改元件執行順序等。表1給出了典型常用的腳本函數和功能定義。

表1 腳本函數定義

以信號描述設置為例,腳本設計如下:

(1)功能設計:設置變量和定值中文、英文描述。

(2)接口定義:bool SetDesc(char* pvar, char*desctype, char* pdesc)。

(3)形參說明:pvar變量名;desctype:描述類型;pdesc:描述值。

(4)使用示例:SetDesc(IA, cn, "@B01.Bus1@母差電流A相")。

2 腳本解析設計

腳本函數是面向應用設計的接口服務,解析執行應用定義的腳本段。腳本的處理可分解釋型執行、編譯型執行。解釋型執行如MediniQVT,通過編碼的方式實現轉換語言的執行語義[13],編譯型執行工具如ATL,將腳本編譯成字節碼,然后在虛擬機上執行[14]。文中采用解釋執行的策略,腳本執行的流程包括詞法分析、if語句分支執行、根據腳本類型調用解析函數。解析單個函數時進行表達式計算、形參處理、調用裝置配置處理軟件開放的服務接口,例如變量查找、屬性設置等接口。腳本解析可劃分為詞法提取模塊、腳本執行模塊、表達式計算模塊。

2.1 詞法提取模塊

詞法提取模塊,用于讀取腳本段,并進行標記分類和管理,其關鍵實現點是基于表驅動的字符串查找表和前向探測單詞匹配技術。詞法提取模塊建立ASCII字符查找表,可快速返回每個字符對應的類型。定義單個字符類型如下:

enum CharacterType{

BLANK=01,//空白

NEWLINE=02, //新行

LETTER=04,//字母

DIGIT=010, //數字

HEX=020,//HEX

OTHER=040, //其他

};

預先對ASCII字符編碼進行分類,構建字符的ASCII碼對應字符類型查找表:

static unsigned char map[256]={

0, //000 nul

BLANK, //011 ht

NEWLINE, //012 nl

BLANK, //040 sp

DIGIT, //060 0

LETTER|HEX, //101 A

.…

LETTER, //132 Z

OTHER, //176 ~

};

則通過map[unicode]可快速返回該字符對應的類型。通過對各個字符和后續字符的類型探測組合判斷,可提取出各個單詞。單詞CToken、詞法掃描類CLex的主要接口和屬性定義如下:

//單詞標記類

class EXPR_DECLSPEC CToken{

public:

CToken();

CToken(const Qstring& s,int mtp=0,intstp=0);

virtual ~CToken();

public:

int m_maintp; //token主類型

int m_subtp; //子類型

QString m_str; //名字、值

};

//詞法掃描類

class EXPR_DECLSPEC CLex {

public:

CLex(const Qstring& text);

virtual ~ULex();

public:

int count(){return m_tklist.count();}

CToken* at(int i){return m_tklist.at(i);}

voidlexParse(Qstring& text,int len);

protected:

QListm_tklist;

int m_pos;

int m_len;

QString m_text;

}

定義每個單詞Token的主類型定義,如KEYWORD(關鍵字)、IDENTIFIER(標識符)、CONSTANT(常量)、STRING(字符串)、OPERATROR(運算符)、PUNCTUATOR(分隔符)、PREPROCESSOR(預處理)。每種主類型還細分子類型。以運算符為例,還細分如加、減、乘、除等各種子類型,例如COMMA(",")、COLON(":")、PLUS("+")、MINUS("-")、MULT("*")、DIV("/")等。詞法掃描的主算法見圖1。

圖1 詞法掃描主算法

在主算法中,根據當前字符的類型,如果是[a-z]、[A-Z]、‘_’,則是變量命名或關鍵字的首字母,進入parseIdentifier單詞標記提取函數,如果是數字、運算符、常量、預編譯字符,則進入相應的提取子函數。其中單詞提取是重要的步驟,其算法流程如圖2所示。

圖2 單詞提取主算法

對于a開頭的字符,需往后探測4步,判斷是否為auto關鍵字;對于b開頭的字符,需往后探測5步,判斷是否為break關鍵字,依次類推,探測case、char、const、default、double等關鍵字,如果不是關鍵字或首字符例如h、j、A等,則跳轉到變量命名id處理,提取為變量名。提取出的CToken實例存放到單詞鏈表,供后續的腳本執行模塊使用。

2.2 腳本執行模塊

腳本執行模塊通過分析單詞鏈表,提取if控制語句段和各個函數段。根據預先定義的腳本函數名提取出該函數包括的單詞子鏈表。當掃描到if關鍵字時,根據{、}的偶對匹配,提取if控制語句包含的腳本函數,某分支條件成立時,執行該分支內的腳本序列。之后進行類型劃分,將腳本放到不同的優先級隊列,在保護測控裝置驅動包處理程序的不同階段,插入執行對應優先級的腳本函數。不同優先級腳本執行時序如圖3所示,共分8個隊列,優先執行插件型號設置、元件和頁面投退的腳本函數。這是由于部分插槽是多選型號,可根據實際需求通過SetBoardType腳本設置當前投入的插件型號,而部分頁面的有效性和插件型號關聯,例如某頁面的功能是否執行的表達式為“B08_BOARD_TYPE==NR1501”,則需根據B08的當前型號進行替換和使能表達式的計算,通過執行如Enable、Disable(B02, AdcSample)的腳本實現元件、頁面投退,可刷新變量庫中變量的狀態,被退出的信號不輸出到最終的產物文件中。

圖3 腳本執行過程

2.3 表達式計算模塊

If語句、部分腳本函數都有表達式,表達式支持算術四則運算、邏輯運算、C庫函數、系統軟件平臺定義的接口函數,表達式中可包括宏、定值。當條件為1時執行該分支或函數,否則不執行。例如處理IEC61850的數據集時,需判斷信號的顯示屬性是否對IEC61850進程可見,此時需計算信號的顯示屬性表達式。表達式計算流程如圖4所示。

在圖4中,為避免重復計算,先從緩存hash表中查找表達式計算值,如果找到則返回,首次計算后,將表達式和值存入hash表中。對于擴展格式的表達式,需進行預處理工作。例如對于包括:的形如“B02.I1n:B02.I2n”的表達式,根據當前定值是取1次側的值或取2次側的值,提取其中1側進行運算。對于層次變量名,例如B02.I1n,用該定值的設置值進行替換。最后根據C語言的優先級采用遞歸下降的算法計算得出值。

圖4 表達式計算流程

3 應用實例

3.1 元件腳本應用

以過流保護OverCurrent元件為例,過流元件實例化成OC1、OC2等多個實例后,每個實例的變量都有相同的配置需求,例如部分變量配置到報告菜單、錄波、定值等。可將這些相同的操作進行抽象歸類,以腳本的形式形成可共享的API函數庫,提供給模塊研發人員編寫。在模塊化的元件內增加腳本段,用于定義單個元件的配置規則,包括引用表添加、定值分組、邏輯節點配置等功能。過流元件的腳本段定義示例如圖5所示。

圖5 元件腳本應用

在圖5中,AddTab是配置引用表功能的腳本函數,把變量oc_en添加到binchg引用表;AddParaGroup是配置定值分組的腳本函數,把變量oc_mode添加到定值組OC_Settings;SetDAI是映射變量和邏輯節點數據屬性短地址的函數,表示把變量oc_en填充到GGIO1.SPCSO1.stVal的sAddr屬性。

3.2 全局腳本應用

以裝置選型MOT全局為例,闡述全局腳本的使用過程:

(1)定義功能選型配置文件格式,裝置研發人員在研發版本配置軟件的功能選型編輯界面中,以編輯層次樹的方式,完成選型問題設計劃分,輸入問題的若干候選項和默認值。可設置問題選項的強制、互斥等條件表達式,根據其他問題的當前選項值設置某個問題強制選項值或灰化互斥部分可選項。條件表達式是問題名、選項值、常量、全局變量的邏輯組合語句。

(2)使用腳本函數和規則文本接口,裝置研發人員在研發版本配置軟件的功能選型編輯界面中,編寫和問題、選項關聯的腳本。支持使用的全局腳本函數包括:設置插件型號SetBoardType、顯示/隱藏插件ShowBoard/HideBoard、修改系統配置選項SetSysCfg等。

(3)用戶在用戶版本配置軟件中,根據實際工程配置需求,選擇每個問題的對應選項。每個選項的切換會觸發實時腳本執行引擎,執行和選項對應的腳本,實現硬件型號切換、軟硬件功能模塊投入和退出、可視化頁面隱藏和顯示、變量屬性修改等功能。

全局腳本應用如圖6所示,當用戶切換每個問題的當前選項時,用戶版本配置軟件將腳本中的問題名稱用當前選項替換,并調用腳本執行引擎,執行相關腳本函數。

圖6 全局腳本應用

4 結束語

介紹了基于元件腳本、全局腳本的電力系統嵌入式裝置的可配置方案,裝置研發人員可開發通用的功能配置,并提供可選功能描述和選項,用戶根據實際工程需求進行功能可控選擇,通過內置腳本,自動執行相關函數,修改配置數據和界面顯示。基于可配置、可復用的腳本,顯著減少了裝置二次開發工作量,提高了研發效率和產品的通用性、適用范圍,已經在電力系統保護測控裝置中大規模適用,取得了較好的經濟效益。

[1] 賀 敏,陳宏君.組件開發架構及在繼電保護配置軟件中的應用[J].軟件工程,2016,19(1):35-38.

[2] 李 響,劉國偉,馮亞東,等.新一代控制保護系統通用硬件平臺設計與應用[J].電力系統自動化,2012,36(14):52-55.

[3] 孫振華,高傳發,任華鋒,等.新型基于MPC8309的微機繼電保護平臺[J].計算機系統應用,2015,24(3):105-109.

[4] 陳翔宇,王冬青,李 剛,等.基于通用平臺的智能變電站一體化設計和整合應用[J].電網技術,2014,38(1):58-62.

[5] 郭 瑋,田錄林,張永良,等.基于嵌入式PLC軟核的通用保護平臺設計與實現[J].電力系統保護與控制,2014,42(16):122-126.

[6] 陳宏君,劉克金,馮亞東,等.新一代保護測控裝置配套工具軟件設計與應用[J].電力系統自動化,2013,37(20):92-96.

[7] 徐 兵,沈玉利,謝仕義.嵌入式Web服務器端腳本引擎設計與實現[J].計算機工程與設計,2008,29(15):3933-3935.

[8] 屈景怡,陳鐘玉,吳仁彪.基于自定義腳本的適配參數系統的設計與實現[J].計算機工程與設計,2015,36(11):3134-3139.

[9] 張 強,郭麗麗,馬振林.基于模型自動判讀的研究與實現[J].計算機技術與發展,2014,24(7):17-20.

[10] 何 嘯,麻志毅,王瑞超,等.語義可配置的模型轉換[J].軟件學報,2013,24(7):1436-1454.

[11]IEC/TC57.Communicationnetworksandsystemsforpowerutilityautomation-part6:configurationdescriptionlanguageforcommunicationinelectricalsubstationrelatedtoIEDs[S].[s.l.]:[s.n.],2009.

[12]IEC/TC57.Communicationnetworksandsystemsforpowerutilityautomation,part7-4:basiccommunicationstructure-compatiblelogicalnodeclassesanddataobjectclasses[S].[s.l.]:[s.n.],2010.

[13]MediniQVTproject[EB/OL].2012.http://projects.ikv.de/qvt.

[14]ATLflowproject[EB/OL].2013.http://opensource.urszeidler.de/ATLFlow.

Design of C Style Script Structure and Its Application in Power System

CHEN Hong-jun,XIONG Hui

(NR Electric Co.,Ltd.,Nanjing 211102,China)

In different countries and regions,power system users have certain difference on the device function and configuration,so the tool software need to achieve the flexible allocation of equipment requirements.Developers also need to reduce the HMI configuration work when using modular and graphical components to setup the device.The solution of C style script is presented,in which API interface is suitable for power system device configuration,and the scripts support variable properties setting,signals linking,parameters grouping,enable or disable components,IEC61850 modeling and other functions.The main modules and script parser processes are implemented by establishment of the key algorithms including lexical extraction based on table driven,script execution based on command mode,expression calculation based on the recursive descent method,and lookup based on multiple Hash.60 000 lines of resolution takes less than 3 seconds.Device developers can define components script,to realize the automatic configuration of reuse.They also can define global scripts,which provide maximum device features and configuration options.Practice shows that class C script can significantly improve the development efficiency of measurement and control device for power system protection and scope of the product.

C style script;component script;global script;device configuration

2016-05-03

2016-09-07

時間:2017-02-17

國家“863”高技術發展計劃項目(2015AA050101)

陳宏君(1981-),男,碩士,高級工程師,研究方向為電力系統平臺軟件開發。

http://www.cnki.net/kcms/detail/61.1450.TP.20170217.1632.074.html

TP39

A

1673-629X(2017)03-0171-05

10.3969/j.issn.1673-629X.2017.03.036

猜你喜歡
定義功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風格”
關于非首都功能疏解的幾點思考
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
中西醫結合治療甲狀腺功能亢進癥31例
辨證施護在輕度認知功能損害中的應用
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 国产十八禁在线观看免费| 日韩国产精品无码一区二区三区| 女高中生自慰污污网站| 国产探花在线视频| 狠狠色丁香婷婷综合| 亚洲最大福利网站| 欧美怡红院视频一区二区三区| 亚洲啪啪网| 色综合网址| 性激烈欧美三级在线播放| 成人看片欧美一区二区| 四虎成人精品在永久免费| 国产精品欧美亚洲韩国日本不卡| 在线亚洲小视频| 91小视频在线播放| 玖玖精品视频在线观看| 青青热久免费精品视频6| 亚洲国产欧美国产综合久久 | 欧美日一级片| 国内丰满少妇猛烈精品播| 二级特黄绝大片免费视频大片| 精品视频一区二区三区在线播| 日本三级精品| 国内精品自在自线视频香蕉| 2020亚洲精品无码| 日韩欧美中文在线| 色一情一乱一伦一区二区三区小说| 动漫精品中文字幕无码| 熟妇丰满人妻| 亚洲最大福利视频网| 91丨九色丨首页在线播放| 四虎永久在线精品国产免费| 国产在线精品99一区不卡| 蝌蚪国产精品视频第一页| 67194亚洲无码| 欧美特黄一免在线观看| 久久久久九九精品影院| 亚洲国产精品不卡在线| 亚洲欧美精品一中文字幕| 伊人五月丁香综合AⅤ| 91久久偷偷做嫩草影院| 国产精品久久自在自2021| 超级碰免费视频91| 四虎永久在线| 91午夜福利在线观看精品| 色久综合在线| 欧美日韩国产精品综合| 国产精品香蕉| 真实国产乱子伦高清| 91毛片网| 色135综合网| 99re在线免费视频| 国产精品久久久久久久久久久久| 黑人巨大精品欧美一区二区区| 中文天堂在线视频| 高清不卡一区二区三区香蕉| 毛片免费在线视频| 免费日韩在线视频| 亚洲国产成人精品一二区| 欧美成人亚洲综合精品欧美激情| 日本一区中文字幕最新在线| 欧洲高清无码在线| 真实国产乱子伦视频| 亚洲欧美色中文字幕| 亚洲最新在线| 91精品视频在线播放| 亚洲国产中文精品va在线播放 | 青草视频网站在线观看| 久久综合AV免费观看| 国产精品入口麻豆| 国产三级国产精品国产普男人| 天堂在线亚洲| 日本在线国产| 尤物视频一区| …亚洲 欧洲 另类 春色| 黄色网在线| 国产精品999在线| 亚洲第一视频网| 一本视频精品中文字幕| 99热这里只有精品在线观看| 亚洲成人网在线播放| 免费毛片网站在线观看|