Skip to content

Write one field per controlled quantity from PSS/E control blocks - #64

Open
annacasavant wants to merge 1 commit into
psy6from
ac/fixed-quantity-fields
Open

annacasavant wants to merge 1 commit into
psy6from
ac/fixed-quantity-fields

Conversation

@annacasavant

Copy link
Copy Markdown

Follows the SiennaSchemas #68 and PowerSystems #1820 change of the same name. The OpenAPI writers stop reusing one field whose unit depends on a mode and write the field the mode selects, leaving the rest absent.

  • Transformers: the objective picks one actuator band (tap_ratio_limits or phase_angle_limits) and one target band (controlled_voltage_limits, controlled_reactive_power_flow_limits or controlled_active_power_flow_limits) from a pairing table; no COD means all five absent. pti.jl records whether the RMI/RMA and VMI/VMA columns were present before defaults are filled, and psse.jl carries the flags as RM_PRESENT/VM_PRESENT, so the 0.9-1.1 substitute is written only where it is a real tap or voltage default and never as an MVAr or angle band. Phase-angle bands and impedance-correction angle curves convert from degrees to radians.
  • LCC lines: MDC maps to control_mode BLOCKED/POWER/CURRENT with one of power_transfer_setpoint or current_transfer_setpoint.
  • VSC lines: dc_power_setpoint or dc_voltage_setpoint and power_factor_setpoint or ac_voltage_setpoint per terminal.
  • Switched shunts: voltage_limits for the voltage modes, reactive_power_range_limits as a fraction of the regulated device's range for the reactive modes; MODSW 6 maps to DISCRETE_REACTIVE_FACTS.
  • Impedance correction: tap_ratio_correction_curve or phase_angle_correction_curve by transformer_control_mode.

device_base.jl drops the :dynamic classification, since no field's unit depends on a mode any more. A synthetic v35 fixture covers every presence combination.

Follows the SiennaSchemas and PowerSystems change of the same name. The
OpenAPI writers stop reusing one field whose unit depends on a mode and
write the field the mode selects, leaving the rest absent.

- Transformers: the objective picks one actuator band (tap_ratio_limits or
  phase_angle_limits) and one target band (controlled_voltage_limits,
  controlled_reactive_power_flow_limits or controlled_active_power_flow_limits)
  from a pairing table; no COD means all five absent. pti.jl records whether
  the RMI/RMA and VMI/VMA columns were present before defaults are filled,
  and psse.jl carries the flags as RM_PRESENT/VM_PRESENT, so the 0.9-1.1
  substitute is written only where it is a real tap or voltage default and
  never as an MVAr or angle band. Phase-angle bands and impedance-correction
  angle curves convert from degrees to radians.
- LCC lines: MDC maps to control_mode BLOCKED/POWER/CURRENT with one of
  power_transfer_setpoint or current_transfer_setpoint.
- VSC lines: dc_power_setpoint or dc_voltage_setpoint and
  power_factor_setpoint or ac_voltage_setpoint per terminal.
- Switched shunts: voltage_limits for the voltage modes,
  reactive_power_range_limits as a fraction of the regulated device's range
  for the reactive modes; MODSW 6 maps to DISCRETE_REACTIVE_FACTS.
- Impedance correction: tap_ratio_correction_curve or
  phase_angle_correction_curve by transformer_control_mode.

device_base.jl drops the :dynamic classification, since no field's unit
depends on a mode any more. A synthetic v35 fixture covers every presence
combination.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant