戰(zhàn)入門:5個(gè)高頻電網(wǎng)分析任務(wù)如何用Python一次跑通)
pandapower實(shí)戰(zhàn)入門5個(gè)高頻電網(wǎng)分析任務(wù)如何用Python一次跑通【免費(fèi)下載鏈接】pandapowerConvenient Power System Modelling and Analysis based on PYPOWER and pandas項(xiàng)目地址: https://gitcode.com/gh_mirrors/pa/pandapower一個(gè)真實(shí)場(chǎng)景深夜值班的你被一張10kV圖紙難住了周五晚上九點(diǎn)半你接到調(diào)度電話某開(kāi)發(fā)區(qū)新增兩回10kV饋線下周要并網(wǎng)送電但配套的短路容量校核、電壓水平評(píng)估還沒(méi)做。你打開(kāi)傳統(tǒng)仿真軟件先是界面卡頓接著發(fā)現(xiàn)接線圖里的開(kāi)關(guān)、負(fù)荷得一個(gè)個(gè)手動(dòng)拖進(jìn)去光是建模就耗掉兩個(gè)小時(shí)更麻煩的是想批量改一遍負(fù)荷再算得重新走一遍完整流程。你心里清楚這套流程今晚大概率要加班到凌晨。其實(shí)這個(gè)場(chǎng)景里藏著三個(gè)高頻痛點(diǎn)建模效率低、批量計(jì)算難、結(jié)果不好讀。而解決這三個(gè)問(wèn)題的關(guān)鍵就是找到一套數(shù)據(jù)即模型、腳本即流程的電網(wǎng)分析工具——這正是 pandapower 的價(jià)值所在。它把電力系統(tǒng)的建模、潮流計(jì)算、短路分析、最優(yōu)潮流等能力全部封裝成 Python 函數(shù)讓你像寫數(shù)據(jù)分析腳本一樣做電網(wǎng)分析。項(xiàng)目速覽把電網(wǎng)裝進(jìn) DataFrame 的潮流計(jì)算引擎pandapower 是一款基于 PYPOWER 與 pandas 的開(kāi)源電力系統(tǒng)分析庫(kù)其定位一句話就能講清用 Python 的數(shù)據(jù)結(jié)構(gòu)表達(dá)電網(wǎng)用一行函數(shù)跑專業(yè)計(jì)算。在 pandapower 中整個(gè)電網(wǎng)是一個(gè)net對(duì)象母線、線路、變壓器、負(fù)荷、發(fā)電機(jī)各自對(duì)應(yīng)一張 DataFrame 表你往表里加一行就等于在圖紙上加了一個(gè)元件。潮流計(jì)算的整體鏈路net模型 → PYPOWER 求解 → 結(jié)果回寫全程在 Python 內(nèi)存中閉環(huán)完成。這種設(shè)計(jì)帶來(lái)的直接好處有三個(gè)一是建模即寫表批量創(chuàng)建元件只需一行向量化操作二是所有結(jié)果都落在net.res_xxx表里配合 pandas 可以做任意篩選、透視、繪圖三是社區(qū)沉淀了大量標(biāo)準(zhǔn)類型庫(kù)變壓器、電纜選型不用手敲阻抗參數(shù)。核心代碼分布在pandapower/create/元件創(chuàng)建、pandapower/pf/潮流求解、pandapower/shortcircuit/短路計(jì)算、pandapower/opf/最優(yōu)潮流等模塊下文會(huì)逐一用到。三步快速上手10分鐘跑通你的第一個(gè)潮流我們先把最小可運(yùn)行示例做出來(lái)一個(gè)110/20kV降壓站帶一條饋線和兩處負(fù)荷。全程只有三步代碼不超過(guò)15行。第一步創(chuàng)建空電網(wǎng)并添加母線import pandapower as pp # 創(chuàng)建空電網(wǎng)對(duì)象默認(rèn)頻率50Hz net pp.create_empty_network(name開(kāi)發(fā)區(qū)降壓站) # 添加110kV母線變電站高壓側(cè)和20kV母線低壓側(cè) bus_hv pp.create_bus(net, vn_kv110, name110kV母線) bus_lv pp.create_bus(net, vn_kv20, name20kV母線)第二步接入電源、變壓器與負(fù)荷# 外網(wǎng)等值電源掛在110kV母線電壓給定1.02pu pp.create_ext_grid(net, busbus_hv, vm_pu1.02, name上級(jí)電網(wǎng)) # 主變壓器直接選用標(biāo)準(zhǔn)類型阻抗參數(shù)自動(dòng)補(bǔ)齊 pp.create_transformer(net, hv_busbus_hv, lv_busbus_lv, std_type25 MVA 110/20 kV, name主變) # 低壓側(cè)兩處負(fù)荷 pp.create_load(net, busbus_lv, p_mw12, q_mvar4, name工業(yè)負(fù)荷) pp.create_load(net, busbus_lv, p_mw6, q_mvar2, name商業(yè)負(fù)荷)第三步跑潮流并讀取結(jié)果# 執(zhí)行交流潮流計(jì)算牛頓-拉夫遜法 pp.runpp(net) # 母線電壓結(jié)果幅值(pu)與相角(度) print(net.res_bus[[vm_pu, va_degree]]) # 線路/變壓器負(fù)載率 print(net.res_trafo[[p_hv_mw, loading_percent]])跑完這幾行你已經(jīng)在終端里看到每個(gè)節(jié)點(diǎn)的電壓標(biāo)幺值和變壓器負(fù)載率了。從零建模到出結(jié)果全程不需要打開(kāi)任何圖形界面。? 這就是 pandapower 的日常用法建表、算、讀表。核心功能逐個(gè)拆解從潮流到時(shí)序仿真的四件套上手之后我們把常用能力按由易到難拆成四塊每塊記住一個(gè)關(guān)鍵入口即可。功能一潮流計(jì)算runpp——一切分析的地基一句話價(jià)值給定發(fā)電與負(fù)荷算全網(wǎng)的電壓和功率分布是短路、優(yōu)化、時(shí)序仿真的前置步驟。關(guān)鍵參數(shù)參數(shù)作用常用取值algorithm求解算法nr默認(rèn)牛頓法、bfsw前推回代輻射網(wǎng)更快max_iteration最大迭代次數(shù)默認(rèn)10不收斂時(shí)可調(diào)大到20tolerance_mva收斂精度默認(rèn)1e-8calculate_voltage_angles是否計(jì)算相角默認(rèn)False需要相角時(shí)置True小段示例# 輻射狀配電網(wǎng)用前推回代法速度更快 pp.runpp(net, algorithmbfsw, calculate_voltage_anglesTrue)功能二短路電流計(jì)算calc_sc——保護(hù)整定的數(shù)據(jù)來(lái)源一句話價(jià)值按 IEC 60909 等效電壓源法算出各母線短路電流是開(kāi)關(guān)選型、保護(hù)定值整定的輸入。關(guān)鍵參數(shù)參數(shù)作用常用取值fault故障類型3ph、2ph、1phcase最大/最小短路電流max默認(rèn)、minkappa_method沖擊系數(shù)算法CIEC 60909、B、Aip/ith是否算沖擊電流/熱效應(yīng)電流置True開(kāi)啟小段示例from pandapower.shortcircuit import calc_sc # 對(duì)全網(wǎng)母線做三相最大短路計(jì)算 calc_sc(net, fault3ph, casemax, ipTrue, kappa_methodC) # 結(jié)果寫入 net.res_bus_scikss_ka 為初始對(duì)稱短路電流 print(net.res_bus_sc[[ikss_ka, ip_ka]])功能三最優(yōu)潮流runopp——讓系統(tǒng)自己找最優(yōu)解一句話價(jià)值在滿足電壓、線路載流等約束下自動(dòng)調(diào)節(jié)發(fā)電機(jī)出力使發(fā)電成本或網(wǎng)損最小。關(guān)鍵參數(shù)參數(shù)作用常用取值gen.p_mw / min_p_mw / max_p_mw出力及其上下限按機(jī)組實(shí)際能力填gen.marginal_cost邊際成本€/MWh決定機(jī)組調(diào)度優(yōu)先級(jí)gen.controllable是否參與優(yōu)化True 才參與小段示例pp.create_gen(net, busbus_lv, p_mw0, min_p_mw0, max_p_mw20, vm_pu1.0, controllableTrue, marginal_cost45) pp.runopp(net) # 運(yùn)行最優(yōu)潮流 print(net.res_gen.p_mw) # 優(yōu)化后的機(jī)組出力 print(net.res_cost) # 系統(tǒng)總發(fā)電成本功能四時(shí)序仿真run_timeseries——把一天24小時(shí)算成一條曲線一句話價(jià)值用負(fù)荷/發(fā)電曲線驅(qū)動(dòng)逐時(shí)段潮流天然適合光伏出力波動(dòng)、充電樁負(fù)荷等場(chǎng)景。關(guān)鍵參數(shù)核心是數(shù)據(jù)源與輸出器兩個(gè)對(duì)象對(duì)象作用關(guān)鍵參數(shù)DFData內(nèi)存DataFrame數(shù)據(jù)源df含時(shí)間序列的DataFrameOutputWriter結(jié)果落盤output_path、output_file_typerun_timeseries主循環(huán)time_steps步長(zhǎng)列表小段示例import pandas as pd from pandapower.timeseries import DFData, OutputWriter, run_timeseries # 造一條24小時(shí)負(fù)荷曲線單位MW profiles pd.DataFrame({load_p_mw: [10 5 * (i % 4) for i in range(24)]}) # 把曲線綁定到1號(hào)負(fù)荷 from pandapower.control import ConstControl ConstControl(net, elementload, variablep_mw, element_index[0], profile_name[load_p_mw], data_sourceDFData(profiles)) # 輸出器把每個(gè)時(shí)段的母線電壓寫到csv ow OutputWriter(net, output_path./ts_results/, output_file_type.csv) ow.log_variable(res_bus, vm_pu) # 逐時(shí)段跑潮流 run_timeseries(net, time_stepslist(range(24)))跑完后./ts_results/下會(huì)生成24個(gè)時(shí)段的母線電壓文件配合 pandas 直接拼成一條電壓日曲線。 這一套數(shù)據(jù)源控制器輸出器的模式也是 pandapower 時(shí)序框架的通用套路源碼可參考pandapower/timeseries/目錄。新手避坑指南5個(gè)最常見(jiàn)的翻車現(xiàn)場(chǎng)下面這些坑幾乎每個(gè) pandapower 新手都會(huì)踩提前知道能幫你省下大量排查時(shí)間。??坑1報(bào)錯(cuò)bus out of service但線路還連著錯(cuò)誤表現(xiàn)把母線in_service置 False 后潮流直接報(bào)錯(cuò)或結(jié)果異常。原因停電母線可以保留在模型中但與其相連的元件線路、負(fù)荷、變壓器必須同步設(shè)為停運(yùn)否則模型拓?fù)洳灰恢隆=鉀Q方案統(tǒng)一用net.bus[in_service] False后再對(duì)相連元件做同樣的置位排查孤島可用pandapower/topology/里的連通性檢測(cè)函數(shù)。??坑2變壓器不填std_type阻抗全空錯(cuò)誤表現(xiàn)建完變壓器潮流算出來(lái)的損耗和壓降完全不對(duì)。原因變壓器必須給出std_type或vk_percent/sn_mva等完整參數(shù)缺參數(shù)時(shí)模型會(huì)按默認(rèn)值走結(jié)果失真。解決方案優(yōu)先用load_std_type查標(biāo)準(zhǔn)庫(kù)pandapower/std_types.py選型如25 MVA 110/20 kV自研設(shè)備再手工填全套參數(shù)。??坑3runpp不收斂第一反應(yīng)是亂調(diào)參數(shù)錯(cuò)誤表現(xiàn)報(bào) Newton Raphson power flow did not converge。原因多數(shù)時(shí)候不是算法問(wèn)題而是網(wǎng)絡(luò)存在孤島、負(fù)荷過(guò)重或電壓初值不合理。解決方案先檢查是否存在未連通的孤島再看負(fù)荷是否超過(guò)線路/變壓器容量最后才考慮max_iteration20或換algorithmbfsw。??坑4短路計(jì)算忘了選case結(jié)果偏高偏低沒(méi)察覺(jué)錯(cuò)誤表現(xiàn)用同一模型做校驗(yàn)發(fā)現(xiàn)短路電流比設(shè)計(jì)手冊(cè)大很多或小很多。原因calc_sc默認(rèn)算的是max最大短路電流用于設(shè)備校驗(yàn)保護(hù)配合有時(shí)需要min最小短路電流。解決方案按用途顯式傳casemax或casemin別依賴默認(rèn)值。??坑5改完模型數(shù)據(jù)直接看結(jié)果忘記重新計(jì)算錯(cuò)誤表現(xiàn)改了負(fù)荷大小net.res_bus里的電壓還是老數(shù)據(jù)。原因結(jié)果表只在每次計(jì)算時(shí)刷新改模型不會(huì)自動(dòng)觸發(fā)重算。解決方案記住改參數(shù) → 重跑runpp/calc_sc→ 再讀結(jié)果三步節(jié)奏必要時(shí)調(diào)用pandapower/results.py里的重置函數(shù)清空舊結(jié)果。綜合案例演練開(kāi)發(fā)區(qū)并網(wǎng)方案校核一條龍現(xiàn)在我們把前面所有知識(shí)串起來(lái)模擬文章開(kāi)頭的那個(gè)值班場(chǎng)景新饋線并網(wǎng)前你需要完成潮流校核 短路容量驗(yàn)證 極端工況壓降評(píng)估三項(xiàng)工作。import pandapower as pp from pandapower.shortcircuit import calc_sc from pandapower.timeseries import DFData, OutputWriter, run_timeseries from pandapower.control import ConstControl import pandas as pd # ---------- 1. 建模110kV電源 → 主變 → 兩條20kV饋線 ---------- net pp.create_empty_network(name開(kāi)發(fā)區(qū)并網(wǎng)校核) b_hv pp.create_bus(net, vn_kv110, name110kV側(cè)) b_lv pp.create_bus(net, vn_kv20, name20kV母線) b_f1 pp.create_bus(net, vn_kv20, name饋線1末端) b_f2 pp.create_bus(net, vn_kv20, name饋線2末端) pp.create_ext_grid(net, busb_hv, vm_pu1.02, name上級(jí)電網(wǎng)) pp.create_transformer(net, hv_busb_hv, lv_busb_lv, std_type25 MVA 110/20 kV, name主變) # 兩條饋線用同一電纜標(biāo)準(zhǔn)型號(hào)長(zhǎng)度不同 pp.create_line(net, from_busb_lv, to_busb_f1, length_km3.5, std_typeNA2XS2Y 1x185 RM/25 12/20 kV, name饋線1) pp.create_line(net, from_busb_lv, to_busb_f2, length_km5.2, std_typeNA2XS2Y 1x185 RM/25 12/20 kV, name饋線2) # ---------- 2. 基礎(chǔ)潮流校核滿載工況電壓是否越限 ---------- pp.create_load(net, busb_f1, p_mw8, q_mvar3, name饋線1負(fù)荷) pp.create_load(net, busb_f2, p_mw10, q_mvar4, name饋線2負(fù)荷) pp.runpp(net) print(滿載工況末端電壓(pu)) print(net.res_bus.loc[[b_f1, b_f2], vm_pu]) # 若低于0.95pu說(shuō)明需要無(wú)功補(bǔ)償或縮短供電半徑 # ---------- 3. 短路容量驗(yàn)證為開(kāi)關(guān)選型提供依據(jù) ---------- calc_sc(net, fault3ph, casemax, ipTrue, kappa_methodC) print(\n20kV母線三相短路電流(kA)) print(net.res_bus_sc.loc[[b_lv, b_f1, b_f2], [ikss_ka, ip_ka]]) # 開(kāi)關(guān)的額定短路開(kāi)斷能力必須高于 ikss_ka動(dòng)穩(wěn)定校驗(yàn)看 ip_ka # ---------- 4. 極端工況壓降光伏大發(fā)、負(fù)荷最輕時(shí)的電壓抬升 ---------- profiles pd.DataFrame({ load1_p_mw: [8, 8, 2], # 饋線1負(fù)荷峰、平、谷 load2_p_mw: [10, 6, 2], # 饋線2負(fù)荷峰、平、谷 }) ConstControl(net, elementload, variablep_mw, element_index[0, 1], profile_name[load1_p_mw, load2_p_mw], data_sourceDFData(profiles)) ow OutputWriter(net, output_path./case_results/, output_file_type.csv) ow.log_variable(res_bus, vm_pu) run_timeseries(net, time_steps[0, 1, 2]) print(\n三個(gè)時(shí)段末端電壓已寫入 ./case_results/)這一個(gè)腳本就完成了三項(xiàng)校核滿載潮流給出電壓水平、短路計(jì)算給出開(kāi)關(guān)選型依據(jù)、時(shí)序仿真覆蓋輕載抬壓的極端工況。整套流程結(jié)束后你手上就有了一份可復(fù)現(xiàn)、可追溯的數(shù)字校核報(bào)告——這就是數(shù)據(jù)即模型的工作方式帶來(lái)的效率提升??偨Y(jié)與行動(dòng)清單看完這篇下一步做什么回到開(kāi)頭的值班場(chǎng)景如果用 pandapower你的工作流會(huì)變成——先花10分鐘把圖紙轉(zhuǎn)成net模型再花10分鐘跑完潮流與短路校核最后花20分鐘用時(shí)序仿真補(bǔ)上極端工況。整個(gè)過(guò)程可腳本化、可版本管理下次并網(wǎng)評(píng)審直接復(fù)用改參數(shù)就行。給剛上手的你一條清晰的行動(dòng)路徑跑通最小示例復(fù)現(xiàn)本文三步快速上手的代碼把net.res_bus、net.res_trafo每張結(jié)果表都打印出來(lái)看一眼。玩轉(zhuǎn)內(nèi)置網(wǎng)絡(luò)pandapower/networks/提供 CIGRE 中壓、IEEE 歐洲低壓等標(biāo)準(zhǔn)測(cè)試系統(tǒng)用它們練手比自建模型更省事還能對(duì)照官方結(jié)果自查。對(duì)照源碼深挖一處挑一個(gè)你最常用的函數(shù)比如create_line去pandapower/create/line_create.py里讀它的參數(shù)校驗(yàn)邏輯你會(huì)更懂模型內(nèi)部是怎么落表的。進(jìn)階三個(gè)方向需要保護(hù)配合分析就看pandapower/shortcircuit/與pandapower/protection/需要跑大量場(chǎng)景就看pandapower/contingency/的并行分析需要接入外部數(shù)據(jù)就看pandapower/converter/的格式轉(zhuǎn)換模塊。最后記住一條心法在 pandapower 里模型是數(shù)據(jù)、計(jì)算是函數(shù)、結(jié)果是表格三件事都是可編程的。把這條心法用熟你就能從會(huì)跑一個(gè)潮流進(jìn)化到能快速回答任意電網(wǎng)分析問(wèn)題下次再遇到深夜圖紙就不用一個(gè)人加班到天亮了?!久赓M(fèi)下載鏈接】pandapowerConvenient Power System Modelling and Analysis based on PYPOWER and pandas項(xiàng)目地址: https://gitcode.com/gh_mirrors/pa/pandapower創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考