Sunteți pe pagina 1din 6

Aplicatii cu automate programabile

Functii aritmetice la automatele programabile

Automatele programabile de clasa medie si mai complexa sunt prevazute cu functii aritmetice. Principalele functii utilizate in programare sunt: adunarea, scaderea, inmultirea, impartirea si radacina patrata. Adunarea si scaderea. Pot fi aplicate mai multor tipuri de operanzi si presupun efectuarea operatiilor de scadere si adunare asupra operanzilor respectivi. In figura 1. am reprezentat blocurile cu care se lucreaza in programarea ladder (in cazul automatelor din familia Simatic) pentru operanzi de tip intreg (a) si real (b).

a) b) Figura 1. Blocurile folosite pentru adunare cu operanzi reali si intregi

Figura 2. Exemplu de adunare a doi operanzi In figura 2 este prezentat un model de adunare a doi operanzi. Acestia sunt reprezentati de MW0 si MW2 la intrarile In1 si IN2. Rezultatul adunarii este prezent la iesirea out reprezentata de MW12. Fiecare adunare a doi operanzi se realizeaza atata timp cat intrarea de enable (I0.1 in figura) are valoarea 1 logic. Iar in cazul in care avem o depasire aceasta este subliniata de iesirea EN0. Pentru operatia de scadere obtinem o reprezentare de acelasi tip cu diferenta ca reprezentarea poarta alt nume (SUB_I pentru cazul scaderii a doi intregi) iar operatia este data de: OUT=IN2-IN1 restul pinilor avand aceiasi semnificatie, existand posibilitatea efectuarii operatiei asupra mai multor tipuri de operanzi. 1

Aplicatii cu automate programabile Codul scris in STL pentru diagrama ladder din figura 5.2 este urmatorul: A I 1.0 JNB _001 L MW 0 L MW 2 +I T MW 12 AN OV SAVE CLR _001: A BR = Q 1.0 - testeaza daca e activ semnalul de enable pentru adunare - incarca cei doi operanzi

- stocare rezultat - fanion depasire

- e pastrat rezultatul

Inmultirea si impartirea. In cazul operatiilor de inmultire si impartire blocurile sunt asemanatoare diferind doar operatiile care se realizeaza. In figura 3. putem observa reprezentarile in programarea bazata pe diagrame ladder pentru operatiile de inmultire si impartire pentru intregi(a) si numere reale(b).

a) b) Figura 3. Reprezentarea operatiilor de inmultire si impartire pentru intregi (a) si numere reale (b) Operanzii sunt aceiasi diferind doar operatia care se realizeaza intre ei. Ceilalti pini au aceiasi semnificatie de validare(EN), rezultat(OUT) sau indicator depasire(ENO). Exemplificarea pentru realizarea unei anumite operatii este facuta in figura 4. in cazul inmultirii a doi intregi:

Figura 4. Exemplu de inmultire a doi operanzi

Aplicatii cu automate programabile Compararea. Automatele de capacitate medie si complexa au prevazute functii de comparare a datelor care sunt vehiculate. Numerele sunt comparate intern intro varianta similara cu cea de la microprocesoare. Datel care pot fi comparate sunt de diverse tipuri pornind de la numarul inscris intr-un contor vis-a-vis de o data fixa sau compararea a doua date de intrare la un anumit interval de timp. Functiile de comparare care apar in general la automatele programabile sunt urmatoarele: egal cele doua numare au valori egale; inegal(diferit) - cele doua numere sunt de valori diferite; mai mare sau egal - primul operand in raport cu cel de al doilea; mai mic primul numar este strict mai mic decat al doilea; mai mare primul operand este mai mare decal al doilea;

mai mic sau egal primul operand este mai mic sau egal in raport cu al doilea. Cazurile prezentate sunt ilustrate in figura 5. pentru programarea utilizand diagrame ladder din cadrul limbajului Step 7 iar identificarea fiecarei operatii se poate face pe baza operatorilor inscrisi pe ele.

Figura 5. Cazurile de comparatoare a doua numere intregi In figura sunt prezentate doar comparatoare a doua numere intregi. In general, in programarea automatelor, exista comparatoare pentru diverse tipuri de date (real).

Figura 6. Compararea a doi intragi folosind diagrame ladder

Aplicatii cu automate programabile Un exemplu de program realizat folosind diagrame ladder pentru compararea a doua numere intregi este dat in figura 6. impreuna cu codul aferent pentru aplicatie scris in limbaj STL. A I 0.1 A( L MW 0 L MW 2 <=I ) = Q 1.0 Instructiuni de rotire si deplasare. Instructiunile de rotire si deplasare sunt prezente la majoritatea automatelor programabile. Acestea pot fi de urmatoarele patru tipuri generale din care se obtin mai multe prin multiplicare pentru diverse tipuri de operanzi asupra carora se aplica: deplasare la dreapta; deplasare la stanga; rotire la dreapta;

rotire la stanga. In figura 7. sunt prezentate in forma data de diagrame ladder cele 4 tipuri enumerate mai sus. Primele doua litere inscrise reprezinta operatia (sh=shift, ro = rotate), urmatoarea sensul realizarii ei (r=right, l=left) iar ultima tipul de operand asupra caruia se aplica operatia respectiva.

Figura 7. Tipuri de operatori pentru deplasare si rotire in Step 7 Unii dintre operatori pot fi aplicati doar anumitor tipuri de date. In figura 5.8. vom prezenta realizarea unei operatii de deplasare asupra unui operand de tip intreg. Intrarea EN este pentru validarea operatiei care se va efectua. La intrarea IN este prezent operandul care urmeaza sa fie deplsat iar la intrarea N numarul de biti cu care se va face deplasarea. Rezultatul final este afisat la iesirea OUT iar ENO ne precizeaza daca operatia a fost efectuata cu succes.

Aplicatii cu automate programabile

Figura 8. Exemplu pentru folosirea operatorului de deplasare in cazul a doi intregi Codul rezultat prin transformarea diagramei ladder din figura 5.8. in limbaj STL este urmatorul: A I 0.1 JNB _001 L MW 2 L MW 0 SSI T MW 12 SET SAVE CLR _001: A BR = Q 1.0 In cazul folosirii unui operator pentru rotirea bitilor unui numar am utilizat urmatorul exemplu:

Figura 9. Exemplu pentru utilizarea operatorului de rotire asupra unui operand

Aplicatii cu automate programabile In acest caz semnificatia pinilor este identica in raport cu cea de la operatorul de deplasare. Codul obtinut prin transformare din diagrama ladder in limbaj STL pentru acest exemplu este urmatorul: A I 0.1 JNB _001 L MW 4 L MD 0 RLD T MD 10 SET SAVE CLR _001: A BR = Q 1.0

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