Skip to main content

Using initial values from real-world data

Background

In this fourth part of the data benchmarking series, we will export the initial values of POC V, P and Q from the Data Node and import the values into the PSS®E Static Node to improve the benchmark with the dynamic result.

tip

You can download the complete example project file used in this series from the below link. The example data file and the models required to run this example simulation are packaged with the gridmo Engine - no further configuration is required.

In the previous section, we changed the Data Node to fix the time of the reactive power step to 5 seconds in the simulation.

We're going to modify our Flow so that we can export values from the Data Node into PSS®E Static Node. This will allow us to use the initial values from the real-world data in the PSS®E Static Node.

Example

1) Modify your Flow so the PSS®E Static depends on Data

Update your gridmo Flow by dragging Nodes (left click and drag) and deleting edges (left click, then press the Delete key) so that the PSS®E Static Node depends on the Data Node like the below.

example of updated Flow chart with data first

note

In our re-arranged Flow, the Data Node is still connected to the Plot Node, this means we still do not require any changes to our Plot Node for this step.

2) Update the Data Node to export the initial values

  • Double click on the Data Node.
  • Select the Define outputs tab in the Node configuration window.
  • Add the following rows in addition to those which already exist in this field.
Data Node's Outputs field
// Export values at the start of the data - note the AT=0 arguments have been added
OUTPUT, COL=V_pu, NAME=i_ch_poc_v_initial, AT=0
OUTPUT, COL=P_MW, NAME=i_ch_poc_p_initial, AT=0
OUTPUT, COL=Q_MVAr, NAME=i_ch_poc_q_initial, AT=0
  • The above OUTPUT commands has the optional AT= argument, which means export the single value instead of the entire column of data. We have set them to output at 0 seconds (after being shifted by the manual alignment mode we turned on in the previous step). Specifically:
    • The Internode Variable i_ch_poc_v_initial stores the initial voltage from the Data Node (in per unit - the same unit as the in the .csv file)
    • The Internode Variable i_ch_poc_p_initial stores the initial active power from the Data Node (in MW - the same unit as the in the .csv file)
    • The Internode Variable i_ch_poc_q_initial stores the initial reactive power from the Data Node (in MVAr - the same unit as the in the .csv file)
  • Click Apply to save the changes
tip

If your .csv file is using a different unit than the unit you want for your simulation, you can use the optional argument VALSCALE= to apply a multiplicative scale.

You do not need to directly modify the source .csv file.

For example, if you .csv data file has voltage in kV (with a 33 kV base) you can use the following command:

Example of using VALSCALE= to convert kV to per unit
OUTPUT, COL=V_at_33kV, NAME=i_ch_poc_v_initial, AT=0, VALSCALE=1/33

3) Update the PSS®E Static Node to use the new Internode Variables

Now that the Data Node is exporting the initial values, we can update the PSS®E Static Node to use these values.

  • Double click on the PSS®E Static Node.
  • Select the Define simulation & Define outputs tab in the Node configuration window.
  • Replace the commands in the Commands field with the following (the lines which have changed from the previous steps are highlighted):
PSS®E Static Node's Commands field
// Set SCR, XR, and POC P, Q and V - then apply all CONTROL commands at the same time
SET, LINE=1000->999#1, STATUS=IN, SCR=7.5, XR=4

// Instead of fixed values, we use values imported from the Data Node
CONTROL, GEN=999#1, Q=VDIRECT, ATBUS=1000, VTARGET={{i_ch_poc_v_initial}}, QMIN=-9999, QMAX=9999
CONTROL, GEN=91003#S1, ATLINE=1001->1000#1, P={{i_ch_poc_p_initial}}
CONTROL, GEN=91003#S1, ATLINE=1001->1000#1, Q=FIXED, QTARGET={{i_ch_poc_q_initial}}
SOLVE
  • The above commands:
    • Set the SCR and X/R ratio for this example SMIB model to 7.5 and 4 respectively.
    • It then controls the example solar farm to achieve an active power and reactive power from the Internode Variables we defined in the Data node above.
    • It also uses the infinite bus generator to achieve a voltage at the connection point as per the i_ch_poc_v_initial Internode Variable.
  • Click Apply to save the changes

4) Launch the simulation

  • Launch the simulation using the green Launch bottom in the top right of the web-app and enter your Engine ID.

5) Review results

  • We can see in our outputs folder (example below) that our real-world data has been shifted:
    • ✅ The reactive power step now occurs at 5 seconds in the simulation.
    • ✅ The initial values of the POC voltage, active power and reactive power now match between the real-world data and the dynamic simulation.

example of results from step 3, showing psse dynamic and data overlayed, benchmark still poor but now happens at the same time