– Programmable Logic Controller (PLC) – I Scopul Scopul acestui laborator este acela de a prezenta :  arhitectura, structura și utilizarea PLC… [604771]

MICROCONTROLERE
– 1 – Laboratorul nr. 12
– Programmable Logic Controller (PLC) –

I Scopul

Scopul acestui laborator este acela de a prezenta :
 arhitectura, structura și utilizarea PLC -urilor;
 standardul internațional IEC 61131 ;
 Diagrama Funcțională Secvențială – SFC;
 Kit-ul de de zvoltate EASY250 -EVA și modul de funcționare a acestuia cu un
mediu c omplet de programare pentru PLC -uri, CoDeSys ;
 și de a programa PLC-urile.

II Introducere

Un controler logic programabil, denumit PLC (Programmable Logic
Controller) sau controler programa bil, sau automat programabil – AP, este un
dispozitiv de tipul unui computer utilizat pentru a controla procesele din mediul
industrial. Astfel de procese, pe care PLC -urile le pot controla, sunt foarte variate
cum ar fi: sisteme de transport (transportor) , mașina din industria alimentară, liniile de
asamblat autovehicule.
Conform definiției NEMA (National Electrical Manufacturers Associations), un
PLC este soluția bazată pe un microprocesor care utilizează modulele de intrare
conectate la senzori pentru a citi starea sistemului controlat, schimbarea task -ului de
analiză a stării sistemului și clarificarea acțiunilor consecutive și în sfârșit, utilizează
modulele de ieșire pentru a dirija conductorii și dispozitivele de acționare. De aceea,
task-ul software a PLC -ului constă din calcularea valorilor de ieșire corecte oferind o
imagine a valorilor de intrare.
Arhitectura PLC -ului poate fi schematizată în Figura II-1. Unitatea centrală este
în general, bazată pe un singur procesor d ar pentru aplicațiile complexe este
disponibil multiprocesorul. Majoritatea PLC -urilor au o magistrală unică, comună cu
UCP -ul, memoria și interfețele. Evoluția controler -ului este în direcția soluțiilor
multimagistrală (multibus) unde, în particular, cana lele de I/O au propria lor
magistrală serială sau paralelă.
Unitatea de depanarea și programare a PLC -ului este, de obicei, un dispozitiv extern,
întinzându -se de la o tastatură dedicată cu un display mic până la un Computer
Personal (PC).
Modulele de intrare/ieșire (I/O) convertesc semnalele provenite de la senzori
într-un format digital și generează semnale electrice proporționale cu valorile digitale
de la variabilele de ieșire stocate în memoria PLC -ului. Semnalele înlocuite între
sistem și control pot fi discrete sau analogice.
Sunt câteva criterii de selecție a PLC -ului corespunzător pentru o aplicație
dată. Tipic, clasa PLC -ului este definită de către numărul maxim de semnale de I/O
care sunt capabile să comande și să conducă. Un alt criteriu, c are este foarte

MICROCONTROLERE
– 2 – important, este viteza de calcul a PLC -ului, capabilitatea de luare a deciziei corecte
într-un interval de timp precizat.
unitatea de
programareUCP memoria
modulele de I/OMagistrala
dispozitive de
actionaresenzori

Figura II-1 Arhitectura PLC -ului

Evoluția tehnologică în electronică și în știința calculatoarelor tinde spre
arhitecturile hardware/software mult mai sofisticate, capabile să garanteze un timp de
reacție mult mai scurt și o siguranță intrinsecă mult mai bună.
Într-un sistem de control in dustrial tradițional, toate dispozitivele de control sunt
cablate direct fiecare cu fiecare în conformitate cu modul cum trebuie să lucreze
sistemul controlat. Oricum, într -un sistem cu PLC, acesta înlocuiește cablarea dintre
dispozitive. Astfel, înainte d e a fi cablat direct fiecare cu fiecare, tot echipamentul
este cablat la PLC. Atunci, programul de control din interiorul PLC -ului prevede
”cablarea” conectării dintre dispozitive. Un program de control este un program de
calculator stocat în memoria PLC -ului care instruiește PLC -ul despre ce urmează ca
să se întâmple într -un sistem. Utilizarea PLC -ulul pentru a oferi cablarea legăturilor
dintre dispozitivele sistem este denumită softwiring (cablare software).

DE CE se utilizează PLC -urile?

Avantajul soft wiring -ului (cablării software) provenit de la controlerele
programabile este nemaipomenit. De fapt, este unul dintre cele mai importante lucruri
oferit de PLC -uri. Cablarea software permite ca modificările într -un sistem de control
să fie ușoare și ieftin e. Dacă se dorește ca un dispozitiv dintr -un sistem cu PLC -uri să
funcționeze diferit sau să aibă controlul asupra unui element de proces diferit, tot
ceea ce trebuie făcut este să se schimbe programul de control. Într -un sistem
tradițional, această modifi care implică o schimbare a cablării fizice dintre dispozitive,
un cost și o pierdere de timp.
PLC-urile oferă și alte avantaje pe lângă sistemele de control tradiționale, cum
ar fi:
 Siguranță mai mare;
 Necesitatea unui spațiu mic pentru implementare;
 Posibilitatea implementării de operații matematice;
 Costuri reduse;
 Abilități de a rezista la un mediu aspru;
 Dezvoltare.

MICROCONTROLERE
– 3 –
III Structura unui PLC

De fapt, un PLC este alcătuit din două elemente:
 Unitatea centrală de prelucrare;
 Sistemul de intrare/ieșire.

Unitat ea centrală de prelucrare (UCP) este partea controlerului programabil care
extrage, decodează, stochează și procesează informația. De asemenea, execută
programul de control stocat în memoria PLC -ului. În esență, UCP -ul este “creierul”
controlerului program abil. UCP -ul are trei părți:
 Procesorul;
 Sistemul de memorare;
 Alimentarea.

