Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica


Informatica


Qdidactic » stiinta & tehnica » informatica
Limbajele de programare ale automatului



Limbajele de programare ale automatului


Limbajele de programare ale automatului


1 Introducere


Cei mai multi producatori de automate programabile ofera aceleasi tipuri de instructiuni de baza, dar exista diferente de forma, operatii, etc., de la un producator la altul.

Comisia Electrotehnica Internationala (IEC) este o organizatie care dezvolta standarde pentru diferite domenii ale ingineriei electrice. In ultimii ani aceasta comisie a dezvoltat si publicat standarde pentru programarea automatelor programabile. In mod concret, aceste standarde recomanda diferitilor producatori sa ofere acelasi set de instructiuni. Documentul care se refera la aceasta problema este standardul IEC 1131. Standardul are cinci parti si cuprinde informatii despre cerintele hardware, limbajele de programare, ghidul utilizatorului, standarde de comunicatii.



In general, numarul instructiunilor care apare in IEC 1131 este mai mic decat cel oferit de producatori. Instructiunile care apar in plus sunt utilizate pentru elaborarea aplicatiilor mai deosebite si constituie un criteriu pentru alegerea unui anumit tip de automat, pe langa criteriile de pret si calitate. Studiul standardului permite realizarea cu usurinta a programelor pentru automatele programabile produse de diferiti producatori, cu foarte putine probleme de adaptare.

Normele IEC 1131 defienesc SFC (Sequential Function Chart ) ca fiind un mijloc destinat pentru structurarea si organizarea unui program. Unele medii de programare (cum este si cazul programul utilizat in lucrearea de fata) ofera compilatoarea grafice pentru realizarea programelor pentru automate. SFC are la baza reprezentarea sub forma de retea GRAFCET a actiunilor secventiale.

In cadrul acestor norme sunt definite doua limbaje litereale :

IL (Instruction List) sau STL (StaTement List), care are o structura asemanatoare cu limbajele de asambalare ala microprocesoarelor ;

ST (Structured Text), care foloseste instructiuni de atribuire, de selectie si de control a subprogramelor avand o structura apropiata de limbajele de nivel inalt;

si doua limbaje (semi)grafice :

LD (Ladder Diagram), care permite programarea aplicatiilor intr-o maniera asemanatoare cu proiectarea unui circuit cu contacte si relee. Limbajul opereaza numai cu variabile booleene ;

FBD (Function Block Diagram), care este o extensie a limbajului LD, continand blocuri complexe. Spre deosebire de LD, acest limbaj permite lucrul si cu variabile de tip real ;


Tipurile de date elementare definite de normele IEC 1131 sunt :

Booleene, notate cu BOO L ;

Intregi, notate cu INT;

Cuvinte (16 biti) si cuvinte duble (32 biti) notate cu WORD si respectiv DWORD ;

Reale (32 biti), notate cu REAL ;

Siruri de caractere, noatate cu STRING ;

Variabile de tip timp si data, notate TIME si respectiv DATE.

Este permisa utilizarea unor date de tip tablou (ARRAY) si structura (STRUCT), precum si date derivate din acestea. Identificarea datelor se face utilizand atat adrese absolute cat si simbolice.

Adresarea absoluta utlizeaza denumirea zonei de memorie pentru identificarea adresei. Denumirea zonelor de memorie pot cuprinde doua prefixe.

Primul prefix poate fi :

% I, pentru intrari ;

% Q, pentru iesiri ;

% M, pentru variabile interne ;

Iar al doilea poate fi :

x.y, pentru variabilele de tip boolean. Valoarea x reprezinta octetul , iar valoarea y  reprezinta bitul.

B, pentru octet(byte) ;

W, pentru cuvant(WORD) ;

D, pentru dublu cuvand ()

Adresarea indirecta utilizeaza identificatorii, care sunt siruri de caracatere alfanumerice, incepand cu o litera, pentru identificarea adresei. In aceste cazuri este nevoie de editarea unei tabele de simboluri pentru a face legatura dintre adresa absoluta si cea indirecta.



