Accesul Tcpip la Variabilele Unui Automat Programabil
Universitatea POLITEHNICA București
Facultatea Automatică și Calculatoare
Departamentul Automatică și Informatică Industrială
LUCRARE DE LICENȚĂ
Accesul TCP/IP la Variabilele unui Automat Programabil
Coordonator Absolvent
Conf.Dr.Ing. Silviu Răileanu Marius Florian Ionescu
2016
1. Noțiuni Introductive despre Automate Programabile
1.1. Definiție, scurt istoric și rol funcțional
Automatele Programabile (en: Programmable Logical Controller, prescurtate si PLC sau AP), sunt sisteme de calcul special proiectate în scopul de a conduce și controla regimurile de funcționare ale mașinilor și a proceselor industriale.
AP-ul preia semnale prin intermediul intrărilor sale, le prelucrează în funcție de un program scris întrun limbaj de programare dedicat( medii de programare ce implementează limbajele specifice automatelor: Codesys,Indralogic etc.) și transmite semnalele la ieșirile sale. Cu alte cuvinte, rolul automatelor programabile este de a transmite semnalele(tensiunile) de comandă la bornele unor elemente de execuție(relee), în funcție de logica din program.
AP-urile au aparut la sfârșitul anilor ’60 în industria automobilelor, ducând astfel la eliminarea timpilor necesari, schimbării schemelor de comandă, de la aproape o lună la câteva zile. O dată cu apariția microprocesorului și utilizarea acestora în construcția AP-urilor, a dus la dezvoltarea funcționalității acestora, o dată cu reducearea prețului din punct de vedere al costului, iar o dată cu apariția circuitelor integrate, s-au îmbunătățit performanțele automatelor programabile precum: gabaritul, prețul ,consumul de energie.
Fig 1.1 – 1 Linie de asamblare la începutul anilor ’60
Din punct de vedere constructiv, AP-ul este destinat să funcționeze în condițiile caracteristice mediului industrial, într-o plajă largă de temperaturi și umidități; se poate interfața usor cu orice echipament, și nu pune probleme în ceea ce privește formarea personalului ce deservește respectivul automat, datorat în principal facilităților de programare oferite.
De-a lungul timpului, AP-urile au cunoscut un mare succes în utilizarea sistemelor de comandă și Control(prescurtate SCC). Dată fiind importanța AP-urilor într-un Sistem de comandă și Control, se poate distinge ușor o clasificare a SCC-urilor în funcție de modul de implementare a comenzii:
SCC-uri ce utilizează tehnologia cablată (logica cablată)
SCC-uri ce utilizează tehnologia programată (logica programată)
SCC-urile în tehnologia cablată:
– sunt realizate din module legate între ele
– modul de funcționare rezultat se bazează pe alegerea modulelor și de legăturile pe care le unesc
– SCC-ul este în întregime particularizat prin realizarea sa materială
SCC-urile în tehnologia programată:
sunt realizate prin programarea elementelor componente
au la bază AP-urile
funcționarea obținută, rezultă din programarea AP-urilor
personalizarea SCC-urilor este realizată prin alegerea componentelor , și prin programare.
1.2 Funcțiile de bază și suplimentare ale AP-urilor
În cadrul funcționării , AP-ul trebuie să realizeze următoarele funcții de bază:
Citirea intrărilor
Funcționarea AP-ului presupune urmărirea variațiilor unor semnale provenite de la proces. Astfel, intrările automatului sunt citite la intervale de timp bine stabilite. Fiecare citire se realizează pe rând, însă având în vedere că timpul dintre citirile a două intrări diferite este de oridinul milisecundelor(foarte mic) , pentru anumite procese se consideră faptul că, citirile se realizează simultan pentru toate intrările automatului.
Rezolvarea Ecuațiilor Booleene și Execuția Secvențelor de Calcul Logic
Implementarea unei scheme de comandă în cadrul AP-ului se realizează prin modelarea acesteia prin intermediul unor ecuații booleene sau a unor decvențe de calcul logic unde variabilele reprezintă semnalele de intrare a automatului.
Rezultatele reprezintă valorile ce sunt atribuite ieșirilor AP-ului.
Această operație se execută în fiecare ciclu, ținând seama de valorile actualizate ale intrărilor. Ecuațiile sunt rezolvate pe rând, însă întrucât timpul de rezolvare a două ecuații diferite este foarte mic, pentru anumită categorie de procese, se poate considera că rezultatele se obțin simultat pentru toate ecuațiile.
Comanda ieșirilor
Funcționarea AP-ului presupune faptul că acesta să debiteze prin intermediul ieșirilor semnale de comandă pe baza valorilor de intrare și a programului ce implementează funcția de comandă.
Fiecare ieșire este comandată pe rând, însă având ăn vedere că timpul dintre comenzile a două ieșiri diferite este de ordinul milisecundelor, pentru o anumită categorie de procese , se poate considera că toate ieșirile sunt comandate simultan.
Funcțiile prezentate mai sus, definesc funcționarea de bază a automatului. Pe lânga aceste funcții, în funcție de complexitatea procesului, automatul mai prezintă una sau mai multe funcții suplimentare:
Stocarea în memorie a rezultatelor parțiale sau a stării intrărilor și ieșirilor
În cazul programelor de complexitate ridicată, ce presupune calcule laborioase, este posibil ca registrele microprocesorului să nu fie suficiente pentru stocarea rezultatelor intermediare. Pentru a evita această problemă, AP-ul trebuie să poată stoca temporar aceste rezultate într-o memorie de lucru pentru a putea fi utilizate mai târziu.
Implementarea unor funcții de calcul aritmetic
Funcțiile de calcul aritmetic pot fi : incrementarea, decrementarea , decalaj de biți, codificare. Complexitatea proceselor comandate ărin intermediul AP-ului face ca schema de comandă implementată de acesta să trebuiască să realizeze o serie de operații decât cele logice.
Este uneori necesar ca AP-ul să poată să realizeze funcții de calcul aritmetic precum: radicalul, ridicare la putere, funcții trigonometrice, operații asupra datelor din memorie( incrementare, decrementare, decalaj de biți la stânga sau la dreapta, codificare).
Dialogul de exploatare
În perioada de exploatarea, sunt necesare dialoguri om – mașină, având drept scop conducerea mașinii , realizarea de reglaje sau efectuarea de depanări. Elementele prevăzute în acest scop sunt: butoane, elemente de semnalizare, panouri de comandă configurabile, terminale de exploatare, terminale de reglare, terminare de depanare.
Dialogul de Supervizare
Sistemele de comandă se integrează într-un proces de producție care adesea este condus și supravegheat de la un punct de comandă și control central. AP-ul trebuie să aibă posibilitatea de a dialoga într-un mod bine determinat cu terminalele periferice ale sistemului central.
Dialogul de programare
Punerea în funcțiune precum și eventualele modificări ce survin asupra automatului, datorat evoluției procesului de producție, necesită existența unui dialog de programar, iar cele mai utilizate căi de a realiza acest dialog este utilizarea unui Calculator Personal, sau a unei console de programare. Legătura dintre dispozitivile de programare si AP, se realizează în general folosind o linie de comunicație serială.
Dialog cu elementele periferice tip imprimante
Imprimantele sunt utilizate în general pentru a lista informațiile existente în memoria AP-ului sau informațiile oferite de mediul de programare utilizat pentru programarea acestuia, fiind astfel ușurată vizualizarea programului și a datelor legate de AP. Utilizatorul are posibilitatea de a urmării mult mai ușor programul indiferent dacă acesta este sub forma unei liste de instrucțiuni sau diagramă de tip scheme cu contacte.
Astfel se poate verifica mult mai ușor corectitudinea schemei implementate cât și calitatea acesteia.
Principalele informații ce pot fi listate sunt: diagrama bazată pe schema de contacte sau programul sub formă de listă de intrucțiuni, comentariile, starea registrelor procesorului din unitatea centrală de prelucrare, valorile impuse temporizatoarelor și numărătoarelor.
1.3. Avantaje și Dezavantaje ale utilizării AP-urilor
Automatele programabile cunosc o serie de avantaje:
Flexibilitatea și Ușurința în modificarea programului și corectarea erorilor
Automatele programabile elimină necesitatea realizării unei scheme de comandă pentru fiecare sistem de acționare(atunci când există mai multe sisteme de acționare), putându-se așadar implementa cu un singur automat, scheme de comandă diferite.
Utilizarea Logicii Programabile prezintă un mare avantaj față de Logica Cablată(Schema de comandă cu Relee). Dacă în cazul logicii cablate orice modificare de funcționare a echimapentului de comandă implica realizarea unor noi circuite, unui nou cablaj, unor noi legături între elemente, în cazul logicii programabile modificarea constă doar printr-o simplă inserare în memoria program a unor expresii algebrice, fără însă a intervenii asupra cablajului inițial, realizându-se astfel economii însemnate de timp și de manoperă. Totodată, Echipamentelor Logice Programabile au rolul de a tipiza înterfețele de intrare – ieșire și a unității centrale, iar regândirea schemei de comandă se realizează la nivelul programului implementat. Astfel, în cazul clasic, logica cablată prezintă urmatoarea schemă de principiu: conceperea schemei, realizarea cablajului (ceea ce presupune verificarea funcționării și refacerea schemei prin intermediul cablajelor, însă în cazul logicii programabile această schemă este mult mai simplă: în momentul în care s-a introdus un element nou(echipament) în schemă, se scriu anumite funcții ce constituie expresii algebrice, se testeaza funcționalitatea lor prin intermediul echipamentului de programare, se vizualizează pe monitor si se verifică schema prin intermediul unor programe de monitorizare si auto – testare. Practic, cu ajutorul AP-urilor, modificarea schemei de comandă și corectarea eventualelor erori se poate face foarte simplu, prin modificarea programului din memoria automatului, cu ajutorul unei console de programare, însă la schemele de comandă clasice, în logica cablată, atunci când se dorește modificarea unei scheme, sau eventual corectarea unor erori trebuie avut în vedere:
Refacerea legăturilor fizice dintre legăturile schemei, iar uneori este necesară chiar modificarea structurii de comandă prin adaugarea de noi elemente
Modificarea structurii de comandă, în eventualitatea corectării erorilor, necesită timp de lucru destul de mare, abilitatea personalului de a urmării acele legături.
În schimb, se poate aminti unul dintre dezavantajele AP: costul relativ ridicat și necesitatea programării și operării acestora de către personalul calificat(la începuturile apariției automatelor programabile). De notat este faptul că în timp costurile sau diminuat foarte mult , iar domeniul de aplicabilitate AP sa extins treptat si în cazul comenzilor cu un numar mic de intrări/ieșiri.
În concluzie AP -ul se remarcă prin reducerea semnificativă a unor componente fizice de automatizare , cu aproximativ 80 % în comparație cu schemele de automatizare cu relee.
Numărul mare de resurse
La schemele clasice, prin modificarea unei scheme de comandă, de exemplu prin adăugarea unor contacte , necesită adaugarea unor relee sau blocuri de contacte suplimentare, având așadar drept consecințe: costuri suplimentare și modificarea schemei de amplasare care să includă și componentele noi.
Prin utilizarea AP-urilor, adăugarea de contacte noi sau alte elemente intermediare(numărătoare , temporizatoare etc.) se realizează destul de simplu, prin adăugarea unor linii de program, iar dacă nu se depășește capacitata AP-ului , nu se modifică nici necesarul de elemente ale schemei. În concluzie, nu vom avea o creștere a consumului implementării.
Costul redus
Costurile AP-ului , realizate cu ajutorul circuitelor numerice integrate, continuă să scadă datorită evoluției circuitelor electronice. Această evoluție aduce și o serie de avantaje cum ar fi: miniaturizarea, consum redus de energie, creșterea vitezei de lucru.
Costuri Reduse de punere în funcțiune
La schemele clasice(logica cablată) , buna funcționare a acestora putea fi verificată doar după ce era realizată fizic schema cu relee, pentru a fi apoi testată și verificată.
O dată cu apariția Ap-ului, se reduc costurile necesare, punerii în funcțiune a schemei de comandă, întrucât este posibilă scrierea programului cu ajutorul mediului de programare, ; testarea schemei, simularea și efectuarea modificarilor schemei prin intermediul variabilelor din program.
Posibilitatea vizualizării funcționării
În cazul AP-ului, este posibilă urmărirea funcționării acestuia pe un ecran, prin intermediul mediului de dezvoltare. Pot fi observate secvențe din schemă, ce sunt în funcțiune și pot fi detectate mai ușor cazurile în care apare o funcționare defectuasă. În majoritatea programelor scrise ce deservesc schemele de comandă , se poate realiza ușor identificarea defectuasă a unor funcționalități, prin afișarea unor mesaje de eroare, sau prin intermediul unor variabile de validitate.
Elementele schemei de comandă pot fi ușor identificate prin atribuirea variabilelor asociate acestora , a unor nume simbolice, sugestii, iar în acelasi timp, se pot adăuga comentarii pentru a ușura citirea schemei, sau însemnătata logică a acesteia.
Viteza de funcționare
La sistemele clasice, cele bazate pe logica cablată, din cauza inerției părților mecanice în mișcarea elementelor (contactoare, relee etc.), viteza de funcționare a acestora este limitată și pentru anumite aplicații inacceptabilă.
În cazul AP-ului, o dată cu evoluția tehnologiilor electronice, viteza de funcționare a schemelor crește tot mai mult, ea fiind determinată în primul rând de timpul de baleiere a programului, care este la ora actuală de ordinea milisecundelor.
Siguranță în funcționare
Prin utilizarea dispozitivelor electronice, siguranța în funcțioanre a schemelor de comandă realizate cu AP-uri este mult mai ridicată decât cele clasice ce utilizează relee mecanice, întreținea dispozitivelor electronice fiind mult mai ușoară, iar cheltuielile de reparație sunt și ele reduse.
Securitatea
La schemele clasice, posibiliatea de intervenție și de modificare în timpul funcționării nu este asigurată. Asfel, prin utilizarea AP-ului, modificarea programului după care funcționează schema, poate fi modificată, doar dacă automatul este oprit, și reprogramat.
Simplitatea achiziției sistemului de comandă
Sistemele clasice erau alcătuite de cele mai multe ori din multe elemente diferite achiziționate de la diferiți producători, iar obținerea acestor produse atât pentru realizarea schemei cât și pentru înlocuirea unor elemente defecte fiind constisitoare.
O dată cu apariția automatelor programabile, acestea conțin de la început toate elementele necesare, acestea fiind disponibile toate o dată, în momentulul achiziției AP-ului. De ceele mai multe ori, schemele de comandă nu folosesc toate resursele automatului, asfel, atunci când este nevoie de elemente precum numărătoare, temporizatoare, sau aulte elemente în plus, ele se găsesc în AP.
Achiziționarea rapidă a elementelor schemei de comandă
Prin achiziționarea AP-ului, sunt în fapt achiziționate simultan toate elementele de bază necesare funcționării schemei de comandă: relee cu contacte, comutatoare, numărătoate, temporizatoare, ce pot fi implementate din program. Numărul acestora este mult mai mare decât necesarul real, ele fiind disponibile în program , nefiind necesară comanda lor. AP-urile actuale permit utilizarea unor blocuri funcționale complexe, oferind o gamă largă de posibilități de implementare a schemei.
Metode diferite de programare
La ora actuală, majoritatea producătorilor de AP-uri, oferă posibilitatea utilizatorilor de scriere a programelor AP-ului prin utilizarea diverselor modele și limbaje de programare, unele limbaje fiind mai apropiate de schemele clasice cu relee, în timp ce altele sunt mai apropriate de limbajele de programare clasice(C,Pascal etc).
Ca orice echipament nou apărut, AP-urile prezintă și ele anumite dezavantaje și vor fi prezentate după cum urmează:
Noutatea tehnologiei
AP-urile reprezintă o noutate pentru tehnologică pentru majoritatea tehnicienilor și electricienilor, necesitând utilizarea calculatorului pentru scrierea și rescrierea programelor ce deservesc schemele de comandă.
Acestea impun un nou mod de gândire, diferit de cel necesar schemelor de comandă clasice bazate pe releee cu contacte.
Aplicații Specifice
Există anumite scheme de comandă care sunt specifice unor anumite scheme de acționare și nu presupun modificare acestora cu ajutorul AP-ului, în acest caz, nejustificându-se utilizarea unor sisteme ce pot fi programate, cum sunt AP-urile în aceste scheme .
În rezolvarea acestor situații, producătorii recurg de cele mai multe ori la soluțiile clasice, care se dovedesc a fi mai avantajoase din punct de vedere al costurilor.
Influența mediului
În contrucția AP-urilor, intră componente electronice ce sunt sensibile la anumite condiții de mediu cum ar fi: temperaturi, radiații, vibrații ridicate
Funcționarea nesigură la apariția unor defecțiuni
În cazul schemelor de comandă clasice, butonul de oprire(butonul ciupercă) deconectează schema de comandă de la sursa de alimentare, oprind așadar funcționarea acesteia. Dacă are loc o întrerupere a tensiunii electrice, funcționarea schemei de comandă se întrerupe, neputându-se fi realuată automat la revenirea tensiunii de alimentare.
O dată cu apariția automatelor programabile, în cazul anumitor programe ale acestora, ce deservesc o schemă de comandă, condițiile de mai sus nu sunt întotdeauna îndeplinite, fapt ce va genera o funcționare nesigură în condiții de defectare.
1.4. Clasificarea AP-urilor
Actualele generații de automate programabile înglobează o serie de interfete hardware de comunicație printre care comunicația serială și conectarea în rețea, componente și unități de interfațare pentru principalele mărimi analogice și digitale preluate de la o serie de senzori, modulele de achiziție analogică(temperatură, umiditate,poziție etc), comunicație(pentru legătura în rețea și monitorizarea automată), modulele de iesire analogică, modulul de poziționare, modulul de control al miscării etc.
Caracteristicile principale ale unui PLC sunt date de : numărul maxim de intrări/ieșiri, structura automatului, viteza de procesare a microprocesorului care este direct proporțională cu numarul de intrări/ieșiri.
Din puct de vedere structural se disting urmatoarele automate:
automat programabil în structură deschisă, realizat sub forma unei plăci de circuite imprimate de tip SoC(system on chip) fară carcasă
Fig. 1.4 -1: Automat programabil realizat în structură deschisă
Tipul acesta de automat este de obicei foarte ieftin(până în 100 de euro), însă numarul de i/e este foarte mic, neputându-se adăuga module de extensie pentru mărirea acestora.
automat programabil în structură monobloc, realizat în carcasă închisă
Fig. 1.4-2: Automat programabil în structură monobloc
În acest caz, toate elementele componente ale automatului sunt grupate într-o carcasă, iar dimensiunea acestuia variază în funcție de numaurul de i/e ale automatului.
Această variantă constructivă permite conectarea unor module de extensie ce au carcasă separată, prin intermediul unor cabluri de legătură.
Automate programabile realizate în structură modulară
Fig 1.4-3: Automate programabile realizate în structură modulară
Această variantă de construcție este in general specifică automatelor complexe, adică cele cu un numar foarte mare de i/e, cu o gama largă de posibilități de control și cu un numar mare de module de extensie.
Din punct de vedere al numarului total de intrări/ieșiri:
Automate programabile micro, cu un numar de până șa 32 de terminale I/E(cele mai des întâlnite sunt cele cu 20 de I/E).
Automate programabile mici, cu un număr de până la 128 de terminate I/E
Automate programabile medii cu un număr maxim de 1024 terminale I/E
Automate programabile mari cu un număr de până la 4096 terminale de I/E
Automate programabile foarte mari, cu un numar de până la 8192 terminale de I/E
1.5. Structura fundamentală a Automatelor Programabile
Un automat programabil, funcționează în momentul în care există un program(o secvență de instrucțiuni) salvat în memorie. PLC-ul execută programul conform „principiului de scanare”, adică programul este executat de la prima linie , până la ultima linie. Principiul acesta execută în speță citirea intrărilor, măsura timpilor, se execută programul, ceea ce va duce în final la modificarea ieșirilor,execuția de comenzi de către automat.
Programul princial conține subrutine și întreruperi de program. De exemplu, daca o anumită instalație trebuie să realizeze o anumită sarcină la pornire, se utilizează o subrutină.
Intrările procesului sunt realizate în general din diverse elemente de comandă și măsurare incluse în sistemele de automatizare : butoane, comutatoare, limitatoare de cursă,senzori de proximitate, fotoelectrici, traductoare de nivel, traductoare ale caror semnale de ieșire au o variație analogică.
Fig. 1.5-1: Schema bloc a unui PLC
Ieșirile automatului dirijează acționarea elementelor de execuție cum ar fi: relee, comutatoarele,electro-valvele, elementele de afișare, contactoarelor, lămpile de control.
Fig. 1.5-2 Principalele elemente de conectare la intrările automatului
Toate aceste semnale fizice de intrare/ieșire sunt convertite de circuitele de interfață în semnale logice adaptate unității centrale de procesare și transformă semnalele logice de ieșire în semnale logice de ieșire corespunzatoare acționării impuse de sistemul de execuție al sistemului de acționare.
Unitatea centrală de procesare(CPU) reprezintă „creierul” automatului programabil. Primele CPU –uri utilizate au fost pe 1 si 8 biți, însă în prezent se utilizează microprocesoare pe 16/32 biți. Unitatea centrală de procesare poate fi împărțită în unitatea de control și unitatea logică de calcul.
Unitatea de control are rolul de a coordona toate transformările de date furnizate de proces, efectuând operațiile logice asupra datelor recepționate, asigurând alocarea corespunzatoare a rezultatelor la ieșirile automatului. De asemenea tot aceasta asigură prelucrarea informațiilor numerice de la proces, iar rezultatul acestor operații va condiționa starea operatorilor logici ai unității de calcul.
Memoria care poate fi de două tipuri:
ROM(Read only memory)
Această memorie este utilizată pentru stocarea sistemului de operare al AP-ului.
RAM(Random Acces memory)
Este împărțită în mai multe blocuri fiecare având o utilizare specifică. Sunt păstrate: adresele intrărilor și ieșirilor, valorile prestabilite și actuale ale temporizatoarelor și contoarelor, zona de lucru a procesorului, zona de stocare a programului, alte zone de memorie având destinație specială.
Memoria RAM îsi pierde conținututl la întreruperea sursei de alimentare, de aceea, pentru menținerea programului și a datelor stocate în acesta, AP-ul trebuie să aibă o sursa de alimentare auxiliară. O alta variantă pentru menținerea programului, și încarcarea ulterior a
datelor în cazul întreruperii energiei electrice, este utilizarea unor memory flash.
Unități de stocare a informației sunt utilizate ca dispozitive de stocare secundare pentru:
aplicația program din memoria AP-ului
alte date și informații utile pentru salvarea acestora sau încărcarea lor pe/de pe suportul magnetic
Aplicațiile program pot fi realizate și stocate pe suporturi magnetice , și apoi încărcate în memoria AP-ului. Versiunile mai vechi de automate erau dotae cu casetofoane,însă versiunile recente utilizează unități de disc flexibil , sau unități de disc dur magnetice sau memory flash.
Unitatea de programare asigură crearea, introducerea ,finalizarea programului, și transmiterea acestuia către memoria automatului. Practic acesta este un dispozitiv care comunică cu elementele AP-ului, realizând transferul aplicației program, prin care se comandă elementele de intrare/ieșire, în memoria automatului, permițînd astfel monitorizarea și vizualizarea funcționării AP-ului. Există mai multe variante de programatoare printre care:
O consolă automată cu memorie proprie, specifică metodei de programare off-line
O consolă portabilă de mici dimensiuni, ce operează împreună cu automatul, utilizând memoria acestuia(cunoscut ca dispozitiv „hand-held”), specifica metodei de programare on-line.
Calculatorul Personal, ce include un mediu de programare (ex. Codesys,Indralogic), tinzând să înlocuiască variantele de mai sus amintite.
Dacă prima variantă oferă avantajul unei programări comode, intr-un laborator de proiectare, ce include o suita de interfețe grafice ce simplifică programarea automatului, întrucât aceasta variantă oferă facilități complexe de programare, datorat memoriei de capacitate mare, iar cea dea a doua variantă, varianta on-line , utilizează de obicei un software minimal, cu posibilități reduse de programare, limitate de obicei la introducerea de cuvinte de comandă, însa aceasta variantă are avantajul că este portabila.
Ultima variantă, îmbină avantajele ambelor variante de mai sus menționate, prin utilizarea resurselor PC-ului, prin scrierea unui program offline, ce oferă posibilități complexe de programare(specifice limbajelor de nivel mediu: ex C/C++, programarea logică conform standardului internațional de programare a automatelor IEC-61131-3) , utilizează asadar un mediu de programare(ex. Codesys, Indralogic), portabilitate, transmiterea programului către PLC utilizând fie interfața serială RS-232(pentru transmiterea programului local), fie prin interfata RJ-45 ce utilizeaza protocolul TCP/IP, pentru transmiterea programului atât local cât și la distanță.
Sertarele și Casetele permit montarea elementelor AP-ului într-un ansamblu unitar.
Modulele de intrare/ieșire sunt dispozitive prin care AP-urile comunică sistemul de acționare, sau cu instalațiile pe care trebuie să le comande, deci cu mediul exterior. Ele se împart:
Module de intrare/ieșire digitale
Module de intrare/ieșire analogice
Modulele de intrare/ieșire la distanță
Modulele de comunicare
Modulele de intrare digitale permit unității centrale de prelucrare a AP-ului să efectueze o citire a stării logice a traductoarelor sau a senzorilor care îî sunt asociați. Ele au în general 4,8,16 sau 32 de intrări. Fiecărei intrări, îi corespunde o cale care prelucrează semnalul electric pentru a elabora o informație binară , denumită bit de intrare, care este memorat.
Fig.1.5-3 Schema Bloc a Caii de semnal pentru o intrare digitală
Ansamblul de biți de intrare formează cuvântul de intrare. Periodic, microprocesorul automatului se adresează(citește modulul), conținutul cuvântului de intrare fiind astfel copiat în zona de date a automatului.
Fiecare cale este filtrată de zgomote și de contactele imperfecte fiind izolate electric pentru a mării fiabilitatea și securitatea sistemului.(izolare galvanică).
În general, un modul de intrare este definit în principal de numărul de intrări pe care le are și de caracteristicile electrice acceptate(tensiuni, curenți etc.).
Un tip de intrări digitale particularizate sunt modulele de numărare de mare viteză care îndeplinesc funcția de numărare a impulsurilor aplicate la intrarea modului automatului. Informația transmisă automatului, atunci când AP-ul va citi(va adresa) acest modul, este reprezentată de numărul de impulsuri sosite de la ultima adresare, sau numărul total de impulsuri numărate la inițializare. Ele sunt utilizate în general pentru numărarea impulsurilor cu frecvență mare provenite de la senzori, encodere, sau contacte.
Prin utilizarea modulelor de mare viteză, se ușurează munca programatorului, putîndu-se degreva unitatea centrală a AP-ului de astfel de funcții care consumă din puterea și timpul de calcul al acestuia.
Modulele de ieșire digitale permit automatului programabil să acționeze asupra elementelor de acționare. Ele realizează corespondența dintre starea logică și semnalul electric.
Periodic, procesorul adresează modulul de ieșire și realizează înscrierea biților unui cuvânt de memorie pe căile de ieșire a modulului.
Elementele de comutație ale modulului sunt:
Electronice(tranzistoare, triacuri)
Electromecanice(contacte, relee interne ale modulului)
Ieșirile cu tranzistoare sunt utilizate în cazul comenzilor dispozitivelor de curent continuu, iar dispozitivele cu triacuri sunt folosite pentru comanda dispozitivelor de curent alternativ.
Ieșirile cu relee sunt utilizate atât pentru comanda dispozitivelor de curent continuu , cât și pentru dispozitivele ce lucrează în curent alternativ.
Modulele care au un număr mare de ieșiri digitale:
au avantajul că prin utilizarea lor se ocupă mai puține locuri pe magistrala automatului.
au dezavantajul că nu pot dezvolta un curent mare de comandă pentru ieșiri.
Fig.1.5-4 Schema bloc a căii de semnal pentru o ieșire digitală
Modulele analogice de intrare/ieșire trebuie să realizeze o corespondență între mărimile analogice(curenți sau tensiuni) și valori numerice, având în vedere că AP-urile sunt dispositive numerice.
O caracteristică deosebit de importantă a acestor module este Rezoluția ce reprezintă cea mai mică valoare de curent sau tensiune ce este dată de numărul de biți utilizați pentru codificarea numerică. O altă caracteristică o reprezintă viteza modulului exprimată în baund sau bit/sec.
Modulele de intrare analogice sunt de două tipuri:
intrări analogice care realizează detectarea depășirii unui prag de tensiune sau de curent
intrări analogice de măsură.
Modulele de intrare analogice de măsura sunt prevăzute cu CAN-uri(circuite de conversie analog-numerice). Aceste module pot fi:
unipolare ce primesc la intrare numai tensiuni pozitive , în general în gama 0 – 10 V, și curenți în gama 4 – 20 mA
bipolare ce primesc la intrare în general tensiuni negative și pozitive în gama – 10 – + 10 V
Există posibilitatea reglării atenuării sau amplificării semnalului de intrare, ceeace va permite mărirea domeniului de măsură.
Un astfel de modul poate să nu efectueze o serie de operațiuni de liniarizare a semnalului de intrare, înainte de a fi scris cuvântul de intrare în memorie.
Fig.1.5-5 Schema bloc a căii de semnal pentru o intrare analogică
Modulele de ieșire analogice permit conectarea AP-ului la elementele de preacționare(variatoare de putere, variatoare de viteză etc.) realizând astfel funcții comandă și de reglare. Fiecare ieșire analogică reprezintă imaginea analogică a valorilor numerice ce sunt codificate pe un grup de 8 sau 12 biți definite în program, fiind definite de natura semnalului furnizat și prin limitele sale( 0 – 10V pentru tensiune și 4 – 20mA pentru curent).
Fig.1.5-6 Schema bloc a căii de semnal pentru o ieșire analogică
Modele de intrare/ieșire la distanță sunt utilizate în cazul în care instalația comandată prin intermediul AP-ului este formată din mai multe echipamente ce sunt amplasate în locuri diferite, aflate la o distanță unul fața de celălalt și față de automat. Ele sunt caracterizate de:
calea prin care este transmisă informația
distanța la care se realizează această transmisie
, iar transmisia informației se realizează prin intermediul unor legături prin:
cablu torsadat(utilizat pentru distanțe de la câțiva metri, la distanțe de sute de metri)
cablu cu fibre optice(utilizat pentru distanțe foarte mari, de la cațiva kilometri, la sute de kilometri.)
Cablurile prezentate mai sus sunt utilizate datorită imunității scăzute la perturbații.
Modulele de comunicare reprezintă o legătură de dialog între AP și elementele periferice(terminalele de programare sau exploatare , imprimantele etc.). Acest mod de comunicare permite schimbul de informație compus din biți transmiși unul după altul pe linia de comunicație. Viteza cu care sunt transmiși biții pe canalul de comunicație se exprimă in bauds(biți/sec).
2. Operațiile Algebrice executate de AP-uri
Automatele Programabile,în realizarea funcției de conducere și control, execută un ansamblu de operații algebrice, care fac ca valoarea unei mărimi, de care depinde procesul tehnologic, să se modifice după o lege prestabilită sau după anumite impulsuri externe, ce sunt date de respectivul proces.
2.1 Algebra Booleană
O structură formată dintr-o mulțime B, la care se adaugă două operații binare (+) ,(*) și o operație unară pentru care sunt valabile urmatoarele axiome:
Mulțimea B conține cel puțin două elemente diferite
Operațiile (+), și (*) sunt operații interne a.î : ∀ a,b ∈ B, a + b ∈ B și a * b ∈ B
Există elemente neutre petru operațiile binare a.î ∃ element neutru față de operația (+), notat cu 0, a + 0 = a, ∀ a ∈ B ; ∃ element neutru față de operația (*), notat cu 1, a*1 = a, ∀ a ∈ B
Comutativitatea: ∀ a,b ∈ B , a + b = b + a și a * b = b * a
Distributivitatea: ∀ a,b ∈ B, a + (b*c) = (a + b)*(a + c)
Existența unui element opus: ∀ a, există elemntul opus a’, cu proprietatea că: a + a’= 1 și a * a’ = 0.
Operația „+” poartă denumirea de sumă logică sau adunare logică, sau surjecție, ce poate fi denumită pe scurt, sumă.
Operația „* ” se numește produs logic, înmulțire logică sau conjuncție, denumită pe scurt produs.
Operația „’ ” poartă denumirea de negare, sau complementare.
În cadrul algebrei boolene, operațiile au prioritățile următoare:
Expresiile dintre paranteze : ()
Operația de complementare : ’
Operația de înmulțire logică: *
Operația de sumă logică: +
În cadrul algebrei boolene, se identifică principiul dualității , în care axiomele algebrei booleene sunt prezentate perechi, astfel încât fiecare axiomă este duala celeilalte, axioma obținându – se din duala sa, prin modificarea operației „+” cu operația „* ” și elementul 0, cu elementul 1 și invers.
De exemplu: a * a’ = 0 a + a’ = 0;
2.2 Proprietățile algebrei boolene
Idempotența(proprietate binară): oricare ar fi un element a ∈ B, prin compunerea cu el însăși, rămâne neschimbat.
a + a = a , a * a = a
Proprietatea lui 0 și 1: ∀ a ∈ B , a + 1 = 1 , a * 0 = 0.
Unicitatea lui 0 și 1: 0 și 1 sunt elemente unice
Distincția lui 0 și 1: 0 și 1 sunt elemente dinstincte
Involuția: oricare ar fi un element a ∈ B, prin negarea dublă a elemtului a => a : (a’)’ = a
Absorbția : oricare ar fi elementele a, b ∈ B, a + a * b = a , a * (a + b) = a
Asociativitatea: oricare ar fi elementele a, b, c ∈ B, a + (b + c) = (a + b) + c a * (b * c) = (a * b) * c
De Morgan : oricare ar fi elementele a, b ∈ B, (a + b) ’ = a’ * b’ , (a * b) ’ = a’ + b’
2.3 Exemple ale algebrei Boolene
Algebra binară:
Fie mulțimea B = {0, 1} împreună cu operațiile:
Tab. 2.3-1
Simboluri:
Contact normal deschis:
Contact normal închis:
Legare în serie:
Legare în paralel:
Prin aplicarea proprietăților operațiilor boolene asupra simbolurilor rezultă următoarele proprietăți sau funcții fizice realizate de AP:
Comutativitatea
Elementul neutru:
Distributivitatea:
Elementul Opus:
Idempotența:
Proprietatea lui 0 și 1:
Absorbția:
De Morgan:
2.4 Funcții boolene
Orice variabilă ce poate lua doar valori de 0 și respectiv 1, este considerată variabilă binară booleană sau denumită simplu variabilă binară.
O funcție f : {0,1}n →{0,1}m, oricare ar fi m,n > 0, este denumită funcție booleană, în care, fiecarui n-tuplu de valori ale lui x = {x1,x2,…,xn} ∈ {0,1}n , funcția îi pune în corespondență un m – tuplu de valori unice , y = {y1,y2,…,yn}∈ {0,1}m.
Variabilele {x1,x2,…,xn} se pot asocia intrărilor automatului programabil, numindu-se astfel variabile de intrare , iar variabilele {y1,y2,…,yn}, se pot asocia ieșirilor automatului, denumindu-se astfel variabile de ieșire.
În funcție de numarul de intrări si ieșiri a AP-ului, funcțiile boolene se pot clasifica în:
Dacă n > 1, m = 1 => funcții boolene cu mai multe intrări, și o singură ieșire
Dacă n > 1 , m > 1 => funcții boolene cu mai multe intrări și mai multe ieșiri
Dacă n = 1 , m > 1 => funcții boolene cu o singură intrare și mai multe ieșiri
Dacă n = 1 , m = 1 => funcții boolene cu o singură intrare și o singură ieșire
În funcție de numărul de variabile, n , putem avea :
2n combinații de valori pentru variabile
22n funcții de n variabile
Tab.2.4-1
Astfel, pentru două variabile A și B, n = 2 , rezultă 4 combinații de valori pentru variabile și 16 funcții:
Tab.2.4-2
Unde:
F1 = 0 reprezintă funcția constantă 0
F2 = A * B reprezintă funcția ȘI (AND ) logic
F3 = AB’ reprezintă Inhibiția (A dar nu B)
F4 = A reprezintă Identitatea
F5 = BA’ reprezintă Inhibița (B dar nu A)
F6 = B reprezintă funcția Identitate
F7 = AB’ + A’B reprezintă funcția SAU-EXCLUSIV(XOR)(notata cu „⊕”)
F8 = A + B reprezintă funcția SAU
F9 = (A + B)’ reprezintă SAU-NU(NOR)
F10 = A’B’ + AB reprezintă funcția Echivalență
F11 = B’ reprezintă funcția Complement (NOT)
F12 = A + B’ reprezintă funcția Implicație
F13 = A’ reprezintă funcția Complement
F14 = A’ + B reprezintă funcția Implicație
F15 = (AB) ’ reprezintă funcția ȘI-NU(NAND)
F16 = 1 reprezintă funcția constantă 1
2.4.1 Reprezentarea funcțiilor boolene
Funcțiile boolene se pot reprezenta în 2 moduri: Grafic și Analitic.
Reprezentările grafice pot fi:
Tabel de adevăr
Unei funcții cu n variabile i se poate asocia o tabelă cu: 2n linii, ce corespundund a 2n combinații posibile de variabile ; n + 1 coloane, unde n coloane corespund celor n variabile, și o coloană corespunzătoare valorilor funcției.
Tab.2.4.1 -1 : Tabel de adevar pentru funcții de 2 variabile
Diagrame de semnale
Fig. 2.4.1 -1 Pentru funcția f(a,b) = a * b
Fig 2.4.2 – 2 Pentru funcția f(a,b) = a + b
Porți logice(Scheme de operatori)
Există două variante utilizate: ANSI/IEEE 91-1973 și ANSI/IEEE 91 – 1984
Fig 2.4.1 – 3 Reprezentare Simboluri porți logice
Arbori de decizie binară
Un arbore de decizie reprezintă structuri de forma unui arbore ce conține două tipuri de noduri: noduri terminale denumite și frunze, noduri decizionale, în care fiecare nod decizional reprezintă în fapt un test pentru o anumită proprietate, iar fiecare arc ce pleacă din respectivul nod, fiind o valoare a proprietății respective.
Diagrama Veitch-Karnaugh
Sunt reprezentări grafice utilizate în special în minimizarea funcțiilor logice, prin micșorarea numărului de variabile(4,5 variabile reprezentând o limită rezonabilă a acestei metode).
În fapt, ele sunt tabele rectangulare, ce au 2k celule(unde k este numărul de variabile a diagramei), unde fiecare celulă a diagramei se identifică printr-o etichetă orizontală, și una verticală, etichetele fiind cuvinte ale codului binar Gray.
Fig. 2.4.1 – 4 Diagrame Veitch-Karnaugh
Scheme cu contacte
Principala reprezentare schematică este Diagrama Ladder, fiind utilizată în schemele electrice de comandă. Aceste reprezentări sunt realizate cu ajutorul calculatorului, având la bază schemele cu contacte, acestea fiind ușor de înteles.
Fig. 2.4.1-5 Exemplu de schemă cu contacte
Reprezentările Analitice pot fi:
Simbolice , care includ: formele normale necanonice(disjunctive și conjunctive), forme normale canonice(disjunctive și conjunctive), simbuluri de marcare.
Coduri: vectori booleni,numere convenționale.
3. Transmiterea informatiei între PC și PLC
3.1. Definirea Protocolului TCP/IP
TCP/IP este o familie de protocoale de rețea, ce reprezintă în sine seturi de reguli pentru care toate produsele software si echipamentele hardware trebuie să le respecte, cu scopul de a comunica și a facilita schimbul de informații între ele. Un protocol nu este altceva decât un set de instrucțiuni care defninește felul în care două aplicații, doua mașini pot comunica între ele. Protocolul TCP/IP nu este restricționat doar la internet, el reprezentând protocoul cel mai utilizat în cadrul rețelelor mici, dar mai ales în rețelele de mari dimensiuni.
Termenul de TCP/IP provine de la Protocolul de Control al Transmisiei/Internet Protocol, care reprezintă defapt două protocoale separate. Astfel, protocolul TCP/IP face referire la o multime de familii de protocoale înrudite, ele fiind proiectate pentru transmiterea de informații printr-o rețea. Toate componentele ale acestui protocol au rolul în: transmiterea de scrisori electronice, dirijarea de mesaje, transferul de fisiere, transmiterea de cuvinte(de informații), manipularea căderilor de rețea.
În funcție de verificarea pachetelor transmise de la sursa la destinație, există 2 protocoale de transport:
TCP(Transmission Control Protocol) reprezintă acel protocol care menține în permanență conexiunea dintre 2 mașini, acesta fiind responsabil de verificarea primiri pachetelor de la sursa la destinație, urmmând ca în momentul în care un pachet nu a ajuns la destinație, sa îl retransmita pe o alta cale.
UDP(User Data Diagram) reprezintă un serviciu fără conexiune, ceea ce înseamnă că datele sunt transmise fără ca mașinile care trimit și care primesc să aibă contact unele cu altele. Acest protocol nu este responsabil de verificarea pachetelor care au ajuns la destinație.
3.2 Conceptul de Socket și funcțiile de bază pentru comunicația prin Ethernet
3.2.1 Noțiuni de bază despre aplicații Client- Server
Principalul mijloc de construcție a unei comunicații Ethernet îl reprezintă socket-ul. Un socket reprezintă punctul final a unei aplicații(a unui proces) ce poate să transmită și respectiv să primească informații. Fiecare socket creeat , are un proces asociat. Un socket va continua să existe , atâta timp cât procesul asociat(aplicația) menține o legătură deschisă cu alt socket asociat unei alte aplicații.
Fig 3.2.1 – 1 O legătură deschisă între doi sockeți
În momentul în care un proces crează un socket(socket-ul este creeat cu metoda socket() în limbajul C, SysSockCreate() în Indralogic), anumiți parametrii specifici trebuie utilizați:
Domeniul Socket-ului(Socket Domain reprezintă adressa din familia căreia face parte respectivul Socket),
Tipul Socket-ului(Socket Type se referă la stilul comnicațiilor. Cele mai folosite valori sunt: SOCK_STREAM(asociat TCP-ului)(Un șir de date fară limite de înregistrare. Transportul într-un mediu de rețea este garantat; daca transportul este imposibil, expeditorul primeste un indicator de eroare.) și (SOCK_DGRAM(asociat UDP-ului): Un șir de înregistrari, fiecare de o marime dată. Transportul într-un mediu de rețea nu este garantat.)
Protocolul Suportat(Protocol)(TCP, UDP)
Fig 3.2.1-2. Parametrii utilizați în creearea unui Socket
3.2.2 Domeniul Socket-ului
Parametrul Domeniul Socket-ului(en: domain ,adresa socket-ului sau familia de domenii din care face parte socket-ul) determină formatul structurii adresei pentru untilizarea funcțiilor socket-ului și protocoalele suportate de transfer de date de la o aplicație la alta.
Fig 3.2.2-1. Exemplu de familii de domenii ale socket-ului propus de Indralogic
Pentru aplicațiile ce utilizează protocolul IP, adresa socket-ului este descrisă de variabila globală AF_INET (SOCKET_AF_INET := 2 penru Indralogic).Adresele socket-ului ce utilizează domeniul AF_INET sunt reprezentate de adresa IP și numarul portului(en: port number), iar structura adresei este descrisă de structura sockadr reprezentată in figura de mai jos.
Fig.3.2.2-2 Structura SOCKADDRESS
Unde câmpurile din structura sockadr reprezintă:
sin_family : Acest câmp conține adresa socket-ului, care este întotdeauna AF_INET, atunci când sunt utilizate protocoalele TCP,UDP.
sin_port: Acest câmp conține numărul portului(en: port number).
sin_addr: Acest câmp conține adresa IP.
sin_zero: Acest câmp este rezervat; se setează inițial cu 0.
3.2.3 Protocoalele suportate de Socket
Parametrul Protocoalele suportate de Socket(en: Socket Suported Protocols sau Protocols) determină protocolul, pe care îl utilizează socket-ul în rețeaua de comunicație și transportul datelor de la o aplicație la alta.
Atunci când se crează un socket, parametrul protocoale suportate este setat în mod implicit cu 0.
Fig.3.2.3-1 Exemple de protocoale suportate de Indralogic
3.2.4. Descriptorul Socket-ului
Atunci când un socket este creeat, funcția de creeare a unui socket returnează un element de identificare a socket-ului: Descriptorul Socket-ului(en: Socket Descriptor). Acest descriptor este utilizat ca parametru de intrare pentru alte funcții ce utilizează lucrul cu sockeții.
În funcție de Sistemul de Operare utilizat, dacă socket-ul a fost creeat incorect, o constantă specială INVALID_SOCKET(sau SOCKET_INVALID) este atribuită descriptorului de socket. De menționat faptul că acest test de verificare este important, intrucât socket-ul trebuie creeat corect.
Fig 3.2.4 -1 Testul de verificare a creării socket-ului
3.2.5 Modul de funcționare a sockeț-ilor
Sockeț-ii sunt utilizațti în mod obișnuit pentru modelul de comunicație client/server. De obicei, aplicația client este localizată pe o mașinarie(ex:PC) iar aplicația server pe altă mașinărie(ex: PLC).
În acest sens, aplicația client se conectează la server, realizează o cerere de servicii, un schimb de informații cu aplicația server, apoi se deconectează.
Modelul Client/Server necesită un set bine cunoscut de convenții, înainte ca serviciul să fie acceptat și prestat. Acest set de convenții cuprinde moduri de conectare și un set de protocoale ce trebuie implementate la ambele puncte finale(en: ends of points).
Conexiunile și Protocoalele furnizate de socket-ii Client/Server pot fi:
Orientate pe conexiune(en: Connections-Oriented)
Fără conexiune (en:Connectionless)
Comunicația Orientată pe Conexiune implică faptul că, este stabilită o conexiune între aplicațiile ce urmează să realizeze un schimb de informații: server și client.
Aplicația Server(programul ce furnizează serviciile) creează socket-ul care este activat să accepte cererile de conectare.
Aplicația Client trebuie să solicite serviciile programului server. Clientul realizează acest lucru prin conectarea la un punct de intrare(adresa IP, numărul porului)pe care l-a desemnat Server-ul.
Este similar cu apelarea unui numar de telefon,care reprezintă punctul de intrare în realizarea conexiunii cu Server-ul.
Receptorul apelului(server-ul) verifică dacă este în masură să raspundă corect, iar în momentul în care este acceptată cererea de conectare, este stabilită conexiunea. Conexiunea este activă atâta timp cât este solicitată de ambele parți.(de receptor și interlocutor).Pentru Domeniul AF_INET, acest tip de comunicație este suportat de protocolul TCP.
Comunicația Fără Conexiune implică faptul că nu este stabilită nici o conexiune între cele 2 mașinării(server și client) pe parcursul schimbului de informații, a transferului de date. În schimb, aplicația server desemnează un punct de intrare(o adresă IP, un port ), unde clienții pot trimite cererile lor. Astfel aceasta nu reprezintă o conexiune activă, în care are loc schimbul de date. Ca exemplu al acestui tip de comunicație este căsuța poștală. În momentul în care este trimisă o scrisoare către căsuța poștală, nimeni nu poate garanta faptul că receptorul a primit scrisoarea. Este posibil ca interlocutorul să aștepte un raspuns de la receptor. Pentru Domeniul AF_INET, acest tip de comunicație este suportat de protocolul UDP.
În ambele cazuri, socket-ul de pe server așteaptă o cerere de la Client. Pentru a face acest lucru, server-ul trebuie să creeze cel puțin un socket și să stabilească un punct de intrare pentru clienții ce urmează să se conecteze.
Schimbul de informații dintre Client și Server are loc atunci când:
un client este conectat la server printr-un socket
server-ul efectuează o cerere(en: request) clientului
server-ul trimite raspuns înapoi clientului
Server-ul este cel care are grijă să închidă conexiunea, atunci când clientul a părăsit-o corespunzător.
3.2.6 Principalul Mod De Implementare a Aplicației UDP Client/Server
Figura următoare ilustrează relația dintre aplicația Client- Server într-o comunicație fără conexiune.
Fig 3.2.6 -1 Modul de funcționare a aplicației Client/Server într-o comunicație fără conexiune
Conexiunea orientată către Server utilizează următoarea secvență de apel de funcții:
Funcția de creeare a socket-ului returnează un descriptor de socket. Domeniul INET(Internet Protocol) împreună cu protocolul TCP vor fi utilizați de acest socket.
Dupa ce descriptorul de socket a fost creeat, funcția bind() stabilește un punct de intrare unic(o adresa IP si un număr de port) pentru ca socket-ul client să poată să comunice cu server-ul.
Server-ul utilizează funcția RecvFrom() pentru a primi date( în urma cererii solicitate de Client(en: Client Request))
Funcția Send() este utilizată pentru a trimite date către Client(en: Server Response).
Funcția Close() închide orice descripor de socket deschis, atunci când clientul a închis sau respectiv s-a pierdut conexiunea.
Conexiunea orientată către Client, utilizează aceeași secvență de apeluri de funcții, realizându-se o excepție doar la pasul 3, unde se utilizează funcția SendTo() în scopul transmiterii informației către server(en: Client Request), iar la pasul 4 se utilizează funcția RecvFrom() în scopul recepționării datelor de la server(en: Server Response).
3.2.7.Tratarea Problemei de funcționare a PLC-ului: Modul Blocking și Non-Blocking al Socket-ilor
Socket-ul este creeat în mod implicit în modul blocking(blocant). Anumite apeluri de funcții ale socket-ului lucrează implicit în acest mod:
SysSockRecv(), SysSockSend
SysSockRecvFrom(),SysSockSentTo()
SysSockConnect(),SysSockAccept()
SysSockClose()
, iar de asemenea pentru secvența de funcții: SysSockRecvFrom() și SysSockSentTo(), Server-ul nu este capabil să trimită nici o comandă către PLC, dacă nu a primit nimic de la aplicația Client. Acest lucru poate cauza probleme în funcționarea PLC-ului, întrucât aplicația server se va opri din apelul funcțiilor iar PLC-ul va intra într-o buclă infinită de așteptare.(PLC-ul nu funcționează în acest mod).
Există totuși diferite moduri de a trata această problemă:
Se Utilizează un task pentru controlul PLC-ului, și alt task pentru manipularea Socket-ului
Se schimbă modul de funcționare a Socket-ului din Blocking, în Non-Blocking prin intermediul funcției SysSockloctl()
Se utilizează funcția SysSockSelect() – această funcție permite procesului să aștepte să se producă un eveniment, și să il informeze atunci când apare acel eveniment.
Cea mai întâlnită variantă din cele prezentate mai sus , este metoda a doua, pentru a obține cu ușurință funcționarea socket-ului în modul Non – Blocking.
Biblioteca Indralogic SysLibSocket.lib furnizează funcția de tipul DINT(Integer):
SysSockloctl(diSocket, diCommand, piParameter), unde:
diSocket : DINT ; reprezintă Descriptorul de Socket, returnat de funcția SysSockCreate()
diCommand : DINT ; reprezintă comanda (cu parametrii respectivi) aplicată Socket-ului
piParameter: DWORD; reprezintă un pointer către parametrul de comandă
Dacă se dorește să se pună un Socket în modul non-blocking trebuie utilizată constanta globală(definită în bibliotecă) SOCKET_FIONBIO : DINT := 2; ca parametru diCommand , atunci când este apelată funcția, iar piParamater reprezintă un pointer către variabila diNoBlock: DINT:=1 care trebuie să fie diferită de 0 pentru ca Socket-ul să lucreze în modul non-blocking:
diNoBlock: DINT := 1;
SysSockloctl(diSocket, SOCKET_FIONBIO, ADR(diNoBlock));
De remarcat faptul că, funcția SysSockloctl() nu schimbă modul de funcționare pentru funcția SysSockConnect(). Pentru această funcție ,Socket-ul lucrează permanent în modul Blocking.
4.Implementarea Protocolului de Interacțiune a Aplicației Client-Server în comunicația Ethernet
4.1. Indralogic: Server-ul UDP
Programul UDPServer este cel care oferă funcționalitatea de Server în dialogul Ethernet cu programul Client(UDPClient). Aplicația server este scrisă în standardul de programare al PLC-urilor, IEC-61131-3 , utilizând ca mediu de programare Indralogic.
Acest standard include cinci limbaje de programare a automatelor:
Diagrama Ladder care implementează schemele electrice convenționale
Textul Structurat(en: Structured Text), fiind un limbaj asemănător limbajului de programare Pascal.
Lista de Instrucțiuni(en: Instructions List), ce reprezintă un limbaj de asamblare , fiind inspirat din limbajele hardware existente
Diagrama de Funcții Secvențiale(en: Sequential Blocks Diagrams) , formalism grafic ce implementează standardul secvențial grafic Grafcet
Funcțiile Bloc(en: Functions Block Diagrams) care sunt reprezentate de funcții bloc pentru procesarea semnalelor.
Fig. 4.1 -1 Diagrama cu funcții/variabile a programului UDPServer
Aplicația Server a fost implementată prin utilizarea limbajului Text Structurat. În același timp, este cea care permite accesul aplicației Client, la variabilele de comandă și control a automatului programabil, prin intermediul variabilei de validare care au rolul în validarea mesajului trimis de client, în scopul setării cu True sau False a variabilelor boolene, asociate ieșirilor automatului programabil ce leagă fie Lampa Semnalizatoare, fie un Contactor ce pornește sau oprește un Motor, respectiv închide sau deschide Lampa Semnalizatoare, în funcție de starea variabilelor boolene.
În urma primirii mesajului trimis de client, server-ul este capabil să răspundă clientului prin:
setarea variabilei boolene xSendAnswer un mesaj poate fi descris clientului prin intermediul variabilelor de ieșire strLastSenderAddr și udiSenderPort.
după transmiterea mesajului, variabila xSendAnswer va fi resetată(se va inițializa cu 0).
De remarcat faptul că server-ul este capabil de a răspunde clientului doar dacă variabila diRcvPacketCount este mai mare ca 0(doar în momentul în care Server-ul a primit date).
Tab. 4.1 UDPServer: Variabile de intrare
Tab. 4.1-2 UDPServer: Variabile de ieșire
Tab. 4.1-3 Variabile de conexiune
4.2 Visual studio(C#): Clientul UDP
Clasa, UdpClient oferă posibilitatea de conectare a aplicației Client cu Server-ul UDP, unde variabila IpAdress reprezintă adresa Ip a Server-ului, iar variabila Port definește portul de comunicație al Server-ului UDP. Aplicația Client, este scrisă în limbajul de programare orientat obiect, C#, utilizând ca mediu de programare Visual Studio.
Clasa UdpClient a fost realizată în scopul simplificării procesului de creeare a aplicațiilor Client bazate pe protocolul de transport fără conexiune(UDP). Cum clasa utilizeză modul de comunicație fără conexiune, nu este nevoie să se stabilească un mod de prioritate între transmiterea și respectiv recepționarea mesajelor către/de la server.
Fig.4.2 -1 Utilizarea metodei UDPClient
Prin setarea variabilei SendStart, un mesaj poate fi transmis către Server prin intermediul metodei UdpSent().Coordonatele Server-ului sunt descrise de variabilele IpAdress și Port. Lungimea mesajului este dată de variabila Send, care acceptă un maxim de 1472 Bytes, care reprezintă în fapt o constrângere UDP(1472 Bytes per packet).
Tab. 4.2 – 1 UdpClient: Constructor
Tab. 4.2 – 2 UdpClient: Metode
Notă: Datagrama reprezintă informația transmisă prin rețea, fără a se garanta sosirea informației la destinație, momentul sosirii și conținutul său.
5. Utilizarea aplicației dezvoltate și Modul de Funcționare
Fig.5- 1 Schema fizică a aplicației implementate
În implementarea aplicației, s-a utilizat automatul programabil în structură monobloc Bosch Rexroth L40, din cadrul laboratorului de Sisteme de Conducere a Roboților Industriali.
Automatului Rexroth L40 i se poate asocia un număr foarte mare de module de extensie de intrare/ieșire, între 1024- 4096. Automatul include 3 funcționalități de diagnosticare:
Powerfail
Această funcție este destinată verificării încărcării corecte a adreselor modulelor de intrare/ieșire la pornirea automatului, în memoria RAM. În același timp funcția verifică și funcționalitatea corectă a microprocesorului, și a memoriei RAM.
WhatchDog
Funcția reprezintă un timer, care se resetează în mod regulat la resetarea automatului, sau atunci când automatul funcționează incorect, sau în timpul scanării intrărilor și ieșirilor automatului. Acest timer este destinat prevenirii erorilor hardware/software atunci când modulele de intrare/ieșire sunt citite incorect, sau microprocesorul a dat greș la citirea variabilelor asociate modulelor de intrare/ieșire. În momentul în care intrările/ieșirile nu au fost scanate corect, un mesaj corespunzător va aparea pe ecranul automatului sau pe ecranul consolei de programare.
Monitorizarea Temperaturii
Funcție permite vizualizarea pe ecranul automatului a temperaturii microprocesorului și memoriei RAM. În momentul în care microprocesorul atinge o temperatură mai mare de 105oC, pentru protecția microprocesorului, AP-ul este închis forțat.
Fig. 1.5-2 Automatul Programabil Bosch Rexroth L40
Aplicația software este constituită din două părți:
aplicația Server ce rulează pe AP
aplicația Client ce rulează pe PC
Întrucât principala aplicație, aplicația Server rulează pe Automatul Programabil, s-a avut în vedere, exemplificarea modului de funcționare a aplicației prin pașii de mai jos:
Pas 1: Se pornește Automatul Programabil, și se aștepteaptă inițializarea acestuia.
Pas 2: Se transferă aplicația Server, din Consola de Programare(reprezentată de mediul de programare Indralogic ce rulează pe un PC) în memoria de stocare(în cazul acesta este vorba de o memorie flash) a automatului.
Pas 3: Se încarcă aplicația Server în Memoria RAM a automatului, ce implică așadar, rularea aplicație de către AP. În acest moment Server-ul rulează pe automat și așteaptă conectarea Clientului.
Pas 4: Se rulează aplicația Client pe PC.
Fig. 5-2 Interfața grafică aplicației Client
Pas 5: Clientul se conectează prin apăsarea butonului „Conectare” la Server. Dacă s-a conectat cu succes, Server-ul va trimite Clientului un mesaj prin intermediul variabilei strLastSenderAddr, ce este convertită într-un vector de biți(en: byte Array) cu scopul transmiterii mesajului sub forma unui pachet de date în rețea către aplicația Client , pentru ca apoi variabila WaitResponse ce se află în programul Client, să recepționeze mesajul, ce urmează a fi convertit într-un șir de caractere(en: String) , în scopul afișării mesajului pe ecranul PC-ului. Acesta reprezintă pasul cel mai important , întrucât Clientul poate să comande AP-ul. Pentru aprinderea lămpi, Utilizatorul apasă pe butonul aplicației Client „Aprindere Lampă”. În acest moment, variabila SendStart este setată cu valoarea 1, ce este convertită într-un byte pentru a fi transmisă în rețea către Server prin intermediul metodei UdpSend() . Urmează ca apoi în Server prin intermediul funcției UdpReceiveData() să se seteze variabila Code cu valoarea 1, inițial variabila fiind inițializată cu 0. Code reprezintă o variabilă de validare. În momentul în care varibila Code este setată cu valoarea 1, variabila booleană led_roșu – care nu reprezintă altceva decât o referință ce mapează adresa Modulului de Ieșire a automatului, pe poziția caruia este legată lampa – primește valoare de adevăr True, ce va aprinde lampa. În momentul în care variabila led_roșu a primit valoarea True, variabila Code va fi resetată în așteptarea unei alte comenzi dată de aplicația Client.
Pas 6: Analog se întâmplă și în momentul în care , Utilizatorul apasă pe butonul aplicaței Client „Stingere Lampă”, doar că, de această dată variabila SendStard primește valoarea 0, iar variabila de validare Code de asemenea va fi inițializat cu 0, care va implica valoarea de adevăr False pentru variabila booleană led_rosu , astfel lampa se va stinge.
Pas 7: Dacă se dorește pornirea motorului ce deservește banda conveioare, se procedează analog Pasului 5, doar că de această dată, variabila SendStard primește valoarea 11, astfel încat variabila de validare Code primește valoarea 11, ce va implica valoarea de adevar True pentru variabila booleană Motor ce mapează adresa de ieșire a automatului, a carei legăura a Contactorului o deservește, ce implică pornirea Motorului.
Pas 8: În momentul în care se dorește oprirea motorului, se procedează analog Pasului 7, doar că de această dată, SendStart va primii valoarea 00, astfel încât variabila de validare Code , primește valoarea 00, ce va implica o valoare de adevar False pentru variabila booleană Motor, ce deservește oprirea Motorului prin intermediul Contacturului.
Pas 9: Dacă se dorește încetarea conexiunii cu Server-ul, se va apăsa pe butonul aplicației Client „Deconectare”.
6. Concluzii
Prin prezenta lucrare s-a dorit dezvoltarea unei aplicații industriale Client/Server utilizând protocolul TCP/IP, pentru un Automat Programabil, care să seteze variabilele de acces ce deservesc ieșirilor automatului programabil, ce comandă un element de execuție, și o lampă semnalizatoare.
În lucrare s-au prezentat câteva noțiuni despre Automate Programabile, modul de funcționare și operațiile matematice specifice executate de Unitatea Centrală de Prelucrare a AP-ului, operațiuni ce sunt în strânsă legătura cu modulele hardware de intrare/ieșire ale acestuia.
Evident se poate înlocui elementul de execuție și lampa semnalizatoare, cu orice proces industrial ce poate fi comandat de un AP, deci se poate asigna orice ieșire a automatului cu actorii unui proces industrial(variabilele procesului), însă scopul principal al acestei lucrări a fost, dezvoltarea unei aplicații Client/Server pentru un Automat Programabil, și exemplificarea modului de funcționare a acesteia printr-un exemplu didactic(pornirea/închiderea Motorului, Aprindere/Închidere Lampă Semnalizatoare), utilizând doar cele două elemente din cadrul laboratorului Sisteme de conducere a Roboților Industriali amintite mai sus, fără a detalia un proces industrial amplu, întrucât nu era acesta scopul .
În același timp, această aplicație poate fi considerată o alternativă la aplicația Client/Server ce este implementată în Indralogic și utilizează protocolul OPC – protocol industrial de comunicație ce implementează deja o aplicație Client/Server, protocol ce convertește protocoalele hardware de comunicație a AP-urilor, în protocplul OPC. Această aplicație poate comanda un proces industrial, prin setarea variabilelor de intrare/ieșire a AP-ului -, însă aplicația prezentată în lucrearea de față utilizează biblioteci cu licența Open Source, deci nu a necesitat costuri în dezvoltarea ei, făcând posibilă optimizarea și implementarea unui proces industrial particularizat, față de aplicația deja implementată în Indralogic care necesită costuri de utilizare, este Closed Source, iar din acest motiv nu necesită cunoștințe de programare, fiind ușor de utilizat, însă prezintă un mare dezavantaj: nu se poate implementa un proces industrial particularizat , neputându-se modifica aplicația Client/Server OPC, întrucât este Closed Source(nu permite modificarea codului sursă a aplicației).
7. Bibliografie
C.G.Haba, Sisteme de comandă a mașinilor electrice, Ed.Gh.Asachi, Iași, 2002
Daniel E.Kandray, Programable Automation Technologies, Industrial Press Inc. New York
L.A. Bryan, E.A.Bryan, Programable Controller,Second Edition,An Industrial Text Company Publication,Atlanta,USA
Articol, https://www.researchgate.net CoDeSys and Ethernet communication: The concept of Sockets and basic Function Blocks for communication over Ethernet. – Wojciech Gomolka – Accesat februarie 2016
Documentație Internet, http://test.mrxl.ro/joomla/images/Cursuri – Accesat aprilie 2016
Documentație Internet , http://www.wago.com/wagoweb/documentation – Accesat aprilie 2016
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Accesul Tcpip la Variabilele Unui Automat Programabil (ID: 108633)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
