Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

LIMBAJE DE PROGRAMARE

calculatoare



+ Font mai mare | - Font mai mic



LIMBAJE DE PROGRAMARE

Standardul IEC 1131-3

Standardul IEC 1131-3 defineste cinci limbaje de programare a AP [32, 52]: l. Diagrama Scara (Ladder Diagram), care este inspirata din schemele



electrice conventionale;

Lista de Instructiuni (Instruction List), care este un limbaj de asamblare

inspirat din limbajele utilizate in diversele platforme hardware existente;

Textul Structurat (Structured Text), care este un limbaj de programare

asemanator limbajului Pascal;

Diagrame cu Blocuri Functionale (Function Blocks Diagrams), care constituie un formalism de procesare a datelor prin retele de__hlQ.curi functionale conectate prin semnale;

Diagrame de Stare Secventiale (Sequential Function Charts), care reprezinta un formalism grafic inspirat din standardul francez Grafcet, : bazat pe o varianta sincrona si etichetata de retele Petri. ;. LI si TS fac parte din limbajele traditionale de programare a ; calculatoarelor. DS si DBF imita structura predecesoarelor lor ; (implementari hardware ale regulatoarelor discrete si continue, paralele prin ; natura lor). DSS combina secventialitatea cu paralelismul.

Standardul incepe cu o descriere a configuratiei si resurselor hardware si software ale sistemului pe care vor fi executate programele. Cazul ce] mai simplu este ceHn care un singur program este executat pe un singur AP. Un astfel de prograrrTciteste intrarile sale, calculeaza starea sa si actualizeaza iesirile sale.

Standardul contine structuri care permit programelor diferite sa fie incarcate si executate pe acelasi AP (separat sau in multi-tasking) si mai j multor AP sa functioneze in paralel si sa comunice prin 'cai de acces', care sunt abstractii ale protocoalelor de comunicatie.

Un program este construit dintr-un numar de elemente software'' diferite, scrise in oricare din cele cinci limbaje.

Toate limbajele utilizeaza acelasi set de caractere si sunt in conformitate cu standardele ISO si cu conventiile pentru codificareaj timpului. Standardul defineste tipurile de date elementare, declaratiile i tipurilor de date compuse, initializarile. Sunt permise si variabile 'direct reprezentate', care sunt adresate in locatiile de memorie! destinate intrarilor, iesirilor sau variabilelor interne.

in esenta, in acest limbaj se scriu relatii dintre valorile starii curejite] si a variabilelor de intrare, pe de o parte,/si valorile starilor urmatoare.si ale iesirilor,/pe de alta partef plus cateva specificatii referitoare la_ ordinea evaluarii conditiilor implicate?

DBF reprezinta un limbaj grafic ce permite compunerea unor junetii bloc simple in vederea formarii unor functii bloc mai mari si mai complexe. Interactiunea^dintre functiile bloc este reprezentata prin 'conductori' care conecteaza variabilele de iesire de la un bloc cu variabilele de intrare ale altui bloc.

exista structuri care nu sunt usor de exprimat prin notatii i grafice. Acestea include buclele FOR, operatiile cu matrici, intreruperile si I'-atgofitmii complecsi in general.

*. '~'O bucla FOR incepe cu instructiunea for, se termina cu instructiunea end si are forma generala:

for x=expresie.

.

end.

unde x este contorul de ciclu. Daca expresie este un scalar, atunci bucla se executa o singura data, cu x=valoarea scalara. Daca expresie este un vector sau o matrice, atunci instructiunile dintre for si end sunt executate cate o data pentru fiecare element al vectorului sau coloana a matricii expresie. La fiecare iteratie contorului de ciclu x i se atribuie valoarea corespunzatoare urmatorului element din vectorul expresie, respectiv valorile continute in urmatoarea coloana a matricii expresie. Instructiunea end are rolul de a arata ca liniile de program dintre for si end sunt executate iterativ, pentru fiecare valoare a contorului de ciclu x. Dupa ce acesta ia ultima valoare posibila, se iese din bucla si executia programului se continua cu instructiunea de dupa end. Prin urmare, o bucla FOR permite repetarea unei secvente de un numar de ori fix si predeterminat.

Limbajele LI si TS sunt in esenta limbaje imperative si secventiale clasice. Primul este un limbaj de asamblare de nivel inferior iar al doilea este un limbaj de nivel inalt asemanator PASCAL.

Utilizand intreaga putere a acestor limbaje (de exemplu, buclele WHILE), este posibil sa se scrie proceduri al caror timp de executie este necunoscut, nelimitat si chiar infinit.

O bucla WHILE evalueaza o expresie in mod repetat, pana cand aceasta este adevarata, numarul de iteratii nefiind cunoscut initial, terminarea buclei are loc la indeplinirea conditiei impuse prin expresia evaluata, care este testata la inceputul fiecarui ciclu. Forma generala a unei bucle WHILE este:

while expresie

.

end

Unde, la fel ca si in cazul buclelor for instructiunea end are rolul de a arata ca instructiunile cuprinse intre while si end sunt executate iterativ. Bucla while este executata atat timp cat expresie este adevarata. De obicei, expresie contine o conditie exprimata printr-un operator relational. Aceasta conditie este testata la inceputul fiecarui ciclu. Cat timp ca este adevarata, instructiunile dintre while si end sunt executate.

DSS constituie un formalism care combina operatiile secventiale si paralele.

2. Diagrama scara

Primele AP, proiectate pentru industria automobilelor, au inlocuiti schemele de de comanda cu relee. Simbolurile utilizate in DS, -] [- pentru contact normal .deschis (ND), -]/[- pentru contact normal inchis (NI) si -( )-pentru o iesire a procesului, au constituit baza acestui limbaj.

in continuare se va prezenta, prin intermediul a patru exemple? simple, modul de programare cu DS, folosind adresarea I/E de la diferite AP* prezentate in paragraful 2.

Diagrama cu blocuri functionale

Circuitele integrale logice din familiile TTL si CMOS sunt larg utilizate in sistemele digitale (incluzand si placile din interiorul AP). Aceste circuite sunt reprezentate prin blocuri functionale (sau simboluri logice). Aceste simboluri pot fi utilizate pentru a descrie operatiile unui program de AP.

Iesirea unei porti SI, prezentata in figura 5.a este adevarata daca (si numai daca) toate intrarile sunt adevarate. Operarea portii din figura 5.a poate fi reprezentata prin tabelul din figura 5.b. in figura 5.c avem lampa , de semnalizare 'Functionare normala' a pompei din figura 1 conectata la un AP al firmei Siemens programat utilizand blocuri functionale.

Blocul iesirii, notat prin '=', este activat cand intrarea sa este l, asa ca lampa Q 8.2 este activata cand toate intrarile in poarta SI sunt adevarate.

Adeseori trebuie facute teste pentru a vedea daca un semnal nu este adevarat. Acest lucu este reprezentat printr-un cerc mic 'o'. Iesirea Z a portii SI din figura 5.d este adevarata daca (si numai daca) A si C sunt adevarate si B nu este adevarat.

Figura 5. Programe de AP utilizand blocuri functionale

(bazate pe notatia Siemens): a) o poarta SI; b) tabela de adevar

pentru poarta SI; c) lampa de 'functionare normala' din figura 1 cu DBF;

d) o intrare inversata; e) cilindrul hidraulic din figura2 cu DBF

Figura 6. Utilizari ale blocului functional SAU: a) poarta SAU;

b) poarta SAU cu intrare inversata; c) testul lampii este prevazut

suplimentar fata de figura 5.c

Iesirea Z a unei porti SAU, din figura 6.a, este adevarata daca oricare din intrari sunt adevarate. Simbolul '>' din poarta inseamna 'iesirea este adevarata daca una sau mai multe intrari sunt adevarate'. Poate fi testat si inversul semnalului, ca in cazul precedent, printr-un cerc mic. Iesirea Z a portii din figura 6.b. este adevarata daca A este adevarat sau B este fals sau C este adevarat, in figura 6.c am utilizat o poarta SAU pentru a adauga un test de lampa la becul de semnalizare 'Functionare normala' a blocului hidraulic prezentat si in figura

Circuitul din figura 6.C este o combinatie SI/SAU. AP Master al firmei ABB are, pe langa porti logice de baza, si blocuri de combinatii logice, in figura 7.a este un bloc Master corespunzator celui din figura 6.c (cu un program Master care se refera la nume in baza sa de date). Similar, pentru o combinatie SAU/SI poate fi utilizat in programul Master blocul SAU/SI din figura 3'.7.b.

4. Lista de instructiuni

O lista de instructiuni este un set de instructiuni care seamana cu instructiunile unui limbaj de asamblare. Limbajul LI este cea mai flexibila forma de programare pentru utilizatorul experimentat, si este la fel de usor de urmarit ca si DS sau DBF.

Figura 8 prezinta o operatie simpla atat in formatul DS, cat si inl DBF pentru un AP al firmei Siemens (foarte asemanatoare cu secventele de program realizate pentru APC 700, corespunzator aceleiasi operatii).

Figura 10 arata o operatie tipica in format DS si DBF.

AP al firmei Mitsubishi utilizeaza de asemenea limbajul LI, desi | manualul ds utilizare recomanda construirea intr-o prima faza a DS si apoi translatia ei in LI. Programul DS al AP prezentat in figura 11 cu notatia Mitsubishi corespunde programului LI din tabelul 4.



5. Textul structurat

Limbajul TS prezinta o sintaxa si o functionalitate asemanatoare limbajului PASCAL. Utilizarea limbajului TS in operatiile logice si de I/E pe bit nu ofera claritatea si simplitatea necesare.

Una din utilizarile acestui limbaj o reprezinta declararea textuala a blocurilor functionale. Figura de mai jos este un ex in acest sens.

Figura 12. Corespondenta dintre DBF si TS pentru un bloc functional DIVIDE: a) declararea grafica; b) declararea textuala

Cuvintele-cheie FUNCTION si END_FUNCTION delimiteaza declaratia, in care DIVIDE este numele functiei iar REAL este tipul rezultatului produs de ea. intrucat toate reprezentarile de date sunt manipulate prin intermediul unor variabile, lista parametrilor acestui bloc functional este o lista a variabilelor de intrare. Acestea sunt specificate in sectiunea dintre cuvintele-cheie VAR_NPUT si END_VAR. In cazul acestui exemplu, variabilele de intrare sunt A si B, de tipul REAL, respectiv INT. Corpul blocului functional este definit prin invocarea altor doua functii si anume '/' pentru impartire si INT_TO_REAL, care este o functie de conversie a tipului unei variabile, din intreg in real.

Partea superioara a figurii defineste interfata grafica a functiei, prin numele ei, numele si tipul variabilelor de intrare si tipul rezultatului. Partea inferioara defineste in forma grafica corpul functiei. Ca si in figura 12.b, toate declaratiile sunt delimitate prin cuvintele-cheie FUNCT1ON si END_FUNCTION.

6. Diagrama de stare secventiala

In esenta, o DSS consta intr-un set de pasi interconectati prin legaturi directionale, pe baza unor tranzitii. Fiecare pas poate avea asociat un numar (nul sau nenul) de actiuni si fiecare tranzitie are asociata o conditie de tranzitie. Controlul se desfasoara prin parcurgerea pasilor in lungul legaturilor, atunci cand conditiile asociate tranzitiilor intalnite sunt satisfacute. Poate exista un singur pas initial, de la care incepe controlul.

DSS din figura 13 este o parte a unui program mai mare, ce comanda deplasarea unui carucior intre doua limite. El este pus in miscare prin doua semnale de comanda, Motor inainte si Motor inapoi, care in programul de AP sunt reprezentate prin doua variabile booleene cu acelasi nume. llxista doua limitatoare de cursa care sesizeaza atingerea de catre carucior a capetelor de cursa din stanga si din dreapta. Valorile citite de la aceste limitatoare sunt reprezentate prin variabilele booleene Limita dreapta si Limita stanga. Rolul DSS din figura 13 este de a controla efectuarea unui singur ciclu stanga-dreapta si dreapta-stanga.

In figura 13 pasii sunt Asteptare, Deplasare dreapta, Deplasare stanga si Gata. Pasul initial este Asteptare, lucru indicat prin dreptunghiul realizat cu linie dubla. Tranzitiile sunt reprezentate prin segmentele orizontale plasate pe legaturile directionale verticale.

La pornire controlul este atribuit pasului Asteptare. Controlul ramane la acest pas pana cand este validata tranzitia de la pasul Asteptare la pasul Deplasare dreapta. Conditia asociata acestei tranzitii este ca valoarea variabilei incepere ciclu (ce reprezinta un semnal de la operator) sa devina adevarata.

La satisfacerea acestei conditii controlul paraseste pasul Asteptare si avanseaza in pasul Deplasare dreapta. Acest pas are atasata o singura actiune, aceea de trecere in 'l' logic a valorii variabilei booleene Motor inainte, lucru care se petrece atata timp cat controlul ramane la pasul Deplasare dreapta.

Atunci cand limitatorul dreapta detecteaza sosirea caruciorului, valoarea variabilei Limita dreapta-devine adevarata. Acest lucru valideaza tranzitia de la pasul Deplasare dreapta la pasul Deplasare stanga. Secventa de evenimente ce urmeaza poate fi usor dedusa pe baza celor prezentate. Un ultim aspect ce trebuie mentionat este acela ca, la sfarsitul unui ciclu complet (reprezentat prin conditia Sfarsit de ciclu), controlul revine la pasul Asteptare, pentru a putea reincepe .un nou ciclu.

Figura 1 DSS pentru comanda unui carucior

Exemplul prezentat permite introducerea unor noi elemente ale DSS.

Deci, fiecare pas are asociate 0, l sau mai multe actiuni. Un pas poate fi

activ sau inactiv, in acceptiunea standardului IEC 1131-3, un pas este activ

atunci cand 'are controlul'.Pasul initial este singurul pas activ la inceputul executiei si in fiecare DSS poate exista un singur pas initial.

Pentru fiecare pas exista o structura de variabile corespunzatoare, care au acelasi nume cu pasul. Aceasta structura are doua clemente: fanionil pasului si timpul acumulat. Primul este un element boolean care indica daca pasul este activ sau inactiv. Al doilea este un element de tip TIME (timp), care memoreaza timpul scurs de la ultima activare a pasului. De exemplu, daca un pas este denumit S, atunci S.X este fanionul pasului S iar S.T este timpul acumulat al pasului S. La fiecare dezactivare a pasului S valoarea lui S.T este memorata. La o noua activare a pasului S aceasta valoare este resetata.

In programele in limbaj DSS, legaturile directionale conecteaza pasii la tranzitii si tranzitiile la pasi. intre un pas si o tranzitie, respectiv intre o tranzitie si un pas, poate exista o singura conexiune. Orice alte conexiuni (pas cu pas, tranzitie cu tranzitie, etc.) sunt interzise.

De exemplu, in figura 14.a exista doua legaturi: de la pasul S3 la tranzitia t si de la tranzitia t la pasul S4. S3 este pasul predecesor al lui t iar S4 este pasul succesor al lui t.

Desi standardul IEC 1131-3 nu prevede utilizarea sagetilor pentru al specifica directia unei legaturi, sagetile pot fi folosite optional pentru imbunatatirea claritatii.

