Sunteți pe pagina 1din 21

AUTOMATE PROGRAMABILE

1. Introducere

Un programator, cunoscut şi sub abrevierea PLC (Programmable Logic

Controller), reprezintă, conform standardului EN 61131-1 (IEC 61131-1), un „sistem electronic digital destinat mediului industrial ce include în structura sa o memorie programabilă pentru stocarea internă a instrucţiunilor utilizator care implementează funcţii specifice (logice, secvenţiale, de temporizare, numărare sau aritmetice) în vederea controlului diverselor tipuri de maşini sau procese industriale prin intermediul intrărilor şi ieşirilor digitale sau analogice”. Conform acestei definiţii, un programator reprezintă practic un sistem de calcul destinat realizării aplicaţiilor de control specifice mediului industrial. Faţă de sistemele de control clasice cu relee, utilizarea programatoarelor oferă o serie de avantaje, printre care se menţionează:

- programare simplă;

- posibilitatea modificării programelor fără a fi necesară intervenţia în sistem (reconfigurarea cablajelor);

- dimensiuni reduse, preţ avantajos şi fiabilitate sporită faţă de cazul sistemelor cu relee clasice;

- întreţinere uşoară, realizată cu costuri rezonabile.

Iniţial, rolul unui programator consta în furnizarea unui semnal de ieşire boolean (1 – adevărat sau 0 - fals) corespunzător unui set de semnale de intrare de asemenea booleene, pe baza unui program furnizat de către utilizator. În timp, funcţionalitatea unui asemenea sistem s-a dezvoltat permanent, astfel încât în prezent temporizarea, numărarea, setarea şi resetarea memoriei, efectuarea de calcule matematice constituie posibilităţi oferite de orice PLC din generaţia actuală. Interconectarea între programatoare sau conectarea unui programator la calculatorul de tip master se realizează prin intermediul unor interfeţe speciale de comunicaţii, în general standardizate. Datorită performanţelor lor sporite, sistemele PLC avansate pot inclusiv să-şi asume rolul calculatorului de tip master. În prezent, programatoarele dispun, pe lângă intrări şi ieşiri binare, şi de intrări şi ieşiri analogice, ca o consecinţă a numărului crescut de aplicaţii industriale ce necesită procesarea analogică a semnalului (măsurarea forţei, reglarea vitezei, sisteme de poziţionare servopneumatice). Totodată, achiziţia sau furnizarea de semnale analogice permit compararea acestora cu un set de valori de referinţă şi deci autoreglarea sistemelor deservite de PLC. Structura unui programator este prezentată în figura 1.

1

Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte

Fig.1

Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de
Fig.1 Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de

Modulul de intrare are rolul de a converti semnalele de intrare în semnale apte de a fi procesate de către PLC şi de a le transmite unităţii centrale de control. Modulul de ieşire îndeplineşte sarcina inversă, respectiv convertirea semnalelor furnizate de programator în semnale de comandă pentru actuatorii din sistem. Prelucrarea semnalelor este efectuată de unitatea centrală de control pe baza programului software înmagazinat în memorie. Programarea unui PLC poate fi realizată în mai multe moduri:

- prin intermediul comenzilor scrise în limbajul de programare Statement List (STL), asemănător limbajului de asamblare;

- prin intermediul limbajelor de programare dedicate;

- prin intermediul limbajelor de programare grafice.

În funcţie de modul în care unitatea centrală de control este conectată la modulele de intrare, respectiv ieşire, se disting programatoare realizate în structură compactă (la care modulul de intrare, unitatea centrală de control şi modulul de ieşire sunt dispuse în aceeaşi carcasă) şi programatoare cu structură modulară. Acestea din urmă pot fi configurate individual, în funcţie de aplicaţia dorită, iar interconectarea poate fi realizată atât prin amplasarea în aceeaşi carcasă cât şi prin intermediul magistralelor de comunicaţii. O soluţie promovată în ultimii ani o constituie proiectarea programatorului pe baza tehnologiei circuitelor imprimate dispuse în aceeaşi carcasă standardizată. În toate situaţiile, realizarea hardware trebuie să permită utilizarea

