謝民, 樊瑞, 李嘉, 孫月琴, 王海港, 邵慶祝
(1.國網(wǎng)安徽省電力公司,安徽 合肥 230022; 2.國網(wǎng)電力科學(xué)研究院/南京南瑞集團(tuán)公司,江蘇 南京 211000)
?
基于IEC 61850MMS客戶端日志服務(wù)的實(shí)現(xiàn)
謝民1, 樊瑞2, 李嘉2, 孫月琴1, 王海港1, 邵慶祝1
(1.國網(wǎng)安徽省電力公司,安徽合肥230022; 2.國網(wǎng)電力科學(xué)研究院/南京南瑞集團(tuán)公司,江蘇南京211000)
日志服務(wù)是IEC 61850標(biāo)準(zhǔn)提出的一項(xiàng)重要通信服務(wù),其在客戶端的實(shí)現(xiàn)對工程調(diào)試和變電站自動化均具有重要意義。在實(shí)現(xiàn)IEC 61850MMS客戶端調(diào)試工具的基礎(chǔ)上,采用客戶端/服務(wù)器模式實(shí)現(xiàn)了日志服務(wù)。通過服務(wù),客戶端實(shí)現(xiàn)了高效率的對日志按照時間及條目方式在線與離線兩種方式的查詢、導(dǎo)出、存儲等功能。在日志顯示時,首次引入了“分組”及“關(guān)鍵字檢索”方式,滿足工程人員故障定位等調(diào)試需求。日志服務(wù)的工具軟件已在實(shí)際工程得到很好的應(yīng)用。
IEC 61850;日志服務(wù);日志查詢;日志存儲;分組顯示
IEC 61850標(biāo)準(zhǔn)是智能變電站網(wǎng)絡(luò)通信的基礎(chǔ),已在國內(nèi)變電站中獲得廣泛應(yīng)用。由于IEC 61850本身不能夠制造報文,因此站控層采用了MMS(Manufacturing Message Specification)即制造報文規(guī)范[1],將通信采用抽象通信服務(wù)接口ACSI(Abstract Communication Service Interface)映射到MMS的方式實(shí)現(xiàn)[2]。MMS客戶端調(diào)試工具是基于站控層的調(diào)試工具,通過建立客戶端與裝置之間的通信連接[3],獲取裝置中的ICD模型信息,實(shí)現(xiàn)數(shù)據(jù)集查看、遙控、定值修改、錄波下載、報告查看等功能。
日志服務(wù)是IEC 61850服務(wù)中的重要內(nèi)容[4],裝置中的一般內(nèi)部事件都以日志記錄的方式存儲,與報告相比,日志數(shù)據(jù)的記錄與存儲是相互獨(dú)立的,不依賴于外部客戶端的連接和檢索[5],在裝置斷電等突發(fā)情況下仍然能夠保持原來記錄,對裝置的歷史故障追憶與定位有著指導(dǎo)意義。本文在分析日志相關(guān)標(biāo)準(zhǔn)及關(guān)鍵技術(shù)的基礎(chǔ)上,采用客戶端/服務(wù)器模式,從日志解析、日志查詢、日志處理應(yīng)用等方面闡述了客戶端日志服務(wù)的實(shí)現(xiàn),并對其進(jìn)一步封裝處理,在提高日志檢索效率的同時實(shí)現(xiàn)了日志的離線脫機(jī)查詢功能。
客戶端主要實(shí)現(xiàn)日志的解析、查詢等功能,包括以下三個模塊:日志狀態(tài)管理、日志解析、日志查詢。日志查詢模塊主要實(shí)現(xiàn)獲取符合條件的日志信息并保持到本地內(nèi)存中,因此需要調(diào)用日志解析模塊對日志進(jìn)行解析;同時日志狀態(tài)信息的修改影響日志的檢索結(jié)果。
1.1日志模型
日志模型包括日志數(shù)據(jù)集及日志控制塊兩部分[6],其中兩者以相對應(yīng)的方式進(jìn)行配置,即一個數(shù)據(jù)集對應(yīng)一個控制塊。本文日志控制塊LCB采用以lcb為前綴,以邏輯設(shè)備名為尾綴作為控制塊名稱,日志控制塊配置及屬性如圖1所示。
圖1 日志控制塊
1.2日志數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
日志屬性包括LogName(日志名稱)、LogRef(日志路徑名)、OldEntrTm(舊入口時間)、NewEntrTm(新入口時間)、OldEntr(舊日志條目ID)、NewEntr(新日志條目ID)[7]。因此客戶端將日志定義為以下數(shù)據(jù)結(jié)構(gòu),以方便對日志的操作。
日志參數(shù)數(shù)據(jù)結(jié)構(gòu)如下所示。
typedef struct
{
TimeStamp starttime_bytime;TimeStamp starttime_byid;
TimeStamp endtime_bytime;EntryIdid_byid;
TimeStamp temp_time; //用于后續(xù)包EntryIdtemp_id;//用于后續(xù)包
int fallow_flag;//是否有后續(xù)包的標(biāo)志}LOGQUERYPARA;
1.3日志狀態(tài)管理模塊
日志狀態(tài)管理模塊主要是獲取日志狀態(tài)值,同時可以修改相關(guān)狀態(tài)值并下裝到裝置中,實(shí)現(xiàn)對日志的修改。根據(jù)日志屬性及配置信息,客戶端通過調(diào)用函數(shù)read_logstate(void)獲取日志狀態(tài)并顯示。
首先,在建立客戶端與裝置的通信連接后,從獲取到的裝置模型信息中得到日志數(shù)據(jù)結(jié)構(gòu)LOG_INFO,根據(jù)選擇需要查看的日志塊名稱檢索日志數(shù)據(jù)結(jié)構(gòu)獲得LogName、LogRef、LogDatSet屬性值及其余狀態(tài)信息的名稱lnRef,根據(jù)各名稱lnRef調(diào)用ACSI函數(shù)Acsi_GetDataValue(int ld, char * szDataRef, AcsiVariant * var)獲取對應(yīng)的值,從而得到所有的日志狀態(tài)信息,如圖2所示。
圖2 日志狀態(tài)信息
用戶可以根據(jù)需要,通過調(diào)用ACSI函數(shù)Acsi_SetDataValue(int ld, char * szDataRef, AcsiVariant * var)修改日志觸發(fā)選項(xiàng)與完整性周期,同時下裝到裝置中,實(shí)現(xiàn)對日志狀態(tài)信息的修改。
1.4日志解析模塊
日志解析模塊主要實(shí)現(xiàn)對日志信息的解析并將其顯示到客戶端界面中。模塊首先將返回的日志信息保存到本地內(nèi)存數(shù)據(jù)結(jié)構(gòu)AcsiEntry中,如下所示。
typedef struct{typedef struct{
char * ref;TimeStamp time;
MTree * val; EntryId id; ......
unsigned char reason[4];AcsiEntryData data[1];
}AcsiEntryData;}AcsiEntry;
其中id為日志唯一標(biāo)識號,time為日志記錄時間,ref為日志名稱,日志內(nèi)的數(shù)據(jù)val以樹MTree數(shù)據(jù)結(jié)構(gòu)形式存儲,結(jié)構(gòu)不直觀,無法直接得到日志的具體數(shù)據(jù),因此需要進(jìn)行解析處理。
日志解析模塊將每一條日志內(nèi)容val轉(zhuǎn)換為樹CMTree結(jié)構(gòu),CMTree是對MTree的進(jìn)一步封裝。采用深度遍歷的方式遍歷樹中的所有數(shù)據(jù),并根據(jù)其結(jié)構(gòu)組成判定各數(shù)據(jù)的含義,同時將葉子數(shù)值保存到相應(yīng)的日志結(jié)構(gòu)中(如上1.2所示),如日志名稱、描述、記錄時間、ID、品質(zhì)等。
1.5日志查詢模塊
日志查詢模塊主要實(shí)現(xiàn)根據(jù)查詢條件檢索符合條件的日志數(shù)據(jù),日志查詢具有兩種方式:按時間方式查詢、按條目方式查詢,兩種查詢方式的區(qū)別在于輸入條件的不同,前者查詢條件為日志的起始時間、終止時間,后者為日志的起始時間、起始條目號。
首先,在客戶端界面根據(jù)查詢方式獲取查詢條件,調(diào)用客戶端查詢?nèi)罩竞瘮?shù)asklog(void)獲取日志信息,并根據(jù)參數(shù)采用消息響應(yīng)的方式,調(diào)用ACSI中相應(yīng)函數(shù),若為按時間方式查詢調(diào)用Acsi_QueryLogByTime(int ld, char * szLogRef, TimeStamp * start, TimeStamp * stop),否則調(diào)用Acsi_QueryLogAfter(int ld, char * szLogRef, TimeStamp * sa_time, EntryId * entry_id),ACSI通過底層與MMS的映射關(guān)系,產(chǎn)生查詢?nèi)罩景l(fā)送報文。按時間方式查詢發(fā)送報文部分內(nèi)容如下所示。
ReadJournal
Object Name
Domain Specific
DomainName:
DomainName: TEMPLATEPROT
ItemName:
ItemName: PROT
Range Start Specifictaion
Time 2000-01-01 00:00:0.000 (days=5844 msec= 0)
Range Stop Specifictaion
Time 2013-11-08 00:00:0.000 (days=10904 msec= 0)
當(dāng)服務(wù)器端收到發(fā)送報文消息后,根據(jù)報文中的日志檢索條件調(diào)用服務(wù)器端的日志檢索模塊對日志進(jìn)行查詢,并將符合條件的日志信息按照報文格式打包并發(fā)送響應(yīng)消息,同時,客戶端自動調(diào)用日志消息響應(yīng)函數(shù)OnLog(BOOL bMorefollow,AcsiEntry ** entry, int iEntryNum),將ACSI中的日志內(nèi)容entry、是否有后續(xù)日志信息標(biāo)識變量bMorefollow及日志條目傳送給日志解析模塊進(jìn)行解析處理,并將解析數(shù)據(jù)保存到本地日志數(shù)據(jù)結(jié)構(gòu)中。按時間查詢?nèi)罩卷憫?yīng)報文部分內(nèi)容如下所示。
ReadJournal ……
TEMPLATEPROT/WarnGGIO1$ST$Alm1
ValueSpecification
STRUCTURE
BOOLEAN:FALSE
BITSTRING:
BITSTRING:
BITS 0000 - 0015: 0 0 0 0 0 0 0 0 0 0 0 0 0……
TEMPLATEPROT/WarnGGIO1$ST$Alm1|reasonCode
ValueSpecification
BITSTRING:
BITSTRING:
BITS 0000 - 0015: 0 1 0 0 0 0……
在客戶端實(shí)現(xiàn)日志服務(wù)的基礎(chǔ)上,本文對日志信息進(jìn)行了進(jìn)一步的處理,實(shí)現(xiàn)日志服務(wù)的高級應(yīng)用。按照實(shí)現(xiàn)功能,將其分為客戶端日志本地存儲與客戶端日志應(yīng)用處理兩個模塊。
2.1客戶端日志本地存儲
為了提高日志的檢索效率,實(shí)現(xiàn)日志的脫機(jī)離線查詢功能,本文采用將日志以文件的方式存儲到客戶端本地內(nèi)存中,避免每次查詢都要建立與服務(wù)器端的連接與查詢請求,以及重復(fù)性的報文解析工作。
IEC 61850報告與日志處理方式不同,IEC 61850報告采用主動上送方式,即當(dāng)有觸發(fā)事件產(chǎn)生報文時,服務(wù)器端會主動將其上送至客戶端進(jìn)行處理。而日志是不主動上送的,當(dāng)有觸發(fā)事件產(chǎn)生時,服務(wù)器端將日志信息進(jìn)行記錄存儲,只有當(dāng)客戶端主動查詢才能得到歷史記錄。因此由于日志上送方式的特殊性導(dǎo)致了日志本地存儲的困難。
通過對日志服務(wù)實(shí)現(xiàn)方式的分析,本文采用主動查詢的方式獲取日志記錄。客戶端日志本地存儲分為兩個子模塊:日志控制模塊、日志文件存儲模塊。
圖3 日志控制模塊流程圖
日志控制模塊實(shí)現(xiàn)了當(dāng)日志為使能狀態(tài)時,定時查詢?nèi)罩?,將所有的日志歷史記錄保存到本地內(nèi)存數(shù)據(jù)結(jié)構(gòu)中。具體流程如圖3所示。
日志文件存儲模塊實(shí)現(xiàn)日志的離線保存功能。通過比較與分析,XML為輕量級的數(shù)據(jù)儲存文件,存在互操作性強(qiáng)、可擴(kuò)展性好等優(yōu)點(diǎn),同時XML的解析與查詢效率高,因此本文采用XML文件存儲的方式對日志歷史記錄進(jìn)行存儲。在建立客戶端與裝置連接的同時解析日志存儲文件,并將日志信息保存到本地內(nèi)存數(shù)據(jù)結(jié)構(gòu)中,同時從服務(wù)器端獲取日志起始條目號及結(jié)束條目號,判斷日志數(shù)據(jù)結(jié)構(gòu)中的條目號是否與服務(wù)器端相同,如不同,更新數(shù)據(jù)結(jié)構(gòu),同步本地日志與服務(wù)器端日志數(shù)據(jù),如相同,啟動日志控制模塊對日志進(jìn)行控制處理。當(dāng)客戶端與裝置斷鏈時,自動將本地內(nèi)存的日志信息保存到日志文件中進(jìn)行存儲。
2.2客戶端日志應(yīng)用處理
客戶端日志應(yīng)用處理模塊主要實(shí)現(xiàn)日志應(yīng)用操作的一些輔助功能,如日志顯示、日志關(guān)鍵字檢索、日志導(dǎo)出、日志清除等。
客戶端日志顯示可分為通用顯示與分組顯示兩種。通用顯示將查詢結(jié)果逐條直接顯示到客戶端界面中,分組顯示則將日志查詢結(jié)果按照分組的形式進(jìn)行顯示。為了實(shí)現(xiàn)報文結(jié)果顯示清晰,103規(guī)約提出了“分組顯示”的概念,即將某些信息以組別的形式進(jìn)行顯示,以方便調(diào)試人員的查看與分析,而IEC 61850報文采用逐條主動上送的方式,因此目前還沒有分組顯示的概念。本文在分析日志特點(diǎn)的基礎(chǔ)上,結(jié)合客戶端日志服務(wù)的實(shí)現(xiàn),將分組的概念引用到日志顯示上,提高日志歷史記錄顯示的清晰性,方便調(diào)試人員的定位與調(diào)試。日志處理模塊采用增加日志觸發(fā)選項(xiàng)標(biāo)志位,在解析日志報文的同時,跟據(jù)日志產(chǎn)生原因設(shè)置其標(biāo)志位,在對日志查詢時,通過對標(biāo)志位的過濾處理實(shí)現(xiàn)日志查詢結(jié)果的分組,從而實(shí)現(xiàn)日志分組顯示的效果。
日志關(guān)鍵字檢索是客戶端日志應(yīng)用的另一個重要功能,對具體錯誤信息的定位有著重要作用。通過設(shè)置檢索關(guān)鍵字與顯示條目N,客戶端在已保存的日志記錄中對所有的日志信息進(jìn)行關(guān)鍵字完全匹配檢索,當(dāng)檢索到匹配信息時對其進(jìn)行標(biāo)識,并將該條日志記錄的前后N條記錄進(jìn)行保存,通過處理以通用顯示的方式顯示到日志界面中。日志關(guān)鍵字檢索在工程應(yīng)用中有著重要作用,特別是對于查詢定位特定信息,如裝置斷鏈等,能夠方便快速的調(diào)取相關(guān)日志記錄,避免了逐條查看分析的過程,對于裝置調(diào)試有著重要指導(dǎo)意義。
日志導(dǎo)出將查詢獲取到的日志信息按照文本的方式導(dǎo)出的外部文件中,以方便調(diào)試人員外部的使用。
日志清除將客戶端界面日志顯示信息進(jìn)行清理,提高顯示的清晰度。
日志服務(wù)是IEC 61850中的一項(xiàng)重要通信服務(wù),對裝置的調(diào)試及電能質(zhì)量后臺數(shù)據(jù)持續(xù)性保證等方面都有指導(dǎo)意義。本文通過對日志模型及控制塊的分析,在服務(wù)器端實(shí)現(xiàn)日志服務(wù)的基礎(chǔ)上,在客戶端實(shí)現(xiàn)日志的解析、查詢、日志的本地存儲及離線查詢功能,同時,首次將關(guān)鍵字檢索和103規(guī)約中分組顯示的概念引入到日志服務(wù)中,實(shí)現(xiàn)日志的精確查詢和分組顯示功能,對故障追溯與定位分析有著指導(dǎo)意義?,F(xiàn)MMS客戶端日志服務(wù)功能已在實(shí)際的工程中投入應(yīng)用并取得了良好的效果。
[1] 董科, 關(guān)彬, 王巍. IEC61850與MMS的映射的研究[J]. 電力系統(tǒng)保護(hù)與控制, 2010, 38(10) :92-95.
[2] 中華人民共和國國家經(jīng)濟(jì)貿(mào)易委員會. IEC 61850, Communication networks and systems in substations - Part 8-1 (First edition)[S]. 中華人民共和國, 2004.
[3] 任希廣. 基于IEC61850的MMS客戶端軟件設(shè)計(jì)[J]. 華北電力技術(shù),2013,43(11) : 44-48.
[4] 韓明峰,鄭永志,唐永建,等. IEC 61850日志服務(wù)的實(shí)現(xiàn)策略[J]. 電力系統(tǒng)自動化, 2007, 31(18): 54-56.
[5] 中華人民共和國國家經(jīng)濟(jì)貿(mào)易委員會. IEC 61850, Communication networks and systems in substations-Part 6 (First edition)[S]. 中華人民共和國, 2004.
[6] 韓法玲,黃潤長,張華,等. 基于IEC61850標(biāo)準(zhǔn)的IED建模分析[J]. 電力系統(tǒng)保護(hù)與控制, 2010, 36(10): 87-90.
[7] 何衛(wèi),唐成虹,張祥文. 基于IEC 61850的IED數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)[J]. 電力系統(tǒng)自動化, 2007, 31(1): 57-61.
Implementation of Log Service Based on IEC 61850MMS Client Side
XIE Min1, FAN Rui2, LI Jia2, SUN Yue-qin1, WANG Hai-gang1, SHAO Qing-zhu1
(1. State Grid Anhui Electric Power Corporation,Hefei Anhui 230022, China;2. State Grid Electric Power Research Institute /Nanjing NARI Group Corporation, Nanjing Jiangsu 211000, China)
Log service is an important communication service specified in IEC 61850, and its implementation at the client side is vital to both engineering debugging and substation automation. Based on the development of an IEC 61850MMS client-side debugging tool, log service is implemented in the client-side/server mode. At the client side, this service realizes highly efficient query, derivation and storage of logs by time and item on and off the line. For the log display, the concepts of grouping and query by key words are introduced for the first time so as to meet the demand of fault location on the part of engineering personnel. The software tool using the log service has been applied to practical engineering with good result.
IEC 61850;log service; log query; log storage; group display
10.3969/j.issn.1000-3886.2016.02.006
TM73;TM761:TP391
A
1000-3886(2016)02-0015-03
謝民(1975-),男,安徽淮南人,工程師,主要研究方向:電力系統(tǒng)繼電保護(hù)。樊瑞(1985-),女,山東泰安人,工程師,主要研究方向:電力系統(tǒng)自動化。李嘉(1981-),男,上海青浦人,工程師,主要研究方向:電力系統(tǒng)自動化。孫月琴(1964-),男,安徽休寧人,高級工程師,主要研究方向:電力系統(tǒng)繼電保護(hù)。王海港(1977-),男,安徽阜陽人,工程師,主要研究方向:電力系統(tǒng)繼電保護(hù)。邵慶祝(1988-),男,安徽阜陽人,工程師,主要研究方向:電力系統(tǒng)繼電保護(hù)。
定稿日期: 2015-05-27