\documentclass[a4paper,11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[italian]{babel}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage[shortlabels]{enumitem}
\usepackage{graphicx}
\usepackage{yhmath}
\usepackage{hyperref}
\usepackage{fancyhdr}
\usepackage{xcolor}
\usepackage{physics}
\usepackage{listings}
\usepackage{xspace}
\graphicspath{ {./images/} }

\hypersetup{
    colorlinks=true,
    linkcolor=blue,
    filecolor=magenta,      
    urlcolor=cyan,
    pdftitle={Sistemi di controllo},
    pdfauthor={Matteo Schiff},
    pdfinfo={
      Build={cf94ba97a44a2c89696620a184faba74},
    },
}

\pagestyle{fancy}
\lhead{Sistemi di controllo}
\rhead{Matteo Schiff}

\newcommand\watermark[1]{%
    #1%
    \sbox0{#1}%
    \llap{%
    \makebox[\wd0][c]{%  hor. centering
    \raisebox{.5\ht0}{%  approx. vert. centering
    \csname Gin@isotrue\endcsname% = "keepaspectratio"
    \resizebox*{.8\ht0}{.8\ht0}{% Scale down (the height is also used for the width to avoid the surrounding spaces)
    \parbox{10em}{% Allow line breaks
            \color{black!90}%  
            cf94ba97a44a2c89696620a184faba74.
        }%
    }}}}%
}

\def\R{\mathbb{R}}
\def\Z{\mathbb{Z}}
\def\N{\mathbb{N}}
\def\Q{\mathbb{Q}}
\def\C{\mathbb{C}}
\def\D{\mathbb{D}}
\def\vx{\vec{x}}
\def\vxz{\vec{x_0}}
\def\vy{\vec{y}}
\def\vyz{\vec{y_0}}
\def\vz{\vec{0}}
\def\area{\text{Area}}
\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}

\def\frntoscalar{f: \R^n \to \R}
\def\frdtoscalar{f: \R^2 \to \R}

\def\fintornotoscalar{f: \Omega \subseteq \R^n \to \R}
\def\fintornotovector{f: \Omega \subseteq \R^n \to \R^m}

\def\cont{\mathcal{C}^0}
\def\deriv{\mathcal{C}^1}

\def\lapl{\mathcal{L}}

\def\Fr{\mathfrak{Fr}}

\def\iffdef{\overset{\text{def}}{\iff}}
\def\eqdef{\overset{\text{def}}{=}}

\def\dom{\ \text{dom} \ }
\def\for{\ \text{per} \ }
\def\se{\ \text{se } \ }
\def\rect{\ \text{Pa} \ }
\DeclareMathOperator{\sgn}{sgn}

% Swap the definition of \abs* and \norm*, so that \abs
% and \norm resizes the size of the brackets, and the 
% starred version does not.
\makeatletter
\let\oldabs\abs
\def\abs{\@ifstar{\oldabs}{\oldabs*}}
%
\let\oldnorm\norm
\def\norm{\@ifstar{\oldnorm}{\oldnorm*}}
\makeatother


\title{Sistemi di controllo}
\author{Matteo Schiff}

\begin{document}

% \frontmatter

\maketitle
\tableofcontents

% \mainmatter

\section{Introduzione}
\includegraphics[scale=0.2]{schemasistema.png}
\paragraph{Alcune semplificazioni} Per semplificare la progettazione del controllore si possono assumere costanti diversi parametri del sistema.
\begin{itemize}
    \item $G_r = 1$
    \item $G_a =$ costante, perché l'attuatore è scelto dal progettista in modo che possa agire sul sistema correttamente, ovvero con una banda compatibile. La costante serve a “mappare” l’ingresso dell’attuatore alla sua uscita.
    \item $G_f =$ costante
    \item $G_s =$ costante
\end{itemize}

\paragraph{Fasi di progetto} La progettazione di un sistema di controllo a loop si divide in diverse fasi:
\begin{itemize}
    \item Traduzione delle specifiche in vincoli di progetto. Si ottiene 
    \[ \begin{cases}
        G_f \\
        \nu \\
        \abs{K_c} > \gamma \\
        \omega_c \in [\underline{\omega_c}, \overline{\omega_c}] \\
        \text{Regioni proibite nel diagramma di Nichols}
    \end{cases} \]
    \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 \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}

