Main Content

delay

Return past value of operand

Parent Section: equations

Syntax

delay(u,tau,History=u0,MaximumDelay=taumax)

Description

Use the delay operator in the equations section to refer to past values of expressions:

delay(u,tau) = u(t-tau)

The full syntax is:

delay(u,tau,History=u0,MaximumDelay=taumax)

The required operands are:

  • u — The first operand is the Simscape™ expression being delayed. It can be any numerical expression that does not itself include delay or der operators.

  • tau — The second operand is the delay time. It must be a numerical expression with the unit of time. The value of tau can change, but it must remain strictly positive throughout the simulation.

The optional operands may appear in any order. They are:

  • History — The return value for the initial time interval (t <= StartTime + tau). The units of u and u0 must be commensurate. The default u0 is 0.

  • MaximumDelay — The maximum delay time. taumax must be a constant or parametric expression with the unit of time. If you specify MaximumDelay = taumax, a runtime error will be issued whenever tau becomes greater than taumax.

    Note

    You have to specify MaximumDelay if the delay time, tau, is not a constant or parametric expression. If tau is a constant or parametric expression, its value is used as the default for MaximumDelay, that is, taumax = tau.

At any time t, delay(u,tau) returns a value approximating u( t - tau) for the current value of tau. More specifically, the expression delay(u,tau, History = u0) is equivalent to

if t <= (StartTime + tau)
   return u0(t)
else
   return u(t-tau)
end 

In other words, during the initial time interval, from the start of simulation and until the specified delay time, tau, has elapsed, the delay operator returns u0 (or 0, if History is not specified). For simulation times greater than tau, the delay operator returns the past value of expression, u( t - tau).

Note

  • When simulating a model that contains blocks with delays, memory allocation for storing the data history is controlled by the Delay memory budget [kB] parameter in the Solver Configuration block. If this budget is exceeded, simulation errors out. You can adjust this parameter value based on your available memory resources.

  • For recommendations on how to linearize a model that contains blocks with delays, see Linearizing with Simulink Linearization Blocks.

Examples

expand all

This example shows the implementation of a simple dynamic system:

x˙=x(t1)x(t<0)=1

The complete Simscape file is:

component MyDelaySystem
  parameters
    tau = {1.0,'s'};
  end
  variables
    x = 1.0;
  end
  equations
    der(x) == -delay( x,tau,History = 1.0 )*{ 1, '1/s' }; % x' = - x(t - 1)
  end
end

MaximumDelay is not required because tau is constant.

The { 1, '1/s' } multiplication factor is used to reconcile the units of expression and its time derivative. See der for more information.

For other examples of using the delay operator, see the source code for the PS Constant Delay and PS Variable Delay blocks in the Simscape Foundation library.

Model Examples

Version History

Introduced in R2012a

See Also

|