image/svg+xml

Discretización de ecuaciones en espacio de estado

Considere el sistema en tiempo continuo,

x˙(t)=Ax(t)+Bu(t)y(t)=Cx(t)(1)\tag{1}\begin{aligned} \dot{x}(t) &= Ax(t) + Bu(t)\\ y(t) &= Cx(t) \end{aligned}

discretización

La solución del sistema (1)(1) está dada por,

x(t)=L1{(sIA)1}x(0)+L1{(sIA)1Bu(s)}(2)\tag{2} x(t) = \mathcal{L}^{-1}\left\{(sI-A)^{-1}\right\}x(0) + \mathcal{L}^{-1}\left\{(sI-A)^{-1}Bu(s)\right\} x(t)=eAtx(0)+0teA(tτ)Bu(τ)dτ(3)\tag{3} x(t) = e^{At}x(0) + \int_0^t e^{A(t-\tau)}Bu(\tau)d\tau

Se busca llevar el sistema (1)(1) a un sistema en tiempo discreto de la siguiente forma:

x˙((k+1)T)=Ax(kT)+Bu(kT)y(kT)=Cx(kT)\begin{aligned} \dot{x}((k+1)T) &= \overline{A}x(kT) + \overline{B}u(kT)\\ y(kT) &= Cx(kT) \end{aligned}

Para hacer la sustitución t=kTt = kT en la solución del sistema, se utiliza la ecuación (3)(3):

x(kT)=eAkTx(0)+eAkT0kTeAτBu(τ)dτ(4)\tag{4} x(kT) = e^{AkT}x(0) + e^{AkT}\int_0^{kT} e^{-A\tau}Bu(\tau)d\tau

Haciendo t=(k+1)Tt = (k+1)T

x((k+1)T)=eA(k+1)Tx(0)+eA(k+1)T0(k+1)TeAτBu(τ)dτ(5)\tag{5} x((k+1)T) = e^{A(k+1)T}x(0) + e^{A(k+1)T}\int_0^{(k+1)T} e^{-A\tau}Bu(\tau)d\tau

Multiplicando (4)(4) por eAt:n×ne^{At}:n\times n

eATx(kT)=eA(k+1)Tx(0)+eA(k+1)T0kTeAτBu(τ)dτ(6)\tag{6} e^{AT} x(kT) = e^{A(k+1)T}x(0) + e^{A(k+1)T}\int_0^{kT} e^{-A\tau}Bu(\tau)d\tau

Restando (5)(6)(5) - (6):

x((k+1)T)eATx(kT)=eA(k+1)TkT(k+1)TeAτBu(τ)dτx((k+1)T)=eATAx(kT)+eA(k+1)TkT(k+1)TeAτBu(τ)dτ\begin{aligned} x((k+1)T) - e^{AT}x(kT) &= e^{A(k+1)T}\int_{kT}^{(k+1)T}e^{-A\tau}Bu(\tau)d\tau\\ x((k+1)T) &= \underbrace{e^{AT}}_{\overline{A}}x(kT) + e^{A(k+1)T}\int_{kT}^{(k+1)T}e^{-A\tau}Bu(\tau)d\tau\\ \end{aligned}

Para u(kT)=cte.u(kT) = cte. para kTt(k+1)TkT \leq t \leq (k+1)T

entrada constante de kT a (k+1)T

entonces:

x((k+1)T)=eATAx(kT)+(eA(k+1)TkT(k+1)TeAτdτ)BBu(kT)(7)\tag{7} x((k+1)T) = \underbrace{e^{AT}}_{\overline{A}}x(kT) + \underbrace{\left(e^{A(k+1)T}\int_{kT}^{(k+1)T}e^{-A\tau}d\tau\right)B}_{\overline{B}}u(kT)

El sistema se aproxima escalonadamente:

aproximación discreto continuo

Como se puede observar, depende de TT el error que se tenga, a menor TT, mejor error.

Ahora bien, asumiendo que AA es invertible:

eA(k+1)TkT(k+1)TeAτdτ=eA(k+1)TkT(k+1)TeAτA1AI dτ=eA(k+1)T[eAτA1]kT(k+1)T==[I+eAT]A1(8)\tag{8} \begin{aligned} e^{A(k+1)T}\int_{kT}^{(k+1)T}e^{-A\tau}d\tau &= e^{A(k+1)T}\int_{kT}^{(k+1)T}e^{-A\tau}\underbrace{A^{-1}A}_{I}\ d\tau\\ &= e^{A(k+1)T}\left[-e^{-A\tau} A^{-1}\right]_{kT}^{(k+1)T} = \\ &= \left[-I + e^{AT}\right]A^{-1} \end{aligned}

Haciendo k=0k = 0 en (8)(8)