programatorului în condiţii specifice mediului industrial: zgomot, temperaturi înalte, umiditate, fluctuaţii ale semnalului de alimentare, şocuri şi vibraţii. Utilizarea tot mai răspândită a dispozitivelor de tip PLC a condus la necesitatea standardizării acestora, precum şi a dispozitivelor periferice asociate (instrumente de programare şi diagnoză, echipament de testare, interfeţe om- maşină). În consecinţă, în anul 1992 a fost elaborat standardul EN 61131 (IEC 61131), care îşi propune să definească şi să standardizeze concepţia şi rolul funcţional al unui programator, precum şi limbajele de programare asociate.

2

2. Prezentarea programatorului

În figura 2 este prezentat un programator FEC („Front End Controller”), fabricat de firma FESTO ce are în structura sa:

- un procesor: AMD 186 20 MHz (compatibil Intel 80186);

- o memorie program: flash 256 kB x 16 biţi (>100.000 cicluri citire / scriere);

- o memorie de lucru: SRAM 256 kB x 16 biti;

- o memorie de date: 32 kB (date permanente 2 kB în memoria flash).

Acest echipament are 12 intrări digitale ce formează două grupuri, de 8 respectiv 4 intrări. În interiorul programatorului toate intrările dintr-un grup sunt conectate la un nod comun:

- primele 8 la S 0 ;

- ultimele 4 la S 1 .

În exemplul anterior:

- senzorii de tip PNP – se conectează la intrările din prima grupă (deoarece S 0 a fost conectat la 0V);

- senzorii de tip NPN – se conectează la intrările din cea de-a doua grupă (deoarece S 1 a fost conectat la 24V). Ieşirile automatului luat ca exemplu sunt în număr de 8, dispuse în 3 grupuri, fiecare grup fiind conectat la câte un nod comun: C 0 , C 1 şi C 2 . Cele trei noduri pot fi alimentate cu tensiuni diferite, în funcţie de aplicaţie. La comanda de activare a unei ieşiri releul acestuia se închide, la bornele ieşirii fiind disponibili 24 V. Pentru protecţia la scurtcircuit a releelor de ieşire se pot monta siguranţe fuzibile (Ssig) între sursele de tensiune şi bornele C 0 , C 1 şi C 2 . Tot pentru protecţia releelor la sarcini inductive semnificative, se pot monta în paralel cu fiecare releu diode Zener. Aceste măsuri au rolul de a prelungi viaţa programatorului, dat fiind faptul că releele sunt cele mai sensibile componente ale acestuia. Automatul programabil se poate conectat la un PC printr-un cablu, de cele mai multe ori prin portul serial RS 232. Sistemul de calcul trebuie să aibă instalat un pachet de produse software dedicat pentru programarea PLC-urilor. La nivelul sistemului de calcul se scrie programul de lucru, care apoi este transferat în memoria PLC-ului.

3

S1 S1 ……… S3 24V 0 V I0.0 I0.1 I0.2 I0.3 I0.4 I0.5 I0.6 I0.7
S1
S1
………
S3
24V
0 V
I0.0
I0.1
I0.2
I0.3
I0.4
I0.5
I0.6
I0.7
S0
I1.0
I1.1
I1.2
I1.3
S1
Ssig
AUTOMAT PROGRAMABIL
L
N
O0.0
O0.1
O0.2
O0.3
C0
O0.4
O0.5
C1
O0.6
O0.7
C2
220 V
D1
R1
………

Fig.2

3. Prezentarea mediului de programare

Mediul de programare folosit este FST - Festo Software Tools; acesta a fost dezvoltat de firma FESTO pentru mai multe tipuri de automate programabile şi calculatoare industriale. Principala caracteristică a acestui mediu este prezenţa unui sistem de meniuri standard pentru toate variantele în care este disponibil. Diferitele variante ale acestui software depind de automatul programabil căruia softul îi este destinat. Mediul de programare FST a fost conceput astfel încât să fie instalat pe un sistem de calcul obişnuit. Pentru FEC sunt disponibile limbajele de programare Statement List (STL) şi Ladder Diagram (LDR).

4

O noţiune pe care o introduce acest mediu de programare este aceea de proiect, care este o unitate de control a programelor; el poate conţine unul sau mai multe programe şi blocuri de funcţii. Pe lângă programe, un proiect poate conţine o listă de alocare şi un text cu documentaţia proiectului. În consecinţă, pentru fiecare nouă aplicaţie de automatizare se impune crearea unui nou proiect. În cele ce urmează se vor prezenta principalele elemente ale mediului de programare FST.

3.1. Operanzi

Variabilele de programare (operanzii) mediului FST desemnează locaţii de memorie, intrări, ieşiri, temporizatoare, numărătoare etc. Aceşti operanzi reprezintă numele resurselor sistemului şi utilizarea lor în cadrul unui program constituie unica modalitate de accesare a acestor resurse. În funcţie de dimensiunea lor există două tipuri de operanzi:

- de un singur bit (SBO – single bit operands);

- de mai mulţi biţi (MBO – multibit operands).

Operanzii de un bit pot fi evaluaţi ca adevăraţi sau falşi şi pot fi modificaţi din 0 în 1 logic sau invers. Evaluarea şi modificarea lor se realizează cu ajutorul unor instrucţiuni specifice. În timpul interogării şi modificării operanzilor de un bit,

aceştia se încarcă într-un registru special de un bit al procesorului, numit Single Bit Accumulator (SBA). Operanzii multibit sunt acele resurse care se pot accesa într-un octet (8 biţi) sau cuvânt (word, 16 biţi) şi care reprezintă numere întregi. Ei pot varia în domeniile:

-

-

-

0

0

-32767

255,

pentru un octet;

65535,

pentru un cuvânt reprezentat ca un număr întreg fără semn;

32767,

pentru un cuvânt reprezentat ca număr întreg cu semn.

Valoarea unui asemenea operand poate fi testată prin comparare (>, < etc.) cu valori constante sau cu alţi operanzi multibit. În momentul modificării, operanzii MBO sunt încărcaţi într-un registru special al procesorului, numit Multi Bit Accumulator (MBA). Intrările, în număr de 12, au fost grupate în două cuvinte, adresa unei intrări fiind notată cu litera “I”, urmată de numărul unui cuvânt şi de numărul bitului din structura acestui cuvânt, cele două numere fiind separate prin punct. La configurarea intrărilor şi ieşirilor se stabilesc numerele cuvintelor pe care utilizatorul doreşte să le folosească pentru desemnarea adreselor absolute ale intrărilor şi ieşirilor automatului programabil. Dacă se alege pentru intrare, ca adresă a primului cuvânt, numărul 0, atunci în programe intrările vor fi accesate cu notaţiile: I0.0, I0.1, I0.2, I0.3, I0.4, I0.5, I0.6, I0.7, I1.0 I1.1, I1.2, I1.3;

cuvintele de intrare pot fi accesate direct cu operanzii IW0, IW1. Ieşirile sunt în număr de 8; astfel, alegând spre exemplu ca adresă a cuvântului de ieşire numărul 0, în programe ieşirile programatorului vor fi accesate cu

5

notaţiile: O0.0, O0.1, O0.2, O0.3, O0.4, O0.5, O0.6, O0.7; există şi posibilitatea adresării tuturor ieşirilor (întregului cuvânt de ieşire) prin operandul OW0. Temporizatoarele reprezintă tipuri speciale de date constituite din trei operanzi. Pentru cazul programatorului FEC sunt disponibile 256 temporizatoare, numerotate de la 0 – 255. Referindu-ne la temporizatorul numărul n, acesta poate fi accesat prin următorii operanzi:

1. Tn Timer Status, este un operand de un bit care reprezintă starea temporizatorului n; el poate fi interogat în orice moment pentru stabilirea stării logice - IF Tn THEN ….,; de asemenea el poate fi activat sau dezactivat cu instrucţiunile SET Tn respectiv RESET Tn;

2. TPn - Timer Preselect, este un operand multibit (16 biţi) care reprezintă valoarea setată pentru temporizatorul n de utilizator în unităţi de timp (o unitate de timp are valoarea de o sutime de secundă). Setarea unei valori în TPn se face explicit cu o instrucţiune de încărcare, aşa cum se arată în exemplul următor:

LOAD

V200

TO

TP2.

Prin această instrucţiune se încarcă valoarea 200 (2 secunde) în temporizatorul T2.

3. TWn Timer Word, este un operand multibit (16 biţi) care reprezintă

valoarea curentă a temporizatorului; la activarea temporizatorului, valoarea TPn se va încarcă automat în TWn; acest număr va fi apoi decrementat la fiecare impuls de ceas; când TWn a ajuns la zero timpul programat a expirat. Numărătoarele sunt de asemenea tipuri de date constituite din trei operanzi ce pot fi utilizate pentru înregistrarea în timp a unui număr de evenimente; sunt disponibile tot 256 numărătoare de tip incremental. Cei trei operanzi prin care poate fi accesat un numărător n sunt:

1. Cn Counter Status – este un operand de un bit în care se memorează starea numărătorului n; acest operand poate fi interogat în partea condiţională a oricărei linii a programului; el poate fi activat sau dezactivat cu instrucţiunile SET Cn şi RESET Cn;

2. CPn Counter Preselect – este un operand multibit de un cuvânt în care se încarcă valoarea setată de utilizator; acest operand rămâne neschimbat în timpul numărării; schimbarea valorii lui se efectuează o singură dată, la iniţializare;

3. CWn Counter Word – este un operand multibit de un cuvânt în care se

găseşte valoarea curentă a numărătorului n. Incrementarea acestei valori se realizează cu instrucţiunea INC CWn. Toţi operanzii descrişi mai sus sunt operanzi absoluţi. Mediul FST permite asocierea unor nume simbolice datelor din memorie, nume simbolice ce reprezintă şiruri de caractere folosite în timpul programării pentru a substitui operanzii absoluţi. În acest fel, programarea aplicaţiilor mai complexe se poate

6

realiza mai uşor, numele simbolice fiind asociate cu echipamente şi acţiuni familiare utilizatorului. Numele simbolice se numesc operanzi simbolici şi pot fi formate din 9 caractere alfanumerice, la care se adaugă caracterul “_”. Numele simbolice nu trebuie să înceapă cu o cifră şi nu trebuie să conţină spaţii libere. Definirea acestor operanzi simbolici se realizează în cadrul unei liste de alocare; aceasta poate fi creată înainte de scrierea programului, existând şi posibilitatea de a introduce noi elemente în listă în timpul programării. Principalul avantaj al utilizării listei de alocare constă în scrierea şi înţelegerea mai rapidă a programelor. Un al doilea avantaj se referă la necesitatea reactualizării unui program în cazul în care s-au efectuat mici modificări în ordinea semnalelor de intrare sau de ieşire. Astfel, dacă se utilizează nume simbolice, programul-sursă poate să rămână neschimbat, modificările fiind operate doar la nivelul listei de alocare.

3.2. Limbajul Ladder Diagram - LDR

Ladder Diagram este un limbaj de programare grafic. Un program scris cu acest limbaj este asemănător cu diagrama unui circuit electric de tip american. Avantajele acestui limbaj de programare sunt:

- întrucât este un limbaj grafic, este uşor de învăţat;

- programele pot fi scrise şi modificate cu uşurinţă. Structura unui program (fig.3) este formată din:

- ramuri principale - “rungs“;

- ramuri paralele - “branches“.

Contact ND Ramura principala Contact NI Spira Ramuri paralele Partea de executie Partea conditionala
Contact ND
Ramura principala
Contact NI
Spira
Ramuri paralele
Partea de executie
Partea conditionala

Fig.3

Fiecare ramură principală are o parte condiţională şi o parte de execuţie. În partea condiţională există uzual unul sau mai multe contacte normal închise sau normal deschise, în timp ce la nivelul părţii condiţionale poate exista o bobină - “coil“ sau mai multe cuplate în paralel. Fiecare element – contact sau bobină –

7

necesită cel puţin un operand. Dacă acesta lipseşte, atunci programul va avea erori care vor fi evidenţiate la compilare. În partea condiţională se evaluează o funcţie logică definită de utilizator cu ajutorul contactelor şi/sau al casetelor de comparaţii logice. Partea de execuţie se declanşează atunci când partea condiţională a fost evaluată ca fiind adevărată, adică “1“ logic. Casetele de comparaţie (fig.4) permit comparaţii cu rezultat logic (adevărat sau fals) între operanzi multibit. Sunt folosite frecvent pentru evaluarea numărătoarelor (fig.5).

folosite frecvent pentru evaluarea numărătoarelor (fig.5). Fig.4 Există 6 tipuri de comparaţie: =, > , <,

Fig.4

Există 6 tipuri de comparaţie: =, >, <, , , <>. La intrările în casetă sunt specificaţi cei doi operanzi care se compară. Valoarea lor este comparată conform simbolului din casetă, iar valoarea de adevăr se transmite mai departe în partea condiţională.

adevăr se transmite mai departe în partea condiţională. Fig.5 Contactele conectate diferite echipamente care au

Fig.5

Contactele

conectate diferite echipamente care au două stări de funcţionare, şi anume:

sunt

asociate

intrărilor

automatului

