專利名稱:一種提高電力監(jiān)控服務(wù)器端報(bào)文處理速度的方法
技術(shù)領(lǐng)域:
本發(fā)明要解決的技術(shù)問題在于提供一種提高電力監(jiān)控服務(wù)器端報(bào)文處理速度的方法。
背景技術(shù):
電力監(jiān)控系統(tǒng)以計(jì)算機(jī)、通訊設(shè)備、測控單元為基本工具,為變配電系統(tǒng)的實(shí)時(shí)數(shù)據(jù)采集、開關(guān)狀態(tài)檢測及遠(yuǎn)程控制提供了基礎(chǔ)平臺,它可以和檢測、控制設(shè)備構(gòu)成任意復(fù)雜的監(jiān)控系統(tǒng),在變配電監(jiān)控中發(fā)揮了核心作用,可以幫助企業(yè)消除孤島、降低運(yùn)作成本,提高生產(chǎn)效率,加快變配電過程中異常的反應(yīng)速度。在它的功能不斷完善的同時(shí),用戶對實(shí)時(shí)性方面提出了越來越高的要求。由于它采用的面向連接TCP/IP技術(shù),系統(tǒng)的響應(yīng)時(shí)間取決于發(fā)送方的發(fā)送速率和接收方響應(yīng)處理能力,要盡量避免出現(xiàn)因接收方處理速度慢,數(shù)據(jù)在TCP/IP緩沖層堆積,導(dǎo)致發(fā)送方發(fā)送數(shù)據(jù)失敗,速率降低的情況。因此服務(wù)器端和客戶端應(yīng)支持并發(fā)處理方式,一個(gè)任務(wù)阻塞等待的時(shí)候另一個(gè)任務(wù)正好得以調(diào)度運(yùn)行,充分利用CPU的能力。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于提供一種運(yùn)行穩(wěn)定,處理速度快捷的電力監(jiān)控服務(wù)器端報(bào)文處理方法。為解決上述技術(shù)問題,本發(fā)明通過一下技術(shù)方案來實(shí)現(xiàn)一種提高電力監(jiān)控服務(wù)器端報(bào)文處理速度的方法,基于IEC61850客戶端的動(dòng)態(tài)庫軟件,實(shí)現(xiàn)與IEC61850服務(wù)器端的連接,提高服務(wù)器發(fā)送的報(bào)文快速有效的處理,包括有編碼模塊、解碼模塊、測試模塊、 數(shù)據(jù)接收線程模塊、客戶端動(dòng)態(tài)庫接口模塊和濾波模塊,其實(shí)現(xiàn)過程包括以下步驟,a、所述編碼模塊主要任務(wù)是對各種命令進(jìn)行組幀,組織報(bào)文的依據(jù)是匪S協(xié)議, 主要的算法是采用后序編碼,即從緩沖區(qū)的末尾向前進(jìn)行編碼;b、所述解碼模塊由各種命令解幀函數(shù)構(gòu)成,主要用來解析接收緩沖區(qū)的報(bào)文,線程是在初始化MMS成功后和報(bào)文接收線程同時(shí)創(chuàng)建,從緩沖區(qū)取出一幀正確的數(shù)據(jù)放入臨時(shí)緩沖區(qū),然后調(diào)用解幀函數(shù)對報(bào)文進(jìn)行處理;C、所述測試模塊主要是對各種命令的組幀函數(shù)進(jìn)行單測,檢驗(yàn)的方法是將發(fā)送幀輸出到屏幕上,然后將接受到的報(bào)文也輸出到屏幕上,與IEDSC0UT軟件對照即可知道是否接受成功;d、所述數(shù)據(jù)接收線程模塊主要是接收來自服務(wù)器端的報(bào)文,把收到的數(shù)據(jù)放入接收緩沖區(qū),當(dāng)接收數(shù)據(jù)有問題時(shí)斷開網(wǎng)絡(luò),之后重新連接;e、所述是客戶端的最終接口,該接口直接提供給上層程序進(jìn)行調(diào)用,該動(dòng)態(tài)庫的接口函數(shù)有一些函數(shù)構(gòu)成,能實(shí)現(xiàn)傳統(tǒng)的四遙功能,以及錄波等功能,并且能滿足現(xiàn)場的要求,能夠處理程序的一些異常情況,使程序能夠穩(wěn)定的運(yùn)行。所述步驟a中編碼模塊的組幀有以下三種情況,初始化MMS,只有這個(gè)成功才創(chuàng)建MMS數(shù)據(jù)解析與接收線程;讀取樹節(jié)點(diǎn)報(bào)文,讀樹信息會涉及到很多嵌套,一定要發(fā)送一條命令且等待解析完后才能發(fā)下一條命令,這個(gè)等待用一個(gè)事件來觸發(fā)解析完成,等待會有一個(gè)超時(shí),超時(shí)會讀取樹節(jié)點(diǎn)函數(shù)會異常退出,程序又要重新開始讀取樹信息,組幀完后調(diào)用發(fā)送函數(shù)就返回,中間不會等待;錯(cuò)誤處理MMS啟動(dòng)報(bào)文是初始化MMS,讀取樹節(jié)點(diǎn)報(bào)文的發(fā)送報(bào)文失敗會讓函數(shù)返回失敗,之后重新建立連接,再次發(fā)送,發(fā)送后失敗后,會斷開網(wǎng)絡(luò)連接,數(shù)據(jù)接收線程會檢測到這個(gè)狀態(tài),重新連接網(wǎng)絡(luò),這個(gè)報(bào)文不會重新發(fā)送。所述步驟b中解碼模塊算法,首先對固定字節(jié)進(jìn)行比較,判定接收到的報(bào)文是否有錯(cuò);如果沒有錯(cuò),繼續(xù)解析,當(dāng)遇到有所需要的數(shù)據(jù)時(shí),如果為LD,則創(chuàng)建一個(gè)LD對象,為 LN,則創(chuàng)建一個(gè)LN對象,其他對象方法一樣;然后調(diào)用添加元素函數(shù),將LD,LN等對象加入到相應(yīng)節(jié)點(diǎn)的下面,添加成功后,返回幀。本發(fā)明采用多線程處理的方法,分為匪S命令發(fā)送線程,接收服務(wù)端報(bào)文線程以及報(bào)文處理線程,服務(wù)端報(bào)文線程一直監(jiān)測Socket緩沖區(qū)是否有數(shù)據(jù),如果有數(shù)據(jù)到來就一次性全部讀出來放入應(yīng)用程序開辟數(shù)據(jù)共享緩沖區(qū),然后通知數(shù)據(jù)處理線程從數(shù)據(jù)共享緩沖區(qū)讀取數(shù)據(jù)作解碼處理,本發(fā)明總體來說具有以下優(yōu)點(diǎn)1.模塊性強(qiáng),擴(kuò)展性好;2.采用多線程的處理方式,提高任務(wù)的并發(fā)性和吞吐量;3.處理因數(shù)據(jù)變化、品質(zhì)變化等原因引起遙信、遙測報(bào)告實(shí)時(shí)性很強(qiáng);4.應(yīng)用程序開辟大塊緩沖區(qū),減少因TCP緩沖區(qū)滿導(dǎo)致服務(wù)器端發(fā)送失敗的機(jī)率;5.嚴(yán)密的邏輯判斷和異常處理,極大程度保證程序穩(wěn)定運(yùn)行。
圖1為本發(fā)明編碼模塊原理圖2為本發(fā)明編碼模塊接口流程圖3為本發(fā)明解碼模塊原理圖4為本發(fā)明解碼模塊流程圖5為本發(fā)明數(shù)據(jù)接收線程模塊原理圖6為本發(fā)明數(shù)據(jù)接收線程模塊數(shù)據(jù)接收線程模塊流程圖。
具體實(shí)施例方式一種提高電力監(jiān)控服務(wù)器端報(bào)文處理速度的方法,基于IEC61850客戶端的動(dòng)態(tài)庫軟件,實(shí)現(xiàn)與IEC61850服務(wù)器端的連接,提高服務(wù)器發(fā)送的報(bào)文快速有效的處理,包括有編碼模塊、解碼模塊、測試模塊、數(shù)據(jù)接收線程模塊、客戶端動(dòng)態(tài)庫接口模塊和濾波模塊。實(shí)施例一圖1、圖2所示,編碼模塊主要任務(wù)是對各種命令進(jìn)行組幀,組織報(bào)文的依據(jù)是MMS協(xié)議,主要的算法是采用后序編碼,即從緩沖區(qū)的末尾向前進(jìn)行編碼,該函數(shù)的具體流程如下組幀分為幾種情況匪S啟動(dòng)報(bào)文、讀取樹節(jié)點(diǎn)報(bào)文、YK召喚TO(YC、KffH)。 MMS啟動(dòng)報(bào)文是初始化MMS 只有這個(gè)成功才創(chuàng)建MMS數(shù)據(jù)解析與接收線程。讀取樹節(jié)點(diǎn)報(bào)文讀樹信息會涉及到很多嵌套,一定要發(fā)送一條命令且等待解析完后才能發(fā)下一條命令。 這個(gè)等待用一個(gè)事件來觸發(fā)解析完成,等待會有一個(gè)超時(shí),超時(shí)會讀取樹節(jié)點(diǎn)函數(shù)會異常退出,程序又要重新開始讀取樹信息。 (召喚TO(YC、KWH)組幀完后調(diào)用發(fā)送函數(shù)就返回, 中間不會等待。錯(cuò)誤處理:MMS啟動(dòng)報(bào)文是初始化MMS、讀取樹節(jié)點(diǎn)報(bào)文的發(fā)送報(bào)文失敗會讓樹函數(shù)返回失敗,之后重新建立連接,再次發(fā)送。 (召喚TO(YC、KWH)發(fā)送后失敗后,會斷開網(wǎng)絡(luò)連接,數(shù)據(jù)接收線程會檢測到這個(gè)狀態(tài),重新連接網(wǎng)絡(luò),這個(gè)報(bào)文不會重新發(fā)送。實(shí)施例二 圖3、圖4所示,解碼模塊由各種命令解幀函數(shù)構(gòu)成,主要用來解析接收緩沖區(qū)的報(bào)文,線程是在初始化MMS成功后和報(bào)文接收線程同時(shí)創(chuàng)建,從緩沖區(qū)取出一幀正確的數(shù)據(jù)放入臨時(shí)緩沖區(qū),然后調(diào)用解幀函數(shù)對報(bào)文進(jìn)行處理。首先對固定字節(jié)進(jìn)行比較,判定接收到的報(bào)文是否有錯(cuò),如果沒有錯(cuò),繼續(xù)解析,當(dāng)遇到有所需要的數(shù)據(jù)時(shí),如果為LD,則創(chuàng)建一個(gè)LD對象,為LN,則創(chuàng)建一個(gè)LN對象,其他對象方法一樣,然后調(diào)用添加元素函數(shù),將LD,LN等對象加入到相應(yīng)節(jié)點(diǎn)的下面,添加成功后,返回真。實(shí)施例三測試模塊主要是對各種命令的組幀函數(shù)進(jìn)行單測,檢驗(yàn)的方法是將發(fā)送幀輸出到屏幕上,然后將接受到的報(bào)文也輸出到屏幕上,與IEDSC0UT軟件對照即可知道是否接受成功。實(shí)施例四圖5、圖6所示,數(shù)據(jù)接收線程模塊主要是接收來自服務(wù)器端的報(bào)文,把收到的數(shù)據(jù)放入接收緩沖區(qū),當(dāng)接收數(shù)據(jù)有問題時(shí)斷開網(wǎng)絡(luò),之后重新連接,整個(gè)循環(huán)緩沖區(qū)的大小用RECV_BUF_SUE來表示,其中變量headP為從循環(huán)緩沖區(qū)讀到的數(shù)據(jù)位置,每讀一個(gè)位置headP就移動(dòng)一個(gè)位置,tailP為將數(shù)據(jù)往循環(huán)緩沖區(qū)寫的位置,每寫一個(gè)字節(jié)就向前移動(dòng)一個(gè)位置;當(dāng)headP或者tailP的值超過RECV_BUF_SUE時(shí),緩沖區(qū)頭開始讀或?qū)憯?shù)據(jù);當(dāng)寫要超過headP時(shí),也就是緩沖區(qū)不夠?qū)憯?shù)據(jù)時(shí),覆蓋之前沒有處理的數(shù)據(jù)。實(shí)施例五客戶端的最終接口,該接口直接提供給上層程序進(jìn)行調(diào)用,該動(dòng)態(tài)庫的接口函數(shù)有一些函數(shù)構(gòu)成,能實(shí)現(xiàn)傳統(tǒng)的四遙功能,以及錄波等功能,并且能滿足現(xiàn)場的要求,能夠處理程序的一些異常情況,使程序能夠穩(wěn)定的運(yùn)行。
權(quán)利要求
1.一種提高電力監(jiān)控服務(wù)器端報(bào)文處理速度的方法,其特征在于基于IEC61850客戶端的動(dòng)態(tài)庫軟件,實(shí)現(xiàn)與IEC61850服務(wù)器端的連接,提高服務(wù)器發(fā)送的報(bào)文快速有效的處理,包括有編碼模塊、解碼模塊、測試模塊、數(shù)據(jù)接收線程模塊、客戶端動(dòng)態(tài)庫接口模塊和濾波模塊,其實(shí)現(xiàn)過程包括以下步驟,a、所述編碼模塊主要任務(wù)是對各種命令進(jìn)行組幀,組織報(bào)文的依據(jù)是MMS協(xié)議,主要的算法是采用后序編碼,即從緩沖區(qū)的末尾向前進(jìn)行編碼;b、所述解碼模塊由各種命令解幀函數(shù)構(gòu)成,主要用來解析接收緩沖區(qū)的報(bào)文,線程是在初始化MMS成功后和報(bào)文接收線程同時(shí)創(chuàng)建,從緩沖區(qū)取出一幀正確的數(shù)據(jù)放入臨時(shí)緩沖區(qū),然后調(diào)用解幀函數(shù)對報(bào)文進(jìn)行處理;c、所述測試模塊主要是對各種命令的組幀函數(shù)進(jìn)行單測,檢驗(yàn)的方法是將發(fā)送幀輸出到屏幕上,然后將接受到的報(bào)文也輸出到屏幕上,與IEDSC0UT軟件對照即可知道是否接受成功;d、所述數(shù)據(jù)接收線程模塊主要是接收來自服務(wù)器端的報(bào)文,把收到的數(shù)據(jù)放入接收緩沖區(qū),當(dāng)接收數(shù)據(jù)有問題時(shí)斷開網(wǎng)絡(luò),之后重新連接;e、所述是客戶端的最終接口,該接口直接提供給上層程序進(jìn)行調(diào)用,該動(dòng)態(tài)庫的接口函數(shù)有一些函數(shù)構(gòu)成,能實(shí)現(xiàn)傳統(tǒng)的四遙功能,以及錄波等功能,并且能滿足現(xiàn)場的要求, 能夠處理程序的一些異常情況,使程序能夠穩(wěn)定的運(yùn)行。
2.根據(jù)權(quán)利要求1所述的提高電力監(jiān)控服務(wù)器端報(bào)文處理速度的方法,其特征在于 所述步驟a中編碼模塊的組幀有以下三種情況,初始化MMS,只有這個(gè)成功才創(chuàng)建MMS數(shù)據(jù)解析與接收線程;讀取樹節(jié)點(diǎn)報(bào)文,讀樹信息會涉及到很多嵌套,一定要發(fā)送一條命令且等待解析完后才能發(fā)下一條命令,這個(gè)等待用一個(gè)事件來觸發(fā)解析完成,等待會有一個(gè)超時(shí), 超時(shí)會讀取樹節(jié)點(diǎn)函數(shù)會異常退出,程序又要重新開始讀取樹信息,組幀完后調(diào)用發(fā)送函數(shù)就返回,中間不會等待;錯(cuò)誤處理MMS啟動(dòng)報(bào)文是初始化麗S,讀取樹節(jié)點(diǎn)報(bào)文的發(fā)送報(bào)文失敗會讓函數(shù)返回失敗,之后重新建立連接,再次發(fā)送,發(fā)送后失敗后,會斷開網(wǎng)絡(luò)連接, 數(shù)據(jù)接收線程會檢測到這個(gè)狀態(tài),重新連接網(wǎng)絡(luò),這個(gè)報(bào)文不會重新發(fā)送。
3.根據(jù)權(quán)利要求1所述的提高電力監(jiān)控服務(wù)器端報(bào)文處理速度的方法,其特征在于 所述步驟b中解碼模塊算法,首先對固定字節(jié)進(jìn)行比較,判定接收到的報(bào)文是否有錯(cuò);如果沒有錯(cuò),繼續(xù)解析,當(dāng)遇到有所需要的數(shù)據(jù)時(shí),如果為LD,則創(chuàng)建一個(gè)LD對象,為LN,則創(chuàng)建一個(gè)LN對象,其他對象方法一樣;然后調(diào)用添加元素函數(shù),將LD,LN等對象加入到相應(yīng)節(jié)點(diǎn)的下面,添加成功后,返回幀。
全文摘要
一種提高電力監(jiān)控服務(wù)器端報(bào)文處理速度的方法,基于IEC61850客戶端的動(dòng)態(tài)庫軟件,實(shí)現(xiàn)與IEC61850服務(wù)器端的連接,提高服務(wù)器發(fā)送的報(bào)文快速有效的處理,包括有編碼模塊、解碼模塊、測試模塊、數(shù)據(jù)接收線程模塊、客戶端動(dòng)態(tài)庫接口模塊和濾波模塊,所述編碼模塊主要任務(wù)是對各種命令進(jìn)行組幀,組織報(bào)文的依據(jù)是MMS協(xié)議,主要的算法是采用后序編碼,即從緩沖區(qū)的末尾向前進(jìn)行編碼;所述解碼模塊由各種命令解幀函數(shù)構(gòu)成,主要用來解析接收緩沖區(qū)的報(bào)文,報(bào)文的處理方法運(yùn)行穩(wěn)定,處理速度快捷。
文檔編號H04L12/56GK102307138SQ20111020116
公開日2012年1月4日 申請日期2011年7月18日 優(yōu)先權(quán)日2011年7月18日
發(fā)明者丁建義, 劉正方, 廖民康, 張孝山, 林峰平 申請人:深圳市康必達(dá)中創(chuàng)科技有限公司