Transient data simulated in ATP-EMTP
The data is simulated through IEEE 123 bus system with 14 PVs in ATP-EMTP software. The ATP model is converted from an open-source model IEEE123_PV.xml via CIMHub. The data format is in CSV or COMTRADE(.cfg and .dat) file.
The data file label is named after the following rules:
- Loading Condition: 0.4/1.0 ➡️ l1/l2
- PV Capacity: 0.4/0.6/0.8/1.0 ➡️ c1/c2/c3/c4
- Fault Location: ADJ1/197/450/82 ➡️ b1/b2/b3/b4
- Fault Type: Three-phase/Single-phase/Line-to-line phase fault ➡️ f1/f2/f3
*The fault location defined in ATP model corresponds to the bus No. in XML file, which can be found in IEEE123_PV.atpmap. In addition, ADJ1 is a fault location outside the feeder, approximately 250 feet away.
Python Comtrade is a module for Python 3 designed to read Common Format for Transient Data Exchange (COMTRADE) files. Detailed information can be found here. These consists of oscillography data recorded during power system outages, control systems tests, validation and tests of field equipment, protective relaying logs, etc. The COMTRADE format is defined by IEEE Standards.
pip install comtradeThe example below shows how to open CFG and DAT files to plot (using pyplot) analog channel oscillography. The file_name can be modified according to the file desired.
import matplotlib.pyplot as plt
from comtrade import Comtrade
file_name = "ieee123_pv_l1c1b1f1"
rec = Comtrade()
rec.load(f"{file_name}.cfg", f"{file_name}.dat")
print("Trigger time = {}s".format(rec.trigger_time))
for i in range(rec.channels_count):
plt.plot(rec.time, rec.analog[i])
plt.legend([rec.analog_channel_ids[i]])
plt.show()There are 58 measured variables under each corresponding scenario in one data file.
- The variables which begin with SBUS or FAULT are system branch currents or node voltages, shown as below:
| Variable Name | Description | Variable Name | Description |
|---|---|---|---|
| SBUS A V-node | Feederhead bus voltage in phase A | SBUS C 25 C I-branch | Feederhead current in phase C |
| SBUS B V-node | Feederhead bus voltage in phase B | FAULTA I-branch | Fault current in phase A |
| SBUS C V-node | Feederhead bus voltage in phase C | FAULTB I-branch | Fault current in phase B |
| SBUS A 25 A I-branch | Feederhead current in phase A | FAULTC I-branch | Fault current in phase C |
| SBUS B 25 B I-branch | Feederhead current in phase B | FALTBC 112 C I-branch | Fault current in phase C of line to line fault |
- The variables which begin with TACS section delimiter are inverter outputs, following the rules:
- PV### specifies the inverter number, from 1..999
- suffix V specifies the inverter's calculated RMS voltage (positive sequence in the case of three-phase); helpful to visualize the operation of undervoltage trip or ridethrough.
- suffix I specifies the inverter's RMS current injection (positive sequence in the case of three-phase); sufficient to visualize the status of this inverter. If the RMS current drops to zero, it means either a voltage or frequency trip function activated.
- suffix W specifies the inverter's estimated frequency (rad/s); helpful to diagnose grid synchronization issues.
- suffixes A, B, C specify the inverter's instantaneous phase voltages; needed to impute PMU data for this inverter.
- suffixes X, Y, Z specify the inverter's instantaneous injected currents; needed to impute PMU data for this inverter.
The fault is applied at 0.3s and never cleared. The time window is from 0.0s to 0.6s. Results of SBUS A/B/C 25 A/B/C I-branch in "ieee123_pv_l1c1b1f1" are shown below as examples. The units in Y-axis are Ampere (A).


