Main Content

Controllo anti-windup utilizzando il blocco PID Controller

Questo esempio mostra come utilizzare gli schemi anti-windup per prevenire il wind-up dell'integrazione nei PID controller quando gli attuatori sono saturi. Il blocco PID Controller in Simulink® dispone di due metodi anti-windup integrati back-calculation e clamping, nonché di una modalità di tracking per gestire scenari industriali più complessi. Il blocco PID Controller supporta diverse feature che consentono di gestire i problemi di windup del controller che si verificano negli scenari industriali più comuni.

Il sistema da controllare è un processo saturo del primo ordine con tempo morto.

Il blocco PID Controller è stato sincronizzato con la saturazione ignorata utilizzando il sincronizzatore PID di Simulink® Control Design™.

Il sistema controllato è un processo del primo ordine con tempo morto descritto da

$$P(s)=\frac{1}{10s+1}e^{-2s}$.

Il sistema presenta limiti noti di saturazione dell'input di [-10, 10] di cui si tiene conto nel blocco Saturation etichettato Plant Actuator. Il blocco PID Controller in Simulink dispone di due metodi anti-windup integrati che consentono di tenere conto delle informazioni disponibili sulla saturazione dell'input del sistema.

Prestazioni senza l’utilizzo dell'anti-windup

In primo luogo, esaminare l'effetto della saturazione sul loop chiuso quando il modello di saturazione non è preso in considerazione dal blocco PID Controller. La simulazione del modello genera questi risultati. La figura mostra il setpoint rispetto all'output misurato senza anti-windup.

La figura mostra l'output del controller e l'input saturo senza anti-windup.

Queste figure evidenziano due problemi legati al controllo di un sistema con saturazione dell'input:

  1. Quando il valore del setpoint è 10, il segnale di controllo PID raggiunge uno stato stazionario a circa 36.29, al di fuori dell'intervallo dell'attuatore. Il controller sta quindi operando in una regione non lineare in cui l'aumento del segnale di controllo non ha alcun effetto sull'output del sistema, una condizione nota come winding up. Si noti che il gain CC del sistema è unitario. Pertanto, non è necessario che l'output del controller abbia un valore di stato stazionario al di fuori dell'intervallo dell'attuatore.

  2. Quando il valore del setpoint diventa 5, si verifica un ritardo considerevole prima che l'output del PID controller ritorni all'interno dell'intervallo dell'attuatore.

La progettazione del PID controller affinché tenga conto dell'effetto della saturazione ne migliora le prestazioni, consentendo di operare nella regione lineare per la maggior parte del tempo e di recuperare rapidamente dalla non linearità. A tale scopo è possibile utilizzare il meccanismo anti-windup.

Configurazione del blocco per l'anti-windup basato sul calcolo a ritroso

Il metodo anti-windup con calcolo a ritroso utilizza un loop di feedback per annullare l'accumulo dell'integratore interno del blocco PID Controller quando il controller raggiunge i limiti di saturazione specificati ed entra in funzionamento non lineare. Per abilitare l'anti-windup, andare alla scheda Output Saturation (Saturazione di output) nella finestra di dialogo del blocco. Selezionare Limit output (Limita output) e inserire i limiti di saturazione per il sistema. Quindi, dall'elenco Anti-windup method (Metodo anti-windup), selezionare back-calculation e specificare il Back-calculation coefficient (Kb) (Coefficiente di calcolo a ritroso (Kb)). L'inversa di questo gain è la costante di tempo del loop anti-windup. In questo esempio il gain del calcolo a ritroso è stato scelto come 1. Per ulteriori informazioni su come scegliere questo valore, vedere [1].

Una volta abilitato il calcolo a ritroso, il blocco dispone di un loop di tracking interno che annulla l'accumulo di output dell'integratore. Questa figura mostra la vista sotto maschera del blocco PID Controller con il calcolo a ritroso.

Si noti la rapidità con cui il segnale di controllo PID ritorna alla regione lineare e la velocità con cui il loop recupera dalla saturazione.

L'output del controller u(t) e l'input saturo SAT(u) coincidono in quanto Limit output (Limita output) è abilitato.

Per visualizzare meglio l'effetto anti-windup, questa figura illustra l'output y(t) misurato dal sistema con e senza anti-windup.

Configurazione del blocco per l'anti-windup basato sulla limitazione dell'integratore

Un'altra comune strategia anti-windup si basa sull'integrazione condizionale. Per abilitare l'anti-windup, nella finestra di dialogo dei parametri del blocco selezionare la scheda Saturation (Saturazione). Selezionare Limit output (Limita output) e inserire i limiti di saturazione per il sistema. Quindi, dall'elenco Anti-windup method (Metodo anti-windup), selezionare clamping (limitazione).

Questa figura mostra il setpoint rispetto all'output misurato senza limitazione.

Questa figura mostra che l'output del controller u(t) e l'input saturo SAT(u) coincidono in quanto Limit output (Limita output) è abilitato.

Per ulteriori informazioni su quando utilizzare la limitazione, vedere [1].

Utilizzo della modalità tracking per gestire scenari anti-windup complessi

Le strategie anti-windup discusse finora si basano su metodi integrati per elaborare le informazioni sulla saturazione fornite al blocco tramite la relativa finestra di dialogo. Affinché queste tecniche integrate funzionino come previsto, devono essere soddisfatte due condizioni:

  1. I limiti di saturazione del sistema sono noti e possono essere inseriti nella finestra di dialogo del blocco.

  2. Il segnale di output del blocco PID Controller è l'unico segnale che alimenta l'attuatore.

Queste condizioni possono risultare restrittive nella gestione di scenari generali anti-windup. Il blocco PID Controller dispone di una modalità di tracking che consente di impostare esternamente un loop anti-windup di calcolo a ritroso. I due esempi successivi mostrano l'utilizzo della modalità tracking ai fini dell'anti-windup:

  1. Anti-windup per attuatori saturi con dinamica in cascata

  2. Anti-windup per controllo PID con feedforward

Costruzione di schema anti-windup per attuatori saturi con dinamica in cascata

L'attuatore in sldemo_antiwindupactuator presenta dinamiche complesse. Le dinamiche complesse sono comuni quando un attuatore ha una propria dinamica a loop chiuso. Il PID controller si trova in un loop esterno e vede la dinamica dell'attuatore come un loop interno, chiamato anche dinamica satura in cascata.

Per una strategia anti-windup efficace è necessario riportare l'output dell'attuatore alla porta di tracking del blocco PID Controller. Per configurare il tracking mode del blocco PID Controller, nella finestra di dialogo dei parametri del blocco, fare clic sulla scheda Initialization (Inizializzazione). Selezionare Enable tracking mode (Abilita modalità tracking) e specificare il gain Kt. L'inversa di questo gain è la costante di tempo del loop di tracking. Per ulteriori informazioni su come scegliere questo gain, vedere [1].

L'output misurato del sistema y(t) e l'output del controller u(t) rispondono quasi immediatamente alle variazioni del setpoint. Senza il meccanismo anti-windup, queste risposte presentano lunghi ritardi.

Schema anti-windup per controllo PID con feedforward

In un'altra configurazione di controllo comune, l'attuatore riceve un segnale di controllo che è una combinazione di un segnale di controllo PID e di un segnale di controllo feedforward. Aprire il modello sldemo_antiwindupfeedforward.

Per costruire con precisione un loop anti-windup con calcolo a ritroso, il segnale di tracking deve sottrarre il contributo del segnale di feedforward. Questa azione consente al blocco PID Controller di conoscere la propria quota del segnale di controllo effettivo applicato all'attuatore.

In questo caso, il gain di feedforward è unitario in quanto il sistema ha un gain CC di 1.

L'output misurato del sistema y(t) e l'output del controller u(t) rispondono quasi immediatamente alle variazioni del setpoint. Quando il valore del setpoint è 10, si noti come l'output del controller u(t) si riduce per rientrare nell'intervallo dell'attuatore.

Quando il valore del setpoint è 10, si noti come l'output del controller u(t) si riduce per rientrare nell'intervallo dell'attuatore.

Questa figura mostra l'output del PID Controller e l'input di feedforward con anti-windup.

Riferimenti

[1] Åström, Karl J., and Tore Hägglund. Advanced PID Control. Triangle Park, NC: International Society of Automation, 2006.

Vedi anche

Argomenti complementari