psspy.addmodellibrary(HuaweiModelPath + 'HWS2000_psse34.dll')
    psspy.addmodellibrary(HuaweiModelPath + 'MOD_GPM_PPC_V13_34.dll')
    psspy.addmodellibrary(HuaweiModelPath + 'MOD_GPM_SB_V7.dll')
    psspy.dynamics_solution_param_2([_i, _i, _i, _i, _i, _i, _i, _i],
                                    [0.300, _f, 0.001, 0.004, _f, _f, _f, _f])
    psspy.machine_data_2(
        500, r"""1""", [_i, _i, _i, _i, _i, _i],
        [90, _f, _f, _f, 96.8, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f])
    psspy.fnsl([0, 0, 0, 1, 1, 1, 99, 0])

    psspy.bus_frequency_channel([1, 1000], r"""System frequency""")
    psspy.voltage_channel([2, -1, -1, 500], r"""Inverter Voltage Mag.""")
    psspy.voltage_channel([3, -1, -1, 800], r"""WISF POC Voltage Mag.""")
    psspy.branch_p_and_q_channel([4, -1, -1, 800, 900], r"""1""",
                                 [r"""P Injection""", r"""Q Injection"""])
    ierr = psspy.machine_array_channel([6, 2, 500], r"""1""",
                                       r"""Pelec Inverter""")
    ierr = psspy.machine_array_channel([7, 3, 500], r"""1""",
                                       r"""Qelec Inverter""")

    [ierr, var_ppc_conp] = psspy.mdlind(500, '1', 'EXC', 'CON')
    [ierr, var_ppc_setp] = psspy.mdlind(500, '1', 'EXC', 'VAR')
    [ierr, var_ppc_mode] = psspy.mdlind(500, '1', 'EXC', 'ICON')
    [ierr, var_inv1_con] = psspy.mdlind(500, '1', 'GEN', 'CON')
    [ierr, var_inv1_var] = psspy.mdlind(500, '1', 'GEN', 'VAR')
    [ierr, var_inv1_mod] = psspy.mdlind(500, '1', 'GEN', 'ICON')

    # convert load , do not change
    psspy.cong(0)
    psspy.bsys(0, 0, [0.0, 500.], 1, [7], 0, [], 0, [], 0, [])
    psspy.bsys(0, 0, [0.0, 500.], 1, [7], 0, [], 0, [], 0, [])
    psspy.conl(0, 0, 1, [0, 0], [91.27, 19.36, -126.88, 188.43])
Beispiel #2
0
psspy.addmodellibrary(HuaweiModelPath+'MOD_GPM_SB_V7.dll')
psspy.plant_chng_3(500,0,_i,[ 1.05,_f])
psspy.plant_chng_3(1000,0,_i,[ 1.047,_f])
psspy.dynamics_solution_param_2([_i,_i,_i,_i,_i,_i,_i,_i],[0.300,_f, 0.001,0.004,_f,_f,_f,_f])
psspy.machine_data_2(500, r"""1""", [_i, _i, _i, _i, _i, _i],[87, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f])
psspy.two_winding_chng_5(700,800,r"""1""",[_i,_i,_i,_i,_i,_i,_i,_i,800,_i,_i,1,_i,_i,_i],[_f,_f,_f, 1.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f],r"""SS-TF-1""",
r"""YNYN0""")
psspy.machine_chng_2(500,r"""1""",[_i,_i,_i,_i,_i,_i],[_f,0.0,0,0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f])

psspy.fnsl([0,0,0,1,0,0,99,0])


# convert load , do not change
psspy.cong(0)
psspy.bus_frequency_channel([1,1000],r"""System frequency""")
ierr=psspy.machine_array_channel([2,4,500],r"""1""",r"""Inverter Terminal Voltage""")
ierr=psspy.voltage_channel([3,-1,-1,800],r"""WISF PoC Voltage""")
psspy.branch_p_and_q_channel([4,-1,-1,800,900],r"""1""",[r"""P Injection""",r"""Q Injection"""])
psspy.branch_p_and_q_channel([6,-1,-1,500,600],r"""1""",[r"""P Injection""",r"""Q Injection"""])
# ierr=psspy.machine_array_channel([6,2,500],r"""1""",r"""Pelec Inverter""")
# ierr=psspy.machine_array_channel([7,3,500],r"""1""",r"""Qelec Inverter""")
[ierr, var_ppc_conp] = psspy.mdlind(500, '1', 'EXC', 'CON')
[ierr, var_ppc_setp] = psspy.mdlind(500, '1', 'EXC', 'VAR')
[ierr, var_ppc_mode] = psspy.mdlind(500, '1', 'EXC', 'ICON')
[ierr, var_inv1_con] = psspy.mdlind(500, '1', 'GEN', 'CON')
[ierr, var_inv1_var]=  psspy.mdlind(500,'1','GEN','VAR')
[ierr, var_inv1_mod]=  psspy.mdlind(500,'1','GEN','ICON')

