psspy.dyre_new([1, 1, 1, 1], GridInfoPath + "/" + file_name + ".dyr", "", "", "") 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, [])
# 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') psspy.change_plmod_con(100, r"""1""", r"""SMASC161""", 38, 0.0) # FRT_VOLFILMOD psspy.change_plmod_con(100, r"""1""", r"""SMASC161""", 31,
psspy.addmodellibrary(HuaweiModelPath+'MOD_GPM_SB_V7.dll') psspy.dynamics_solution_param_2([_i,_i,_i,_i,_i,_i,_i,_i],[1.0,_f, 0.001,0.004,_f,_f,_f,_f]) psspy.plant_chng_3(500,0,_i,[ 1.05,_f]) psspy.plant_chng_3(1000,0,_i,[ 1.045,_f]) psspy.machine_data_2(500, r"""1""", [_i, _i, _i, _i, _i, _i],[85, _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.load_data_3(1000,r"""1""",[_i,_i,_i,_i,_i],[1000,20,_f,_f,_f,_f]) # apply assumption load psspy.fnsl([0,0,0,1,0,0,99,0]) 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"""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(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.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) #psspy.change_plmod_icon(101,r"""1""",r"""GPMPPC""",4,0) # start simulation psspy.strt_2([0, 0], OutputFilePath)
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.plmod_status(30531, r"""1""", 6, 0) psspy.plmod_status(30531, r"""1""", 7, 0) psspy.plmod_status(37530, r"""1""", 1, 0) psspy.plmod_status(37530, r"""1""", 6, 0) psspy.plmod_status(37530, r"""1""", 7, 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"""WDs 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"""Pelec 101""", r"""Qelec 101"""]) psspy.branch_p_and_q_channel([9, -1, -1, 102, 112], r"""1""", [r"""Pelec 102""", r"""Qelec 102"""]) psspy.branch_p_and_q_channel([11, -1, -1, 103, 113], r"""1""", [r"""Pelec 103""", r"""Qelec 103"""]) psspy.branch_p_and_q_channel([13, -1, -1, 104, 114], r"""1""", [r"""Pelec 104""", r"""Qelec 104"""]) # 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, 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')
## calculate impedance for POC and fault z_g[test_no] = 1 / SCR_31_60[test_no] # grid impedance r_g[test_no] = sqrt(z_g[test_no]**2 / (GXR_31_60[test_no]**2 + 1)) #grid r x_g[test_no] = GXR_31_60[test_no] * r_g[test_no] #grid_x z_f[test_no] = d * z_g[test_no] * u_dip / (1 - u_dip) r_f[test_no] = sqrt(z_f[test_no]**2 / 10) x_f[test_no] = 3 * r_f[test_no] psspy.branch_chng_3( 400, 46660, r"""1""", [_i, _i, _i, _i, _i, _i], [r_g[test_no], x_g[test_no], _f, _f, _f, _f, _f, _f, _f, _f, _f, _f], [_f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f], "") psspy.fdns([1, 0, 0, 1, 1, 1, 0, 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([2, -1, -1, 400, 46660], r"""1""", [r"""P Injection""", r"""Q Injection"""]) # ierr = psspy.machine_array_channel([4, 2, 101], r"""1""", r"""Pelec 101""") # ierr = psspy.machine_array_channel([5, 3, 101], r"""1""", r"""Qelec 101""") psspy.branch_p_and_q_channel([4, -1, -1, 101, 201], r"""1""", [r"""101_P""", r"""101_Q"""]) psspy.voltage_and_angle_channel( [6, -1, -1, 101], [r"""Inverter Voltage Mag""", r"""Inverter Voltage Ang"""]) psspy.voltage_and_angle_channel( [8, -1, -1, 400], [r"""POC_Voltage Mag""", r"""POC Voltage Ang"""]) 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)