Procesorul este partea din UCP care codează, decodează și calculează date.
Sistemul de memorare este partea din UCP care stochează atât programe cât și
date de control pentru echi pamentul conectat la PLC. Memoria PLC -ului este
împărțită în trei spații: spațiul de sistem, spațiul de program și spațiul de date. Spațiul
de sistem conține programe instalate de către fabricant (sistemul de operare,
modulele de diagnosticare și simulare) . Spațiul de program conține codul de control
scris de către programator. Spațiul de date stochează toate variabilele utilizate de
către programul de aplicație.
Alimentarea este acea parte care furnizează PLC -ului tensiunea și curentul de care
are nevoie pentru a funcționa.

Figura III-1. Structura Unității Centrale de Prelucrare

Sistemul de intrare/ieșire (I/O) este partea din PLC la care sunt conectate toate
dispozitivele din câmp. Dacă UCP -ul poate fi gândit ca un creier al PLC -ului, atunci
sistemul de I/O poate fi gândit ca fiind mâinile și picioarele PLC -ului.
Sistemul de I/O constă din 2 părți principale:
 Cadrul de montare (rack -ul);

MICROCONTROLERE
– 4 –  Modulele de intrare/ieșire (I/O).

Cadrul este o cutie cu slot uri înăuntru care este conectat la UCP.

Modulele de intrare/ieșire sunt dispozitive cu terminale de conectare la care sunt
legate dispozitivele din câmp. Împreună, cadrul și modulele de I/O alcătuiesc interfața
dintre dispozitvele din câmp și PLC. Când s e setează corect, fiecare dintre modulele
de I/O este atât cablat la dispozitivele din câmp corespunzătoare cât și instalat într –
un slot din cadru. Aceast lucru creează o conectare fizică între echipamentul din
câmp și PLC. La unele PLC -uri mai mici, cadru l și modulele de I/O sunt încapsulate
într-o singură unitate.

Figura III-2. Cutia cu dispozitivele I/O

Toate dispozitivele de câmp conectate la PLC pot fi clasificate în una din două
categorii:
 de int rare;
 de ieșire.

Intrările sunt dispozitivele care transmit un semnal/dată la un PLC. Exemple tipice
de intrări sunt butoanele de acționare, întrerupătoarele și dispozitivele de măsurare.
Ieșirile sunt dispozitivele care așteaptă un semnal/dată de la PLC pentru a efectua
funcțiile de control. Semnalizările luminoase, hupele, motoarele și valvele sunt toate
bune exemple de dispozitive de ieșire.
Exemplu
Un dispozitiv de fixare a becului deasupra (o dulie cu bec deasupra) și un
întrerupător de perete cores punzător acestuia sunt foarte bune exemple pentru orice
intrare sau ieșire. Întrerupătorul de perete este o intrare – el furnizează un semnal
către bec pentru a fi aprins. Becul de deasupra este o ieșire – el așteaptă până când
întrerupătorul trimite un se mnal înainte să fie aprins.

MICROCONTROLERE
– 5 –

Figura III-3. Exemplu de intrare (întrerupător) și ieșire (bec)

Există două tipuri de bază de dispozitive de intrare/ieșire:
 Discrete;
 Analogice.

Dispozitivele discrete sunt i ntrările și ieșirile care au doar două stări: deschis și
închis. Ca un rezultat, ele trimit/primesc semnale simple de la /către PLC. Aceste
semnale constau doar din 1 sau 0. Un 1 înseamnă că dispozitivul este deschis iar 0
înseamnă că dispozitivul este înc his.
Dispozitivele analogice sunt intrările/ieșirile care pot avea un număr infinit de stări.
Aceste dispozitive nu pot fi doar deschis și închis, dar pot fi de asemenea total
aproape deschis, nu chiar închis, etc. Aceste dispozitive primesc/trimit semnal e
complexe la/de la PLC.

IV IEC 61131 un standard pentru PLC -uri

Standardul internațional IEC 61131 se aplică controlerelor programabile
(denumite și automate programabile) – PLC (Programmable Logic Controller) și
perifericelor asociate cum ar fi instrume ntele de programare și depanare, HMI
(Human Machine Interface – Interfața om – mașină), etc. a căror scop constă în
utilizarea acestora în controlul și comanda mașinilor și a proceselor industriale.
Standardul are mai multe părți din care IEC 61131 -3 poate fi considerată partea
principală.
IEC 61131 -3 reprezintă partea a 3 -a a standardadului IEC 61131 și, spre
beneficiul utilizatorilor de PLC -uri, standardizează cinci dintre cele mai utilizate
limbaje de programare a PLC -urilor și anume:
 LD – Ladder diagra m (grafic),
 FBD – Function Block Diagram (grafic),
 IL – Instruction list (text),
 ST – Structured text (text),
 SFC – Sequential Function Chart.

Notă: Standardul definește ca limbaje de programare doar primele 4, SFC -ul fiind
definit pentru structurarea org anizării interne a programelor și a blocurilor funcție
pentru controlerele programabile.

MICROCONTROLERE
– 6 – IV.1 Diagrama Funcțională Secvențială (SFC)

Diagrama Funcțională Secvențială – SFC, este un formalism grafic foarte
expresiv al standardului IEC 1131 -3. Nu poate fi cons iderat un limbaj complet după
cum cer instrucțiunile de la celelalte limbaje pentru a scrie un POU complet. Oricum,
pentru rolul său important în dezvoltarea codului reutilizabil, utilizarea sa este
studiată și discutată profund în paragraful următor. Defi nițiile SFC sunt derivate de la
primitivele Grafcet cu schimbările necesare pentru a defini un set de elemente de
control al execuției pentru POU -uri.
SFC furnizează o modalitate pentru împărțirea POU -ului într -un set de pași și
tranziții interconectate de legături directe . Asociat cu fiecare pas este un set de
acțiuni și cu fiecare tranziție o condiție de tranziție . De vreme ce elementele SFC
solicită păstrarea informației despre stare, singurele POU -uri care pot fi structurate
folosind aceste elemente sunt blocurile funcție și programele (nu funcțiile).

