主要内容

线性系统中的时滞

可通过以下模型属性表示线性系统中的时滞。

  • InputDelayOutputDelay - 系统输入或输出端的时滞

  • ioDelayInternalDelay - 系统内部的时滞

在离散时间模型中,这些属性被限制为整数值,代表以采样时间整数倍表示的延迟。如需逼近延迟为采样时间分数倍的离散时间模型,可使用 thiran

一阶加纯滞后模型

此示例说明如何使用 tfInputDelayOutputDelay 属性创建一阶加纯滞后模型。

要创建以下具有 2.1 秒时滞的一阶传递函数:

G(s)=e2.1s1s+10,

请输入:

G = tf(1,[1 10],'InputDelay',2.1)

其中 InputDelay 指定传递函数的输入端的延迟。

提示

可像使用 tf 一样,将 InputDelayzpk 结合使用:

G = zpk([],-10,1,'InputDelay',2.1)

对于 SISO 传递函数,输入端延迟与输出端延迟等效。因此,以下命令可创建相同的传递函数:

G = tf(1,[1 10],'OutputDelay',2.1)

使用圆点表示法检查或更改时滞值。例如,将时滞更改为 3.2 秒的命令如下:

 G.OutputDelay = 3.2;

要查看当前值,请输入:

G.OutputDelay

ans =

    3.2000

提示

创建具有时滞的模型的另一种方法是将延迟作为 s 中的表达式指定到传递函数中:

  1. 为变量 s 创建一个传递函数模型。

    s = tf('s');          
  2. G(s) 指定为 s 中的表达式。

    G = exp(-2.1*s)/(s+10);

状态空间模型中的输入和输出延迟

此示例说明如何使用 ssInputDelayOutputDelay 属性,创建具有输入和输出端延迟的状态空间模型。

创建描述如下单输入双输出系统的状态空间模型:

dx(t)dt=2x(t)+3u(t1.5)y(t)=[x(t0.7)x(t)].

此系统的输入延迟为 1.5。第一个输出的输出延迟为 0.7,第二个输出无延迟。

注意

与 SISO 传递函数不同,状态空间模型的输入延迟与输出延迟并不等效。要在状态空间模型中将延迟从输入端转移到输出端,需对模型状态引入时移。例如,在此示例的模型中,定义 T = t – 1.5X(T) = x(T + 1.5) 可得到如下等效系统:

dX(T)dT=2X(T)+3u(T)y(T)=[X(T2.2)X(T1.5)].

此时所有时滞均位于输出端,但新状态变量 X 相对于原状态变量 x 存在时间偏移。因此,如果状态具有物理意义,或已知状态初始条件,在输入输出端之间转移时滞需谨慎。

要创建此系统,请执行以下操作:

  1. 定义状态空间矩阵。

    A = -2;
    B = 3;
    C = [1;-1];
    D = 0;
    
  2. 创建模型。

    G = ss(A,B,C,D,'InputDelay',1.5,'OutputDelay',[0.7;0])

Gss 模型。

提示

可使用 delayss 创建含更通用输入、输出和状态延迟组合的状态空间模型,形式如下:

dxdt=Ax(t)+Bu(t)+j=1N(Ajx(ttj)+Bju(ttj))y(t)=Cx(t)+Du(t)+j=1N(Cjx(ttj)+Dju(ttj))

MIMO 传递函数中的传输延迟

此示例说明如何创建每个输入输出 (I/O) 对组具有不同传输延迟的 MIMO 传递函数。

创建 MIMO 传递函数:

H(s)=[e0.12se0.3s+1s+1010e0.2s1s+5].

如此示例所示,MIMO 系统中的延迟可针对每个 I/O 对组单独设置。无法通过 InputDelayOutputDelay 建模 I/O 对组特定的传输延迟。请改用 ioDelay 为每个 I/O 对组指定传输延迟。

要创建此 MIMO 传递函数,请执行以下操作:

  1. 为变量 s 创建一个传递函数模型。

    s = tf('s');          
  2. 使用变量 s 指定不具有时滞的 H 传递函数。

    H = [2/s (s+1)/(s+10); 10 (s-1)/(s+5)];
    
  3. HioDelay 属性指定为数组,数组值对应每个 I/O 对组的传输延迟。

    H.IODelay = [0.1 0.3; 0 0.2];

H 是双输入双输出 tf 模型。H 中的每个 I/O 对组具有由 tau 中的对应条目指定的时滞。

具有时滞的离散时间传递函数

此示例说明如何创建具有一个时滞项的离散时间传递函数。

在离散时间模型中,一个采样周期的延迟对应传递函数中的 z-1 因子。例如,以下传递函数表示具有 25 个采样周期延迟的离散时间 SISO 系统。

H(z)=z-252z-0.95.

要在 MATLAB® 中表示离散时间系统的整数延迟,需将模型对象的 'InputDelay' 属性设为整数值。例如,以下命令创建 tf 模型,用于表示 H(z),采样时间为 0.1 秒。

H = tf(2,[1 -0.95],0.1,'InputDelay',25)
H =
 
               2
  z^(-25) * --------
            z - 0.95
 
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties

如果系统时滞非采样时间的整数倍,可使用 thiran 命令,通过全通滤波器逼近时滞的小数部分。请参阅Time-Delay Approximation

另请参阅

主题