feat: Replace images with custom ones generated using MATLAB

This commit is contained in:
Matte23
2024-07-09 19:41:39 +02:00
parent 1a13fb3484
commit 057d343e69
13 changed files with 186 additions and 13 deletions

View File

@@ -188,7 +188,11 @@ In ogni caso osserviamo un problema dato dal secondo punto. Ricordiamo però che
\subsection{Introduzione sulla progettazione della funzione ad anello} \subsection{Introduzione sulla progettazione della funzione ad anello}
Osserviamo che in genere la funzione ad anello a bassa frequenza tende ad infinito per inseguire il riferimento, mentre ad alta frequenza tende a zero. Per avere il modulo che va all'infinito a bassa frequenza è necessario inserire dei poli nell'origine. Osserviamo che in genere la funzione ad anello a bassa frequenza tende ad infinito per inseguire il riferimento, mentre ad alta frequenza tende a zero. Per avere il modulo che va all'infinito a bassa frequenza è necessario inserire dei poli nell'origine.
\includegraphics[scale=0.3]{plotljw} \begin{figure}
\centering
\includegraphics[scale=0.5]{plotljw.png}
\caption{Loop function su diagramma di }
\end{figure}
Il diagramma di Bode del guadagno è globalmente decrescente. Un punto interessante è dove $\abs{L(j \omega_c)} = 1$ ($\omega_c$ si chiama \emph{pulsazione di crossover}) (notare che $\abs{T(j\omega_c)}=\abs{S(j\omega_c)}$). Questo parametro è molto importante per la progettazione perché è legato, nel diagramma di Nyquist, a dove il modulo passa da essere maggiore di uno a essere minore di uno. Per evitare d'incircolare il punto critico (caso PoL=0) la fase attorno alla frequenza $\omega_c$ deve essere superiore rispetto a -180°, in modo che la curva una volta arrivata a $\omega_c$ non abbia ancora disegnato un semicerchio. Per garantire la robustezza la fase deve essere sufficientemente grande quando mi avvicino a $\omega_c$. Il diagramma di Bode del guadagno è globalmente decrescente. Un punto interessante è dove $\abs{L(j \omega_c)} = 1$ ($\omega_c$ si chiama \emph{pulsazione di crossover}) (notare che $\abs{T(j\omega_c)}=\abs{S(j\omega_c)}$). Questo parametro è molto importante per la progettazione perché è legato, nel diagramma di Nyquist, a dove il modulo passa da essere maggiore di uno a essere minore di uno. Per evitare d'incircolare il punto critico (caso PoL=0) la fase attorno alla frequenza $\omega_c$ deve essere superiore rispetto a -180°, in modo che la curva una volta arrivata a $\omega_c$ non abbia ancora disegnato un semicerchio. Per garantire la robustezza la fase deve essere sufficientemente grande quando mi avvicino a $\omega_c$.
@@ -205,7 +209,11 @@ Ad alta frequenza $S \sim 1$, mentre a bassa frequenza $S \to 0$.
Sia la S che la T a medie frequenze mostrano un picco di risonanza. Sia la S che la T a medie frequenze mostrano un picco di risonanza.
\includegraphics[scale = 0.3]{lts.png} \begin{figure}
\centering
\includegraphics[scale=0.5]{lts.png}
\caption{Confronto tra $L(j \omega)$, $T(j \omega)$ e $S(j \omega)$}
\end{figure}
\section{Definizione dei vincoli di progetto} \section{Definizione dei vincoli di progetto}
Siccome il sistema di controllo è lineare, si può applicare il principio di sovrapposizione degli effetti. Pertanto si possono analizzare i disturbi singolarmente in modo da ottenere uno o più vincoli per ogni disturbo. Siccome il sistema di controllo è lineare, si può applicare il principio di sovrapposizione degli effetti. Pertanto si possono analizzare i disturbi singolarmente in modo da ottenere uno o più vincoli per ogni disturbo.
@@ -249,7 +257,16 @@ Si dimostra, applicando il teorema del valore finale e svolgendo il limite, che
\end{cases} \] \end{cases} \]
Per i diversi tipi di segnali e del sistema vale la tabella: Per i diversi tipi di segnali e del sistema vale la tabella:
\includegraphics[scale=0.2]{tabellainseguimento.png} \begin{center}
\begin{tabular}{ ||c || c | c | c || }
\hline System type & Step input & Ramp input & Parabola input \\
Input order & (order 0) & (order 1) & (order 2) \\ \hline
0 & $\frac{K_d^2 R_0}{K_d + K_p K_c G_a}$ & $\infty$ & $\infty$ \\ \hline
1 & 0 & $\frac{K_d^2 R_0}{K_p K_c G_a}$ & $\infty$ \\ \hline
2 & 0 & 0 & $\frac{K_d^2 R_0}{K_p K_c G_a}$ \\ \hline
\end{tabular}
\end{center}
dove il \textbf{tipo del sistema} è definito come $\nu + p$. dove il \textbf{tipo del sistema} è definito come $\nu + p$.
Da questo requisito si estrae un vincolo del tipo $\abs{K_c} > K_{c,inf}$, nonché un vincolo su $\nu \geq \nu_{inf}$. Da questo requisito si estrae un vincolo del tipo $\abs{K_c} > K_{c,inf}$, nonché un vincolo su $\nu \geq \nu_{inf}$.
@@ -335,7 +352,11 @@ In genere, siccome il sistema è progettato in modo approssimato, risulta essere
L'obiettivo è minimizzare il transitorio, in modo che l'uscita rispecchi il prima possibile il riferimento. Anche la qualità della risposta è importante, perché nel transitorio l'uscita non deve allontanarsi troppo dal valore in regime permanente. L'obiettivo è minimizzare il transitorio, in modo che l'uscita rispecchi il prima possibile il riferimento. Anche la qualità della risposta è importante, perché nel transitorio l'uscita non deve allontanarsi troppo dal valore in regime permanente.
\includegraphics[scale=0.3]{transitorio.png} \begin{figure}
\centering
\includegraphics[scale=0.5]{transitorio.png}
\caption{Risposta al gradino di un sistema. Notare sovraelongazione e tempo di salita}
\end{figure}
Definiamo alcuni parametri: Definiamo alcuni parametri:
\begin{itemize} \begin{itemize}
@@ -351,7 +372,12 @@ Assumiamo la funzione $T(s)$ come
Il guadagno stazionario è 1, non ha zeri e ha due poli in generale complessi e coniugati. Il guadagno stazionario è 1, non ha zeri e ha due poli in generale complessi e coniugati.
Il parametro $\xi \in (0,1]$ è detto \emph{smorzamento}. Quando vale uno il polinomio ha due radici reali coincidenti. Se è compreso tra $(0,1)$ le radici sono complesse coniugate, mentre se è zero le radici sono immaginarie pure (caso che escludiamo perché il sistema deve essere stabile). Il parametro $\xi \in (0,1]$ è detto \emph{smorzamento}. Quando vale uno il polinomio ha due radici reali coincidenti. Se è compreso tra $(0,1)$ le radici sono complesse coniugate, mentre se è zero le radici sono immaginarie pure (caso che escludiamo perché il sistema deve essere stabile).
\includegraphics[scale=0.2]{rispostasecondoordine.png} \begin{figure}
\centering
\includegraphics[scale=0.5]{rispostasecondoordine.png}
\caption{Risposta al gradino di una funzione prototipo del secondo ordine, al variare di $\xi$}
\end{figure}
La $\omega_n$ determina la frequenza del seno. La $\omega_n$ determina la frequenza del seno.
La risposta al gradino è La risposta al gradino è
@@ -363,16 +389,24 @@ Si nota che la sovraelongazione dipende solo dallo smorzamento. In particolare l
\[ t_r = \frac{1}{\omega_n \sqrt{1-\xi^2}} \left( \pi - \arccos \xi \right) \] \[ t_r = \frac{1}{\omega_n \sqrt{1-\xi^2}} \left( \pi - \arccos \xi \right) \]
\[ t_{s,\alpha\%} = - \frac{\ln \alpha}{\omega_n \xi} \] \[ t_{s,\alpha\%} = - \frac{\ln \alpha}{\omega_n \xi} \]
\includegraphics[scale=0.3]{bodeT.png} \begin{figure}
\centering
\includegraphics[scale=0.5]{bodeT.png}
\caption{Diagramma di bode della funzione $T(j \omega)$}
\end{figure}
Calcoliamo il picco di risonanza: Calcoliamo il picco di risonanza per la $T(j \omega)$:
\[ T_p = \max_\omega \abs{T(j \omega)}_{dB} \] \[ T_p = \max_\omega \abs{T(j \omega)}_{dB} \]
calcoliamo la banda del sistema a -3dB: calcoliamo la banda del sistema a -3dB:
\[ \omega_B: T(j \omega_b)_{dB} = -3 dB \] \[ \omega_B: T(j \omega_b)_{dB} = -3 dB \]
\includegraphics[scale=0.3]{bodeS.png} \begin{figure}
\centering
\includegraphics[scale=0.5]{bodeS.png}
\caption{Diagramma di bode della funzione $S(j \omega)$}
\end{figure}
Calcoliamo il picco di risonanza: Calcoliamo il picco di risonanza per la $S(j \omega)$:
\[ S_p = \max_\omega \abs{S(j \omega)}_{dB} \] \[ S_p = \max_\omega \abs{S(j \omega)}_{dB} \]
calcoliamo la banda del sistema a -3dB: calcoliamo la banda del sistema a -3dB:
\[ \omega_{BS}: S(j \omega_{BS})_{dB} = -3 dB \] \[ \omega_{BS}: S(j \omega_{BS})_{dB} = -3 dB \]
@@ -426,9 +460,13 @@ La rete \lead è utilizzata per aumentare modulo e fase con una rete fisicamente
\[ R_d (s) = \frac{1 + \frac{s}{z_d}}{1 + \frac{s}{m_d z_d}} \quad m_d > 1 \] \[ R_d (s) = \frac{1 + \frac{s}{z_d}}{1 + \frac{s}{m_d z_d}} \quad m_d > 1 \]
Scegliendo $m_d > 1$ si garantisce che il polo compaia sempre a una frequenza maggiore dello zero. Più $m_d$ cresce più il comportamento della rete \lead assomiglia al comportamento di una rete con un solo zero. Scegliendo $m_d > 1$ si garantisce che il polo compaia sempre a una frequenza maggiore dello zero. Più $m_d$ cresce più il comportamento della rete \lead assomiglia al comportamento di una rete con un solo zero.
\includegraphics[scale=0.3]{retelead.png} \begin{figure}
\centering
\includegraphics[scale=0.5]{retelead.png}
\caption{Diagramma di una rete lead normalizzata, al variare del parametro $m_d$}
\end{figure}
Notare che un questi diagrammi di Bode si rappresenta la risposta in frequenza normalizzata su $z_d$. In questo modo la frequenza normalizzata $1$ corrisponde la frequenza dello zero $z_d$. Notare che in questi diagrammi di Bode si rappresenta la risposta in frequenza normalizzata su $z_d$. In questo modo la frequenza normalizzata $1$ corrisponde la frequenza dello zero $z_d$.
La rete \lead permette di aumentare il modulo di una quantità finita (che cresce con il crescere di $m_d$). L'andamento della fase è sempre a campana, ovvero si può aumentare la fase solo all'interno di un certo range di frequenze. Il guadagno di fase cresce con $m_d$. La rete \lead permette di aumentare il modulo di una quantità finita (che cresce con il crescere di $m_d$). L'andamento della fase è sempre a campana, ovvero si può aumentare la fase solo all'interno di un certo range di frequenze. Il guadagno di fase cresce con $m_d$.
@@ -436,12 +474,22 @@ La rete \lead permette di aumentare il modulo di una quantità finita (che cresc
\[ R_z(s) = \left(1 + \frac{s}{z}\right) \] \[ R_z(s) = \left(1 + \frac{s}{z}\right) \]
La rete \zero è la migliore delle reti \lead possibili (è il caso limite $m_d \to \infty$). Pertanto è la scelta preferenziale tutte le volte che ho $\nu \geq 1$. In particolare, dato $\nu$, è sempre possibile inserire se necessario fino ad numero massimo di reti \zero pari a $\nu$. Il guadagno di fase massimo è di 90°. La rete \zero è la migliore delle reti \lead possibili (è il caso limite $m_d \to \infty$). Pertanto è la scelta preferenziale tutte le volte che ho $\nu \geq 1$. In particolare, dato $\nu$, è sempre possibile inserire se necessario fino ad numero massimo di reti \zero pari a $\nu$. Il guadagno di fase massimo è di 90°.
\begin{figure}
\centering
\includegraphics[scale=0.5]{retezero.png}
\caption{Diagramma di una rete zero normalizzata}
\end{figure}
\paragraph{Necessità di aggiungere poli} In alcuni casi non è sufficiente diminuire $K_c$ per soddisfare i vincoli sulla frequenza di crossover (a causa dei vincoli su $K_c$). Quindi si devono inserire dei poli per diminuire il modulo alla frequenza $\omega_{c,des}$. Inserendo solamente dei poli la fase diminuisce in modo eccessivo portando $L(s)$ nella regione proibita, quindi per ogni polo si deve anche inserire uno zero. \paragraph{Necessità di aggiungere poli} In alcuni casi non è sufficiente diminuire $K_c$ per soddisfare i vincoli sulla frequenza di crossover (a causa dei vincoli su $K_c$). Quindi si devono inserire dei poli per diminuire il modulo alla frequenza $\omega_{c,des}$. Inserendo solamente dei poli la fase diminuisce in modo eccessivo portando $L(s)$ nella regione proibita, quindi per ogni polo si deve anche inserire uno zero.
\paragraph{Rete \lag} \paragraph{Rete \lag}
\[ R_i(s) = \frac{1+\frac{s}{m_i p_i}}{1+ \frac{s}{p_i}} \quad m_i > 1 \] \[ R_i(s) = \frac{1+\frac{s}{m_i p_i}}{1+ \frac{s}{p_i}} \quad m_i > 1 \]
\includegraphics[scale=0.3]{retelag.png} \begin{figure}
\centering
\includegraphics[scale=0.5]{retelag.png}
\caption{Diagramma di una rete lag normalizzata, al variare del parametro $m_i$}
\end{figure}
Anche in questo caso il diagramma è normalizzato sulla frequenza del polo. Anche in questo caso il diagramma è normalizzato sulla frequenza del polo.
@@ -487,6 +535,12 @@ Può essere necessario evitare che combinando più reti \lead uguali la funzione
\[ K_c^\text{new} = K_c^\text{old} 10^{\frac{\text{modulo da guadagnare in dB}}{20}} \] \[ K_c^\text{new} = K_c^\text{old} 10^{\frac{\text{modulo da guadagnare in dB}}{20}} \]
Il modulo da guadagnare può essere sia positivo che negativo. Nel caso sia negativo è necessario verificare che il nuovo $K_c$ rispetti il vincolo sul limite inferiore. Il modulo da guadagnare può essere sia positivo che negativo. Nel caso sia negativo è necessario verificare che il nuovo $K_c$ rispetti il vincolo sul limite inferiore.
\begin{figure}
\centering
\includegraphics[scale=0.5]{esempionichols.png}
\caption{Esempio della progettazione di un controllore. La funzione è stata prima spostata a destra con una rete \zero ed una \lead e poi è stato modificato il modulo di $K_c$}
\end{figure}
\section{Verifica delle specifiche} \section{Verifica delle specifiche}
L'ultimo passaggio della progettazione di un sistema di controllo è la verifica delle specifiche, ovvero la verifica che il sistema progettato soddisfi effettivamente i requisiti. L'ultimo passaggio della progettazione di un sistema di controllo è la verifica delle specifiche, ovvero la verifica che il sistema progettato soddisfi effettivamente i requisiti.

119
images/Immagini.m Normal file
View File

@@ -0,0 +1,119 @@
%% Rete lead
clear
clf
s = tf('s');
figure(1)
for m_d = 3:16
Rz = (1+s)/(1+s/m_d);
bode(Rz)
grid on
hold on
end
title("Lead network")
saveas(gcf,'retelead.png')
%% Rete lag
clear
clf
s = tf('s');
figure(2)
for m_d = 3:16
Rz = (1+s/m_d)/(1+s);
bode(Rz)
grid on
hold on
end
title("Lag network")
saveas(gcf,'retelag.png')
%% Rete zero
clear
clf
s = tf('s');
figure(3)
Rz = (1+s);
bode(Rz)
grid on
title("Zero network")
saveas(gcf,'retezero.png')
%% Plots riguardo ad un generico sistema ad anello
clear
clf
omega_c = 690;
s = tf('s');
L = (1.498e14*s^2 + 8.615e16*s + 1.189e19)/(79350*s^5 + 3.468e08*s^4 + 2.732e11*s^3 + 7.539e13*s^2 + 6.611e15*s)
T = L/(1+L);
S = 1/(1+L);
figure(1)
bodemag(T)
hold on
grid on
[mag,~,wout] = bode(T,omega_c);
text(wout,mag2db(mag),'Tp','Color','red','FontSize',14, 'VerticalAlignment','bottom')
title("T(j \omega)")
xline(omega_c, '--b', "\omega_c", 'LabelOrientation','horizontal','LabelVerticalAlignment','bottom','FontSize',14)
saveas(gcf,'bodeT.png')
figure(2)
bodemag(S);
hold on
grid on
[mag,~,wout] = bode(S,omega_c);
text(wout,mag2db(mag),'Sp','Color','red','FontSize',14, 'VerticalAlignment','bottom')
xline(omega_c, '--b', "\omega_c", 'LabelOrientation','horizontal','LabelVerticalAlignment','bottom','FontSize',14)
title("S(j \omega)")
saveas(gcf,'bodeS.png')
figure(3)
bodemag(L)
hold on
grid on
bodemag(S)
bodemag(T)
xline(omega_c, '--b', "\omega_c", 'LabelOrientation','horizontal','LabelVerticalAlignment','bottom','FontSize',14)
legend
saveas(gcf,'lts.png')
figure(4)
bode(L)
hold on
xline(omega_c, '--b', "\omega_c", 'LabelOrientation','horizontal','LabelVerticalAlignment','bottom','FontSize',14)
title("L(j \omega)")
grid on
saveas(gcf,'plotljw.png')
%% Step response
clear
clf
s = tf('s');
T = 6.9846e09*s*(s+3450)*(s+2760)*(s+400)*(s+345)*(s+230)*(s+175)/(s*(s+4410)*(s+3450)*(s+2760)*(s+400)*(s+175)*(s^2 + 557.1*s + 7.863e04)*(s^2 + 1818*s + 1.598e06));
figure(1)
step(T)
hold on
grid on
xline(0.00292, '--b', "t_r", 'LabelOrientation','horizontal','LabelVerticalAlignment','bottom','FontSize',14)
yline(1, '--b', "y_\infty", 'LabelOrientation','horizontal','LabelVerticalAlignment','bottom','FontSize',14)
yline(1.05, '--b', "y_{max}", 'LabelOrientation','horizontal','LabelVerticalAlignment','top','FontSize',14)
saveas(gcf,'transitorio.png')
%% Step response second order system
clear
clf
s = tf('s');
t = linspace(0,20,1000);
figure(1)
for xi = 0:0.1:1
Rz = 1/(1+2*xi*s+s^2);
step(Rz,t)
hold on
grid on
end
title("Step response of prototype second order system")
saveas(gcf,'rispostasecondoordine.png')

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 42 KiB

BIN
images/esempionichols.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 108 KiB

BIN
images/retezero.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 31 KiB