Sunteți pe pagina 1din 35

a.

cu resetare dominantă – 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ă – 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;

Operaţia de memorare
Această operaţie este asemănătoare cu metoda de automenţinere întâlnită în
cazul releelor. 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, şi anume:
Operaţia de salt
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 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.
a - salt condiţionat

b - salt necondiţionat

c – linia la care se realizează


saltul
Operaţia TO
Această operaţie este utilizată pentru a transfera valoarea unui
operand multi-bit către un operand ţintă. Operaţiile viitoare vor fi
aplicate operandului ţintă. Dacă există intrarea I0.1 valoarea
operandului sursă – CW1 este transferată operandului ţintă – aici
R1.
În figura alăturată sunt prezentate toate operaţiile binare
multi-bit. Acestea sunt:
- operaţii logice bit cu bit între doi operanzi mult-bit:
AND, OR, EXOR (SAU exclusiv);
- schimbarea între ei a valorilor octeţilor MSB şi LSB ai unui
operand multi-bit (16 biti): SWAP;
- translatarea tuturor bitilor spre stânga sau spre dreapta: SHL sau
SHR;
- rotirea bitilor spre stânga sau dreapta: ROL, ROR;
- inversul Bit cu bit al unui operand multi-bit: INV;
- complementul în bază doi al unui operand multi-bit: CPL;
- conversia unui număr din reprezentare binară în reprezentare
BCD (Binar Codat Decimal): BID;
- conversia unui număr din reprezentare BCD în reprezentare
binară: DEB;
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). În figura, se foloseşte operaţia de rotire spre stânga cu
un bit a conţinutului operandului IW1. Rezultatul se înregistrază în
operandul FW3.

Operaţiile aritmetice cu doi operanzi multi-bit sunt posibile numai în


partea executivă a unei ramuri.
Utilizarea numărătoarelor în LDR

Pot fi utilizate două tipuri de numărătoare: incrementale şi


decrementale. Pentru FEC sunt disponibile 256 de numărătoare,
numerotate de la 0 la 255.
Un numărător trebuie să asigure următoarele funcţii:
- să numere impulsurile şi să memoreze rezultatul în memoria
proprie (valoarea curentă);
- să poată fi resetat în orice moment (să se poată scrie în valoarea
curentă o valoare iniţială dorită);
- să aibă o memorie proprie pentru valoarea prestabilită (maximă)
de impulsuri care trebuie numărate;
- să poată fi interogat dacă a atins sau nu numărul de impulsuri
prestabilit, pentru a folosi rezultatul în alte operaţii logice.
Îndeplinirea acestor funcţii presupune apelarea la trei operanzi,
şi anume:
-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;
-CPn – Counter Preselect – este un operand multibit de un
cuvânt în care se încarcă valoarea setată (prestabilită) de
utilizator; acest operand rămâne neschimbat în timul numărării;
schimbarea valorii CPn-ului se efectuează o singură dată, la
iniţializare; operandul CPn poate fi iniţializat cu o valoare
constantă sau cu valoarea conţinută în orice alt operand multibit
(IWn, FWn erc.);
-CWn – Counter Word – este un operand multibit de un cuvânt
în care se găseşte valoarea curentă a numărătorului
Înainte de utilizare un numărător trebuie iniţializat cu o instrucţiune de
tipul:

Activarea numărătorului se face cu comanda SET.

Activarea numărătorului are drept consecinţe:


-pentru numărătoarele incrementale se încarcă valoarea 0 în CW20,
în timp ce la cele decrementale se încarcă valoarea presetată;
-operandul C20 este setat la valoarea 1 logic; el îşi menţine starea
până la apariţia uneia din următoarele situaţii:
- numărătorul se resetează cu o comandă explicită:

- după incrementări succesive ale operandului CW20 acesta


devine egal cu CP20 în cazul numărătoarelor incrementale,
sau egal cu 0 în cazul numărătoarelor decrementale.
Numărarea este o operaţie care se execută în partea executivă a
unei ramuri.
Interogarea unui numărător se face în partea condiţională a unei
ramuri, după cum urează:
Exemplu
Într-o parcare de maşini există doar 10 locuri. La intrarea în parcare există un
semnalizator optic – un semafor, cu două culori: verde şi roşu. Culoarea
verde rămâne activată atâta timp cât în parcare sunt locuri libere. Culoarea
roşie se activează când parcarea este plină. Cele două culori nu pot fi
active simultan.
Pentru a putea automatiza acest proces se prevăd trei senzori de proximitate:
- I0.4 – pentru iniţializarea procesului;
- I0.5 – la intrarea în parcare – se activează când în parcare intră o maşină;
- I0.6 – la ieşirea din parcare – se activează când din parcare iese o maşină.
Utilizarea temporizatoarelor
Temporizatoarele sunt practic nişte numărătoare, care numără impulsuri
de ceas de ordinul milisecundelor. Baza de timp a ceasului intern
(durata dintre două impulsuri) este o caracteristică a fiecărui automat
programabil. La unele modele poate fi aleasă de utilizator: 10 ms, 100
ms sau 1s. Când se programează un temporizator se încarcă un
număr de 16 biti numit Timer Preselect (TP). Acest număr se
decrementează la fiecare impuls de ceas. Când numărul ajunge la
zero timpul programat a expirat.
La automatele programabile FESTO există 256 de module de
temporizare, numerotate de la 0 la 255. Un temporizator poate măsura
un timp între 0,02 s şi 655 s.
Un temporizator este o structură de date care lucrează în mod unitar. Acesată
structură, ca şi în cazul numărătoarelor, conţine trei operanzi:
-Tn – Timer Status – este un operand de un bit care reprezintă starea
temporizatorului n; acest operand poate fi interogat în orice moment pentru
valoarea sa logică; de asemenea el poate fi activat sau dezactivat cu
operaţiile SET respectiv RESET;
-TPn – Timer Preselect – este un operand multibit (16 biti) care reprezintă
valoarea setată pentru temporizatorul n de utilizator în unităţi de timp;
activarea sau dezactivarea temporizatorului Tn nu are influenţă asupra
operandului TPn; setarea valorii TPN se face explicit cu o instrucţiune de
încărcare;
-TWn – Timer Word – este un operand multibit (16 biti) care reprezintă
valoarea curentă a temporizatorului; la activarea temporizatorului valoarea
TPn se încarcă în mod 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.
Un exemplu de utilizare a unui temporizator:
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 acest limbaj 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.
⚫ 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ă:
Step 1
IF expresie 1 - secventa “1”
THEN actiune a1
OTHRW actiune b1
……………………………………………..
IF expresie n - secventa ”n”
THEN actiune an
17
OTHRW actiune bn
- 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ă).
Observaţie: În ultima secvenţă IF...THEN a pasului curent se stabileşte dacă
programul trece la pasul următor sau reia instrucţiunile pasului curent.
2. 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).

3. Un program executiv este alcătuit din instrucţiuni care se execută în


totalitate deoarece nu există clauza 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 următor sunt prezentate, împreună cu o scurtă descriere, toate
instrucţiunile limbajului STL implementat pe automatele programabile FEC:
Prof.dr.ing. Mihai Avram, 2013
În cele ce urmează se vor detalia cele mai utilizate instrucţiuni.
Instrucţiunile SET şi RESET
Aceste instrucţiuni reprezintă comenzi date operanzilor SBO pentru activare,
respectiv dezactivare. Aplicate asupra aceluiaşi operand ele se anulează
una pe cealaltă. În tabelul următor sunt explicate efectele acestor comenzi:

25
Prof.dr.ing. Mihai Avram, 2013
Instrucţiunile LOAD...TO...
Această instrucţiune se poate aplica atât operanzilor multibit cât şi celor de un
bit.
Aplicată unui operand ea are ca efect încărcarea valorii operandului respectiv
într-un acumulator multibit – MBA dacă operandul este multibit, respectiv
SBA dacă operand este de un bit.
Scopul instrucţiunii este de a permite efectuarea operaţiilor logice sau
matematice.
Exemple:
- pentru operand de un bit:

26
- pentru operand multibit:

Instrucţiunea JMP TO...


Această instrucţiune furnizează un mijloc eficient de a influenţa cursul execuţiei
programului. Prin apelarea la această instrucţiune se poate ocoli regula ca
ultima secvenţă dintr-un pas să fie adevărată pentru ca programul să treacă la
pasul următor. Totodată, instrucţiunea poate fi folosită pentru a stabili o
prioritate de execuţie a secvenţelor dintr-un anumit pas al programului.

27
Instrucţiunea NOP
Această instrucţiune înseamnă “nici o operaţie“. Consecinţele utilizării acestei
instrucţiuni depind de locul unde este utilizată într-o secvenţă. În partea
condiţională instrucţiunea NOP va fi întotdeauna adevărată (1 logic) şi deci
instrucţiunile din partea executivă se vor executa.

Dacă un pas al unui program conţine mai multe secvenţe care trebuie să fie
prelucrate continuu instrucţiunea NOP poate fi folosită pentru controlul cursului
execuţiei programului. 28
Când este folosită în partea executivă a unei secvenţe instrucţiunea NOP este
echivalentă cu “nu face nimic“. Deşi acest lucru pare să nu aibă valoare
practică instrucţiunea este utilă în cazurile când programul trebuie să
aştepte îndeplinirea unui set de condiţii înainte de a merge mai departe.

29
Utilizarea temporizatoarelor
Înainte de a utiliza un temporizator acesta trebuie iniţializat, adică trebuie
încărcată o valoare în Timer Preselect.
La activarea unui temporizator cu instrucţiunea SET Tn se execută
automat următoarele acţiuni:
- se va activa temporizatorul: Tn devine egal cu 1 logic;
- se va încărca în TWn conţinutul lui TPn;
- se va începe temporizarea.
Pe durata temporizării la fiecare impuls de ceas va fi decrementat
operandul TWn. Când acesta devine egal cu zero temporizarea se
încheie şi temporizatorul se resetează, adică operandul Tn devine 0
logic. Un temporizator se poate dezactivă la terminarea temporizării
sau în mod explicit cu comanda RESET Tn. În acest caz Tn devine 0
30
logic.
Instrucţiunile INC şi DEC
Aceste instrucţiuni se folosesc pentru incrementarea, respectiv decrementarea
cu 1 a unui operand multibit. Spre deosebire de alte operaţii aritmetice, aici
nu mai este nevoie de încărcarea operandului într-un acumulator înaintea
operaţiei propriu-zise. Uzual se folosesc aceste instrucţiuni în cazul
numărătoarelor.
Exemplu: Pe o linie automată de încărcat sticle intrarea I1.3 este activă de
fiecare dată când o sticlă trece prin dreptul postului de numărare. Numărul
total de sticle este memorat în registrul R9. Se poate întâmpla ca o sticlă să
nu fie umplută şi acest lucru este sesizat de senzorul I3.6 amplasat după
postul de numărare. În acest caz numărul total de sticle memorat în registrul
R9 trebuie diminuat cu 1 iar sticla va fi reintrodusă în circuitul de umplere.
31
Utilizarea numărătoarelor
Înainte de utilizarea unui numărător acesta trebuie iniţializat. Pentru
numărătoarele incrementale la iniţializare se încarcă valoarea 0 în
CWn. Această operaţie se efectuează automat la activarea
numărătorului. Pentru activare este suficientă comanda SET Cn. La
activarea unui numărător se efectuează următoarele acţiuni:
- Cwn se încarcă cu valoarea 0;
- Cn este setat la 1 logic.
Dacă numărătorul Cn este deja activ şi se reactivează cu comanda SET
Cn atunci numărătorul este repornit prin încărcarea valorii 0 în CWn.
Un numărător Cn îşi menţine starea până la apariţia uneia dintre situaţiile
următoare:
- numărătorul se resetează cu comanda RESET Cn; 32

- după incrementări succesive ale operandului CWn acesta devine egal


Un exemplu de program scris în STL

33
34
35