programabil,

unde

pot

fi

- contacte ale releelor din sistem;

- contactele butoanelor de comandă;

- contactele limitatoarelor de cursă;

- contacte ale detectoarelor de mărimi fizice;

- contacte ale echipamentelor de protecţie din sistem;

- ieşirile digitale ale unor aparate de măsură;

- ieşirile digitale ale altor automate programabile sau sisteme de comandă.

8

Bobinele sunt asociate ieşirilor automatului programabil, dar şi unor variabile interne (operanzi multibit). În exemplul de figura 6, dacă condiţia este îndeplinită:

exemplul de figura 6, dacă condiţia este îndeplinită: Fig.6 - se realizează " Execuţie 1 "

Fig.6

- se realizează "Execuţie 1" atâta timp cât condiţia este îndeplinită;

- "Execuţie 2" este întreruptă atâta timp cât condiţia este îndeplinită;

- se iniţializează "Execuţie 3"; aceasta rămâne activată chiar dacă condiţia nu mai este îndeplinită;

- se întrerupe "Execuţie 4"; acesta rămâne în această stare chiar dacă condiţia nu mai este îndeplinită;

- se realizează incrementarea unui operator multibit cu +1;

- se realizează decrementarea unui operator multibit cu -1.

Observaţie: comanda de incrementare se execută doar când starea logică a părţii condiţionale trece din “0" logic în “1“ logic, adică numai pe frontul crescător al

semnalului “Condiţie“. La ieşirile automatului programabil pot fi conectate echipamente care au două stări de funcţionare, de exemplu:

- bobinele releelor din sistemul deservit de automat;

- echipamente de semnalizare acustică sau luminoasă;

- intrările digitale ale unor aparate de măsură, protecţie sau comandă;

- intrările digitale ale altor automate programabile sau sisteme de comandă. Logica de procesare a unui automat programabil este următoarea:

- programele sunt executate în ordine, ramură după ramură, de sus în jos; - când ramura este simplă – fără conexiuni în paralel – partea condiţională se evaluează de la stânga la dreapta, după care se realizează partea de execuţie;

9

- când există conexiuni de tip SAU în partea condiţională (conexiuni în paralel) este realizată mai întâi evaluarea acestora;

- când în partea de execuţie există conexiuni în paralel acestea se execută de sus în jos;

- după executarea programului, acesta se reia.

Ramurile principale sunt numerotate în mod automat de către mediul de programare. Din acest motiv există o secvenţă clară de procesare a unui program. Înainte de încărcarea programului în automat programul este translatat în cod maşină cu ajutorul unui program special numit compilator. Instrucţiunile cuprinse în ramuri sunt translatate consecutiv, conform numerotării şi a ordinii apariţiei în program. Când se porneşte automatul (cu întrerupătorul RUN/STOP sau prin alimentarea cu tensiune) instrucţiunile se execută de la prima linie de program. În tabelul 1 sunt prezentate modul în care sunt realizate operaţiile de bază în

LDR.

Tabelul 1

Funcţia logică

Realizare

SI

SI

SAU

SAU

NEGAŢIE

 

(în partea

(în partea

condiţională)

NEGAŢIE

 

(în partea

(în partea

de execuţie)

IDENTITATE

IDENTITATE

SAU

 

EXCLUSIV

10

Operaţia NOP
Operaţia
NOP

Operaţia de memorare (fig.7) este asemănătoare cu metoda de automenţinere întâlnită în cazul releelor (fig.7c). Este vorba de o memorie de 1 bit. În automatele programabile această memorie se realizează cu comenzile SET şi RESET, cu ajutorul contactelor. Se disting două tipuri de circuite bistabile

corespunzător comportării ieşirii A în cazul în care cele două semnale S şi R sunt simultan “1“ logic, şi anume:

a. cu resetare dominantă (fig.7a) – oricare ar fi starea intrării S (0 sau 1 logic) la activarea intrării R ieşirea A va trece obligatoriu în starea 0 logic;

b. cu setare dominantă (fig.7 b) – oricare ar fi starea intrării R (0 sau 1 logic) la activarea intrării S ieşirea A va trece obligatoriu în starea 1 logic.

Comanda de salt apare în partea executivă a programului. Ea oferă posibilitatea de a reduce timpul unui ciclu prin saltul peste instrucţiunile inutile din program la un moment dat. La următorul ciclu aceste instrucţiuni (peste care s-a efectuat saltul) pot fi executate, dacă condiţiile concrete din sistem o cer. Se pot programa un număr nelimitat de salturi. O comandă de salt (fig.8) se inserează în partea executivă a unei ramuri şi conţine o etichetă care reprezintă destinaţia saltului, adică punctul din program de unde se execută următoarea instrucţiune. Eticheta (un şir de maxim 9 caractere alfanumerice, ce începe cu o literă) se inserează la începutul ramurii de la care se doreşte reluarea procesului.

Operaţia TO este utilizată pentru a transfera valoarea unui operand multibit către un operand ţintă. Operaţiile viitoare vor fi aplicate operandului ţintă. Spre exemplificare, în figura 9, dacă există intrarea I0.1 valoarea operandului sursă – CW1 este transferată operandului ţintă – aici R1.

În figura 10 sunt prezentate toate operaţiile binare multibit. Acestea sunt:

- operaţii logice bit cu bit între doi operanzi multibit: AND, OR, EXOR (SAU exclusiv);

- schimbarea între ei a valorilor octeţilor MSB şi LSB ai unui operand multibit (16 biti): SWAP;

- translatarea tuturor biţilor spre stânga sau spre dreapta: SHL sau SHR;

- rotirea biţilor spre stânga sau dreapta: ROL, ROR;

11

- inversarea bit cu bit al unui operand multibit: INV;

- complementul în bază doi al unui operand multibit: CPL;

- conversia unui număr din reprezentare binară în reprezentare BCD (Binary Coded Decimal): BID;

- conversia unui număr din reprezentare BCD în reprezentare binară: DEB.

a.

b.

din reprezentare BCD în reprezentare binară: DEB . a. b. Fig.7 c. a. b. Fig.8 Fig.9
din reprezentare BCD în reprezentare binară: DEB . a. b. Fig.7 c. a. b. Fig.8 Fig.9

Fig.7

c.

BCD în reprezentare binară: DEB . a. b. Fig.7 c. a. b. Fig.8 Fig.9 Observaţie: primul

a.

b.

BCD în reprezentare binară: DEB . a. b. Fig.7 c. a. b. Fig.8 Fig.9 Observaţie: primul
BCD în reprezentare binară: DEB . a. b. Fig.7 c. a. b. Fig.8 Fig.9 Observaţie: primul

Fig.8

în reprezentare binară: DEB . a. b. Fig.7 c. a. b. Fig.8 Fig.9 Observaţie: primul operand

Fig.9

Observaţie: primul operand este sursa (asupra lui se exercită funcţia), iar al doilea este destinaţia (în el se înregistrează rezultatul operaţiei).

12

În figura 11 se foloseşte operaţia de rotire spre stânga cu un bit a conţinutului operandului IW1. Rezultatul se înregistrează în operandul FW3.

IW1 . Rezultatul se înregistrează în operandul FW3 . Fig.10 Fig.11 Operaţiile aritmetice cu doi operanzi

Fig.10

. Rezultatul se înregistrează în operandul FW3 . Fig.10 Fig.11 Operaţiile aritmetice cu doi operanzi multibit

Fig.11

Operaţiile aritmetice cu doi operanzi multibit sunt posibile numai în partea executivă a unei ramuri (fig.12).

posibile numai în partea executivă a unei ramuri (fig.12). Fig.12 3.3 Limbajul Statement List - STL

Fig.12

3.3 Limbajul Statement List - STL

Un program STL este obţinut prin scrierea de instrucţiuni în modul text. Ca orice limbaj de programare în modul text, acesta foloseşte un set de cuvinte cheie. Ordinea de scriere şi tipul acestora determină structura programului şi modul de funcţionare al acestuia.

Structura unui program STL

Pentru scrierea unui program în STL se poate opta pentru una dintre următoarele structuri posibile:

- program cu paşi (STEP program);

- program paralel;

- program executiv.

Primul tip de program este cel mai general, celelalte două tipuri fiind cazuri particulare obţinute prin simplificarea primului.

13

Un program cu paşi poate conţine până la 256 paşi, delimitaţi prin instrucţiunea STEP, urmată (opţional) de un număr sau un nume dat de utilizator; acesta permite utilizarea unor instrucţiuni de salt în cadrul programului. Un pas al programului conţine una sau mai multe secvenţe, o secvenţa având o anumită sintaxă, ce poate să conţină:

o clauză condiţională formată din cuvântul – cheie IF … urmat de o expresie logică simplă sau complexă care se va evalua ca fiind adevărată sau falsă;

o clauză executivă formată din cuvântul – cheie THEN … urmat de o serie de instrucţiuni care se vor executa doar în cazul în care partea condiţională a fost evaluată ca fiind adevărată;

o clauză executivă alternativă formată din cuvântul – cheie OTHRW urmată de un set de instrucţiuni care se vor executa în cazul în care

expresia logică din partea condiţională a fost evaluată ca fiind falsă; această instrucţiune poate lipsi. Un program cu paşi este executat pas cu pas; dacă nu există clauza OTHRW şi partea condiţională este falsă, atunci programul reia instrucţiunile pasului curent, până la îndeplinirea ultimei condiţii. În prima secvenţă din cadrul unui pas (imediat după STEP) se poate omite partea condiţională şi se poate începe direct cu THEN, aceasta fiind o secvenţă incompletă. Programul va trece la pasul următor numai dacă la ultima secvenţă a pasului curent se execută:

- fie instrucţiunile care urmează după THEN (partea condiţională este adevărată);

- fie pe cele care urmează după OTHERW, dacă există (partea condiţională este falsă). Dacă nu există OTHERW şi partea condiţională este falsă atunci programul reia

instrucţiunile pasului curent. În acest fel se aşteaptă“ îndeplinirea ultimei condiţii pentru trecerea la pasul următor.

a pasului curent se stabileşte dacă

programul trece la pasul următor sau reia instrucţiunile pasului curent. Un program paralel constă doar în una sau mai multe secvenţe. Într-un astfel de program nu există paşi, întregul program echivalând cu un pas dintr-un program STEP. Un program paralel este rulat ciclic până când este dezactivat prin comanda RESET Pn (n fiind numărul programului respectiv). Un program executiv este alcătuit din instrucţiuni care se execută în totalitate deoarece nu există clauză condiţională; el nu conţine cuvintele – cheie STEP, IF si THEN. Instrucţiuni STL Limbajul STL conţine un set de instrucţiuni care permit scrierea uşoară a programelor destinate a controla automatizări simple sau complexe. În tabelul 2

THEN

Observaţie: În ultima secvenţă IF

14

sunt prezentate, împreună cu o scurtă descriere, toate instrucţiunile limbajului STL implementat pe automatele programabile FEC:

Tabelul 2

Nr.crt.

Instrucţiune

Semnificaţie

1

AND

Execută funcţia ŞI logic între doi operanzi (de un bit sau multibit).

2

BID

Converteşte conţinutul acumulatorului multibit din cod binar în cod BCD.

3

CFM n

Începe execuţia sau iniţializează un modul funcţional (rutină de sistem standard).

4

CPM n

Începe execuţia unui modul de program (subrutină sau funcţie de bibliotecă).

5

CPL

Complementul lui 2 al acumulatorului multibit (echivalent cu o înmulţire cu –1).

6

DEC

Decrementează un operand sau acumulatorul multibit.

7

DEB

Converteşte conţinutul acumulatorului multibit din cod BCD în cod binar.

8

EXOR

Execută funcţia logică SAU Exclusiv între doi operanzi (de un bit sau multibit).

9

IF

Cuvânt cheie ce marchează începutul părţii condiţionale a unei secvenţe.

10

INC

Incrementează un operand sau acumulatorul multibit.

11

INV

Produce complementul faţă de 1 al acumulatorului multibit.

12

JMP TO xx

Execută un salt la pasul cu numele (sau numărul) xx.

13

LOAD xx

Încarcă operandul xx de un singur bit (sau multibit) în acumulatorul de un singur bit (sau multibit).

14

NOP

Instrucţiune specială, întotdeauna adevărată în partea condiţională. Este utilizată şi în partea executivă a unei secvenţe unde execuţia ei înseamnă “nu face nimic”.

15

OR

Execută funcţia logică SAU între doi operanzi (de un bit sau multibit).

16

OTHRW

Oferă posibilitatea de a continua un program dacă partea condiţională a unei instrucţiuni nu este adevărată

17

PSE

Program Selection Edit. Reia programul sau pasul de la prima instrucţiune. Această instrucţiune nu este utilizabilă pentru programatorul FEC.

18

RESET

Schimbă valoarea unui operand de un bit. Valoarea finală este întotdeauna 0 logic.

19

ROL

Roteşte la stânga cu o poziţie toţi biţii conţinuţi de acumulatorul multibit. Bitul cel mai semnificativ (MSB) devine cel mai puţin semnificativ (LSB).

15

20

ROR

Roteşte la dreapta cu o poziţie toţi biţii conţinuţi de acumulatorul multibit. Bitul cel mai puţin semnificativ (LSB) devine cel mai semnificativ (MSB).

21

SET

Schimbă valoarea unui operand de un bit. Valoarea finală este întotdeauna 1 logic.

22

SHIFT

Execută o interschimbare între un operand de un singur bit şi acumulatorul de un singur bit (SBA).

23

SHL

Translatează la stânga cu o poziţie toţi biţii conţinuţi de acumulatorul multibit. Bitul cel mai semnificativ (MSB) este pierdut iar cel mai puţin semnificativ este resetat la 0 logic.

24

SHR

Translatează la dreapta cu o poziţie toţi biţii conţinuţi de acumulatorul multibit. Bitul cel mai puţin semnificativ (LSB) este pierdut iar cel mai semnificativ este resetat la 0 logic.

25

SWAP

Schimbă între ei octeţii superiori şi inferiori ai acumulatorului multibit (MBA).

26

TO

Utilizată împreună cu instrucţiunea LOAD pentru a specifica un operand destinaţie.

27

THEN

Cuvânt

cheie

ce

indică

începutul

părţii

executive

a

unei

instrucţiuni.

 

28

WITH

Utilizat pentru a furniza parametrii modulelor CFM sau CPM (în cazurile în care acestea cer parametri).

4. Prezentarea aplicaţiei

În cele ce urmează este prezentată o aplicaţie concretă pentru care vor fi realizate programele de lucru în cele două situaţii – folosind mediile de programare LDR şi STL. Se consideră cazul unui sistem de acţionare pneumatic pentru care:

- în figura 13 este prezentată schema funcţională;

- în figura 14 diagrama mişcare – faze;

- în figura 15 schema electrică.

Conform diagramei din figura 14 sistemul trebuie să realizeze următoarele secvenţe:

- când se dă comanda de pornire (butonul START sau START_a este apăsat), după un timp t 1 presetat, ansamblul mobil al motorului A avansează; iniţializarea ciclului este condiţionată de senzorul de proximitate A0, care trebuie să fie activat (altfel spus, ansamblul mobil trebuie să fie retras);

- la activarea senzorului A1 ansamblul mobil rămâne un timp t 2 , prestat, avansat, după care revine în poziţia iniţială.

16

Fig.13   1 START_a   0 1 A   0 1 A 0   0

Fig.13

 

1

START_a

 

0

1

A

 

0

1

A

0

 

0

1

A

1

 

0

START_a A 1 t 1 t 2 A 0
START_a
A 1
t
1
t 2
A
0

t

t  0 1 A 0   0 1 A 1   0 START_a A 1 t

t  0 1 A 0   0 1 A 1   0 START_a A 1 t

t  0 1 A 0   0 1 A 1   0 START_a A 1 t

Fig.14

0 1 A 0   0 1 A 1   0 START_a A 1 t 1

Fig.15

17

Condiţii suplimentare:

- dacă iniţial a fost apăsat butonul START după un ciclu dus – întors sistemul se opreşte şi aşteaptă o nouă comandă;

- dacă iniţial a fost apăsat butonul START_a după un număr de cicluri, presetat, sistemul se opreşte şi aşteaptă o nouă comandă;

5. Prezentarea programelor de lucru

În cele ce urmează este prezentată lista de alocare valabilă pentru acest Proiect, precum şi cele două programe realizate.

Lista de alocare:

Operand

Simbol

Comentariu

O0.0

A_A

Comandă avans cilindru

O0.1

A_R

Comandă retragere cilindru

O0.2

O0.3

OW0

I0.0

START

Buton start apasat

I0.1

START_a

Ciclu automat

I0.2

A0

Senzor cilindru retras

I0.3

A1

Senzor cilindru avansat

P0

FI

T0

Staţionare la capătul retras

T1

Staţionare la capătul avansat

TON0

TON1

TP0

Timp aşteptare la capătul retras

TP1

Timp aşteptare la capătul avansat

TW0

C0

CP0

CW0

18

Programul LDR

Programul LDR 19
Programul LDR 19

19

Programul STL 20

Programul STL

Programul STL 20

20

21
21

21