Contenuto principale

Controllo dei motori CC

Questo esempio mostra il confronto di tre tecniche di controllo dei motori CC per il tracking dei comandi di setpoint e la riduzione della sensibilità ai disturbi di carico:

  • comando feed-forward

  • controllo di feedback integrale

  • regolazione LQR

Per ulteriori dettagli sul modello del motore CC, vedere "Come iniziare: creazione di modelli".

Dichiarazione del problema

Nei motori CC a controllo di armatura, la tensione applicata Va controlla la velocità angolare w dell'albero.

Questo esempio mostra due tecniche di controllo dei motori CC volte a ridurre la sensibilità di w alle variazioni di carico (variazioni nella coppia opposta dal carico del motore).

Un modello semplificato del motore CC è illustrato sopra. La coppia Td modella i disturbi di carico. È necessario minimizzare le variazioni di velocità indotte da tali disturbi.

In questo esempio, le costanti fisiche sono:

R = 2.0;                % Ohms
L = 0.5;                % Henrys
Km = 0.1;               % torque constant
Kb = 0.1;               % back emf constant
Kf = 0.2;               % Nms
J = 0.02;               % kg.m^2/s^2

Per prima cosa, costruire un modello stato-spazio del motore CC con due input (Va, Td) e un output (w):

h1 = tf(Km,[L R]);            % armature
h2 = tf(1,[J Kf]);            % eqn of motion

dcm = ss(h2) * [h1 , 1];      % w = h2 * (h1*Va + Td)
dcm = feedback(dcm,Kb,1,1);   % close back emf loop

Nota: effettuare i calcoli utilizzando la forma stato-spazio per minimizzare l'ordine del modello.

Ora tracciare la risposta della velocità angolare a una variazione a gradino della tensione Va:

figure
stepplot(dcm(1));

Fare clic con il tasto destro del mouse sul grafico e selezionare "Characteristics:Settling Time" (Caratteristiche: tempo di assestamento) per visualizzare il tempo di assestamento.

Progettazione di controllo di un motore CC feed-forward

È possibile utilizzare questa semplice struttura di controllo feed-forward per portare la velocità angolare w a un valore determinato w_ref.

Il guadagno feed-forward Kff deve essere impostato sul reciproco del guadagno CC da Va a w.

Kff = 1/dcgain(dcm(1))
Kff =

    4.1000

Per valutare la progettazione feed-forward in presenza di disturbi di carico, simulare la risposta a un comando a gradino w_ref = 1 con un disturbo Td = -0,1 Nm compreso tra t = 5 e t = 10 secondi:

t = 0:0.1:15;
Td = -0.1 * (t>5 & t<10);       % load disturbance
u = [ones(size(t)) ; Td];       % w_ref=1 and Td

cl_ff = dcm * diag([Kff,1]);    % add feedforward gain
cl_ff.InputName = {'w_ref','Td'};
cl_ff.OutputName = 'w';

figure
lp = lsimplot(cl_ff,u,t);
title('Setpoint tracking and disturbance rejection')
legend('cl\_ff');

% Annotate plot
line([5,5],[.2,.3]);
line([10,10],[.2,.3]);
text(7.5,.25,{'disturbance','T_d = -0.1Nm'},...
            'vertic','middle','horiz','center','color','r');

È evidente che il controllo feed-forward gestisce male i disturbi di carico.

Progettazione di controllo di un motore CC feedback

Provare adesso la struttura di controllo feedback mostrata di seguito.

Per garantire un errore allo stato stazionario pari a zero, utilizzare il controllo integrale della forma

     C(s) = K/s
     where K is to be determined.

Per determinare il guadagno K, è possibile utilizzare la tecnica del luogo della radice applicata alla funzione di trasferimento a loop aperto 1/s * (Va->w):

figure
rp = rlocusplot(tf(1,[1 0]) * dcm(1));
rp.FrequencyUnit = "rad/s";
xlim([-15 5]);
ylim([-15 15]);

Fare clic sulle curve per leggere i valori di guadagno e le informazioni correlate. In questo caso, una scelta ragionevole è K = 5. L'app Control System Designer è un'interfaccia utente interattiva che consente di realizzare tali progetti.

Confrontare questo nuovo progetto con quello iniziale di tipo feed-forward sullo stesso caso di test:

K = 5;
C = tf(K,[1 0]);            % compensator K/s

cl_rloc = feedback(dcm * append(C,1),1,1,1);

figure
lp2 = lsimplot(cl_ff,cl_rloc,u,t);
cl_rloc.InputName = {'w_ref','Td'};
cl_rloc.OutputName = 'w';
title('Setpoint tracking and disturbance rejection')
legend('feedforward','feedback w/ rlocus','Location','NorthWest');

La progettazione basata sul luogo della radice è più efficace nella reiezione dei disturbi di carico.

Progettazione di controllo di un motore CC LQR

Per migliorare ulteriormente le prestazioni, provare a progettare un regolatore lineare quadratico (LQR) per la struttura di feedback mostrata di seguito.

Oltre all'integrale di errore, lo schema LQR utilizza anche il vettore di stato x=(i,w) per sintetizzare la tensione di comando Va. La tensione risultante ha la forma

     Va = K1 * w + K2 * w/s + K3 * i
     where i is the armature current.

Per una migliore reiezione dei disturbi, utilizzare una funzione di costo che penalizzi gli errori integrali elevati, ad esempio la funzione di costo

$$ C = \int^\infty_0 (20q(t)^2+\omega(t)^2+0.01V_a(t)^2) dt $$

dove

$$ q(s) = \omega(s)/s. $$

Il guadagno LQR ottimale per questa funzione di costo viene calcolato come segue:

dc_aug = [1 ; tf(1,[1 0])] * dcm(1); % add output w/s to DC motor model

K_lqr = lqry(dc_aug,[1 0;0 20],0.01);

Quindi derivare il modello a loop chiuso ai fini della simulazione:

P = augstate(dcm);                     % inputs:Va,Td  outputs:w,x
C = K_lqr * append(tf(1,[1 0]),1,1);   % compensator including 1/s
OL = P * append(C,1);                  % open loop

CL = feedback(OL,eye(3),1:3,1:3);      % close feedback loops
cl_lqr = CL(1,[1 4]);                  % extract transfer (w_ref,Td)->w

Questo grafico confronta i diagrammi di Bode a loop chiuso delle tre progettazioni di controllo del motore CC.

figure
bodeplot(cl_ff,cl_rloc,cl_lqr);

Fare clic sulle curve per identificare i sistemi o esaminare i dati.

Confronto tra le progettazioni di controllo del motore CC

Infine, confrontare le tre progettazioni di controllo del motore CC sul caso di test di simulazione:

figure
lp3 = lsimplot(cl_ff,cl_rloc,cl_lqr,u,t);
title('Setpoint tracking and disturbance rejection')
legend('feedforward','feedback (rlocus)','feedback (LQR)','Location','NorthWest');

Grazie ai suoi ulteriori gradi di libertà, il compensatore LQR offre le prestazioni migliori nella reiezione dei disturbi di carico (tra le tre tecniche di progettazione di controllo del motore CC qui analizzate).