Pași și tranziții

Un pas reprezintă o situație în care comportamentul unui POU cu respectarea
intrărilor și ieșirilor sale, urmează un set de reguli definite de acțiunile asociate
pasului. Un pas este fie activ, fie inactiv. La orice moment dat, starea POU este
definită de valorile variabilelor sale interne și de ieșire și de setul pașilor activi. Un
pas este reprezentat grafic de un bloc conținând un nume al pasului de forma unui
identificator sau tex tual de o construcție STEP…END_STEP (vezi Figura IV-1).

Figura IV-1. Reprezentarea grafică și textuală a unui pas

Indicatorul pasului (starea activă sau inactivă a unui pas) este reprezentat de
valoarea logică a variabilei Booleene S.X, unde S este numele pasului. Variabila
booleeană X ia valoarea 1 dacă pasul corespunzător este activ și valoarea 0 dacă
pasul este inactiv. În mod similar, timpul consumat S.T. al pasului S este definit ca o
varia bilă TIME. Atunci când pasul este dezactivat, valoarea timpului consumat al
pasului rămâne la valoarea pe care o avea în momentul dezactivării, în timp ce este
resetată la t#0s atunci când pasul este activat. Sfera numelor pasului, indicatorii
pasului și timpii pasului sunt locali pentru POU -ul unde apar pașii.
Starea inițială a POU este reprezentată de valorile inițiale ale variabilelor
interne, de ieșirile sale și de setul său de pași inițiali, de exemplu pașii care sunt
inițial activi. Fiecare rețea SFC sau echivalentul său textual, are exact un pas inițial,
desemnat grafic cu linii duble pentru margini. Pentru inițializarea sistemului,
indicatorul implicit al pasului inițial este FALS pentru pașii normali și ADEVĂRAT
pentru pașii inițiali.
O tranziț ie reprezintă condiția prin care controlul trece de la unul sau mai mulți
pași premergători tranziției la unul sau mai mulți pași succesori de -a lungul legăturii
corespunzătoare orientate. Direcția evoluției este de la baza pasului (pașilor)
premergător(i) spre vârful pasului (pașilor) următor. Fiecare tranziție are o condiție de Si Acțiuni Si PAS Si
(*declarațiile acțiunii*)
END_STEP

MICROCONTROLERE
– 7 – tranziție asociată care este rezultatul evaluării unei singure expresii Booleene. O
condiție a tranziției care este întotdeauna adevărată va fi reprezentată de cuvântul
cheie ADEVĂ RAT.
Legăturile care ating sau care părăsesc pașii sunt reprezentate de linii
verticale (vezi Figura IV-2). O condiție de tranziție poate fi asociată cu o tranziție prin
unul dintre următoarele mijloace:

 expresie Booleană descrisă în ST;
 rețea a diagram ei în scară a cărei ieșire intersectează legătura orientată
vertical;
 rețea în FBD a cărei ieșire intersectează legătura orientată vertical;
 rețea LD sau FBD a cărei ieșire intersectează legătura orientată vertical printr –
un conector;
 construcție TRANSITI ON…END_TRANSITION folosind ST, constând în
cuvintele cheie TRANSITION FROM urmate de numele pasului( -șilor)
premergător, cuvântul cheie TO urmat de numele pasului( -șilor) succesor,
operatorul de alocare urmat de o expresie Booleeană specificând condiția,
cuvântul cheie de încheiere END_TRASITION;
 construcție TRANSITION…END_TRANSITION folosind IL, constând în
cuvintele cheie TRANSITION FROM, urmate de numele pasului( -șilor)
premergător și de două puncte, cuvântul cheie TO urmat de numele pasului( –
șilor) succesor, o listă de instrucțiuni în limbajul IL determinând condiția de
tranziție, cuvântul cheie de încheiere END_TRANSITION;
 un nume al tranziției asociat cu legătura orientată, referitor la o construcție
TRANSITION…END_TRANSITION, a cărei evaluare re zultă din alocarea unei
valori Booleene pentru variabila denotată de numele tranziției și a cărui
conținut este o rețea în limbajul LD sau FBD, o listă cu instrucțiuni în limbajul
IL sau o alocare a unei expresii Booleene în limbajul ST.

Valabilitatea unui nume al tranziției este locală pentru POU -ul în care tranziția
este localizată. Nici un “efect secundar” (de exemplu alocarea unei valori unei
variabile, alta decât numele de tranziție) nu poate avea loc în timpul evaluării unei
condiții de tranziție.

Figura IV-2. Reprezentarea grafică și textuală a unei tranziții

Acțiuni

Zero, una sau mai multe acțiuni vor fi asociate cu fiecare pas. Un pas care are
zero acțiuni asociate este considerat ca a vând o funcție WAIT, ceea ce înseamnă că
se așteaptă ca următoarea condiție de tranziție să devină adevărată. O declarație a
acțiunii constă în numele acțiunii (de tip șir) și conținutul acțiunii. Conținutul acțiunii TRANSITION Tij:
(*condiția tranziției*)
END_TRANSITION Tij

MICROCONTROLERE
– 8 – poate fi o variabilă Booleană, o colecț ie de instrucțiuni în IL, o colecție de formulări în
ST, o colecție de trepte (pași orizontali) în LD, o colecție de rețele în FBD sau o
diagramă a funcționalității secvențiale (SFC) la rândul său. Acțiunile sunt declarate și
apoi asociate cu pași prin con ținuturile textuale ale corpului acținii sau prin blocuri
grafice ale acțiunii. Valabilitatea declarației unei acțiuni este locală pentru POU -ul
care conține declarația.
Controlul acțiunilor este exprimat de calificativi ai acțiunii. Valoarea
calificativ ului acțiunii este una dintre cele enumerate în tabelul următor. Calificativii
specifică ce acțiuni trebuie să fie executate în fiecare ciclu de execuție, în relație cu
stările pașilor asociați lor. Acțiunile normale (N sau non -calificative) sunt executate în
mod continuu în timp ce pașii asociați lor sunt activi. Calificativii L, D, SD, DS și SL
solicită o durată asociată de tip TIME. Vezi paragraful următor pentru mai multe
explicații asupra calificativilor acțiunii.