\subparagraph{Attenzione} Sbagliare il valore di $\nu$ al termine della fase uno \textbf{determina il non superamento dell'esame}. Se $\nu$ è troppo grande le specifiche di prestazione sono comunque soddisfatte, a patto di essere in grado di stabilizzare il sistema (la difficoltà aumenta con l'aumentare di $\nu$, perché diventa più complicato evadere la regione proibita).

\subparagraph{Attenzione} La scelta errata del segno di $K_c$ o il fatto di progettare un sistema che risulta instabile \textbf{determina il non superamento dell'esame}.

\subsection{Funzione di sensitività e di sensitività inversa}
\[ S(s) = \frac{1}{1 + L}\]
\[ T(s) = 1 - S(s)\]

\subsection{L'approccio di progettazione loop shaping}
\paragraph{Funzione di uscita considerando i disturbi}
\[ y(s) = d_P(s) + G_p(s) \left[ d_a(s) + G_a \cdot G_c (s) \cdot \left( r(s) - G_f \cdot \left( d_s(s) + G_s \cdot y(s) \right) \right) \right] = \]
\[ y(s) [ 1 + L(s)] =  G_p(s) G_a G_c (s) r(s) + d_p(s) +G_p(s) d_a(s)- G_p(s) G_a G_c (s) G_f d_s(s) \]
\[ y(s) = T(s) \frac{r(s)}{G_s G_f} + S(s) d_p(s) + G_p(s)S(s)d_a(s) - T(s) \frac{d_s(s)}{G_s} \]
Il comportamento del sistema di controllo è completamente determinato da due funzioni: la funzione di sensitività complementare $T(s)$ e la funzione di sensitività $S(s)$. Entrambe le funzioni sono definite implicitamente dalla funzione ad anello $L(s)$.

Per imporre il comportamento complessivo è necessario andare a scegliere la forma di $L(s)$. Infatti questa tecnica di progetto si chiama \textbf{loop shaping approach}.

\paragraph{Condizioni su $T$ e $S$} Analizziamo uno per uno come i segnali si riflettono sull'uscita:

\subparagraph{Segnale di riferimento} $y(s) = T(s) \cdot \frac{1}{G_s G_f}r(s)$. L'obiettivo è imporre $y(s) = K_d r(s)$. Quindi
\[ \begin{cases}
    T(s) = 1 \\
    \frac{1}{G_s G_f} = K_d
\end{cases} \]

\subparagraph{Disturbi $d_a(s)$ e $d_p(s)$} $y(s) = S(s) \cdot d_p(s) + G_p(s) \cdot S(s) \cdot d_a(s)$. L'obiettivo è $y(s) = 0$, che si ottiene imponendo $S(s) = 0$.

Le due condizioni sono compatibili perché $T(s) \eqdef 1-S(s)$! Se sono in grado d'inseguire il segnale di riferimento, allora sarò in grado di attenuare i disturbi!

Osserviamo che $T(s) = \frac{L(s)}{1+L(s)} \implies L(s) \to \infty$. Quindi
\[ L(s) = G_c(s) G_p(s) G_a G_s G_f \to \infty \]

Si può ottenere questa condizione facendo tendere $G_c$ ad infinito. Costruendo $G_c(s) = K_p \in \R$ posso prendere un $K_p$ molto grande. Un controllore progettato in questo modo non funziona per due motivi:
\begin{itemize}
    \item Il diagramma di Nyquist di $L(s)$ potrebbe (e succede) essere tale per cui $Pcl > 0$ (radici di 1+L(s) = 0 con parte reale positiva).
    \item Analizzando l'effetto del disturbo $d_s$ sul ramo di retroazione $y(s) = T(s) \frac{1}{G_s} d_s(s)$, è necessario $T(s) = 0$ per annullarne l'effetto. Questa condizione va contro i requisiti analizzati prima. Pertanto se $T(s) = 1$ il disturbo di misura viene riportato esattamente sull'uscita.
\end{itemize}

In ogni caso osserviamo un problema dato dal secondo punto. Ricordiamo però che la $T(s)$ è una funzione di trasferimento. Pertanto possiamo tenerla uguale a 1 a basse frequenze e poi la portiamo a 0 ad alte frequenze. In questo modo si filtra il disturbo ad alta frequenza del sensore. La condizione è avere i range di frequenza del disturbo separati da quelli del sistema (condizione che è quasi sempre verificata nei sistemi reali).

\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 è necessario inserire dei poli nell'origine.

\includegraphics[scale=0.3]{plotljw}

La funzione è globalmente decrescente. Un punto interessante è dove $\abs{L(j \omega_c)} = 1$ dove $\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$.

Individuiamo diverse zone di frequenza:
\begin{itemize}
    \item $\omega << \omega_c$ zona di bassa frequenza
    \item $\omega \sim \omega_c$ zona di media frequenza
    \item $\omega >> \omega_c$ zona di alta frequenza
\end{itemize}

Ad alta frequenza $T \sim L$, mentre a bassa frequenza $T \sim 1$. 

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.

\includegraphics[scale = 0.3]{lts.png}

\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.

\paragraph{Disturbi polinomiali} I disturbi polinomiali sono una categoria di disturbi esprimibili come polinomi. Sono dei disturbi a bassa frequenza, e negli esercizi si trovano sotto forma di funzioni gradino, rampa, \ldots

Quando si tratta di un errore dovuto a un disturbo polinomiale si può scegliere di renderlo nullo o limitato. Le condizioni da imporre sono
\begin{itemize}
    \item Errore nullo: $\nu + p > h$
    \item Errore limitato: $\nu + p = h$
\end{itemize}
dove $h$ è il grado del polinomio del segnale (quindi un gradino ha $h=0$, una rampa ha $h=1$, \ldots)

Annullare l'errore è raramente desiderabile, in quanto per farlo è necessario aggiungere un numero maggiore di poli nell'origine al controllore, il che rende difficile stabilizzarlo. 

Ricordiamo infine che se un sistema lavora a regime stazionario il controllore e l'impianto assumono la forma seguente:
\[ G_c(s) = \frac{K_c}{s^\nu} \]
\[ G_p(s) = \frac{K_p}{s^p} \]
Dove i guadagni si calcolano svolgendo i seguenti limiti:
\[ \lim_{s \to 0} s^\nu G_c(s) = K_c \]
\[ \lim_{s \to 0} s^p G_p(s) = K_p \]

Ricordiamo infine che vale sempre la condizione $\nu + p > 0$ per imporre $T(s) = 1$ quando $S(s) \to 0$. Se questa condizione non è rispettata è necessario imporre sin da subito $\nu \geq 1$.

\subsection{L'errore d'inseguimento}
L'errore di'inseguimento è definito come
\[ e_r(t) = y_r(t) - y_d(t) = y_r(t) - K_d \cdot r(t) \]
e a regime stazionario assume il seguente valore dato dal limite
\[ e_r^\infty = \lim_{t \to \infty} e_r(t) \]

In genere è interessante valutare l'errore d'inseguimento a regime stazionario perché il segnale di riferimento è un segnale a bassa frequenza, esprimibile attraverso un polinomio.

Si dimostra, applicando il teorema del valore finale e svolgendo il limite, che l'errore d'inseguimento di un segnale risulta essere pari a
\[ e_r^\infty = \begin{cases}
    0 & \se \nu + p > h \\
    \frac{K_d^2 R_0}{\beta K_d + K_c K_p G_a} & \se \nu + p = h \\
\end{cases} \]
\[ \beta = \begin{cases}
    1 & \se \nu + p = 0 \\
    0 & \se \nu + p > 0
\end{cases} \]
Per i diversi tipi di segnali e del sistema vale la tabella:

\includegraphics[scale=0.2]{tabellainseguimento.png}
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}$.

\subsection{Disturbi di tipo polinomiale $d_p$ e $d_a$}
Un disturbo polinomiale è definito come
\[ d(t)=D_0\frac{t^h}{h!}\epsilon(t) \implies d(s) = D_0 \frac{1}{s^{h+1}} \]
L'errore dato dal disturbo disturbo è definito come
\[ e_d(t) = y_d(t) = \frac{\text{quello che trovo tra disturbo e uscita}}{1+L(s)} \]
\[ e_d^\infty = \lim_{t \to \infty} e_d(t) \]
Applicando il teorema del valore finale risulta
\[ e^{d_p}_\infty = \lim_{s \to 0} s \cdot e^{d_p} = \lim_{s \to 0} s \cdot y(s) \]
Dove $y(s)$, per la sovrapposizione degli effetti, è l'uscita del sistema che si ottiene inserendo solamente il disturbo in esame (e quindi rimuovendo il segnale di riferimento e tutti gli altri disturbi).

Da questo requisito si estrae un vincolo del tipo $\abs{K_c} > K_{c,inf}$, nonché un vincolo su $\nu \geq \nu_{inf}$.

\paragraph{Esempio con disturbo sull'uscita $d_p$} In questo caso risulta
\[ y(s) = S(s) \cdot d_p(s) \]
\[ e^{d_p}_\infty = \lim_{s \to 0} s \cdot S(s) \cdot d_p (s) = \begin{cases}
    0 & \se \nu + p > h \\
    \frac{D_{p0}}{\beta + K_c K_P G_a G_f G_s} & \se \nu + p = h
\end{cases} \]

\subparagraph{Nota} Questo caso vale solamente con un disturbo $d_p$ all'uscita. In generale questo limite va \textbf{sempre ricalcolato} perché dipende da dove è inserito il disturbo. Chiaramente i disturbi polinomiali hanno senso solo sulla catena diretta, perché la catena di retroazione è costruita dal progettusta (e quindi ha solo disturbi ad alta frequenza dati dalle misure del sensore).

\subsection{Disturbi di tipo sinusoidale $d_p$, $d_s$, $d_a$}
I disturbi sinusoidali assumono un importanza rilevante perché qualsiasi disturbo periodico (e non) può essere scomposto con la trasformata di Fourier in una somma di segnali sinusoidali.

\paragraph{Disturbo sinusoidale in $d_s$}
Un disturbo sinusoidale è definito come
\[ d_s = a_s \sin (\omega_s t) \forall \omega_s \geq \omega_s^- \]
Vogliamo che l'errore sia
\[ \abs{e_{d_s}^\infty} = \abs{y_{d_s}^\infty} \leq \rho_s \quad \rho_s >0 \]
Per analizzare l'effetto di un disturbo sinusoidale non si può applicare il teorema del valore finale perché non si può calcolare il limite di una funzione oscillante. In un sistema LTI si dimostra un ingresso sinusoidale genera un uscita sinusoidale, con ampiezza e fase dipendenti dalla funzione di trasferimento $G_{d_s}(j \omega)$.
\[ G_{dsy} = - \frac{T}{G_s} \]
Quindi
\[ \abs{e_{d_s}^\infty} = \abs{a_s \abs*{T(j\omega_s)} \frac{1}{G_s} \sin(\omega_s t + \arg T(j\omega_s))} \leq \rho_s \]

\[ \abs{T(j\omega_s)} \leq \frac{\rho_s G_s}{a_s} = M_T^{HF}\quad \forall \omega_s \geq \omega_s^- \]

Ad alta frequenza si ha $T \sim L$, e quindi il vincolo lo si impone direttamente su $L$.
\[ \abs{L(j \omega_s)} \leq M_T^{HF} \]
(nota: io voglio estendere T=1 in modo da avere la frequenza maggiore possibile, in modo da aumentare la banda che il sistema è in grado d'inseguire. Inoltre più i poli sono grandi più il transitorio è veloce.)
Questo requisito impone anche implicitamente un limite su dove essere piazzata la frequenza di crossover (ricordiamo che T assomiglia ad L solo dopo la frequenza di crossover). Sicuramente vale $\omega_c < \omega_s$. Per calcolare in modo approssimato il valore del vincolo si usa la seguente regola:
\begin{itemize}
    \item Partendo dallo spigolo, tracciamo una retta con pendenza -40 dB/dec (classica regola di buon progetto). Chiamiamo $\omega_h$ l'incrocio tra la retta ed l'asse delle ascisse.
    \item In genere la pendenza di una $L(j \omega_c)$ progettata correttamente è di circa 20dB/dec.
    \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_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$}
Considerando
\[ d_p = a_p \sin(\omega_p t) \]
Essendo il disturbo situato nella catena diretta, allora la frequenza appartiene al range di frequenze applicate dal sistema progettato (quindi da zero a una frequenza massima).
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^+ \]

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)}$.

