Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Progettazione di un servo controller LQR in Simulink

Questo esempio mostra la progettazione di un servo controller LQR in Simulink® utilizzando un'applicazione per l'autopilota di un aereo.

Aprire il modello per

open_system("lqrpilot")

In questo modello:

  • Il blocco Linearized Dynamics contiene la cellula linearizzata.

  • sf_aerodyn è un blocco di funzione S contenente le equazioni non lineari per (θ,ϕ)=(0,15).

  • Il segnale di errore tra ϕ e ϕref viene fatto passare per un integratore che contribuisce ad azzerare l'errore.

L'apertura del modello carica inoltre il file MAT lqrpilotData che contiene i seguenti dati.

  • Le matrici A e B delle equazioni di stato

  • La matrice di stato A15 linearizzata

  • La matrice K_lqr del guadagno LQG finale

Equazioni stato-spazio dell'aeromobile

Questa equazione è l'equazione di stato standard di un sistema stato-spazio.

x˙=Ax+Bu

Per il sistema dell'aeromobile, il vettore di stato è il seguente.

x=[u,v,w,p,q,r,θ,ϕ]T

Le variabili u, v e w sono le tre velocità rispetto al telaio del corpo, come mostrato nella figura seguente.

Le variabili ϕ e θ sono il rollio e il beccheggio. p, q e r sono rispettivamente il rollio, il beccheggio e i tassi d’imbardata.

Le dinamiche dell’aeromobile sono non lineari. La seguente equazione mostra i componenti non lineari aggiunti all'equazione stato-spazio, dove g è l'accelerazione dovuta alla gravità.

x˙=Ax+Bu+[-gsinθgcosθsinϕgcosθcosϕ000qcosϕ-rsinϕ(qsinϕ+rcosϕ)tanθ]

Trimming

Ai fini della progettazione LQG, le dinamiche non lineari sono sottoposte a trimming a ϕ=15 e le variabili p, q, r e θ sono impostate a zero. Dato che u, v e w non influiscono sul termine non lineare dell'equazione precedente, il risultato è un modello linearizzato intorno a (θ,ϕ)=(0,15), con tutti i restanti stati impostati a zero.

Lo script lqrdes mostra come calcolare il modello linearizzato A15 in questo punto di funzionamento sottoposto a trimming.

Definizione del problema

L’obiettivo della progettazione è di eseguire una virata coordinata e costante, come illustrato in questa figura.

Per raggiungere questo obiettivo è necessario progettare un controller che comandi una virata costante tramite l’esecuzione di un rollio di 60°. Si assuma inoltre che l'angolo di beccheggio θ debba rimanere il più vicino possibile a zero.

Risultati

Lo script lqrdes mostra come calcolare la matrice K_lqr del guadagno LQG.

Nel modello lqrpilot, assicurarsi che il blocco switch sia configurato per selezionare l'output del blocco Nonlinear Dynamics.

Eseguire il modello.

sim("lqrpilot")

Visualizzare la risposta del rollio ϕ a una variazione di passo di 60°. Il sistema traccia il rollio comandato in circa 60 secondi.

open_system("lqrpilot/phi (roll angle)")

Visualizzare l'angolo di beccheggio θ. Il controller è riuscito a mantenere l'angolo di beccheggio a un valore relativamente basso.

open_system("lqrpilot/theta (pitch angle)")

Infine, visualizzare gli input di controllo.

open_system("lqrpilot/Control Inputs")

È possibile regolare i valori Q e R nello script lqrdes per provare diversi potenziali progetti. È inoltre possibile confrontare le simulazioni della dinamica del sistema lineare e non lineare per vedere gli effetti delle non linearità sulle prestazioni del sistema.

Argomenti complementari