.Modelica_LinearSystems2.StateSpace.Transformation.toControllabilityForm

Information

Syntax

tss = StateSpace.Transformation.toControllabilityForm(ss)

Description

This function computes the controllability form of a SISO state space system, i.e.

tss:
der(z) = T*A*inv(T)*z + T*B*u
    y  = C*T*z + D*u

with

T = [B, A*B,..., A^(n-1)*B]

is the observability matrix of the original state space system. In comparison to the corresponding transfer function

        b0 + b1*s + ... + bn*s^n
G(s) = --------------------------
        a0 + a1*s + ... + an*s^n

the canonical observability form is

    | 0   1   0   ...   0     0   |                        | 0 |
    |  0     0     0    0     0   |                        | 0 |
A = | ...   ...   ...  ...   ...  |,                   B = |...|
    |  0     0     0    0     0   |                        | 0 |
    | -a0   -a1   -a2  ...  -an-1 |                        | 1 |

C = [ b0 - bn*a0, b1 - bn*a1, ..., bn-1 - bn*an-1],    D = [bn]

Matrix T has to be invertible, i.e. the system has to be controllable. The transformed system has the same eigenvalues.

Example

  Modelica_LinearSystems2.StateSpace ss=Modelica_LinearSystems2.StateSpace(
    A=[-1, 1; 1, -2],
    B=[1; 0],
    C=[1, 1],
    D=[2]);

algorithm
  tss:=Modelica_LinearSystems2.StateSpace.Transformation.toControllabilityForm(ss);
//  tss=StateSpace(
      A=[0, 1; -1, -3],
      B=[0; 1],
      C=[3, 1],
      D=[2])

See also

toSimilarForm, toObservabilityForm

Interface

encapsulated function toControllabilityForm
  import Modelica;
  import Modelica_LinearSystems2.StateSpace;
  input StateSpace ss "State space system";
  output StateSpace tss(redeclare Real A[size(ss.A, 1), size(ss.A, 2)], redeclare Real B[size(ss.B, 1), size(ss.B, 2)], redeclare Real C[size(ss.C, 1), size(ss.C, 2)], redeclare Real D[size(ss.D, 1), size(ss.D, 2)]) "Transformed state space system";
end toControllabilityForm;

Revisions

Date Author Comment
2010-05-31 Marcus Baur, DLR-RM Realization

Generated at 2024-12-26T19:25:54Z by OpenModelicaOpenModelica 1.24.3 using GenerateDoc.mos