Applicando la stessa regola approssimata del punto precedente:
\begin{itemize}
    \item Partendo dallo spigolo, tracciamo una retta con pendenza 40 dB/dec. Chiamiamo $\omega_h$ l'incrocio tra la retta ed l'asse delle ascisse.
    \item Il vincolo $\omega_c > \omega_l$ in genere non va bene, quindi si assume $\omega_c \geq 2 \omega_l$.
\end{itemize}
La formula approssimata che si ottiene dalla regola è
\[ \omega_{l} = \omega_p \cdot 10^{-\frac{M_s^{LF}}{40}} \]

\paragraph{cose perse mezzoretta - Variazioni su G(s)}
Stiamo parlando delle incertezze del controllore ? (errore di modello) e ci preoccupiamo che anche in presenza di errori il sistema sia stabile.
\[ \overset{S_G^{Gry}} = \pdv{Gry}{G} \frac{G}{Gry} \]
\[ S_g^{Gry} = \lim_{\dd G \to 0} \overline{S_G^{Gry}} \]
\[ S_G^G = \frac{1}{1+G(s)H(s)} = S \]

\paragraph{Riassumendo: steady state} Ricodiamo che tra i vari $\nu$ estratti dalle specifiche si sceglie il valore massimo. Considerando che l'equazione $\nu+p > h$ manda a zero l'errore, $K_c$ si sceglie prendendo il valore massimo \textbf{tra i requisiti aventi il valore massimo di} $\nu$.

\paragraph{Variazioni relative su H(s)}
Ripetendo gli stessi conti con le derivate si ottiene
\[ S = - \frac{G(s)H(s)}{1+G(s)H(s)} = -T(s) \]
Quindi gli errori sulla catena di retroazione si riflettono sulla catena di controllo. Questo aspetto, che è teoricamente critico, è comunque limitato perché nella catena di retroazione c'è un sensore e una costante $G_f$ che scegliamo noi.

\subsection{Risposta nel transitorio al gradino}
In genere, siccome il sistema è progettato in modo approssimato, risulta essere accurato solo per segnali a bassa frequenza. Risulta quindi utile valutare il comportamento del sistema quando il segnale di riferimento varia rapidamente. Il caso peggiore si ha quando il segnale è un gradino, proprio perché il gradino si scompone in una somma d'infinite armoniche.

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}

Definiamo alcuni parametri:
\begin{itemize}
    \item Maximum overshoot: $\hat{S} = \frac{y_{max} - y_\infty}{y_\infty}$ (anche definita in percentuale)
    \item Rise time $t_r$: quanto tempo ci mette il sistema partendo da zero a raggiungere \textbf{per la prima volta} $y_\infty$
    \item Tempo di salita 10-90\% $t'_r$: è il tempo che intercorre tra quanto la risposta riesce a passare dal 10\% al 90\% (utile per i sistemi che non raggiungono mai il 100\%, che succede quando non sia ha sopraelongazione) 
    \item Settling time $t_{s,\alpha\%}$: Tempo che ci mette il sistema a raggiungere e rimanere attorno a $\pm \alpha \cdot 100 \%$ del valore $y_\infty$. In genere $\alpha = 0.01, 0.02, 0.05$.
