Sunteți pe pagina 1din 23

Sisteme de Conducere în Robotică

7. Implementare

Theodor Nicu, Tudor C Ionescu, Monica Pătras, cu

Dept. de Automatica si Ingineria Sistemelor (ACSE), UNSTPB

e-mail: {theodor.nicu,tudor.ionescu,monica.patrascu}@upb.ro

11 decembrie 2023
Implementare

Regulatoarele se pot implementa prin tehnici/tehnologii hardware sau


software.

Prima varianta portă numele istoric de regulatoare analogice. Acestea


se realizează prin circuite analogice.
Implementare
Varianta software presupune ca legea de reglare să fie executată la
nivel de cod ce rulează pe un microcontroller (sau procesor, sau
microprocesor). Printre platformele ce suportă versiunea software se
numără toate dispozitivele cu microcontroller/microprocesor (i.e. o
unitate de procesare) ce pot primi s, i transmite informat, ii. În mediul
industrial, des întalnite sunt dispozitive de tip PLC (programmable
logic controller). Acestea sunt dispozitive modulare ce permit rularea
algoritmilor de reglare.

Oricare ar fi dispozitivul ales, pe lângă unitatea de procesare sunt


necesare două module: a) unul ce primes, te semnale de la senzori s, i le
transformă într-o formă compatibilă cu unitatea de procesare, s, i b)
unul ce transformă comenzile calculate de unitatea de procesare s, i le
transformă într-o formă compatibilă cu elementele de execut, ie.
Implementare
În cazul PLC-urilor, aceste module se regăsesc ca module separate (de
intrare sau de ies, ire). Dacă unitatea de procesare apart, ine unui
dispozitiv de tip PC/laptop, de tip mobil (smartphone, tabletă etc.)
sau de tipizat (de obicei o cutie ce cont, ine un microcontroller s, i un
modul de comunicat, ie), atunci cele două module se regăsesc de obicei
într-un dispozitiv ce poartă numele de placă de achizit, ie s, i comandă
(DAQ board).

Modulele principale ale unui PLC sunt: sursa de alimentare, modul de


intrare (semanle analogice s, i/sau digitale), modul de ies, ire (idem) s, i
modulul procesor.
Implementare
Avansurile tehnologice moderne au permis dezvoltarea
de dispozitive facil de utilizat, care cont, in, pe aceeas, i
placă, atât microcontrollerul cât s, i modulele de achizit, ie
s, i comandă. Acesta este cazul produselor Arduino,
Raspberry Pi, etc.

Spre exemplu, modulul Arduino Uno dispune de 14 pini I/O digitali s, i


6 pini I/O analogici. Aces, tia primeasc semnale de la senzori sau
transmit comenzi fără să fie nevoie de o placă de achizit, ie s, i comandă
adit, ională.

În terminologia asociată, semnalele digitale sunt semnale es, antionate


(cu suport de timp discret), iar semnalele analogice sunt semnale cu
suport de timp continuu.
Continuu vs. discret
Procesele fizice operează în timp continuu s, i sunt sisteme continue.
Regulatoarele analogice sunt de asemenea sisteme continue, i.e.
comanda calculată s, i transmisă are valoare în orice moment de timp.
În schimb, regulatoarele software sunt sisteme numerice. Acestea
calculează comanda o dată per perioadă de es, antionare, iar semnalul
de comandă are valori es, antionate1 .

Pentru a conecta un regulator numeric cu un proces continuu, sunt


necesare conversii între cele două tipuri de semnale.
1
O analogie ilustrativă: timpul continuu este o mult, ime de numere rat, ionale, iar
timpul discret este o mult, ime de numere naturale
Continuu vs. discret

Conversia analog-numerică realizează transformarea unui semnal


din formă continuă în formă discretă. Acest proces poartă numele de
es, antionare. Cea mai simplă variantă de es, antionare este citirea
valorilor semnalului continuu cu un anumit pas temporal (numit
perioadă de es, antionare), de obicei cuantizată printr-un ceas.
Es, antionorul poate fi reprezentat simplificat printr-un comutator
automat ce se act, ionază cu perioada T (de es, antionare).
Continuu vs. discret