2 RSLogix 5000 si RSLinx



Pentru programarea automatului s-a utilizat programul produs de aceeasi firma Rockwell si anume RSLogix 5000 (Fig. 1). Acesta intruneste majoritatea cerintelor impuse de standardul IEC 1131 in privinta programarii automatelor.

Fig. 1 RSLogix 5000 - Mediul de programare al automatului


Acest mediu de programare permite utilizatorului sa poata scrie procedurile in diferite limbaje cum ar fi Ladder Diagram, Function Block Diagram, Sequential Function Chart. De asemenea este impletmentat si un limbaj literal cum este Structured Text.

Un proiect implementat in RSLogix este impartit in mai multe structuri ierarhice. Astfel proiectul poate contine (in cazul automatului programabil ControlLogix 5555) pana la 32 de task-uri. Fiecare task este impartit in programme iar fiecare program contine una sau mai multe rutine, in functie de memoria de care dispune automatul.


Rutina - este cea mai mica unitate in care se poate imparti un proiect implementat in RSLogix. Incercand sa dam o definitie, putem spune ca rutina este un bloc de cod executabil. Cu alte cuvinte putem asemana rutina cu o functie (in mediile de programare conoscute). Fiecare rutina poate fi implementata in unu din cele patru limbaje de programare pe care acest mediu le pune la dispozitie. Fiecare mediu in parte este reprezentat printr-o poza diferita pentru a putea fi diferentiate mai usor de catre programator.

Rutinele care sunt proiectate pentru un scop comun se grupeaza intr-un program, chiard aca ele sunt implementate in limbaje diferite. Fiecare rutina ce apartine unui program are acces doar la variabilele ce au fost definite in cadrul acelui program. In RSLogix aceste variabile se numesc tag-uri. De asemenea orice rutina din cadrul aceluiasi program poate cere executia altei rutine -aflate in acelasi program - chiar daca rutina chemata in executie este scrisa intr-un mediu diferit.



Programul - reprezinta urmatoarea treapa ierarhica in care se poate diviza un proiect. Ca o definitie putem spune ca un program este un grup de rutine si date care au un scop comun. Fiecare program are definit pentru rutinele care se afla ub componenta lui un set de variabile (tag-uri). Aceste tag-uri sunt accesibile doar rutinelor ce se afla in acelasi program. Datorita acestui fapt datele precum si rutinele din programe diferite sunt separate intre ele. Acest fapt permite reutilizarea codului scris. Programele sunt organizate in nivele superioare si anume in task-uri. Intr-un singur task se pot gasi pana la 32 de programe, fiecare din programe putand contine una sau mai multe rutine. Un program este iedntificat, ca si in cazul rutinelor de un simbol grafic ( Fig. 2) :

Fig 2 Simbolul grafic pentru un program

Task-urile - reprezinta ultimul nivel ierarhic. Taskurile sunt folosite pentru a putea « programa » executia programelor ce se afla in componenta lui. Taskurile pot fi de doua tipuri :

continuu - este taskul care se executa continuu pana cand este intrerupt de un task periodic ; intr-un proiect pot fi unul sau nici un task continuu .

periodice - sunt task-urile care se executa in functie de timp ; pentru astfel de task-uri se defineste o perioada (o rata de executie) si o prioritate de intrerupere a alor task-uri. Pot exista intr-un proiect pana la 32 de task-uri periodice (daca nu exista nici unul continuu) sau 31 de task-uri periodice si unul continuu.

Si in cazul task-urilor exista un simbolism grafic, pentru a putea fi diferentiate, Fig  3 :

Fig. 3 Task Continuu siTask Periodic



Odata ce un task a fost declansat, el va executa toate programele care se afla in el, pana cand este intrerupt de un alt task. Programele se executa in ordinea in care sunt plasate in task, de la primul pana la ultimul.  Ordinea de executie a programelor din interiorul unui task se poate schimba.


In Fig. 4  este prezentata o astfel de ordine de executie a unor programme ce se afla in cadrul unui task continuu:

Fig 4 Ordinea de executare a programelor din cadrul unui task


Fiecare program din orice task (indiferent daca este periodic sau continuu) poate contine una sau mai multe rutine scrise in cele patru limbaje de programare. Insa obligatoriu ca o rutina din fiecare program sa fie setata ca fiind «rutina principala », ea fiind prima care se va executa cand programul respectiv va fi executat. Pe langa aceasta rutina principala se mai poate seta inca o rutinacare se va ocupa cu tratarea diferitelor erori ce pot aparea in rularea programelor. Rutina principala poate sa fie implementata in oricare din cele patru limbaje de programare. Cand o rutina este setata ca fiind principala, pe simbolul ei grafic apare imprimat cifra «1 », semn ca ea va fi prima care se va executa din programul respectiv (Fig. 5).


Fig. 5 Rutina principala


Dupa cum am mai spus si mai devreme, o rutina are acces doar la variabilele(tag-urile) din cadrul aceluiasi program. Insa mai exista si aun alt tip de variabile si anume cele care sunt organizate pe acelasi controler (L55). La acest tip de tag-uri au acces toate rutinele ce lucreaza pe acel procesor (controler).

Dupa cum reiese si din Fig. 6 toate aceste informatii despre proiectul in RSLogix apar situate intr-o fereastra pozitionata in partea stanga jos a ecranului principal. In partea superioara a ecranului se afla optiunile pentru setarea caii catre procesorul automatului in memoria caruia se va incarca proiectul. Tot in aceasta parte se afla si optiunile prin care programatorul poate sa porneasca rularea proiectului, odata ce el a fost incarcat in memoria automatului.



Fig. 6 Proiect implementat in RSLogix


Legatura dintre modulele automatului programabil si softul de proiectare se face prin intermediul unor drivere de comunicatie. Aceste drivere se gasesc grupate toate intr-un singur progra numit RSLin. Acest program se instaleaza si ramane in memoria calculatorului care ruleaza RSLogix. Programul de drivere face efectiv posibila incarcarea in memoria automatului a proiectelor ce au fost implemetate in RSLogix si punerea automatului pe modul de rulare (run mode).

In Fig. 7 se poate observa stuructura programului RSLinx :


Fig 7 RS Linx


in dreapta sunt automatele programabile detectate, active. Doar unul este pornit, aceasta conexiune s-a realizat prin EthernetIP

in partea stanga in chenarele albastre sunt modulele care sunt instalate in automat precum si tipul lor, numarul din fata ficarui modul semnifica nr slotului din carcasa in care este instalat respectivul modul



3 Limbajul FBD (Function Block Diagram)


Fiind la prima utilizare a acestui automat programabil si a softurilor prin care se poate programa automatul am ales sa implementez algoritmul de conducere a procesului neliniar intr-un limbaj accesibil pentru cei fara experienta. De aceea rutina care contine codul proiectului a fost implementata in FBD. (Fig. 8).

Fig 8 Structura  Proiectului


Datorita faptului ca am utilizat doar o rutina scrisa in FBD, celalalte limbaje nefiind utilizate in proiect, voi face o descriere doar a acestui tip de limbaj de programare a automatelor.

Limbajul FBD este un limbaj ce utilizeaza elemente grafice. El permite programatorului sa construiasca functii complexe utilizand blocurile existente in bibliotecile mediului.

Un program FBD este alcatuit din blocuri de functii elementare, conectate intre ele prin linii de legatura. Programul se executa de sus in jos si de la standa la dreapta. Fiecare bloc are un numar de intrari si iesiri. Blocul este reprezentat printr-un dreptunchi. Intrarile sunt in partea din stanga si iesirile sunt in partea din dreapta a blocului. Un bloc elementar realizeaza o singura functie asupra intrarilor. Functia pe care o realizeaza blocul este scrisa in interiorul acestuia. La intrarile fiecarui bloc sunt legate variabile de intrare, iar variabilele de iesire ale blocurilor pot fi conectate la iesirile automatului sau la intrarile altor blocuri. Tipul variabilelor de intrare trebuie sa corescpunda cu tipul cerut de intrarea blocului. Iesirea blocului poate fi de acelasi tip ca si intarea, dar exita cazuri cand pot diferi tipul marimilor de intrare fata de tipul marimilor de iesire.

Evaluarea unui bloc nu se poate face decat atunci cand starile tuturor intrarilor sunt precizate.

Conform recomandarilor IEC, fiecare bloc are o intrare de validare EN pe langa intararile asupra carora realizeaza operatii si o iesire ENO, care poate fi folosita pentru testare. Cand EN este FALSE operatiile definite pe bloc nu sunt executate si iesirea ENO este FALSE. Daca valoarea EN este TRUE, operatiile se executa si iesirea ENO devine TRUE. De asemenea, valoarea ENO devine FALSE, daca a aparut o eroare la executarea operatiilor blocului (Fig. 9).




Fig. 10 Bloc Functional, conform recomandarilor IEC 1131



Bibliotecile mediilor de programare pentru automate ofera o mare varietate de blocuri, care respecta sau nu recomandarile IEC 1131. Unele medii ofera blocuri complexe, care realizeaza functii de reglare (PID) sau operatii matematice complexe(integrale, dezvoltari in serie, etc.)

Principalele blocuri pot fi impartite in doua mari categorii:

Blocurile standard- care corespunde operatorilor standard si limbajului  ST ;

Blocurile speciale- implementate prin proceduri complexe;



Blocurile standard sunt blocuri de manipulare a datelor (se mai numesc si blocuri de asignare), blocuri pentru operatii boolene (AND, OR, XOR), blocuri aritmetice (pentru efectuarea de operatii de adunare, scadere, inmultire si impartire), blocuri de comparative (pentru implementarea operatorilor logici: mai mic, mai mare, etc.).

Blocurile speciale sunt blocuri de manipulare a datelor (multiplexoare, generatoare de numere aleatoare), contoare, temporizatoare, blocuri de procesare a semnalelor (regluatoare PID, integratoare, derivatoare), blocuri generatoare de semnal, blocuri matematice (de calcul a valorii absolute, a functiei exponentiale, logaritmului, a radacinii patrate, a functiilor trigonometrice).



Aspectul general al unui program FBD este prezentat in Fig 10


Fig 10 Aspectul unui program FBD


4 Interfata Om-Masina


Se spune ca orice system de automatizare fara o interfata om-masina asociata este "orb". Interfata om-masina (Human Machine Interface - HMI) ofera posibiliatatea operatorilor sa poata urmari in timp real evolutia procesului. De asemenea prin intermediul acestor interfete se pot implementa, salva si chiar tipari in timp real alarme care sa previna operatorii ca exista problme cu sistemul pe care il controleaza.

Exista astazi multe programe care pot implementa astfel de interfete om-masina care pot fi folosite la monitorizarea si controlul proceselor industriale. Un exemplu in acest sens este si programul ultilizat in acest proiect pentru supervizarea si conducerea procesului nelinar, RSView Fig 11.

Fig 11 Interfata om-masina RSView

Principalele utilitati ale unei interfete om-masina sunt acelea de a conduce, superviza si monitoriza procesele. Acestea pot fi folosite la controlul si conducerea proceselor din diverse industrii cum ar fi industria petrolului, a semiconductorilor, industria producatoare de autovehicole, industria chimica si farmaceutica si in multe alte domenii.

O astfel de interfata om-masina trebuie sa fie capabila sa expuna texte, imagini, grafice ce au fost declansate in sistem. De asemenea aceste programe trebuie sa fie capabile sa manipuleze sirusi de caractere, sa efectueze diverse calcule matematice, sa opereze in algebra booleana, toate acestea usurand sarcinile automatului programbil.

