Sunteți pe pagina 1din 24

CAPITOLUL 4

FUNCŢII SPECIALE

4.1. Programarea memoriei interne de un bit

Practic, toate programele AP necesită circuite de memorie de un bit. Un


exemplu tipic este contactorul ce comandă un motor din figura 3.4,
unde treapta de DS memorează care dintre butoanele Start sau Stop a
fost apăsat ultima dată. Acestea sunt cunoscute, din motive evidente, ca
şi circuite de memorie de un bit.
Cea mai întâlnită formă este cea din figura 4.1.a. Ieşirea C este activată
când intrarea A este activată, şi rămâne activată până când intrarea B
este dezactivată. Intrarea B este prevăzută din motive de securitate:
"permite activarea semnalului", aşa cum s-a discutat în paragrafele 3.2
şi 9.2 [3]. Operaţia este ilustrată în diagrama temporală din figura 4.1.b.
Intrarea B condiţionează intrarea A, aceasta fiind funcţionarea necesară
a unui circuit de start/stop. Totuşi, în anumite circuite, intrarea de start
trebuie să fie prioritară faţă de intrarea de stop. Un exemplu tipic se
poate întâlni la automobile: ştergătoarele de parbriz pornesc atunci
când se dă comanda start, chiar dacă se află pe limitatorul de cursă. DS
şi reprezentarea DBF echivalentă sunt date în figura 4.1.c, unde A este
buton de start, B este limitatorul poziţiei de repaus iar C este motorul
ştergătorului. Diagrama temporală aferentă este dată de figura 4.1.d.
În logica cablată, memoria de un bit este realizată cu CBB, reprezentate
în figura 4.2.a. Acestea au două intrări, S (pentru set) şi R (pentru reset).
Circuitul memorează care intrare a fost ultima pe 1 logic. Dacă ambele
76 Automate programabile

intrări sunt 1 simultan, intrarea set este prioritară. Acest circuit este
numit CBB SR. Dacă circuitul este reprezentat cu intrarea R sus, ca în
figura 4.2.b, intrarea R va fi prioritară faţă de S, dacă ambele sunt 1
simultan (circuitul fiind numit CBB RS).

Figura 4.1. Circuite de memorare a biţilor: a) cel mai obişnuit


circuit de memorare, unde intrarea de Stop B condiţionează intrarea
de start A; b) diagrama temporală corespunzătoare; c) circuit
de memorare unde intrarea de start A condiţionează intrarea de stop B;
d) diagrama temporală aferentă circuitului din figura c)

Figura 4.2. Două tipuri de CBB: a) CBB SR; set este prioritar
faţă de reset; b) CBB RS; reset este prioritar faţă de set

CBB sunt utilizate în programarea AP în limbaj DBF. În figura 4.3.a este


reprezentat un contactor comandat de un AP al firmei Siemens. Se
4. Funcţii speciale 77

observă că a fost utilizată varianta RS pentru a avea siguranţa că logica


de stop este prioritară faţă de logica de start, iar semnalul de stop
realizează o validare a funcţionării.

Figura 4.3. Memorie cu CBB: a) programul cu DBF;


b) programul cu DS; c) CBB SRAO

Claritatea este de primă importanţă în scrierea programelor de AP.


Funcţionarea circuitului din figura 4.1.c nu este clară la o primă
verificare. Este de mare ajutor dacă contactul folosit pentru reţinere
este plasat întotdeauna în ultima poziţie în ramură (pentru DS) sau în
poartă (pentru DBF) [40].
Simbolul CBB este deseori întâlnit în DS. Figura 4.3.a este un exemplu
de utilizare a simbolului CBB cu DBF de la firma Siemens, echivalent
figurii 4.3.b, unde sunt folosite notaţii DS.
În aceste circuite s-a preferat utilizarea unor butoane de STOP normal
închise. Observaţi cum apar acestea în program şi faceţi o comparaţie cu
DS din figura 4.1. Această diferenţă se datorează funcţionării CBB RS (în
figura 4.2.b cu "1" se face reset) şi modului de legare a butonului de
STOP la AP (s-a legat la AP contactul NI).
În DS a firmei Allen Bradley, claritatea programelor poate fi
îmbunătăţită prin utilizarea unor ieşiri, reprezentate în figura 4.4.a.
Acestea lucrează asupra aceluiaşi bit, setând bitul când pe –(L)- este
prezent un 1 logic, şi resetând bitul când pe –(U)- este prezent un 1
logic. Când pe ambele se primeşte 0 logic, bitul rămâne la valoarea
corespunzătoare ultimei stări.
78 Automate programabile