Conversia numeric-analogică realizează transformarea unui semnal


es, antionat într-un semnal cvasi-continuu. Această operat, ie presupune
"umplerea" intervalelor dintre două valori ale semnalului s, i se
realizează printr-un modul numit extrapolator2 . În funct, ie de ordinul
acestuia, semnalul extrapolat din valorile es, antionate are diverse forme.
Extrapolatorul de ordin zero (ZOH - zero order hold) utiliează funct, ii
constante, cel de ordinul I funct, ii liniare, s, .a.m.d.

2
Se mai întâlnes, te cu numele de element cu ret, inere.
Structura de reglare cu regulator numeric

Structura de reglare cu regulator numeric este sincronă dacă toate


dispozitivele numerice operează cu aceeas, i perioadă de es, antionare (s, i
asincronă în caz contrar).

În multe aplicat, ii industriale, însă, comanda calculată se transmite la


valoarea curentă atâta vreme cât aceasta nu se schimbă, pentru a
minimiza încărcarea ret, elei de comunicat, ie. Această versiune poartă
numele de event triggered control s, i face subiectul unui domeniu
amplu, având metode de proiectare specifice, avantaje s, i limitări etc.

În cele ce urmează, ne referim la varianta sincronă.


Structura de reglare cu regulator numeric
Regulatorul este un sistem numeric, cu intrarea discretă εk = rk − yk
s, i ies, irea discretă uk . Procesul este un sistem continuu, cu intrarea
u(t) s, i ies, irea y (t).

Reprezentarea uzuală a sistemelor numerice ca sisteme discrete în


variabila z este ca funct, ie de z −1 , echivalent cu întârzierea cu un pas.
Discretizarea regulatorului

Proiectarea unui sistem de reglare numeric se poate face prin două


abordări:
Se proiectează regulatorul continuu HR (s) pe baza modelului
continuu al procesului HP (s) s, i apoi se discretizează regulatorul,
obt, inându-se HR (z −1 ).
Se discretizează procesul pentru a obt, ine modelul discret HP (z −1 ),
după care se proiectează direct regulatorul discret HR (z −1 ).

N.b. Chiar dacă regulatorul se obt, ine pe baza modelului discretizat al


procesului HP (z −1 ), procesul real este continuu, iar modulele de
conversie sunt în continuare necesare în SRA.

În cele ce urmează, ne referim la prima variantă.


Discretizarea regulatorului
Metodele uzuale de discretizare ale regulatoarelor de orice ordin
utilizează diverse aproximări. Printre cele mai întâlnite sunt
1 T
Metoda Euler (dreptunghiurilor): →
s 1 − z −1
1 2 1 − z −1
Metoda Tustin (trapezelor): →
s T 1 + z −1

T este perioada de es, antionare. Aceasta afectează atât precizia


regulatorului numeric, cât s, i valoarea comenzii init, iale. Astfel,
perioadele de es, antionare mai mici generează regulatoare cu comanda
init, ială mai mică. Comanda init, ială este acea comandă u0 care se
calculează prima dată la schimbarea referint, ei.

Metoda trapezelor are precizie mai bună. Aproximarea prin metoda


Euler poate duce la instabilitate în buclă închisă.
Discretizarea regulatorului
Alegerea perioadei de es, antionare depinde de dinamica procesului
s, i de performant, ele hardware (ceasul procesorului sau al
microcontrollerului). Dacă aceasta este prea mare, se pierde informat, ie.
Daca aceasta este prea mică, se operează mai multe calcule per
unitatea de timp decât necesar. Teorema lui Shannon răspunde acestei
probleme, specificând alegerea unei frecvent, e de es, antionare νs = 1/T
de cel put, in două ori mai mare decât cea mai înaltă frecvent, ă a
componentelor din sistem.

Recomandări practice, în funct, ie de valoarea timpului tranzitoriu tt sau