eAT0TeAτdτ=eAT[eAτA1]0T=eAT[eAτA1+e0A1]0T=[I+eAT]A1\begin{aligned} e^{AT}\int_0^T e^{-A\tau}d\tau &= e^{AT}\left[-e^{-A\tau}A^{-1}\right]_0^T = e^{AT}\left[-e^{-A\tau}A^{-1} + e^0A^{-1}\right]_0^T\\ &= \left[-I + e^{AT}\right]A^{-1} \end{aligned}

Se puede ver que si AA es invertible, no depende del instante de muestreo kk.

De (7)(7),

x((k+1)T)=eATAx(kT)+(eA(k+1)TkT(k+1)TeAτdτ)0TeA(Tτ)dτBu(kT)x((k+1)T) = \underbrace{e^{AT}}_{\overline{A}}x(kT) + \underbrace{\left(e^{A(k+1)T}\int_{kT}^{(k+1)T}e^{-A\tau}d\tau\right)}_{\int_0^T e^{-A(T-\tau)}d\tau}Bu(kT)

Se define

{λ=Tτdλ=dτsiτ=0λ=Tτ=Tλ=0\begin{cases} \lambda = T - \tau\\ d\lambda = -d\tau \end{cases}\quad\Rightarrow\quad\text{si}\quad\begin{array}{c} \tau = 0 \Rightarrow \lambda = T\\ \tau = T \Rightarrow \lambda = 0\\ \end{array}

Así

0TeA(Tτ)dτ=T0eAλdλ=0TeAλdλ\int_0^T e^{-A(T-\tau)}d\tau = -\int_T^0e^{-A\lambda}d\lambda = \int_0^Te^{-A\lambda}d\lambda

De forma que

A(T)=eATB(T)=(0TeAλdλ)B\begin{aligned} \overline{A}(T) &= e^{AT}\\ \overline{B}(T) &= \left(\int_0^Te^{-A\lambda}d\lambda\right)B\\ \end{aligned} x˙((k+1)T)=Ax(kT)+Bu(kT)y(kT)=Cx(kT)\boxed{ \begin{aligned} \dot{x}((k+1)T) &= \overline{A}x(kT) + \overline{B}u(kT)\\ y(kT) &= Cx(kT) \end{aligned} }

Ejercicio

  1. Sea el sistema SISO,

    {x˙(t)=2x(t)+3u(t)y(t)=x(t)(1)\tag{1}\begin{cases} \dot{x}(t) = -2x(t) + 3u(t)\\ y(t) = x(t) \end{cases}

    Discretizar el sistema (1)(1) para:

    1. u(t)=1u(t) = 1
    2. u(t)=sin(t)u(t) = \sin(t)
    A(T)=eAT=e2T\overline{A}(T) = e^{AT} = e^{-2T} B(T)=(0TeAλdλ)B=(0Te2λdλ)3=32e2λ0T=32e2T+32\overline{B}(T) = \left(\int_0^T e^{A\lambda}d\lambda\right)B = \left(\int_0^T e^{-2\lambda}d\lambda\right)3 = -\frac{3}{2}e^{-2\lambda}\vert_0^T = -\frac{3}{2}e^{-2T} + \frac{3}{2}

    Por lo tanto:

    {x((k+1)T)=e2Tx(kT)+32(1e2T)u(kT)y(kT)=x(kT)(2)\tag{2}\begin{cases} x((k+1)T) = e^{-2T}x(kT) + \frac{3}{2}(1 - e^{-2T})u(kT)\\ y(kT) = x(kT) \end{cases}

    Simulando los sistemas (1)(1) y (2)(2) para u(t)=1u(t) = 1,T=0.2T=0.2 y u(t)=sin(t)u(t) = \sin(t),T=0.02T = 0.02 respectivamente, se obtiene el siguiente resultado:

    resultado u=1

    resultado u=sin(t)

  2. Discretizar el sistema

    {x˙(t)=[01254]x(t)+[01]u(t)y(t)=[11]x(t)(1)\tag{1}\begin{cases} \dot{x}(t) = \begin{bmatrix} 0 & 1\\ -25 & -4 \end{bmatrix}x(t) + \begin{bmatrix} 0\\1 \end{bmatrix}u(t)\\ y(t) = \begin{bmatrix} 1 & -1 \end{bmatrix}x(t) \end{cases}

    Discretizar el sistema (1)(1) para:

    1. u(t)=10u(t) = 10
    2. u(t)=tu(t) = t
    3. u(t)=sin(t)u(t) = \sin(t)

    Los valores de A\overline{A} y B\overline{B} se estiman con el comando de matlab [Ab,Bb] = c2d(A,B,T):

     A = [0   1
         -25 -4];
     B = [0
          1];
             
     T = 0.1; % este valor cambia por cada entrada
             
     [Ab,Bb] = c2d(A,B,T)
    

    Simulando los sistemas (1)(1) y (2)(2) para u(t)=10u(t) = 10,T=0.1T=0.1 y u(t)=sin(t),u(t)=tu(t) =\sin(t),u(t) = t,T=0.01T = 0.01 , se obtiene el siguiente resultado:

    resultado u=10

    resultado u=10

    resultado u=10