MVVoltageProfile#

class popo.network.MVVoltageProfile(mean_pu=1.02, swing_pu=0.02, deadband_pu=0.005, load_column='Load(MW)', timestamp_column='timestamp')#

Bases: object

MV busbar voltage, anti-correlated with regional demand.

Higher when the upstream network is lightly loaded, lower at system peak, which is the behaviour an LV substation sees under automatic voltage control. Quantised to the control deadband so the profile steps like a tap changer rather than drifting continuously.

Variables:
  • mean_pu – Nominal MV busbar set point.

  • swing_pu – Maximum excursion about the set point.

  • deadband_pu – Automatic voltage control deadband; below this no tap action occurs, which is why the profile is quantised to it rather than left continuous.

  • load_column – Column in the weather record carrying regional demand.

  • timestamp_column – Column carrying the timestamp.

build(weather_path, start, horizon, freq='30min', tz='UTC')#

MV voltage, one value per interval of the requested horizon.

Parameters:
  • weather_path (Path) – Parquet file carrying timestamp_column and load_column, at any resolution; it is reindexed onto the requested horizon with limited interpolation.

  • start (str) – First timestamp of the horizon.

  • horizon (int) – Number of intervals to generate.

  • freq (str) – Interval length, as a pandas frequency string.

  • tz (str) – Timezone of the generated index.

Return type:

ndarray

Returns:

MV busbar voltage in per unit, quantised to deadband_pu.