Externally Excited DC Motor

Schematic

../../../_images/ESBdcExtEx.svg

Electrical ODE

\[\begin{split}\frac{\mathrm{d} i_\mathrm{a}}{\mathrm{d} t} &= \frac{u_\mathrm{a} - L_\mathrm{e}^\prime i_\mathrm{e} \omega_\mathrm{me} - R_\mathrm{a} i_\mathrm{a}}{L_\mathrm{a}} \\ \frac{\mathrm{d} i_\mathrm{e}}{\mathrm{d} t} &= \frac{u_\mathrm{e} - R_\mathrm{e} i_\mathrm{e}}{L_\mathrm{e}}\end{split}\]

Torque Equation

\[T = L_\mathrm{e}^\prime i_\mathrm{e} i_\mathrm{a}\]

Code Documentation

class gym_electric_motor.physical_systems.electric_motors.DcExternallyExcitedMotor(motor_parameter=None, nominal_values=None, limit_values=None, motor_initializer=None)[source]
Parameters:
  • motor_parameter – Motor parameter dictionary. Contents specified for each motor.

  • nominal_values – Nominal values for the motor quantities.

  • limit_values – Limits for the motor quantities.

  • motor_initializer

    Initial motor states (currents) (‘constant’, ‘uniform’, ‘gaussian’ sampled from

    given interval or out of nominal motor values)

  • initial_limits – limits for of the initial state-value

CURRENTS = ['i_a', 'i_e']

List of the motor currents names

Type:

CURRENTS(list(str))

CURRENTS_IDX = [0, 1]

Indices for accessing all motor currents.

Type:

CURRENTS_IDX(list(int))

HAS_JACOBIAN = True

Parameter indicating if the class is implementing the optional jacobian function

VOLTAGES = ['u_a', 'u_e']

List of the motor input voltages names

Type:

VOLTAGES(list(str))

electrical_jacobian(state, u_in, omega, *_)[source]

Calculation of the jacobian of each motor ODE for the given inputs / The motors ODE-System.

Overriding this method is optional for each subclass. If it is overridden, the parameter HAS_JACOBIAN must also be set to True. Otherwise, the jacobian will not be called.

Parameters:
  • state (ndarray(float)) – The motors state.

  • u_in (list(float)) – The motors input voltages.

  • omega (float) – Angular velocity of the motor

Returns:

[0]: Derivatives of all electrical motor states over all electrical motor states shape:(states x states) [1]: Derivatives of all electrical motor states over omega shape:(states,) [2]: Derivative of Torque over all motor states shape:(states,)

Return type:

Tuple(ndarray, ndarray, ndarray)

electrical_ode(state, u_in, omega, *_)

Calculation of the derivatives of each motor state variable for the given inputs / The motors ODE-System.

Parameters:
  • state (ndarray(float)) – The motors state.

  • u_in (list(float)) – The motors input voltages.

  • omega (float) – Angular velocity of the motor

Returns:

Derivatives of the motors ODE-system for the given inputs.

Return type:

ndarray(float)

get_state_space(input_currents, input_voltages)

Calculate the possible normalized state space for the motor as a tuple of dictionaries “low” and “high”.

Parameters:
  • input_currents – Tuple of the two converters possible output currents.

  • input_voltages – Tuple of the two converters possible output voltages.

Returns:

Dictionaries defining if positive and negative values are possible for each motors state.

Return type:

tuple(dict,dict)

i_in(currents)
Parameters:

state (ndarray(float)) – ODE state of the motor

Returns:

List of all currents flowing into the motor.

Return type:

list(float)

property initial_limits

Returns: dict: nominal motor limits for choosing initial values

initialize(state_space, state_positions, **__)

Initializes given state values. Values can be given as a constant or sampled random out of a statistical distribution. Initial value is in range of the nominal values or a given interval. Values are written in initial_states attribute

Parameters:
  • state_space (gymnasium.Box) – normalized state space boundaries (given by physical system)

  • state_positions (dict) – indices of system states (given by physical system)

property initializer

Returns: dict: Motor initial state and additional initializer parameter

property limits

Readonly motors limit state array. Entries are set to the maximum physical possible values in case of unspecified limits.

Returns:

Limits of the motor.

Return type:

dict(float)

property motor_parameter

Returns: dict(float): The motors parameter dictionary

next_generator()

Sets a new reference generator for a new episode.

property nominal_values

Readonly motors nominal values.

Returns:

Current nominal values of the motor.

Return type:

dict(float)

property random_generator

The random generator that has to be used to draw the random numbers.

reset(state_space, state_positions, **__)

Reset the motors state to a new initial state. (Default 0)

Parameters:
  • state_space (gymnasium.Box) – normalized state space boundaries

  • state_positions (dict) – indexes of system states

Returns:

The initial motor states.

Return type:

numpy.ndarray(float)

seed(seed=None)

The function to set the seed.

This function is called by within the global seed call of the environment. The environment passes the sub-seed to this component that is generated based on the source-seed of the env.

Parameters:

seed ((np.random.SeedSequence, None)) – Seed sequence to derive new seeds and reference generators at every episode start. Default: None (a new SeedSequence is generated).

Returns:

A list containing all seeds within this RandomComponent. In general, this list has length 1. If the RandomComponent holds further RandomComponent instances, the list has to contain also these entropies. The entropy of this instance has to be placed always at first place.

Return type:

List(int)

property seed_sequence

The base seed sequence that generates the sub generators and sub seeds at every environment reset.