Atât cu Latch/Unlatch al firmei Allen Bradley, cât şi cu Set/Reset al


firmei Mitsubishi, prioritatea aparţine ultimei trepte din program
(dintre cele două), datorită ciclului program. Ambele exemple din figura
4.4 dau, în mod corect, prioritate semnalelor STOP.
AP F2 al firmei Mitsubishi utilizează o idee similară, dar ieşirile sunt
denumite S(et) şi R(eset), ca în figura 4.4.b. Aceasta poate fi transpusă
într-o LI, ca în tabelul 4.1.

Figura 4.4. Alte forme de memorie: a) Latch/Unlatch la Allen Bradley;


b) Set/Reset la Mitsubishi

Tabelul 4.1. Programul LI corespunzător programului din figura 4.4.b


Linie Instrucţiune Comentariu
0 LD X400
1 OR X401
2 S Y432 Setează ieşirea
3 LDI X402
4 ORI X403
5 R Y432 Resetează ieşirea

Căderea alimentării sau oprirea AP cauzează probleme memoriilor de


un bit. La repornirea AP, memoriile de un bit îşi vor păstra valoarea
avută înainte de oprire sau memoria va fi ştearsă? Aceasta este
întotdeauna o problemă de siguranţă şi ţine de particularităţile
aplicaţiei. O pompă de apă situată la o distanţă de 5 km de consumator
4. Funcţii speciale 79

ar trebui, probabil, să repornească singură dacă a fost pornită în


momentul căderii alimentării; o maşină automată de tipărit ar trebui
(aproape sigur) să nu repornească singură.
În consecinţă, producătorii de AP permit proiectanţilor să stabilească
dacă o memorie de un bit îşi va păstra starea după o cădere a
alimentării (numită memorie cu reţinere) sau se va şterge la repornirea
AP (numită memorie fără reţinere).
La PLC-5 al firmei Allen Bradley acest lucru este determinat de către
program. Bobina din figura 4.1 este fără reţinere, iar latch/unlatch din
figura 4.4 este cu reţinere. Alte AP diferenţiază memoriile de un bit prin
adresele alocate lor.
Memoriile cu reţinere pot fi periculoase, deoarece pot prezenta oscilaţii
la repornire după o cădere a alimentării. Proiectantul trebuie să aibă
grijă ca programul să nu introducă din greşeală componente cu reţinere
prin alocarea eronată a adreselor de bit [44]. Utilizarea tabelei R la
GEM-80 este în mod particular convenabilă, dar se recomandă o mare
atenţie, în general, la alegerea adreselor.

4.2. Temporizatoare

Timpul intervine în aproape toate sistemele de control. Un exemplu


tipic este: "La oprirea liftului, aşteaptă 0,5 secunde pentru frânarea
(încetinirea) liftului, avansează până la limitatorul de nivel şi opreşte
motorul, aşteaptă o secundă şi aplică frâna" sau "Porneşte pompa
hidraulică; dacă contactul auxiliar nu devine 1 în 0.7 secunde,
semnalizează "defect la contactor"; dacă acesta este 1, aşteaptă 2
secunde şi acţionează robinetul de admisie; dacă presiunea hidraulică
nu este OK în 3 secunde, semnalizează "defect hidraulic" şi opreşte
pompa". Din acest motiv un sistem AP trebuie să includă
temporizatoare ca parte a limbajului său de programare. Există multe
tipuri de temporizatoare, câteva dintre ele fiind ilustrate în figura 4.5.
De departe, cel mai utilizat este cel cu temporizare la anclanşare, din
figura 4.5.a. Toate celelalte pot fi emulate cu acesta şi cu un bit al
acestuia. O tranziţie 0→1 la intrare este întârziată la ieşire cu un timp
prestabilit T, dar o tranziţie 1→0 la intrare nu este întârziată deloc. Un
80 Automate programabile

semnal de intrare mai scurt decât T este ignorat. AP GEM-80 are doar
acest tip de temporizator, numit întârzietor.

Figura 4.5. Diferite temporizatoare: a) cu temporizare la anclanşare;


b) cu temporizare la declanşare; c) un impuls de durata fixă

Temporizatorul la declanşare din figura 4.5.b trece ieşirea din 0 în 1


instantaneu cu intrarea, dar întârzie la ieşire tranziţia 1→0. O utilizare
obişnuită a temporizării la declanşare este pentru înlăturarea
vibraţiilor de contact ale unui semnal de intrare.
Un temporizator la declanşare poate fi obţinut dintr-un temporizator la
anclanşare prin utilizarea semnalului de intrare inversat şi luând în
considerare inversul semnalului de ieşire al temporizatorului (deşi
programul pierde din claritate).
Figura 4.5.c este un temporizator declanşat pe front care generează un
impuls de durată fixă pentru fiecare tranziţie 0→1 a intrării
temporizatorului.
AP PLC-5 are un temporizator de un ciclu program care produce un
impuls la un ciclu program (o singură dată). Impulsurile sunt utile la
resetarea numărătoarelor sau la transferul unor informaţii dintr-o
locaţie în alta.
Un temporizator de orice tip are anumite valori care trebuie fixate de
către utilizator. Prima din aceste valori este baza de timp (în ce unităţi
se măsoară timpul). Unităţile uzuale sunt 10 ms, 100 ms, 1 s, 10 s şi 100
s. Unităţile utilizate nu afectează precizia temporizatorului. În mod
normal precizia este în legătură cu durata ciclului program.
4. Funcţii speciale 81

Următoarea valoare definită este durata temporizării (adeseori numită


preset). Aceasta este dată, de obicei, în valori ale bazei de timp. De
exemplu, un temporizator cu un preset de 150 şi o bază de timp de 10
ms va întîrzia 1,5 s. În AP mici preset-ul poate fi fixat de către
programator; în AP mari durata temporizării poate fi modificată din
interiorul programului. De exemplu, un temporizator la declanşare
utilizat la frânarea unui lift poate avea diferite durate ale temporizării,
după cum liftul se deplasează cu viteză mare sau cu viteză mică.
Fiecare temporizator este prevăzut cu câteva semnale, ce pot fi utilizate
în program. Figura 4.6 arată semnalele generate de către un
temporizator la anclanşare al AP PLC-5 (numit TON) şi de către un
temporizator la declanşare al AP PLC-5 (numit TOF):
• EN (pentru enable=validat) simbolizează intrarea
temporizatorului
• TT (pentru durata temporizării) este activat pe durata măsurării
timpului
• DN (pentru done=sfârşitul temporizării) arată că temporizarea
s-a încheiat.

Figura 4.6. Notaţiile firmei Allen Bradley pentru temporizatoare:


a) temporizator TON; b) temporizator TOF

În AP mari, timpul scurs (numit deseori timp acumulat) poate fi accesat


prin program pentru utilizarea lui în altă parte (se poate întîmpla ca un
program să trebuiască să înregistreze cât timp a durat o anumită
operaţie). De regulă, temporizatoarele sunt definite la sfârşitul treptelor
de program, semnalele lor fiind disponibile pentru a putea fi utilizate în
altă parte.
82 Automate programabile

Figura 4.7. Diferite tipuri de temporizatoare folosite pentru aceeaşi


aplicaţie: a) notaţia PLC-5; b) notaţia GEM-80; c) notaţia DBF SIMATIC
4. Funcţii speciale 83

Figura 4.7 este o aplicaţie tipică pentru un AP PLC-5, un GEM-80 şi un


SIMATIC (cu DBF). Programul comandă contactorul unui motor care
este pornit şi oprit prin butoane. Contactorul are un contact auxiliar
care se închide atunci când contactorul este anclanşat şi care spune
efectiv când merge motorul. Dacă contactorul se declanşează datorită
unei suprasarcini, sau datorită apăsării unui buton de Avarie-Stop, sau
datorită căderii tensiunii de alimentare, semnalul de la contactul
auxiliar va fi pierdut. Acest contact nu poate fi verificat mai devreme de
1,5 s după anclanşarea contactorului, pentru a lăsa timp pentru
comutarea contactului. Figura 4.7 verifică contactul auxiliar şi
semnalizează un defect de acţionare dacă sunt probleme.

Figura 4.8. Temporizatoare: a) temporizator fără reţinere;


b) temporizator cu reţinere; c) şi d) simbolurile Allen Bradley şi
Siemens pentru temporizatorul din figura b

Valoarea acumulată a temporizatoarelor discutate până acum devine 0


de fiecare dată când intrarea trece în 0, ca în figura 4.8.a. Acesta este
cunoscut sub numele de temporizator fără reţinere. Majoritatea
temporizatoarelor AP sunt de acest fel. Uneori este util, însă, să
dispunem de temporizatoare care să păstreze valoarea curentă, chiar
dacă semnalul de intrare este 0. Când intrarea este 1 din nou,
temporizatorul continuă de la valoarea la care s-a oprit, ca în figura
4.8.b. Acesta se numeşte temporizator cu reţinere. La acestea trebuie
84 Automate programabile

utilizat un semnal separat pentru aducerea temporizatorului la 0. Dacă


la un anumit tip de AP nu sunt disponibile temporizatoare cu reţinere,
această funcţie poate fi realizată cu un numărător, aspect discutat în
paragraful următor.
Un temporizator obişnuit poate număra până la 32767 de unităţi ale
bazei de timp (corespunzător la 16 biţi). Câteva AP mai vechi, care
lucrează în BCD, pot număra doar până la 999. Cu o bază de timp de 1
sec timpul maxim ce poate fi măsurat este de max 546 min sau
aproximativ 9h (dacă temporizatorul numără până la 32767). Dacă
trebuie măsuraţi timpi mai mari (sau timpi cu o rezoluţie mai mică de 1
s) pot fi utilizate împreună temporizatoare şi numărătoare, aspect
descris în paragraful următor.

4.3. Numărătoare

În multe programe de AP numărătoarele sunt componente


fundamentale. AP trebuie să poată număra obiectele ce trec pe o bandă
sau să numere de câte ori se petrece un eveniment. La motoarele mari,
de exemplu, trebuie înregistrat numărul de porniri. În consecinţă, toate
AP includ anumite tipuri de numărătoare.
Un numărător poate fi reprezentat ca în figura 4.9, deşi nu toate AP vor
avea aceleaşi facilităţi pe care le vom descrie. Vor fi două numere
asociate fiecărui numărător. Primul este valoarea acumulată, care va fi
incrementată la fiecare tranziţie 0→1 a intrării de numărare înainte sau
va fi decrementată la fiecare tranziţie 0→1 a intrării de numărare
înapoi. Valoarea acumulată poate fi adusă la 0 prin aplicarea unui 1 pe
intrarea de Reset. Ca şi la un temporizator, valoarea acumulată poate fi
citită şi utilizată în alte părţi ale programului.
Al doilea număr este valoarea prestabilită, care poate fi privittă ca
valoarea destinaţie a numărătorului. Dacă valoarea acumulată atinge
valoarea prestabilită, este generat un semnal de "Numărare terminată".
Valoarea prestabilită poate fi modificată prin program. De exemplu,
într-un proces în care se efectuează transportul unor obiecte, poate fi
necesar ca operatorul să modifice numărul obiectelor din proces prin
tastatura unui calculator sau cu un terminal de programare. Similar,
4. Funcţii speciale 85

semnalul "valoarea zero" este deseori disponibil, comportându-se ca în


figura 4.9.b.
Producătorii de AP au realizat mai multe tipuri de numărătoare, la fel ca
şi în cazul temporizatoarelor. AP PLC-5 şi ale firmei Mitsubishi
utilizează numărătoare cu numărare înainte (CTU), numărare înapoi
(CTD) şi reset (RES) ca terminatori de treaptă în program. La atingerea
valorii prestabilite numărătoarele generează un semnal de "Numărare
încheiată" (de exemplu, C5:4.DN), care poate fi utilizat ca un contact.

Figura 4.9. Numărător reversibil:


a) schema internă a numărătorului; b) operaţia de numărare
86 Automate programabile

Figura 4.10 prezintă o aplicaţie de numărare simplă. Obiectele ce trec


pe un conveior sunt detectate printr-o fotocelulă şi numărate. Când o
încărcătură este completă, conveiorul este oprit şi becul de încărcare
completă "Gata" este aprins, pentru ca operatorul să deplaseze
încărcătura. După ce operatorul face acest lucru, se poate apăsa un
buton de restart şi astfel se porneşte secvenţa din nou.
Programele prezintă o mică problemă care nu se observă la o primă
vedere. Dacă este adăugat un buton de testare a becului, apăsarea lui va
cauza oprirea conveiorului. Acest lucru poate fi preîntâmpinat prin
utilizarea unei memorii interne care să arate că "numărarea este
completă". Atunci se va utiliza un contact -/- al acesteia pentru
conveior şi un contact - - al acesteia pentru bec. Aceasta va adăuga o
treaptă la fiecare program.
Ca şi temporizatoarele, numărătoarele permit numărarea până la
32767. Când se doresc valori mai mari, numărătoarele pot fi cascadate,
semnalul de "numărare încheiată" de la primul fiind utilizat ca intrare
de numărare pentru al doilea şi ca reset pentru el însuşi. Presupunem
că numărătorul 1 păstrează valorile 0-999 iar numărătorul 2 păstrează
miile. Dacă numărătorul 2 conţine valoarea 23516 iar numărătorul 1
conţine valoarea 457, atunci valoarea finală este 23516457 [46]. Figura
4.11 este o variantă a ideii de cascadare a numărătoarelor pentru a
obţine o temporizare (contorizare) foarte mare.
Prima treaptă generează un impuls ce permite începerea funcţionării,
cu durata de un ciclu program, cu distanţa între impulsuri fixată printr-
un temporizator. Dacă temporizatorul a fost pornit şi nu a ajuns la
valoarea prestabilită, semnalul DN din treapta a doua nu este prezent.
Când temporizatorul atinge valoarea prestabilită, este generat semnalul
DN, care resetează şi reporneşte temporizatorul din treapta întâi iar în
treapta a doua se formează un impuls cu durata de un ciclu program.
Impulsurile rezultate sunt numărate de numărătoare legate în cascadă
pentru a furniza secundele/minutele/orele/zilele. Când un numărător
atinge valoarea prestabilită, generează un impuls pentru incrementarea
numărătorului următor şi pentru resetarea sa. Această tehnică este des
utilizată la înregistrarea orelor de mers ale pompelor, ventilatoarelor şi
altor dispozitive similare, pentru programarea mentenanţei [45]. În
acest caz, evenimentul din treapta a doua este un contact auxiliar de la
un contactor ce comandă un motor.
4. Funcţii speciale 87

Figura 4.10. Aplicaţii ale numărătoarelor la:


a) PLC-5; b) GEM-80: c) SIMATIC-S7
88 Automate programabile

Figura 4.11. Numărătoare în cascadă

Temporizatoarele pentru durate mari, construite cu numărătoare, sunt


în mod normal cu reţinere (îşi păstrează valoarea atunci când
evenimentul controlat nu este 1). Ele pot fi făcute fără reţinere prin
resetarea numărătoarelor atunci când evenimentul de controlat este 0,
dar acestea sunt rar utilizate.
Am văzut în paragraful 2.5.1 că perioada de scanare limitează rata
maximă de numărare a unui AP la aproximativ 10 Hz. Acolo unde sunt
necesare viteze mari de numărare sau unde perioada de scanare mare
introduce erori aleatoare inacceptabile pot fi utilizate modulele
numărătoare de mare viteză. În figura 4.12 numărătorul este comandat
de un codificator direcţional de impulsuri (de exemplu, un traductor de
poziţie care produce 2 trenuri de impulsuri decalate, permiţînd
observarea sensului de numărare).
4. Funcţii speciale 89

Figura 4.12. Un modul numărător de mare viteză

Valoarea curentă (acumulată) a numărătorului poate fi modificată şi din


programul AP; de asemenea, ea poate fi recitită atunci când este
necesar. În mod asemănător, AP poate furniza şi valoarea prestabilită.
Numărătorul îşi va acţiona ieşirile în funcţie de relaţia dintre valoarea
prestabilită şi cea curentă. Aceste ieşiri sunt în c.c. pentru a minimiza
întârzierile.

4.4. Aplicaţii numerice


4.4.1. Reprezentarea numerelor

Numerele sunt, de asemenea, parte a schemelor de comandă. De


exemplu, un AP trebuie să calculeze ritmul producţiei în unităţi pe oră,
pe zile, sau să furnizeze cantitatea de lichid existentă într-un rezervor.
Majoritatea AP lucrează cu cuvinte pe 16 biţi permiţând reprezentarea
numerelor în gama 0÷65535 sau, în complement faţă de 2, în gama -
32768 ÷ +32767. În ultimul caz bitul cel mai semnificativ reprezintă
semnul, fiind 1 pentru numerele negative şi 0 pentru cele pozitive.
90 Automate programabile

Aceste numere se numesc întregi. Când trebuie procesaţi întregi înafara


