# Open-source PRC-029 checker

**URL:** <https://powerforums.org/t/open-source-prc-029-checker/73>\
**Category:** PSS/E\
**Created:** [June 4, 2026, 8:58pm UTC](https://powerforums.org/t/open-source-prc-029-checker/73 "2026-06-04T20:58:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![satyakibanik](https://powerforums.org/letter_avatar_proxy/v4/letter/s/5f8ce5/32.png) [@satyakibanik](https://powerforums.org/u/satyakibanik)\
**Post date:** [June 4, 2026, 8:58pm UTC](https://powerforums.org/t/open-source-prc-029-checker/73/1 "2026-06-04T20:58:22Z")

</div>

Hello all, I was wondering if there is any open-source checker tool (i.e. python script) for PRC-029 NERC standard using PSSE?

---

<div class="post-metadata">

**Author:** ![sjenkinsnm](https://powerforums.org/user_avatar/powerforums.org/sjenkinsnm/32/38_2.png) [@sjenkinsnm](https://powerforums.org/u/sjenkinsnm)\
**Post date:** [June 5, 2026, 7:05pm UTC](https://powerforums.org/t/open-source-prc-029-checker/73/2 "2026-06-05T19:05:44Z")

</div>

I need to make one for PSS/E - I’ll give that a go tonight if I have some insomnia. What I do in PSLF is playback this .csv file to the POI. To playback waveforms, just supply a file to the gencls model at the POI.

```auto
models
gencls 1 "POI" 115.00 "1" : #9 mva=9999 "h" 999.0000 "d" 0.0000 "ra" 0.0000 "lppd" 0.1000 "rcomp" 0.0000 "xcomp" 0.0000 "accel" 0.0000 "file" ridethrough.csv

```

It synthesizes the voltages and frequencies that the generator must ridethrough. If the generator can stay connected through this waveform to at least 30 seconds as a wind unit, it meets the PRC-029 standard. And if it makes it all the way to the end as any other kind of IBR, you can be pretty confident it passes PRC-029. I say “pretty confident” because the waveform doesn’t catch the steady-state behavior where voltage can be 1.099 p.u. for 1800 seconds or frequency can be 61.199 or 58.801 for 299 seconds. But running dynamics that long is a tough ask, you’ll have to check those manually or make a really long waveform.

 ![image](https://powerforums.org/uploads/default/original/1X/b67692834ac2fcedfa56c9754224650f2fde79f0.png)

[ridethrough.csv](https://powerforums.org/uploads/short-url/zjdHG1BtagGwy6UO4FnadN7Uqjh.csv) (843 Bytes)

---

<div class="post-metadata">

**Author:** ![sjenkinsnm](https://powerforums.org/user_avatar/powerforums.org/sjenkinsnm/32/38_2.png) [@sjenkinsnm](https://powerforums.org/u/sjenkinsnm)\
**Post date:** [June 10, 2026, 8:04pm UTC](https://powerforums.org/t/open-source-prc-029-checker/73/3 "2026-06-10T20:04:29Z")

</div>

Sorry to reply twice. It took a while to get the PSSE version working because it's my second language, it's very poorly documented, and the mechanism isn't as elegant as PSLF.

First you have to add a machine for the playback. It cannot be the infinite bus with the gencls model on it. The machine must be connected to a generator bus (type 2) and have Pgen=Qgen=Qmax=Qmin=0 and Vsched=Vinitial.

Then add a playback model like this one to the .dyr file.

```auto
# Bus ModelName UnitID UserModelName Undocumented flags(1 1 3 4 3 6) VplaybackFlag FplaybackFlag PlbFileNoExtension12CharMax Vscale Fscale VtimeConst FtimeConst /
1 'USRMDL' 1 'PLBVFU1' 1 1 3 4 3 6 1 1 'ridethrough' 1.0 1.0 0.0 0.0 /

```

Attached is the playback data. The extension must be .plb which can't be uploaded here right now thus the zip.

[ridethrough.zip](https://powerforums.org/uploads/short-url/9LDfiCm2JzahcPMoLEFkNR5aK7w.zip) (367 Bytes)

---

<div class="post-metadata">

**Author:** ![system](https://powerforums.org/user_avatar/powerforums.org/system/32/5_2.png) [@system](https://powerforums.org/u/system)\
**Post date:** [June 12, 2026, 5:22am UTC](https://powerforums.org/t/open-source-prc-029-checker/73/4 "2026-06-12T05:22:21Z")

</div>

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.