a timpului mort τ : 
1 1
T ≈ 16 ÷ 15 tt
T ≈ (0.3 ÷ 1)τ (pentru sistemele cu timp mort)

Observat, ie Timpul mort discret este d = τ /T ∈ N, numărul de


Discretizarea regulatorului
Forma discretă generalizată a regulatorului este

−1 s0 + s1 z −1 + ... + sm z −m
HR (z )= . (1)
r0 + r1 z −1 + ... + rn z −n
Condit, ia de implementabilitate a regulatorului numeric este

r0 ̸= 0.

Se recomandă aducerea relat, iei (1) la o formă în care termenul liber al


numitorului este r0 = 1.

Comanda init, ială (la o variat, ie de eroare egală cu unitatea) este


s0
u0 = .
r0
Comanda numerică
Comanda numerică este comanda calculată cu ajutorul regulatorului
(1). Intrarea, respectiv ies, irea regulatorului sunt eroarea, respectiv
−1 )
comanda, HR (z −1 ) = U(z
E (z −1 )
. Pentru momentul curent de timp
intrarea, lucrăm cu eroarea curentă εk s, i comanda curentă uk . Atunci
uk (r0 + r1 z −1 + ... + rn z −n ) = εk (s0 + s1 z −1 + ... + sm z −m ).
Deoarece z −1 este un operator de întârziere cu un pas, pentru valoarea
xk a unui semnal oarecare, putem scrie xk z −q = xk−q (i.e. întârziată
cu q pas, i).

Obt, inem comanda numerică de forma


m n
!
1 X X
uk = s 0 εk + si εk−i − rj uk−j
r0 i=1 j=1

care depinde de valori anterioare ale erorii s, i comenzii. Observăm că


Exemplu
Fie un regulator PI de forma HR (s) = 5 1 + 2s1 . Utilizând o perioadă


de es, antionare T = 0.1 sec s, i aproximarea Euler, înlocuim 1s → 1−z


0.1
−1 .

Regulatorul numeric este


0.1 5.25 − 5z −1
HR (z −1 ) = 5 + 2.5 = ,
1 − z −1 1 − z −1
care este implementabil (r0 = 1). Comanda init, ială este u0 = 5.25.

Pentru o perioadă de es, antionare T ′ = 0.5 sec, se obt, ine


0.5 6.25 − 5z −1
HR′ (z −1 ) = 5 + 2.5 = ,
1 − z −1 1 − z −1
iar comanda init, ială u0′ = 6.25 este mai mare decât în varianta cu
perioada de es, antionare mai mică. Ambele comenzi, însă, depind
semnificativ de factorul de amplificare al regulatorului.
Exemplu
Comenzile numerice sunt

uk = 5.25εk − 5εk−1 + uk−1

uk′ = 6.25εk − 5εk−1 + uk−1


Exercit, iu Rezolvat, i exemplul anterior utilizând metoda trapezelor.


Comparat, i comenzile init, iale.

De gândit... Pentru regulatorul HR (s) continuu, care este comanda


init, ială transmisă la o variat, ie de eroare egală cu unitatea?

De gândit... Demonstrat, i că pentru regulatorul numeric comanda


init, ială transmisă la o variat, ie de eroare egală cu unitatea este egală cu
raportul termenilor liberi ai acestuia.
Implementarea regulatoarelor PID numerice
În cazul regulatoarelor PID standard, a căror formă continuă este
cunoscută, relat, ia (1) se poate particulariza. Parametrii regulatorului
numeric astfel obt, inut, i, însă, nu sunt deloc intuitivi pentru acordare.
Din acest motiv, se practică în prezent implementarea "naivă" care
este posibilă datorită avasului except, ional în puterea de procesare ce
conferă sistemelor de calcul frecvent, e de ordinul gigahertzilor.

În continuare exemplificăm pentru regulatorul PID paralel


 
1
HPID (s) = KR 1 + + Td s .
Ti s
Comanda continuă este
1 t
 Z 
dε(t)
u(t) = KR ε(t) + ε(θ)dθ + Td .
Ti 0 dt
Implementarea regulatoarelor PID numerice
Înlocuind operat, iile continue cu operat, ii discrete, comanda devine
k
KR X εk − εk−1
uk = KR εk + εk−i + KR Td .
Ti i=0 ∆t

Observăm că integrala numerică este o sumă ce cres, te nelimitat.


Această cres, tere cauzează saturări în elementele de execut, ie,
defect, iuni, sau cres, teri semnificative s, i nedorite ale suprareglajului.
Este
Pk necesară limitarea sumei, fie prin reducerea orizontului de calcul
i=m εk−i , fie prin utilizarea unui mecanism anti-windup.

Observăm, de asemenea, că filtrarea termenului derivativ pentru


implementabilitate nu mai este strict necesară. Cu toate acestea, se
recomandă pre-filtrarea măsurii yk pentru diminuarea efectului
zgomotelor de măsură.
Implementarea regulatoarelor PID numerice
Derivata discretă, εk −ε
∆t
k−1
, utilizează diferent, a a două valori
consecutive ale erorii. Dacă această diferent, ă este mare (de ex. din
cauza zgomotelor de măsură), termenul derivativ poate de asemenea
să cauzeze comenzi prea mari. O solut, ie este operarea diferent, ei între
două valori aflate la distant, ă de câteva perioade de es, antionare
εk − εk−q . O altă solut, ie calculează diferent, a dintre eroarea curentă s, i
o medie
Pa unui număr
 de câteva valori anterioare ale erorii
q
εk − j=n εk−j /(q − n).

O a doua problemă a derivatei discrete este perioada de calcul a


acesteia ∆t, ce ar trebui sa fie egală cu perioada de es, antionare. Însă,
dacă de exemplu, perioada de es, antionare este de ordinul
milisecundelor (sau chiar mai mică), termenul derivativ va fi, din nou,
foarte mare. As, adar, se poate renunt, a la împărt, irea prin ∆t (care este
un scalar ce poate fi înglobat neexplicit în factorul KR Td ).
Implementarea regulatoarelor PID numerice
Se poate implementa comanda numerică
k Pq !
KR X εk−j
j=n
uk = KR εk + εk−i + KR Td εk − .
Ti i=m q−n

Alternativ,
k Pq !
j=n εk−j
X
uk = KR εk + KI εk−i + KD εk − .
i=m
q−n

Se observă că numărul de regis, tri necesari implementării (adică


necesarul de memorie de alocat) este egal cu numărul total de valori
anterioare ale comenzii s, i erorii utilizate în aceste relat, ii. Resursa de
memorie nu este, în acest caz, o problemă majoră pentru
microcontrollerele disponibile pe piat, ă, însă devine critică pentru
generat, iile vechi.
Algoritm (pseudocod)
get parameters KR , KI , KD
while loop-runs do
read rk , yk
filter yk
εk = rk − yk
uk = f (εk , εk−1 , ..., εk−m , uk−1 , uk−2 , ..., uk−n )
uk = anti-windup(uk )
save εk and uk
send uk
end while

Nu se vor omite instruct, iunile de conectare la dispozitive (senzori,


elemente de execut, ie), instruct, iunile de protect, ie (întreruperi, resetarea
integralelor, etc.) s, i restul instruct, iunilor utilitare necesare unui
program complet.
Procese cu factori de amplificare negativi
Factorii de amplificare negativi sugerează că panta caracteristicii statice
a procesului este negativă. Din calcule, regulatoarele au caracteristici
statice cu panta pozitivă, ceea ce înseamnă că descres, terea comenzii
are efect de cres, tere în semnalul de ies, ire al procesului.

De exemplu, pentru o comandă u ∈ [0 ÷ 10]V, valoarea uS = 10V


reprezintă comanda minimă. Deoarece de obicei comanda 0
semnifică oprire completă, se alege, de exemplu, valoarea de
uS = 1V ca fiind comanda maximă.

S-ar putea să vă placă și