{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Create Networks - Advanced" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial shows how to create a more complex pandapower network step by step. The network includes every element which is availiable in the pandapower framework.\n", "\n", "The final network looks like this:\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The structural information about this network are stored in csv tables in the example_advanced folder.\n", "\n", "For a better overview the creation of the individual components is divided in three steps. Each step handles one of the three voltage levels: high, medium and low voltage. We star by initializing an empty pandapower network:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#import the pandapower module\n", "import pandapower as pp\n", "import pandas as pd\n", "\n", "#create an empty network \n", "net = pp.create_empty_network()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## High voltage level" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Buses\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "There are two 380 kV and five 110 kV busbars (type=\"b\"). The 380/110 kV substation is modeled in detail with all nodes and switches, which is why we need additional nodes (type=\"b\") to connect the switches." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "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", " \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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namevn_kvtypezonein_service
0Double Busbar 1380.0bNoneTrue
1Double Busbar 2380.0bNoneTrue
2Bus DB T0380.0nNoneTrue
3Bus DB T1380.0nNoneTrue
4Bus DB T2380.0nNoneTrue
5Bus DB T3380.0nNoneTrue
6Bus DB T4380.0nNoneTrue
7Bus DB T5380.0nNoneTrue
8Bus DB T6380.0nNoneTrue
9Bus DB T7380.0nNoneTrue
10Bus DB T8380.0nNoneTrue
11Bus DB T9380.0nNoneTrue
12Bus DB 1380.0nNoneTrue
13Bus DB 2380.0nNoneTrue
14Bus DB 3380.0nNoneTrue
15Bus DB 4380.0nNoneTrue
16Single Busbar110.0bNoneTrue
17Bus SB 1110.0nNoneTrue
18Bus SB 2110.0nNoneTrue
19Bus SB 3110.0nNoneTrue
20Bus SB 4110.0nNoneTrue
21Bus SB 5110.0nNoneTrue
22Bus SB T1.1110.0nNoneTrue
23Bus SB T1.2110.0nNoneTrue
24Bus SB T2.1110.0nNoneTrue
25Bus SB T2.2110.0nNoneTrue
26Bus SB T3.1110.0nNoneTrue
27Bus SB T3.2110.0nNoneTrue
28Bus SB T4.1110.0nNoneTrue
29Bus SB T4.2110.0nNoneTrue
30Bus SB T5.1110.0nNoneTrue
31Bus SB T5.2110.0nNoneTrue
32Bus HV1110.0nNoneTrue
33Bus HV2110.0nNoneTrue
34Bus HV3110.0nNoneTrue
35Bus HV4110.0nNoneTrue
\n", "
" ], "text/plain": [ " name vn_kv type zone in_service\n", "0 Double Busbar 1 380.0 b None True\n", "1 Double Busbar 2 380.0 b None True\n", "2 Bus DB T0 380.0 n None True\n", "3 Bus DB T1 380.0 n None True\n", "4 Bus DB T2 380.0 n None True\n", "5 Bus DB T3 380.0 n None True\n", "6 Bus DB T4 380.0 n None True\n", "7 Bus DB T5 380.0 n None True\n", "8 Bus DB T6 380.0 n None True\n", "9 Bus DB T7 380.0 n None True\n", "10 Bus DB T8 380.0 n None True\n", "11 Bus DB T9 380.0 n None True\n", "12 Bus DB 1 380.0 n None True\n", "13 Bus DB 2 380.0 n None True\n", "14 Bus DB 3 380.0 n None True\n", "15 Bus DB 4 380.0 n None True\n", "16 Single Busbar 110.0 b None True\n", "17 Bus SB 1 110.0 n None True\n", "18 Bus SB 2 110.0 n None True\n", "19 Bus SB 3 110.0 n None True\n", "20 Bus SB 4 110.0 n None True\n", "21 Bus SB 5 110.0 n None True\n", "22 Bus SB T1.1 110.0 n None True\n", "23 Bus SB T1.2 110.0 n None True\n", "24 Bus SB T2.1 110.0 n None True\n", "25 Bus SB T2.2 110.0 n None True\n", "26 Bus SB T3.1 110.0 n None True\n", "27 Bus SB T3.2 110.0 n None True\n", "28 Bus SB T4.1 110.0 n None True\n", "29 Bus SB T4.2 110.0 n None True\n", "30 Bus SB T5.1 110.0 n None True\n", "31 Bus SB T5.2 110.0 n None True\n", "32 Bus HV1 110.0 n None True\n", "33 Bus HV2 110.0 n None True\n", "34 Bus HV3 110.0 n None True\n", "35 Bus HV4 110.0 n None True" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Double busbar\n", "pp.create_bus(net, name='Double Busbar 1', vn_kv=380, type='b')\n", "pp.create_bus(net, name='Double Busbar 2', vn_kv=380, type='b')\n", "for i in range(10):\n", " pp.create_bus(net, name='Bus DB T%s' % i, vn_kv=380, type='n')\n", "for i in range(1, 5):\n", " pp.create_bus(net, name='Bus DB %s' % i, vn_kv=380, type='n')\n", "\n", "# Single busbar\n", "pp.create_bus(net, name='Single Busbar', vn_kv=110, type='b')\n", "for i in range(1, 6):\n", " pp.create_bus(net, name='Bus SB %s' % i, vn_kv=110, type='n')\n", "for i in range(1, 6):\n", " for j in [1, 2]:\n", " pp.create_bus(net, name='Bus SB T%s.%s' % (i, j), vn_kv=110, type='n')\n", "\n", "# Remaining buses\n", "for i in range(1, 5):\n", " pp.create_bus(net, name='Bus HV%s' % i, vn_kv=110, type='n')\n", "\n", "# show bustable\n", "net.bus" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lines\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The information about the 6 HV lines are stored in a csv file that we load from the hard drive:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "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", "
line_namefrom_busto_busstd_typelengthparallel
0HV Line1Bus SB 2Bus HV1184-AL1/30-ST1A 110.0301
1HV Line2Bus HV1Bus HV2184-AL1/30-ST1A 110.0201
2HV Line3Bus HV2Bus HV4184-AL1/30-ST1A 110.0301
3HV Line4Bus HV1Bus HV4184-AL1/30-ST1A 110.0151
4HV Line5Bus HV3Bus HV4184-AL1/30-ST1A 110.0251
5HV Line6Bus SB 3Bus HV3184-AL1/30-ST1A 110.0302
\n", "
" ], "text/plain": [ " line_name from_bus to_bus std_type length parallel\n", "0 HV Line1 Bus SB 2 Bus HV1 184-AL1/30-ST1A 110.0 30 1\n", "1 HV Line2 Bus HV1 Bus HV2 184-AL1/30-ST1A 110.0 20 1\n", "2 HV Line3 Bus HV2 Bus HV4 184-AL1/30-ST1A 110.0 30 1\n", "3 HV Line4 Bus HV1 Bus HV4 184-AL1/30-ST1A 110.0 15 1\n", "4 HV Line5 Bus HV3 Bus HV4 184-AL1/30-ST1A 110.0 25 1\n", "5 HV Line6 Bus SB 3 Bus HV3 184-AL1/30-ST1A 110.0 30 2" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hv_lines = pd.read_csv('example_advanced/hv_lines.csv', sep=';', header=0, decimal=',')\n", "hv_lines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and use to create all lines:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "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", " \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", "
namestd_typefrom_busto_buslength_kmr_ohm_per_kmx_ohm_per_kmc_nf_per_kmmax_i_kadfparalleltypein_service
0HV Line1184-AL1/30-ST1A 110.0183230.00.15710.48.80.5351.01olTrue
1HV Line2184-AL1/30-ST1A 110.0323320.00.15710.48.80.5351.01olTrue
2HV Line3184-AL1/30-ST1A 110.0333530.00.15710.48.80.5351.01olTrue
3HV Line4184-AL1/30-ST1A 110.0323515.00.15710.48.80.5351.01olTrue
4HV Line5184-AL1/30-ST1A 110.0343525.00.15710.48.80.5351.01olTrue
5HV Line6184-AL1/30-ST1A 110.0193430.00.15710.48.80.5351.02olTrue
\n", "
" ], "text/plain": [ " name std_type from_bus to_bus length_km r_ohm_per_km \\\n", "0 HV Line1 184-AL1/30-ST1A 110.0 18 32 30.0 0.1571 \n", "1 HV Line2 184-AL1/30-ST1A 110.0 32 33 20.0 0.1571 \n", "2 HV Line3 184-AL1/30-ST1A 110.0 33 35 30.0 0.1571 \n", "3 HV Line4 184-AL1/30-ST1A 110.0 32 35 15.0 0.1571 \n", "4 HV Line5 184-AL1/30-ST1A 110.0 34 35 25.0 0.1571 \n", "5 HV Line6 184-AL1/30-ST1A 110.0 19 34 30.0 0.1571 \n", "\n", " x_ohm_per_km c_nf_per_km max_i_ka df parallel type in_service \n", "0 0.4 8.8 0.535 1.0 1 ol True \n", "1 0.4 8.8 0.535 1.0 1 ol True \n", "2 0.4 8.8 0.535 1.0 1 ol True \n", "3 0.4 8.8 0.535 1.0 1 ol True \n", "4 0.4 8.8 0.535 1.0 1 ol True \n", "5 0.4 8.8 0.535 1.0 2 ol True " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create lines\n", "for _, hv_line in hv_lines.iterrows():\n", " from_bus = pp.get_element_index(net, \"bus\", hv_line.from_bus)\n", " to_bus = pp.get_element_index(net, \"bus\", hv_line.to_bus)\n", " pp.create_line(net, from_bus, to_bus, length_km=hv_line.length,std_type=hv_line.std_type, name=hv_line.line_name, parallel=hv_line.parallel)\n", "\n", "# show line table\n", "net.line" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Transformer\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 380/110 kV transformer connects the buses \"Bus DB 1\" and \"Bus DB 2\". We use the get_element_index function from the pandapower toolbox to find the bus indices of the buses with these names and create a transformer by directly specifying the parameters:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "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", "
namestd_typehv_buslv_bussn_kvavn_hv_kvvn_lv_kvvsc_percentvscr_percentpfe_kw...shift_degreetp_sidetp_midtp_mintp_maxtp_st_percenttp_st_degreetp_posparallelin_service
0EHV-HV-TrafoNone1317300000.0380.0110.08.00.060.0...0.0NoneNaNNaNNaNNaNNaN01True
\n", "

1 rows × 21 columns

\n", "
" ], "text/plain": [ " name std_type hv_bus lv_bus sn_kva vn_hv_kv vn_lv_kv \\\n", "0 EHV-HV-Trafo None 13 17 300000.0 380.0 110.0 \n", "\n", " vsc_percent vscr_percent pfe_kw ... shift_degree tp_side \\\n", "0 8.0 0.06 0.0 ... 0.0 None \n", "\n", " tp_mid tp_min tp_max tp_st_percent tp_st_degree tp_pos parallel \\\n", "0 NaN NaN NaN NaN NaN 0 1 \n", "\n", " in_service \n", "0 True \n", "\n", "[1 rows x 21 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hv_bus = pp.get_element_index(net, \"bus\", \"Bus DB 2\")\n", "lv_bus = pp.get_element_index(net, \"bus\", \"Bus SB 1\")\n", "pp.create_transformer_from_parameters(net, hv_bus, lv_bus, sn_kva=300000, vn_hv_kv=380, vn_lv_kv=110, vscr_percent=0.06,\n", " vsc_percent=8, pfe_kw=0, i0_percent=0, tp_pos=0, shift_degree=0, name='EHV-HV-Trafo')\n", "\n", "net.trafo # show trafo table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Switches\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we create the switches to connect the buses in the transformer station. The switch configuration is stored in the following csv table:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "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", " \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", " \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", " \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", " \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", "
bus_namefrom_busto_bustypeetclosed
0DB DS0Double Busbar 2Bus DB T0DSbTrue
1DB DS1Double Busbar 1Bus DB T1DSbTrue
2DB DS2Double Busbar 2Bus DB T3DSbTrue
3DB DS3Double Busbar 1Bus DB T3DSbFalse
4DB DS4Double Busbar 2Bus DB T5DSbTrue
5DB DS5Double Busbar 1Bus DB T5DSbFalse
6DB DS6Double Busbar 2Bus DB T7DSbTrue
7DB DS7Double Busbar 1Bus DB T7DSbFalse
8DB DS8Double Busbar 2Bus DB T9DSbTrue
9DB DS9Double Busbar 1Bus DB T9DSbFalse
10DB DS10Bus DB T2Bus DB 1DSbTrue
11DB DS11Bus DB T4Bus DB 2DSbTrue
12DB DS12Bus DB T6Bus DB 3DSbTrue
13DB DS13Bus DB T8Bus DB 4DSbTrue
14DB CB0Bus DB T0Bus DB T1CBbTrue
15DB CB1Bus DB T3Bus DB T2CBbTrue
16DB CB2Bus DB T5Bus DB T4CBbTrue
17DB CB3Bus DB T7Bus DB T6CBbTrue
18DB CB4Bus DB T9Bus DB T8CBbTrue
19SB DS1.1Bus SB T1.1Bus SB 1DSbTrue
20SB DS1.2Single BusbarBus SB T1.2DSbTrue
21SB DS2.1Bus SB T2.1Bus SB 2DSbTrue
22SB DS2.2Single BusbarBus SB T2.2DSbTrue
23SB DS3.1Bus SB T3.1Bus SB 3DSbTrue
24SB DS3.2Single BusbarBus SB T3.2DSbTrue
25SB DS4.1Bus SB T4.1Bus SB 4DSbTrue
26SB DS4.2Single BusbarBus SB T4.2DSbTrue
27SB DS5.1Bus SB T5.1Bus SB 5DSbTrue
28SB DS5.2Single BusbarBus SB T5.2DSbTrue
29SB CB1Bus SB T1.2Bus SB T1.1CBbTrue
30SB CB2Bus SB T2.2Bus SB T2.1CBbTrue
31SB CB3Bus SB T3.2Bus SB T3.1CBbTrue
32SB CB4Bus SB T4.2Bus SB T4.1CBbTrue
33SB CB5Bus SB T5.2Bus SB T5.1CBbTrue
\n", "
" ], "text/plain": [ " bus_name from_bus to_bus type et closed\n", "0 DB DS0 Double Busbar 2 Bus DB T0 DS b True\n", "1 DB DS1 Double Busbar 1 Bus DB T1 DS b True\n", "2 DB DS2 Double Busbar 2 Bus DB T3 DS b True\n", "3 DB DS3 Double Busbar 1 Bus DB T3 DS b False\n", "4 DB DS4 Double Busbar 2 Bus DB T5 DS b True\n", "5 DB DS5 Double Busbar 1 Bus DB T5 DS b False\n", "6 DB DS6 Double Busbar 2 Bus DB T7 DS b True\n", "7 DB DS7 Double Busbar 1 Bus DB T7 DS b False\n", "8 DB DS8 Double Busbar 2 Bus DB T9 DS b True\n", "9 DB DS9 Double Busbar 1 Bus DB T9 DS b False\n", "10 DB DS10 Bus DB T2 Bus DB 1 DS b True\n", "11 DB DS11 Bus DB T4 Bus DB 2 DS b True\n", "12 DB DS12 Bus DB T6 Bus DB 3 DS b True\n", "13 DB DS13 Bus DB T8 Bus DB 4 DS b True\n", "14 DB CB0 Bus DB T0 Bus DB T1 CB b True\n", "15 DB CB1 Bus DB T3 Bus DB T2 CB b True\n", "16 DB CB2 Bus DB T5 Bus DB T4 CB b True\n", "17 DB CB3 Bus DB T7 Bus DB T6 CB b True\n", "18 DB CB4 Bus DB T9 Bus DB T8 CB b True\n", "19 SB DS1.1 Bus SB T1.1 Bus SB 1 DS b True\n", "20 SB DS1.2 Single Busbar Bus SB T1.2 DS b True\n", "21 SB DS2.1 Bus SB T2.1 Bus SB 2 DS b True\n", "22 SB DS2.2 Single Busbar Bus SB T2.2 DS b True\n", "23 SB DS3.1 Bus SB T3.1 Bus SB 3 DS b True\n", "24 SB DS3.2 Single Busbar Bus SB T3.2 DS b True\n", "25 SB DS4.1 Bus SB T4.1 Bus SB 4 DS b True\n", "26 SB DS4.2 Single Busbar Bus SB T4.2 DS b True\n", "27 SB DS5.1 Bus SB T5.1 Bus SB 5 DS b True\n", "28 SB DS5.2 Single Busbar Bus SB T5.2 DS b True\n", "29 SB CB1 Bus SB T1.2 Bus SB T1.1 CB b True\n", "30 SB CB2 Bus SB T2.2 Bus SB T2.1 CB b True\n", "31 SB CB3 Bus SB T3.2 Bus SB T3.1 CB b True\n", "32 SB CB4 Bus SB T4.2 Bus SB T4.1 CB b True\n", "33 SB CB5 Bus SB T5.2 Bus SB T5.1 CB b True" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hv_bus_sw = pd.read_csv('example_advanced/hv_bus_sw.csv', sep=';', header=0, decimal=',')\n", "hv_bus_sw" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "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", " \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", " \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", " \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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
buselementettypeclosedname
012bDSTrueDB DS0
103bDSTrueDB DS1
215bDSTrueDB DS2
305bDSFalseDB DS3
417bDSTrueDB DS4
507bDSFalseDB DS5
619bDSTrueDB DS6
709bDSFalseDB DS7
8111bDSTrueDB DS8
9011bDSFalseDB DS9
10412bDSTrueDB DS10
11613bDSTrueDB DS11
12814bDSTrueDB DS12
131015bDSTrueDB DS13
1423bCBTrueDB CB0
1554bCBTrueDB CB1
1676bCBTrueDB CB2
1798bCBTrueDB CB3
181110bCBTrueDB CB4
192217bDSTrueSB DS1.1
201623bDSTrueSB DS1.2
212418bDSTrueSB DS2.1
221625bDSTrueSB DS2.2
232619bDSTrueSB DS3.1
241627bDSTrueSB DS3.2
252820bDSTrueSB DS4.1
261629bDSTrueSB DS4.2
273021bDSTrueSB DS5.1
281631bDSTrueSB DS5.2
292322bCBTrueSB CB1
302524bCBTrueSB CB2
312726bCBTrueSB CB3
322928bCBTrueSB CB4
333130bCBTrueSB CB5
34180lLBSTrueSwitch Bus SB 2 - HV Line1
35320lLBSTrueSwitch Bus HV1 - HV Line1
36321lLBSTrueSwitch Bus HV1 - HV Line2
37331lLBSTrueSwitch Bus HV2 - HV Line2
38332lLBSTrueSwitch Bus HV2 - HV Line3
39352lLBSTrueSwitch Bus HV4 - HV Line3
40323lLBSTrueSwitch Bus HV1 - HV Line4
41353lLBSTrueSwitch Bus HV4 - HV Line4
42344lLBSTrueSwitch Bus HV3 - HV Line5
43354lLBSTrueSwitch Bus HV4 - HV Line5
44195lLBSTrueSwitch Bus SB 3 - HV Line6
45345lLBSTrueSwitch Bus HV3 - HV Line6
46130tLBSTrueSwitch DB2 - EHV-HV-Trafo
47170tLBSTrueSwitch SB1 - EHV-HV-Trafo
\n", "
" ], "text/plain": [ " bus element et type closed name\n", "0 1 2 b DS True DB DS0\n", "1 0 3 b DS True DB DS1\n", "2 1 5 b DS True DB DS2\n", "3 0 5 b DS False DB DS3\n", "4 1 7 b DS True DB DS4\n", "5 0 7 b DS False DB DS5\n", "6 1 9 b DS True DB DS6\n", "7 0 9 b DS False DB DS7\n", "8 1 11 b DS True DB DS8\n", "9 0 11 b DS False DB DS9\n", "10 4 12 b DS True DB DS10\n", "11 6 13 b DS True DB DS11\n", "12 8 14 b DS True DB DS12\n", "13 10 15 b DS True DB DS13\n", "14 2 3 b CB True DB CB0\n", "15 5 4 b CB True DB CB1\n", "16 7 6 b CB True DB CB2\n", "17 9 8 b CB True DB CB3\n", "18 11 10 b CB True DB CB4\n", "19 22 17 b DS True SB DS1.1\n", "20 16 23 b DS True SB DS1.2\n", "21 24 18 b DS True SB DS2.1\n", "22 16 25 b DS True SB DS2.2\n", "23 26 19 b DS True SB DS3.1\n", "24 16 27 b DS True SB DS3.2\n", "25 28 20 b DS True SB DS4.1\n", "26 16 29 b DS True SB DS4.2\n", "27 30 21 b DS True SB DS5.1\n", "28 16 31 b DS True SB DS5.2\n", "29 23 22 b CB True SB CB1\n", "30 25 24 b CB True SB CB2\n", "31 27 26 b CB True SB CB3\n", "32 29 28 b CB True SB CB4\n", "33 31 30 b CB True SB CB5\n", "34 18 0 l LBS True Switch Bus SB 2 - HV Line1\n", "35 32 0 l LBS True Switch Bus HV1 - HV Line1\n", "36 32 1 l LBS True Switch Bus HV1 - HV Line2\n", "37 33 1 l LBS True Switch Bus HV2 - HV Line2\n", "38 33 2 l LBS True Switch Bus HV2 - HV Line3\n", "39 35 2 l LBS True Switch Bus HV4 - HV Line3\n", "40 32 3 l LBS True Switch Bus HV1 - HV Line4\n", "41 35 3 l LBS True Switch Bus HV4 - HV Line4\n", "42 34 4 l LBS True Switch Bus HV3 - HV Line5\n", "43 35 4 l LBS True Switch Bus HV4 - HV Line5\n", "44 19 5 l LBS True Switch Bus SB 3 - HV Line6\n", "45 34 5 l LBS True Switch Bus HV3 - HV Line6\n", "46 13 0 t LBS True Switch DB2 - EHV-HV-Trafo\n", "47 17 0 t LBS True Switch SB1 - EHV-HV-Trafo" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Bus-bus switches\n", "for _, switch in hv_bus_sw.iterrows():\n", " from_bus = pp.get_element_index(net, \"bus\", switch.from_bus)\n", " to_bus = pp.get_element_index(net, \"bus\", switch.to_bus)\n", " pp.create_switch(net, from_bus, to_bus, et=switch.et, closed=switch.closed, type=switch.type, name=switch.bus_name)\n", "\n", "# Bus-line switches\n", "hv_buses = net.bus[(net.bus.vn_kv == 380) | (net.bus.vn_kv == 110)].index\n", "hv_ls = net.line[(net.line.from_bus.isin(hv_buses)) & (net.line.to_bus.isin(hv_buses))]\n", "for _, line in hv_ls.iterrows():\n", " pp.create_switch(net, line.from_bus, line.name, et='l', closed=True, type='LBS', name='Switch %s - %s' % (net.bus.name.at[line.from_bus], line['name']))\n", " pp.create_switch(net, line.to_bus, line.name, et='l', closed=True, type='LBS', name='Switch %s - %s' % (net.bus.name.at[line.to_bus], line['name']))\n", "\n", "# Trafo-line switches\n", "pp.create_switch(net, pp.get_element_index(net, \"bus\", 'Bus DB 2'), pp.get_element_index(net, \"trafo\", 'EHV-HV-Trafo'), et='t', closed=True, type='LBS', name='Switch DB2 - EHV-HV-Trafo')\n", "pp.create_switch(net, pp.get_element_index(net, \"bus\", 'Bus SB 1'), pp.get_element_index(net, \"trafo\", 'EHV-HV-Trafo'), et='t', closed=True, type='LBS', name='Switch SB1 - EHV-HV-Trafo')\n", "\n", "# show switch table\n", "net.switch" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### External Grid\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We equip the high voltage side of the transformer with an external grid connection:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "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", "
namebusvm_puva_degreein_services_sc_max_mvarx_minrx_max
0External grid01.030.0True10000.00.10.1
\n", "
" ], "text/plain": [ " name bus vm_pu va_degree in_service s_sc_max_mva rx_min \\\n", "0 External grid 0 1.03 0.0 True 10000.0 0.1 \n", "\n", " rx_max \n", "0 0.1 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_ext_grid(net, pp.get_element_index(net, \"bus\", 'Double Busbar 1'), vm_pu=1.03, va_degree=0, name='External grid',\n", " s_sc_max_mva=10000, rx_max=0.1, rx_min=0.1)\n", "\n", "net.ext_grid # show external grid table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loads\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The five loads in the HV network are defined in the following csv file:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "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", "
load_namebuspq
0MV Net 0Bus SB 4380006000
1MV Net 1Bus HV1380006000
2MV Net 2Bus HV2380006000
3MV Net 3Bus HV3380006000
4MV Net 4Bus HV4380006000
\n", "
" ], "text/plain": [ " load_name bus p q\n", "0 MV Net 0 Bus SB 4 38000 6000\n", "1 MV Net 1 Bus HV1 38000 6000\n", "2 MV Net 2 Bus HV2 38000 6000\n", "3 MV Net 3 Bus HV3 38000 6000\n", "4 MV Net 4 Bus HV4 38000 6000" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hv_loads = pd.read_csv('example_advanced/hv_loads.csv', sep=';', header=0, decimal=',')\n", "hv_loads" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "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", " \n", "
namebusp_kwq_kvarsn_kvascalingin_servicetype
0MV Net 02038000.06000.0NaN1.0TrueNone
1MV Net 13238000.06000.0NaN1.0TrueNone
2MV Net 23338000.06000.0NaN1.0TrueNone
3MV Net 33438000.06000.0NaN1.0TrueNone
4MV Net 43538000.06000.0NaN1.0TrueNone
\n", "
" ], "text/plain": [ " name bus p_kw q_kvar sn_kva scaling in_service type\n", "0 MV Net 0 20 38000.0 6000.0 NaN 1.0 True None\n", "1 MV Net 1 32 38000.0 6000.0 NaN 1.0 True None\n", "2 MV Net 2 33 38000.0 6000.0 NaN 1.0 True None\n", "3 MV Net 3 34 38000.0 6000.0 NaN 1.0 True None\n", "4 MV Net 4 35 38000.0 6000.0 NaN 1.0 True None" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for _, load in hv_loads.iterrows():\n", " bus_idx = pp.get_element_index(net, \"bus\", load.bus)\n", " pp.create_load(net, bus_idx, p_kw=load.p, q_kvar=load.q, name=load.load_name)\n", "\n", "# show load table\n", "net.load" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generator\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The voltage controlled generator is created with an active power of 100 MW (negative for generation) and a voltage set point of 1.03 per unit:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "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", "
namebusp_kwvm_pusn_kvamin_q_kvarmax_q_kvarscalingin_servicetype
0Gas turbine35-100000.01.03NaNNaNNaN1.0TrueNone
\n", "
" ], "text/plain": [ " name bus p_kw vm_pu sn_kva min_q_kvar max_q_kvar scaling \\\n", "0 Gas turbine 35 -100000.0 1.03 NaN NaN NaN 1.0 \n", "\n", " in_service type \n", "0 True None " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_gen(net, pp.get_element_index(net, \"bus\", 'Bus HV4'), vm_pu=1.03, p_kw=-100e3, name='Gas turbine')\n", "\n", "# show generator table\n", "net.gen" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Static generators\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create this wind park with an active power of 20 MW (negative for generation) and a reactive power of -4 Mvar. To classify the generation as a wind park, we set type to \"WP\":" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "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", "
namebusp_kwq_kvarsn_kvascalingin_servicetype
0Wind Park21-20000.0-4000.045000.01.0TrueWP
\n", "
" ], "text/plain": [ " name bus p_kw q_kvar sn_kva scaling in_service type\n", "0 Wind Park 21 -20000.0 -4000.0 45000.0 1.0 True WP" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_sgen(net, pp.get_element_index(net, \"bus\", 'Bus SB 5'), p_kw=-20e3, q_kvar=-4e3, sn_kva=45e3, \n", " type='WP', name='Wind Park')\n", "\n", "# show static generator table\n", "net.sgen" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Shunt\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "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", "
busnameq_kvarp_kwin_service
032Shunt-960.00.0True
\n", "
" ], "text/plain": [ " bus name q_kvar p_kw in_service\n", "0 32 Shunt -960.0 0.0 True" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_shunt(net, pp.get_element_index(net, \"bus\", 'Bus HV1'), p_kw=0, q_kvar=-960, name='Shunt')\n", "\n", "# show shunt table\n", "net.shunt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### External network equivalents\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The two remaining elements are impedances and extended ward equivalents:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "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", "
namefrom_busto_busrft_puxft_purtf_puxtf_pusn_kvain_service
0Impedance34320.0748730.1988720.0748730.198872100000.0True
\n", "
" ], "text/plain": [ " name from_bus to_bus rft_pu xft_pu rtf_pu xtf_pu \\\n", "0 Impedance 34 32 0.074873 0.198872 0.074873 0.198872 \n", "\n", " sn_kva in_service \n", "0 100000.0 True " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Impedance\n", "pp.create_impedance(net, pp.get_element_index(net, \"bus\", 'Bus HV3'), pp.get_element_index(net, \"bus\", 'Bus HV1'), \n", " rft_pu=0.074873, xft_pu=0.198872, sn_kva=100000, name='Impedance')\n", "\n", "# show impedance table\n", "net.impedance" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "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", "
namebusps_kwqs_kvarqz_kvarpz_kwr_ohmx_ohmvm_puin_service
0XWard 13423942.0-12241.8700.02814.5710.012.189511.026160True
1XWard 2323776.0-7769.9790.09174.9170.050.562171.024001True
2XWard 13423942.0-12241.8700.02814.5710.012.189511.026160True
3XWard 2323776.0-7769.9790.09174.9170.050.562171.024001True
\n", "
" ], "text/plain": [ " name bus ps_kw qs_kvar qz_kvar pz_kw r_ohm x_ohm \\\n", "0 XWard 1 34 23942.0 -12241.870 0.0 2814.571 0.0 12.18951 \n", "1 XWard 2 32 3776.0 -7769.979 0.0 9174.917 0.0 50.56217 \n", "2 XWard 1 34 23942.0 -12241.870 0.0 2814.571 0.0 12.18951 \n", "3 XWard 2 32 3776.0 -7769.979 0.0 9174.917 0.0 50.56217 \n", "\n", " vm_pu in_service \n", "0 1.026160 True \n", "1 1.024001 True \n", "2 1.026160 True \n", "3 1.024001 True " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# xwards\n", "pp.create_xward(net, pp.get_element_index(net, \"bus\", 'Bus HV3'), ps_kw=23942, qs_kvar=-12241.87, pz_kw=2814.571, \n", " qz_kvar=0, r_ohm=0, x_ohm=12.18951, vm_pu=1.02616, name='XWard 1')\n", "pp.create_xward(net, pp.get_element_index(net, \"bus\", 'Bus HV1'), ps_kw=3776, qs_kvar=-7769.979, pz_kw=9174.917, \n", " qz_kvar=0, r_ohm=0, x_ohm=50.56217, vm_pu=1.024001, name='XWard 2')\n", "\n", "# show xward table\n", "net.xward" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Medium voltage level" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Buses\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namevn_kvtypezonein_service
36Bus MV0 20kV20.0nNoneTrue
37Bus MV010.0nNoneTrue
38Bus MV110.0nNoneTrue
39Bus MV210.0nNoneTrue
40Bus MV310.0nNoneTrue
41Bus MV410.0nNoneTrue
42Bus MV510.0nNoneTrue
43Bus MV610.0nNoneTrue
44Bus MV710.0nNoneTrue
\n", "
" ], "text/plain": [ " name vn_kv type zone in_service\n", "36 Bus MV0 20kV 20.0 n None True\n", "37 Bus MV0 10.0 n None True\n", "38 Bus MV1 10.0 n None True\n", "39 Bus MV2 10.0 n None True\n", "40 Bus MV3 10.0 n None True\n", "41 Bus MV4 10.0 n None True\n", "42 Bus MV5 10.0 n None True\n", "43 Bus MV6 10.0 n None True\n", "44 Bus MV7 10.0 n None True" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_bus(net, name='Bus MV0 20kV', vn_kv=20, type='n')\n", "for i in range(8):\n", " pp.create_bus(net, name='Bus MV%s' % i, vn_kv=10, type='n')\n", "\n", "#show only medium voltage bus table\n", "mv_buses = net.bus[(net.bus.vn_kv == 10) | (net.bus.vn_kv == 20)]\n", "mv_buses" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lines\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namestd_typefrom_busto_buslength_kmr_ohm_per_kmx_ohm_per_kmc_nf_per_kmmax_i_kadfparalleltypein_service
6MV Line1NA2XS2Y 1x185 RM/25 12/20 kV37381.50.1610.117273.00.3621.01csTrue
7MV Line2NA2XS2Y 1x185 RM/25 12/20 kV38391.50.1610.117273.00.3621.01csTrue
8MV Line3NA2XS2Y 1x185 RM/25 12/20 kV39401.50.1610.117273.00.3621.01csTrue
9MV Line4NA2XS2Y 1x185 RM/25 12/20 kV40411.50.1610.117273.00.3621.01csTrue
10MV Line5NA2XS2Y 1x185 RM/25 12/20 kV41421.50.1610.117273.00.3621.01csTrue
11MV Line6NA2XS2Y 1x185 RM/25 12/20 kV42431.50.1610.117273.00.3621.01csTrue
12MV Line7NA2XS2Y 1x185 RM/25 12/20 kV43441.50.1610.117273.00.3621.01csTrue
13MV Line8NA2XS2Y 1x185 RM/25 12/20 kV37441.50.1610.117273.00.3621.01csTrue
\n", "
" ], "text/plain": [ " name std_type from_bus to_bus length_km \\\n", "6 MV Line1 NA2XS2Y 1x185 RM/25 12/20 kV 37 38 1.5 \n", "7 MV Line2 NA2XS2Y 1x185 RM/25 12/20 kV 38 39 1.5 \n", "8 MV Line3 NA2XS2Y 1x185 RM/25 12/20 kV 39 40 1.5 \n", "9 MV Line4 NA2XS2Y 1x185 RM/25 12/20 kV 40 41 1.5 \n", "10 MV Line5 NA2XS2Y 1x185 RM/25 12/20 kV 41 42 1.5 \n", "11 MV Line6 NA2XS2Y 1x185 RM/25 12/20 kV 42 43 1.5 \n", "12 MV Line7 NA2XS2Y 1x185 RM/25 12/20 kV 43 44 1.5 \n", "13 MV Line8 NA2XS2Y 1x185 RM/25 12/20 kV 37 44 1.5 \n", "\n", " r_ohm_per_km x_ohm_per_km c_nf_per_km max_i_ka df parallel type \\\n", "6 0.161 0.117 273.0 0.362 1.0 1 cs \n", "7 0.161 0.117 273.0 0.362 1.0 1 cs \n", "8 0.161 0.117 273.0 0.362 1.0 1 cs \n", "9 0.161 0.117 273.0 0.362 1.0 1 cs \n", "10 0.161 0.117 273.0 0.362 1.0 1 cs \n", "11 0.161 0.117 273.0 0.362 1.0 1 cs \n", "12 0.161 0.117 273.0 0.362 1.0 1 cs \n", "13 0.161 0.117 273.0 0.362 1.0 1 cs \n", "\n", " in_service \n", "6 True \n", "7 True \n", "8 True \n", "9 True \n", "10 True \n", "11 True \n", "12 True \n", "13 True " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mv_lines = pd.read_csv('example_advanced/mv_lines.csv', sep=';', header=0, decimal=',')\n", "for _, mv_line in mv_lines.iterrows():\n", " from_bus = pp.get_element_index(net, \"bus\", mv_line.from_bus)\n", " to_bus = pp.get_element_index(net, \"bus\", mv_line.to_bus)\n", " pp.create_line(net, from_bus, to_bus, length_km=mv_line.length, std_type=mv_line.std_type, name=mv_line.line_name)\n", "\n", "# show only medium voltage lines\n", "net.line[net.line.from_bus.isin(mv_buses.index)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3 Winding Transformer\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The three winding transformer transforms its high voltage level to two different lower voltage levels, in this case from 110 kV to 20 kV and 10 kV." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "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", "
namestd_typehv_busmv_buslv_bussn_hv_kvasn_mv_kvasn_lv_kvavn_hv_kvvn_mv_kv...i0_percentshift_mv_degreeshift_lv_degreetp_sidetp_midtp_mintp_maxtp_st_percenttp_posin_service
0HV-MV-MV-TrafoNaN333637400001500025000110.020.0...0.030.030.0hv0-881.250True
\n", "

1 rows × 28 columns

\n", "
" ], "text/plain": [ " name std_type hv_bus mv_bus lv_bus sn_hv_kva sn_mv_kva \\\n", "0 HV-MV-MV-Trafo NaN 33 36 37 40000 15000 \n", "\n", " sn_lv_kva vn_hv_kv vn_mv_kv ... i0_percent shift_mv_degree \\\n", "0 25000 110.0 20.0 ... 0.0 30.0 \n", "\n", " shift_lv_degree tp_side tp_mid tp_min tp_max tp_st_percent tp_pos \\\n", "0 30.0 hv 0 -8 8 1.25 0 \n", "\n", " in_service \n", "0 True \n", "\n", "[1 rows x 28 columns]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hv_bus = pp.get_element_index(net, \"bus\", \"Bus HV2\")\n", "mv_bus = pp.get_element_index(net, \"bus\", \"Bus MV0 20kV\")\n", "lv_bus = pp.get_element_index(net, \"bus\", \"Bus MV0\")\n", "pp.create_transformer3w_from_parameters(net, hv_bus, mv_bus, lv_bus, vn_hv_kv=110, vn_mv_kv=20, vn_lv_kv=10, \n", " sn_hv_kva=40000, sn_mv_kva=15000, sn_lv_kva=25000, vsc_hv_percent=10.1, \n", " vsc_mv_percent=10.1, vsc_lv_percent=10.1, vscr_hv_percent=0.266667, \n", " vscr_mv_percent=0.033333, vscr_lv_percent=0.04, pfe_kw=0, i0_percent=0, \n", " shift_mv_degree=30, shift_lv_degree=30, tp_side=\"hv\", tp_mid=0, tp_min=-8, \n", " tp_max=8, tp_st_percent=1.25, tp_pos=0, name='HV-MV-MV-Trafo')\n", "\n", "# show transformer3w table\n", "net.trafo3w" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Switches" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
buselementettypeclosedname
48376lLBSTrueSwitch Bus MV0 - MV Line1
49386lLBSTrueSwitch Bus MV1 - MV Line1
50387lLBSTrueSwitch Bus MV1 - MV Line2
51397lLBSTrueSwitch Bus MV2 - MV Line2
52398lLBSTrueSwitch Bus MV2 - MV Line3
53408lLBSTrueSwitch Bus MV3 - MV Line3
54409lLBSTrueSwitch Bus MV3 - MV Line4
55419lLBSTrueSwitch Bus MV4 - MV Line4
564110lLBSTrueSwitch Bus MV4 - MV Line5
574210lLBSFalseSwitch Bus MV5 - MV Line5
584211lLBSTrueSwitch Bus MV5 - MV Line6
594311lLBSTrueSwitch Bus MV6 - MV Line6
604312lLBSTrueSwitch Bus MV6 - MV Line7
614412lLBSTrueSwitch Bus MV7 - MV Line7
623713lLBSTrueSwitch Bus MV0 - MV Line8
634413lLBSTrueSwitch Bus MV7 - MV Line8
\n", "
" ], "text/plain": [ " bus element et type closed name\n", "48 37 6 l LBS True Switch Bus MV0 - MV Line1\n", "49 38 6 l LBS True Switch Bus MV1 - MV Line1\n", "50 38 7 l LBS True Switch Bus MV1 - MV Line2\n", "51 39 7 l LBS True Switch Bus MV2 - MV Line2\n", "52 39 8 l LBS True Switch Bus MV2 - MV Line3\n", "53 40 8 l LBS True Switch Bus MV3 - MV Line3\n", "54 40 9 l LBS True Switch Bus MV3 - MV Line4\n", "55 41 9 l LBS True Switch Bus MV4 - MV Line4\n", "56 41 10 l LBS True Switch Bus MV4 - MV Line5\n", "57 42 10 l LBS False Switch Bus MV5 - MV Line5\n", "58 42 11 l LBS True Switch Bus MV5 - MV Line6\n", "59 43 11 l LBS True Switch Bus MV6 - MV Line6\n", "60 43 12 l LBS True Switch Bus MV6 - MV Line7\n", "61 44 12 l LBS True Switch Bus MV7 - MV Line7\n", "62 37 13 l LBS True Switch Bus MV0 - MV Line8\n", "63 44 13 l LBS True Switch Bus MV7 - MV Line8" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Bus-line switches\n", "mv_buses = net.bus[(net.bus.vn_kv == 10) | (net.bus.vn_kv == 20)].index\n", "mv_ls = net.line[(net.line.from_bus.isin(mv_buses)) & (net.line.to_bus.isin(mv_buses))]\n", "for _, line in mv_ls.iterrows():\n", " pp.create_switch(net, line.from_bus, line.name, et='l', closed=True, type='LBS', name='Switch %s - %s' % (net.bus.name.at[line.from_bus], line['name']))\n", " pp.create_switch(net, line.to_bus, line.name, et='l', closed=True, type='LBS', name='Switch %s - %s' % (net.bus.name.at[line.to_bus], line['name']))\n", "\n", "# open switch\n", "open_switch_id = net.switch[(net.switch.name == 'Switch Bus MV5 - MV Line5')].index\n", "net.switch.closed.loc[open_switch_id] = False\n", "\n", "#show only medium voltage switch table\n", "net.switch[net.switch.bus.isin(mv_buses)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loads\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "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", " \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", "
namebusp_kwq_kvarsn_kvascalingin_servicetype
5Further MV-Rings376000.02000.0NaN1.0TrueNone
6Industry Load3618000.04000.0NaN1.0TrueNone
7LV Net 138400.0100.0NaN1.0TrueNone
8LV Net 239400.060.0NaN1.0TrueNone
9LV Net 340400.060.0NaN1.0TrueNone
10LV Net 542400.060.0NaN1.0TrueNone
11LV Net 643400.060.0NaN1.0TrueNone
12LV Net 744400.060.0NaN1.0TrueNone
\n", "
" ], "text/plain": [ " name bus p_kw q_kvar sn_kva scaling in_service type\n", "5 Further MV-Rings 37 6000.0 2000.0 NaN 1.0 True None\n", "6 Industry Load 36 18000.0 4000.0 NaN 1.0 True None\n", "7 LV Net 1 38 400.0 100.0 NaN 1.0 True None\n", "8 LV Net 2 39 400.0 60.0 NaN 1.0 True None\n", "9 LV Net 3 40 400.0 60.0 NaN 1.0 True None\n", "10 LV Net 5 42 400.0 60.0 NaN 1.0 True None\n", "11 LV Net 6 43 400.0 60.0 NaN 1.0 True None\n", "12 LV Net 7 44 400.0 60.0 NaN 1.0 True None" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mv_loads = pd.read_csv('example_advanced/mv_loads.csv', sep=';', header=0, decimal=',')\n", "for _, load in mv_loads.iterrows():\n", " bus_idx = pp.get_element_index(net, \"bus\", load.bus)\n", " pp.create_load(net, bus_idx, p_kw=load.p, q_kvar=load.q, name=load.load_name)\n", "\n", "# show only medium voltage loads\n", "net.load[net.load.bus.isin(mv_buses)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Static generators\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "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", "
namebusp_kwq_kvarsn_kvascalingin_servicetype
1Biogas plant43-500.00.0750.01.0TrueSGEN
2Further MV Generator37-500.0-50.01000.01.0TrueSGEN
3Industry Generator36-15000.0-3000.020000.01.0TrueSGEN
4PV Park42-2000.0-100.05000.01.0TruePV
\n", "
" ], "text/plain": [ " name bus p_kw q_kvar sn_kva scaling in_service \\\n", "1 Biogas plant 43 -500.0 0.0 750.0 1.0 True \n", "2 Further MV Generator 37 -500.0 -50.0 1000.0 1.0 True \n", "3 Industry Generator 36 -15000.0 -3000.0 20000.0 1.0 True \n", "4 PV Park 42 -2000.0 -100.0 5000.0 1.0 True \n", "\n", " type \n", "1 SGEN \n", "2 SGEN \n", "3 SGEN \n", "4 PV " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mv_sgens = pd.read_csv('example_advanced/mv_sgens.csv', sep=';', header=0, decimal=',')\n", "for _, sgen in mv_sgens.iterrows():\n", " bus_idx = pp.get_element_index(net, \"bus\", sgen.bus)\n", " pp.create_sgen(net, bus_idx, p_kw=sgen.p, q_kvar=sgen.q, sn_kva=sgen.sn, type=sgen.type, name=sgen.sgen_name)\n", "\n", "# show only medium voltage static generators\n", "net.sgen[net.sgen.bus.isin(mv_buses)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Low voltage level" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Busses\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "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", " \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", "
namevn_kvtypezonein_service
45Bus LV00.4nNoneTrue
46Bus LV1.10.4mNoneTrue
47Bus LV1.20.4mNoneTrue
48Bus LV1.30.4mNoneTrue
49Bus LV1.40.4mNoneTrue
50Bus LV1.50.4mNoneTrue
51Bus LV2.10.4mNoneTrue
52Bus LV2.20.4mNoneTrue
53Bus LV2.30.4mNoneTrue
54Bus LV2.40.4mNoneTrue
55Bus LV2.2.10.4mNoneTrue
56Bus LV2.2.20.4mNoneTrue
\n", "
" ], "text/plain": [ " name vn_kv type zone in_service\n", "45 Bus LV0 0.4 n None True\n", "46 Bus LV1.1 0.4 m None True\n", "47 Bus LV1.2 0.4 m None True\n", "48 Bus LV1.3 0.4 m None True\n", "49 Bus LV1.4 0.4 m None True\n", "50 Bus LV1.5 0.4 m None True\n", "51 Bus LV2.1 0.4 m None True\n", "52 Bus LV2.2 0.4 m None True\n", "53 Bus LV2.3 0.4 m None True\n", "54 Bus LV2.4 0.4 m None True\n", "55 Bus LV2.2.1 0.4 m None True\n", "56 Bus LV2.2.2 0.4 m None True" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.create_bus(net, name='Bus LV0', vn_kv=0.4, type='n')\n", "for i in range(1, 6):\n", " pp.create_bus(net, name='Bus LV1.%s' % i, vn_kv=0.4, type='m')\n", "for i in range(1, 5):\n", " pp.create_bus(net, name='Bus LV2.%s' % i, vn_kv=0.4, type='m')\n", "pp.create_bus(net, name='Bus LV2.2.1', vn_kv=0.4, type='m')\n", "pp.create_bus(net, name='Bus LV2.2.2', vn_kv=0.4, type='m')\n", "\n", "# show only low voltage buses\n", "lv_buses = net.bus[net.bus.vn_kv == 0.4]\n", "lv_buses" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lines\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "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", " \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", " \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", "
namestd_typefrom_busto_buslength_kmr_ohm_per_kmx_ohm_per_kmc_nf_per_kmmax_i_kadfparalleltypein_service
14LV Line1.1NAYY 4x120 SE45460.080.22500.08264.00.2421.01csTrue
15LV Line1.2NAYY 4x120 SE46470.080.22500.08264.00.2421.01csTrue
16LV Line1.3NAYY 4x120 SE47480.080.22500.08264.00.2421.01csTrue
17LV Line1.4NAYY 4x120 SE48490.080.22500.08264.00.2421.01csTrue
18LV Line1.6NAYY 4x120 SE49500.080.22500.08264.00.2421.01csTrue
19LV Line2.1NAYY 4x120 SE45510.120.22500.08264.00.2421.01csTrue
20LV Line2.2NAYY 4x120 SE51520.120.22500.08264.00.2421.01csTrue
21LV Line2.315-AL1/3-ST1A 0.452530.121.87690.3511.00.1051.01olTrue
22LV Line2.415-AL1/3-ST1A 0.453540.121.87690.3511.00.1051.01olTrue
23LV Line2.2.115-AL1/3-ST1A 0.452550.121.87690.3511.00.1051.01olTrue
24LV Line2.2.215-AL1/3-ST1A 0.455560.121.87690.3511.00.1051.01olTrue
\n", "
" ], "text/plain": [ " name std_type from_bus to_bus length_km \\\n", "14 LV Line1.1 NAYY 4x120 SE 45 46 0.08 \n", "15 LV Line1.2 NAYY 4x120 SE 46 47 0.08 \n", "16 LV Line1.3 NAYY 4x120 SE 47 48 0.08 \n", "17 LV Line1.4 NAYY 4x120 SE 48 49 0.08 \n", "18 LV Line1.6 NAYY 4x120 SE 49 50 0.08 \n", "19 LV Line2.1 NAYY 4x120 SE 45 51 0.12 \n", "20 LV Line2.2 NAYY 4x120 SE 51 52 0.12 \n", "21 LV Line2.3 15-AL1/3-ST1A 0.4 52 53 0.12 \n", "22 LV Line2.4 15-AL1/3-ST1A 0.4 53 54 0.12 \n", "23 LV Line2.2.1 15-AL1/3-ST1A 0.4 52 55 0.12 \n", "24 LV Line2.2.2 15-AL1/3-ST1A 0.4 55 56 0.12 \n", "\n", " r_ohm_per_km x_ohm_per_km c_nf_per_km max_i_ka df parallel type \\\n", "14 0.2250 0.08 264.0 0.242 1.0 1 cs \n", "15 0.2250 0.08 264.0 0.242 1.0 1 cs \n", "16 0.2250 0.08 264.0 0.242 1.0 1 cs \n", "17 0.2250 0.08 264.0 0.242 1.0 1 cs \n", "18 0.2250 0.08 264.0 0.242 1.0 1 cs \n", "19 0.2250 0.08 264.0 0.242 1.0 1 cs \n", "20 0.2250 0.08 264.0 0.242 1.0 1 cs \n", "21 1.8769 0.35 11.0 0.105 1.0 1 ol \n", "22 1.8769 0.35 11.0 0.105 1.0 1 ol \n", "23 1.8769 0.35 11.0 0.105 1.0 1 ol \n", "24 1.8769 0.35 11.0 0.105 1.0 1 ol \n", "\n", " in_service \n", "14 True \n", "15 True \n", "16 True \n", "17 True \n", "18 True \n", "19 True \n", "20 True \n", "21 True \n", "22 True \n", "23 True \n", "24 True " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create lines\n", "lv_lines = pd.read_csv('example_advanced/lv_lines.csv', sep=';', header=0, decimal=',')\n", "for _, lv_line in lv_lines.iterrows():\n", " from_bus = pp.get_element_index(net, \"bus\", lv_line.from_bus)\n", " to_bus = pp.get_element_index(net, \"bus\", lv_line.to_bus)\n", " pp.create_line(net, from_bus, to_bus, length_km=lv_line.length, std_type=lv_line.std_type, name=lv_line.line_name)\n", "\n", "# show only low voltage lines\n", "net.line[net.line.from_bus.isin(lv_buses.index)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Transformer\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "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", "
namestd_typehv_buslv_bussn_kvavn_hv_kvvn_lv_kvvsc_percentvscr_percentpfe_kw...shift_degreetp_sidetp_midtp_mintp_maxtp_st_percenttp_st_degreetp_posparallelin_service
1MV-LV-TrafoNone4145400.010.00.44.01.3250.95...150.0hv0.0-2.02.02.5NaN01True
\n", "

1 rows × 21 columns

\n", "
" ], "text/plain": [ " name std_type hv_bus lv_bus sn_kva vn_hv_kv vn_lv_kv \\\n", "1 MV-LV-Trafo None 41 45 400.0 10.0 0.4 \n", "\n", " vsc_percent vscr_percent pfe_kw ... shift_degree tp_side \\\n", "1 4.0 1.325 0.95 ... 150.0 hv \n", "\n", " tp_mid tp_min tp_max tp_st_percent tp_st_degree tp_pos parallel \\\n", "1 0.0 -2.0 2.0 2.5 NaN 0 1 \n", "\n", " in_service \n", "1 True \n", "\n", "[1 rows x 21 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hv_bus = pp.get_element_index(net, \"bus\", \"Bus MV4\")\n", "lv_bus = pp.get_element_index(net, \"bus\",\"Bus LV0\")\n", "pp.create_transformer_from_parameters(net, hv_bus, lv_bus, sn_kva=400, vn_hv_kv=10, vn_lv_kv=0.4, vscr_percent=1.325, vsc_percent=4, pfe_kw=0.95, i0_percent=0.2375, tp_side=\"hv\", tp_mid=0, tp_min=-2, tp_max=2, tp_st_percent=2.5, tp_pos=0, shift_degree=150, name='MV-LV-Trafo')\n", "\n", "#show only low voltage transformer\n", "net.trafo[net.trafo.lv_bus.isin(lv_buses.index)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Switches" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "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", "
buselementettypeclosedname
65451tLBSTrueSwitch LV0 - MV-LV-Trafo
\n", "
" ], "text/plain": [ " bus element et type closed name\n", "65 45 1 t LBS True Switch LV0 - MV-LV-Trafo" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Bus-line switches\n", "lv_ls = net.line[(net.line.from_bus.isin(lv_buses)) & (net.line.to_bus.isin(lv_buses))]\n", "for _, line in lv_ls.iterrows():\n", " pp.create_switch(net, line.from_bus, line.name, et='l', closed=True, type='LBS', name='Switch %s - %s' % (net.bus.name.at[line.from_bus], line['name']))\n", " pp.create_switch(net, line.to_bus, line.name, et='l', closed=True, type='LBS', name='Switch %s - %s' % (net.bus.name.at[line.to_bus], line['name']))\n", "\n", "# Trafo-line switches\n", "pp.create_switch(net, pp.get_element_index(net, \"bus\", 'Bus MV4'), pp.get_element_index(net, \"trafo\", 'MV-LV-Trafo'), et='t', closed=True, type='LBS', name='Switch MV4 - MV-LV-Trafo')\n", "pp.create_switch(net, pp.get_element_index(net, \"bus\", 'Bus LV0'), pp.get_element_index(net, \"trafo\", 'MV-LV-Trafo'), et='t', closed=True, type='LBS', name='Switch LV0 - MV-LV-Trafo')\n", "\n", "# show only low vvoltage switches\n", "net.switch[net.switch.bus.isin(lv_buses.index)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loads\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namebusp_kwq_kvarsn_kvascalingin_servicetype
13Further LV-Feeders Load45100.010.0NaN1.0TrueNone
14Residential Load4610.03.0NaN1.0TrueNone
15Residential Load(1)4710.03.0NaN1.0TrueNone
16Residential Load(2)4810.03.0NaN1.0TrueNone
17Residential Load(3)4910.03.0NaN1.0TrueNone
18Residential Load(4)5010.03.0NaN1.0TrueNone
19Rural Load5110.03.0NaN1.0TrueNone
20Rural Load(1)5210.03.0NaN1.0TrueNone
21Rural Load(2)5310.03.0NaN1.0TrueNone
22Rural Load(3)5410.03.0NaN1.0TrueNone
23Rural Load(4)5510.03.0NaN1.0TrueNone
24Rural Load(5)5610.03.0NaN1.0TrueNone
\n", "
" ], "text/plain": [ " name bus p_kw q_kvar sn_kva scaling in_service \\\n", "13 Further LV-Feeders Load 45 100.0 10.0 NaN 1.0 True \n", "14 Residential Load 46 10.0 3.0 NaN 1.0 True \n", "15 Residential Load(1) 47 10.0 3.0 NaN 1.0 True \n", "16 Residential Load(2) 48 10.0 3.0 NaN 1.0 True \n", "17 Residential Load(3) 49 10.0 3.0 NaN 1.0 True \n", "18 Residential Load(4) 50 10.0 3.0 NaN 1.0 True \n", "19 Rural Load 51 10.0 3.0 NaN 1.0 True \n", "20 Rural Load(1) 52 10.0 3.0 NaN 1.0 True \n", "21 Rural Load(2) 53 10.0 3.0 NaN 1.0 True \n", "22 Rural Load(3) 54 10.0 3.0 NaN 1.0 True \n", "23 Rural Load(4) 55 10.0 3.0 NaN 1.0 True \n", "24 Rural Load(5) 56 10.0 3.0 NaN 1.0 True \n", "\n", " type \n", "13 None \n", "14 None \n", "15 None \n", "16 None \n", "17 None \n", "18 None \n", "19 None \n", "20 None \n", "21 None \n", "22 None \n", "23 None \n", "24 None " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lv_loads = pd.read_csv('example_advanced/lv_loads.csv', sep=';', header=0, decimal=',')\n", "for _, load in lv_loads.iterrows():\n", " bus_idx = pp.get_element_index(net, \"bus\", load.bus)\n", " pp.create_load(net, bus_idx, p_kw=load.p, q_kvar=load.q, name=load.load_name)\n", " \n", "# show only low voltage loads\n", "net.load[net.load.bus.isin(lv_buses.index)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Static generators\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namebusp_kwq_kvarsn_kvascalingin_servicetype
5PV46-6.00.012.01.0TruePV
6PV(1)48-5.00.010.01.0TruePV
7PV(2)53-5.00.010.01.0TruePV
8PV(3)54-5.00.010.01.0TruePV
9PV(4)55-5.00.010.01.0TruePV
10PV(5)56-5.00.010.01.0TruePV
\n", "
" ], "text/plain": [ " name bus p_kw q_kvar sn_kva scaling in_service type\n", "5 PV 46 -6.0 0.0 12.0 1.0 True PV\n", "6 PV(1) 48 -5.0 0.0 10.0 1.0 True PV\n", "7 PV(2) 53 -5.0 0.0 10.0 1.0 True PV\n", "8 PV(3) 54 -5.0 0.0 10.0 1.0 True PV\n", "9 PV(4) 55 -5.0 0.0 10.0 1.0 True PV\n", "10 PV(5) 56 -5.0 0.0 10.0 1.0 True PV" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lv_sgens = pd.read_csv('example_advanced/lv_sgens.csv', sep=';', header=0, decimal=',')\n", "for _, sgen in lv_sgens.iterrows():\n", " bus_idx = pp.get_element_index(net, \"bus\", sgen.bus)\n", " pp.create_sgen(net, bus_idx, p_kw=sgen.p, q_kvar=sgen.q, sn_kva=sgen.sn, type=sgen.type, name=sgen.sgen_name)\n", "\n", "# show only low voltage static generators\n", "net.sgen[net.sgen.bus.isin(lv_buses.index)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run a Power Flow" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "This pandapower network includes the following parameter tables:\n", " - bus (62 elements)\n", " - line (25 elements)\n", " - sgen (11 elements)\n", " - shunt (1 elements)\n", " - trafo3w (1 elements)\n", " - trafo (2 elements)\n", " - impedance (1 elements)\n", " - gen (1 elements)\n", " - xward (4 elements)\n", " - load (25 elements)\n", " - ext_grid (1 elements)\n", " - switch (66 elements)\n", " and the following results tables:\n", " - res_sgen (11 elements)\n", " - res_ext_grid (1 elements)\n", " - res_gen (1 elements)\n", " - res_line (25 elements)\n", " - res_trafo (2 elements)\n", " - res_xward (4 elements)\n", " - res_impedance (1 elements)\n", " - res_shunt (1 elements)\n", " - res_bus (62 elements)\n", " - res_load (25 elements)\n", " - res_trafo3w (1 elements)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.runpp(net, calculate_voltage_angles=True, init=\"dc\")\n", "net" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }