Controllori automatici

Ciao,

sono un po' perplesso su un comportamento alquanto strano della simulazione di un semplice controllore. Per chi ha scilab ecco il breve codice:

T = 5; // durata gradino dt = 0.01; // tempo campionamento tau = 0.5; // costante di tempo del sistema

kp = 2; // guadagno P ki = 0.1; // guadagno I

t1 = -ones(1, T/dt); // gradino negativo t2 = zeros(1, T/dt); // e t = cat(2, t1, t2); // positivo

P = (1-exp(-dt/tau))/(%z-exp(-dt/tau)); P.dt = dt; // fdt del sistema C = kp + ki / (%z - 1); // controllore PI H = (P * C) / (1 + P * C); // fdt anello chiuso O = C / (1 + P * C); // uscita controllore E = 1/ (1 + P * C); // segnale errore

yP = flts(t, tf2ss(P)); yH = flts(t, tf2ss(H)); yO = flts(t, tf2ss(O)); yE = flts(t, tf2ss(E));

plot2d2("onn", ((0:size(t, 'c') - 1).*dt)', yP', style=[color("blue")]); plot2d2("onn", ((0:size(t, 'c') - 1).*dt)', yH', style=[color("green")]); plot2d2("onn", ((0:size(t, 'c') - 1).*dt)', yO', style=[color("black")]); plot2d2("onn", ((0:size(t, 'c') - 1).*dt)', yE', style=[color("red")]);

la curva blu è la risposta al gradino del sistema in anello aperto (senza controllore insomma). Quella verde con il controllore, quellla rossa il segnale di errore e infine quella nera l'uscita del controllore.

Tranne quest'ultima le altre hanno senso. Non capisco perché se il segnale errore (curva rossa) va a zero, come è giusto che sia, l'uscita del controllore (curva nera) sia diversa da zero.

Dove mi perdo?

Grazie! Marco / iw2nzm

Reply to
Marco Trapanese
Loading thread data ...

Rispondo a caso, perche'non ho Scilab e capisco poco di controlli automatici, ma oggi, come si vede, c'ho la giornata lunga... 8-)

Non sono sicuro di avere compreso la tua perplessita', ma se il controllore e PI, l'azione integrale non ha per l'appunto il compito di mantenere l'uscita ad un valore diverso da zero anche con segnale d'errore nullo (il famoso errore di posizione nulloa regime?)

Saluti, LaCar.

);

);

Reply to
lacariatide

Ma se l'errore è nullo significa che sono arrivato al setpoint. Da quello che so io il semplice proporzionale lascia un errore a regime (per l'appunto non nullo).

Forse però il mio modello del sistema è sbagliato. Immagina un controllo di posizione di un motore ad esempio: una volta portato nella posizione impostata dal setpoint (in assenza di disturbi) non è necessario avere un'uscita dal controllore per mantenerla.

La fdt del mio caso in prima analisi è approssimabile da un semplice sistema del primo ordine:

P(z) = (1 - d) / (z - d)

con d = e^(-dt/tau).

Se volessi tenere conto di quanto detto sopra come dovrei cambiare il modello del sistema?

Ciao! Marco / iw2nzm

Reply to
Marco Trapanese

Non capisco il tuo nuovo quesito, ma rimaniamo un attimo ancora sul vecchio: il controllore che hai postato ha una azione integrale, oltre che proporzionale, no? Per cui l'errore a regime e'nullo, grossolanamente "essendo il guadagno in continua infinito". Se, nel tuo codice, metti ki a zero dovresti vedere bene l'effetto dell'assenza dell'integratore.

Cosa non torna?

Saluti, LaCar.

Reply to
lacariatide

Non torna il fatto che una volta che l'uscita ha raggiunto il setpoint prefissato (errore a regime nullo) abbia ancora un'uscita verso il driver. Mi aspetterei che così facendo l'uscita superi il setpoint.

Il secondo quesito era direttamente legato a questo: hai un motore che fa girare una massa. Come ingresso hai la posizione e come retroazione il segnale proveniente da una bussola.

Imposti il setpoint (esempio 270°) il controllore attiva il motore fino a che l'errore (setpoint di 270 - gradi bussola) è zero. A questo punto fermando il motore (tralasciamo eventuali oscillazioni) la posizione resta costante! Non ho bisogno di tenere acceso il motore per mantenere nullo l'errore a regime in assenza di disturbi.

Se dovessi modellizare questo sistema in cui approssimiamo l'insieme motore + massa come sistema del primo ordine come scrivi la fdt?

Grazie! Marco / iw2nzm

Reply to
Marco Trapanese

Ah!, ora e'piu'chiaro!. Occhio che l'uscita (angolo) e' gia' un integrale dell'ingresso (tensione di controllo).

Penso che la f.d.t. del sistema non sia definita correttamente nel tuo modello... Scusa se prima ho fatto confusione, avevo in testa uno schema di controllo diverso da quello classico...

.=2E.troppo difficile per me 8-) ! Ma penso che qui puoi trovare ampiamente ispirazione

formatting link
html . In ogni caso se come f.d.t. metti un integratore ottieni le curve desiderate...

Saluti, LaCar

Reply to
lacariatide

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.