\end{itemize}

\paragraph{Funzione prototipo del secondo ordine}
Assumiamo la funzione $T(s)$ come
\[ T(s) = \frac{1}{1 + \frac{2\xi}{\omega_n}s + \frac{s^2}{\omega^2_n}} \]
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).

\includegraphics[scale=0.2]{rispostasecondoordine.png}
La $\omega_n$ determina la frequenza del seno.

La risposta al gradino è
\[ y(t) = 1- \frac{e^{\xi\omega_n t}}{\sqrt{1 - \xi^2}} \sin \left[ \omega_n t + \tan^{-1} \frac{\sqrt{1-\xi^2}}{\xi} \right]\]
Si ottiene
\[ y_\infty = 1 \]
\[ \hat{S} = e^{- \frac{\pi \xi}{\sqrt{1-\xi^2}}} \]
Si nota che la sovraelongazione dipende solo dallo smorzamento. In particolare la sovraelongazione è una funzione monotona decrescente dello smorzamento.
\[ t_r = \frac{1}{\omega_n \sqrt{1-\xi^2}} \left( \pi - \arccos \xi \right) \]
\[ t_{s,\alpha\%} = - \frac{\ln \alpha}{\omega_n \xi} \]

\includegraphics[scale=0.3]{bodeT.png}