Prin intermediul acestor interfete operatorul poate urmari evolutia procesului condus dintr-un loc sigur, nefiind necesara presenta lui in apropierea insalatiei tehnologice. Problemele sau anomanliile ce pot aparea in timpul conducerii proceselor pot fi rapid sesizate si remediate datorita alarmelor ce pot fi implementate in cadrul acestor interfete. De asemenea, urmarirea unui istoric al acestor probleme a caror evidenta poate fi pastrata in anumite baze de date sau chiar printate pot duce la remedierea diverselor greseli de proiectare in algoritmii de conducere a proceselor. Aceste erori corectate vor duce la optimizarea proceselor conduse si la cresterea productivitatii.

Fig 12 Evolutia marimilor de proces

Pe langa alarme, prin intermediul interfetelor om-masina se pot proiecta grafice de evolutie a diversilor parametrii ai proceselor (trend). Aceste grafice sunt foarte utile mai ales in cazul utilizarii unor algoritmi de reglare a proceselor cum este spre exemplu un regularor PID. Pe aceste reprezentari grafice se pot observa curba pe care valorile marimilor de iesire din proces o urmaresc pana la atingerea unei valori a referintei setate. Un exemplu de astfel de grafic este prezentat in Fig 12. Aici apare coloarata cu rosu evolutia marimii de iesire care tinde sa urmareasca referinta setata - in reprezentarea din Fig 12 referinta setata apare in culoarea albastru.

Aceste grafice pot fi configurate astfel incat la producerea anumitor evenimente sa porneasca sau sa opreasca reprezentarea marimilor de proces care intereseaza operatorul uman. Si aceste reprezentari ca si alarmele pot fi salvate in baze de date si analizate ulterior de catre operatori.

Exista doua categorii de astfel de trend-uri si anume:

cele care ruleaza in timp real - marimile din cadrul unei astfel de reprezentari sunt actualizate continuu pe toata durata de functionare;

cele offline - care ofera evolutiile diverselor marimi de proces din trecut. Spre deosebire de graficele care ruleaza in timp real, marimile care sunt reprezentate in trend-urile offline sunt actualizate numai atunci cand apar anumite evenimente sau cand sunt programate de operatori.


Pentru a putea obtine evolutia marimilor de process precum si alte informatii importante care de obicei se afla stocate in memoria cutomatului programabil, interfata om-masina trebuie sa dispuna de un mijloc de comunicare cu automatul. In cazul proiectului de fata, legatura dintre automatul programabil si interfata s-a stability fizic prin modulul de EtherenetIP. Programul care gestioneaza comunicatia cu automatul este RSLinx.

In continuare vom face o scura descriere a programului RSView SE  prin intermediul caduia am realizat interfata om-masina asociata sisetemului de conducere a procesului neliniar.

Dupa cum se poate observa din Fig 11 in partea stanga a ecranului din RSView avem o fereastra (Explorer) in care se gasesc aproape toate elementele necesare pentru proiectarea interfetei. In fig 13 am incercat sa explic o parte din elementele utilizate in aceasta interfata:

Fig 13 Fereastra Explorer din RSView


In partea superioara a mediului de proiectare se afla meniurile cu principalele elemente grafice ce pot fi plasate intr-o interfata cu utilizatorul. Tot in aceasta zona se mai afla si obisnuitele butoane de salvare, deschidere si printare a proiectului precum si butoanele de rulare a aplicatiei. Elementele grafice se comporta la fel ca in cazul unor medii de programare vizuala (adica pentru plasarea lor in cadrul unei interfete, programatorul nu trebuie sa faca altceva decat sa le "traga" in zona activa de lucru-drag and drop, dupa care se pot seta eventualele propietati ale obiectului).


In Fig. 14 sunt exemplificate cele prezentate anterior:


Fig 14 Meniul superior din RSView


In partea din centru dreapta se afla suprafata de lucru unde se implementeaza practice toate elemetele discutate anterior, de la poze, texte, animatii, pana la butoane de pornire/oprire a instaltiilor, grafice de evolutii a marimilor de process, etc.




Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright