def add_dummy_branch(fr_bus, to_bus, br_id): psspy.branch_data(int(fr_bus), int(to_bus), str(br_id), [1, int(fr_bus), 1, 0, 0, 0], [ 0.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0 ]) return
def add_branch(fr_bus, to_bus, br_id, br_owner, R, X, B, Rate_A, Rate_B, Rate_C): psspy.branch_data(fr_bus, to_bus, str(br_id), [1, fr_bus, br_owner, 0, 0, 0], [ R, X, B, Rate_A, Rate_B, Rate_C, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0 ]) return
def dist_branch_trip( fromBus, toBus ): #trip a line or two winding transformer KEYWORDS: trip line branch transformer tx psspy.branch_data( fromBus, toBus, r"""1""", [0, _i, _i, _i, _i, _i], [_f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f])
ierr = psspy.load_data_3(44208, realar1=105., realar2=34.5) #BURNPUR ierr = psspy.load_data_3(44209, realar1=53., realar2=17.4) #RAMGARH2 ierr = psspy.load_data_3(44217, realar1=207.4, realar2=70.4) #BORJORA ierr = psspy.load_data_3(44218, realar1=178.3, realar2=46.3) #PARULIA ierr = psspy.load_data_3(44219, realar1=0., realar2=0.) #GOLA2 ierr = psspy.load_data_3(44220, realar1=20., realar2=9.6) #GIRIDIH2 ierr = psspy.load_data_3(44223, realar1=40., realar2=9.3) #KODERMA2 ierr = psspy.load_data_3(44227, realar1=50., realar2=14.2) #RTPS2 ierr = psspy.load_data_3(44230, realar1=30., realar2=10.5) #CHAS2 ierr = psspy.load_data_3(44233, realar1=20., realar2=3.6) #PANAGARH ierr = psspy.load_data_3(44235, realar1=25., realar2=8.1) #NKPURA2 ierr = psspy.load_data_3(44236, realar1=50., realar2=8.2) #PATRATU ierr = psspy.load_data_3(44239, realar1=40., realar2=10.3) #PARULIA # Case specific branch interconnection changes to be indicated here ierr = psspy.branch_data(44220, 44223, "1", intgar1=0) #giridih - koderma line ierr = psspy.branch_data(44220, 44223, "2", intgar1=0) ierr = psspy.branch_data(44123, 44130, "1", intgar1=0) #patherdih - dhanbad line ierr = psspy.branch_data(44123, 44130, "2", intgar1=0) ierr = psspy.branch_data(44111, 44123, "1", intgar1=0) #maithon hydel - patherdih line ierr = psspy.branch_data(44111, 44123, "2", intgar1=0) ierr = psspy.branch_data(44109, 44118, "1", intgar1=1) #dtps-kalipahari line ierr = psspy.branch_data(44109, 44118, "2", intgar1=1) ierr = psspy.branch_data(44403, 45400, "1", intgar1=0) #RTPS - Ranchi line ierr = psspy.branch_data(44403, 45400, "2", intgar1=0) ierr = psspy.branch_data(44404, 45404, "1", intgar1=0) #DSTPS - paruliaPG line ierr = psspy.branch_data(44404, 45404, "2", intgar1=0) ierr = psspy.branch_data(44218, 44231, "1", intgar1=1) #DSTPS - PARU line ierr = psspy.branch_data(44218, 44231, "2", intgar1=1) # Kalipahari voltage upgrade case
def preprocesado(parametros, info_casos): # se inicia el PSS/E initpss.inicia_psse(print_alert_psse=True) for x in info_casos: try: #se encuentra caso en la carpeta y se carga path_caso_psse = os.path.join(Rutas().ruta_casos, str(x.N_Caso) + '.sav') caso_pss = redpsse.CasoPSSE(filepath=path_caso_psse) caso_pss.load(save_previous=False) #se comprueba si el caso es peninsular o insular consultando las areas areas = redpsse.get_areas() area_numbers = [] for a in areas: area_numbers.append(a.number) if 9 in area_numbers: Umin = parametros.U_min_i Umax = parametros.U_max_i else: Umin = parametros.U_min_p Umax = parametros.U_max_p except Exception as e: raise StandardError('Error al cargar el caso de referencia: {}'.format(e.message)) try: # Cambio a tipo 2 los buses tipo 1 e incluyo generador con Pgen=0.01 MW # se recupera lista con buses tipo 1 list_bus = redpsse.get_bus_number_used_by_tension_tipo(Umin=Umin, Umax=Umax, tipo=1) for bus_num in list_bus: # se modifica el tipo del bus ierr = psspy.bus_chng_3(bus_num, [2, _i, _i, _i], [_f, _f, _f, _f, _f, _f, _f], _s) # se crea una planta en el bus para poder añadir después el generador ierr = psspy.plant_data(bus_num, _i, [_f, _f]) # se crea el generador con Pgen=0.01 MW intgar = [_i, _i, _i, _i, _i] Pgen = 0.01 # MW Qmin = 0 # MVar Qmax = 0 # MVar realar = [Pgen, _f, Qmin, Qmax, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f, _f] idn = str(11) ierr = psspy.machine_data_2(bus_num, idn, intgar, realar) except Exception as e: raise StandardError('Error al modificar los nudos en el caso de referencia: {}'.format(e.message)) try: # Modificacion del rateA y rateB segun ficheros de entrada #se recupera una lista con ramas list_branches = redpsse.get_branch_list() for branch in list_branches: ibus = branch.from_bus jbus = branch.to_bus ckt= branch.idn #se calculan los nuevos rates A y B de la rama segun parametros de entrada rateA=parametros.Rate_A/100 * branch.rate_a rateB=parametros.Rate_B/100 * branch.rate_a intgar=[_i,_i,_i,_i,_i,_i] realar=[_f,_f,_f,rateA,rateB,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f] #se modifica la rama con los nuevos rates A y B ierr = psspy.branch_data(ibus, jbus, ckt, intgar, realar) except Exception as e: raise StandardError('Error al modificar los rates A y B de las ramas en el caso de referencia: {}'.format(e.message)) #se guarda temporalmente el caso procesado ierr = psspy.save(os.path.join(Rutas().ruta_casos_procesados, str(x.N_Caso) + '_procesado.sav'))
ierr = psspy.load_data_3(44208, realar1=105., realar2=34.5) #BURNPUR ierr = psspy.load_data_3(44209, realar1=53., realar2=17.4) #RAMGARH2 ierr = psspy.load_data_3(44217, realar1=207.4, realar2=70.4) #BORJORA ierr = psspy.load_data_3(44218, realar1=178.3, realar2=46.3) #PARULIA ierr = psspy.load_data_3(44219, realar1=0., realar2=0.) #GOLA2 ierr = psspy.load_data_3(44220, realar1=20., realar2=9.6) #GIRIDIH2 ierr = psspy.load_data_3(44223, realar1=40., realar2=9.3) #KODERMA2 ierr = psspy.load_data_3(44227, realar1=50., realar2=14.2) #RTPS2 ierr = psspy.load_data_3(44230, realar1=30., realar2=10.5) #CHAS2 ierr = psspy.load_data_3(44233, realar1=20., realar2=3.6) #PANAGARH ierr = psspy.load_data_3(44235, realar1=25., realar2=8.1) #NKPURA2 ierr = psspy.load_data_3(44236, realar1=50., realar2=8.2) #PATRATU ierr = psspy.load_data_3(44239, realar1=40., realar2=10.3) #PARULIA # Case specific branch interconnection changes to be indicated here ierr = psspy.branch_data(44220, 44223, "1", intgar1=0) #giridih - koderma line ierr = psspy.branch_data(44220, 44223, "2", intgar1=0) ierr = psspy.branch_data(44123, 44130, "1", intgar1=0) #patherdih - dhanbad line ierr = psspy.branch_data(44123, 44130, "2", intgar1=0) ierr = psspy.branch_data(44111, 44123, "1", intgar1=0) #maithon hydel - patherdih line ierr = psspy.branch_data(44111, 44123, "2", intgar1=0) ierr = psspy.branch_data(44109, 44118, "1", intgar1=1) #dtps-kalipahari line ierr = psspy.branch_data(44109, 44118, "2", intgar1=1) ierr = psspy.branch_data(44403, 45400, "1", intgar1=0) #RTPS - Ranchi line ierr = psspy.branch_data(44403, 45400, "2", intgar1=0) ierr = psspy.branch_data(44404, 45404, "1", intgar1=0) #DSTPS - paruliaPG line ierr = psspy.branch_data(44404, 45404, "2", intgar1=0) ierr = psspy.branch_data(44218, 44231, "1", intgar1=1) #DSTPS - PARU line ierr = psspy.branch_data(44218, 44231, "2", intgar1=1)
psspy.load_data_3(busMap['RAMGARH2'], realar1=53.) #RAMGARH2 psspy.load_data_3(busMap['BARJORA2'], realar1=203.-26.) #BORJORA psspy.load_data_3(busMap['PARULIA2'], realar1=179.1) #PARULIA psspy.load_data_3(busMap['GOLA2'], realar1=0.) #GOLA2 psspy.load_data_3(busMap['GIRIDIH2'], realar1=20.) #GIRIDIH2 psspy.load_data_3(busMap['KODERMA2'], realar1=0.) #KODERMA2 psspy.load_data_3(busMap['RTPS2'], realar1=0.) #RTPS2 psspy.load_data_3(busMap['CHAS2'], realar1=0.) #CHAS2 psspy.load_data_3(busMap['PANAGARH2'], realar1=0.) #PANAGARH psspy.load_data_3(busMap['NKPURA2'], realar1=0.) #NKPURA2 psspy.load_data_3(busMap['PATRATU2'], realar1=0.) #PATRATU psspy.load_data_3(busMap['MEJIAB2'], realar1=0.) #MEJIAB # Case specific branch interconnection changes to be indicated here psspy.branch_data(busMap['KALIPAHARI1'], busMap['KALYANESWARI1'], "1", intgar1=1) #KLYN1 - KALI1 line psspy.branch_data(busMap['KALIPAHARI1'], busMap['KALYANESWARI1'], "2", intgar1=1) psspy.branch_data(busMap['PATHERDIH1'], busMap['DHANBAD1'], "1", intgar1=0) #patherdih - dhanbad line psspy.branch_data(busMap['PATHERDIH1'], busMap['DHANBAD1'], "2", intgar1=0) psspy.branch_data(busMap['MAITHONHYDL1'], busMap['PATHERDIH1'], "1", intgar1=1) #maithon hydel - patherdih line psspy.branch_data(busMap['MAITHONHYDL1'], busMap['PATHERDIH1'], "2", intgar1=1) psspy.branch_data(busMap['DTPS1'], busMap['CTPS1'], "1", intgar1=1) #dtps-ctps line psspy.branch_data(busMap['DTPS1'], busMap['JAMURIA1'], "1", intgar1=1) #dtps-jamuria line psspy.branch_data(busMap['DTPS1'], busMap['JAMURIA1'], "2", intgar1=0) psspy.branch_data(busMap['RAMKANALI1'], busMap['JAMURIA1'], "1", intgar1=1) #jamuria-ramkanali line psspy.branch_data(busMap['GOLA1'], busMap['BIADA1'], "1", intgar1=0) #gola-biada line psspy.branch_data(busMap['GOLA1'], busMap['BIADA1'], "2", intgar1=0) psspy.branch_data(busMap['GIRIDIH2'], busMap['KODERMA2'], "1", intgar1=1) #giridih - koderma line psspy.branch_data(busMap['GIRIDIH2'], busMap['KODERMA2'], "2", intgar1=1) #psspy.branch_data(busMap['PARULIA2'], busMap['DSTPS2'], "1", intgar1=0) #DSTPS - PARU line
def QVAnalysis(CASE,ireg,activateplot): busno = 44999 # Fictitious generator bus genid = 1 status = 1 pgen = 0.0 # Fict gen P output Qlimit = 9999.0 # Fict. gen Q limit pmax = 0.0 # Fict gen P limit #-------------------------------- def add_machine(): psspy.plant_data(busno, intgar1=ireg) psspy.machine_data_2( busno, str(genid), intgar1=int(status), realar1=pgen, realar3=Qlimit, realar4=-Qlimit, realar5=pmax) def get_mvar(i): """ Changes the voltage set point at the synchronous machine solves the case returns the the new reactive power output of the sync machine. """ psspy.plant_data(busno, realar1=i) ierr = psspy.fnsl() val = psspy.solved() if val == 0: ierr, mvar = psspy.macdat(busno, str(genid), 'Q') return mvar else: return None def get_genExhausted(pv): """ get the number of gen whose reactive power got exhausted. """ genExhausted = [] GenReactivePowerOutput = getGenReactivePowerOutput(pv) GenReactivePowerMax = getGenReactivePowerMax(pv) GenReactivePowerMin = getGenReactivePowerMin(pv) for i in range(0,len(pv)): if GenReactivePowerOutput[i] == GenReactivePowerMax[i] \ or GenReactivePowerOutput[i] == GenReactivePowerMin[i]: genExhausted.append(pv[i]) return genExhausted psspy.psseinit(12000) psspy.case(CASE) psspy.solution_parameters_3(intgar2=60) # set number of solution iterations. psspy.bus_data_2(busno, intgar1=2, name='TEST') psspy.branch_data(i=busno, j=ireg) all_bus = findAllBuses() pq,pv,slackBus = findAllBusType(all_bus) add_machine() # get gen that exhausted its reactive power genExhausted_old = get_genExhausted(pv) pu = [x for x in np.arange(1.0, 0.2, -0.005)] varlist = [] voltagelist = [] for v in pu: res = get_mvar(v) if res: psspy.save("temp") varlist.append(res) voltagelist.append(v) else: break # get new gen that exhausted its reactive power psspy.case("temp") busGenExhausted = [] genExhausted_new = get_genExhausted(pv) for bus in genExhausted_new: if bus not in genExhausted_old: busGenExhausted.append(bus) QminIndex = np.argmin(varlist) Qmin = varlist[QminIndex] Vmin = voltagelist[QminIndex] if activateplot == 1: plt.plot(voltagelist, varlist, '-o') plt.plot(Vmin,Qmin,'ro') plt.xlabel('PU') plt.ylabel('MVar') plt.grid() return Qmin,Vmin,busGenExhausted
# PSS/E Saved case #CASE = r"C:\Program Files\PTI\PSSE32\EXAMPLE\11TH_PLAN_REV_MAR_2012.sav" #CASE = r"C:\Program Files\PTI\PSSE32\EXAMPLE\12TH_PLAN_MAR_2017R1.sav" CASE = r"C:\Program Files (x86)\PTI\PSSE33\EXAMPLE\11TH_PLAN_REV_MAR_2012.sav" psspy.psseinit(9000) psspy.case(CASE) #------------------------ ierr = psspy.bus_data_2(44405, intgar1=4) #BkroA ierr = psspy.bus_data_2(44010, intgar1=4) #BkroA ierr, realaro = psspy.two_winding_data(44010, 44405, "1", intgar1=0) #BTPSAG to BkroA ierr, realaro = psspy.two_winding_data( 44200, 44405, "1", intgar1=0) #btps-b to bokaro-a interconnection ierr = psspy.branch_data(44402, 44405, "1", intgar1=0) #Koderma - BkroA line ierr = psspy.branch_data(44402, 44405, "2", intgar1=0) #Koderma - BkroA line # Case specific load changes to be indicated here # CD as on 28.2.2014 ierr = psspy.load_data_3(44100, realar1=44.6) #BOKARO ierr = psspy.load_data_3(44101, realar1=24.4) #MOSABANI ierr = psspy.load_data_3(44102, realar1=123.7) #BURDWAN ierr = psspy.load_data_3(44103, realar1=43.0) #BELMURI ierr = psspy.load_data_3(44104, realar1=15.0) #HOWRAH ierr = psspy.load_data_3(44105, realar1=17.0) #KHARAGPUR ierr = psspy.load_data_3(44106, realar1=359.5) #CHANDRAPURA ierr = psspy.load_data_3(44107, realar1=10.0) #KOLAGHAT ierr = psspy.load_data_3(44108, realar1=140.0) #JAMSHEDPUR ierr = psspy.load_data_3(44101, realar1=42.2) #DTPS ierr = psspy.load_data_3(44110, realar1=20.0) #BARHI
psspy.load_data_3(busMap['RAMGARH2'], realar1=53.) #RAMGARH2 psspy.load_data_3(busMap['BARJORA2'], realar1=203. - 26.) #BORJORA psspy.load_data_3(busMap['PARULIA2'], realar1=179.1) #PARULIA psspy.load_data_3(busMap['GOLA2'], realar1=0.) #GOLA2 psspy.load_data_3(busMap['GIRIDIH2'], realar1=20.) #GIRIDIH2 psspy.load_data_3(busMap['KODERMA2'], realar1=0.) #KODERMA2 #psspy.load_data_3(busMap['RTPS2'], realar1=0.) #RTPS2 #psspy.load_data_3(busMap['CHAS2'], realar1=0.) #CHAS2 #psspy.load_data_3(busMap['PANAGARH2'], realar1=0.) #PANAGARH #psspy.load_data_3(busMap['NKPURA2'], realar1=0.) #NKPURA2 #psspy.load_data_3(busMap['PATRATU2'], realar1=0.) #PATRATU #psspy.load_data_3(busMap['MEJIAB2'], realar1=0.) #MEJIAB # Case specific branch interconnection changes to be indicated here psspy.branch_data(busMap['KALIPAHARI1'], busMap['KALYANESWARI1'], "1", intgar1=1) #KLYN1 - KALI1 line psspy.branch_data(busMap['KALIPAHARI1'], busMap['KALYANESWARI1'], "2", intgar1=1) psspy.branch_data(busMap['PATHERDIH1'], busMap['DHANBAD1'], "1", intgar1=0) #patherdih - dhanbad line psspy.branch_data(busMap['PATHERDIH1'], busMap['DHANBAD1'], "2", intgar1=0) psspy.branch_data(busMap['MAITHONHYDL1'], busMap['PATHERDIH1'], "1", intgar1=1) #maithon hydel - patherdih line psspy.branch_data(busMap['MAITHONHYDL1'], busMap['PATHERDIH1'], "2", intgar1=1) psspy.branch_data(busMap['DTPS1'], busMap['CTPS1'], "1", intgar1=1) #dtps-ctps line psspy.branch_data(busMap['DTPS1'], busMap['JAMURIA1'], "1", intgar1=1) #dtps-jamuria line
case_id = "_scr" + str(round(scr, 2)) + "_xr" + str(xrratio) + "_P65.0" else: case_id = "_scr" + str(round(scr, 2)) + "_xr" + str(xrratio) + "_P3.25" # Direct conversion of SCR to impedance # The impedance is on MBASE Rsys = math.sqrt(((1.0 / scr) ** 2) / (xrratio ** 2 + 1.0)) # make sure that the division is forced to be a floating point number Xsys = Rsys * xrratio # Convert impedances from MBASE to SBASE for entry in PSS/E Rsys = Rsys * (SBASE / poc_p_max) Xsys = Xsys * (SBASE / poc_p_max) psspy.fnsl([1, 0, 0, 1, 1, 0, 0, 0]) psspy.machine_data_2(bus_gen, '1', realar1 = ppoc) # Update the UUT active power output psspy.machine_data_2(bus_inf, '1', realar8 = 0.0, realar9 = 0.0001) # Update the infinite bus equivalent impedance psspy.seq_machine_data(bus_inf, '1', [0.0, 0.0001, 0.0, 0.0001, _f, _f]) # Update the infinite bus equivalent impedance in sequence info psspy.branch_data(bus_dummy, bus_inf, '1', realar1 = Rsys, realar2 = Xsys) psspy.fdns([1, 0, 1, 1, 0, 0, 99, 0]) #if caseIndex == 0:# Qexport at POC is 0 PpocNOW = ppoc*1.01+0.1 dPpoc = PpocNOW-ppoc PgenNOW = ppoc while abs(dPpoc) > PQMisMatch_Tol: PgenNOW = PgenNOW-dPpoc/P_factor QpocNOW = qpoc * 1.01 + 0.1 dQpoc = QpocNOW - qpoc QgenNOW = QgenINImax[caseIndex] while abs(dQpoc) > PQMisMatch_Tol: QgenNOW = QgenNOW - dQpoc / Q_factor psspy.machine_data_2(bus_gen, '1', realar1=PgenNOW, realar2=QgenNOW, realar3=QgenNOW, realar4=QgenNOW) psspy.fdns([1, 0, 1, 1, 0, 0, 99, 0]) ierr, Vinf = psspy.busdat(bus_inf, 'PU')
import math from itertools import groupby # PSS/E Saved case #CASE = r"C:\Program Files\PTI\PSSE32\EXAMPLE\11TH_PLAN_REV_MAR_2012.sav" #CASE = r"C:\Program Files\PTI\PSSE32\EXAMPLE\12TH_PLAN_MAR_2017R1.sav" CASE = r"C:\Program Files (x86)\PTI\PSSE33\EXAMPLE\11TH_PLAN_REV_MAR_2012.sav" psspy.psseinit(9000) psspy.case(CASE) #------------------------ ierr = psspy.bus_data_2(44405, intgar1=4) #BkroA ierr = psspy.bus_data_2(44010, intgar1=4) #BkroA ierr, realaro = psspy.two_winding_data(44010, 44405, "1", intgar1=0) #BTPSAG to BkroA ierr, realaro = psspy.two_winding_data(44200, 44405, "1", intgar1=0) #btps-b to bokaro-a interconnection ierr = psspy.branch_data(44402, 44405, "1", intgar1=0) #Koderma - BkroA line ierr = psspy.branch_data(44402, 44405, "2", intgar1=0) #Koderma - BkroA line # Case specific load changes to be indicated here # CD as on 28.2.2014 ierr = psspy.load_data_3(44100, realar1=44.6) #BOKARO ierr = psspy.load_data_3(44101, realar1=24.4) #MOSABANI ierr = psspy.load_data_3(44102, realar1=123.7) #BURDWAN ierr = psspy.load_data_3(44103, realar1=43.0) #BELMURI ierr = psspy.load_data_3(44104, realar1=15.0) #HOWRAH ierr = psspy.load_data_3(44105, realar1=17.0) #KHARAGPUR ierr = psspy.load_data_3(44106, realar1=359.5) #CHANDRAPURA ierr = psspy.load_data_3(44107, realar1=10.0) #KOLAGHAT ierr = psspy.load_data_3(44108, realar1=140.0) #JAMSHEDPUR ierr = psspy.load_data_3(44101, realar1=42.2) #DTPS ierr = psspy.load_data_3(44110, realar1=20.0) #BARHI
bus_inf = 969 bus_IDTRF = 108 # OPEN PSSE _i = psspy.getdefaultint() _f = psspy.getdefaultreal() _s = psspy.getdefaultchar() redirect.psse2py() psspy.psseinit(50000) FileName = f_list[case[test - 1]-1] psspy.case(CasePath + FileName) psspy.resq(CasePath + "Tamworth_SMIB.seq") psspy.addmodellibrary(CasePath + 'SMASC_E161_SMAPPC_E130_342_IVF150.dll') psspy.dyre_new([1, 1, 1, 1], CasePath + "Tamworth_SMIB_E161_E130.dyr", '', '', '') psspy.branch_data(bus_flt, bus_inf, '1', realar1=0, realar2=0.0001) ierr, line_rx = psspy.brndt2(bus_flt, bus_inf, '1', 'RX') psspy.ltap(bus_flt, bus_inf, r"""1""", 0.0001, bus_IDTRF, r"""IDTRF""", _f) psspy.plant_data(bus_inf, realar1=1.0) psspy.purgbrn(bus_IDTRF, bus_flt, r"""1""") psspy.two_winding_data_3(bus_flt, bus_IDTRF, r"""1""", [1, bus_flt, 1, 0, 0, 0, 33, 0, bus_flt, 0, 1, 0, 1, 1, 1], [0.0, 0.0001, 100.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.1, 0.9, 1.1, 0.9, 0.0, 0.0, 0.0], r"""IDTRF""") OutputFilePath = FigurePath + '07. Grid Voltage Step Test' + "\\" + 'Test' + str( test+42) + '_' + FileName + '_sFac' + str(acceleration) + '_dT' + str( integration_step) + '_Grid Voltage Step Test.out' # ! Setup Dynamic Simulation parameters psspy.dynamics_solution_param_2([n_iteration, _i, _i, _i, _i, _i, _i, _i], [acceleration, tolerance, integration_step, _f, _f, _f, _f, _f])