MATPOWER工具本质原理解析
目錄
- 前言
- case14文件
- system MVA base
- busdata(總線參數)
- generator data(發電機參數)
- branch data(支路參數)
- generator cost data(發電機耗損參數)
- bus name(總線名稱)
- 總結
- runopf文件
- 輸入值(可選)
- 返回值(可選)
- 調用方式
- 代碼內容
- 總結
- 文件功能
- 如何用來做安全估計的仿真
- 問題
前言
我們以最優潮流的計算來研究MATPOWER工具本質原理,為了后續做電網攻擊檢測仿真做技術鋪墊。
我們知道運行IEEE標準14電網模型的最優潮流計算的方法為:
這條語句在Matlab中涉及兩個文件:
- runopf.m
- case14.m
我們來分別來考察文件內容。
case14文件
該文件為IEEE 14總線潮流數據測試用例。猜想是給出了IEEE標準14總線電網的所有參數,文件內的參數矩陣如下。
system MVA base
據說電力中的MVA是變壓器容量單位或者是功率的單位或者發電機發電功率單位等。baseMVA是一個標量,用來設置基準容量。這個數值保持默認100即可。
busdata(總線參數)
包含參數以及其含義:
- bus_i用來設置母線編號,范圍為1~29997。
- type用來設置母線類型,1為PQ節點,2為PV節點,3為平衡節點;
- Pd用來設置母線注入負荷的有功功率
- Qd用來設置母線注入負荷的無功功率
- Gs用來設置與母線并聯的電導
- Bs用來設置與母線并聯的電納
- area 用來設置電網斷面號,可設置范圍為1~100,一般設置為1
- Vm用來設置母線電壓的幅值初值
- Va用來設置母線電壓的相角初值
- baseKV用來設置該母線的基準電壓
- zone用來設置省耗分區號,可設置范圍為1~999,一般設置為1
- Vmax用來設置工作時母線電壓最高幅值
- Vmin用來設置工作時母線電壓最低幅值
所以這些都是標準IEEE電網的總線參數,是一定的。 在動態估計的應用里應該是動態的(隨時間變化)
generator data(發電機參數)
- bus用來設置接入發電機的母線編號
- Pg用來設置接入發電機的有功功率,注意功率輸入的是有名值
- Qg用來設置接入發電機的無功功率
- Qmax用來設置接入發電機的無功功率的最大允許值
- Qmin用來設置接入發電機的無功功率的最小允許值
- Vg用來設置接入發電機的工作電壓,注意輸入的是標幺值
- mBase用來設置接入發電機的功率基準
- status用來設置發電機的工作狀態,1表示投入運行,2表示投出運行
- Pmax用來設置接入發電機的無功功率的最大允許值
- Pmin用來設置接入發電機的無功功率的最小允許值
- 其余的Pc1,Pc2,Qc1min,Qc1max,Qc2min,Qc2max,ramp_agc,ramp_10,ramp_30,ramp_q,apf均表示發電機其他特征量,在實際計算中可以設置為0
所以這些都是標準IEEE電網的發電機參數,是一定的。 (待商榷)
branch data(支路參數)
- fbus用來設置支路起始節點編號
- tbus用來設置支路終止節點編號
- r用來設置該支路電阻,注意阻抗導納等參數輸入的都是標幺值
- x用來設置該支路電抗
- b用來設置該支路電納
- rateA用來設置該支路長期允許功率
- rateB用來設置該支路短期允許功率
- rateC用來設置該支路緊急允許功率
- ratio用來設置該支路變比,若該支路僅僅為導線則設置為0,若含有變壓器,則該變比為fbus側母線基準電壓與tbus側基準變壓之比
- angle用來設置支路的相位角度,如果支路元件為變壓器,則就是變壓器的轉角,如果支路元件不是變壓器,則相位角度為0度
- status用來設置支路工作狀態,1表示投入運行,0表示退出運行
所以這些都是標準IEEE電網的支路參數,是一定的。 在動態估計的應用里應該是動態的(隨時間變化)
generator cost data(發電機耗損參數)
注意:如果generator cost有n個generator行,那么cost矩陣的前n個generator行包含相應發電機產生的有功功率的成本。
如果generator cost有2n個generator行,那么行ng+1到2ng包含相同格式的無功成本。
以下按照順序:
- model 1-分段線性 2-多項式;
- startup 以美元計算的啟動成本;
- shutdown 以美元計算的關閉成本;
- N(=n+1)定義n段分段線性代價函數所遵循的數據點的個數,或定義n階多項式代價函數的代價系數的個數;
- 后面的參數是損耗函數的細節。
以上的內容保持默認不必更改。
bus name(總線名稱)
顧名思義
總結
所以各種case文件只是包含了IEEE標準的電網的參數,可以說是一種模型例。MATPOWER的核心還是在于runopf文件。
備注:如果需要查看數據格式意義請在matlab命令行輸入
runopf文件
調用形式為:
[RESULTS, SUCCESS] = RUNOPF(CASEDATA, MPOPT, FNAME, SOLVEDCASE)輸入值(可選)
| CASEDATA | case結構或包含文件名稱和case數據的字符串(默認為’case9’) |
| MPOPT | 用于指定解決方案算法、輸出選項終止容限等 |
| FNAME | 將輸出寫入文件,文件名 |
| SOLVEDCASE | 將以MATPOWER大小寫格式保存的文件名 |
返回值(可選)
| RESULTS | 結構包含以下字段:Order - 內外數據轉換; et-時間,單位為秒;success標志,1 =成功,0 =失敗 |
| SUCCESS | 成功標志,可以在第二個參數單獨返回 |
調用方式
results = runopf; results = runopf(casedata); results = runopf(casedata, mpopt); results = runopf(casedata, mpopt, fname); results = runopf(casedata, mpopt, fname, solvedcase); [results, success] = runopf(...);同時,為了與以前的MATPOWER版本兼容,一些結果可以作為單獨的輸出參數返回:
[baseMVA, bus, gen, gencost, branch, f, success, et] = runopf(...);舉例如
results = runopf('case30');代碼內容
主要是做一些“外圍工作”,比如默認參數預設、輸出、輸出寫入文件等。
核心是調用了另一個文件opf.m,而文件opf.m又調用了opf_args.m文件。事實上整個軟件的程序包基本上是嵌套關系(指的是進行運算的函數文件),頂層文件通過調用函數文件來完成各個模塊的運算工作,然后將結果整合輸出。
總結
文件功能
就目前我的理解來說,軟件程序做的是利用已知的系統參數,來求解當前各個節點的電壓等參數。而系統參數就來自諸如case14等參數文件。
如何用來做安全估計的仿真
因此對于安全估計的仿真應用來說,需要的節點參數數據是隨時間動態變化的(才能做估計),因此需要設置系統參數是隨時間動態變化。
具體而言,應該是通過編寫case文件中的參數矩陣,使得矩陣中的某些參數隨著時間動態變化(目前還沒確定是哪些矩陣中的哪些參數會動態變化,經過初步的思考和搜索,考慮到動態變化主要是由于用戶端的用電波動產生,因此動態變化的參數應該在bus總線端和branch分支端的矩陣中)。
依據網友所述,為了用matpower做24小時的最優潮流調度,使用腳本動態修改case9.m中的bus矩陣數據,腳本代碼可以實現如下:
load=xlsread('D:\opf\data.xlsx','sheet1','a1:i24'); mpc=loadcase('case9'); for i=1:24 mpc.bus(:,3)=load(i,:); result=runopf(mpc) end關于負荷數據的獲取:
24小時負荷數據可以下載網上共享的新英格蘭電力數據,里面有好多年的數據集。
一句話總結:后續應當是要在case上做文章體現動態,利用matpower計算得到節點動態參數。利用估計方法對節點進行量測和估計。
問題
現在相當于是產生了動態變化的各節點數據(屬于量測數據),但是系統模型是怎樣的?
總結
以上是生活随笔為你收集整理的MATPOWER工具本质原理解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏开发之编程语言5选和游戏引擎3选
- 下一篇: Kali [BeEF-XSS]XSS利用