Calif. Definiție Efectul asupra acțiunii

N Ne-stocat execută în timp ce pasul asociat este activ
P Impuls execută când pasul asociat este activat
S Setare execută până când calificativul relativ R este
intersectat
R Inițializare termină execuția stocată (S)
L timp Limitat termină execuția după un timp dat
D timp Întârziat începe execuția după un timp dat
SD Stocat și timp Întârziat începe execuția S după un timp dat
DS timp Întârziat și Stocat începe execuția S dacă pasul durează un
timp dat
SL Stocat și timp Limitat începe execuția S și termină după un timp
dat
P1 Puls front crescător
P0 Puls front căzător

Regulile de evoluție ale SFC

Situația inițială a unei rețele SFC este caracterizată de pasul inițial care este în
starea inactivă după inițializarea programului sau a blocului funcție care conține
rețeaua. Evoluția stărilor active ale pașilor are loc de -a lungul legăturilor orientate
când este cauzată de validarea uneia sau a mai multor tranziții. O tranziție este
validată atunci când toți pașii precedenți, conectați la simbolul tranziției
corespunzătoare prin legături orientate, sunt activi. Execuția unei tranziții are loc
atunci când tranziția este validată și când condiția tranziției asociate este adevărată.
Activarea un ei tranziții cauzează dezactivarea tuturor pașilor imediat
precedenți conectați la simbolul tranziției corespunzătoare prin legături orientate,
urmată de activarea tuturor pașilor imediat următori. Timpul de activare a unei
tranziții poate fi considerat, t eoretic, cât de scurt se dorește, dar nu poate fi niciodată
zero. În practică, timpul de activare va fi impus de implementarea controlerului
programabil. Pentru același motiv, durata activității unui pas nu poate fi niciodată
considerată a fi zero. Câteva tranziții care pot fi activate simultan vor fi în prezent
activate respectând limitările de timp ale controlerului programabil particular.
Testarea condiției( -iilor) următoarei tranziții a unui pas activ este efectuată până când
efectele activării pasului se vor propaga peste tot POU -ul unde pasul este declarat.

MICROCONTROLERE
– 9 –
Divergență și convergență

Divergența este o legătură cu conectare multiplă de la un simbol SFC (pas
sau tranziție) spre multe alte simboluri SFC de tip opus. Convergența este o legătură
cu conec tare multiplă de la mai mult de un simbol SFC de același tip spre un alt
simbol de tip opus. Divergența și convergența pot fi individuale sau duble.

Figura IV-3, Schema SFC cu diverge nța și convergența

O divergență individuală este o legătură multiplă de la un pas spre mai multe
tranziții. După cum vom discuta în paragraful următor, doar o condiție de tranziție, a
tranzițiilor care părăsesc pasul, devine adevărată la un moment dat, astfel încât doar
un pas devine activ în următorul ciclu de execuție. Cu toate acestea, condițiile
atașate diferitelor tranziții la începutul unei divergențe individuale nu sunt în mod
necesar exclusive, astfel încât exclusivitatea trebuie să fie asigurată fixând o
prioritate printre tranzițiile conflictuale (sau implicit, depinzând de implementarea
individuală) astfel încât doar o tranziție este activată. O convergență individuală este
o legătură multiplă de la mai multe tranziții spre același pas. O conve rgență
individuală este folosită în general pentru a grupa ramurile SFC care au fost începute
pe o divergență individuală.
Divergența și convergența individuală sunt reprezentate de linii separate
orizontale, ca în exemplul din Figura IV-3. Un salt al sec venței este un caz special al
divergenței individuale unde una sau mai multe ramuri nu conțin pași. O buclă a
secvenței este un caz special al divergenței și convergenței individuale unde una sau
mai multe ramuri se întorc la un pas precedent.
O divergenț ă dublă (sau divergență simultană) este o legătură multiplă de la o
tranziție la mai mulți pași. Aceasta corespunde operațiilor paralele ale procesului,
numite și secvențe simultane . Divergența dublă este executată atunci când pasul
SFC precedent este acti v și condiția de tranziție devine adevărată. După divergență,
1
2 Pornirea motorului M1
3 Pornirea Timer -ului
4 Oprirea motorului M1 1
2
3
4 Run & nu Error
M1 pornit
Timer >t#3s
Tix 101 Alarmă 101
102 Eroare
Confirmare

MICROCONTROLERE
– 10 – toate secvențele simultane și -au activat pașii inițiali. O convergență dublă (sau
simultană) este o legătură multiplă de la mai mulți pași spre aceeași tranziție. Este
folosită în general pentru a grupa ramurile SFC pornite la o divergență dublă.
Convergența dublă este executată atunci când toți pașii simultani care o preced sunt
activi și următoarea condiție de tranziție este adevărată. După convergență, pașii
activi precedenți sunt dezactivați și un singur pas al schemei SFC este din nou activ.
Divergența și convergența dublă sunt reprezentate de linii duble orizontale, ca
în exemplul din Figura IVIII-4. Criterii pentru o utilizare corectă a secvențelor
simultane sunt propuse în paragraful urmă tor, împreună cu analiza celor mai
frecvente erori de modelare.

Figura IV-4. Schema SFC cu divergență și convergență dublă

IV.2 Textul Structurat (ST)

Textul Structurat este unul dintre cele d ouă limbaje textuale din cadrul
standardului IEC 1131 -3, celălalt fiind limbajul Lista de Instrucțiuni. Standardul
definește elemente textuale comune limbajelor textuale, printre care:
 Declarații tip;
 Declarații variabile;
 Declarații ale pasului SFC, al e tranziției și acțiunii;
 Declarații ale funcției și ale blocurilor funcție.
ST este un limbaj structurat de nivel înalt, similar cu Pascal și C, proiectat
pentru procesele automate de programare. Acest limbaj este folosit în special pentru
a implementa p roceduri complexe care nu pot fi exprimate ușor cu limbaje grafice.
ST este limbajul implicit pentru descrierea acțiunilor din cadrul pașilor și condițiilor
atașate tranzițiilor limbajului SFC.
Nu se v -a insista cu acest limbaj deoarece el nu va fi folos it în cadrul
laboratorului.

1 Inițializare
2 Proces 1
3 Așteptarea Procesului 2 1
2
3 Run
Finalul Procesului 1 101 Proces 2
101 Finalul Procesului 2
Adevărat 102 Așteptarea Procesului 2

MICROCONTROLERE
– 11 – IV.3 Lista cu instrucțiuni (IL)

Lista cu instrucțiuni este un limbaj de nivel jos, similar cu limbajul de
asamblare, foarte eficient pentru aplicațiile mai mici sau pentru optimizarea părților
unei aplicații. Instrucțiunile sunt tot timpul raportate la rezultatul curent (sau registrul
IL) și sunt determinate de un operator, care indică operația care trebuie făcută între
valoarea curentă și operand. Rezultatul operației este păstrat din nou în rezultatul
curent.
Nu se v -a insist a cu acest limbaj deoarece el nu va fi folosit în cadrul
laboratorului.

IV.4 Diagrama în scară (LD)

Diagrama în scară (LD) este o reprezentare grafică a ecuațiilor Booleene,
combinând contacte (argumente de intrare) cu coil (rezultate de ieșire). Limbajul L D
permite descrierea testelor și a modificărilor datelor Booleene plasând simboluri
grafice în schema programului. Simbolurile grafice LD sunt organizate în interiorul
graficului într -un mod similar cu o “treaptă” a diagramei cu contacte electrice.

Figura IV-5. Exemplu de diagramă în scară (diagramă cu contacte)

O diagramă LD este limitată în partea dreaptă și stângă de linii verticale,
numite șina (bară de alimentare, magistrală) din stânga și respectiv șina din dreapta ,
după cum este arătat în Figura IV.5. Simbolurile grafice ale diagramei LD sunt
conectate la șine sau la alte simboluri prin linii de conectare , numite și legături . Liniile
de conectare sunt orizontale sau verticale. Componentele grafice de bază ale unei
diagrame LD sunt rezumate în Figura IV-6.

Figura IV-6. Componentele grafice de bază ale LD
Șina din stânga
Șina din dreapta
Șina verticală din stânga

Șina (m agistrala ) verticală din dreapta

Linia de conectare orizontală

Linia de conectare verticală
Linii de conectare multiplă
(conectate toate împreună)

Contact asociat cu o variabilă
Coil asociată cu o variabilă de
ieșire sau internă

MICROCONTROLERE
– 12 – Fiecare element al legăturii are starea sa proprie, indicată de valorile
simbolului Boolean 1 (TRUE, `ON`) sau respectiv 0 (FALSE `OFF`). Starea Booleană
este aceeași pentru toate segmentele legate împreună direct. Termenul starea
legăturii este sinonim cu termenul fluxul puterii . Starea magistralei din stânga este
considerată POR NIT tot timpul. Nu este definită nici o stare pentru magistrala din
dreapta.
Un element al legăturii orizontale este indicat de o linie orizontală. Un element
al legăturii orizontale transmite starea elementului din imediata apropiere stânga
elementului din imediata apropiere dreapta. Orice linie orizontală conectată la
magistrala verticală din stânga are starea ADEVĂRAT. Un element al legăturii
verticale constă într -o linie verticală care se intersectează cu unul sau mai multe
elemente ale legăturii oriz ontale pe fiecare parte. Starea legăturii verticale reprezintă
un SAU inclusiv a stărilor ON a legăturilor orizontale pe partea stângă, ceea ce
înseamnă că starea legăturii verticale este OFF dacă stările tuturor legăturilor
orizontale atașate la stânga sa sunt OFF, în timp ce este ON dacă starea uneia sau
mai multor legături orizontale atașate la stânga sa este ON.

IV.5 Diagrama cu blocuri funcție (FBD)

FBD este un limbaj grafic pentru programarea PLC -urilor, bazat pe
interpretarea comportamentului sistemu lui în termenii fluxului de semnale dintre
elementele de procesare, analog cu fluxurile de semnal care pot fi observate în
diagramele circuitelor electronice. FBD exprimă comportamentul funcțiilor, a
blocurilor funcție și a programelor ca un set de blocuri grafice interconectate, care la
rândul lor sunt funcții sau blocuri funcție. După cum s -a anticipat deja, FBD poate fi
folosită pentru a detalia condițiile tranziției și acțiunile schemelor SFC.

Figura IV-7. Comparație între sintaxa LD și FBD

Elementele limbajului FBD vor fi interconectate de linii de flux al semnalului
urmărind convențiile stabilite în general pentru limbajele grafice. Ieșirile blocurilor
funcție nu vor fi conectate împreu nă. În particular, funcția OR exprimată ca o
conectare multiplă la dreapta, tipic pentru limbajului LD, nu este permisă în limbajul
FBD; în schimb este folosit un bloc OR Boolean explicit. Exemplul din Figura IV-7 ne
arată aceeași operație dintre variabile le Booleene (c := a OR b) în LD (a) și FBD (b). a) a
b c

OR b) a
b c

MICROCONTROLERE
– 13 – O rețea FBD descrie un proces dintre variabilele de intrare și variabilele de
ieșire, după cum este arătat în Figura IV-8. Un proces este descris ca un set de
blocuri elementare, care sunt funcții sau blocur i funcție. Variabilele de intrare și de
ieșire sunt conectate la blocuri prin linii de conectare. Detalii asupra funcțiilor și a
blocurilor funcție sunt date în finalul acestui capitol. O ieșire a unui bloc poate fi
conectată la o intrare a altui bloc.