Calcoliamo il picco di risonanza:
\[ T_p = \max_\omega \abs{T(j \omega)}_{dB} \]
calcoliamo la banda del sistema a -3dB:
\[ \omega_B: T(j \omega_b)_{dB} = -3 dB \]

\includegraphics[scale=0.3]{bodeS.png}

Calcoliamo il picco di risonanza:
\[ S_p = \max_\omega \abs{S(j \omega)}_{dB} \]
calcoliamo la banda del sistema a -3dB:
\[ \omega_{BS}: S(j \omega_{BS})_{dB} = -3 dB \]

\paragraph{Valore dei parametri}
Considerando la $T(s)$ del secondo ordine, possiamo calcolare la loop function corrispondente:
\[ L(s) = \frac{\omega_n / (2 \xi)}{s \left(1 + \frac{s}{2 \xi \omega_n}\right)} \]
Con questa formula la frequenza di crossover è
\[ \omega_c =  \omega_n \sqrt{\sqrt{1 + 4 \xi^4}-2 \xi^2} \]

Considerando che la sovraelongazione dipende solo dallo smorzamento, e il picco di risonanza dipende dallo smorzamento, imporre un requisito sulla sovraelongazione implica imporre un vincolo sul picco di risonanza di T ed S.

\paragraph{Riassumendo}
Date le specifiche su sovrelongazione, tempo di salita e settling time, calcolo lo smorzamento e $\omega_n$ e li uso poi per trovare poi $T_p$, $S_p$ e $\omega_c$. In particolare:
\[ \xi \geq \frac{\abs{\ln \hat{s}}}{\sqrt{\pi^2+\ln^2(\hat{s})}} \]
\[ T_p \leq \frac{1}{2 \xi \sqrt{1 - \xi^2}} \]
\[ S_p \leq \frac{2 \xi \sqrt{2+4\xi^2+2\sqrt{1+8 \xi^2}}}{\sqrt{1+8\xi^2}+4\xi^2-1} \]

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}

\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: 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. Altrimenti è necessario invertire il segno

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}
\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$. 

\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.

\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}

\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.

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$ 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 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$.

\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 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°.

\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} 
\[ 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 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}} \]

\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}
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.

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.

\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{Sul foglio all'esame} Bisogna disegnare un grafico simile a quello disegnato da \matlab, annotando sovraelongazione, tempo di salita e tempo di assestamento.

\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 polinomiali} Per verificare le specifiche sui disturbi polinomiali si calcolano i limiti, in modo simile rispetto a quanto fatto per il primo step.

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}
