Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Saving .out file in Excel format

Hello,

I am running a dynamic simulation in python script, I want to save output channel in excel file,I used dyntools module for this application but the "outfile.csv" didn't created, actually " ch_data" doesn't have any data.I need complete answer. please help me. My code is as follow:

import os,sys
PYTHONPATH = r'C:\Program Files (x86)\PTI\PSSE32\PSSBIN'

sys.path.append(PYTHONPATH)
os.environ['PATH'] += ';' + PYTHONPATH

import psspy
from psspy import _i
from psspy import _f
import redirect

# Redirect output from PSSE to Python:
redirect.psse2py()

# Last case:
CASE = r"C:\Users\N.JAHAN\Desktop\2015_RVS_Test_System.sav"
psspy.psseinit(12000)
psspy.case(CASE)

# Convert loads (3 step process):
psspy.conl(-1,1,1)
psspy.conl(-1,1,2,[0,0],[100,0,0,100])
psspy.conl(-1,1,3)

# Convert generators:
psspy.cong()

# Solve for dynamics
psspy.ordr()
psspy.fact()
psspy.tysl()

# Save converted case
case_root = os.path.splitext(CASE)[0]
psspy.save(case_root + "_C.sav")

# Add dynamics data
psspy.dyre_new(dyrefile=r"C:\Users\N.JAHAN\Desktop\2015_RVS_Test_System - Copy.dyr")

# Add channels by subsystem
#   BUS VOLTAGE

psspy.chsb(sid=0,all=1, status=[-1,-1,-1,1,13,0])

# Add channels individually
#   load active and reactive power
psspy.load_array_channel([-1,1,1101],'1')
psspy.load_array_channel([-1,2,1101],'1')

# Save snapshot
psspy.snap(sfile="C:\Program Files (x86)\PTI\PSSE32\EXAMPLE\python_test.snp")
#psspy.dynamics_solution_param_2([_i,_i,_i,_i,_i,_i,_i,_i],[_f,_f, 0.002,_f,_f,_f,_f,_f])
# Initialize
psspy.strt(outfile="C:\Program Files (x86)\PTI\PSSE32\EXAMPLE\python_test.out")
psspy.run(tpause=1)

# 3-phase fault on bus 201 (default bus fault is a 3phase and there is no bus 200)
psspy.dist_bus_fault(ibus=103)

# Run to 5 cycles
time = 1+(5.0/60.0)
psspy.run(tpause=time)

# Clear fault (assuming only part of bus faults)
psspy.dist_clear_fault()
psspy.dist_branch_trip(ibus=103, jbus=109, id='1')
#psspy.dist_machine_trip(3011,'1')

# Run to 10 seconds
time = 5
psspy.run(tpause=time)

import dyntools

# Run dyntools to extract the data
chnfobj = dyntools.CHNF(os.path.join('C:\Program Files (x86)\PTI\PSSE32\EXAMPLE\python_test.out', 
'C:\Users\N.JAHAN\Desktop\outfile.csv'))
sh_ttl, ch_id, ch_data = chnfobj.get_data()

# Extract time as a variable
time = ch_data['time']

# Number of channels, (-1 as 'time' is represented in channel data)
count = len(ch_id) - 1

# Extract channel data
data = [ch_data[x + 1] for x in xrange(count)]