{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Unbalanced power flow calculation with pandapower\n", "\n", "We will create a simple three bus system to demonstrate how to run unbalanced power flow calculations with pandapower. First, we create the three buses as follows:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "import pandapower as pp\n", "\n", "net = pp.create_empty_network()\n", "b1 = pp.create_bus(net, 20.0)\n", "b2 = pp.create_bus(net, 0.4)\n", "b3 = pp.create_bus(net, 0.4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The external grid connection can then be created with the short-circuit parameters s_sc_max_mva and rx_max as well as the parameters x0x_max and r0x0_max that define the zero sequence impedances. The ext_grid parameters are all defined in the [ext_grid parameter documentation](https://pandapower.readthedocs.io/en/develop/elements/ext_grid.html#input-parameters)." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_ext_grid(net, b1, s_sc_max_mva=1000, rx_max=0.1, x0x_max=1.0,\n", " r0x0_max=0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The transformer requires the additional parameters vk0_percent, vkr0_percent, mag0_percent, mag0_rx, vector_group and si0_hv_partial for unbalanced calculation. The transformer parameters are all defined in the [transformer parameter documentation](https://pandapower.readthedocs.io/en/develop/elements/trafo.html#input-parameters)." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_transformer_from_parameters(net, b1, b2, sn_mva=0.63,\n", " vn_hv_kv=20., vn_lv_kv=0.4,\n", " vkr_percent=0.1, vk_percent=6,\n", " vk0_percent=6, vkr0_percent=0.78125,\n", " mag0_percent=100, mag0_rx=0.,\n", " pfe_kw=0.1, i0_percent=0.1,\n", " vector_group=\"Dyn\", shift_degree=150,\n", " si0_hv_partial=0.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For lines, the zero sequence impedances r0_ohm_per_km, x0_ohm_per_km and c0_nf_per_km are required in addition to the balanced parameters. The line parameters are all defined in the [line parameter documentation](https://pandapower.readthedocs.io/en/develop/elements/line.html#input-parameters)." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_line_from_parameters(net, b2, b3, length_km=0.1, r0_ohm_per_km=0.0848,\n", " x0_ohm_per_km=0.4649556, c0_nf_per_km=230.6,\n", " max_i_ka=0.963, r_ohm_per_km=0.0212,\n", " x_ohm_per_km=0.1162389, c_nf_per_km= 230)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, to create an unbalanced power flow, we create an asymmetric load. The input parameters are all defined in the [asymmetric load parameter documentation](https://pandapower.readthedocs.io/en/develop/elements/asymmetric_load.html#input-parameters)." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_asymmetric_load(net, b3, p_a_mw=0.25, p_b_mw=0.18, p_c_mw=0.20, type=\"wye\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now run an unbalanced power flow:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "pp.runpp_3ph(net)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results are stored in the result tables with suffix \"_3ph\", such as \"res_bus_3ph\", \"res_line_3ph\" etc.:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
vm_a_puva_a_degreevm_b_puva_b_degreevm_c_puva_c_degreep_a_mwq_a_mvarp_b_mwq_b_mvarp_c_mwq_c_mvarunbalance_percent
00.999949-0.0033610.999975-119.9957711.000076119.9991320.231470.0381120.1907410.034220.2145260.0008890.007796
10.990115-154.1776540.99631687.0277180.995532-33.3243850.000000.0000000.0000000.000000.0000000.0000000.686963
20.977489-158.2424951.00153585.1483800.974531-35.450453-0.25000-0.000000-0.180000-0.00000-0.200000-0.0000001.221643
\n", "
" ], "text/plain": [ " vm_a_pu va_a_degree vm_b_pu va_b_degree vm_c_pu va_c_degree \\\n", "0 0.999949 -0.003361 0.999975 -119.995771 1.000076 119.999132 \n", "1 0.990115 -154.177654 0.996316 87.027718 0.995532 -33.324385 \n", "2 0.977489 -158.242495 1.001535 85.148380 0.974531 -35.450453 \n", "\n", " p_a_mw q_a_mvar p_b_mw q_b_mvar p_c_mw q_c_mvar \\\n", "0 0.23147 0.038112 0.190741 0.03422 0.214526 0.000889 \n", "1 0.00000 0.000000 0.000000 0.00000 0.000000 0.000000 \n", "2 -0.25000 -0.000000 -0.180000 -0.00000 -0.200000 -0.000000 \n", "\n", " unbalance_percent \n", "0 0.007796 \n", "1 0.686963 \n", "2 1.221643 " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_bus_3ph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can check the voltage in all phases as well as the unbalance percentage according to IEC 62749:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
vm_a_puvm_b_puvm_c_puunbalance_percent
00.9999490.9999751.0000760.007796
10.9901150.9963160.9955320.686963
20.9774891.0015350.9745311.221643
\n", "
" ], "text/plain": [ " vm_a_pu vm_b_pu vm_c_pu unbalance_percent\n", "0 0.999949 0.999975 1.000076 0.007796\n", "1 0.990115 0.996316 0.995532 0.686963\n", "2 0.977489 1.001535 0.974531 1.221643" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_bus_3ph[[\"vm_a_pu\", \"vm_b_pu\", \"vm_c_pu\", \"unbalance_percent\"]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The line and trafo results provide currents and loadings in different phases or overall loading, which is defined as the maximum of all phase loadings." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
i_a_from_kai_b_to_kaloading_b_percentloading_percent
01.1074610.77822880.812922115.001163
\n", "
" ], "text/plain": [ " i_a_from_ka i_b_to_ka loading_b_percent loading_percent\n", "0 1.107461 0.778228 80.812922 115.001163" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_line_3ph[[\"i_a_from_ka\", \"i_b_to_ka\", \"loading_b_percent\", \"loading_percent\"]]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
i_a_hv_kai_b_lv_kaloading_b_percentloading_percent
00.0203170.83831592.281286111.713642
\n", "
" ], "text/plain": [ " i_a_hv_ka i_b_lv_ka loading_b_percent loading_percent\n", "0 0.020317 0.838315 92.281286 111.713642" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net.res_trafo_3ph[[\"i_a_hv_ka\", \"i_b_lv_ka\", \"loading_b_percent\", \"loading_percent\"]]" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }