psspy.bsys(1, 0, [0.0, 0.0], 0, [], 1, [45082], 0, [], 0, []) psspy.conl(1, 0, 2, [0, 0], [51.36, 59.32, -228.04, 254.01]) psspy.bsys(1, 0, [0.0, 0.0], 0, [], 9, [40320, 40340, 40350, 40970, 40980, 40990, 41050, 41071, 41120], 0, [], 0, []) psspy.conl(1, 0, 2, [0, 0], [100.0, 0.0, 0.0, 100.0]) psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, -306.02, 303.0]) psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, -306.02, 303.0]) psspy.ordr(0) psspy.fact() psspy.tysl(0) psspy.bsys(0, 0, [0.4, 500.], 0, [], 0, [], 0, [], 0, []) psspy.strt_2([0, 0], OutputFilePath) psspy.run(0, 0.5, 1000, 1, 0) psspy.change_var(var_ppc_setp + 68, 1.05) psspy.change_var(var_ppc_setp + 10, 100) psspy.run(0, 1, 1000, 1, 0) # psspy.change_var(var_ppc_setp + 68, 1.05) # psspy.run(0, 3, 1000, 1, 0) for i in range(0, 1): if i == 0: psspy.branch_chng_3( 400, 950, r"""1""", [_i, _i, _i, _i, _i, _i], [_f, 0.204585 * 0.09, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f], [_f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f], "") psspy.seq_branch_data_3( 400, 950, r"""1""", _i, [0.198244 * 0.00001, _f, _f, _f, _f, _f, _f, _f])
# # psspy.change_con(var_inv1_con+12,-0.35) # Inverter Con, Looks good # psspy.change_con(var_inv1_con+13, 0.59) # Inverter Con, Looks good # # psspy.change_con(var_inv2_con+15,0.85) # Not Final # psspy.change_con(var_inv2_con+16,0.10) # Not Final # # psspy.change_con(var_inv2_con+12,-0.35) # Inverter Con, Looks good # psspy.change_con(var_inv2_con+13, 0.59) # Inverter Con, Looks good # # # start simulation psspy.strt_2([0,0], OutputFilePath) psspy.run(0, 1, 1000, 1, 0) psspy.change_var(var_ppc_setp+68,1.05) psspy.change_var(var_ppc_setp+10,85) psspy.run(0,5, 1000, 1, 0) psspy.change_var(var_ppc_setp+10,68) psspy.run(0, 55, 1000, 1, 0) psspy.change_var(var_ppc_setp+10,85) psspy.run(0, 105, 1000, 1, 0) # psspy.change_var(var_ppc_setp+10,65) # psspy.run(0, 130, 1000, 1, 0) # psspy.change_var(var_ppc_setp+10,85) # # psspy.run(0,180,1000,1,0)
psspy.conl(0, 1, 3, [0, 0], [0.0, 0.0, 0.1, 0.0]) psspy.ordr(0) psspy.fact() psspy.tysl(0) # psspy.add_plant_model(600, r"""1""", 6, r"""SEXS""", 0, "", 0, [], [], 6, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) # psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 1, 0.1) # psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 2, 10.0) # psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 3, 50.0) # psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 4, 0.05) # psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 6, 2.5) psspy.change_plmod_con(600, r"""1""", r"""GENCLS""", 1, 0.9) 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.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"""])
psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 13, -0.3) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 14, 0.5) psspy.change_plmod_con(102, r"""1""", r"""HWS2000""", 13, -0.3) psspy.change_plmod_con(102, r"""1""", r"""HWS2000""", 14, 0.5) psspy.change_plmod_con(103, r"""1""", r"""HWS2000""", 13, -0.3) psspy.change_plmod_con(103, r"""1""", r"""HWS2000""", 14, 0.5) psspy.change_plmod_con(104, r"""1""", r"""HWS2000""", 13, -0.3) psspy.change_plmod_con(104, r"""1""", r"""HWS2000""", 14, 0.5) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 10, 1.0) psspy.change_plmod_icon(101, r"""1""", r"""GPMPPC""", 4, 2) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 23, 0.001) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 24, 0.4) 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.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"""]) psspy.branch_p_and_q_channel([7, -1, -1, 101, 111], r"""1""", [r"""P Injection""", r"""Q Injection"""]) psspy.var_channel([9, var_ppc_setp + 68], r"""Voltage Setpoint""")
# psspy.change_con(var_inv1_con+16,0.10) # Not Final # # psspy.change_con(var_inv1_con+12,-0.35) # Inverter Con, Looks good # psspy.change_con(var_inv1_con+13, 0.59) # Inverter Con, Looks good # # psspy.change_con(var_inv2_con+15,0.85) # Not Final # psspy.change_con(var_inv2_con+16,0.10) # Not Final # # psspy.change_con(var_inv2_con+12,-0.35) # Inverter Con, Looks good # psspy.change_con(var_inv2_con+13, 0.59) # Inverter Con, Looks good # # # start simulation psspy.strt_2([0, 0], OutputFilePath) psspy.run(0, 1, 1000, 1, 0) psspy.change_var(var_ppc_setp + 68, 1.01) psspy.change_var(var_ppc_setp + 10, 85) psspy.run(0, 5, 1000, 1, 0) psspy.change_var(var_ppc_setp + 10, 30) psspy.run(0, 75, 1000, 1, 0) psspy.change_var(var_ppc_setp + 10, 50) psspy.run(0, 110, 1000, 1, 0) psspy.change_var(var_ppc_setp + 10, 65) psspy.run(0, 130, 1000, 1, 0) psspy.change_var(var_ppc_setp + 10, 85) psspy.run(0, 180, 1000, 1, 0) GraphPath = FigurePath + ClauseName + '/'
psspy.conl(1, 0, 2, [0, 0], [52.75, 58.13, 5.97, 95.52]) psspy.bsys(1, 0, [0.0, 0.0], 0, [], 1, [21790], 0, [], 0, []) psspy.conl(1, 0, 2, [0, 0], [86.63, 25.19, -378.97, 347.97]) psspy.bsys(1, 0, [0.0, 0.0], 0, [], 1, [45082], 0, [], 0, []) psspy.conl(1, 0, 2, [0, 0], [51.36, 59.32, -228.04, 254.01]) psspy.bsys(1, 0, [0.0, 0.0], 0, [], 9, [40320, 40340, 40350, 40970, 40980, 40990, 41050, 41071, 41120], 0, [], 0, []) psspy.conl(1, 0, 2, [0, 0], [100.0, 0.0, 0.0, 100.0]) psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, -306.02, 303.0]) psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, -306.02, 303.0]) psspy.ordr(0) psspy.fact() psspy.tysl(0) psspy.bsys(0, 0, [0.4, 500.], 0, [], 0, [], 0, [], 0, []) for t_var in range(1, 9000): 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, 46660], 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""")
psspy.conl(1, 0, 2, [0, 0], [86.63, 25.19, -378.97, 347.97]) psspy.bsys(1, 0, [0.0, 0.0], 0, [], 1, [45082], 0, [], 0, []) psspy.conl(1, 0, 2, [0, 0], [51.36, 59.32, -228.04, 254.01]) psspy.bsys(1, 0, [0.0, 0.0], 0, [], 9, [40320, 40340, 40350, 40970, 40980, 40990, 41050, 41071, 41120], 0, [], 0, []) psspy.conl(1, 0, 2, [0, 0], [100.0, 0.0, 0.0, 100.0]) psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, -306.02, 303.0]) psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, -306.02, 303.0]) psspy.ordr(0) psspy.fact() psspy.tysl(0) psspy.bsys(0, 0, [0.4, 500.], 0, [], 0, [], 0, [], 0, []) for t_var in range(1, 9000): 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""")
psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 13, -0.5) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 14, 0.5) psspy.change_plmod_con(102, r"""1""", r"""HWS2000""", 13, -0.5) psspy.change_plmod_con(102, r"""1""", r"""HWS2000""", 14, 0.5) psspy.change_plmod_con(103, r"""1""", r"""HWS2000""", 13, -0.5) psspy.change_plmod_con(103, r"""1""", r"""HWS2000""", 14, 0.5) psspy.change_plmod_con(104, r"""1""", r"""HWS2000""", 13, -0.5) psspy.change_plmod_con(104, r"""1""", r"""HWS2000""", 14, 0.5) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 10, 1.0) psspy.change_plmod_icon(101, r"""1""", r"""GPMPPC""", 4, 2) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 23, 0.001) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 24, 0.4) 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.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"""]) psspy.branch_p_and_q_channel([7, -1, -1, 101, 111], r"""1""", [r"""P Injection""", r"""Q Injection"""]) psspy.var_channel([9, var_ppc_setp + 68], r"""Voltage Setpoint""")
# psspy.change_con(var_ppc_conp+9, 1.0) #Reactive power inverters do not reduce active power # psspy.change_con(var_inv1_con+15,0.85) # Not Final #LVRT # psspy.change_con(var_inv1_con+16,0.10) # Not Final #LVRT # psspy.change_con(var_inv1_con+12,-0.35) # Inverter Con, Looks good PQ curve Qmin -0.09 # psspy.change_con(var_inv1_con+13, 0.59) # Inverter Con, Looks good PQ curve Qmax 0.46 # start simulation psspy.strt_2([0, 0], OutputFilePath) psspy.run(0, 1, 1000, 1, 0) # # # psspy.run(0, 1, 1000, 1, 0) psspy.change_var(var_ppc_setp + 68, 1.01) psspy.change_var(var_ppc_setp + 10, 85) psspy.run(0, 5, 1000, 1, 0) psspy.change_var(var_ppc_setp + 68, 1.06) psspy.run(0, 15, 1000, 1, 0) psspy.change_var(var_ppc_setp + 68, 0.99) psspy.run(0, 25, 1000, 1, 0) psspy.change_var(var_ppc_setp + 68, 1.01) psspy.run(0, 35, 1000, 1, 0) psspy.change_var(var_ppc_setp + 68, 0.985) psspy.run(0, 45, 1000, 1, 0) psspy.change_var(var_ppc_setp + 68, 1.035) psspy.run(0, 55, 1000, 1, 0)
psspy.change_plmod_con(102, r"""1""", r"""HWS2000""", 13, -t_q) psspy.change_plmod_con(102, r"""1""", r"""HWS2000""", 14, t_q) psspy.change_plmod_con(103, r"""1""", r"""HWS2000""", 13, -t_q) psspy.change_plmod_con(103, r"""1""", r"""HWS2000""", 14, t_q) psspy.change_plmod_con(104, r"""1""", r"""HWS2000""", 13, -t_q) psspy.change_plmod_con(104, r"""1""", r"""HWS2000""", 14, t_q) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 23, 0.001) # QV droop deadband psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 24, 0.4) # QV droop psspy.change_plmod_icon(101, r"""1""", r"""GPMPPC""", 4, 2) # kVar control =0, PF control = 1, Droop Control = 2, Voltage Control = 3 psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 10, 1.0) # start simulation psspy.strt_2([0, 0], OutputFilePath) psspy.run(0, 1, 1000, 1, 0) psspy.change_var(var_ppc_setp+10,400) #psspy.change_var(var_ppc_setp+11,0) psspy.run(0, 10, 1000, 1, 0) psspy.change_var(var_ppc_setp+10,100) psspy.run(0, 20, 1000, 1, 0) # start draw curves # new folder if necessary GraphPath= FigurePath + ClauseName if not os.path.exists(GraphPath): os.makedirs(GraphPath) # read data curves chnfobj = dyntools.CHNF(OutputFilePath) short_title, chanid, chandata = chnfobj.get_data()
# # psspy.change_con(var_inv1_con+12,-0.35) # Inverter Con, Looks good # psspy.change_con(var_inv1_con+13, 0.59) # Inverter Con, Looks good # # psspy.change_con(var_inv2_con+15,0.85) # Not Final # psspy.change_con(var_inv2_con+16,0.10) # Not Final # # psspy.change_con(var_inv2_con+12,-0.35) # Inverter Con, Looks good # psspy.change_con(var_inv2_con+13, 0.59) # Inverter Con, Looks good # start simulation psspy.strt_2([0, 0], OutputFilePath) psspy.run(0, 1, 1000, 1, 0) # psspy.change_var(var_ppc_setp+68,1.05) psspy.change_var(var_ppc_setp + 10, 85) psspy.run(0, 10, 1000, 1, 0) psspy.two_winding_chng_5( 900, 950, r"""1""", [_i, _i, _i, _i, _i, _i, _i, _i, 900, _i, _i, 0, _i, _i, _i], [ _f, _f, _f, 0.90 / 1.05, _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], "", "") psspy.run(0, 15, 1000, 1, 0) psspy.two_winding_chng_5( 900, 950, r"""1""", [_i, _i, _i, _i, _i, _i, _i, _i, 900, _i, _i, 0, _i, _i, _i], [ _f, _f, _f, 1.05 / 1.05, _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], "", "")
psspy.change_plmod_icon(101, r"""1""", r"""GPMPPC""", 4, 3) psspy.change_plmod_icon(101, r"""1""", r"""GPMPPC""", 8, 1) psspy.add_plant_model(600, r"""1""", 6, r"""SEXS""", 0, "", 0, [], [], 6, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 1, 0.1) psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 2, 10.0) psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 3, 100.0) psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 4, 0.1) psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 5, -10.0) psspy.change_plmod_con(600, r"""1""", r"""SEXS""", 6, 10.0) psspy.change_plmod_con(600, r"""1""", r"""GENCLS""", 1, 0.5) psspy.change_plmod_con(600, r"""1""", r"""GENCLS""", 2, 0.1) psspy.resq(GridInfoPath + file_name + ".seq") psspy.load_data_3(600, r"""1""", [_i, _i, _i, _i, _i], [300, 20, _f, _f, _f, _f]) # apply assumption load psspy.fdns([1, 0, 0, 1, 0, 0, 99, 0]) for t_var in range(1, 500): psspy.change_var(t_var, 0) 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"""Pelec101""") ierr = psspy.machine_array_channel([8, 3, 101], r"""1""", r"""Qelec101""") [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') # convert load , do not change psspy.cong(0)