Over Current Relay

When the current magnitude exceeds its pick-up value, over-current relays (oc relay) start to operate.

As of now, oc protection module is included with Define Time Over Current Relay (DTOC), Inverse Definite Minimum Time Relay (IDMT) and the combination of DTOC and IDMT (IDTOC).

DTOC relay that operates after a definite time once the current exceeds the pick-up value, the relay’s operating time is independent of the current magnitude over the pick-up current.

IDMT relay’s operating time is inversely proportional to the fault current; hence higher the fault current shorter the operating time. To obtain the appropriate operating time for all relays, a time delay mechanism is included.

The oc relay parameters are created using oc_parameters function:

pandapower.protection.oc_relay_model.oc_parameters(net, relay_type, time_settings, sc_fraction=0.95, overload_factor=1.2, ct_current_factor=1.25, safety_factor=1, inverse_overload_factor=1.2, pickup_current_manual=None, **kwargs)

The main function is to create relay settings with oc parameters.

INPUT:

net (pandapowerNet) - Pandapower network and net.switch.type need to be specified as

  • ‘CB_DTOC’ (for using Definite Time Over Current Relay)

  • ‘CB_IDMT’ (Inverse Definite Minimum Time over current relay)

  • ‘CB_IDTOC’ (Inverse Definite Minimum Time over current relay

relay_type (string)- oc relay type need to be specifiied either as

  • DTOC: Definite Time Over Current Relay

  • IDMT: Inverse Definite Minimum Time over current relay

  • IDTOC: Inverse Definite Time Minimum over current relay (combination of DTOC and IDMT)

time_settings (list or DataFrame) - Relay tripping time can be given as a list or a DataFrame

If given as a list, the time grading will be calculated based on topological grid search, and manual tripping time can be provided as a dataframe by respecting the column names.

For DTOC: time_settings =[t>>, t>, t_diff] or Dataframe columns as ‘switch_id’, ‘t_gg’, ‘t_g’

  • t>> (t_gg): instantaneous tripping time in seconds

  • t> (t_g): primary backup tripping time in seconds,

  • t_diff: time grading delay difference in seconds

For IDMT: time_settings =[tms, t_delta] or Dataframe columns as ‘switch_id’, ‘tms’, ‘t_grade’

  • tms: time multiplier settings in seconds

  • t_grade: time grading delay difference in seconds

For IDTOC: time_settings =[t>>, t>, t_diff, tms,t_grade] or Dataframe columns as ‘switch_id’, ‘t_gg’, ‘t_g’,’tms’, ‘t_grade’

  • t>> (t_gg): instantaneous tripping time in seconds

  • t> (t_g): primary backup tripping time in seconds,

  • t_diff: time grading delay difference in seconds

  • tms: time multiplier settings in seconds

  • t_grade: time grading delay difference in seconds

sc_fraction (float, 0.95) - Maximum possible extent to which the short circuit can be created on the line

overload_factor - (float, 1.25)- Allowable overloading on the line used to calculate the pick-up current

ct_current_factor -(float, 1.2) - Current multiplication factor to calculate the pick-up current

safety_factor -(float, 1) - Safety limit for the instantaneous pick-up current

inverse_overload_factor -(float, 1.2)- Allowable inverse overloading to define the pick-up current in IDMT relay

OPTIONAL:

pickup_current_manual - (DataFrame, None) - User-defined relay trip currents can be given as a dataframe.

DTOC: Dataframe with columns as ‘switch_id’, ‘I_gg’, ‘I_g’

IDMT: Dataframe with columns as ‘switch_id’, ‘I_s’

IDTOC: Dataframe with columns as ‘switch_id’, ‘I_gg’, ‘I_g’, ‘I_s’

KWARGS:

curve_type- (String) - Relay trip time will vary depending on the curve slope for inverse Time Relays. The curve is used to coordinate with other protective devices for selectivity (according to IEC60255)

Curve type can be :

  • ‘standard_inverse’

  • ‘very_inverse’,

  • ‘extremely_inverse’,

  • ‘long_inverse’,

OUTPUT:

return (DataFrame, float) - Return relay setting as a dataframe with required parameters for oc relay (DTOC, IDMT, IDTOC)

Running a fault scenario with oc relay protection is carried out with run_fault_scenario_oc function:

pandapower.protection.oc_relay_model.run_fault_scenario_oc(net, sc_line_id, sc_location, relay_settings)

The main function is to create fault scenarios in the network at the defined location to get the tripping decisions.

INPUT:

net (pandapowerNet) - Pandapower network

sc_line_id (int, index)- Index of the line to create the short circuit

sc_location (float)- The short circuit location on the given line id (between 0 and 1).

relay_settings (Dataframe, float)- Relay setting given as a dataframe returned from oc parameters (manual relay settings given as dataframe by respecting the column names)

  • DTOC:

    Dataframe with columns as ‘switch_id’, ‘line_id’, ‘bus_id’, ‘relay_type’, ‘I_g[kA]’, ‘I_gg[kA]’, ‘t_g[s]’, ‘t_gg[s]’

  • IDMT:

    Dataframe with columns as ‘switch_id’, ‘line_id’, ‘bus_id’, ‘relay_type’, ‘curve_type’, I_s[kA], ‘tms[s]’, ‘t_grade[s], ‘k’, ‘alpha’

    • k and alpha are the curve constants according to IEC-60255

  • IDTOC:

    Dataframe with columns as ‘switch_id’, ‘line_id’, ‘bus_id’, ‘relay_type’, ‘I_g[kA]’, ‘I_gg[kA]’, ‘I_s[kA], ‘t_g[s]’, ‘t_gg[s]’, ‘tms[s], ‘t_grade[s], ‘k’, ‘alpha’

OUTPUT:

return (list(Dict),net_sc) - Return trip decision of each relay and short circuit net

EXAMPLE- DTOC Relay:

import pandapower.protection.oc_relay_model as oc_protection
import pandapower.protection.example_grids as nw
net = nw.dtoc_relay_net()
relay_settings=oc_protection.oc_parameters(net,time_settings= [0.07, 0.5, 0.3], relay_type='DTOC')
trip_decisions,net_sc= oc_protection.run_fault_scenario_oc(net,sc_line_id=4,sc_location =0.5,relay_settings)

EXAMPLE- IDMT Relay:

import pandapower.protection.oc_relay_model as oc_protection
import pandapower.protection.example_grids as nw
net = nw.idmt_relay_net()
relay_settings=oc_protection.oc_parameters(net,time_settings= [1,0.5], relay_type='IDMT', curve_type='standard_inverse')
trip_decisions,net_sc= oc_protection.run_fault_scenario_oc(net,sc_line_id=4,sc_location =0.5,relay_settings)

EXAMPLE- IDTOC Relay:

import pandapower.protection.oc_relay_model as oc_protection
import pandapower.protection.example_grids as nw
net = nw.idtoc_relay_net()
relay_settings=oc_protection.oc_parameters(net,time_settings= [0.07, 0.5, 0.3,1, 0.5], relay_type='IDTOC',curve_type='standard_inverse' )
trip_decisions,net_sc= oc_protection.run_fault_scenario_oc(net,sc_line_id=4,sc_location =0.5,relay_settings)

Kindly follow the tutorial of the Over Current Relay (OC relay) for details: https://github.com/e2nIEE/pandapower/blob/develop/tutorials/protection/oc_relay.ipynb

See also

  • Protective Relays: Their Theory and Practice Volume One by A. R. van. C. Warrington, 2012.