MATPOWER快速上手及应用实例
MATPOWER5.0b1安裝包:https://download.csdn.net/download/qq_29629293/12839984
MATPOWER中文手冊:https://download.csdn.net/download/qq_29629293/12839772
MATPOWER安裝過程在這里:https://blog.csdn.net/qq_29629293/article/details/108568544
目錄
- 1、各文件的意義
- 2、使用方法
- 3、可運行的算法
- 4、case文件格式
- 5、實例及計算結(jié)果介紹
本文主要參考《MATPOWER手冊(中文版)》。
由于使用手冊很長,用起來不太容易看,在這里想通過文章給大家分享一下我對于MATPOWER的學(xué)習(xí)過程和使用方法。
話不多說,直接上過程——
1、各文件的意義
MATPOWER中有一百多個文件和文件夾,在進(jìn)行計算的時候并不是所有的文件都要用到,它們之間的關(guān)系更多的是嵌套。在這里就先介紹一下部分經(jīng)常用到的文件的含義。
(手冊3.7節(jié))
1、數(shù)據(jù)輸入文件:(一般是case開頭的文件,后面數(shù)字是幾就是幾節(jié)點系統(tǒng))
| caseformat.m | 輸入數(shù)據(jù)格式匹配的文檔 |
| case_ieee30.m | IEEE30節(jié)點系統(tǒng) |
| case118.m | IEEE118 節(jié)點系統(tǒng) |
| case14.m | IEEE14節(jié)點系統(tǒng) |
| case30.m | 改進(jìn)的IEEE30節(jié)點系統(tǒng) |
| case30pwl.m | 分段線性成本結(jié)構(gòu)的case30.m |
| case30Q.m | 帶無功成本的case30.m |
| case300.m | IEEE300節(jié)點系統(tǒng) |
| case39.m | 39節(jié)點系統(tǒng) |
| case4gs.m | 從Grainger&Steveson轉(zhuǎn)化的4節(jié)點系統(tǒng) |
| case57.m | IEEE57節(jié)點系統(tǒng) |
| case6ww.m | 來自于Wood&Wollenberg的1節(jié)點系統(tǒng) |
| case9.m | 3機9節(jié)點系統(tǒng)(默認(rèn)案例) |
| case9Q.m | 帶無功成本的9節(jié)點系統(tǒng) |
2、高層方案:(一般是以run開頭,可直接運行一個方法的潮流計算)
| cdf2matp.m | 將數(shù)據(jù)從IEEE CDF的格式轉(zhuǎn)換成MATPOWER的格式 |
| runpf.m | 運行一個潮流計算程序 |
| runopf.m | 運行一個最優(yōu)潮流計算程序 |
| rundcpf.m | 運行一個直流潮流計算 |
| rundcopf.m | 運行一個直流最優(yōu)潮流計算 |
| runcomp.m | 運行兩個最優(yōu)潮流并且比較他們的結(jié)果 |
| runuopf.m | 運行一個可以處理高價機組停機的OPF |
| runduopf.m | 運行一個可以處理高價機組停機的直流OPF |
3、其他的文件:(暫且不用看,在使用過程中基本用不到)
注、如果需要基于MATPOWER進(jìn)行開發(fā)的話,可根據(jù)手冊的文件名,在MATLAB中打開對應(yīng)文件進(jìn)行修改。
2、使用方法
1、進(jìn)行簡單的潮流計算(手冊2.3、2.4)
(1)運行一個簡單的牛頓潮流。其中包括默認(rèn)的運算法則選項,默認(rèn)為‘case9’,在matlab命令行中輸入:
runpf()
若要運行指定文件的話,則在命令行鍵入:
runpf(‘case5’)
(2)計算最優(yōu)潮流。計算一個數(shù)據(jù)在case30.m文件中的30節(jié)點的最優(yōu)潮流系統(tǒng),以默認(rèn)的算法選項,maitlab的命令行鍵入:
runopf(‘case30’)
計算相同的系統(tǒng),但是以關(guān)閉高耗機組處理的方式運行,輸入:
runuopf(‘case30’)
2、設(shè)置不同的選項進(jìn)行計算(手冊3.6)
MATPOWER采用一個選項向量“mpoption”來達(dá)到對選項的控制。在MATLAB命令行輸入mpoption就可以顯示出MATPOWER的默認(rèn)選項內(nèi)容。
點開工作區(qū)的“ans”可以看到每個數(shù)值及矩陣、結(jié)構(gòu)體詳情:
MATPOWER選項向量實現(xiàn)下列控制:
- 潮流計算
- 潮流計算的終止標(biāo)準(zhǔn)
- 最優(yōu)潮流(OPF)算法
- 對不同成本模型的默認(rèn)OPF算法
- OPF的成本轉(zhuǎn)換參數(shù)
- OPF的中止標(biāo)準(zhǔn)
- 冗余水平
- 結(jié)果輸出方式
MATPOWER選項向量中有關(guān)潮流計算的選項功能描述見下表:
MATPOWER選項向量中有關(guān)潮流計算輸出結(jié)果的選項功能描述見下表:
我們打開mpoption.m文件來看一看:
首先看到的是一段注釋,在這些注釋中介紹了mpoption這一個函數(shù)中,所輸入的參數(shù)個數(shù)和內(nèi)涵。
| OPT = MPOPTION | 返回默認(rèn)選項結(jié)構(gòu)體。 |
| OPT = MPOPTION(OVERRIDES) | 返回默認(rèn)選項結(jié)構(gòu),其中一些字段被重寫的值覆蓋,這些字段可以是結(jié)構(gòu),也可以是返回結(jié)構(gòu)的函數(shù)的名稱。 |
| OPT = MPOPTION(NAME1, VALUE1, NAME2, VALUE2, …) | (選項,數(shù)值,選項,數(shù)值……),一個數(shù)值對應(yīng)一個選項成對出現(xiàn)。名稱可以是單獨的字段,也可以是嵌入周期的多級字段名稱。這些值可以是標(biāo)量或結(jié)構(gòu)。 |
| OPT = MPOPTION(OPT0) | 將原來的選項向量OPT0轉(zhuǎn)換為相應(yīng)的選項結(jié)構(gòu)。若TOP0已為結(jié)構(gòu)體則無需操作。 |
| OPT = MPOPTION(OPT0, OVERRIDES) | 對現(xiàn)有的選項集OPT0應(yīng)用覆蓋,它可以是原來的選項向量或選項結(jié)構(gòu)體。 |
| OPT = MPOPTION(OPT0, NAME1, VALUE1, NAME2, VALUE2, …) | 和上面的一樣,只是它以舊樣式的選項向量OPT0作為基礎(chǔ),而不是舊的默認(rèn)選項向量。 |
| OPT_VECTOR = MPOPTION(OPT, []) | 從選項結(jié)構(gòu)OPT中創(chuàng)建并返回原來樣式的選項向量。 |
使用方式如下:
首先獲取默認(rèn)的選項向量(命令行鍵入):
mpopt=mpoption;
比方說,我們要使用快速解耦法對數(shù)據(jù)文件‘case57’進(jìn)行潮流計算,則需在命令行先后輸入下面兩行:
mpopt=mpoption(mpopt,‘PF_ALG’,2);
runpf(‘case57’,mpopt);
如果我們需要系統(tǒng)運算的概要信息和機組信息,則可進(jìn)行如下設(shè)置:
mpopt=mpoption(mpopt,‘OUT_BUS’,0,‘OUT_BRANCH’,0,‘OUT_GEN’,1);
%不打印母線細(xì)節(jié)信息和支路信息,只打印機組信息
3、計算結(jié)果的獲得
潮流計算的結(jié)果就是需要得到系統(tǒng)中每個節(jié)點的電壓幅值、相角和輸出的有功功率、無功功率。要想獲得這些數(shù)據(jù)可以通過下面的四句:
Um=results.bus(:,8);
Ua=results.bus(:,9);
PL=results.branch(:,14);
QL=results.branch(:,15);
拿Um來說,可見,在最后結(jié)果的bus結(jié)構(gòu)體中,第8列為電壓的幅值,所以我們選擇第8列所有行的數(shù)據(jù)作為電壓的幅值提取出來。
4、調(diào)試
為了深入學(xué)習(xí)潮流計算的過程,可以用調(diào)試的方法對MATPOWER程序分析。
例如:
(1)在MATLAB中打開runpf.m,并在下面的程序處設(shè)置斷點:
然后再命令行輸入一下命令:
runpf(‘case5’)
當(dāng)程序運行到斷點后自動暫停,在工作區(qū)出現(xiàn)了很多中間變量:
此時在命令行中輸入“Ybus”,即可以顯示出系統(tǒng)的導(dǎo)納矩陣(注意:輸出為稀疏矩陣),結(jié)果如下:
也可以在工作區(qū),找到Y(jié)bus矩陣,雙擊直接在“變量”對話框中查看:
(2)若要了解在采用牛頓法計算潮流的迭代過程,可打開文件newtonpf.m,并在下處設(shè)置斷點:
當(dāng)程序運行到斷點后自動暫停,此時便可在工作區(qū)找到Vm、Va、F等迭代過程中各節(jié)點的電壓及功率誤差。
5、獲得其他函數(shù)的幫助文檔(手冊2.5)
當(dāng)擁有MATLAB的內(nèi)部函數(shù)和工具箱代碼時,通過輸入help加上命令或者M(jìn)文件的名稱可以獲得詳細(xì)的函數(shù)說明,幾乎所有的MATPOWER 的M文件都有這樣的文檔。
3、可運行的算法
這一部分屬于現(xiàn)代電力系統(tǒng)分析的內(nèi)容,從手冊目錄就可以看到MATPOWER可以進(jìn)行的運算方法有哪些:
4、case文件格式
首先,我們打開一個case文件,例如‘case5’:
在這里,我們定義了一個mpc結(jié)構(gòu)體,名稱為‘case5’,往下滑動頁面可以看到這個結(jié)構(gòu)體中的所有字段:
1、version:數(shù)據(jù)文件格式的版本,共有兩種——version1和version2。MATPOWER3.0及以前的版本采用version1。現(xiàn)在一般都采用version2。
2、baseMVA:設(shè)置基準(zhǔn)容量*(有名值)*,是一個標(biāo)量,一般設(shè)為100。
3、bus:設(shè)置網(wǎng)絡(luò)中各母線參數(shù),是一個矩陣,每一行對應(yīng)一個單一的母線,每一列的含義如下表:
| bus_i | 設(shè)置母線編號 |
| type | 設(shè)置母線類型,1-PQ節(jié)點,2-PV節(jié)點,3-平衡(參考)節(jié)點,4-孤立節(jié)點 |
| Pd、Qd | 設(shè)置母線注入負(fù)荷的有功功率和無功功率* |
| Gs、Bs | 設(shè)置與母線并聯(lián)的電導(dǎo)和電納 |
| baseKV | 設(shè)置該母線的基準(zhǔn)電壓Vm、Va |
| Vmax、Vmin | 設(shè)置工作時母線最高、最低電壓幅值 |
| area | 設(shè)置電網(wǎng)斷面號,設(shè)置范圍1~100,一般設(shè)為1 |
| zone | 設(shè)置斷網(wǎng)分區(qū)號,設(shè)置范圍1~999,一般設(shè)為1 |
它們在矩陣中的排列需要按照如下順序:
4、gen:設(shè)置接入電網(wǎng)中的發(fā)電機(電源)參數(shù),是一個矩陣,字段含義如下:
| bus | 設(shè)置接入發(fā)電機(電源)的母線編號 |
| Pg、Qg | 設(shè)置接入發(fā)電機(電源)的有功功率和無功功率* |
| Pmax、Pmin | 設(shè)置接入發(fā)電機(電源)的有功功率最大、最小允許值 |
| Qmax、Qmin | 設(shè)置接入發(fā)電機(電源)的無功功率最大、最小允許值 |
| Vg | 設(shè)置接入發(fā)電機(電源)的工作電壓 |
| mBase | 設(shè)置接入發(fā)電機(電源)的功率基準(zhǔn) |
| status | 設(shè)置發(fā)電機(電源)工作狀態(tài),1表示投入,0表示退出 |
它們在矩陣中的排列需要按照如下順序:
5、branch:設(shè)置電網(wǎng)中的各支路參數(shù),是一個矩陣,字段含義如下:
| fbus、tbus | 設(shè)置該支路起始節(jié)點(母線)編號和終止節(jié)點(母線)編號 |
| r、x、b | 設(shè)置該支路的電阻、電抗和充電電納 |
| rateA、rateB、rateC | 設(shè)置該支路長期、短期和緊急允許功率 |
| ratio | 設(shè)置該支路的變比。如果支路是導(dǎo)線,則為0;如果支路是變壓器,則為fbus側(cè)母線基準(zhǔn)電壓與tbus側(cè)母線的基準(zhǔn)電壓之比 |
| angle | 設(shè)置支路的相位角度。如果支路為導(dǎo)線,則為0;如果支路為變壓器(或移相器),就是變壓器(或移相器)的轉(zhuǎn)角 |
| status | 設(shè)置支路工作狀態(tài),1表示投入,0表示退出 |
| angmin、angmax | 設(shè)置支路相位角度的最小和最大差值 |
它們在矩陣中的排列需要按照如下順序:
6、area:區(qū)域數(shù)據(jù)格式(已棄用)。MATPOWER不使用此數(shù)據(jù),并且對于帶有OPF數(shù)據(jù)的version2案例文件不再需要此數(shù)據(jù)。
7、gencost:發(fā)電機功率成本,如果gen有ng行,則gencost的第一行ng行包含對應(yīng)發(fā)電機產(chǎn)生有功功率的成本。如果gencost有2ng行,那么行ng+1到2ng包含相同格式的無功成本。
| model | 模型。1 -分段線性,p0 <p1 <…<pn和代價f§由坐標(biāo)(p0,f0), (p1,f1),…, (pn,fn)的分段線性代價函數(shù)的結(jié)束點/斷點;2 -多項式 ,n階多項式代價函數(shù)的n+1個系數(shù),從最高階開始,其中代價為f§ = cn * p^n +…+ c1*p + c0 |
| startup | 啟動成本(美元) |
| shutdown | 關(guān)閉成本(美元) |
| N | 多項式成本函數(shù)遵循的成本系數(shù)數(shù),或分段線性遵循的數(shù)據(jù)點數(shù) |
| 其余參數(shù) | 定義總成本函數(shù)f§的參數(shù),f和p的單位分別是$/hr和MW(或MVAr)。 |
數(shù)據(jù)格式詳見caseformat.m文件
5、實例及計算結(jié)果介紹
接下來,我們對一個簡單地電力系統(tǒng)通過MATPOWER進(jìn)行簡單地潮流計算。
電力系統(tǒng)圖如上圖所示。
我們需要在文件夾內(nèi)創(chuàng)建一個.m 文件,將它命名為case5_01.m:
然后,我們將下面的代碼放入文件內(nèi):
function mpc=case5_01
% MATPOWER Case Format:Version 2
mpc.version=‘2’;
%%------Power Flow Data------%%
%% system MVA base
mpc.baseMVA=100;
%% Bus data
% bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin
mpc.bus=[
1 1 160 80 0 0 1 1 0 100 1 1.1 0.94;
2 1 200 100 0 0 1 1 0 100 1 1.1 0.94;
3 1 370 130 0 0 1 1 0 100 1 1.1 0.94;
4 2 0 0 0 0 1 1.05 0 100 1 1.1 0.94;
5 3 0 0 0 0 1 1.05 0 100 1 1.1 0.94;
];
%% generator data
% bus Pg Qg Qmax Qmin Vg mbase status Pmax Pmin
mpc.gen=[
4 500 0 99990 -9999 1.05 100 1 600 0;
5 0 0 99990 -9999 1.05 100 1 600 0;
];
%% branch data
% fbus tbus r x b rataA rataB rataC ratio angle status angmin angmax
mpc.branch=[
2 1 0.04 0.25 0.5 0 0 0 0 0 1 -360 360;
3 1 0.1 0.35 0 0 0 0 0 0 1 -360 360;
3 2 0.08 0.3 0.5 0 0 0 0 0 1 -360 360;
3 5 0 0.03 0 0 0 0 1.05 0 1 -360 360;
2 4 0 0.015 0 0 0 0 1.05 0 1 -360 360;
];
接下來,我們在命令行中輸入
runpf(‘case5_01’)
按回車后可得到打印好的計算結(jié)果:
仔細(xì)閱讀結(jié)果內(nèi)容,可以看到結(jié)果中有3個表格:
- System Summary 系統(tǒng)總結(jié)
- Bus Data 母線數(shù)據(jù)
- Branch Data 支路數(shù)據(jù)
(1) System Summary
里面描述了對原始數(shù)據(jù)的統(tǒng)計信息。
在表格最下面描述了電壓的幅值相角的最大值和最小值,以及線路的有功無功損耗最大的線路編號及損耗值。
(2) Bus Data
表格中:
第二列和第三列分別為電壓幅值和相角,
第四列和第五列是發(fā)電機輸入的有功功率和無功功率,
第六列和第七列是輸出負(fù)荷的有功功率和無功功率。
Total表示功率各列之和,前后差值就是線路中損耗的。
(3) Branch Data
表格中:
第二列和第三列分別是線路的起始母線和終止母線,
第四列和第五列是起始母線注入有功和無功,有正負(fù),
第六列和第七列是終止母線注入的有功和無功,有正負(fù),
第八列和第九列是線路上損耗的有功和無功,是前后兩項的相加之和,有正負(fù)。
Total表示損耗之和,這個值應(yīng)該與Bus Data的結(jié)果Total相差不大。
到這里,就已經(jīng)基本掌握了MATPOWER的使用方法了!
上面的內(nèi)容和順序是我自己在學(xué)習(xí)時整理出的方便我自己理解的步驟。
如果有什么錯誤的話請大家批評指正!
參考文獻(xiàn):于群,曹娜.MATLAB/Simulink電力系統(tǒng)建模與仿真,北京:機械工業(yè)出版社,2011.5
總結(jié)
以上是生活随笔為你收集整理的MATPOWER快速上手及应用实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python代码扫描工具_Python脚
- 下一篇: 人工智能--一种现代的方法(知识点总结第