🌙
  • 🇺🇸 English
  • 🇫🇷 Français
  • 🇪🇦 Español

On a un système sous forme de représentation d’états. Comment le discrétiser ?

Formules

On désire passer de :

{x˙(t)=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t)aˋ{xk+1=Fxk+Gukyk=Hxk+Juk\begin{cases} \dot{x}(t) &= A x(t) + B u(t) \\ y(t) &= C x(t) + D u(t) \end{cases} \quad à \quad \begin{cases} x_{k+1} &= F x_k + G u_k \\ y_k &= H x_k + J u_k \end{cases}

On a les relations suivantes :

F=eATe,G=∫0TeeAτdτ,H=C,J=DF = e^{AT_e}, \quad G = \int_{0}^{T_e} e^{A\tau} \mathrm{d}\tau, \quad H = C, \quad J = D

Sur Matlab

On peut directement discrétiser un système avec c2d. Dans un premier temps, on définit notre système en continu :

A = [0 1; -2 -3];
B = [0; 1];
C = [1 0];
D = 0;

sys_c = ss(A, B, C, D); 

On sélectionne la période d’échantillonnage :

Te = 0.01;

Puis on obtient le système discrétiser avec maintient à l’ordre 0 (pratique pour implémentation RST car c’est le comportement exact du DAC) :

sys_d = c2d(sys_c, Te, 'zoh');

Ou alors avec la méthode de Tustin (pratique pour un correcteur PID) :

sys_d = c2d(sys_c, Te, 'tustin');