趙曉楠,于 群
(山東科技大學(xué)信息與電氣工程學(xué)院,山東青島 266510)
現(xiàn)代電力網(wǎng)絡(luò)結(jié)構(gòu)的主要特點(diǎn)是:大容量發(fā)電機(jī)組、超高壓或者特高壓的輸電電壓等級(jí)、遠(yuǎn)距離輸電、大規(guī)模的交直流混聯(lián)電網(wǎng)和較高的自動(dòng)化運(yùn)行水平。在這種形勢(shì)下,對(duì)電力系統(tǒng)網(wǎng)絡(luò)故障后的穩(wěn)定分析和保護(hù)裝置的研發(fā)制造都需要提前進(jìn)行仿真研究。Simulink是Matlab最重要的組件之一,它提供了一個(gè)動(dòng)態(tài)的系統(tǒng)模型建立、模擬仿真以及綜合分析的集成環(huán)境。在這個(gè)環(huán)境下,不用大量編寫(xiě)程序,而只需要通過(guò)非常簡(jiǎn)單地鼠標(biāo)操作,就可以完整地繪制復(fù)雜的電力系統(tǒng)。Simulink具有適應(yīng)性強(qiáng)、繪制過(guò)程清晰以及仿真精度高、相似度高、工作效率高、靈活性等優(yōu)點(diǎn)?;谝陨蟽?yōu)點(diǎn),Simulink已被廣泛應(yīng)用于復(fù)雜電力系統(tǒng)的仿真和計(jì)算之中。
雖然Simulink依托強(qiáng)大的Matlab使其擁有了強(qiáng)大的計(jì)算能力,對(duì)于復(fù)雜的電力系統(tǒng)仿真能輕而易舉地進(jìn)行動(dòng)態(tài)仿真、波形顯示、各種故障的產(chǎn)生等一系列實(shí)際運(yùn)行情況,但是其界面較為復(fù)雜,編程比較困難,用戶界面不夠直觀以及將整個(gè)仿真環(huán)境暴露等一系列缺點(diǎn)也限制了它在實(shí)際中的應(yīng)用。
微軟開(kāi)發(fā)的Visual Basic編程語(yǔ)言作為一種可視化程度高,界面友好的軟件,恰好可以彌補(bǔ)Matlab在這方面的缺陷,即使對(duì)于Matlab不夠熟悉的用戶,也能輕松的完成線路參數(shù)設(shè)置,仿真以及結(jié)果的查看。而且封裝后的VB程序看不出Simulink原本的仿真模型,增強(qiáng)了程序的保密性,因而這二者的結(jié)合,大大提高了Matlab在實(shí)際工程中的應(yīng)用。二者結(jié)合后,既可以作為繼電保護(hù)的平臺(tái)搭建的軟件基礎(chǔ),也可作為繼電保護(hù)課程的教學(xué)演示,在電氣工程的教學(xué)中具有較高的應(yīng)用價(jià)值。
本文通過(guò)ActiveX技術(shù)將Matlab的Simulink與VB相聯(lián)接,并在聯(lián)接成功的基礎(chǔ)上完成了一個(gè)通過(guò)VB調(diào)用Simulink的繼電保護(hù)仿真實(shí)例。
根據(jù)目前的研究情況,Simulink與VB集成主要有以下4種方法:運(yùn)用Microsoft ActiveX部件,借助動(dòng)態(tài)數(shù)據(jù)交換機(jī)制(Dynamic Data Exchange,DDE),通過(guò)調(diào)用MatrixVB和通過(guò)Matlab的程序文件——M文件。在實(shí)際工程中這4種集成方法都可以使用,但要視具體的情況來(lái)選擇具體的方法。前兩種比較適合Client/Server模式,后兩種則應(yīng)該視實(shí)際系統(tǒng)進(jìn)行選擇。
動(dòng)態(tài)數(shù)據(jù)交換機(jī)制允許Microsoft Windows的應(yīng)用程序通過(guò)傳輸數(shù)據(jù)實(shí)現(xiàn)幾者之間的通信。使用DDE通訊需要兩個(gè)Windows應(yīng)用程序,其中MATLAB程序作為服務(wù)器(Server)受理信息,而VB則可以作為客戶端(Client)發(fā)出控制信息??蛻舳讼蚍?wù)器發(fā)送一條程序命令作為請(qǐng)求信息,服務(wù)器則依據(jù)該信息作出處理并返回信息,從而實(shí)現(xiàn)兩個(gè)程序之間的數(shù)據(jù)交換。
Matlab產(chǎn)生的程序文件(M文件)不能直接在VB中調(diào)用,可以利用Matlab自帶命令mcc將M文件編譯成EXE文件,然后需要在VB中聲明三個(gè)API函數(shù),最后使用Shell()命令把VB和Matlab的集成起來(lái)。
MatrixVB是嵌入VB的矩陣函數(shù)庫(kù)。它提供了大量函數(shù),可以強(qiáng)化VB本身較弱的數(shù)學(xué)運(yùn)算能力和圖形圖像處理能力,使VB功能得到極大的擴(kuò)展。在VB編程過(guò)程中使用該工具包可以避免重復(fù)勞動(dòng)從而減少編程人員實(shí)現(xiàn)算法和設(shè)計(jì)界面的困難。
下面主要介紹“運(yùn)用Microsoft ActiveX部件”的方法。
微軟把所有以部件對(duì)象模型(Component Object Model,COM)作為基礎(chǔ)的技術(shù),統(tǒng)稱為ActiveX技術(shù)。自動(dòng)執(zhí)行是大部分ActiveX技術(shù)的特點(diǎn)。它使比較復(fù)雜的計(jì)算機(jī)語(yǔ)言能夠在不知道所控程序的具體內(nèi)容的情況下對(duì)需要控制的對(duì)象進(jìn)行操作。Matlab中還加入了對(duì)ActiveX控件的支持,在VB編程環(huán)境下通過(guò)與ActiveX的接入端口就可以將Simulink作為VB的一個(gè)ActiveX控件調(diào)用。
由于Matlab對(duì)ActiveX技術(shù)的支持。Matlab的Simulink部件可通過(guò)ActiveX技術(shù)接受其它應(yīng)用程序的調(diào)用。Matlab提供了一個(gè)外部名稱為Matlab.Application的對(duì)象,它可以支持COM技術(shù),其他的應(yīng)用程序可以通過(guò)COM技術(shù)提供的函數(shù)獲得操作控制對(duì)象的接口地址,通過(guò)調(diào)用接口地址的函數(shù)便可直接控制和使用被操控的對(duì)象了。VB支持ActiveX被控端協(xié)議,而Matlab支持作為ActiveX服務(wù)器端的協(xié)議,所以理論上VB通過(guò)ActiveX技術(shù)完全可以調(diào)用Matlab進(jìn)行仿真。
以下代碼可以在VB中啟動(dòng)Matlab的服務(wù)器功能:
這樣就創(chuàng)建好了ActiveX對(duì)象,接下來(lái)可以在VB中對(duì)Matlab進(jìn)行操作了。
Matlab中集成了一些可以在VB中使用的函數(shù),可以在VB中使用作為被控服務(wù)器端。
(1)Matlab.Execute
這條命令可以調(diào)用Matlab來(lái)執(zhí)行一條Matlab命令,然后返回一個(gè)命令完成情況字符串。它的具體格式為:Matlab.Execute([in]Bstr Command),″Bstr″是指字符串類型,″Command″是指所有在Matlab中可以執(zhí)行的命令,輸入的參數(shù)可以是任何可以在Matlab中執(zhí)行的命令,并將執(zhí)行結(jié)果以字符串的形式返回VB。
(2)Matlab.GetFullMatrix
這條命令可以將Matlab中的一個(gè)矩陣放到VB程序里的一個(gè)數(shù)組中。格式為:Matlab.Get-FullMatrix([in]BSTR Name,[in]BSTR Workspace,[in,out]SAFEARRAY(double)*pr&pi)。
″BSTR″指字符串格式類型,″Name″是矩陣的名稱;″Workspace″指的是MATLAB中矩陣的工作空間;pr和pi則分別是VB里數(shù)組的實(shí)部和虛部,數(shù)據(jù)類型是雙精度。
(3)Matlab.PutFullMatrix
可以將VB程序中的一個(gè)數(shù)組傳送到Matlab的一個(gè)矩陣中。其格式和使用方法與GetFullMatrix類似。
(4)Matlab.MaximizeCommandWindow
可以將Matlab的命令窗口最大化,使用方法為:Call MaximizeCommandWindow()。
(5)Matlab.MinimizeCommandWindow
用來(lái)將Matlab的命令窗口最小化,使用方法為:Call MinimizeCommandWindow()。
距離保護(hù)是反應(yīng)線路發(fā)生故障的地方到保護(hù)安裝處之間的距離(或阻抗),并根據(jù)測(cè)算出的距離遠(yuǎn)近來(lái)確定保護(hù)動(dòng)作的時(shí)間的一種繼電保護(hù)裝置。該裝置的主要部件就是阻抗繼電器,它可根據(jù)在它采集端上所施加的電壓和電流來(lái)測(cè)知保護(hù)安裝處至短路點(diǎn)間的阻抗值,此阻抗便是繼電器的測(cè)量阻抗。距離保護(hù)裝置就是對(duì)采集到得測(cè)量阻抗與事先確定的整定阻抗值進(jìn)行比較從而確定保護(hù)是否動(dòng)作的一種保護(hù)裝置。
由于ZJ可以寫(xiě)成R+jX的形式,于是就可以利用復(fù)平面來(lái)分析繼電器的動(dòng)作特性,最終可以用一個(gè)坐標(biāo)軸上的幾何圖形把它的動(dòng)作特性表示出來(lái)。
方向阻抗繼電器是以整定阻抗Zset為直徑而通過(guò)坐標(biāo)原點(diǎn)的一個(gè)圓,動(dòng)作特性如圖1所示,整定圓內(nèi)為動(dòng)作區(qū),圓外為不動(dòng)作區(qū)。
圖1 方向阻抗繼電器的特性
圖2 系統(tǒng)仿真線路圖
繼電器能夠動(dòng)作(即測(cè)量阻抗ZJ位于圓內(nèi))的條件是:
BC相阻抗繼電器的Simulink仿真模型如圖2所示,采用的是500kV單側(cè)電源系統(tǒng),輸電線路采用分布式線路。每條線路首末端均將采集到得電壓、電流值傳入WorkSpace中;仿真時(shí)間設(shè)定為0.2s,在 0.1s時(shí)發(fā)生三相故障。通過(guò) M 文件,調(diào)用保護(hù)1處的電壓、電流數(shù)據(jù)進(jìn)行分析,判斷是否有故障發(fā)生并在故障發(fā)生后及時(shí)切斷線路。
VB界面如圖3所示,其中,線路圖為實(shí)際線路模型,故障點(diǎn)已在圖中標(biāo)出,雙擊線路還可以更改線路參數(shù),如圖4所示。
圖3 VB前臺(tái)運(yùn)行界面
圖4 VB前臺(tái)運(yùn)行界面(線路參數(shù)修改)
主要程序部分代碼如下:
點(diǎn)擊開(kāi)始仿真按鈕后,執(zhí)行結(jié)果如圖5和圖6所示。
圖5 VB前臺(tái)運(yùn)行結(jié)果界面1
圖6 VB前臺(tái)運(yùn)行結(jié)果界面2
BC相阻抗繼電器的VB程序運(yùn)行結(jié)果表明,當(dāng)0.1s發(fā)生三相故障時(shí),保護(hù)1處BC相阻抗繼電器的測(cè)量阻抗軌跡落在阻抗圓中,保護(hù)動(dòng)作;而當(dāng)沒(méi)有故障發(fā)生時(shí),測(cè)量阻抗沒(méi)有落在阻抗圓中,因此保護(hù)不會(huì)動(dòng)作。
通過(guò)VB調(diào)用Simulink實(shí)例可以發(fā)現(xiàn),用這種方法,不僅能夠直觀地看到線路的構(gòu)成,而且能實(shí)時(shí)修改相應(yīng)仿真模型的參數(shù),并且將仿真結(jié)果實(shí)時(shí)顯示出來(lái);并且能夠?qū)⒄鎸?shí)模型隱藏,達(dá)到保密程序的作用。
[1]黎洪生,龔 榮,陳 雷.基于MATLAB與VB混合編程的電力系統(tǒng)仿真設(shè)計(jì)[J].電力科學(xué)與工程,2004.
[2]于 群,曹 娜.電力系統(tǒng)微機(jī)繼電保護(hù)[M].機(jī)械工業(yè)出版社,2008.
[3]張 菁,陳宇晨,Matlab與VB的集成在電力系統(tǒng)潮流計(jì)算中的應(yīng)用[J].微計(jì)算機(jī)信息,2007,(2).
[4]陳 皓.微機(jī)保護(hù)原理及算法防真[M].中國(guó)電力出版社,2007.
[5]韓 笑,徐 曦,陳卓平.基于Matlab與VB數(shù)據(jù)交換的繼電保護(hù)仿真[J].電力自動(dòng)化設(shè)備,2006,26(5).