Tranzitia ce separa doi pasi reprezinta conditia pentru care arc loc j transferul controlului de la un predecesor la un succesor. De aceea, fiecare tranzitie are asociata o conditie de tranzitie, care este o expresie booleana. Atunci cand o conditie este evaluata 'l' logic, are loc executia tranzitiei corespunzatoare ei.

Standardul IEC 1131-3 furnizeaza si regulile pentru realizarea unor: DSS corecte. Acestea sunt denumite reguli de evolutie si sunt reprezentate in figura 14.

Cazul din figura 14.a este o secventa liniara simpla. Controlul evolueaza de la S3 la S4 daca S3 este activ si daca conditia asociat; tranzitiei t este adevarata. Dupa executia tranzitiei t, S3 este dezactivat si devine pasul activ.

Combinatia din figura 14.b este denumita divergenta a selectiei ; secventei. Controlul evolueaza de la S5 la S6 daca S5 este activ si se executa I ffaiizitia ti, sau de la S5 la S7, daca S5 este activ si se executa tranzitia t2.

Cazul ilustrat in figura 14,c se numeste convergenta a selectiei secventei si reprezinta sfarsitul unei selectii de secventa. In acest caz, controlul evolueaza de la S7 la S10 daca S7 este activ si se executa ti, sau deTa S9 la S10 daca S9 este activ si se executa t2.

Evolutia controlului trebuie sa conduca la activarea unui singur pas. Structura din figura 14.d inlatura aceasta restrictie, permitand activarea simultana a mai multor pasi. Aceasta se numeste divergenta a secventelor simultane. Controlul trece de la S3 la S4,S5, daca S3 este activ si este executata tranzitia t. Dupa activarea lor simultana, secventele ce incep cu S4, S5, evolueaza independent.

Structura din figura 14.e se numeste convergenta a secventelor simultane si este utilizata pentru a incheia secventele simultane. Controlul trece de la S10, S1l, la S12 daca toti pasii S10, S1l, sunt activi si este executata tranzitia t.

Figura 15 prezinta doua aplicatii mai interesante ale acestor reguli. Cea din figura 15.a este un caz particular de selectie a secventei, utilizat pentru a 'sari' peste o anumita secventa. Situatia din figura 15.b este un alTjiaz particular de selectie a secventei, utilizat pentru readucerea controlului intr-un pas precedent.

Pasii in sine nu realizeaza functii de control. In esenta, ei servesc la alocarea unor nume 'starilor' in care se afla sistemul considerat. In standardul IEC 1131-3 o actiune poate fi:

. o variabila booleana, de tipul BOOL

. un fragment de program scris in TS

. o structura exprimata prin DBF sau DS

. o dss.

Numele unei actiuni booleene trebuie sa fie acelasi cu al variabilei pe care o contine.

Pasii care nu au asociate actiuni pot fi considerati puncte in care sistemul asteapta indeplinirea unei conditii.

Actiunile sunt entitati complet separate de pasi. In consecinta, o aceeasi actiune poate fi asociata la doua sau mai multi pasi diferiti. Din acest motiv, actiunile nu pot fi 'anonime'. Dreptunghiul ce desemneaza un bloc actiune este impartit in doua, trei sau patru zone. Figura 16 arata cazul cel mai simplu, cu doua zone. Literele din regiunile din extrema stanga se numesc calificatori. Fiecare asociere pas - actiune poate avea un alt calificator. Standardul IEC 1131-3 defineste setul de calificatori elementari. Acestia sunt prezentati in tabelul 5.

Calificatorii N, R si S sunt fara parametri. Calificatorii L, D si P accepta un singur parametru, de tipul TIME (timp). Standardul defineste si urmatoarele combinatii de calificatori:

SD: memorat si intarziat in timp

DS: intarziat in timp si memorat

SL: memorat si limitat in timp.

Rolul unui calificator in asocierea actiunii A cu pasul S este de a determina cand trebuie initiata sau terminata executia actiunii A in raport cu activarea sau dezactivarea pasului S.




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1669
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved