.Modelica_LinearSystems2.StateSpace.Analysis.timeResponse

Information

Syntax

(y, t, x) = StateSpace.Analysis.timeResponse(ss, dt, tSpan, responseType, x0)

Description

This function calculates the time responses of a state space system. The type of the time response is defined by the input responseType, i.e.

Impulse "Impulse response",
Step "Step response",
Ramp "Ramp response",
Initial "Initial condition response"

The state space system is transformed to a appropriate discrete state space system and, starting at x(t=0)=x0 and y(t=0)=C*x0 + D*u0, the outputs y and x are calculated for each time step t=k*dt.

Example

  Modelica_LinearSystems2.StateSpace ss=Modelica_LinearSystems2.StateSpace(
    A=[-1],
    B=[1],
    C=[2],
    D=[0]);
  Real Ts = 0.1;
  Real tSpan = 0.4;
  Modelica_LinearSystems2.Types.TimeResponse response = Modelica_LinearSystems2.Types.TimeResponse.Step;
  Real x0[1] = {0};

  Real y[5,1,1];
  Real t[5];
  Real x[5,1,1]

algorithm
  (y,t,x) := Modelica_LinearSystems2.StateSpace.Analysis.timeResponse(ss,Ts,tSpan,response,x0);
  // y[:,1,1] = {0, 0.19, 0.3625, 0.518, 0.659}
  //        t = {0, 0.1, 0.2, 0.3, 0.4}
  // x[:,1,1] = {0, 0.0952, 0.1813, 0.2592, 0.33}

Interface

encapsulated function timeResponse
  import Modelica;
  import Modelica_LinearSystems2;
  import Modelica_LinearSystems2.Utilities.Types.TimeResponse;
  input TimeResponse response = TimeResponse.Step "Type of time response";
  extends Modelica_LinearSystems2.Internal.timeResponseMask2(redeclare Real y[:, size(sc.C, 1), if response == TimeResponse.Initial then 1 else size(sc.B, 2)], redeclare Real x_continuous[:, size(sc.A, 1), if response == TimeResponse.Initial then 1 else size(sc.B, 2)]);
  input Real x0[size(sc.A, 1)] = zeros(size(sc.A, 1)) "Initial state vector";
end timeResponse;

Revisions

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

Generated at 2024-11-22T19:25:38Z by OpenModelicaOpenModelica 1.24.2 using GenerateDoc.mos