Figura IV-8. Aspectul tipic al unei rețele FBD

Fiecare bloc are un număr fix de puncte de conectare la intrare și un număr fix
de puncte de conectare la ieșire . Un bloc este reprezentat de un si ngur dreptunghi,
ca în Figura IV-9. Intrările sunt conectate pe marginea sa stângă. Ieșirile sunt
conectate pe marginea sa dreaptă. Un bloc elementar efectuează un singur proces
între intrările și ieșirile sale. Numele procesului care trebuie efectuat de b loc este
scris în dreptunghiul de simbolizare. Fiecare intrare sau ieșire a unui bloc are un tip
bine definit.

Figura IV-9. Sintaxa blocului FBD

Variabilele de intrare ale unui program FBD trebuie conectate la punctele de
conectare la intrare ale blocurilor. Tipul fiecărei variabile trebuie să fie același ca tipul
așteptat pentru intrarea asociată. O intrare pentru diagrama FBD poate fi o expresie
constantă, orice variabilă internă sau de intrare sa u o variabilă de ieșire. Variabilele
de ieșire ale unui program FBD trebuie conectate la punctele de conectare la ieșire
ale blocurilor. Tipul fiecărei variabile trebuie să fie același ca tipul așteptat pentru
ieșirea blocului asociat. O ieșire pentru diag rama FBD poate fi orice variabilă internă
sau de ieșire.
Variabilele de intrare și de ieșire ale blocurilor funcție sunt cuplate împreună
cu liniile de conectare. Liniile individuale pot fi folosite pentru a conecta două puncte
logice ale diagramei: (i) o variabilă de intrare și o intrare a unui bloc; (ii) o ieșire a
unui bloc și o intrare a unui alt bloc; (iii) o ieșire a unui bloc și o variabilă de ieșire.
Conectarea este orientată, ceea ce înseamnă că linia duce datele asociate de la
extremitatea stâng ă la extremitatea dreaptă. Extremitatea dreaptă și cea stângă a
liniei de conectare trebuie să fie de același tip. Conectarea multiplă la dreapta poate intrări ieșiri

& intrări ieșiri
Numele funcției

MICROCONTROLERE
– 14 – fi folosită pentru a difuza o informație de la extremitatea sa stângă la fiecare dintre
extremitățile sa le drepte. Toate extremitățile conectării trebuie să fie de același tip.
O linie de conectare individuală cu extremitatea sa dreaptă conectată la o
intrare a unui bloc poate fi terminată de o Negație Booleană . Negația este
reprezentată de un cerc mic. At unci când este folosită o negație Booleană,
extremitatea stângă și cea dreaptă a liniei de conectare trebuie să fie de tip Boolean,
ca în exemplul din Figura IV-10.

Echivalența ST:
output 1 : = input 1 AND NOT (input 2) ;

Figura IV-10. Negația Booleană

Etichetele și salturile sunt folosite pentru a controla executarea diagramei. Nici
un alt element nu poate fi conectat la dreapta unui simbol salt sau etichetă. Dacă linia
de conectare la stânga simb olului salt are starea Booleană ADEVĂRAT, executarea
programului sare direct după simbolul etichetă corespunzător. Un exemplu de folosire
a salturilor este indicat în Figura IV-11.

Echivalența IL:
LD manual
AND b1
JMPC NOMODIF
… … …
NOMODIF: LD result
OR valid
ST cmd 10

Figura IV-11. Utilizarea saltului și a etichetei

Cuvântul cheie RETURN poate fi folosit pentru a ieși din diagramă. Trebuie
conectat la un punct de conectare Bo olean de ieșire a unui bloc funcție. Formularea
de întoarcere reprezintă un final condițional al programului: dacă ieșirea cutiei
conectate la formulare are valoarea Booleană ADEVĂRAT, finalul (partea care a
rămas) diagramei nu este executat. Un exemplu es te arătat în Figura IV-12.
& intrarea 1
ieșire a 1
intrarea 2

& manual
NOMODIF
b1

>=1 rezultat
valid cmd 10 NOMODIF:

MICROCONTROLERE
– 15 –

Echivalența ST:
IF auto_mode OR alarm THEN RETURN ;
END_IF ;
bo 67 : = (bi 10 AND bi 23) OR x_cmd ;

Figura IV-12. Utilizarea întoarcerii

În interiorul unui POU sc ris în limbajul FBD, ordinea evaluării rețelei urmează
regula confo rm căreia evaluarea unei rețele este completă înainte de începerea
evaluării unei alte rețele care folosește una sau mai multe dintre ieșirile rețelei
evaluate anterior.

Figura IV-13. Feedback explicit și implicit
Direcția de evaluare a unei rețele individuale este dependentă de
implementare, de obicei de la vârf la bază și de la stânga la dreapta.
OR s1
s2
& ena run
a)

OR s1
s2
& ena
run
b)
run

& ena
c)
ror
OR s1
s2 ror RETURN

& bi 10
bi 23
>=1 bo 67
x_cmd
>=1 auto_mode
alarm

MICROCONTROLERE
– 16 – O cale feedback se spune că există într -o rețea atunci când ieșirea unei funcții
sau a unui bloc funcție este folosită ca intrare pentru o funcție sau un bloc funcție
care o precede în rețea. O cale explicită feedback este o conectare dintre o variabilă
de ieșire a unui bloc dat cu o variabilă de intrare a unui bloc precedent. O cale
implicită feedback este definită atunci când aceeași variabilă este o ieșire a unui bloc
dat și o intrare a unui bloc precedent. Amintiți -vă că în limbajul LD sunt permise doar
căi implicite. Exemple de căi explicite (a) și implicite (b, c) feedback sunt arătate în
Figura IV-14.

Echivalența ST:
net_weight : = Weighing (mode, delta) ; (* call *)
IF (net_weight = 0) THEN RETURN ;
END_IF ;
weight : = net_weight + tare_weight ;

