Sunteți pe pagina 1din 15

Referat la Comunicatii Mobile

Limbaje de programare proprii ale DCS

Datorita dezvoltarii tehnologice s-a impus utilizarea calculatoarelor n sistemele de control, mai ales datorit posibilitilor de implementare a algoritmilor evoluai de control. Impedimentul major n utilizarea sistemului de control format dintr-un calculator la care erau conectate toate echipamentele dintr-o instalaie, era faptul c, la defectarea calculatorului, ntreaga instalaie trebuia oprit pn la remedierea defectului. O metoda de eliminare a acestui impediment a constat n distribuirea activitilor de control pe mai multe subsisteme, astfel nct, la defectarea unui subsistem, celelalte s nu fie afectate. Aceasta a luat denumirea de Sistem de Control Distribuit. Cei mai cunoscuti producatorii care au reusit sa se impuna pe piata internationala cu un astfel de sistem sunt: Emerson, Honeywell, Yokogawa, ABB. Configurarea unui DCS se mparte n 3 mari pri: configurarea structurii hardware i a subsistemului de intrri/ieiri; configurarea logicii de control; configurarea interfeei de operare. Limbajul de programare Sebol Sebol este un limbaj de programare creat pentru controlul unui proces. Pe langa functiile generale pe care le are orice limbaj de rogramare Sebol are si caracteristici specifice controlului unui proces. Limbajul de programare Sebol este impartit in doua unitati: programe si functii. O functie este un subprogram care este realizat in Sebol. Functiile pot fi apelate in cadrul unui program iar rezultatele proceselor pot fi returnate tot in cadrul programului. Sebol furnizeaza un numar mare de functii predefinite dar si functii care pot fi definite de utilizator. Regulile programarii in Sebol 1)Un program Sebol este compus din mai multe linii de comanda. In mod normal o linie de comanda este scrisa pe un singur rand. Daca este mai mare de un rand se poate trece la urmatorul rand folosind // 2)Punand * la inceputul randului intreaga linie va fi considerata un comentariu. Tipuri de date disponibile in Sebol Tipul intreg Tipul caracter

Tipul real

Variabile disponibile in Sebol: Dupa tipul de date al variabilelor avem: variabile de tip caracter variabile numerice care se impart in doua categorii: variabile intregi si variabile reale. variabile locale variabile globale variabile simple vectori

Dupa modul de folosire avem:

Dupa numarul de elemente continute avem:

Variabile trebuiesc declarate inainte de a fi folosite. Totusi atunci cand este folosita instructiunea #IMPLICIT unele variabile sunt considerate ca si cum ar fi fost declarate in mod automat. Identificatori Un identificator poate fi inlocuit cu un anumit caracter folosind instructiunea #define. Sintaxa instructiunii este: #define <identificator><sir de caractere> Exemplu: #define OPEN 2 block SIO-22 VALVE1,VALVE2 ........................ drive [VALVE1=OPEN] drive [VALVE2=OPEN] Operatori si expresii Limbajul de programare Sebol contine urmatoarele tipuri de operatori: operatori aritmetici - operatori binari: +, -, *, /, mod - operatori unari: +(pozitiv), -(negativ) - operatori de comparare: - operatori relationali: <, >, <=, >=

- operatori de egalitate: ==, <> -operatori logici: - operatori logici binari: and, or, eor - operatori logici unari: not - operatori de biti: - operatori logici binari de biti: &, |, ^ - operatori de deplasare: <<, >>, <@, >@ O expresie de tip Sebol poate fi: - o functie, o constanta sau o variabila - o linie de comanda in care functiile, constantele sau variabilele sunt combinate cu operatori - o linie de comanda in care expresiile sunt combinate cu operatori. Variabile locale Variabilele locale sunt accesibile numai in programul in care au fost declarate. Variabilele locale pot fi accesate cu o viteza mai mare decat datele din blocurile de functii. De aceea in programele care necesita o performanta ridicata, datele din blocurile de functii pot fi stocate in variabile locale. Dezavantajul folosirii variabilelor locale este ca pot aparea discrepante intre datele stocate in variabile si datele actuale din blocurile de functii atunci cand are loc procesul de scanare al blocurilor. Atunci cand un bloc SFC sau o operatie porneste variabilele locale sunt initializate cu 0. In cadrul functiilor variabilele locale nu sunt initializate de sistem, valorile lor fiind nedefinite atunci cand functia este apelata. Variabilele sunt disponibile numai in timpul executiei programului fiind sterse atunci cand programul este oprit. In cadrul SFC-ului sunt disponibile numai atunci cand statusul blocului este RUN sau PAUS. In exemplul urmator variabila locala i este declarata in mai multi pasi ai programului. !descrierea programului principal #define NUMDATA 100 integer average() integer data[NUMDATA]

integer i,ave ........................ i=data[0]

!variabila locala a programului principal