ierr=psspy.var_channel([8,var_ppc_setp+68],"Voltage Setpoint")
ierr=psspy.var_channel([9,var_ppc_setp+10],"Active Power Setpoint")
Beispiel #3
0
            [ierr, var_ppc_conp] = psspy.mdlind(101, '1', 'EXC', 'CON')
            [ierr, var_ppc_setp] = psspy.mdlind(101, '1', 'EXC', 'VAR')
            [ierr, var_ppc_mode] = psspy.mdlind(101, '1', 'EXC', 'ICON')
            [ierr, var_inv_con] = psspy.mdlind(101, '1', 'GEN', 'CON')
            [ierr, var_inv_var] = psspy.mdlind(101, '1', 'GEN', 'VAR')
            [ierr, var_inv_stt] = psspy.mdlind(101, '1', 'GEN', 'STATE')
            psspy.bus_frequency_channel([1, 400], r"""System frequency""")
            psspy.voltage_channel([2, -1, -1, 101],
                                  r"""Inverter Voltage Mag.""")
            psspy.voltage_channel([3, -1, -1, 400],
                                  r"""WD SF POC Voltage Mag.""")
            psspy.branch_p_and_q_channel(
                [4, -1, -1, 400, 46660], r"""1""",
                [r"""P Injection""", r"""Q Injection"""])
            ierr = psspy.machine_array_channel([7, 2, 101], r"""1""",
                                               r"""Pelec 100""")
            ierr = psspy.machine_array_channel([8, 3, 101], r"""1""",
                                               r"""Qelec 100""")
            #           ierr = psspy.state_channel([9, var_inv_stt + 6], r"""Inverter Voltage Measurement""")

            # start simulation
            psspy.strt_2([0, 0], OutputFilePath)
            psspy.run(0, 1, 1000, 1, 0)
            psspy.run(0, 5, 1000, 1, 0)
            psspy.two_winding_chng_5(
                500, 46660, r"""1""",
                [_i, _i, _i, _i, _i, _i, _i, _i, 500, _i, _i, 0, _i, _i, _i], [
                    _f, _f, _f, _f, _f, _f, vref[k], _f, _f, _f, _f, _f, _f,
                    _f, _f, _f, _f, _f, _f, _f, _f
                ], [_f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f], "", "")
            psspy.run(0, 20, 1000, 1, 0)
    psspy.fdns([0, 0, 1, 1, 0, 0, 99, 0])

    # convert load , do not change
    psspy.cong(0)
    psspy.conl(0, 1, 1, [0, 0], [100.0, 0.0, 0.0, 100.0])
    psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, 0.0, 100.0])
    psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, 0.0, 100.0])
    psspy.ordr(0)  # Order the matrix: ORDR
    psspy.fact()  # Factorize the matrix: FACT
    psspy.tysl(0)  # TYSL

    psspy.bus_frequency_channel([1, 969], r"""System frequency""")
    psspy.voltage_channel([2, -1, -1, 969], r"""IB_Voltage""")
    psspy.voltage_channel([3, -1, -1, 100], r"""UUT_Voltage""")
    psspy.voltage_channel([4, -1, -1, 106], r"""POC_Voltage""")
    psspy.machine_array_channel([5, 2, 100], r"""1""", r"""UUT_Pelec""")
    psspy.machine_array_channel([6, 3, 100], r"""1""", r"""UUT_Qelec""")
    psspy.branch_p_and_q_channel([7, -1, -1, 105, 106], r"""1""",
                                 [r"""POC_Flow""", ""])
    psspy.machine_array_channel([9, 9, 100], r"""1""", r"""UUT_IDcmd""")
    psspy.machine_array_channel([10, 12, 100], r"""1""", r"""UUT_IQcmd""")
    psspy.machine_array_channel([11, 8, 100], r"""1""", r"""PPC_Pcmd""")
    psspy.machine_array_channel([12, 5, 100], r"""1""", r"""PPC_Qcmd""")

    [ierr, var_ppc_conp] = psspy.mdlind(100, '1', 'EXC', 'CON')
    [ierr, var_ppc_setp] = psspy.mdlind(100, '1', 'EXC', 'VAR')
    [ierr, var_ppc_mode] = psspy.mdlind(100, '1', 'EXC', 'ICON')
    [ierr, var_inv_con] = psspy.mdlind(100, '1', 'GEN', 'CON')
    [ierr, var_inv_var] = psspy.mdlind(100, '1', 'GEN', 'VAR')
    [ierr, var_inv_mod] = psspy.mdlind(100, '1', 'GEN', 'ICON')
Beispiel #5
0
# psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 6, 2.5)
psspy.change_plmod_con(600, r"""1""", r"""GENCLS""", 1, 0.1)
psspy.change_plmod_con(600, r"""1""", r"""GENCLS""", 2, 1)

for t_var in range(1, 9000):
    psspy.change_var(t_var, 0)

[ierr, var_ppc_conp] = psspy.mdlind(101, '1', 'EXC', 'CON')
[ierr, var_ppc_setp] = psspy.mdlind(101, '1', 'EXC', 'VAR')
[ierr, var_ppc_mode] = psspy.mdlind(101, '1', 'EXC', 'ICON')
[ierr, var_inv_con] = psspy.mdlind(101, '1', 'GEN', 'CON')
[ierr, var_inv_var] = psspy.mdlind(101, '1', 'GEN', 'VAR')
[ierr, var_inv_stt] = psspy.mdlind(101, '1', 'GEN', 'STATE')
psspy.bus_frequency_channel([1, 400], r"""System frequency""")
#psspy.voltage_channel([2, -1, -1, 101], r"""Inverter Voltage Mag.""")
psspy.machine_array_channel([2, 4, 101],r"""1""", r"""Inverter Voltage Mag.""")
psspy.voltage_channel([3, -1, -1, 400], r"""WD SF POC Voltage Mag.""")
psspy.branch_p_and_q_channel([4, -1, -1, 400, 46660], r"""1""", [r"""P Injection""", r"""Q Injection"""])
ierr = psspy.machine_array_channel([7, 2, 101], r"""1""", r"""Pelec 101""")
ierr = psspy.machine_array_channel([8, 3, 101], r"""1""", r"""Qelec 101""")

psspy.cong(0)
# psspy.conl(0, 1, 1, [0, 0], [0.0, 0.0, 0.1, 0.0])
# psspy.conl(0, 1, 2, [0, 0], [0.0, 0.0, 0.1, 0.0])
# psspy.conl(0, 1, 3, [0, 0], [0.0, 0.0, 0.1, 0.0])
psspy.ordr(1)
psspy.fact()
psspy.tysl(1)
# psspy.change_plmod_icon(101,r"""1""",r"""HWS2000""",1,0)
# psspy.change_plmod_icon(102,r"""1""",r"""HWS2000""",1,0)
# psspy.change_plmod_icon(103,r"""1""",r"""HWS2000""",1,0)
psspy.psseinit(10000)
#
## Initiation----------------------------------------------------------------------------------------------------------------------------------
psspy.case(casefile)  # Read in the power flow data
psspy.dyre_new([1, 1, 1, 1], dyrfile, "", "", "")

# Convert the loads for dynamic simulation
psspy.cong(0)
psspy.conl(0, 1, 1, [0, 0], [10.0, 10.0, 0.0, 100.0])
psspy.conl(0, 1, 2, [0, 0], [10.0, 10.0, 0.0, 100.0])
psspy.conl(0, 1, 3, [0, 0], [10.0, 10.0, 0.0, 100.0])

# Set the time step for the dynamic simulation
psspy.dynamics_solution_params(realar=[_f, _f, 0.005, _f, _f, _f, _f, _f])

psspy.machine_array_channel([1, 2, 5500])  # Monitor Skien Power (as 5101 Hasle does not have any machine to measure frequency)
psspy.machine_array_channel([2, 7, 5500])  # Monitor Skien Frequency (as 5101 Hasle does not have any machine to measure frequency)

load = load_models.Load(3359)  # Create a load consisting of Ringhals

ierr = psspy.strt(outfile=outputfile)  # Tell PSS/E to write to the output file

# Simulation----------------------------------------------------------------------------------------------------------------------------------

if ierr == 0:
    # nprt: number of time steps between writing to screen
    # nplt: number of time steps between writing to output file
    psspy.run(tpause=0, nprt=0, nplt=0)  # run the simulation
    load.step(1120)  # Do a 1120MW load step in Ringhals
    psspy.run(tpause=120)  # Pause the simulation after 120 seconds
psspy.addmodellibrary(HuaweiModelPath + 'MOD_GPM_SB_V7.dll')
psspy.dynamics_solution_param_2([_i, _i, _i, _i, _i, _i, _i, _i],
                                [0.300, _f, 0.001, 0.004, _f, _f, _f, _f])
# psspy.two_winding_chng_5(104,299,r"""1""",[_i,_i,_i,_i,_i,_i,_i,_i,299,_i,_i,1,_i,_i,_i],[_f,_f,_f, 1.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f],r"""SS-TF-1""",
# r"""YNYN0""")
# psspy.two_winding_chng_5(204,299,r"""1""",[_i,_i,_i,_i,_i,_i,_i,_i,299,_i,_i,1,_i,_i,_i],[_f,_f,_f, 1.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f],r"""SS-TF-2""",
# r"""YNYN0""")
psspy.machine_data_2(
    500, r"""1""", [_i, _i, _i, _i, _i, _i],
    [90, _f, _f, _f, 96.8, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f])
psspy.fnsl([0, 0, 0, 1, 0, 0, 99, 0])

# convert load , do not change
psspy.cong(0)
psspy.bus_frequency_channel([1, 1000], r"""System frequency""")
ierr = psspy.machine_array_channel([2, 4, 500], r"""1""",
                                   r"""Inverter Terminal Voltage""")
ierr = psspy.voltage_channel([3, -1, -1, 800], r"""WISF PoC Voltage""")
psspy.branch_p_and_q_channel([4, -1, -1, 800, 900], r"""1""",
                             [r"""P Injection""", r"""Q Injection"""])
ierr = psspy.machine_array_channel([6, 2, 500], r"""1""",
                                   r"""Pelec Inverter""")
ierr = psspy.machine_array_channel([7, 3, 500], r"""1""",
                                   r"""Qelec Inverter""")
[ierr, var_ppc_conp] = psspy.mdlind(500, '1', 'EXC', 'CON')
[ierr, var_ppc_setp] = psspy.mdlind(500, '1', 'EXC', 'VAR')
[ierr, var_ppc_mode] = psspy.mdlind(500, '1', 'EXC', 'ICON')
[ierr, var_inv1_con] = psspy.mdlind(500, '1', 'GEN', 'CON')
[ierr, var_inv1_var] = psspy.mdlind(500, '1', 'GEN', 'VAR')
[ierr, var_inv1_mod] = psspy.mdlind(500, '1', 'GEN', 'ICON')

ierr = psspy.var_channel([8, var_ppc_setp + 68], "Voltage Setpoint")
    psspy.change_var(t_var, 0)

[ierr, var_ppc_conp] = psspy.mdlind(
    101, '1', 'EXC', 'CON'
)  # Use this API to return plant-related model starting array indices and status. get the EXC (GPMPPC)'s CON
[ierr, var_ppc_setp] = psspy.mdlind(101, '1', 'EXC', 'VAR')
[ierr, var_ppc_mode] = psspy.mdlind(101, '1', 'EXC', 'ICON')
[ierr, var_inv_con] = psspy.mdlind(101, '1', 'GEN', 'CON')
[ierr, var_inv_var] = psspy.mdlind(101, '1', 'GEN', 'VAR')
[ierr, var_inv_stt] = psspy.mdlind(101, '1', 'GEN', 'STATE')
psspy.bus_frequency_channel([1, 400], r"""System frequency""")
psspy.voltage_channel([2, -1, -1, 101], r"""Inverter Voltage Mag.""")
psspy.voltage_channel([3, -1, -1, 400], r"""NEOEN SF POC Voltage Mag.""")
psspy.branch_p_and_q_channel([4, -1, -1, 400, 46660], r"""1""",
                             [r"""P Injection""", r"""Q Injection"""])
ierr = psspy.machine_array_channel([7, 2, 101], r"""1""", r"""Pelec 101""")
ierr = psspy.machine_array_channel([8, 3, 101], r"""1""", r"""Qelec 101""")
ierr = psspy.machine_array_channel([9, 2, 102], r"""1""", r"""Pelec 102""")
ierr = psspy.machine_array_channel([10, 3, 102], r"""1""", r"""Qelec 102""")
ierr = psspy.machine_array_channel([11, 2, 103], r"""1""", r"""Pelec 103""")
ierr = psspy.machine_array_channel([12, 3, 103], r"""1""", r"""Qelec 103""")
ierr = psspy.machine_array_channel([13, 2, 104], r"""1""", r"""Pelec 104""")
ierr = psspy.machine_array_channel([14, 3, 104], r"""1""", r"""Qelec 104""")
#ierr = psspy.state_channel([15, var_inv_stt + 6], r"""Inverter Voltage Measurement""")
psspy.var_channel([15, var_ppc_setp + 68], r"""Voltage Setpoint""")
psspy.change_plmod_icon(101, r"""1""", r"""HWS2000""", 4, 1)

# start simulation
psspy.strt_2([0, 0], OutputFilePath)
psspy.run(0, 5, 1000, 1, 0)
psspy.change_var(var_ppc_setp + 68, 1.05)
Beispiel #9
0
    psspy.fdns([0, 0, 1, 1, 0, 0, 99, 0])

    # convert load , do not change
    psspy.cong(0)
    psspy.conl(0, 1, 1, [0, 0], [100.0, 0.0, 0.0, 100.0])
    psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, 0.0, 100.0])
    psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, 0.0, 100.0])
    psspy.ordr(0) # ! Order the matrix: ORDR
    psspy.fact()  # ! Factorize the matrix: FACT
    psspy.tysl(0) # ! TYSL

    psspy.bus_frequency_channel([1, 969], r"""System frequency""")
    psspy.voltage_channel([2, -1, -1, 969], r"""IB_Voltage""")
    psspy.voltage_and_angle_channel([3, -1, -1, 100], [r"""UUT_Voltage""", r"""UUT_Angle"""])
    psspy.voltage_and_angle_channel([5, -1, -1, 106], [r"""POC_Voltage""", r"""POC_Angle"""])
    psspy.machine_array_channel([7, 2, 100], r"""1""", r"""UUT_Pelec""")
    psspy.machine_array_channel([8, 3, 100], r"""1""", r"""UUT_Qelec""")
    psspy.branch_p_and_q_channel([9, -1, -1, 105, 106], r"""1""", [r"""POC_Flow""", ""])
    psspy.machine_array_channel([11, 9, 100], r"""1""", r"""UUT_IDcmd""")
    psspy.machine_array_channel([12, 12, 100], r"""1""", r"""UUT_IQcmd""")
    psspy.machine_array_channel([13, 8, 100], r"""1""", r"""PPC_Pcmd""")
    psspy.machine_array_channel([14, 5, 100], r"""1""", r"""PPC_Qcmd""")

    psspy.strt_2([0, 0], OutputFilePath)
    psspy.run(0, 1.0, 1000, 5, 5)
    psspy.two_winding_data_3(bus_flt, bus_IDTRF, r"""1""", realari6=20)
    psspy.run(0, 6.0, 1000, 5, 5)
    psspy.two_winding_data_3(bus_flt, bus_IDTRF, r"""1""", realari6=0)
    psspy.run(0, 11.0, 1000, 5, 5)
    psspy.two_winding_data_3(bus_flt, bus_IDTRF, r"""1""", realari6=-20)
    psspy.run(0, 16.0, 1000, 5, 5)
Beispiel #11
0
import utils
Beispiel #12
0
psspy.psseinit(10000)

# Initiation----------------------------------------------------------------------------------------------------------------------------------
psspy.case(casefile)  # Read in the power flow data
psspy.dyre_new([1, 1, 1, 1], dyrfile, "", "", "")

# Convert the loads for dynamic simulation
psspy.cong(0)
psspy.conl(0, 1, 1, [0, 0], [50.0, 50.0, 0.0, 100.0])
psspy.conl(0, 1, 2, [0, 0], [50.0, 50.0, 0.0, 100.0])
psspy.conl(0, 1, 3, [0, 0], [50.0, 50.0, 0.0, 100.0])

# Set the time step for the dynamic simulation
psspy.dynamics_solution_params(realar=[_f, _f, 0.005, _f, _f, _f, _f, _f])

psspy.machine_array_channel([1, 2, 6000])  # Monitor Kvilldal Power
psspy.machine_array_channel([2, 7, 6000])  # Monitor Kvilldal Frequency

load = load_models.Load(6500)  # Create a load consisting of Trondheim

ierr = psspy.strt(outfile=outputfile)  # Tell PSS/E to write to the output file

# Simulation----------------------------------------------------------------------------------------------------------------------------------

if ierr == 0:
    # nprt: number of time steps between writing to screen
    # nplt: number of time steps between writing to output file
    psspy.run(tpause=0, nprt=0, nplt=0)  # run the simulation
    load.step(100)  # Do a 100MW load step in Trondheim
    psspy.run(tpause=120)  # Pause the simulation after 120 seconds