Compare commits

..

5 Commits

Author SHA1 Message Date
edf3262b1e feat: Aggiunta verifica con matlab di disturbi sinusoidali
All checks were successful
Build document / build (push) Successful in 8s
2024-06-05 13:45:56 +02:00
fd1bc00560 improvement: Aggiunta paragrafo su scelta di Kc 2024-06-05 13:45:29 +02:00
bfe3318c26 improvement: Add macros for lag, lead, zero, matlab, simuling 2024-06-05 13:44:34 +02:00
4de4ac9e2d improvement: Rewrite second and third step 2024-06-05 12:53:34 +02:00
d89ed3addc fix: Formule disturbi sinusoidali 2024-06-05 09:23:11 +02:00

View File

@@ -13,6 +13,8 @@
\usepackage{fancyhdr}
\usepackage{xcolor}
\usepackage{physics}
\usepackage{listings}
\usepackage{xspace}
\graphicspath{ {./images/} }
\hypersetup{
@@ -61,6 +63,11 @@
\def\sernum{\sum_{n=0}^\infty}
\def\sernumo{\sum_{n=1}^\infty}
\def\matlab{\textsc{Matlab}\xspace}
\def\simulink{\textsc{Simulink}\xspace}
\def\lag{\emph{lag}\xspace}
\def\lead{\emph{lead}\xspace}
\def\zero{\emph{zero}\xspace}
\def\fdomaintoscalar{f: \D \subseteq \R^n \to \R}
\def\fdomaintovector{f: \D \subseteq \R^n \to \R^m}
@@ -134,7 +141,7 @@
\item Progettazione del controllore:
\subitem Scelta del segno di $K_c$
\subitem Scelta della pulsazione di crossover desiderata $\omega_{c,des}$
\subitem Progetto delle reti \emph{lead} o \emph{lag} necessarie a risolvere il problema (ovvero a soddisfare tutti i vincoli di progetto). In questa fase si può anche modificare $K_c$ a patto di non cambiarne il segno e di non violare il vincolo $\abs{K_c} > \gamma$.
\subitem Progetto delle reti \lead o \lag necessarie a risolvere il problema (ovvero a soddisfare tutti i vincoli di progetto). In questa fase si può anche modificare $K_c$ a patto di non cambiarne il segno e di non violare il vincolo $\abs{K_c} > \gamma$.
\item Verifica quantitativa delle prestazioni del sistema di controllo ottenuto.
\end{itemize}
@@ -293,7 +300,7 @@ Questo requisito impone anche implicitamente un limite su dove essere piazzata l
\item Il vincolo $\omega_c < \omega_h$ in genere non va bene, quindi si assume $\omega_c < \frac{\omega_h}{2}$.
\end{itemize}
La formula approssimata che si ottiene dalla regola è
\[ \omega_{h} = \omega_p \cdot 10^{\frac{M_s^{LF}}{40}} \]
\[ \omega_{h} = \omega_s \cdot 10^{\frac{M_T^{HF}}{40}} \]
In ogni caso, considerando che la regola si basa su una approssimazione, alla fine del progetto si deve verificare che il vincolo sia soddisfatto.
\paragraph{Disturbo sinusoidale in $d_p$}
@@ -304,7 +311,7 @@ La condizione da imporre è $\abs{e_{d_p}^\infty} \leq \rho_p \quad \rho_p > 0$.
Come fatto prima:
\[ \abs{e_{d_p}^\infty} = \abs{a_p \abs*{S(j \omega_p)}\sin(\omega_p t + \arg S(j \omega_p))} \]
\[ \abs{S(j \omega_p)} \leq \frac{\rho_p}{a_p} = M_s^{LF} \quad \forall \omega_p \leq \omega_p^+ \]
\[ \abs{S(j \omega_p)} \leq \frac{\rho_p}{a_p} = M_S^{LF} \quad \forall \omega_p \leq \omega_p^+ \]
Come visto in precedenza si impone un vincolo direttamente su $L(s)$ perché a bassa frequenza vale $S(j \omega) \sim \frac{1}{L(s)}$.
@@ -393,77 +400,121 @@ Date le specifiche su sovrelongazione, tempo di salita e settling time, calcolo
I requisiti sul valore di picco di $T(s)$ e $S(s)$ si traducono in due cerchi sul diagramma di Nichols, che rappresentano delle regioni proibite.
\section{Progettazione del controllore tramite tecniche di loop-shaping}
\paragraph{Loop-shaping design} La progettazione riguarda la funzione ad anello proprio perché tutti i vincoli riguardano questa funzione.
\subsection{Definizione del segno di $K_c$}
Partendo dalla funzione $G_c(s) = \frac{K_c}{s^\nu}$, si calcola $L(s)$ usando gli altri parametri del sistema e si rappresenta il diagramma di Nyquist.
Si applica quindi il criterio di Nyquist per determinare la stabilità del sistema. Si sceglie quindi il segno di $K_c$ associato al diagramma dove il punto critico è incircolato un numero pari di volte. Si calcola
Si applica quindi il criterio di Nyquist per determinare la stabilità del sistema: dopo aver determinato il numero d'incircolamenti del punto critico $N$, si calcola
\[ Pcl = N + Pol \]
Se Pcl è pari il sistema è stabilizzabile, e quindi il segno è corretto. Se no è necessario invertire il segno
Se Pcl è pari il sistema è stabilizzabile, e quindi il segno è corretto. Altrimenti è necessario invertire il segno
Il valore assoluto di $K_c$ si sceglie in modo che sia rispettato il vincolo ricavato negli step precedenti ed in modo che, tracciando il diagramma di Nichols, la funzione ad anello non intersechi la regione proibita (se non è possibile si aggiungono poi le reti lag). Ricordiamo sempre che con il crescere di $K_c$ la risposta del sistema è più veloce.
Il valore assoluto di $K_c$ si sceglie in modo che sia rispettato il vincolo ricavato negli step precedenti, che se presente è un limite inferiore, e in modo che la funzione ad anello non intersechi la regione proibita nel diagramma di Nichols (se non è possibile si aggiungono poi le reti \lag). Ricordiamo sempre che con il crescere di $K_c$ la risposta del sistema è più veloce.
\paragraph{Attenzione} Per prendere tutti i punti bisogna tracciare diagramma di Bode, contorno e diagramma di Nyquist quotati (quindi con il punto critico e con $j \infty$, $-j \infty$).
\subsection{Inserimento di reti lead e lag}
Se il segno di $K_c$ non può più essere modificato, si può comunque aumentare il suo modulo (senza violare eventuali vincoli che pongono un limite inferiore).
\subsection{Inserimento di reti \lead e \lag}
\paragraph{Grafico di partenza} Si parte dal diagramma di Nychols tracciato con $mynqichsdsdsa(T_p, s_p)$ e $nichols(Lin)$ con $L_{in}(s) = \frac{K_c}{s^\nu}G_p G_a G_s G_f$. Si disegnano inoltre i vincoli inferiori e superiori di $\omega_c$.
Si parte dal diagramma di Nychols tracciato con $mynqichsdsdsa(T_p, s_p)$ e $nichols(Lin)$ con $L_{in}(s) = \frac{K_c}{s^\nu}G_p G_a G_s G_f$. Si disegnano inoltre i vincoli inferiori e superiori di $\omega_c$. La posizione di $\omega_c$ si sceglie in modo da ottimizzare una determinata specifica (ad esempio se ci si avvicina a $\omega_{c,max}$ si ottiene un sistema più veloce). Se si fa una scelta "a meta" si ottiene un compromesso tra tutti i vincoli (consigliata!), il che è furbo anche per soddisfare i vincoli dei disturbi sinusoidali dove i limiti di $\omega_c$ erano stati scelti in maniera approssimata.
\paragraph{Valore di $\omega_{c,des}$} Il valore di $\omega_c$ si sceglie in modo da ottimizzare una determinata specifica (ad esempio se ci si avvicina a $\omega_{c,max}$ si ottiene un sistema più veloce). Scegliendo il valor medio si ottiene un compromesso tra tutti i vincoli (consigliata!), scelta che risulta vantaggiosa per soddisfare i vincoli dei disturbi sinusoidali dove i limiti di $\omega_c$ sono determinati in maniera approssimata.
In genere per "schivare" la zona proibita è necessario aumentare modulo e fase della funzione $L(s)$ utilizzando uno o più zeri. Per quanto riguarda l'aumento del modulo bisogna essere molto precisi, per rispettare il requisito su $\omega_{c,des}$. Per la fase il requisito è meno stringente, in quanto basta ottenere un incremento minimo di fase ma non c'è un limite sul massimo. La posizione dello zero si sceglie in modo da ottenere il modulo che mi serve. Se l'incremento di fase è necessario allora ho finito, se no rifaccio il calcolo considerando l'inserimento di due zeri.
\paragraph{Obiettivo} Una volta scelta $\omega_{c,des}$ è necessario modificare il controllore in modo che:
\begin{itemize}
\item La funzione $L(s)$ valga zero nel punto $\omega_{c,des}$. L'intersezione con l'asse delle ascisse deve trovarsi a sinistra dell'asse delle ordinate
\item La funzione $L(s)$ non intersechi la zona proibita
\end{itemize}
In generale non si può inserire solamente uno zero: per essere fisicamente realizzabile la funzione di trasferimento deve avere un grado del numeratore che non è mai superiore al grado del denominatore. Questa è la ragione per cui per ogni zero che inserisco devo inserire anche un polo. Ricordiamo che il polo ha effetto contrario rispetto a quanto desiderato.
\paragraph{Necessità di aggiungere zeri} In molti casi per "schivare" la zona proibita è necessario aumentare modulo e fase della funzione $L(s)$ utilizzando uno o più zeri. L'aumento del modulo deve essere preciso, per rispettare il requisito su $\omega_{c,des}$. Per la fase invece il requisito è meno stringente perché esiste solo un limite inferiore per la fase, ma non un massimo.
\paragraph{Rete lead}
La rete lead è utilizzata per aumentare modulo e fase con una rete fisicamente realizzabile:
In genere non si può inserire solamente uno zero: la funzione di trasferimento deve avere un grado del numeratore che non è mai superiore al grado del denominatore per essere fisicamente realizzabile. Questa è la ragione per cui per ogni zero inserito si inserisce anche un polo, anche se ha effetto contrario rispetto a quanto desiderato.
\paragraph{Rete \lead}
La rete \lead è utilizzata per aumentare modulo e fase con una rete fisicamente realizzabile:
\[ R_d (s) = \frac{1 + \frac{s}{z_d}}{1 + \frac{s}{m_d z_d}} \quad m_d > 1 \]
Scegliendo $m_d > 1$ mi garantisce che il polo compaia sempre ad 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}
Notare che un questi diagrammi di Bode si rappresenta la risposta in frequenza normalizzandola su $z_d$. In questo modo la frequenza normalizzata $1$ corrisponde la frequenza dello zero $z_d$.
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$.
La rete lead mi 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 range di frequenze dove si guadagna 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$.
\paragraph{Rete zero} Una rete zero ha come funzione di trasferimento
\paragraph{Rete \zero} Una rete \zero ha come funzione di trasferimento
\[ 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 nostra 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$. La fase arriva fino a 90 gradi.
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°.
Concludendo, devo usare una rete lead in due casi:
\begin{itemize}
\item Devo aumentare modulo e fase: In questo caso progetto il grafico modulo. Infatti il modulo deve essere crescere in maniera precisa, mentre la fase se aumenta "troppo" non è un problema. Dal grafico del modulo scelgo $z_d$, e poi dal grafico della fase scelgo $m$.
\item Devo solo aumentare la fase e devo diminuire il modulo: In questo caso mi concentro solo sulla fase, in quanto il modulo viene poi abbassato dalla rete lag (che quindi va progettata successivamente). Si sceglie quindi $z_d$ attorno \textbf{valore normalizzato} $10^0$ in modo da minimizzare il guadagno al modulo.
\end{itemize}
\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 basta diminuire $K_c$ per soddisfare i vincoli sulla frequenza di crossover (perche ho vincoli su $K_c$). Devo quindi inserire dei poli, in modo da avere una giusta diminuzione alla frequenza $\omega_{c,des}$. Ovviamente però non posso però solo aggiungere solo dei poli, perché se no la fase diminuisce talmente tanto da finire nella regione proibita.
La rete LAG in genere la si vuole evitare. La si usa solo quando siamo costretti a farlo, ovvero quando voglio diminuire il modulo e $K_c$ è vincolato! Attenti che ci toglie punti
\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 \]
\includegraphics[scale=0.3]{retelag.png}
Anche in questo caso il diagramma è normalizzato sulla frequenza del polo.
Inserendo la rete lag progettata opportunamente abbasso il modulo alla $\omega_c$ e confino la "fossa" che scava la rete lag in modo che non entri nella rete proibita. Per farlo è bene scegliere una $z_p$ a destra, in modo da allontanarsi dal "buco di fase". Bisogna fare attenzione a non andare troppo a destra per evitare di aumentare l'effetto coda della risposta al gradino (vedi fase di verifica), in modo da rispettare il vincolo sul tempo di assestamento. Quindi la regola è prendere $z_p = 100$ dove la fase torna a essere a zero. $m_i$ si può anche imporre con la formula:
Inserendo una rete \lag progettata opportunamente il modulo alla $\omega_c$ diminuisce e si confina la "fossa" che scava la rete \lag in modo che la $L(s)$ non entri nella rete proibita (data dal vincolo sulla sovraelongazione). Per farlo è bene scegliere una $z_p$ a destra, in modo da allontanarsi dal "buco di fase".
Bisogna fare attenzione a non "andare troppo a destra" per evitare di aumentare l'effetto coda della risposta al gradino dovuto al polo (vedi fase di verifica), in modo da soddisfare il vincolo sul tempo di assestamento.
La regola è prendere $z_p = 100$ dove la fase torna a essere a zero. In genere si sceglie un valore diverso di $z_p$ solo se l'effetto coda porta a una violazione delle specifiche. $m_i$ si può ricavare con la formula:
\[ m_i = 10^{\frac{\text{attenuazione}}{20}} \]
\paragraph{Attenzione} Prima si inserisce la rete lead e poi la rete lag. La rete lag si utilizza solo se necessario, se no si va a modificare la $\omega_c$ o la $K_c$.
\subparagraph{Attenzione} Prima si inserisce la rete \lead e poi la rete \lag.
\subparagraph{Attenzione} Se possibile bisogna evitare l'utilizzo delle reti \lag. Si usano solo se necessario, ovvero quando per qualsiasi $\omega_c$ possibile si deve diminuire il modulo e $K_c$ è vincolato. Utilizzare una rete \lag quando non è necessario comporta una penalizzazione all'esame.
\subsection{Scelta di $\omega_c$, reti \lead e \lag}
In seguito una breve guida per capire come scegliere i parametri del controllore.
\paragraph{Scelta di $\omega_{c,des}$} In genere si sceglie $\omega_{c,des} = \frac{\omega_{c,sup} - \omega_{c,inf}}{2}$ se la frequenza si trova in un punto con modulo inferiore a zero o se non ci sono frequenze ammissibili con modulo inferiore a zero. Nel primo caso è sufficiente inserire solo reti \lead, mentre nel secondo caso non è possibile evitare d'inserire reti \lag.
Se il valor medio corrisponde a un punto con modulo positivo ma esiste una $\omega_c$ ammissibile dove il modulo è negativo, si sceglie $\omega_c$ a sinistra dell'asse delle ordinate in modo tale che il sistema sia progettabile senza inserire una rete \lag.
\subparagraph{All'esame} Riportare sul foglio il diagramma di Nichols evidenziando le regioni proibite e la scelta di $\omega_{c,des}$.
\paragraph{Scelta di $K_c$} Se è necessario modificare il modulo e non la fase, è bene modificare direttamente $K_c$. Se si deve diminuire il modulo si sceglie il minimo valore possibile di $K_c$, in modo da non dover inserire reti \lag se possibile.
\paragraph{Inserimento delle reti \lead e \zero} Se è necessario aumentare il modulo o la fase si deve aggiungere una rete \lead o una rete \zero. Ricordiamo che le reti \zero sono preferibili in quanto non presentano poli, ma in alcuni casi è necessario evitarle perché introducono un effetto coda. In ogni caso si possono solo inserire al più $\nu$ reti \zero.
Il numero di reti da inserire dipende da quanto modulo e quanta fase è necessario ottenere: se il contributo dato da una rete non basta, allora si inseriscono più reti. I parametri delle due reti devono essere scelti ricordando che il contributo finale è dato dalla somma dei contributi delle reti.
Si devono quindi inserire reti \lead in due casi:
\begin{itemize}
\item Devo aumentare modulo e fase: In questo caso si progetta la rete partendo dal grafico del modulo. Infatti il modulo deve crescere in maniera precisa, mentre la fase può aumentare anche più del dovuto. Dal grafico del modulo si sceglie $z_d$, e poi dal grafico della fase si sceglie $m$.
\item Devo solo aumentare la fase e devo diminuire il modulo: In questo caso si lavora solo sulla fase, in quanto il modulo è poi abbassato dalla rete \lag (che va progettata successivamente). Si sceglie quindi $z_d$ attorno al \textbf{valore normalizzato} $10^0$ in modo da minimizzare il guadagno al modulo.
\end{itemize}
\paragraph{Inserimento rete \lag} La rete \lag si progetta analizzando unicamente il guadagno. Si sceglie $z_p = 100$ e poi si calcola
\[ m_i = 10^{\frac{\text{attenuazione}}{20}} \]
\section{Verifica delle specifiche}
Come ultimo step si verificano le specifiche di prestazione.
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.
\subsection{Verifica del transitorio con MATLAB} Si plotta la risposta al gradino e si valutano sovraelongazione, tempo di salita e tempo di assestamento.
Alcune specifiche si possono verificare sia con \matlab che con \simulink. I metodi con \matlab sono più veloci ed entrambe le tecniche sono accettate all'esame.
\paragraph{Sul foglio all'esame} Bisogna disegnare un grafico simile a quello disegnato da matlab, annotando sovraelongazione, tempo di salita e tempo di assestamento.
\subsection{Verifica del transitorio con \matlab} Si plotta la risposta al gradino dal quale si misurano sovraelongazione, tempo di salita e tempo di assestamento. I valori misurati devono essere confrontati con le specifiche.
\paragraph{Nota} In alcuni casi la risposta al gradino, dopo aver raggiunto il massimo, tende ad avvicinarsi lentamente al valore di riferimento. Questo valore si presenta con le reti lag ed è tanto maggiore quanto è grande il valore normalizzato della rete lag.
\paragraph{Sul foglio all'esame} Bisogna disegnare un grafico simile a quello disegnato da \matlab, annotando sovraelongazione, tempo di salita e tempo di assestamento.
\subsection{Verifica delle specifiche polinomiali} Calcolo il limite utilizzando il controllore progettato.
\paragraph{Nota} In alcuni casi la risposta al gradino, dopo aver raggiunto il massimo, tende ad avvicinarsi lentamente al valore di riferimento (effetto coda). Questo valore si presenta con le reti \lag ed è tanto maggiore quanto è grande il valore del polo normalizzato della rete \lag.
\subsection{Verifica delle specifiche sinusoidali} Si verifica, plottando i diagrammi di Bode di $S(s)$ e di $T(s)$, che il vincolo sul modulo sia soddisfatto alla frequenza corrispondente.
\subsection{Verifica delle specifiche polinomiali} Per verificare le specifiche sui disturbi polinomiali si calcolano i limiti, in modo simile rispetto a quanto fatto per il primo step.
\paragraph{Sul foglio all'esame} Si plotta a mano il diagramma di bode e il guadagno al punto $\omega_??$ e al punto.
Per l'errore di inseguimento $\abs{e_r^\infty}$ si può utilizzare la tabella.
Per gli alti limiti non è necessario ripetere il calcolo del limite, ma è sufficiente utilizzare la formula ricavata al primo punto del procedimento.
\subsection{Verifica delle specifiche sinusoidali}
\paragraph{Con grafico} Si verifica, plottando i diagrammi di Bode di $S(s)$ e di $T(s)$, che il vincolo sul modulo sia soddisfatto alla frequenza del disturbo.
\subparagraph{Sul foglio all'esame} Si plotta a mano il diagramma di bode e si annota il guadagno al punto $\omega_s$ e al punto $\omega_p$.
\paragraph{Calcolato} Il guadagno al polo si può anche calcolare con
\begin{lstlisting}
[mag,ph] = bode(T,omega_s)*(1/G_s)
\end{lstlisting}
\paragraph{Aggiustamento per piccoli errori} Con piccoli errori si può aggiungere un polo ad alta frequenza sulla $L(s)$, che si riflette direttamente sulla $T(s)$:
\[ \frac{1}{1 + \frac{s}{\omega_s}} \]
Dopo aver aggiunto il polo è necessario controllare di nuovo la sovraelongazione, aumentando se necessario la frequenza del polo.
In ogni caso se la specifica sul disturbo sinusoidale è violata di poco la penalizzazione è minima ($\sim 1$ punto).
\end{document}