Expérience 1 du cours de théorie du contrôle moderne : analyse de l'espace d'états et solution de mouvement d'un système linéaire

insérez la description de l'image ici

1. But de l'expérience

insérez la description de l'image ici

Maîtrisez la forme standard, la solution et la transformation de modèle de l'espace d'état du système linéaire.

2. Matériel et logiciels expérimentaux :

Logiciel d'analyse numérique MATLAB

3. Principe expérimental :

3.1. Format de commande pour trouver les valeurs propres et les vecteurs propres de la matrice

[VJ]=eig(A)
cv= eig(A)
Explication : V vecteur propre, J est de type Jordan ; cv est le vecteur colonne de valeur propre

3.2. La méthode de recherche de mouvement

(1) Utiliser la transformée inverse de Laplace ---- adaptée aux systèmes linéaires continus/discrets

Utilisez ilaplace/iztrans pour trouver l'inverse de la fonction de transfert, cette méthode consiste généralement à trouver la réponse dans le cas d'une entrée nulle.

(2) Utiliser une matrice de transition d'état continue (discrète) pour représenter la solution analytique du système - adaptée aux systèmes linéaires stables

Pour les systèmes stationnaires linéaires continus, il existe :
insérez la description de l'image ici

Évidemment, il existe de nombreuses méthodes pour calculer la matrice de transition d'état du système, telles que la méthode de définition, la méthode de transformation de Laplace, la méthode de Sylvester.
Dans Matlab, la méthode d'approximation de Pade est adoptée, et le format d'appel est : phi=expm( ).
Pour les systèmes invariants linéaires discrets :
insérez la description de l'image ici

3.3. Méthode d'intégration numérique de l'équation d'état - adaptée aux systèmes continus linéaires et non linéaires

Divers systèmes stables/variant dans le temps et linéaires/non linéaires peuvent être facilement traités par intégration numérique directe. Il existe de nombreuses méthodes d'intégration numérique, parmi lesquelles il existe une méthode d'intégration numérique de type prédiction-correction + algorithme d'ajustement de taille de pas adaptatif qui est plus efficace. Une variété d'algorithmes de résolution efficaces et applicables à différents types d'ODE (équations différentielles ordinaires) contenus dans Matlab/Simulink, généralement l'algorithme Runge-Kutta, le format de fonction couramment utilisé est le suivant :

[t,x] = ode45(odefun,[ti,tf],x0,options)----采用四阶、五阶Runge-Kutta算法
[t,x] = ode23(odefun,[ti,tf],x0,options)----采用二阶、三阶Runge-Kutta算法

Explication : a. Ces deux fonctions sont des fonctions permettant de résoudre des équations différentielles ordinaires non rigides, et il existe certaines méthodes pour résoudre des équations différentielles ordinaires rigides, telles que ode15s ode23s ode23t ode23tbetc.
b. Les options de paramètre sont le réglage d'erreur de l'intégrale, et les valeurs sont l'erreur relative 'reltol' et l'erreur absolue 'abstol' ; [ti,tf] est la plage de temps pour la résolution ; x0 est le vecteur de valeur initiale ; [t,x] est la solution.
c. L'algorithme Runge-Kutta est la méthode numérique la plus couramment utilisée, veuillez vous référer aux informations pertinentes, lire le principe de l'algorithme et le format de calcul.
Ci-dessous un exemple :
insérez la description de l'image ici

3.4. Utilisation de la fonction de solution de discrétisation dans Cotrol ToolBox - adapté au système LTI

a. Utilisez la fonction step()/impulse() pour trouver la réponse d'état du système lorsque l'entrée pas à pas/impulsion d'entrée :

Lorsque le système G est continu :
l'appel de [y,t,x]=pas/impulsion(G) sélectionnera automatiquement la plage de temps d'échantillonnage et la période d'échantillonnage pour le système continu G ; l'appel de
[y,t,x]=pas/impulsion (G,ti:Ts:tf) La plage de temps d'échantillonnage et la période d'échantillonnage du système continu G sont définies par l'utilisateur.
Lorsque le système G est discret :
appeler [y,t,x]=pas/impulsion(G) sera calculé en fonction de la période d'échantillonnage donnée par le système discret G ;
appeler [y,t,x]=pas/impulsion( G , ti:Ts:tf), Ts doit être cohérent avec la période d'échantillonnage donnée par le système discret G.

b. Utilisez la fonction lsim() pour obtenir la réponse d'état du système pour toute entrée

Format d'appel : [y,x,t]=lsim(G,u,ti:Ts:tf,x0) (attention à la situation du système continu et du système discret)

c. La fonction initiale() peut être utilisée pour une réponse d'entrée nulle

Format d'appel : [y,x,t]=initial(G,x0) (attention à la situation du système continu et du système discret)

3.5. Utilisez l'environnement Simulink pour obtenir la réponse ---- adapté à tous les systèmes pour obtenir la réponse

Utilisez Simulink pour trouver la réponse d'un système linéaire ou non linéaire

Le format d'appel est le suivant : [t,x,y]=sim('XX.mdl', ti:Ts:tf, options,u)

4. Contenu expérimental

système linéaire connu
insérez la description de l'image ici

La procédure expérimentale est la suivante

clear
A = [ -21 19 -20; 19 -21 20; 40 -40 -40]; 
B = [ 0; 1; 2];
C = [ 1 0 2];
D = [0];

stateSpace = ss(A, B, C, D);    % 状态空间表达式

% 阶跃响应
[stepOutResponse, stepTime, stepResponse] = step(stateSpace);

% 冲激响应
[impulseOutResponse, impulseTime, impulseResponse] = impulse(stateSpace);

figure(1);
subplot(2, 1, 1);
plot(stepTime, stepResponse);
title('阶跃响应状态响应曲线');
grid on;
 
subplot(2, 1, 2);
plot(stepTime, stepOutResponse);
title('阶跃响应输出响应曲线');
grid on;

figure(2);
subplot(2, 1, 1);
plot(impulseTime, impulseResponse);
title('冲激响应状态响应曲线');
grid on;
 
subplot(2, 1, 2);
plot(impulseTime, impulseOutResponse);
title('冲激响应输出响应曲线');
grid on;

t =[0: 0.01: 5];
u = (1 + exp(-t) .* cos(5 * t)).*(t<3) + 1 * (t>= 3);
t = t'; u = u';
ut = [t, u];
[t1, x, y] = sim('shiyan.mdl', t, [], ut);

figure(3);
subplot(2, 1, 1);
plot(t1, x);
title('状态响应曲线');
grid on;

subplot(2, 1, 2);
plot(t1, y);
title('输出响应曲线');
grid on;

 % 传递函数
[num, den] = ss2tf(A, B, C, D, 1); 
transferFunc = tf(num, den);

figure(4);
rlocus(transferFunc);
title('K增益负反馈闭环根轨迹图');
grid on;

figure(5);
bode(transferFunc);
title('系统的bode图'); grid on;

figure(6);
nyquist(transferFunc);
title('系统的Nyquist图');
grid on;
  • Utilisez Matlab pour calculer la réponse indicielle (y compris l'état et la sortie) à l'état zéro et générer deux graphiques : le premier graphique dessine les courbes de réponse de chaque état et les marque ; le deuxième graphique dessine les courbes de réponse de sortie.
    insérez la description de l'image ici

  • Utilisez Matlab pour calculer la réponse impulsionnelle (y compris l'état et la sortie) à l'état zéro et générer deux graphiques : le premier graphique dessine les courbes de réponse de chaque état et les marque ; le second graphique dessine les courbes de réponse de sortie.
    insérez la description de l'image ici

Si l'entrée de commande est

insérez la description de l'image ici

et l'état initial est

insérez la description de l'image ici

Demandez la réponse du système, en demandant

  • a. Dessinez le modèle dans Simulink pour trouver la réponse et générez deux graphiques : le premier graphique dessine les courbes de réponse de chaque état et les étiquette ; le deuxième graphique dessine les courbes de réponse de sortie.
    insérez la description de l'image ici

  • fonction de transfert du système
    insérez la description de l'image ici

  • Utilisez la rétroaction négative du gain K pour dessiner un diagramme de locus racine en boucle fermée
    insérez la description de l'image ici

À partir du locus racine, le premier tend vers le point source, le second tend à se situer entre 20 et 60 et le troisième tend vers l'infini.

Dessiner le diagramme de Bode et le diagramme de Nyquist dans Matlab
insérez la description de l'image ici
insérez la description de l'image ici

Pour le diagramme de Bode, on peut savoir que la fréquence de croisement est après la fréquence de coupure, de sorte que la réponse du système change dans la bande des basses fréquences. Pour la fréquence de phase, les caractéristiques de fréquence de phase du système sont toutes négatives. Selon le diagramme de Nyquist, le système est stable.

5. Résumé expérimental

insérez la description de l'image ici

5.1. Principe expérimental

Le modèle d'espace d'états du système continu linéaire peut être résolu dans Matlab :

  • La fonction de réponse d'étape step() peut être utilisée pour calculer la réponse de sortie d'un modèle de fonction de transfert, ou les réponses d'état et de sortie d'un modèle d'espace d'états, à une entrée d'étape unitaire et à un état initial nul (condition).
  • La fonction de simulation impulse() sous excitation impulsive peut être utilisée pour calculer la réponse de sortie d'un modèle de fonction de transfert, ou les réponses d'état et de sortie d'un modèle d'espace d'état, sous une entrée de stimulus impulsif.
  • La fonction de simulation lsim() sous excitation d'entrée arbitraire peut être utilisée pour calculer la réponse de sortie du modèle de fonction de transfert sous une séquence de signal d'entrée donnée (valeurs échantillonnées de la fonction de signal d'entrée).

5.2. Résumé expérimental

Grâce à cette expérience,

  • Maîtriser l'utilisation des expressions d'espace d'état et des fonctions de transfert des systèmes linéaires dans MATLAB.
  • Savoir construire un modèle de simulation système de l'équation d'état dans simulink.
  • Et comment trouver les états des variables d'état dans l'espace d'état après diverses réponses, comment établir le modèle de simulation du système d'espace d'état, etc.
    insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/m0_47419053/article/details/127337637
conseillé
Classement