DistributionController#

class relsad.network.components.DistributionController(name: str, power_network, fail_rate: float = 0, state: relsad.network.components.Controller.ControllerState = ControllerState.OK)[source]#

Common base class for distribution controllers

name#

Name of the controller

Type

string

ict_node#

The ICT node connected to the controller

Type

ICTNode

fail_rate#

The failure rate of the distribution system controller

Type

float

state#

The state of the distribution system controller

Type

ControllerState

sectioning_time#

The sectioning time of the system

Type

Time

check_components#

Flag used to communicate whether the fail status of the system components should be checked during a control loop

Type

bool

manual_sectioning_time#

Sectioning time when performed manually

Type

Time

parent_controller#

The parent controller of the distribution system controller

Type

Controller

power_network#

The power network the controller is connected to

Type

PowerNetwork

ict_network#

The ICT network the controller belongs to

Type

ICTNetwork

sensors#

List of sensors included in the distribution system

Type

list

failed_sections#

List of failed sections in the distribution system

Type

list

history#

Dictonary attribute that stores the historic variables

Type

dict

monte_carlo_history#

Dictonary containing the history variables from the Monte Carlo simulation

Type

dict

check_circuitbreaker(curr_time, dt)[source]#

Checks if the circuitbreaker in the distribution system is open. If sectioning time is finished, disconnect failed sections and close the circuitbreaker.

check_circuitbreaker_manually(curr_time, dt)[source]#

Checks if the circuitbreaker in the distribution system is open manually. If sectioning time is finished, disconnect failed sections and close the circuitbreaker.

disconnect_failed_sections()[source]#

Disconnects the failed sections in the distribution system

check_sensors(curr_time, dt)[source]#

Loops through the sections connected to the controller determining which sensors have failed. Performs actions according to the sensor status in the respective section. If a section was disconnected and no longer includes any failed sensor, it is connected. If a section was connected and now includes a failed sensor, it is disconnected. The total sectioning time is summed from each section.

run_control_loop(curr_time, dt)[source]#

System control check, determines if components have failed and performes the required action

check_lines_manually(curr_time)[source]#

Loops through the sections connected to the controller determining which lines have failed manually. Performs actions according to the line status in the respective section. If a section was disconnected and no longer includes any failed lines, it is connected. If a section was connected and now includes a failed line, it is disconnected. The total sectioning time is summed from each section.

run_manual_control_loop(curr_time, dt)[source]#

Manual system control check, determines if components have failed and performes the required action.

set_sectioning_time(sectioning_time)[source]#

Sets the sectiom time of the distribuiton system based on the max value of the distribution sectioning time and the sectioning time set by the controller

spread_sectioning_time_to_children()[source]#

Gives the children power networks of the distribution system the same sectioning time

update_fail_status(dt)[source]#

Updated the fail status of the controller

update_history(prev_time, curr_time, save_flag)[source]#

Updates the history variables

get_history(attribute)[source]#

Returns the history variables of an attribute

add_random_instance(random_gen)[source]#

Adds global random seed

print_status()[source]#

Prints the status

reset_status(save_flag)[source]#

Resets and sets the status of the class parameters

initialize_history()[source]#

Initializes the history variables

DistributionController.add_random_instance(...)

Adds global random seed

DistributionController.check_circuitbreaker(...)

Checks if the circuitbreaker in the distribution system is open.

DistributionController.check_circuitbreaker_manually(...)

Checks if the circuitbreaker in the distribution system is open manually.

DistributionController.check_lines_manually(...)

Loops manually through the sections connected to the controller determining which lines have failed.

DistributionController.check_sensors(...)

Loops through the sections connected to the controller determining which sensors have failed.

DistributionController.disconnect_failed_sections()

Disconnects the failed sections in the distribution system

DistributionController.get_history(attribute)

Returns the history variables of an attribute

DistributionController.initialize_history()

Initializes the history variables

DistributionController.print_status()

Prints the status

DistributionController.reset_status(save_flag)

Resets and sets the status of the class parameters

DistributionController.run_control_loop(...)

System control check, determines if components have failed and performes the required action.

DistributionController.run_manual_control_loop(...)

Manual system control check, determines if components have failed and performes the required action.

DistributionController.set_sectioning_time(...)

Sets the sectioning time of the distribuiton system based on the max value of the distribution sectioning time and the sectioning time set by the controller

DistributionController.spread_sectioning_time_to_children()

Returns the children power network of the distribution system the same sectioning time

DistributionController.update_fail_status(dt)

Updates the fail status of the controller

DistributionController.update_history(...)

Updates the history variables