.Modelica_LinearSystems2.StateSpace.Internal.isDetectableSISO

Information

This function checks whether a SISO state space system is detectable or not.

A system is detectable for the continuous-time case if all of the unobservable eigenvalues have negative real part or for the discrete-time case if all of the unobservable eigenvalues are in the complex unit circle respectively. Hence, a oberservable system is always detectable of course.

As observability is a dual concept of controllability, the concept of detectability is dual to stabilizability, that is, a system is detectable if the pair (A', C') is stabilizable. Therefore, the same algorithm to check stabilizability are applied to the dual pair (A', C') of the system:

To check stabilizability (see Modelica_LinearSystems2.StateSpace.Analysis.isStabilizable) , the system is transformed to upper controller Hessenberg form

| * * * | | * |
| * * * | | 0 |
Q*A*Q ' = H = | 0     *     ⋯     ⋯   * |, Q*b = q = | |, c*Q = ( *, ⋯, * )
| ⋮ ⋮ | | |
| 0 0 * * | | 0 |

The system can be partitioned to

H=[H11,H12; H21, H22], q=[q1;0],

where the pair (H11, q1) contains the controllable part of the system, that is, rank(H) = rank(H11). For stabilizability the H22 has to be stable.

Interface

encapsulated function isDetectableSISO
  import Modelica;
  import Complex;
  import Modelica_LinearSystems2;
  import Modelica_LinearSystems2.StateSpace;
  input StateSpace ss "State space system";
  output Boolean detectable;
end isDetectableSISO;

Generated at 2024-11-26T19:26:15Z by OpenModelicaOpenModelica 1.24.2 using GenerateDoc.mos