Figura IV-14. Utilizarea funcțiilor FBD

V Modul PLC EASY250

EASY250 este un modul PLC cu interf ață CANOpen (protocol de comunicație
care este folosit pe magistrala CAN) propus de firma germană Frenzel+ Berg
Electronic . Acest modul oferă o platformă optimizată pentru realizarea propriilor
module PLC având avantajul că este de dimensiuni mici și este ușor de inserat în
viitorul modul PLC. Kernelul acestui modul se află pe microcontrolerul de 16 biți
Infineon XC167. În plus un controler salve adițional pe 16 biți se ocupă cu
manipularea perifericelor.

Cântărire mode
delta
= RETURN 0

+
tare_weight weight net_weight

MICROCONTROLERE
– 17 –

Figura V-1. Modulul PLC EASY250

V.1 Caracteristici principale

 Procesor pe 16 biți (Infineon XC167), 2MB memo rie program și 1MB
memorie de date;
 Alimentare: 5V DC;
 24 de intrări digitale (5V);
 32 de ieșiri digitale (5V);
 4 encodere incrementale cu intrarea de 5V;
 2 CANOpen Master/Slave;
 Interfețe
o Interfețe seriale: 2 RS232 (izolate galvanic), 1TTL –full modem, 1T TL;
o Interfață VGA 640×480 sau i nterfață LCD grafic – 320×240/640×480 ;
o Interfață LCD text – până la 4×20 caractere;
o Interfață touc hpanel;
o Interfață pentru tastatură PS2 sau matricială(6×8);
o SPI;
o Ethernet .
 Programarea
o Suportă standardul IEC61131 -3;
o se folose ște pachetul software CoDeSys.
V.2 Kit-ul de dezvoltate EASY250 -EVA

EASY250 -EVA este un kit de dezvoltate pentru modul PLC EASY25. Acest kit
de dezvoltare suportă toate caracteristicele principale ale modului EASY250.
Funcțiile ca alimentarea modului EASY25 0, LED -uri potențiometre, switch -uri,
butoane, o tastatură matricială, drivere pentru CAN, RS232, RS485, un LCD
alfanumeric sunt deja implementate pe kit -ul de dezvoltare, deci se poate trece la
dezvoltarea aplicațiilor pe modulul EASY250.

MICROCONTROLERE
– 18 –

Figura V-2. Kit-ul de dezvoltate EASY250 -EVA

V.3 CoDeSys – mediu complet de programare pentru PLC -uri

CoDeSys este un mediu c omplet de programare pentru PLC -uri. CoDeSys
este o abordare simplă pentru limbajele de dezvol tare definite de standardul
IEC61131 -3. Folosirea editoarelor și a funcțiilor de debug este foarte asemănătoare
cu cele ale limbajelor avansate de programare (la fel ca Visual C++) .

Pentru a se arăta modul de folosire a acestui mediu de programare vom
realiza o aplicație care realizează funcția de blink pentru o ieșire digitală (această
ieșire digit ală reprezintă un led de pe kit -ul de dezvoltarea EASY250 -EVA).
Primul pas o reprezintă deschiderea aplicației din Start -> Programs -> 3S
Software -> CoDeSys V 2.3 -> CoDeSys V2.3.
Se creează un nou proiect din File -> New . Pentru „ Target settings ” se
selectează FBE: EASY250 MV.

MICROCONTROLERE
– 19 –

Figura V-3 Selectarea dispozitivului EASY250

În continuare se va cre ea un Program (de preferat în limbajul CFC) cu numele
PLC_PRG . Acest program es te foarte important deoarece el are acel ași scop ca și
funcția main din limbajul C.

Figura V-4 Crearea programului principal (PLC_PRG)

În conti nuare se vor adăuga librăriile folosite de acest program (în aceste
librării se află funcțiile bloc predefinite). Librăriile sunt adăugate din tabul Resource
opțiunea Library Manager . Pentru exemplul curent se va adăuga librăria util.lib .
În continuare în programul creat se adaugă funcția bloc BLINK (click dreapta
pe program, se selectează Add Box și pe fereastră apare funcția AND , moment în
care se schimbă textul AND cu BLINK ). De asemenea , pentru instanța funcție i bloc
se va ad ăuga și un nume. În cazul prezentat , se va da numele BLK (când se adaugă
funcția bloc deasupra ei apare „ ???? ”, se va modifica acest text cu BLK).

Figura V-5 Adăugarea funcției bloc BLINK

MICROCONTROLERE
– 20 – Funcția bloc BLIN_K are 3 intrări: ENABLE , TIMELOW (timpul pentru starea
0) și TIMEHIGH (timpul pentru starea 1). Pentru aceste intrări se vor declara 3
variabile d e intrare (una de tip BOOL și 2 de tip TIME). În figura V -6 este afișat modul
de adăugare al variabilei en_blink . Pentru a realiza aces t lucru se efectuează click
dreapta pe fereast ră iar din meniu se va alege opțiunea „Inpu t” iar ca nume se
adaugă en_blink . Ca tip se introduce BOOL iar c a valoare inițială se adaugă
valoarea TRUE.

Figura V-6 Adăugarea unei variabile de intrare

În mod analog , se adaugă variabile le de intrare time_0 și time _1 de tip TIME
cu valorile inițiale T#500ms . De asemenea , se adaugă variabila de i eșire ies_led de
tip BOOL și la adresa %QX0.0 (aceasta este adresa prim ei ieșiri digitale pentru
modulul EASY250, ieșire care este conectată la un led în cadrul kit -ului EASY250 –
EVA). Adresele pentru ieșirile și intrările digitale se pot afla din tabul Resou rce
opțiunea PLC Configuration (vezi figura V -7).

MICROCONTROLERE
– 21 –

Figura V-7 Adresele ieșirilor și intrărilor digitale

