Control Systems

using Collimator for control systems

Linearizing Submodels

Using the python notebook API, it is possible to compute the linearized version of a submodel as a set of A, B, C, D matrices in the state space representation.
import collimator
import control
# Load model and find target submodel
model = collimator.load_model('my model')
submodel = model.find_block('submodel')
# Run the simulation & linearization
result = collimator.linearize(model, submodel)
# Convert results to a python control StateSpace object
To run linearization, you must first create a submodel with the blocks that need to be grouped together.

Known limitations

  1. 1.
    We can’t currently linearize submodels that contain (nested) submodels
  2. 2.
    Linearization of submodel containing any of the following blocks is not presently supported:
    • Integrator Discrete
    • Unit Delay
    • Transfer Function Discrete
    • Zero Order Hold
    • Derivative Discrete
    • Pulse
  3. 3.
    Linearization of submodel containing any of the following blocks will treat the block as a unity operation in state space. This is because discontinuities cannot be represented in state space form:
    • Dead Zone
    • Saturate
    • Rate Limiter
    • Quantizer