王軍偉
(中博信息技術(shù)研究院有限公司 江蘇 南京)
自動(dòng)化裝置維護(hù)軟件中的通信構(gòu)件的開發(fā)方法
王軍偉
(中博信息技術(shù)研究院有限公司江蘇南京)
自動(dòng)化設(shè)備裝置之間的通訊信息通過通信構(gòu)件傳遞,考慮現(xiàn)場(chǎng)磁場(chǎng)對(duì)設(shè)備通信的影響,采用了類套接字這種通訊技術(shù)。本文介紹通信構(gòu)件在自動(dòng)化設(shè)備維護(hù)軟件中的開發(fā)方式,闡述了類套接字通信技術(shù)的通信基本原理。并且分析軟件中相關(guān)構(gòu)件間的結(jié)構(gòu)組成關(guān)系以及在整個(gè)軟件中通信構(gòu)件起到的重大作用。
類套接字;通信構(gòu)件;自動(dòng)化裝置
電網(wǎng)的穩(wěn)定運(yùn)行有賴于繼電保護(hù)裝置的支持。繼電保護(hù)設(shè)備維護(hù)工作顯得尤為重要。在我國,繼電保護(hù)裝置的開發(fā)剛剛起步,維護(hù)工作也很薄弱。所以開發(fā)性能卓越的繼電保護(hù)支持軟件是非常迫切的工作任務(wù)。目前繼電保護(hù)工作人員在電力系統(tǒng)維護(hù)中使用仿真軟件工作,但這些軟件具有很大的局限性,在特定場(chǎng)合無法完成繼電保護(hù)自動(dòng)化設(shè)備的開發(fā)維護(hù)相關(guān)工作。此外,在工程中還需要對(duì)參數(shù)進(jìn)行設(shè)定、數(shù)據(jù)提取分析和定值整定。
在現(xiàn)代信息通信傳遞過程中通常使用Windows Socket套接字技術(shù)。這種通信方式中服務(wù)器守護(hù)進(jìn)程優(yōu)先創(chuàng)建啟動(dòng)監(jiān)聽,當(dāng)有客戶端發(fā)送鏈接請(qǐng)求時(shí),監(jiān)聽收到響應(yīng),再進(jìn)行通信套接字,應(yīng)答客戶端,進(jìn)行會(huì)話。這是客戶端創(chuàng)建對(duì)應(yīng)套接字,實(shí)現(xiàn)通信任務(wù)。上述的傳統(tǒng)消息通道處理程序,他的特點(diǎn)是通信的安全可靠,并且效率高。為了提高電力通信的可靠性,通信構(gòu)件吸納Windows Socket套接字通信技術(shù)中的通信思想,摒棄綁定地址的結(jié)構(gòu),形成類套接字通信技術(shù)。
通信構(gòu)件一般采用互斥機(jī)制線程來確保裝置與維護(hù)軟體結(jié)構(gòu)間的通信數(shù)據(jù)安全、連貫和穩(wěn)定。在信息傳遞過程中,支撐機(jī)器作為客戶端,偽服務(wù)器有保護(hù)裝置充當(dāng)。在維護(hù)通信數(shù)據(jù)分析時(shí),偽服務(wù)器從保護(hù)狀態(tài)變換成人機(jī)對(duì)話模式,并且啟動(dòng)通訊子模塊。串行模塊在啟動(dòng)后創(chuàng)建通訊接口進(jìn)程,并建立邏輯控制監(jiān)視類套接字連接請(qǐng)求。如果發(fā)現(xiàn)請(qǐng)求連接,立刻建立邏輯數(shù)據(jù)庫類套接字的接收。
維護(hù)支撐軟體分為五個(gè)子支撐通信部件,為了實(shí)現(xiàn)五個(gè)部分?jǐn)?shù)據(jù)共享,軟體系統(tǒng)所有通信功能共同封裝在一個(gè)通信構(gòu)件中,通過動(dòng)態(tài)鏈接庫實(shí)現(xiàn)數(shù)據(jù)共享。每個(gè)軟體支撐經(jīng)過共同的動(dòng)態(tài)鏈接數(shù)據(jù)庫獲得通信條件功能。動(dòng)態(tài)庫中的開源社區(qū)引擎函數(shù)通過預(yù)設(shè)參數(shù)對(duì)串口文件處理,當(dāng)需要接口裝置發(fā)送數(shù)據(jù)時(shí),通過對(duì)動(dòng)態(tài)數(shù)據(jù)庫中的send函數(shù)調(diào)用,啟動(dòng)線程發(fā)送指令,發(fā)送數(shù)據(jù)信息。當(dāng)接口裝置反饋信息時(shí),通過串口監(jiān)視函數(shù)listen的調(diào)用,啟動(dòng)接收任務(wù)。這種類套接字通信將發(fā)送、接收、處理和報(bào)文檢驗(yàn)融為一體。
2.1報(bào)文校驗(yàn)
在報(bào)文數(shù)據(jù)傳輸過程中,受附近磁場(chǎng)干擾嚴(yán)重時(shí),必須采取有效防護(hù)措施。否則可能造成數(shù)據(jù)丟失或接收錯(cuò)誤。所以在報(bào)文數(shù)據(jù)接收后必須進(jìn)行報(bào)文校驗(yàn)。通常采用的校驗(yàn)方式有兩種,分別是幀序號(hào)檢測(cè)和校驗(yàn)循環(huán)的冗余碼,以此來確保數(shù)據(jù)完整正確。
幀序號(hào)檢測(cè)法:
幀序號(hào)的校驗(yàn)方式需要在每個(gè)幀數(shù)據(jù)中加入一個(gè)字節(jié)進(jìn)行標(biāo)號(hào),通過兩種手段對(duì)數(shù)據(jù)完整性進(jìn)行校驗(yàn)。
(1)通過驗(yàn)證預(yù)設(shè)幀序號(hào)的連貫性,確定數(shù)據(jù)中是否丟失片段。在接收到數(shù)據(jù)信息后,如果預(yù)設(shè)的幀序號(hào)不連續(xù),中間出現(xiàn)一個(gè)或多個(gè)幀序號(hào)缺失,則可判斷數(shù)據(jù)片段丟失情況,可向發(fā)送端請(qǐng)求重發(fā)數(shù)據(jù)丟失序列部分。
(2)通過對(duì)每段數(shù)據(jù)結(jié)束幀設(shè)置標(biāo)記,來檢驗(yàn)數(shù)據(jù)是否完全接受。在接收端對(duì)結(jié)束標(biāo)志進(jìn)行判斷,確保該幀報(bào)文數(shù)據(jù)正常結(jié)束,則表明數(shù)據(jù)完整。該方法需要確定報(bào)文結(jié)束分段標(biāo)志設(shè)置、分段長(zhǎng)短,在每幀荷載有效數(shù)據(jù)一定下,報(bào)文的長(zhǎng)短決定了設(shè)置結(jié)束幀數(shù)量的多少,并且決定了幀序號(hào)的多少。通常報(bào)文數(shù)據(jù)分為命令和保護(hù)兩類。命令報(bào)文短小,保護(hù)報(bào)文冗長(zhǎng)。為了確保數(shù)據(jù)完成性,以最長(zhǎng)的錄波報(bào)文進(jìn)行代表性分析。錄波報(bào)文通常包含故障曲線數(shù)據(jù)、保護(hù)動(dòng)作類型和狀態(tài)的信息。而其中錄波曲線又包含五個(gè)部分,分別是啟動(dòng)部分,跳閘動(dòng)作,重合閘動(dòng)作,加速啟動(dòng)和加速跳閘。根據(jù)大量數(shù)據(jù)研究顯示,實(shí)際最大總長(zhǎng)度一般不超過15000個(gè)字節(jié)。為了系統(tǒng)升級(jí)后能傳輸更長(zhǎng)的數(shù)據(jù)報(bào)文,報(bào)告長(zhǎng)度預(yù)加3000字節(jié),這樣總長(zhǎng)度最大值設(shè)定為18000字節(jié)。每幀報(bào)文按照荷載250字節(jié)計(jì)算,傳輸總字節(jié)需要72幀,所以幀序號(hào)最多可用7位的二進(jìn)制數(shù)組成。并且把幀序號(hào)最高位字節(jié)留作幀的結(jié)束標(biāo)志。在接收數(shù)據(jù)是,如果是最后一幀,則將其標(biāo)記為0,拖過不是則該位設(shè)置為1,這樣就可以正確判斷接收的所有幀是否完整了。
循環(huán)冗余碼校驗(yàn):
在差錯(cuò)控制理論中,有一種生成多項(xiàng)式方式,循環(huán)冗余碼驗(yàn)證求取其中的線性分組碼,有效的驗(yàn)證發(fā)送和接收的數(shù)據(jù)內(nèi)容是都一致。該方式的驗(yàn)證流程為:發(fā)送端使用需要發(fā)送的數(shù)據(jù)信息碼除以生成多項(xiàng)式,從而得到數(shù)據(jù)校驗(yàn)碼,并且把信息碼和檢驗(yàn)碼一同發(fā)送給接收端。而接收端在接受數(shù)據(jù)信息后,將校驗(yàn)碼與自己通過信息碼計(jì)算的校驗(yàn)碼進(jìn)行比對(duì),一次判斷數(shù)據(jù)接收正確性。在不同的通信方式中,對(duì)于循環(huán)冗余校驗(yàn)的實(shí)施方式也不相同。以太網(wǎng)數(shù)據(jù)通信中一般是以太網(wǎng)控制器進(jìn)行實(shí)施的,而串口通信則分為四種方式。四種方式分別為字節(jié)查表法、比特軟件模擬法、代數(shù)計(jì)算法和硬件電路生成法。結(jié)合電力通信系統(tǒng)的特點(diǎn),綜合比對(duì)各種算法,通信構(gòu)件最終采用字節(jié)查表法進(jìn)行。
2.2信息發(fā)送
客戶端支撐機(jī)總是優(yōu)先向接口裝置發(fā)送數(shù)據(jù)信息,接口裝置在接收數(shù)據(jù)信息后,組織數(shù)據(jù)信息,并將數(shù)據(jù)反饋傳輸給支撐機(jī)。數(shù)據(jù)信息發(fā)送根據(jù)數(shù)據(jù)性質(zhì)的不同分為命令報(bào)文還有數(shù)據(jù)報(bào)文兩類。數(shù)據(jù)報(bào)文大多數(shù)需要將數(shù)據(jù)分多幀進(jìn)行發(fā)送,而命令報(bào)文通常采用的是單幀發(fā)送。
(1)命令發(fā)送
命令幀數(shù)據(jù)結(jié)構(gòu)緩沖區(qū)mBuffer必須根據(jù)通訊協(xié)議填寫,內(nèi)容包含1個(gè)字節(jié)幀數(shù)據(jù)長(zhǎng)度、2字節(jié)循環(huán)冗余校驗(yàn)碼和1個(gè)字節(jié)功能碼。調(diào)用OpenCOM必須根據(jù)配置的參數(shù)進(jìn)行調(diào)用。發(fā)送命令前首先實(shí)例化m_serial,這是因?yàn)槿客ㄐ殴δ芏荚谕ㄐ蓬怌Communicate中封裝。
啟動(dòng)SendThread線程首先要調(diào)用m_serial中的send程序。由SendThread發(fā)送線程將4字節(jié)的數(shù)據(jù)命令報(bào)文寫入串口,進(jìn)而發(fā)送數(shù)據(jù)到接口裝置。最后啟動(dòng)RecvThread接收線程監(jiān)視串口,準(zhǔn)備接收命令報(bào)文。
(2)數(shù)據(jù)發(fā)送
數(shù)據(jù)報(bào)文與命令報(bào)文具有相同的發(fā)送方式,但數(shù)據(jù)報(bào)文需要?jiǎng)?chuàng)建的緩沖區(qū)與命令報(bào)文存在差異。整個(gè)數(shù)據(jù)報(bào)文的發(fā)送過程為:計(jì)算發(fā)送數(shù)據(jù)的每幀字節(jié)數(shù)量,根據(jù)實(shí)際情況確定計(jì)算發(fā)送幀數(shù)量,填寫并發(fā)送數(shù)據(jù)幀,在發(fā)送出最后一幀數(shù)據(jù)后,調(diào)用Listen函數(shù),并且以此啟動(dòng)RecvThread接收線程,做好接收準(zhǔn)備。
2.3信息接收處理
支撐軟件中的通信構(gòu)件在接收到報(bào)文后立刻使用消息映射機(jī)制將數(shù)據(jù)消息通過函數(shù)進(jìn)行處理。信息接收處理主要分為命令報(bào)文和數(shù)據(jù)報(bào)文的接收處理反應(yīng)。兩者根據(jù)形勢(shì)差異而有所不同。
在自動(dòng)化裝置維護(hù)軟件體系中,通信構(gòu)件模式工作量大,為了提高工程效率,開發(fā)了NDT65綜合自動(dòng)化系統(tǒng)軟件支撐構(gòu)架。該系統(tǒng)包括五個(gè)相對(duì)獨(dú)立的分析軟件,相互之間共享數(shù)據(jù)庫,通過通信構(gòu)件調(diào)度傳遞處理數(shù)據(jù)。而數(shù)據(jù)主要來源是保護(hù)繼電裝置。由此可見,通信構(gòu)件是系統(tǒng)功能中的重要組成部分。為了降低現(xiàn)場(chǎng)工程中磁場(chǎng)對(duì)通信過程的影響,構(gòu)件采用類套接字通信技術(shù)用以開發(fā)。類套接字通信技術(shù)的開發(fā)應(yīng)用,提高了通信構(gòu)件在系統(tǒng)中的穩(wěn)定性、安全性和高效性。自動(dòng)化裝置的維護(hù)工作因?yàn)殚_發(fā)的通信構(gòu)件軟體的重要作用而變得更加有效。
NDT65綜合自動(dòng)化系統(tǒng)軟件支撐構(gòu)架已經(jīng)初步研發(fā)完成,并且由國家電力公司審核鑒定通過驗(yàn)證,達(dá)到了同類產(chǎn)品先進(jìn)標(biāo)準(zhǔn)。在自動(dòng)化裝備研制過程中,通過串口讀寫接口裝置測(cè)控保護(hù)數(shù)據(jù)。把故障波形數(shù)據(jù)下裝到接口保護(hù)裝置,分析動(dòng)作特性。在磁性較強(qiáng)的現(xiàn)場(chǎng),安裝調(diào)試人員根據(jù)實(shí)際情況調(diào)試設(shè)備。
[1]張福生,吳秋瑞,張建成.電力系統(tǒng)微機(jī)保護(hù)的Matlab仿真插值算法[J].微計(jì)算機(jī)信息,2006,2(1):272~274.
[2]施文濟(jì).如何實(shí)現(xiàn)Matlab與SPICE仿真分析之間的轉(zhuǎn)換[J].微計(jì)算機(jī)信息,2006,2(1):269~270.
TP311
A
1673-0038(2015)28-0230-02
2015-5-28