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
- 1. But de l'expérience
- 2. Matériel et logiciels expérimentaux :
- 3. Principe expérimental :
-
- 3.1. Format de commande pour trouver les valeurs propres et les vecteurs propres de la matrice
- 3.2. La méthode de recherche de mouvement
- 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
- 3.4. Utilisation de la fonction de solution de discrétisation dans Cotrol ToolBox - adapté au système LTI
- 3.5. Utilisez l'environnement Simulink pour obtenir la réponse ---- adapté à tous les systèmes pour obtenir la réponse
- 4. Contenu expérimental
- 5. Résumé expérimental
1. But de l'expérience
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 :
É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 :
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 ode23tb
etc.
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 :
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
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.
-
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.
Si l'entrée de commande est
et l'état initial est
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.
-
fonction de transfert du système
-
Utilisez la rétroaction négative du gain K pour dessiner un diagramme de locus racine en boucle fermée
À 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
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
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.