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"""Pelec Inverter""",r"""Pelec Inverter"""]) # 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") psspy.change_plmod_con(500,r"""1""",r"""HWS2000""",10, 0.1111) psspy.change_plmod_con(500,r"""1""",r"""HWS2000""",8, 0.75) # psspy.change_plmod_con(500,r"""1""",r"""GPMPPC""",36, 50) # psspy.change_plmod_con(500,r"""1""",r"""GPMPPC""",16, 50) # psspy.change_plmod_con(500,r"""1""",r"""GPMPPC""",17, 50) # psspy.change_con(var_ppc_conp+9, 1.0) # psspy.change_con(var_ppc_conp+4, 0.6) # psspy.change_con(var_ppc_conp+5,-0.6) # psspy.change_con(var_ppc_conp+22,0.001) # psspy.change_con(var_ppc_conp+23,0.50) # # psspy.change_con(var_ppc_conp+25,0.80) # psspy.change_con(var_ppc_conp+26,1.20) # # psspy.change_con(var_ppc_conp+1,0.02) # psspy.change_con(var_ppc_conp+2,0.15)
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') psspy.change_plmod_con(100, r"""1""", r"""SMASC161""", 38, 0.0) # FRT_VOLFILMOD psspy.change_plmod_con(100, r"""1""", r"""SMASC161""", 31, 0.115) # HVRT 1-J+30 psspy.change_plmod_con(100, r"""1""", r"""SMASC161""", 32, 0.095) # HVRT 1-J+31 psspy.strt_2([0, 0], OutputFilePath) J_vals = [] L_vals = [] Vset_vals = [] ierr, J1 = psspy.mdlind(100, '1', 'EXC', 'CON') ierr, L1 = psspy.mdlind(100, '1', 'EXC', 'VAR') ierr, vset1 = psspy.dsrval('VAR', L1 + VAR_PPCVini) J_vals.append(J1) L_vals.append(L1) Vset_vals.append(vset1)
_f, _f, _f, ReactivePowerSetpoint * S, 120, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f ]) # psspy.machine_chng_2(101,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(102,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(103,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(104,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f, 10.8,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(104,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f, 10.8, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(103,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f, 10.8, 10.8, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(102,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f, 10.8, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(101,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f, 10.8, 10.8, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(102,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f, 10.8,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) psspy.fdns([0, 0, 0, 1, 1, 1, 99, 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) 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)
_f, _f, _f, ReactivePowerSetpoint * S, 120, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f ]) # psspy.machine_chng_2(101,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(102,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(103,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(104,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f, 10.8,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(104,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f, 10.8, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(103,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f, 10.8, 10.8, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(102,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f,_f, 10.8, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(101,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f, 10.8, 10.8, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) # psspy.machine_chng_2(102,r"""1""",[_i,_i,_i,_i,_i,_i],[ 108.0,_f, 10.8,_f, 120.0,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) psspy.fdns([0, 0, 0, 1, 0, 0, 99, 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')
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.plmod_status(500,r"""1""",6,0) # psspy.plmod_status(500,r"""1""",3,0) # psspy.change_plmod_con(500,r"""1""",r"""GPMPPC""",26, 0.85) # psspy.change_plmod_con(500,r"""1""",r"""GPMPPC""",27, 1.15) # psspy.change_plmod_icon(500,r"""1""",r"""HWS2000""",2,1) # disable PF function of the inverter # psspy.plmod_status(500,r"""1""",6,0) # disable PPC psspy.change_plmod_icon(500, r"""1""", r"""HWS2000""", 1, 0) psspy.change_plmod_icon(500, r"""1""", r"""HWS2000""", 2, 0) psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 16, 6) psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 17, 6) psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 33, 50.15) psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 34, 52.0) psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 35, 50.2) psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 36, 20.0) psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 37, 49.85) psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 38, 47.0) psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 8, 1) psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 9, 1) # this is for the votlage control psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 1, 20) #ori=5 psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 2, 20) #ori=5 psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 3, 50) #ori=5 psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 4, 2) #ori=3 psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 23, 0.003) #ori=0.003
psspy.machine_data_2(102, r"""1""", [_i, _i, _i, _i, _i, _i], [100, _f, 60, -40, 120, _f,120, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f]) psspy.machine_data_2(103, r"""1""", [_i, _i, _i, _i, _i, _i], [100, _f, 60, -40, 120, _f, 120, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f]) psspy.machine_data_2(104, r"""1""", [_i, _i, _i, _i, _i, _i], [100, _f, 60, -40, 120, _f, 120, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f]) # psspy.machine_data_2(100, r"""1""", [_i, _i, _i, _i, _i, _i], # [_f, _f, 5, _f, 132, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f]) # psspy.machine_data_2(100, r"""1""", [_i, _i, _i, _i, _i, _i], # [_f, _f, _f, 5, 132, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, # _f]) # be careful, partial active power = not enough solar irraidance. psspy.fdns([1, 0, 0, 1, 0, 0, 99, 0]) t_q = 0.569 # psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 5, 0.6667) # psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 5, -0.5) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 13, -t_q) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 14, t_q) 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) for t_var in range(0, 9000): psspy.change_var(t_var, 0) psspy.plmod_status(30531, r"""1""", 1, 0)
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') psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 1, 4) psspy.strt_2([0, 0], OutputFilePath) J_vals = [] L_vals = [] Qset_vals = [] ierr, J1 = psspy.mdlind(100, '1', 'EXC', 'CON') ierr, L1 = psspy.mdlind(100, '1', 'EXC', 'VAR') ierr, qset1 = psspy.dsrval('VAR', L1 + VAR_PPCQini) J_vals.append(J1) L_vals.append(L1) Qset_vals.append(qset1) # Run dynamic simulations psspy.run(0, 1.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 34,
psspy.bsys(1,0,[0.0,0.0],0,[],6,[37600,37601,37602,37580,37584,38588],0,[],0,[]) 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,[]) psspy.change_plmod_con(101,r"""1""",r"""GPMPPC""",16, 3) psspy.change_plmod_con(101,r"""1""",r"""GPMPPC""",17, 3) psspy.change_plmod_icon(101,r"""1""",r"""GPMPPC""",10,1) # 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,200) psspy.run(0, 30, 1000, 1, 0) psspy.change_var(var_ppc_setp+10,100) psspy.run(0, 50, 1000, 1, 0) psspy.change_var(var_ppc_setp+10,200)
# convert load , do not change 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(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) # tune the controllers t_q = 0.569 psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 5, 0.335) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 6, -0.335) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 13, -t_q) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 14, t_q) 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.machine_data_2(103, r"""1""", [_i, _i, _i, _i, _i, _i], [ 100, _f, 60, -40, 120, _f, 120, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f ]) psspy.machine_data_2(104, r"""1""", [_i, _i, _i, _i, _i, _i], [ 100, _f, 60, -40, 120, _f, 120, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f ]) # psspy.machine_data_2(100, r"""1""", [_i, _i, _i, _i, _i, _i], # [_f, _f, 5, _f, 132, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f]) # psspy.machine_data_2(100, r"""1""", [_i, _i, _i, _i, _i, _i], # [_f, _f, _f, 5, 132, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, # _f]) # be careful, partial active power = not enough solar irraidance. psspy.fdns([1, 0, 0, 1, 0, 0, 99, 0]) t_q = 0.569 psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 5, 0.5) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 5, -0.5) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 13, -t_q) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 14, t_q) 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
[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') psspy.strt_2([0, 0], OutputFilePath) J_vals = [] L_vals = [] Vset_vals = [] ierr, J1 = psspy.mdlind(100, '1', 'EXC', 'CON') ierr, L1 = psspy.mdlind(100, '1', 'EXC', 'VAR') ierr, vset1 = psspy.dsrval('VAR', L1 + VAR_PPCVini) J_vals.append(J1) L_vals.append(L1) Vset_vals.append(vset1) # Run dynamic simulations psspy.run(0, 1.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 11, float(Vset_vals[0]) - dVref) psspy.run(0, 10.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 11, float(Vset_vals[0])) psspy.run(0, 20.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 11, float(Vset_vals[0]) + dVref) psspy.run(0, 30.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 11, float(Vset_vals[0])) psspy.run(0, 40.0, 1000, 5, 5)
_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, 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.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 1, 20) #ori=5 psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 2, 20) #ori=5 psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 3, 50) #ori=5 psspy.change_plmod_icon(500, r"""1""", r"""GPMPPC""", 4, 2) #ori=3 psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 23, 0.003) #ori=0.003 psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 24, 0.5) # droop ori=5% psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 2, 0.02) # proportional gain ori=0.001 psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 3, 0.25) # integral gain ori=0.15 psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 5, 0.5) #PPC reactive power UB #ori=1 psspy.change_plmod_con(500, r"""1""", r"""GPMPPC""", 6, -0.3) #PPC reactive power LB #ori=1 # psspy.change_plmod_con(500,r"""1""",r"""GPMPPC""",7, 0.01) ##ramp up # psspy.change_plmod_con(500,r"""1""",r"""HWS2000""",13,-0.46) # psspy.change_plmod_con(500,r"""1""",r"""HWS2000""",14,0.46)
# psspy.addmodellibrary(GridInfoPath+'GEWTG34.dll') # psspy.addmodellibrary(GridInfoPath+'SMAPPC_B111_34_IVF111.dll') # psspy.addmodellibrary(GridInfoPath+'SMASC_C135_34_IVF111.dll') psspy.dyre_new([1, 1, 1, 1], GridInfoPath + file_name + ".dyr", "", "", "") psspy.dynamics_solution_param_2([_i, _i, _i, _i, _i, _i, _i, _i], [1.000, _f, 0.001, 0.004, _f, _f, _f, _f]) for i in range(0, len(Disturbance_Load_Amount)): # re - initialize psspy.read(0, GridInfoPath + file_name + ".raw") psspy.dyre_new([1, 1, 1, 1], GridInfoPath + file_name + ".dyr", "", "", "") psspy.change_plmod_icon(101, r"""1""", r"""HWS2000""", 1, 2) psspy.change_plmod_icon(102, r"""1""", r"""HWS2000""", 1, 2) psspy.change_plmod_icon(103, r"""1""", r"""HWS2000""", 1, 2) psspy.change_plmod_icon(104, r"""1""", r"""HWS2000""", 1, 2) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 45, 50.6) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 46, 600.0) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 47, 51.1) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 48, 120.0) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 49, 52.1) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 51, 53.1) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 53, 54.0) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 55, 49.4) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 56, 600.0) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 57, 48.9) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 58, 120.0) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 59, 46.9) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 61, 45.9) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 63, 44.9) psspy.change_plmod_con(101, r"""1""", r"""HWS2000""", 65, 43.9) psspy.change_plmod_con(102, r"""1""", r"""HWS2000""", 45, 50.6)
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 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_con(600, r"""1""", r"""GENCLS""", 1, 8.0) # start simulation psspy.strt_2([0, 0], OutputFilePath) psspy.run(0, 1, 1000, 1, 0) if fault_type == 1: # three phase fault psspy.dist_bus_fault(500, 3, 275.0, [0, 0.0]) fault_name = 'T10_3-phase_DD' fault_time = 0.430 if fault_type == 2: # two phase psspy.dist_scmu_fault_2([0, 0, 2, 500, _i], [0.0, 0.0, 0.0, 0.0]) fault_name = 'T11_2-phase_DD' fault_time = 0.430
[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') psspy.strt_2([0, 0], OutputFilePath) J_vals = [] L_vals = [] Pset_vals = [] ierr, J1 = psspy.mdlind(100, '1', 'EXC', 'CON') ierr, L1 = psspy.mdlind(100, '1', 'EXC', 'VAR') ierr, Pset1 = psspy.dsrval('VAR', L1 + VAR_PPCPini) J_vals.append(J1) L_vals.append(L1) Pset_vals.append(Pset1) # Run dynamic simulations psspy.run(0, 5.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 19, Pset_vals[0] * (1 - dPref)) psspy.run(0, 10.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 19, Pset_vals[0] * (1 - dPref*2)) psspy.run(0, 15.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 19, Pset_vals[0] * (1 - dPref*3)) psspy.run(0, 20.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 19, Pset_vals[0] * (1 - dPref*4)) psspy.run(0, 25.0, 1000, 5, 5) psspy.change_plmod_con(100, r"""1""", r"""SMAPPC130""", 19, Pset_vals[0]) psspy.run(0, 40.0, 1000, 5, 5)
# convert load , do not change 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(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],
psspy.addmodellibrary(HuaweiModelPath + 'MOD_GPM_SB_V7.dll') # psspy.addmodellibrary(GridInfoPath+'GEWTG34.dll') # psspy.addmodellibrary(GridInfoPath+'SMAPPC_B111_34_IVF111.dll') # psspy.addmodellibrary(GridInfoPath+'SMASC_C135_34_IVF111.dll') psspy.dyre_new([1, 1, 1, 1], GridInfoPath + file_name + ".dyr", "", "", "") psspy.dynamics_solution_param_2([_i, _i, _i, _i, _i, _i, _i, _i], [1.000, _f, 0.001, 0.004, _f, _f, _f, _f]) for i in range(0, len(Disturbance_Load_Amount)): # re - initialize psspy.read(0, GridInfoPath + file_name + ".raw") psspy.dyre_new([1, 1, 1, 1], GridInfoPath + file_name + ".dyr", "", "", "") psspy.change_plmod_icon(101, r"""1""", r"""HWS2000""", 1, 2) psspy.change_plmod_icon(102, r"""1""", r"""HWS2000""", 1, 2) psspy.change_plmod_icon(103, r"""1""", r"""HWS2000""", 1, 2) psspy.change_plmod_icon(104, r"""1""", r"""HWS2000""", 1, 2) psspy.change_plmod_con(101, r"""1""", r"""GPMPPC""", 10, 0.45) 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):