Ask Your Question

Creating a CON file from ACC results?

asked 2018-02-27 15:50:23 -0500 gravatar image

I have a script that runs ACC on my .sav files, then with the use of pssarrays.accc_summary() is able to loop through the contingencies, bus and branch information, etc, to check for thermal loading and voltage issues. It then spits all the results nicely into Excel.

I'm wanting to take this a step further and do some cascading checks. Assuming a branch (line or transformer) with loading above 120% may trip on instantaneous overcurrent, and/or load on a bus with less than 85% voltage would trip, I want to identify any branches or buses that meet this criteria, then have my script develop a new CON file from the original contingency event and add steps for tripping the branches and/or load on the buses. It actually works quite nicely to pull the overloaded line or two-winding transformer data, and write a new step to trip the element. Also, works nicely to pull the bus data and write a new step to set the load at the bus to 0%.

However, my issue is when I have a three-winding transformer that overloads above the threshold. The branch label data is in the form "AAAAAA BBBBBBBBBBBBCCCCCC XXXXXX YYYYYYYYYYYYZZZZZZ DD", where: AAAAAA = frombusnumber, BBBBBBBBBBBB = frombusname, CCCCCC = frombusvoltage, XXXXXX = tobusnumber, YYYYYYYYYYYY = tobusname, ZZZZZZ = tobusvoltage, DD = circuitid. The tobusnumber is set as "3WNDTR", the tobusname is set as the transformer name, and the tobusvoltage is set as "WND 1" or "WND 2" depending on the winding. So I am unable to get the other two winding bus numbers from using pssarrays.acccsummary().

My questions/thoughts are: Does anyone have any experience with getting three-winding transformer bus data from ACC results? Does anyone know how to get three-winding transformer bus data when only given the transformer name? Is anyone aware of another option in setting up the CON file to specify a three-winding transformer without having all three bus numbers?

I'm thinking that my best option might be to setup a table of all of my three-winding transformers by name to refer to in order to grab the bus numbers for each winding.

Thanks in advance.

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2020-11-24 13:34:11 -0500

japan gravatar image

Late to the show, sorry. Can't offer much on your other questions, but the way we get three-winding transformer data from accc reports (txt files--definitely not the best or easiest way but you will get the idea):

Bunch of parsing...first to get the report into chunks.. mon = line[:63].strip() con = line[63:96].strip() rating = line[96:105].lstrip().strip() mw = line[105:114] flow = line[122:132].lstrip().strip() loading = line[131:].lstrip().strip()

Then smaller chunks (monitored portion broken down below)... frombusnum = v['Mon'][:6].strip() frombusname = v['Mon'][6:23].strip().replace('*', '') frombuskv = v['Mon'][23:29] tobusnum = v['Mon'][29:36].strip() tobusname = v['Mon'][36:53].strip() tobuskv = v['Mon'][53:59] mon_ckt = v['Mon'][-2:]

From here, create a lookup key to match actual model data... tobuskv = winding number k=frombusname, monckt, tobus_name

Model data dict with example of winding 1 data..... ierr, iarray = psspy.awndint(sid=0, flag=1, string=['WIND1NUMBER', 'WIND2NUMBER', 'WIND3NUMBER', 'OWN1']) ierr, carray = psspy.awndchar(sid=0, flag=1, string=['ID', 'XFRNAME']) xfmrwnd1key = zip(iarray[0], carray[0], map(str.strip, carray[1])) xfmrwnd1val = zip(iarray[1], iarray[2], iarray[3]) modelxfmrwinding1info = dict(zip(xfmrwnd1key, xfmrwnd1_val))

Then... if monwindnum == 1: wnd1num = int(frombusnum) wnd2num = int(modelxfmrwinding1info[key][0]) wnd3num = int(modelxfmrwinding1info[key][1]) owner = modelxfmrwinding1_info[key][2]

Issue with the above: PSSE 34 increased the max allowable characters for transformer/line names to 40 chars but only allow 16 in the ACCC reports (well, 14 actual characters and 2 periods). Essentially the scraped key can't match the model's key... '12345678901234..' != '1234567890123456789_1'

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

[hide preview]

Question Tools

1 follower


Asked: 2018-02-27 15:50:23 -0500

Seen: 826 times

Last updated: Nov 24 '20