Aceste variabile sunt conectate la funcția bloc BLINK așa cum este ilustrat în
figura V -8.

MICROCONTROLERE
– 22 –

Figura V-8 Programul blink

În continuare se dorește testarea programului. Pentru acest lucru există 2
posibilități: încărcarea programului pe placă și modul simulare. Aceste moduri pot fi
selectate din meniul Online opțiunea Simulare (atunci când este bifată opțiunea
simulare prog ramul va fi rulat în modul simulare). După setarea modului de
programare se va selecta din meniul Online opțiunea Login și se apasă tasta F5
(sau opțiunea Run din meniul Online ). Pentru oprirea programului se selectează
opțiunea Logout din meniul Online . Dacă se rulează în modul online atunci pe kit -ul
de dezvoltare , pe LED-ul care va corespunde intrării digitale 1 se realiz ează funcția
de blink . În figura V -8 este ilust rat modul de afișare al variabilelor pentru modul
simulare.

V.4 Exemplu de implementare se mafor

În continuare se dorește real izarea unui semafor simplu. Astfel se aleg 3 ieșiri
digitale care vor reprezenta cele 3 culori ale semaforului. De asemenea se dorește
ca pe LCD să fie afișat timpul ( în secunde) până la schimbarea culorii. Pentru a se
putea realiza acest lucru, programul va avea 2 task -uri: unul pentru afișarea timpului
pe LCD și unul care se ocupă cu secvența de funcționare a semaforului.
Primul pas îl reprezint ă crearea proiectului în mod similar cu exemplul anterior.
Se asemenea se vo r adăuga librăriile util.lib și FBES ysTerminal1.lib .
Al doilea pas îl reprezintă declara rea variabilelor globale (variabile care pot fi
accesa te din orice modul al aplicație i). Variabilele g lobale se adaugă din tabul
Resource (din partea stângă a aplicație ). Din acest tab se selectează Global
variabiles și se adaugă următoarele variabile :
led_Verde AT %QX1.0: BOOL;
led_Galben AT %QX1.1: BOOL;
led_Rosu AT %QX1.2 : BOOL;
timp_verde : BYTE := 15;
timp_galben : BYTE := 2;

MICROCONTROLERE
– 23 – timp_rosu : BYTE := 15;
timp_ramas :BYTE;

Următorul pas îl reprezintă crearea unei funcții bloc WAIT . Această fu ncție
bloc se adaugă din tabul POUs + click dreapta și se selectează Add Object . Din
ferea stra care este afișată se selectează o pțiunea Func tion Block și limbajul IL.
În această funcție bloc se introduce codul din figura V -9.

Figura V-9 Funcția block WAIT

Funcția bloc WAIT are ca intrare TIMPUL cât se așteaptă și ca ieșire o
variabilă de tip BO OL care indică dacă timpul de intrare s -a scurs.
Următorul pas îl reprezintă crearea programului care realizează secvența
semaforului. Astfel , din tabul POUs se adaugă un pr ogram cu numele semafor și cu
limbajul SFC. Programul care va fi real izat este afișat în figura V -9. În ace st program
se vor ad ăuga 3 stări: verde, galben și roșu iar la condiția de tranziție între 2 stări va
fi TRUE. Pentru fiecare stare în parte se va introduce cod în limbajul ST. Astfel ,
pentru starea verde se va introduce codul:
timp_ramas := timp_verde;
led_Verde := TRUE;
REPEAT

REPEAT
DELAY(TIME_IN:= t#1S);
UNTIL delay.OK
END_REPEAT

timp_ramas := timp_ramas – 1;
UNTIL timp_ramas = 0

MICROCONTROLERE
– 24 – END_REPEAT
led_Verde := FALSE;

Figura V-10 Programul Semafor
Pentru starea galben se va introduce codul:
timp_ramas := timp_galben;
led_galben := TRUE;
REPEAT
REPEAT
DELAY(TIME_IN:= t#1S);
UNTIL delay.OK
END_REPEAT
timp_ramas := timp_ramas – 1;
UNTIL timp_ramas = 0
END_REPEAT
led_galben := FALSE;

Pentru starea roșu se va introduce codul:
timp_ramas := timp_rosu;
led_rosu := TRUE;
REPEAT
REPEAT
DELAY(TIME_IN:= t#1S);
UNTIL delay.OK
END_REPEAT

MICROCONTROLERE
– 25 – timp_ramas := timp_ramas – 1;
UNTIL timp_ramas = 0
END_REPEAT
led_rosu := FALSE;

Până acum a fost realizată parte de secv ența a semaforului. În programul
PLC_PRG se v or introduce blocurile din figura V -11. Acest cod este util pentru
realizarea afișării timpului rămas până la schimbarea culorii semaforului.

Figura V-11 Afișar ea timpului rămas pe afișor

În continuare se va seta ca aplicația să funcționeze cu 2 task -ri. Pentru acest
lucru din tabul Resource din Task configuration se mai adaugă un task cu setările
din figura V -12 (acest task va executa programul semafor).
În co ntinuare se poate testa acest program atât în modul simul are cât și
online.

MICROCONTROLERE
– 26 –

Figura V-12 Setările pentru cel de -al doilea task

VI Echipamente și dispozitive folosite

Pentru buna desfășurare a lucrării se v or folosi următoarele dispozitive și resurse
software
Modul Frenzel+Berg PLC EASY250 1
Kit de dezvoltare Frenzel+Berg EASY250 -EVA 1
Packetul software CoDeSys 10

TEME
1. Se va studia conceptul de PLC .
2. Se va realiza exemplu l blink.
3. Se va realiza exemplu l semafor .
4. Se va dezvolta exemplu se mafor prin ad ăugarea unui semafor nou (se
consideră c ă primul semafor este pentru drumul 1 iar al doilea semafor este
pentru drumul 2 conform figurii VI -1). Cele 2 semafoare trebuie să fie
sincronizate.

MICROCONTROLERE
– 27 –

Figu ra VI-1

Similar Posts