ave=average(data,NUMDATA) !descrierea functiei iInteger function average(buf,n) integer buf[],n integer i long sum sum=0 for i=1 to n sum=sum+buf[i] next @ return(sum/n) end Functii Un utilizator poate defini functii ca subprograme putand crea astfel noi operatii folosindu-le. Folosirea functiilor activeaza schimbul de date prin intermediul argumentelor si returneaza valori.Pot fi declarate pana la 32 de argumente. Functia se termina cu end sau cu return. Apelarea unei functii se face specificand numele si tipul functiei. Prin intermediul functiilor se pot apela datele din cadrul blocurilor de functii Exemplu: integer function exemplu(simple,array,n,max) argblock PID simple, array[*] integer n,max size simple.MV=10 !variabila locala a functiei

wait until (simple.PV>=9.9) if (n<=max) then array[n].MV=100 wait until (array.PV>=9.9) end if end In cadrul declaratiei argblock se specifica tipul blocului.Compilatorul verifica daca datele declarate pot fi folosite cu tipul blocului specificat in argblock. Daca se folosesc date necorespunzatoare atunci va aparea o eroare. Pe langa argumente functiile pot lucra si cu variabile care sunt folosite numai in cadrul acestor functii si care nu au valori initiale fixe dar care iau valoarea zero atunci cand blocul SFC este pornit. In cadrul functiilor mai pot fi declarate si nume de taguri. Exemplu: setmv(FIC001,10.0,9.9) setmv(FIC002,30.0,19.9) integer function setmv(tagname,value1,value2) char*0 tagmane double value1,value2 genname PID block1 assign tagname to block1 block1.MV=value1 wait until (block.PV>=value2)

Functii predefinite Functiile predefinite sunt furnizate de limbajul Sebol si pot fi apelate specificandu-se numele functiei si argumentele.

Numele acestor functii sunt cuvinte rezervate care nu mai pot fi folosite. 1) Functii aritmetice:labs(a), dabs(a), dmax(a,b..), dmin(a,b...), power(a,b),int(a) 2) Limite de high/low: llimit(a,b,c), dlimit(a,b,c) 3) Functii trigonometrice: sin(a), cos(a), tan(a) 4) Radacina patrata: sqrt(a) 5) Exponentiala: exp(a) 6) Logaritm natural: log(a) 7) Functii de data si timp: getdate(a,b,c), gettime(a,b,c), timems() 8) Date ale blocurilor de functii: errc(), errs(), lerrorid() Function block data In Sebol datele din blocurile de functii pot fi accesate prin atribuirea unui tag name si a unui atribut folosind urmatorul format: tag name.atruibut. Urmatoarele exemple arata modul cum pot fi accesate datele din cadrul blocurilor de functii: block PID FIC001 double pv_value wait until (FIC001.PV>=50.0) block PID TAG001, TAG002 char*16 s1,s2 double d1,d2 [s1,d1,s2,d2=TAG001.MODE.PV, TAG002.MODE.PV] In acest exemplu modul blocurilor este citit in variabilele locale s1, s2 iar valorile PV sunt citite in variabilele d1, d2.

Instructiunea drive Instructiunea drive transmite o comanda catre un bloc de control al unui motor sau al unui comutator si asteapta pana cand primeste feedbackul indeplinirii comenzi. Sintaxa:

drive[blocul de functii=variabila locala] Variabila locala poate lua numai valorea 0, 1 sau 2. Instructiunea drive se poate aplica numai pentru urmatoarele tipuri de blocuri: -blocuri pentru comutatoare: SO-1,SO-2,SIO-11,SIO-21,SIO-22,SIO-12 -blocuri de control pentru motoare: MC-2, MC-3, MC-2E, MC-3E Exemplu: #define SIO-22 VALVE01 VALVE02 drive[VALVE01, VALVE02=CLOSE, CLOSE] exit Controlul alarmelor procesului Alarm Detection(AF), Alarm Inhibition(AOFS) si Alarm Flashing(AFLS) sunt atributele care controleaza comportamentul alarmelor din cadrul procesului. Pentru a putea fi manipulate alarmele trebuiesc schimbate urmatoarele atribute: Numele atributului AF Instructiunea de schimbare a statusului AOF AON Activeaza grupul de bypass al detectarii alarmelor Dezactiveaza grupul de bypass al detectarii AOFS AOF AON AFLS Exemplu: block PID FIC001 FIC001.AOFS=:AOF Blocurile SFC pot avea alarme definite de utilizator.Aceste alarme pot fi manipulate modificand comanda de schimbare a statusului. ACK alarmelor Activeaza grupul de mascare a alarmelor Dezactiveaza grupul de mascare a alarmelor Opreste flashul alarmelor. Descriere

Operarea cu intrari/iesiri din proces si intrari/iesiri proprii. Intrarile si iesirile din proces care nu au o eticheta sunt accesate folosind numarul terminalului sau al elementului in locul etichetei. Formatul unui terminal al unei intrari sau iesire din proces: <identificatorul intrarii sau iesirii din proces><numarul nodului><numarul unitatii><numarul slotului><numarul terminalului> Exemplu: %Z012301 Identificatorul intrarii sau iesirii din proces este %Z. Intrarile si iesirile interne care pot fi accesate de limbajul Sebol pot fi comutatoare interne sau globale sau mesage. Exemple : -Switchuri globale: %GSnnnmm[Sddss]

nnn: numarul elementului(001-256) mm: numarul statiei (1-64) dd: numarul domeniului (01-16 S este fix) ss: numarul statiei (1-64) -Switchurile interne: %SWnnnn[Sddss] nnnn: numarul elementului(0001-4000) dd: numarul domeniului (01-16 S este fix) ss: numarul statiei (01-64) -Mesaje: %ANnnnn[Sddssaa] nnnn: numarul elementului(0001-2000) dd: numarul domeniului (01-16 S este fix) ss: numarul statiei (01-24) aa: numarul ariei (este fixat la 01)

Cuvinte rezervate ale limbajului de programare Sebol Lista cuvintelor rezervate:

10

11

Limbajul de programare CL CL (Control Language) este un limbaj de control dezvoltat de catre Honeywell si folosit foarte mult in DCS. Limbajul CL este folosit pentru a dezvolta calcule automate bazate pe tagurile continute de DCS.

12

Honeywell a dezvoltat mai multe versiuni ale limbajului CL: CL/MC folosit controllerele multifunctionale, CL/PM folosit pentru managementul proceselor si CL/AM folosit pentru modulele de aplicatie. Limbajul de programare Delta V Limbajul Delta V a fost realizat de firma Emerson si cu ajutorul sau se configureaz, monitorizeaz i opereaz DCS-ul. Delta V stocheaz toate informaiile introduse sub forma unei baze de date de obiecte, dar intr-un format proprietar productorului, adic aceast baz de date nu se poate deschide n mod normal cu aplicaii de baze de date obinuite. n DeltaV se pot observa ntr-o structur ierahic obiectele din baza de date, aceste obiecte putnd fi: staii de lucru, controller-e, cartele de intrri/ieiri, echipamente, module i multe alte tipuri de obiecte. Modulele de control ale limbajului Delta V au urmatoarele caracteristici: Au un nume unic de maximum 16 caractere Executa algoritmi de control Resprezinta cele mai mici entitati care poate fi descarcate in controller Au dimensiuni flexibile Seteaza ordinea de executare a blocurilor de functii: manual sau automat.

13

Exempu de modul:

Calea unui parametru este: Node.Module/Block/Parameter.Type_Field Exemplu THISNDE.FIC-20X/PID1/OUT.F_CV - Node reprezinta locul unde va fi executat parametrul - Control Module este un algoritm de control care uneste toate conditiile, alarmele si alte caracteristice pentru un anumit echipament - Function Block contine algoritmi standard de control al procesului ca de exemplu PID, Iesiri si Intrari analogice. Cand sunt conectate intr-o secventa logica mai multe blocuri de functii alcatuiesc un modul de control. - Parameter reprezinta datele transmise intre blocurile de functii si folosite pentru crearea alarmelor, diagnosticare si pentru un control avansat al procesului. - Type tipurile parametrilor sunt Floating (F) pentru numere si ASCII (A) pentru text. - Field campurile cele mai folosite sunt Current Value (CV) si Status (ST). Cel mai bun punt de pornire pentru crearea unui modul o reprezinta template-urile.

14

Pentru a defini si pentru a modifica un modul este folosit Delta V Control Studio. Avantajele utilizrii DCS Optimizarea ocuprii spaiului n camerele de comand prin eliminarea tablourilor de comanda convenionale, echipate cu regulatoare, indicatoare, nregistratoare, lampi i butoane. Eliminarea erorilor umane de citire a valorilor parametrilor de proces. Defectarea unei staii de operare nu afecteaz funcionarea sistemului, deoarece procesul este condus de controller chiar i fr intervenia operatorului. Avnd n vedere capabilitile de stocare din ce n ce mai mari, se pot pstra din ce n ce mai multe date istorice din proces, pe intervale mari de timp, chiar i de ordinul anilor, fr a fi necesar arhivarea lor. Folosirea tehnicilor de reglare avansat (ex. reglare predictiv, fuzzy-logic, reele neuronale) se mrete eficiena sistemului. Posibilitatea implemetrii de secvene automate de start-up / shutdown. Posibilitatea configurrii echipamentelor inteligente direct din camera de comand, fr a fi necesar intervenia n cmp. Posibiliti nelimitate de comunicare cu alte sisteme de control cum ar fi PLC, ESD i diverse alte DCS.

15