acestui domeniu, pot fi utilizate două cuvinte de 16 biţi care permit o
gamă de –2147483648 ÷ +2147483647 ("întreg lung" , "cuvînt dublu").
Dacă sunt necesare numere cu zecimale (de exemplu, o temperatură de
45,6°C) pot fi utilizate numere reale (în virgulă mobilă). În general,
acestea sunt cuvinte de 32 biţi care conţin mantisa (partea numerică) şi
exponentul. De exemplu, numărul 74057 va avea mantisa 7,4057 şi
exponentul 4, care reprezintă 104. AP lucrează în binar şi reprezintă
mantisa şi exponentul în complement faţă de 2. Există diferenţe de
prezentare între producători, dar există şi un standard care le reuneşte,
şi anume IEEE format 32 biţi simplă precizie, prezentat în figura 4.13.c.
Aceasta dă o gamă de ±(1,175E-38 ÷ 3,402E38). Unii producători au
micşorat exponentul pentru o mai mare precizie în mantisă.

Figura 4.13. Reprezentări numerice: a) întreg pe 16 biţi standard;


b) întreg lung pe 32 biţi; c) real IEEE 32 biţi

Numerele reale sunt foarte utile dar limitările lor trebuie clar înţelese.
În general, există două probleme. Prima apare atunci când sunt utilizate
împreună numere mari şi numere mici. Să presupunem că avem un
sistem ce operează în baza 10 cu patru cifre semnificative, şi că dorim
să adunăm 857800 (scris ca 8,578E5) şi 96 (scris ca 9,600 E1).
4. Funcţii speciale 91

Deoarece numărul mai mic este în afara gamei (0,00096E5), acesta va fi


ignorat, dând rezultatul 857800+96=857800.
A doua problemă apare atunci când testele (comparaţiile) sunt făcute
cu numere reale [59]. Conversia numerelor zecimale în numere binare
poate fi făcută doar cu rezoluţia permisă de formatul în virgulă mobilă.
Dacă numerele reale trebuie utilizate pentru comparaţii, un simplu "="
este foarte riscant. Operatorii ≥ sau ≤ sunt siguri, dar în general este mai
bine ca pentru teste să se utilizeze, pe cât posibil, numere întregi.
Reprezentarea BCD este utilă pentru conectarea cu echipamente cum
ar fi afişaje digitale sau comutatoare decadice. Acestea utilizează
formatul BCD (4 biţi/decadă). Această reprezentare produce o risipă de
biţi, deoarece 6 numere (de la 10 la 15) nu se reprezintă. Rămâne,
totuşi, o formă convenabilă de conectare cu exteriorul. Majoritatea AP
au instrucţiuni care convertesc formatul BCD în binar intern şi invers.
AP PLC-5, de exemplu, are instrucţiunile FRD (pentru BCD→binar) şi
TOD (binar→BCD). Figura 4.14 arată schematic o operaţie tipică.

Figura 4.14. Aplicaţii ale reprezentării BCD

4.4.2. Transferul datelor

Uneori este necesar ca numerele să fie transferate dintr-o locaţie în alta,


valoarea prescrisă a unui temporizator să fie modificată în funcţie de
92 Automate programabile

condiţiile procesului, valoarea unui numărător să fie trimisă la un


modul de ieşire pentru a fi indicată pe un afişaj digital, sau rezultatul
unor calcule să fie utilizat în altă parte a programului.
PLC-5 utilizează o treaptă de DS pentru fiecare operaţie de transfer şi
este, probabil, cel mai simplu de explicat. Figura 4.15.a prezintă forma
treptei. Aceasta începe cu câteva condiţii binare; dacă toate acestea sunt
1, ieşirea MOV (pentru transfer) este executată, transferând data de la
sursă la destinaţie. Sursa şi destinaţia pot fi oricare din locaţiile unde
pot exista date numerice, de exemplu:
• Valoarea prestabilită pentru un numărător sau temporizator; de
pildă, C5:17.PRE sau T4:52.PRE
• Valoarea acumulată a unui numărător sau temporizator; de
exemplu, C5:22.ACC sau T4:6.ACC
• Cuvânt de dată de I/E; de exemplu:
I :23 (modulul 3 în SB 2, toţi cei 16 biţi)
O :47 (modulul 7 în SB 4, toţi cei 16 biţi)
• Memorie internă de întregi; de exemplu, N 7:24
• Memorie internă în virgulă mobilă; de exemplu, F 8:32
Observaţi că toate aceste date sunt interpretate ca fiind numere binare;
dacă sunt necesare date în cod BCD, se pot utiliza instrucţiunile FRD şi
TOD (vezi figura 4.14).

Figura 4.15. Transferul datelor la:


a) PLC-5; b) SIMATIC-S7; c) GEM-80
4. Funcţii speciale 93

Dacă datele sunt transferate între forme de numere întregi şi între


forme de numere în virgulă mobilă, conversia este făcută automat.
Trebuie avut însă grijă la transferarea numerelor din virgulă mobilă în
întregi deoarece pot apare erori dacă numărul în virgulă mobilă este în
afara domeniilor întregilor. O ultimă remarcă: o constantă poate fi
utilizată doar ca sursă.
Deci, exemplul din figura 4.15.a transferă numărul din locaţia N7:34 la
valoarea prestabilită a temporizatorului T4:6 atunci când condiţiile din
treaptă sunt îndeplinite.
Siemens utilizează o abordare uşor diferită, care conduce la programe
mai compacte şi cu mici îmbunătăţiri împotriva surselor de erori,
utilizând, însă, o cale de lucru mai puţin directă [4]. Amândouă tratează
un transfer de date cu două instrucţiuni separate, utilizând un
acumulator separat (o locaţie de memorie de 1 cuvânt).
Siemens utilizează instrucţiunile Load (L) pentru a transfera data de la
sursă în acumulator, şi Transfer (T) pentru a transfera date din
acumulator la destinaţie, ca în figura 4.15.b. Data poate proveni (sau
merge) din (în) orice zonă de memorie, câteva din ele fiind:
IW - un cuvânt de intrare de 16 biţi
QW - un cuvânt de ieşire de 16 biţi
T - un cuvânt de temporizator
C - un cuvânt de numărător
DW - memorie de cuvinte pe 16 biţi
Deci, figura 4.14.b poate fi programată în felul următor:
: L T113 (cuvânt de temporizator în acumulator)
: T DW45 (conţinutul acumulatorului în memoria de cuvinte 45)
Utilizarea acumulatorului nu este evidentă la GEM-80. Instrucţiunea -
<AND>- transferă numărul binar din locaţia specificată în treapta DS iar
instrucţiunea-<OUT>- transferă valoarea din treaptă la adresa
specificată. În figura 4.15.c valoarea binară de la cuvântul de intrare de
16 biţi A12 este plasată într-o memorie internă de 16 biţi G24. Se poate
face conversia BCD/binar, cu instrucţiunea <BCDIN> şi <BCDOUT>,
sensul transferului fiind evident.
Diferenţa între figurile 4.15.b,c şi figura 4.15.a va deveni mai clară când
vom discuta despre operaţii aritmetice în paragraful 4.4.4.
94 Automate programabile

4.4.3. Compararea datelor

Deseori în programele AP este necesară compararea datelor. Exemple


tipice sunt:
• un numărător de obiecte care arată dacă a fost livrat un anumit
număr de obiecte
• circuite de alarmă, care indică faptul că o temperatură a urcat
peste un nivel de siguranţă.
Aceste comparaţii sunt realizate de către elemente care au forma
generală ca în figura 4.16, cu două intrări numerice corespunzătoare
celor 2 valori ce vor fi comparate şi o ieşire binară, care devine 1 dacă
este îndeplinită o condiţie specificată [26].
Sunt posibile multe comparaţii. Majoritatea AP asigură:
A>B, A ≥ B , A=B, A ≤ B, A<B
unde, A şi B sunt date numerice. La numere reale testul "=" trebuie
evitat din raţiuni prezentate la paragraful 4.4.1. Sunt posibile multe alte
comparaţii. PLC-5, de exemplu, are instrucţiunea Limit, care testează
dacă A este între B şi C iar GEM-80 şi SIMATIC au testul "≠".

Figura 4.16. Compararea datelor

Figura 4.17. Utilizare a comparării datelor:


a) la firma Allen Bradley; b) la firma Siemens (simbol DBF)
4. Funcţii speciale 95

Figura 4.17 prezintă setarea şi resetarea unui fanion de alarmă B3/21


(pentru o DS a PLC-5) şi F21.02 (pentru o DBF la SIMATIC [5]). Bitul de
alarmă este setat dacă temperatura (citită de la un modul de intrări
analogice în format nn,n °C şi memorată în N7:15 la PLC-5 sau în DW42
la SIMATIC) trece de 50,0 °C. Odată setată, alarma este păstrată până
când temperatura coboară sub 40°C.

4.4.4. Operaţii aritmetice

Procesarea datelor numerice implică realizarea operaţiilor aritmetice.


Toate AP pe care le-am luat în considerare (în afară de F2) permit
realizarea a cel puţin 4 operaţii aritmetice(+,-,*,/).
În paragraful 4.4.1 am discutat despre numere întregi şi în virgulă
mobilă. Trebuie avut grijă la operaţii cu întregi. Valorile unui număr în
complement faţă de 2 pe 16 biţi sunt în gama -32758 ÷ + 32767. Dacă o
operaţie aritmetică dă un rezultat în afara acestei game, acesta va fi
greşit. De exemplu:
26732+
8647
-30605
rezultatul corect fiind 35379.
Eroarea s-a produs în felul următor. Numerele sunt convertite în binar.
După adunare se obţine MSB=1, ceea ce înseamnă că este un număr
negativ şi se face complementul faţă de 2, obţinând un rezultat eronat.
AP au un fanion de depăşire care poate fi examinat şi utilizat pentru a
semnaliza o alarmă sau pentru fixarea unui rezultat 0 (de exemplu, cu o
instrucţiune Move). Precauţii similare trebuie luate la scădere şi
înmulţire (ultima fiind deosebit de vulnerabilă la depăşire:
200*200=40000, afară din gamă cu mult). Trebuie să ne gândim şi la
faptul că o depăşire poate apare datorită unui defect la un modul de
intrări analogice, la un senzor al procesului sau chiar la proces, şi care
din această cauză ar putea rămâne nedetectată.
Precauţii şi mai mari trebuie luate la împarţire. O eroare de programare
sau o condiţie eronată dinspre proces sau un modul de intrare defect
96 Automate programabile

pot conduce la o eroare prin divizare cu zero. Aceasta conduce la


oprirea multor AP cu o "eroare de program". De aceea, este indicat ca
înaintea fiecărei împărţiri vulnerabile să se verifice limitele variabilelor
pentru a fi siguri că se obţine un rezultat corect.
Figura 4.18 este un exemplu tipic. Se cere să se măsoare viteza unui
obiect, aceasta realizându-se prin măsurarea decalajului de timp T
dintre acţionarea a două fotocelule (PEC1 şi PEC2) aflate la distanţa d,
viteza fiind v = d/T (vezi figura 4.18.a).
Totul a mers bine până când, la un moment dat, PEC2 s-a defectat,
trasmiţând către AP un semnal "1" logic. Programul AP calculează pe
baza lui o întârziere 0, care produce o eroare prin divizare cu 0.
Fiecare producător de AP îndeplineşte operaţiile aritmetice în maniere
uşor diferite, cu grade diferite de uşurinţă şi de claritate. PLC-5
utilizează blocuri matematice cum ar fi ADD, SUB, MULT şi DIV,
rezultând un program simplu. Figura 4.19 arată un program folosit la
corectarea lungimii de tăiere.

Figura 4.18. Un exemplu de eroare prin divizare cu 0

SIMATIC evaluează instrucţiunile aritmetice în format LI. Să ne amintim


de discuţia referitoare la acumulator, ale cărui instrucţiuni de încărcare
(L) şi transfer (T) utilizează un acumulator intern. Există, de fapt, două
acumulatoare. O instrucţiune Load transferă conţinutul sursei în
acumulatorul 1. O a doua instrucţiune Load transferă conţinutul
acumulatorului 1 în acumulatorul 2, şi conţinutul sursei în acumulatorul
1, ca în figura 4.20. O instrucţiune aritmetică (+,-,etc.) lucrează cu
conţinutul ambelor acumulatoare [30]. Figura 4.20 adună, deci, două
numere şi transferă rezultatul în memorie.
4. Funcţii speciale 97

Figura 4.19. Operaţii aritmetice la AP PLC-5

Figura 4.20. Operaţii aritmetice la SIMATIC-S7

Echivalentul figurii 4.19 la SIMATIC, folosind formatul LI, este:


L DW30 ( lungime cerută în Acc1)
L DW31 ( lungime măsurată în Acc1 iar lungimea cerută în
Acc2)
SUB (eroarea rămâne în Acc1)
L DW32 (factor de amplificare în Acc1 iar eroarea trece în
Acc2)
MULT (corecţia se obţine în Acc1)
L DW40 (vechea lungime de tăiere în Acc1 iar corecţia în Acc2 )
98 Automate programabile

ADD (adună modificarea pentru a avea noua lungime de tăiere


şi rezultatul în Acc1)
T DW40 (transferă rezultatul din Acc1 în memoria DW40)
Toate operaţiile aritmetice, şi în particular cele care implică numere în
virgulă mobilă, sunt consumatoare de timp, fiind indicat ca acestea să
fie executate doar atunci când este nevoie (de exemplu, folosind
subrutine) şi să nu se piardă timp prin executarea lor în fiecare ciclu
program.

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