Cernica Paul Ovidiu Licenta 2018 [625594]
Universitatea POLITEHNICA Bucure ști
Facultatea Automatică și Calculatoare
Departamentul Automatică și Informatică Industrială
LUCRARE DE LICENȚĂ
Conec tarea unui automat programabil cu sistemul
cloud IBM Bluemix
Coordonator Absolvent: [anonimizat].dr.ing. Silviu R ăileanu Cernica Paul -Ovidiu
2018
2
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Cuprins
1. Introducere…………………………………………………. ……………………………………………… ……. 4
1.1. Utilizarea serviciilor cloud în contextul proceselor de fabricație. …………………….. 4
1.2. Motivare………………………………………………………………………….. ………………………. 5
1.3. Definirea termenilor…………………………………………………………………………………… 5
1.4. Structur ă………………………………………………………………………………….. ………………. 6
2. Aplica ția web ……………………………………………….. …………………………………………………… 8
2.1. Tehnologii folosite…………………………………………………………………. …………………. 8
2.1.1. Limbajul de programare………. ………………………………………………………….. . 8
2.1.2. Stocarea datelor…….. ……………………………………………………………………….. 10
2.1.3. Interfa ța utili zator……. ……………………………………………………………………… 12
2.1.4. Serviciile cloud IBM Bluemix și Vultr………………………………………………. 14
2.2. Tranzi ție către cloud …………………………………… ……………………………………………. 15
2.3. Prezentarea aplica ției………………………………………………………………………………… 18
3. Automate programabile (PLC) …………………………… ……………….. ………………………….. 22
3.1. Standarde de programare ………… ………………………………………………………………… 23
3.2. Aplicație PLC …………………… …………………………………………………………… ……….. 24
3.2.1. Descriere aplicație………. …………………………………………………………………. 25
3.2.2. Tehnologii folosite…………. ……………………………………………………………… 26
3.2.3. Configurare variabile și semnificația lor …………………………………………… 27
3.2.4. Logică și dezvoltare aplicație……… ………………………………………………….. 29
3.2.5. Mediul de simulare………………………………………………………. ………………. . 37
3.2.6. Concluzii apl icație………………………………………………………………………… . 43
3.3. Conectare aplicație PLC la aplicația Cloud …………………………………………………… 44
3
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix 4. Concluzii și dezvoltări ulterioare ……………………………………………………………………….. 52
5. Bibliografie………………………………………………………………………………………………… ….. 54
4
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix 1.Introducere
1.1.Utilizarea serviciilor cloud în contextul proceselor de fabrica ție
În această lucrare am să discut despre utilizarea procese lor de fabricație prin
intermediul serviciilor cloud, concept ce po ate aduce avantaje foarte mari producător ilor.
Voi cre ea o aplica ție web pe care o voi pune pe un cloud folosind IBM Bluemix (acum
redenumit IBM Cloud) ca și prestator de servicii, aplica ție prin intermediul c ăreia am s ă
conectez un automat programabil (PLC).
Acest domeniu al proceselor de fabric ație cloud cre ște în popularitate în rândul
întreprinderilor datorit ă avantajelor pe care le poate oferi:
• Acces rapid și global la resurse le gestionate, totul dator ită conexiunii la internet;
• Eliminarea necesita ții companiil or plătitoare s ă gestioneze inte rn programele .
Distribuitorii de servicii cloud vin cu aceste a gata f ăcute, au grij ă de dezvoltarea
lor, de posibile atacuri mali țioase etc.
• Scalabilitatea capacit ății necesare de procesare. Companiile pot oric ând să creasc ă
sau s ă reduc ă capacitatea de pr ocesare pe care o cer de la distribuitori i de servicii
cloud în func ție de necesarul lor de produc ție. Datorit ă acestui avantaj, aceste
servicii se preteaz ă la toate companiile de produc ție indiferent de dimensiunea lor
sau de renume. Costurile vor fi prop orționale cu dimensiunea mediului de stocare
sau procesare și cu durata în care acestea sunt folosite.
• Asigurarea datelor sensibile. Exist ă sisteme care creeaz ă copii de rezerv ă pentru
datele stocate, cu scopul ca în cazul în care se pierde informa ția sto cată datorit ă
erorilor umane, defecte ale componentelor hardware, atacuri mali țioase etc., s ă se
poata recupera ace le informa ții.
Exist ă și semne de îngrijorare asupra acest ui domeniu, și aici în principal vorbim
despre probleme ce apar datorit ă securita ții. Distribuitori de servicii cloud spun c ă aceast ă
5
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix securitate a datelor este foarte sporit ă, însă informa țiile folosite în industria de fabrica ție
fiind de o natur ă foarte sensibil ă aduce multe îngrijor ări, cum ar fi posibile atacuri ale
hackerilor.
1.2.Motivare
Am ales acest subiect datorit ă necesit ătii evolutive a industriei de produc ție, o
industrie care de și și-a consolidat o baz ă solid ă în ultimii ani , observ ă posibilitatea de
dezvoltare prin intermediul informaticii. Acest domeniu este în continu ă creștere și vine cu
foarte multe avantaje pe care marii produc ători le caută.
„Starea în care se afl ă aceste procese de fabrica ție este foarte important ă datorit ă
faptului c ă ele influenteaz ă mult economia unei țări, astfel și traiul de zi cu zi. Noile
tehnologii care ies la suprafa ță pot avea un impact foarte mare cu privire la cum evolueaz ă
aceast ă industrie ”1.
1.3.Definirea termenilor
La baza proceselor de fabricație stau automatele programabile sau PLC -uri așa cum
le-am numit în titlul lucr ării, termenul venind de la abrevierea variantei în engleză,
Programable Logic Controler. Acest ea sunt în prezent baza func țional ă a marilor industrii
de fabricație. Acest aparat este compus din 3 părți principale:
1. Intrări: acestă parte reprezentat ă de un num ăr predefinit de porturi are ca rol
obținerea de informații de stare de la si stem, lucru care poate fi realizat prin
conectarea în aceste porturi a senzorilor ce pot citi aceste stări, sau rol în obținerea
1 Ray Y. Zhong, Xun Xu, Eberhard Klotz, Stephen T. Newman (2017). Intelligent Manufacturing în the
Context of Industry 4.0: A Review. Engineering, vol. 3, editia 5, pag. 616 -630.
6
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix de informații de la utilizatori, lucru realizat prin con ectarea a diferite comutatoare
(butoane) cu scopul de a fi ac ționate la dorin ța utilizatorului.
2. Ieșiri: aceste porturi au rolul de a ac ționa diferite ma șini, în general motoare, cu
scopul realizării diferitor munci în vederea obținerii produsului final.
3. Unitatea central ă de procesare: aici este realizat ă toată logica sistemului. Aici s e
încarc ă un program proiectat pe calculator de persoane specializate , program ce se
folose ște de intr ări pentru a da comanda ie șirii. Acesta st ă la baza func ționării PLC –
ului.
„Computerizarea în nori ”2 (Cloud computing) este reprezentat ă de un ansamblu de
servicii din domeniul informaticii care are ca rol eliminarea nece sității achizi ției de
echipamente hardware de c ătre cei ce au nevoie s ă se foloseasc ă de acestea în diverse
scopuri. Cei ce oefer ă aceste servicii de computerizare în nori se ocup ă și de achizi ția
acestor echipamente și, în schimbul unei sume de bani pl ătită în func ție de c ât de des este
folosit echipamentul, ace știa „ împrumut ă” aceast ă infrastructur ă consumato rului prin
intermediul internetului. Se ofer ă medii virtual în care sunt realizate diverse opera țiuni,
cum ar fi dezvoltarea și găzduirea paginilor web, stocare a de date, acces la diferite
tehnologii din diferite domenii.
Procese le de fabricație cloud con stau în utilizarea infrastructurii cloud pentru
gestionarea resurselor ce stau la baza proceselor de fabricație, prin gestionare înțelegând
atât monitorizare și acționare a stărilor acestor resurse cât și capacitatea de a altera natura
logică a sistemului (în proporți e mai mar e sau mai mic ă).
1.4.Structur ă
Proiectul va fi structurat pe 3 capitole principale :
Capitolul 2: Aici voi vorbi despre 3 p ărti: prima parte este despre modul în care am
realizat aplica ția web (tehnologii, modele, module, securizare d ate etc.), în a doua parte voi
vorbi despre integrarea aplica ției pe serviciul cloud IBM Bluemix (modul în care am
2 Traducere proprie luată din – Răzvan Constantin GUȚULOV, Ștefan -Mihai MOGA , grupa 1100 Facultatea
de Cibernetică, Statistică și Informatică Economică Academia de Studii Economice din București, Cloud
computing – arhitectură și exemple . pag. 1
7
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix pregătit aplica ția pentru clonare , clonearea în sine, testare și reactualizare înbun ătățiri. Și
ultima parte voi vorbi despre interfa ța utili zator și cum e ste gândit site -ul(cum func ționeaz ă
aplica ția).
Capitolul 3: În acest capitol voi prezenta date despre automatele programabile,
modul în care acestea func ționeaz ă și voi creea o aplica ție ce eventual va fi încărcată în
unitatea central ă de pr ocesare a automatului programabil și ne va servi la verificarea
conect ării automatului la serviciul cloud. De asemenea v oi realiza conectarea propriuzisă
automat ului la serviciu l cloud: conectarea propriuzis ă, afișarea datelor citite de la
automatul progra mabil pe cloud și trimiterea de instruc țiuni de pe cloud spre acesta prin
intermediul unui protocolul ui de comunica ție dintre PC și automatul programabil.
Capitolul 4: Date experimentale ob ținute , analizarea acestor date și posibile
înbun ătățiri ce pot fi aduse aplica țiilor.
Lucrarea va fi incheiată intr -un capitol conclusiv în care voi încerca să analizez
progresul cu privire la conectarea celor două tehnologii. De asemenea aici voi vorbi despre
diferite tehnologii cloud care pot fi utilizate în vederea d ezvoltării mai aprofunzite a
cercetării, tehnologii precum „internetul obiectelor„ (Internet of things) sau chiar
inteligența artificială.
8
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix 2.Aplica ția web
Pentru realizarea conect ării automatului programabil la serviciul cloud, este necesar
ca ma i întai s ă proiectez și să implementez aplica ția web care va servi ca și intermediator
între interfa ța utilizator, serviciul cloud și sistemul de pro ducție.
Aplica ția este de tip pagin ă web. Pentru securizarea datelor folosite am utilizat un
model de tip înregistrare -autentificare în care utilizatorul vine și se înregistreaz ă și apoi
accesea ză datele prin intermediul acelui cont utilizator cu parol ă.
2.1. Tehnologii folosite
Pentru a crea o aplica ție web este necesar s ă se foloseasc ă o suit ă de progra me care
să acopere toate necesit ățile func ționale a acesteia. Va trebui să alegem un limb aj de
programare prin intermediul c ăruia s ă dezvol tăm logica func țional ă pe partea de server, de
asemenea trebuie s ă alegem un mediu în care s ă dezvolt ăm partea din fa ță (front -end) de
client iar pentru sotcarea datelor vom crea o baz ă de date. Pentru a modela aplica ția dup ă
nevoile noastre vom folosi diverse module care au func ționalit ăți predefinite.
2.1.1 Limbajul de programare
Ca și limbaj de programare am ales s ă lucrez în Python. Aceast ă alegere am facut -o
deoarece acesta vine cu module care se pot integra în aplica ție, module care au
funcționalit ăți necesare realiz ării proiectului.
Pentru dezvoltarea aplica ției am folosit modulul Flask. Acest a este un mini mod ul
integrat în Python, este considerat „mini” deoarece nu necesit ă anumite instrumente
9
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix specifice sau libr ării. El vine cu extensii ce sunt utilizate în programul principal, extensii ce
adaug ă caracteristici func ționale aplica ției.
Python vine cu un fișier de instalare de tip executabil ce poate fi desc ărcat de pe
pagina web a producatorului, și este cu surs ă deschis ă (open -source) astfel utilizatorii sunt
liberi s ă îl foloseasc ă fară să trebuiasc ă să plăteasc ă. Pentru integrarea modulului Flask în
aplica ția principal ă este nevoie ca mai întai s ă setam un mediu virtual prin crearea
fișierului venv folosind urm ătoare comand ă în interiorul proiectului:
„py -3 -m venv venv ”3
După crearea mediului virtual, din terminalul de comand ă al sistemului de operare
Windows schimb ăm directorul c ătre acel fi șier venv, și vom rula comanda:
„venv\Scripts\activate ”3
Aceasta va activa mediul virtual. Dup ă putem s ă instal ăm modulul folosind
următoarea comand ă:
„pip install Flask ”3
În aceast moment avem setat în aplica ție mini modulul Flask. Tot ce ne mai r ămâne
să facem este ca în programul principal (cel cu extensia .py de unde pornim aplica ția) să
import ăm Flask prin folosirea în primele linii de cod a comezii:
from flask import Flask
Un alt modul Python pe care l -am folosit este sha256_crypt. Pentru a putea s ă îl
folos im vom utilizat aceea și func ție de import încadrata la începutul codului:
from passlib.hash import sha256_crypt
Prin intermediul acestui modul am criptat parola utilizatorilor. Acesta foloseste un
algoritm de tip ha șurare. Aceasta este metoda recomandat ă de stocare a parolelor în baza
de date deoarece chiar dac ă baza de date este compromis ă, nu se va mai putea extrage
3 Documentatie modul Flask. http://flask.pocoo.org/docs/1.0/installation/
10
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix parola. Ha șurarea parolei este un proces care merge într-un singur sens, parola introdus ă de
utilizator este criptat ă printr -un anume algroitm , acest proces nefiind reversibil.
Pentru procesul de autentificare se ia parola introdus ă de utilizatorul care dor ește să
intre în cont și se ha șureaz ă, apoi se compar ă hașurarea pentru a vedea dacă acestea sunt la
fel.
2.1.2.Stocarea datelor
Pentru stocarea datelor am folosit o baz ă de date de tip MySql, aceasta este cu sursă
deschis ă și ne putem da seama dup ă nume că se bazeaz ă pe limbjaul SQL (Structured
Query Language).
În vederea proiect ării bazei de date se urmeaz ă următorii pa și:
• Instalarea bazei de date, urm ând instruc țiunile de pe pagin a produc ătorului;
• Crearea bazei de date utiliz ând urmatoarea instruc țiune într-o consol ă de comand ă
special ă, pusă la dispozi ție de produc ător odat ă cu instalarea programului:
CREATE DATABASE <numele bazei de date> ;
• Crearea tabelelor dorite. Tabelele sunt entit ăți în care se stocheaz ă informa ția și
logica bazei de date. Acest ea sunt principalele „unelte” prin care se construie ște și
se man ipuleaz ă o baz ă de date. Ele sunt compuse din c âmpuri care au rolul de a
stoca date specifice, și este recomandat s ă se creeze pentru toate tabelele un camp
ID care are rol de indexare, fiind setat cu atributul ‚AUTO_INCREMENT’, asta
înseamna c ă acesta va lua valori numerice crescătoare în func ție de num ărul datelor
din tabel ă, el va fi unic și poate fi folosit ca și cheie prima ră.
Relațiile dintre tabele se stabilesc prin c âmpuri speciale nu mite chei. Acestea sunt
de doua tipuri, chei primare și chei secundare. Cheia primar ă este un camp ales arbitrar de
utilizator care trebuie s ă satisfac ă codiția de a fi mereu unic ă și mereu populată .
Python vine cu modul special pentru utilizarea bazei d e date MySQL, modul care
se instaleaz ă prin comanda:
11
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix „pip install flask -mysqldb”4
Pentru folosirea în aplica ția curent ă a acestui modul, acesta se import ă folosind în
primele linii ale aplica ției (ca și în exemplele anterioare) comanda:
„from flask -mysqldb import MySQL ”4
Pentru a putea lucra cu acest modul și implicit cu MySQL va trebui s ă setăm în
aplica ție anumi ți parametr ii, pentru a spune programului la ce baz ă de date trebuie s ă se
conecteze. Ace ști parametri i se seteaz ă după liniile de importuri în felul urm ător:
app.config[ 'MYSQL_HOST' ] = '95.179.130.120'
app.config[ 'MYSQL_USER' ] = 'root'
app.config[ 'MYSQL_PASSWORD' ] = '<parola dorita>'
app.config[ 'MYSQL_DB' ] = 'myflaskapp'
app.conf ig['MYSQL_CURSORCLASS' ] = 'DictCursor'
În codul de mai sus se seteaz ă parametrul ‚MYSQL_HOST’ ce are ca și valoare IP –
ul bazei de date. Aici se poate atribui parametrul ‚localhost’ pentru baze de date ce ruleaz ă
pe aceea și ma șină în care este instala tă și ruleaz ă aplica ția sau ‚<IP>’ (în cazul nostru
‚95.179.130.120’ ) dacă dorim s ă ne conectam la o baz ă de date instalat ă pe o ma șină
extern ă ce permite accesul din exterior la aceasta . În vederea utilizării bazei de date este
necesar să ne autentificam cu un ul din conturile existente, în cazul de fa ță vom folosi
contul de administrator ‚root’ cu parola asociat ă acestuia , cont ce este setat la instalare . Se
va atribui parametrului ‚MYSQL_DB’ numele bazei de date la care dorim s ă ne conect ăm
(baza de date treb ui mai întai creat ă cum am precizat mai sus) iar parametrul
‚MYSQL_CURSORCLASS’ va fi setat cu numele ‚DictCursor’, acest parametru este
folosit pentru a preciza cum dorim s ă stocam în memoria programului datele extrase din
baza de date, date pe care le vo m utiliza în aplica ție, și este setat ca și dicționar deoarece
ușureaz ă accesarea datelor. Dic ționarul este un tip de dat ă în Python ce stocheaz ă mai
multe informa ții iar aceste informa ții sunt accesate printr -o cheie în loc de un num ăr de
ordine (index) a șa cum sunt accesate spre exemplu liste le.
Structura bazei de date este destul de simpl ă, aceasta este consti tuită din trei tabele
legate între ele prin relații de tip 1:N (one to many) (fig. 1). Primul tabel „users” este cel ce
conține informații despre utilizatori, acesta este conectat printr -o relație de tip 1:N la
4 Welcome to Flask -MySQLdb ’s documentation! . https://flask -mysqldb.readthedocs.io/en/latest/
12
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix tabelul „devices”. Asta înseamnă că un unic utilizator poate avea mai multe dispozitive,
dar un unic dispozitiv nu are decât un singur utilizator.
Ultimul tabel este numit „io” (de la inputs /outputs), aceasta stochează informații cu
privire la variabilele fiecărui dispozitiv în parte. Și în acest caz relația de tip 1:N se bazează
pe același principiu , un unic dispozitiv poate avea mai multe variabile, în timp ce o unic ă
variabil ă aparține unu i singur dispozitiv.
Figură 1
2.1.3.Interfa ța utilizator
Interfa ța utilizator este o parte important ă a aplica ției, ea se refer ă la partea „din
față” a aplica ției (frontend) în care se creeaz ă ceea ce v ăd utilizatori mai mult sau mai pu țin
familiariza ți cu limbajele de programare.
Flask se folose ște de șabloane (template) pentru a cre ea aceast ă interfa ță. Acestea
sunt fi șiere de tip HTML ( Hypertext Markup Language ), fișiere cu extensia „.html” ce au o
structur ă specific ă și sunt interpretate de c ătre un program folosit pentru a naviga pe
internet, program numit b rowser. Acest browser va reda con ținutul sub form ă de pagin ă
web.
Un mare avantaj pe care îl ofer ă Flask este dat de faptul c ă se folose ște de Jinja2 ca
și limbaj de creeare a șabloanelor. Acest limbaj vine cu anumite avantaje precum cel de
moștenire a șabloanelor. Aceast ă proprietate este folosit ă și în aplica ția noastr ă, un bun
exempl u fiind bara de navigare. Aceasta a fost proiectat ă și creeat ă într-un șablon pe car e îl
13
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix putem refolosi în fiecare pagin ă în parte far ă a fi nevoie s ă rescriem codul de fiecare dat ă.
Expresia folosit ă pentru integrare este:
{% include 'includes/_navbar.html'%}
Aici fi șierul „_navbar.html” salvat în directorul „includes” este inclus în șablonul
„layout.html”. Acesta din urm ă va fi mo ștenit de toate paginile pe care le vom crea prin
sintaxa pus ă la începutul fi șierului:
„{% extends ‘layout.html’ %}
{% block body %}
{% endblock %}”5
Dorim ca bara de navigare s ă fie prezent ă peste tot în aplica ție. În acest mod tot ce
trebuie s ă facem la creearea unei pagin i noi este s ă folosim codul specificat mai sus și să
punem particulari tățile paginii între „{% block body %}” și „{% endblock %}”, res tul
conținutului fiind mo ștenit far ă să îl rescriem.
Altă caracteristic ă foarte important ă a limbajului Jinja2 este faptul ca acesta este
rapid și se poate depana u șor posibile erori de sintax ă datorit ă faptului că are integrat un
depanator. Dacă se face o gre șeală, când se porne ște aplica ția vom fi înștiințați cu linia
exact ă din șablon la care se afl ă problema .
Un alt avantaj adus de Jinja2 este dat de faptul c ă datele furnizate de utilizatori în
formulare sunt filtrate. Acest lucru ajut ă la securiza rea implicită a aplica ției împotriva
atacuri lor de tip XSS (Cross Site Script) care presupune ca atacatorul s ă introdu că scripturi
malițioase în câmpuri le formularelor, scripturi ce au ca scop gasirea de breșe în securitatea
aplicației . Filtrarea datelor i ntroduse de utilizatori se face la nivelul anumitor caractere care
sunt necesare în crearea acelor scripturi mali țioase și care sunt înlocuite automat cu un cod
ce semnific ă acele caractere, astfel scriptul nu va func ționa.
Aceste fi șiere fiind de tip HTM L, pot fi particularizate în vederea îmbun ătățirii
aspectului prin atributul „style” și prin intermediul limbajului javascript. Acestea se pot
scrie direct în șabloane, dar este mai bine să se foloseasc ă fișiere separate ce au extensia
„.css” pentru stil și „.js” pentru javascript. În aplica ție am folosit un modul numit
5 Flask documentation, Step 7:The Templates . http://flask.pocoo.org/docs/0.12/tutorial/templates/
14
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix „bootstrap” care vine cu stiluri și javascript -uri predefinite și le atribuie elementelor din
HTML.
Unul dintre elementele pe care am utilizat stilurile din modulul „bootstrap” este
chiar bara de navigare. Aceasta este definit ă între „ <nav class=navbar navbar -expand -md
navbar -dark bg -dark> ” și „</nav>”. Aceste stiluri se folosesc prin intermediul atributului
„class=” care are ca și argument stilul definit extern într-un fișier „.css”. Acest fișier extern
a fost importat folosind comanda:
„<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"
integrity= "sha384-
WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB"
crossorigin= "anonymous">”6
2.1.4.Servici ile cloud IBM Bluemix și Vultr
IBM Bluemix redenumit IBM Cloud este un serviciu de tip cloud oferit de de firma
IBM. Acesta vine cu o suit ă de servicii de integrare a aplica țiilor în domeniul lor de
găzduire, pun ând la dispozi ție clienților resurse de stocare și procesare .
„Noua paradigmă numită cloud computing transformă industria IT și redefine ște
modul în care sunt dezvoltate, desf ășurate, v ândute, livrate și consumate serviciile unei
întreprinderi. În loc s ă se administreze sist eme IT complexe, clien ții se pot axa pe
principalul domeniu de lucru al companiei, în timp ce beneficiaz ă de toate func țiile IT
necesare sub form ă de servicii. Acum , privind din perspectiva unui distribuitor de servicii
cloud, pentru a r ămâne competitiv în acest domeniu , este necesar un nivel ridicat de
standardizare, automatizare și optimizare.”7
Exist ă diferen țe între cei doi distribuitori de servicii cloud utiliza ți în lucrare. IBM
Cloud ofer ă servicii de tip IaaS (Infrastructure as a service) în timp c e Vultr ofer ă servicii
de tip Paa S (Platform as a service).
6 Documentatie Bootstrap, Introduction . https://getbootstrap.com/docs/4.1/gett ing-started/introduction/
7 IBM, Evolution of the IBM Cloud: Enabling an enterprise cloud service ecosystem. 12 December 2011
15
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix „Prin IaaS se pune la dispozi ție clien ților componente hardware(servere, depozite și
rețele de internet) și programele asociate acestora (tehnologii de virtualizare a sistemelor
de operare, siste me de fi șiere), totul sub form ă de servicii. Acesta este o evolu ție a
metodelor tradi ționale de g ăzduire ce permite utilizatorior s ă acceseze resursele imediat la
cerere. Spre deosebire de PaaS, distribuitor ii de IaaS nu prea au nevoie de administrare
intensivă a serviciilor , aceștia trebuie doar să se asigur e că serviciile lor sunt opera ționale,
și utilizatorii trebuie s ă dezvolte singuri programele și să le utilizeze precum le -ar utiliza pe
propriile sisteme.”8
PaaS se refer ă la „Platform as a service ”, ceea ce înseamn ă că distribuitori pun la
dispozi ție consumatorilor una sau mai multe mașini virtual e cu sisteme de operare . Acest
lucru ofer ă o mai mare liber tate utilizatorilor dar necesit ă și mai mult timp alocat
configur ării și în același timp mai multe cunostinte în dezvoltare.
2.2.Tranzi ție către cloud
Pentru a pune aplica ția pe internet (Word Wide Web), am folosit serviciile de
hostare cloud oferite de IBM Cloud (fost IBM Bluemix). Ace știa vor g ăzdui aplica ția, și
vor oferi acces prin intermediul i nternetului celor ce vor s ă o foloseasc ă.
Pagina poate fi accesat ă la urm ătorul URL:
https://flaskapp -licenta.eu -gb.mybluemix.net/
Aceasta a fost dezvoltat ă pe ma șina local ă, în cazul de fa ță laptopul personal.
Pentru a trece din mediul local în cel online, este nevoie s ă pregatim manual anumite
fișiere de configurare care vor fi folosite de IBM Cloud pentru a clona aplica ția și să o
porneasc ă. Aceste fi șiere vor fi salvate în directorul princi pal al aplica ției.
8 Sushil Bhardwaj, Leena Jain, Sandeep Jain. CLOUD COMPUTING: A STUDY OF INFRASTRUCTURE AS
A SERVICE (IAAS) . International Journal of Engineering and Information Tehnology, 2010.
16
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Unul dintre fi șierele de configurare este „runtime.txt”, acesta precizeaz ă limbajul
de programare, în cazul de fa ță Python și versiunea aceastuia, deci va con ține urm ătoarea
linie:
python -3.6.5
Un alt fi șier de configurare este „requirem ents.txt”. Acesta va da informa ții despre
modulele folosite în dezvoltarea aplica ției și versiunea lor. Prin intermediul acestui fi șier,
aplica ția cloud va ști să instaleze acele module automat. În cazul de fa ță acest fișier va
conține urm ătoarele linii:
Flask==1.0.2
flask -mysqldb==0.2.0
Flask -WTF==0.14.2
passlib==1.7.1
Fișierul „procfile” este folosit pentru ca serviciul cloud s ă știe comanda cu care s ă
porneasc ă aplica ția. Con ține sintaxa „web:” urmat ă de comanda de pornire a aplica ției
web:
web: python App.py
„Un ultim fi șier de configurare este „manifest.yml”, este oferit un șablon pentru
acesta de c ătre cei de la IBM Cloud. El con ține informa ții precum capacitatea de memorie
care se vrea a fi alocat ă aplica ției, numele aplica ției clonate pe cloud, ti pul unui sistem de
verificare pentru atunci când se porne ște aplica ția, etc.”9
Pe mașina locală, aplicația a fost dezvoltată folosind versiune 3.6.5 de Python. O
problema întâmpinată a fost dată de faptul că IBM Cloud nu suportă implicit această
versiune. Pentru souluționare a fost nevoie să folosesc o extensie (buildpack) ce poate fi
precizată la clonarea aplicației. Această extensie va face ca în timpul clonării aplicatiei să
se instaleze mai întai pachetele necesare rulării programului pe această versiu ne.
9 Cloud Foundry Documentation . Deploying with Application Manifests.
https://docs.cloudfoundry.org/devguide/deploy -apps/manifest.html
17
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Înainte s ă începem cu tranzi ția de pe ma șina local ă pe cloud, mai trebuie s ă
instal ăm un instrument oferit de către cei de la IBM Cloud și anume „IBM Cloud C LI”,
prin intermediul c ăruia putem da comenzi specifice care altfel nu vor fi recunoscute de
sistemul de operare. Acesta se instaleaz ă rulând în PowerShell comanda:
„Set-ExecutionPolicy Unrestricted; iex(New -Object Net.WebClient).DownloadString(‚http://ibm.biz/idt -win-
installer’) ”10
Odata ce avem aceste fi șiere de configurare setate în directorul p rogramului și
„IBM Cloud CLI” instalat , vom putea începe procesul prin care s ă clonăm aplica ția pe
cloud și să o rul ăm. Pentru aceasta vom utiliza acela și PowerShell folosit mai sus care este
o linie de comand ă oferit ă de sistemul de operare Windows. Vom schimba directorul spre
care indic ă aceast ă linie de comand ă cu cel în care am dezvoltat aplica ția, și vom folosi
următoarea comandă pentru a ne autentifica la serviciul cloud:
„cf login -a api.eu -gb.bluemix.net ”11
După ce se încarc ă, vom fi ruga ți să furnizăm datele de autentificare pe care le
obținem prin înregistrarea pe pagina web oficial ă a celor de la IBM Cloud. Dup ă ce
furniz ăm datele și se termin ă de încărcat, putem rula ultima comand ă pentru a transfera
aplica ția și a o rula pentru prima dat ă pe clo ud, comanda fiind:
cf push flaskapp -licenta -b https://github.com/cloudfoundry/python -buildpack.git
Se observă faptul că am folosit ca și parametru „ -b” urmat de un URL. Acesta URL
este locul unde se g ăsește acel „buildpack” de care am vorbit pu țin mai sus. Prin
intermediul s ău IBM Cloud va ști să instaleze tot ce este necesar pentru a putea folosi
versiune de Python 3.6.5. Dup ă executarea comenzii se v a aștepta instalarea și setarea
tuturor configura țiilor, apoi dacă totul a decurs bine aplica ția ar trebui s ă funcționeze.
Aceasta poate fi accesat ă dupa URL -ul precizat mai sus sau prin intermediul butonului
„Visit App URL” de pe site -ul principal al celor de la IBM Cloud :
10 IBM Developer Tools CLI Installer (idt -installer) for Windows . https:// github.com/IBM -Cloud/ibm -cloud –
developer -tools/tree/master/windows -installer
11 Cloud Foundry Documentation . Getting Started with the cf CLI. https://docs.cloudfoundry.org/cf –
cli/getting -started.html
18
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 2 Meniu aplicație IBM Cloud
Tot în figura 1 este prezentat și numele aplica ției, în cazul nostru „flaskapp –
licenta”, statusul în care se afl ă aceasta , dacă totul a decurs bine acest status trebuie s ă fie
„Running”, și limbajul de dezvol tare folosit , precizat prin extensia lui , în cazul nostru
„.py” .
Mai departe, dac ă dorim s ă îmbun ătățim aplica ția, sau s ă adăugăm func ții noi, sau
pur și simple să facem anumite schimb ări, pentru a le actualiza și pe Cloud, vom folosi
aceea și comand ă ca înainte, și în cazul în care închidem instanța de PowerShell, va fi
necesar s ă refolosim și comanda pentru autentificare.
2.3.Prezentarea aplica ției
Aplica ția poate fi accesat ă prin intermediul urm ătorului link: https://flaskapp –
licenta.eu -gb.mybluemix.net/ . Aceasta are un model înregistrare/autentificare, astfel datele
sensibile sunt protejate prin intermediul unei parole. Utilizatorul poate s ă își creeze un cont
oricând, și odat ă ce se auten tifică, acesta poate merge în meniul „Dispozitive” unde se
gestione ază aparatele.
Pentru a putea ajunge la formularul de înregistrare sau de autentificare , se va da
click pe link -ul „Înregistrare” respectiv link -ul „Autentificare” pozitionate în dreapta b arei
de navigare:
19
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 3
Formularul de înregistrare este compus din date personale ale utilizatorului, date
folosite în vederea particularizarii aplica ției prin intermediul contului de utilizator.
Pentru a ști dac ă contul a f ost înregistrat cu succes este setat sa apara un mesaj care
să anun țe acest lucru. Exist ă posibilitatea ca numele contului (username) sau adres a de
email să fie deja folosit e, datorit ă acestui lucru nu se va putea crea un al doilea cont cu
acela și nume uti lizator sau adres ă email , dar cel care încearca acest lucru va fi notificat și
în acest sens:
Figură 4
Iar în cazul în care înregistrarea este realizat ă cu bine se va afișa următorul mesaj :
Figură 5
Odată ce sa cre eat contul, utilizatorii se pot autentifica, folosind username -ul și
parola pe care ace știa le-au ales la înregistrare . Dac ă toate datele vor fi introduse corect,
aceștia vor fi redirecta ți spre pagina principal ă, împreun ă cu un mesaj de întampinare:
20
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 6 Pagina „Acasă”
Aceasta este pagina de „Acasă”. Odat ă cu autentificarea, apare și pe bara de
navigare în stanga, optiunea „Dispozitive”, aici este zona principal ă a aplica ției, unde se
pot seta dispozitivele, și mai specific , unde vom seta automatul programabil în vederea
conect ării acestuia.
De asemenea apare și numele contului în partea dreapt ă a bării de navigare, și dac ă
se dă click pe aceasta, apare și optiune a de „Delogare”. Aceasta ia locul butoanelor de
„Autentificare” și „Înregistrare”, deoarece acestea nu au sens pentru un utilizator deja
înregistrat și deja autentificat.
În final, avem pagina „Dispozitive”, aceasta ține eviden ța pe fiecare cont în parte a
unor date introduse de c ătre utilizator cu num ele dispozitivului, descrierea acestuia , câmpul
de descriere neav ând limit ă de caractere, aici fiind trecut orice crede utilizatorul c ă este
relevant . Un alt c âmp este cel cu IP, o informa ție important ă care ne va ajuta la conectare.
Se mai pot preciza și numărul de porturi de intrare și numărul de porturi de ie șire. Tot aici,
se va afi șa și data c ând acestea au fost create.
De precizat este faptul c ă singurul c âmp care trebuie completat obligatoriu din
formularul de ad ăugare dispozitiv este cel cu numele dispozitivului. Se p oate face oricând
modific ări la datele setate asupra acestor dispozitive prin intermediul butonului „Editare”.
De asemenea acestea se pot șterge folosind butonul „ Ștergere”. Pentru a ajunge la
formularul de ad ăugare a dispozitivelor, vo m folosi butonul „Adaug ă dispozitiv”:
21
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 7 Pagina „Dispozitive”
Această listă de dispozitive va duce la o pagină diferită care va conține datele
introduse anterior, și va fi dezvoltată separat în vederea utilizării sau testă rii conectivității
acestor aparate. Această pagină va fi prezentată mai tarziu când voi vorbi despre conectare.
22
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix 3.Automat e programabil e (PLC)
Automatele programabile sunt folosite datorit ă capacit ății ridicate de adaptare a
acestora la schimb ările ce pot interveni în procesele de fabrica ție, capacitate de adaptare ce
implic ă costuri foarte mici și efort minim. Tot ce este necesar pentru a se realiza
schimbarea este încarcarea unui nou program în memoria acestora, program ce va avea o
logic ă diferit ă de gestionare a intrarilor și ieșirilor. Se diminueaz ă sau chiar elimin ă
necesitatea de rearanjare a firelor ce ac ționeaz ă procesele conduse de automat ul
programabil .
Am prezentat în introducere o structur ă primar ă a automatelor programabile.
Acestea ave au 3 componente principale , module de intrare, module de ie șire și unitatea
central ă de procesare. Spuneam c ă toată logica se afl ă în unitatea central ă. Aceasta este
alcatuit ă dintr -o zon ă de memorie în care este stocat programul și valorile variabilelor , de
asemenea aceasta are un procesor cu rolul de a efectua calcule aritmetice de baz ă și de a
opera pe baza programului încărcat. Tot aici avem și o interfa ță de comunicare, necesar ă
pentru a putea face leg ătura dintre automatul programabil și alte dispozit ive precum
calculatorul personal, laptopuri, alte automate programabile etc. Pentru a pune în func țiune
toate acestea exist ă și o surs ă de alimentare.
Figură 8 Structura automat programabil
23
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix „Automatul programabil folosit în lucra re este compatibil IEC 61131 -3. „Publicat
în anul 1993 este a treia parte din standardul international IEC 61131 folosit pentru
automatele programabile și prezintă arhitectura libaj elor de programare folosit e de acesta .
Se define sc 2 standarde de programar e grafice, și 2 standarde de programare textuale :
• Diagram ă în scar ă, în englez ă numită ladder diagram (LD) care este de tip grafic;
• Diagram ă de blocuri func ționale, în engle ză numită function block diagram (FBD)
tot de tip grafic;
• Text structurat, în engle ză numit structured text (ST) de tip textual;
• Listă de instruc țiuni, în englez ă instruction list (IL) de tip textual;
• Schem ă funcțional ă secven țială, în englez ă sequencel function chart (SFC) ce are
elemente ce ajut ă la organizarea programului de procesare secven țială și procesare
în paralel ”12.
În IEC 61131 -3 programul, func țiile și blocurile de func ții sunt numite unit ăți de
organizare a programului sau în englez ă program organization unit (POU).
3.1. Standarde de programare
În acest subcapitol voi deta lia standardele de programare care apar țin de IEC
61131 -3.
Limbajul text structurat (ST) are la baz ă instruc țiuni scrise de utilizator, sintaxele
folosite fiind foarte asem ănătoare cu limbajele clasice de programare precum C/C++ ,
evident cu mici diferen țe, aici fiind prezente instruc țiuni de tip „c ât timp” (while), „dac ă”
(if), „caz” (case) etc. Acesta este utilizat pentru a creea funcții specifice definite de c ătre
utilizator.
„Listă de instruc țiuni (IL) este un limbaj de programare de nivel sc ăzut ce se
aseam ănă foarte mult cu assembly ”13. Toată logica programului este alc ătuită din
12 [traducere proprie] IEC 61131 -3. https://en.wikipedia.o rg/wiki/IEC_61131 -3
13 [traducere proprie] Instruction list. https://en.wikipedia.org/wiki/Instruction_list
24
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix instruc țiuni: apelarea fuc țiilor, calcule aritmetice, decizii logice. Se mai folosesc salturi
(jump) dac ă vrem să se sar ă sau s ă se repete anumite por țiuni de instruc țiuni. Acest limbja
este mai greu de utilizat datorit ă naturii învechite de programare din acest motiv fiind
considerat și de nivel scăzut dar are și anumite avantaje precum viteza de procesare mai
bună si eficiență în alocarea de memorie . În continuare voi prezen ta cele doua limbaje care
sunt de tip grafic, fiind mult mai intuitive și accesibile .
Diagram ă de blocuri func ționale (FBD) este de tip grafic și se folose ște de blocuri
pentru a construi logica unui program. După ce se execut ă instruc țiunile aflate într-un bloc
și se verific ă condi ția de tranzi ție pus ă de programator, se trece la urm ătorul bloc în care se
află alt set de instruc țiuni. Acest set de instruc țiuni poate fi pus s ă fie executat și la intrarea
într-un bloc și la ieșirea din bloc.
Diagram ă în scar ă (LD) este reprezentat ă de o logic ă bazat ă pe func ționalit ățile
circuitelor. Aceasta se nume ște diagram ă în scar ă deoarece se aseam ănă cu o scar ă, având
două „picioare” și mai multe „trepte ”. Piciorul pozi ționat în stânga este cel alimentat cu
energie, ia r cel din dreapta este legat la împământare. Programul func ționeaz ă pe ideea de a
energiza ie șirile pe baza intr ărilor. Prin energizare ne referim la faptul c ă trece curent
electric prin portul respectiv. Dac ă trece curent electric spre exemplu printr -un m otor,
acesta va fi ac ționat. Pentru actionare exist ă diverse soluții constructive . Spre exemplu se
pot monta butoane de pornire sau oprire, de asemenea se mai pot folosi senzori pentru a se
lua decizii, etc.
3.2. Aplica ție PLC
Pentru a pune în eviden ță utilizarea automatelor programabile (PLC), am proiectat
și implementat o aplica ție cu scop demonstrativ. Pentru realizarea acesteia am folosit ca și
mediu de dezvoltare „IndaLogic” deoarece este creeat de firma Bosch , aceea și firm ă care a
creeat automatul programabil folosit în lucrare, astfel se pot evita posibile probleme de
compatibilitate la conectarea automatului programabil .
25
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Logica programului principal este scris ă în diagram ă scară (LD). Pentru a simula
comportamentul procesului supraveghiat , am cr eeat și blocuri de funcții scrise în text
structurat (ST), blocuri pe care le -am folosit în aceasta diagrama scară.
3.2.1 Descriere aplica ție
Aplica ția are ca scop men ținerea nivelului de ap ă dintr -un boiler prin ac ționarea a
două valve și furnizarea de apă printr -o a treia valvă, furnizarea de apă fiind realiza tă la
dorin ța utilizatorului printr -un buton . De asemenea se mai dore ște și menținerea automat ă a
temperaturii din boiler între anumite valori .
Cantitatea de ap ă este masurat ă în litri, se dore ște menținerea nivelului de ap ă din
acest boiler între 40 și 200 de litri , pentru acest lucru avem două robinete de alimentare și
unul de scurgere. Primul robinet de alimentare are debitul egal cu cel al robinetului de
scurgere, și al doilea robinet de alimen tare are jum ătate din debitul primului. Dac ă nivelul
scade sub 60 de litri, al doilea robinet de alimentare se deschide iar dac ă nivelul ajunge la
40 de litri, se va deschide și primul robinet pan ă se ajunge la o cantitate în rezervor de 180
de litri momen t în care acesta se va închide, dac ă se ajunge la 200 de litri se va închide și al
doilea robinet de alimentare. Astfel, chiar dac ă se las ă în permanență deschis robinetul de
scurgere, cantitatea de ap ă nu va scade sub 40 de litri.
Apa va fi încalzit ă prin acționarea unui încălzitor, acesta fiind a șezat la baza
boilerului la nivelul de circa 35 de litri, din acest motiv dorim s ă menținem nivelul apei
peste limita inferioara de 40 de litri pentru a putea ac ționa acest încălzitor far ă probleme.
Limita superio ară este cea apropiat ă de capacitatea maxim ă a boilerului.
Încălzitorul nu se va activa niciodat ă dacă nivelul nu trece de 40 de litri , situa ție ce
se poate reg ăsi doar î n starea ini țială când nu exist ă apă în rezervor. După activare, bobina
va sta pornit ă până ce temperatura va cre ște până la 80 de grade celsius, temperatura
maxim ă dorit ă, moment în care se va opri încălzitorul. Dac ă temperatura scade sub 60 de
grade celsius, încălzitorul se activeaz ă iar, până se ajunge la temperatura de 80 de grade.
Dacă robinetii de alimentare sunt porniti, temperatura scade. Acest lucru este
simulat prin intermediul unei formule. Presupunem ca temperatura apei de alimentare este
26
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix de 20 de grade celsius. Daca se alimenteaza cu apa, temperatura va varia folosind o medie
ponderata intre temperatura volumului apei alimentate și temperatura volumului apei din
rezervor inainte de alimentare.
Scopul acestui boiler este de alimentare cu apa calda, lucru ce poate fi realizat la
dorinta utilizatorului prin intermediul unui buton de pornire a robinetului de scurgere.
3.2.2. Tehnologii folosite
În vederea dezvolt ării aplica ției, a șa cum am mai precizat, voi folosi „IndraLogic”.
Acest program ofer ă posibilitatea de programare în toate standardele compatibile IEC –
61131 -3 și vine cu unelte speciale pentru a facilita at ât programarea c ât și configurarea
automatului programabil folosit. Deasemenea acesta dispune și de un mediu în care se pot
creea elemente grafice cu scop de simulare.
Principalele elemente ale programului pe care a m să le folosesc sunt:
• Unitățile de organizare a programului. Acestea sunt limbajele utilizate în
vederea ob ținerii comportamentului dorit a automatului programabil. Ele sunt
scrise în limbajele de programare discutate în subcapitolul anterior și vor avea
întotdeauna programul principal numit în mod implicit „PLC_PRG”.
• Vizualizarea. Mediul în care se pot creea elemente grafice cu scopul de a simula
atât procese c ât și interfe țe de utilizare (interfață om -mașină).
• Resursele. Gestionarea resurselor se face în fișiere speciale de configurare puse
la dispozitie de program, aici se pot seta variabile globale, se pot gestiona
configura țiile automatului programabil, alarme etc.
27
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix 3.2.3. Configurare variabile și semnifica ția lor
Variabilele au rolul de a reține valo ri de stare a sistemului. Acestea trebuie s ă fie
declarate înainte de a fi folosite. Prin declarare, se specific ă numele și tipul variabilei. Prin
intermediul numelui, aceasta poate fi apelat ă în interiorul programului. Variabila re ține
valorile prin inter mediul memoriei, din acest motiv este necesar s ă se precizeze tipul ei,
astfel se va ști numărul de bi ți de memorie necesari a fi aloca ți acestei variabile . Acestea
sunt de mai multe tipuri:
• Variabile locale, acestea sunt alocate în interiorul unui bloc de instruc țiuni. Se declar ă
între sintaxele „VAR” și „END_VAR”. Ele pot fi utilizate doar în interiorul blocului de
instruc țiuni din care fac parte.
• Variabile locale de tip intrare, sunt declarate între sintaxele „VAR_INPUT” și
„END_VAR” și reprezint ă datele de intrare în blocurile func ționale, date ce vor fi
primite ca și atribute de către aceste blocuri.
• Variabile locale de tip ie șire, acestea sunt datele scoase din blocurile func ționale și se
declar ă între sintaxele „VAR_OUTPUT” și „END_VAR”.
• Variabilele g lobale, sunt configurate între sintaxele „VAR_GLOBAL” și „END_VAR”
în interiorul fi șierului „Global_Variables” din fila (tab) resurse (Resources). Acestea
pot fi utilizate oriunde în proiectul în care au fost definite și în general semnific ă
elementele din viața real ă conectate la porturile de intrare și ieșire acționate și
monitorizate de automatul programabil, adic ă butoane, senzori, motoare, etc.
Aceste variabile sunt reprezentate de tipuri de date ce pot fi de mai multe feluri.
Acestea pot fi de tip BO OL, în care pot avea valori le „adev ărat” sau „fals”. Se pot defini și
variabile de tip LREAL ce pot primi ca valori numere reale. Exist ă multe tipuri, în aplica ție
ne vom folosi de cele dou ă precizate anterior și vom mai folosi și tipul INT care este
repre zentat de numere întregi.
În proiect avem definit e urmatoarele variabile globale:
28
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 9 Fișierul de configurare a variabilelor globale „Global Variables”
Prima variabil ă global ă difinit ă este „robinet_alimentare_scazuta ”. Aceasta este de
tip „BOOL” adic ă poate lua doar dou ă valori, „adev ărat” sau „ fals” și are rolul de a da
comanda de deschidere sau închidere a valvei robinetului de alimentare cu debit scazut. În
viața real ă aceasta poate fi reprezentat e de o electrovalv ă conectat ă la unul din porturile de
ieșire a automatului programabil , variabila global ă fiind atribuită la unul din aceste porturi.
Când portul de ie șire este „adev ărat” adic ă trece curent electric prin el, acesta va ac ționa
valva care se va deschide și va la să să treac ă apa, c ând acesta devine „fals” se opre ște
alimentarea de curent electric a electrovalvei, aceasta se închide și astfel se opre ște și
alimentarea cu ap ă a boilerului. La fel ca și aceasta sunt și variabilele
„robient_alimentare_ridicata” și „robinet_evacuare” care sunt folosite pentru robinetul de
alimentare cu debit mare respectiv pentru robinetul de evacuare.
Următoarele dou ă variabile „aprindere_bobina” și „stingere_bobina” le -am declarat
ca variabile globale deoarece a fost nevoie s ă le fo losesc în simulare pentru a schimba
starea bobinei la activare .
Variabilele „start_logic ” și „stop_logic ” sunt de tip „ INT”. Acestea sunt
reprezentate de butoane sau întrerupatoare conectate la porturile de intrare ale automatului
programabil, ele vor fi acționate de c ătre om în vederea pornirii respectiv opririi aplica ției.
Asemenea acestor variabile sunt și cele de „porneste_robinet_scurgere _logic ” și
„opreste_scurgere _logic ” care au scopul de a ac ționa la dorin ța utilizatorului robinetul de
scurgere.
29
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Variabila „bobina_incalzire” ne spune dac ă bobina este pornit ă sau nu. La fel ca și
primele variabile discutate, aceasta reprezint ă în cazul utiliz ării unui automat programabil
un port de ie șire ce alimenteaz ă sau nu bobina cu energie electric ă.
Ultimele d ouă variabile sunt de tip „LREAL”, asta înseamna c ă acestea pot lua ca
valori numere reale, în cazul de fa ță acestea reprezint ă temperatura și nivelul, cei doi
parametri acționați de către aplicație prin intermediul automatul programabil. În vederea
monito rizării lor, în via ța real ă acestea sunt reprezentate de senzori de temperatur ă
respectiv de nivel ce transmit datele citite din mediul în care sunt instalate , în cazul nostru
mediul fiind interiorul boilerului .
3.2.4. Logic ă și dezvoltare aplica ție
Logica de dezvoltare a aplica ției este alc ătuită din unit ăți de organizare a
programului (POU) și acestea sunt împărțite, dup ă cum se poate vedea în figura 9 în
programul principal „PLC_PRG”, scris în diagram ă în scar ă și 10 blocuri func ționale (FB)
scrise în text structurat, acestea fiind apelate și astfel utilizate în programul principal
„PLC_PRG” .
Blocurile func ționale sunt asemenea subprogramelor din programarea clasică, în ele
definim anumite comportamente care nu sunt deja predefinite de programul „Indr aLogic”.
Figură 10 Lista cu unitățile de programare
30
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Programul principal „PLC_RPG” are în componen ța sa treisprez ece trepte. Acestea
sunt conectate la „picioarele sc ării” form ând un circuit închis, piciorul din st ânga fiind
alime ntat în permanen ță la curent electric iar cel din dreapta la împământare .
În continuare voi prezenta fiecare treapt ă cu explica ții cât mai detaliate pentru a
putea înțelege modul în care funcționează acest program bazat pe diagram ă în scar ă.
Figură 11
Figura 10 este reprezentat ă de prima treapt ă a diagramei în scar ă. Aceasta este
compus ă din 2 blocuri func ționale , „start_logic” și „stop_logic”, și un contact cu numele
„solenoid” în paralele cu blocul „start_logic” . În aceast ă linie este definit ă pornirea și
oprirea aplica ției prin intermediul variabilelor globale „start_logic” și „stop_logic” care
definesc logica blocurilor func ționale cu acela și nume. Acestea sunt variabile de tip INT și
au valoarea ini țală zero iar blocul „star t_logic” va avea intrarea mereu energizat ă iar iesirea
va energiza în func ție de variabila „start_logic” . Dacă aceasta i și schimb ă valoarea din 0 în
1, blocul se va activa, și variabila va deveni iar 0. Datorit ă faptului c ă variabila devine iar
0, ieșirea blocului se dezactiveaz ă dar ramura r ămâne energizat ă datorit ă contactului
„solenoid”. Practic blocurile „start_logic” și „stop_logic” sunt f ăcute să simuleze un
contact și respectiv un contact negat.
Scopul semnalului „solenoid” este de a ține circuitul pornit odat ă ce se apas ă pe un
buton de pornire , fară a fi nevoie s ă se țină apăsat pe acesta în permanen ță.
În continuare se va lucra cu acest semnal „solenoid”, fiind condi ție de activare pe
toate liniile deoarece acesta descrie dacă vrem sau nu ca apli cația să mearg ă.
Figură 12
31
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix În figura 11 este pus ă logica de activare a încălzitorului, reprezentat de semnalul
„bobina_incalzire”. Acesta pentru a fi energizat este nevoie ca s ă se treaca condi ția de
„solenoid”, adic ă cea prezen tată anterior, conditie activa tă de utilizator prin intermediul
unui buton de pornire și o altă condi ție va fi, după cum spuneam și în descrierea aplica ției,
ca temperatura s ă fie mai mic ă de 60 de grade celsius. Condi ția de oprire este ca
temperatura s ă ajungă sau să treacă de temperatura de 60 de grade celsius. Astfel, pentru a
impune ace ști parametrii, am cr eeat un bloc func țional „Compara_temp” (FB) care paote fi
observat și în figura 9, acesta este scris în limbaj text structurat și are ca scop s ă analizeze
valorile temperaturii și să ia o decizie pe baza acestei analize .
Are ca și intrare toate condi țiile din st ânga treptei, în cazul de fa ță doar condi ția de
„solenoid”, dac ă aceasta este activ ă blocul funcțional se va activa de asemenea și va
analiza „temperatura”, aceasta fiind variabil ă global ă va putea fi folosit ă și în acest bloc
funcțional. Dac ă temperatura este mai mic ă de 60 de grade celsius , atunci ie șirea va da
valoarea „adevarat” astfel activ ând semnalul „bobina_incalzire”, dac ă valoarea
temp eraturii ajunge la 80, iesirea va da valoarea „fals”, dezactiv ând astfel semnalul
„bobina_incalzire”. Verificarea se face pe baza condi țiilor puse prin intermediul sintaxei
„IF () THEN” și „END_IF”.
Figură 13 Bloc ul funcțional „ Compara_temp”
Aceastea pot fi observate în figura 12. O problema întampinat ă în aceste blocuri era
dată de faptul c ă odată ce se activau codi țiile, blocul ram ânea activ și făcea verificarea în
permanenta, ne dorim ca acea verificare s ă se fac ă doar în caz ul în care intrarea are
valoarea „adevarat” („TRUE”), astfel a fost nevoie s ă se introduc ă o condi ție suplimentara
ce testează variabila „intrare”. Aceast ă condi ție suplimentar ă este prezentată în figura 12
32
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix de prima și ultimele 3 linii, verificarea se va f ace doar dac ă „intrare” este „adevarat” , dacă
nu (ELSE) ie șirea va avea valoarea „fals” indiferent de temperatur ă sau nivel.
Figură 14
În figura 13 este prezentat ă a treia treapt ă a diagramei în scar ă. Aceasta are rolul de
a activa semnalul „aprindere_bobina” care va duce la aprinde rea bobin ei.
Figură 15
Odat ă ce se se aprinde bobin a și valoarea semnalului „aprinde _bobina” devine
„adevarat”, temperatura apei din boiler va cre ște. Aect lucru a fost simu lat folosind un bloc
de incrementare „ADD” observat în figura 14 care este oferit de c ătre program. Acesta are
trei intr ări, prima este „EN” (enable) care este o intrare de activare a blocului, în cazul de
față temperatura va cre ște doar dac ă valorile vari abilelor „solenoid” și „aprindere_bobina”
sunt „adevart”, adic ă dacă aplicatie este pornit ă și bobina este încălzită. A doua și a treia
intrare sunt valorile pe care ne dorim s ă le incrementam, în cazul de fa ță temperatura
curent ă și o valoare egal ă cu cap acitatea de încalzire a bobinei, cu scopul de a simula acest
lucru, am luat o valoare aleatoare de 0.09. Pe ie șire acest bloc va scoate suma acestor dou ă
valori, sum ă ce ne dorim s ă o atribui m tot variabilei „temperatura” în acest mod valoarea
curentă a te mperaturii va fi incrementat ă cu valoarea 0.09.
Figură 16
33
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Mai departe în figura 15 este prezentat ă treapta 5 în care se introduce
comportamentul bobinei la stingere. Stingerea este dat ă tot de contactul „bobina_incalzire”
dar n egat.
Figură 17
După ce semnalul „stingere_bobina” devine „adevarat”, temperatura apei din
interiorul boilerului nu va mai fi influen țată de încălzitor. Motivul pentru care am ad ăugat
blocul „ADD” și în aceast ă situa ție este pe ntru a simula r ăcirea apei datorat ă mediului
exterior. Dup ă cum se observ ă în figura 16, valoare sc ăzută „-0.002” este foarte mic ă, acest
lucru se datoreaz ă faptului c ă un boilerul are o izola ție termic ă față de mediul exterior
foarte bun ă, însa aceasta nu are cum s ă fie perfect ă, astfel pierderea de temperatura va fi
existent ă dar foarte mic ă.
Figură 18
În continuare, în figura 17 este prezentat ă logica pentru pornire a robinetului de
scurgere. Utilizatorul va porni sau opri rob inetul de scurgere prin intermediul a două
butoane. Astfel logica va fi asemanatoare celei de pornire și oprire a aplica ției. Diferen ța
este c ă acest buton va fi condi ționat de contactul „solenoid”, adic ă dorim ca aplica ția să fie
funcțional ă pentru a pute a acționa robinetul de scurgere , și de asemenea dorim ca nivelul
de ap ă din boiler s ă fie peste limita de 40 de litri.
34
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 19 Bloc ul funcțional „Compara_nivel_scurgere”
Pentru acest lucru vom folosi un alt bloc func țional num it
„Compara_nivel_scurgere”, acesta va verifica dac ă nivelul apei este peste acea stă limit ă de
40 de litri, în acela și mod în care se realizeaz ă verificare de pornire a încălzitorul ui. Dac ă
aceste condi ții sunt trecute, în continuare se va pune blocul func țional „start_logic_robinet ”
în paralel cu alt contact „activare” care va juca acela și rol ca și semnalul „solenoid” și în
continuare în serie cu aceste a va fi blocul funcțional „stop_logic_robinet ”. Astfel dup ă
energizarea semnalului „activare” din dreapt a treptei, contactul cu acela și nume „activate”
va avea valoarea „adevarat”, deci se elimin ă nevoia de a ține ap ăsat pe butonul de pornire
sau oprire a robinetului de scurgere .
Figură 20
Dacă semnalul „activare” devine „adevarat ” și aplica ția este pornit ă, se va energiza
și semnalul „robinet_evacuare” din figura 19 care va fi folosit ca și contact pe urmatoarea
linie prezentata în figura 20. Astfel blocul „ADD” va fi energizat și se va activa procesul
de scoatere a apei din boile r.
Figură 21
35
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Pentru a simula scoaterea apei din boiler, vom folosi acela și bloc „ADD” în care
incrementam la variabila „nivel” valoarea negativ ă „-0.2” aceasta reprezent ând debitul
robinetului de evacuare.
Figură 22
Figură 23
În figurile 20 și 21, se realizeaz ă logica de pornire a robinetelor de alimentare.
Alimentarea se face cu ap ă la temperatura de 20 de grade celsius, lucru ce va influen ța
temperatura apei din boiler. Ne dorim s ă folosim doua robinete, unul prin intermediul
căruia s ă se furnizeze mai pu țină apă, și în cazul atingerii unor valori de nivel scăzute, s ă
porneasc ă și al doilea pentru a compensa p ână aproape de umplere.
Deciziile se fac pe baza a dou ă blocur i func ționale „Compara_robinet_mare” și
„Compara_robinet_mic” definite asem ănător cu ce am folosit și până acum. Acestea vor
energiza semnalele de pornire a robine ților de alimentare cu debit mare respectiv debit mic
pe baza nivelului de ap ă din boiler , figura 23 și figura 24 .
Figură 24
Figură 25
36
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Când semnalele „robinet_ alimentare_ridicata” și „robinet_alimentare_scazuta” sunt
energizate, acestea vor activa ultimele dou ă trepte ale programului princi pal, trepte ce vor
reprezenta procesele ce se petrec atunci c ând valvele robine ților de alimentare vor fi
deschise. Astfel dac ă acestea vor fi deschise, se va alimenta cu ap ă boilerul, nivelul va
crește, cu excep ția cazului în care este deschis și robinetu l de evacuare în acela și timp ,
situa ție în care apa va cre ște doar dac ă ambii robine ți de alimentare sunt deschi și.
În figurile 25 și 26 se observ ă că la fel ca și înainte, semnalele de activare sunt
trecute ca și contacte. Când acestea devin energizate, se trece în cele doua blocuri puse pe
ieșirea treptei.
Figură 26
Figură 27
Datorita faptului c ă apa de alimentare are o temperatur ă mai sc ăzută decât cea din
boiler, procesul de alimentare va influen ța atât nivelul c ât și temperatura. Astfel nu va fi de
ajuns blocul „ADD”, dup ă activare va trebui s ă increment ăm nivelul și să schimb ăm și
temperatura. Acestea vor primi ca și intr ări variabilele globale „nivel” și „temperatura” cu
valoarea lor curent ă și pe ie șire tot acestea dar cu modific ările aferente.
Figură 28
37
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 29
Astfel dup ă cum se poate observa în figura 27 și figura 28, nivelul va fi schimbat
printr -o simpl ă incrementare în func ție de de bit, iar temperatura va fi schimbat ă printr -o
formul ă ce face o medie ponderat ă între cantitate ap ă din tanc cu temperatura acesteia și
cantitate ap ă alimentare cu temperatura ei.
3.2.5. Mediul de simulare
Datorit ă lipsei resurselor, și costurilor ridic ate ale realizarii fizice a proiectului,
pentru testare a și verificarea func ționalit ății logicii de acționare dată de automatul
programabil se poate utiliza un mediu virtual în care se pot definii elemente grafice care s ă
simuleze procesele.
Acest mediu virtual de simulare poate fi cr eeat în programul „IndraLogic” și vine
cu elemente grafice la care se pot atribui variabile globale din proiect . Pe baza acestor
variabile, elementele grafice își pot schimba culoarea, forma, pozi ția, prin schimbarea
pozitiei se pot creea vizual procese motorii , ba chiar mai mult, se poate schimba starea
acestor variabile prin diferite ac ționări, astfel aceste elemente grafice pot semnifica și
întrerupătoare , butoane etc.
Pentru realizarea simul ării aplica ției noastre va tr ebui s ă definim dou ă părți
principale , ce pot fi observate și în figura 29 :
1. Partea în care vom simula și vom putea observa procesul. Aceasta va fi definit ă de
boiler, cei trei robine ți, valve de ac ționare a robine ților, încălzitorul plasat la baza
boilerul ui și patru elemente vizuale care vor indica cele patru nivele la care se
schimbă starea celor două valve ale robineților de alimentare.
38
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix 2. Parte în care vom crea o așa zis ă interfa ță om-mașină, sau varianta sa în englez ă
human machine interface (HMI). Aceast a este zona în care se face achizi ția de date,
se afi șează datele at ât numeric c ât și, în cazul nostru, sub form ă de metru cu ac
pentru temperatur ă și bară gradat ă pentru nivel. De asemenea aceast ă interfa ță om-
mașină oferă și posibilitatea omului s ă intervină asupra aplicației prin intermediul
butoanelor, întrerupătoarelor etc. În cazul nostru avem 4 butoane, unul prin
intermediul c ăruia pornim întreg sistemul și unul prin care îl putem opri, un buton
pentru a porni robinetul de scurgere cu scopul de a scoate apa din boiler , apă ce se
doreste s ă fie furnizată către consumator , acest buton neput ând fi activat dac ă
nivelul este sub 40 de litri, și un buton prin care oprim robinetul de scurgere.
Figură 30
Elementele utilizate se gas esc în bara cu instrumente pus ă la dispozi ție de pagina în
care le vom creea , pagin ă numit ă vizualizare (Visualization) dupa cum se poate vedea și în
figura 29.
Figură 31 Bara de instrumente
Acestea sunt r eprezentate de diferite forme geometrice precum p ătrate,
dreptunghiuri, cercuri, triunghiuri, curbe etc. De asemenea se pot introduce tabele,
histograme și diferite sisteme de m ăsură.
Aceste elemente dup ă creeare se pot configura d ând click dreapta pe ele și
select ând din list a care apare op țiunea „Configure”. Aceasta va deschide o fereastr ă în care
vom avea mai multe op țiuni, numite categori (Category). Aici vom putea s ă facem
schimb ări precum adăugare de text, setare variabile, culoarea conținut sau culoare contur ,
39
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix culoare de alarm ă etc. Culoarea de alarmă este culoarea pe care o va avea blocul în func ție
de starea unui semnal . Aceast semnal poate fi setata tot aici la op țiunea „variabile”
(Variables) c âmpul „schimba culoarea” (Change color). (…)
Boilerul este un element re alizat dintr -un dreptunghi. Acesta îi este setat ă culoarea
albastr ă pentru a simula apa din interiorul s ău. Pentru a simula cantitatea de ap ă curentă din
interior în func ție de nivel, peste acesta sa ad ăugat alt dreptunghi ce are culoarea gri,
aceasta fiin d culoarea boilerului c ând este gol. Acestea s e pot observa și în figura 31.
Figură 32 Boiler
Acest dreptunghi gri a fost configurat s ă își schimbe dimensiunea în func ție de
nivelul apei din boiler. Valorile din aceste c âmpur i au fost setate experimental, ele
reprezentand numarul de pixeli ocupati de figurile geometrice.
Figură 33
40
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix În figura 3 2 se observ ă cum a fost setat acest element, la op țiune „Motin relative”
care înseamn ă mișcare r elativ ă, relativ fiind fa ța de figura configurat ă. În câmpul „Bottom
edge” a fost trecut ă valoarea „440 -nivel*2”. Știm c ă nivelul apei din boiler cu care am
lucrat în dezvoltarea aplica ției este de 220, și în vizualizare boilerul a fost facut de o
dimensiune ce ocup ă 440 de pixel, astfel doi litrii de apă va fi echivalentul grafic a doi
pixeli. D in acest motiv valoarea pe care o va lua dreptunghiul așezat deasupra boilerului va
fi num ărul de pixel pe care dorim s ă îl ocupe minus de dou ă ori nivelul. Spre exemplu dac ă
nivelul este 0, acest bloc de culoare gri va ocupa 440 de pixeli acoperind tot boilerul, dac ă
nivelul va fi 220 (capacitatea maxim ă), formula va da 0 deci va ocupa 0 pixeli, astfel va
dispărea grafic, astfel boilerul nu va fi acoperit de elementul gri și prin urmare acesta va
avea în totalitate culoarea albastr ă semnific ând faptul c ă este plin cu ap ă.
Alte elemente folosite sunt robinetele, acestea sunt formate tot din dreptunghiuri, ce
au la un moment dat o întrerupere în care este pozi ționat ă valva, semn ificat ă grafic prin 2
triunghiuri puse varf în varf.
Figură 34 Robineții de alimentare
Acestea au culoarea albastr ă până în dreptul valvei de culoare roșie. Dac ă valva
este ro șie înseamn ă că aceasta este închis ă, astfel nu va l ăsa apa s ă treac ă, în aceste condi ții
mai departe țeava robinetului va fi gri neav ând ap ă. Dac ă valva este activat ă, aceasta își va
schimba culoarea în verde, moment în care va l ăsa apa s ă circule mai departe, astfel țeava
robinetului de dup ă valvă își va schimba și ea culoarea în albastru.
Aceste set ări se pot realiza prin intermediul culorii de alarm ă, iar ca și semnal de
alarm ă se va folosi variabilele discutate în capitolul anterior de activare a robine ților,
activarea însemn ând de fapt deschiderea ace stor valve.
Un alt element este încalzitorul, acesta este a șezat la baza boilerului, dup ă cum se
poate vedea și în figura 3 4. Când semnalul „aprindere_bobina” este activat, atunci
41
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix elementul ce se afl ă în interiorul boilerului , adică bobin a, se va aprinde . Prin aprindere își
va schimba culoarea din negru în roșu.
Figură 35 Bobina și robinetul de scurgere
Tot în figura 3 4 se poate observa și robinetul de scurgere, ce este cre eat grafic în
acela și mod ca și robinetele de alimentar e.
Până acum am prezentat partea de simulare a procesului, în continuare am să
prezint elementele componente ale interfetei om -masica, aici fiind locul in care se face
achizitia de date si posibilitatea de acționare a sistemului prin utilizarea de butoane sau
comutatoare.
În figura 35 sunt a șezate cele patru butoane de ac ționare, dou ă pentru pornire sau
oprire aplica ție și dou ă pentru pornire sau oprire scurgere. Acestea au configurarea din
categoria „intr ări” (Inputs). Se alege op țiunea „Tap variable” și se introduce semnalul care
reprezinta buton ul respectiv . Pentru primul buton se va atribui semnalul „start _logic ”, al
doile a buton va avea „stop _logic ”, al treile a buton va avea
„.porneste_robinet_scurgere _logic ” și ultimul buton semnalul
„.opreste _robin et_scurgere _logic ”.
Figură 36
42
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix În figura 36 este prezentat ă bara gradat ă ce va afisa nivelul apei din boiler. Aceasta
va varia în func ție de valoarea variabilei globale „nivel”.
Figură 37
Pentru vizual izarea mai bun ă a valorilor a fost introdus și un bloc în care este
adăugat textul „Nivel %2.2f”. Prin „%2.2f” pregatim elementul pentru a afișa valoarea
unei variabile în format num ăr real cu o precizie de două zecimale dup ă virgul ă. Pentru a
afișa valoar ea nivelului, se va seta în câmpul „Textdisplay” de la categoria „Variable”
valoarea „.nivel”, după cum se vede și în figura 37.
Figură 38
43
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Tot în figura 36 au fost ad ăugați grafic prin intermediul unor cercuri și stările
robine ților. C ând sunt închise valvele acestor robineți, elementele grafice vor avea culoarea
roșie, dac ă se deschis vor deveni albastre, lucru realizat prin intermediul culorii de alarma.
Figură 39
Un ultim element al interfe ței este c el de monitorizare a temperaturii prezentat în
figura 38. Ca și la nivel este introdus un bloc care va afi șa valoarea temperaturii cu dou ă
zecimale dup ă virgul ă. Mai este un bloc de culoare neagr ă ce semnific ă starea bobinei.
Dacă bobina se aprinde, acest bloc va deveni ro șu. În final avem un metru cu ac pentru o
monitorizare vizual ă a temperaturii.
3.2.6. Concluzii aplica ție
Aplica ția creat ă are rol demonstrativ, datorit ă acestui lucru a fost necesar s ă
simul ăm și procesele ce au loc în viața real ă. Bloc ul func țional „ADD” și cele create de
noi, puse în dreapta treptelor diagramei în scară, au rolul de a simula comportamentul
proceselor ce se petrec în viata real ă.
Într-o aplica ție real ă blocurile func ționale utilizate sunt înlocuite cu simple semnale
atașate porturilor de intrare ale automatului programabil. Aceste semnale vor ac ționa alte
componente externe, în cazul nostru valvele robine ților de alimentare, valva robinetului de
evacuare și încălzitorul , prin acest lucru temperatura și nivelul își vor schimba valo rile
automat datorită acțiunilor pe care le aduc aceste elemente de acționare mediului
44
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix supraveghiat de automatul programabil , în functie de specificatiile lor, fară a fi nevoie s ă
program ăm noi acest e comportamente prin incrementare sau formule .
Folosind acest program al automatului programabil voi încerca s ă citesc în aplica ția
pusă pe cloud date precum nivelul și temperatura. Tot din aplica ția pus ă pe cloud ne dorim
să putem folosi elementele de ac ționare puse la dispozi ție utilizatorului, a dică butoanele de
pornire și oprire aplica ție și butoanele de pornire și oprire robinet scurgere.
3.3. Conectare aplica ției PLC la aplica ția cloud
Pentru a încărca pe automatul programabil aplica ția dezvoltat ă în subcapitolul
anterior este nevoie s ă se creeze o leg ătură de comunicare între dispozitivul în care a fost
creeat programul și automatul programabil. Acest lucru a fost realizat prin intermediul unei
conexiuni de tip TCP (Transmision control protocol) ce este posibil ă cu ajutorul re țelei
locale c are se face prin cabluri de tip UTP (Unshielded Twisted Pairs). Comunicarea se
face folosinduse IP -ul(Internet protocol) dispozitivelor conectate, iar informa ția este
transmis ă sub form ă de bytes.
Odat ă ce automatul programabil și calculatorul au fost co necta ți, se poate verifica
daca exist ă comunicare între ace știa prin intermediul comenzii „ping 192.168.1.12” în linia
de comand ă a calculatorului, unde „192.168.1.12” este IP -ul automat ului programabil
conectat. Dac ă conexiunea este bun ă, acest ă comand ă va returna raspunsuri valide în care
se va preciza și durata de raspuns și numarul de bytes de informa ție, în caz contrar, va fi
afișat un mesaj în care se precizeaz ă faptul c ă adresa nu a fost g ăsită sau se mai poate ca
aceasta s ă nu fie capabil ă să return eze un raspuns.
După ce se conecteaz ă automatul programabil și este verificat faptul c ă acesta
raspunde la cererile facute de c ătre calculator, putem trece la urmatoarea etap ă în care vom
face conectarea din interfa ța oferit ă de programul IndraWorks Engin eering. Ini țial aplica ția
a fost dezvoltat ă în Indralogic, pentru conectare va fi necesar s ă mutăm aceast ă aplica ție în
programul IndraWorks Engineering care ofer ă module prestabilite pentru conectare la
automatul programabil utilizat . În acest sens, a fos t necesar s ă salvăm aceast ă aplica ție într-
45
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix un format care p oate fi citit de c ătre noul mediu de dezvoltare cu scopul migr ării acesteia.
Deasemenea a fost necesar să se facă unele modificări si la pagina de vizualizare a
proiectului.
Mai departe, p entru a realiza conectarea , se dă click pe „Debug” din bara de
instrumente și se alege op țiunea „Login” . Dacă setările au fost facute bine, calculatorul se
va conecta la automatul programabil prin intermediul programului și se va putea încărca în
memoria automatul ui programabil aplica ția dezvoltat ă pe calculator , aplicație despre care
am discutat în subcapitolul trecut.
Întreg p roiectul de licen ță este constituit din 4 p ărți principale (fig. 40) :
Prima este programul dezvoltat pentru automatul programabil, care e ste incarcat în
memoria acestuia și ruleaz ă in permanen ță.
A doua parte o constitui e aplica ția web dezvoltat ă in Python despre care am vorbit
în capitolul anterior, aplica ție ce a fost migrat ă pe serviciul de găzduire cloud oferit de
către cei de la IBM. Aceasta are rolul de a oferi interfa ța de utilizator și are ca principal ă
caracteristic ă accesarea acestei pagini web de c ătre oricine, oriunde prin intermediul
internetului.
Cel de -al treilea element principal este dat de c ătre baza de date. Aceasta are rolul
de a stoca datele importante de la utilizatori. Tot prin intermediul acesteia am realizat și
comunicarea dintre calculatorul principal , care este legat la automatul programabil , și
pagina web dezvoltat ă. Aceasta a fost creat ă pe un server cloud separ at, folosi nd ca
distribuitor Vultr . Motivul pentru care nu am folosit în această situație IBM Cloud este dat
de faptul c ă varianta de cont pe care o folosesc nu ofer ă gratuit și serviciul ce hostează
aceast ă bază de date, astfel am ales sa creez o masina v irtual ă (Ubuntu) pe un cloud separat
la care i -am dat acces la internet și folosind creden țialele care sunt setata o dat ă cu crearea
bazei de date, ne putem conecta de oriunde la aceasta .
Ultimul element considerat în ansamblul proiectului este dat de un p rogram scris tot
în Python care este dezvoltat și rulat pe calculatorul conectat la automatul programabil și la
internet. Acest program odat ă pornit va rula fară oprire , și scopul lui este de a interoga în
permanen ță baza de date. Dac ă apar schimb ări în datele ini țiale ale bazei de date, acesta va
46
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix da comenzi automatului programabil prin intermediul modulului OpenOPC, comenzi
specifice acelor schimb ări ap ărute. Acele schimb ări în baza de date vor surveni prin
intermediul unor butoane introduse în pagina dispozitivului . Astfel, comunicarea este
facut ă prin intermediul bazei de date având ca intermediar programul ce ruleaz ă în
permanen ță pe calculatorul principal.
Figură 40
În urmatoarea figur ă (fig. 41) avem pagina principal ă a automatului programabil ,
configurat ă să afișeze 4 butoane, cu func ții specifice ce vor modifica datele din baza de
date. Acele date con țin informa ții cu privire la ac țiunea utilizatorilor asupra acestor
butoane, astfel programul ce ruleaz ă pe calculatorul pri ncipal din laborator va ști să
citeasc ă aceast e informa ții și să le transforme în acțiuni către automatul programabil.
Figură 41
47
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Spre exemplu butonul „Porneste aplicatie” va modifica valoarea unui element din
baza de date speci fic acestui buton . Aceast ă modificare va fi v ăzută de programul principal
și va ști că utilizatorul a ap ăsat butonul „Porneste aplicatie” . În acest moment acesta are
informa ția necesar ă de pe partea de cloud, adic ă de a porni aplica ția automatului
programa bil, acest lucru va fi facut prin intermediul modulului OpenOPC cu ajutorul unei
comenzi:
opc.write( ( ‘!I2,IndraLogicXlc1,Plc.PVL,Application.GVL.start_logic’ , 1) )
Comanda va modifica v aloarea variabilei „start_logic” a automatului programabil
și astfel, din valoarea 0, aceasta devine 1, condi ție satisf ăcatoare pornirii aplica ției.
Manipularea datelor din memoria automatului programabil de c ătre modulul OpenOPC
este posibil ă datorit ă legăturii locale dintre cele doua ma șini (calculatorul și automatul
progr amabil ).
Acest server OPC trebuie configurat pe calculatorul legat la automatul programabil.
Configurarea se face prin ob ținerea datelor de la automat, adic ă IP-ul automatului,
Gateway, și Subnet -Mask. Acestea în cazul de fa ță sunt 192.168.1.12, 192.168.1. 1 și
respectiv 255.255.255.0. Aceste date vor fi folosite la preg ătirea re țelei în vederea op ținerii
unui r ăspuns de la automatul programabil la comanda „ping”.
După ce op ținem conexiunea, vom specifica datele cu privire la conexiunea folosita
de serveru l OPC într-un program care vine instalat odat ă cu suita „Indralogic”, și anume
OPC Configurat ion (IL). Aici vom selecta modul de conectare, adic ă TCP/IP și vom oferi
adresa intern ă a automatului programabil (fig. 42).
48
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 42
Pentru a g ăsi aceast ă adres ă, am folosit programul IndraWorks Engineering, la
configurarea conexiuni, se poate face test la conexiune înainte de a salva datele în proiect.
Dacă alegem TCP , aceasta trebuie s ă dea mesajul „succesful” (fig. 43), în caz contra r nu a
fost facut ă bine leg ătura de re țea dintre automatul programabil și calculator.
Figură 43
Dacă alegem ca metod ă de conectare UDP (fig. 44), vom primi eroare, deoarece nu
am preg ătit o astfel de conexiune, însa în mesajul e rori, putem g ăsi informa ția căutată,
49
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix adica adresa automatului programabil, adres ă ce va fi trecuta în OPC Configurator (fig.
42).
Figură 44
Pentru a putea ob ține r ăspuns de la automatul programabil, va fi necesar s ă setăm
un IP f ix în interfa ța de configurare a protocolului IPv4 ca în figura 45.
Figură 45
După conectare, o problem ă care a ap ărut a fost dat ă de faptul c ă pe calculatorul
principal, dup ă ce configuram setările necesare și realizam conectare a la automatul
50
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix programabil, pierdeam conexiunea la internet , lucru care ne încurc ă foarte mult deoarece,
dupa cum se poate vedea si in fugura 40, calculatorul principal trebuie s ă fie conectat în
acela și timp și la automatul programabil din re țeaua local ă și la internet . Pentru a solu ționa
acest lucru a fost nevoie s ă adaug configur ări în plus la set ările de interfața Ipv4.
Astfel, se va ap ăsa pe butonul „Advanced…” din figura 45 și în noua pagin ă apărută
se poat e configura și adăuga noi conexiuni specif icând adresa IP, „Subnet mask” și
„Default gateway”.
Figură 46
Pentru automatul programabil , datele necesare re țelei au fost luate de pe ecranul
principal al dispozitivului fizic. Pentru a ob ține informa țiile necesare conexiuni l a internet,
am ales din figura 45 optiunea „Obtain an IP address automatically”, adic ă ne-am re întors
la set ările ini țiale, cele în care distribuitorul de internet alocă adresa IP automat si
conexiunea la internet functioneaz ă. În acest moment ne dorim s ă obținem aceste
informa ții cu privire la set ări, astfel vom porni un terminal de comand ă, și vom introduce
comanda „ipconfig /all ” (fig. 47) . Aceast ă comand ă va furniza datele necesar e pentru
conexiunea la internet , date pe care le vom ad ăuga manual in inte rfața de setări Ipv4
discutată mai sus (fig. 46).
51
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix
Figură 47
Un ultim pas pe care trebuie s ă-l facem este de setare a variabilelor pe care vrem s ă
le utiliz ăm prin aplica ția web. Trebuie s ă le preg ătim pentru a putea fi accesate d in
exterior, acest lucru se face dintr -o interfa ță special ă din IndraWorks Engineering numit ă
„Symbol configuration” . Aici sunt doua zone, cea din st ânga care afi șează toate variabilele
din proiect, și cea din dreapta în care dorim s ă ducem variabilele pe care le vom folosi (fig
48).
Figură 48
Tot de aici putem lua calea c ătre variabile. Acest lucru se poate face folosind
butonul din dreapta jos numit „Copy Instance Path”. Acesta va furniza adresa variabile,
aceast ă adres ă fiind u tilizata în comenzile modulului OpenOPC.
52
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix 4.Concluzii și dezvoltări ulterioare
Exist ă o importan ță deosebit ă în integrarea sistemelor de fabrica ție cu ramurile
tehnologice ale internetului. Acest ea sunt într-o continu ă dezvotare și pot oferi avantaje
foarte mari sistemelor prin faptul c ă resursele gestionate pot fi accesate de oriunde și
oricând, datele de sistem pot fi stocate în baze de date ce au timp de răspuns foarte bun și
volum mare de stocare, se pot creea interfețe ușor de utilizat pentru utiliza tori sau angajați
mai puțin avizați, etc .
Pentru realizarea lucr ării de licen ță a fost necesar ă utilizarea unui num ăr destul de
mare de tehnologii, acest lucru fiind dat de faptul c ă au ap ărut multe probleme în etapele
de dezvoltare a p ărții practice . Cauza principală a problemelor a fost dată de lipsa de
compatibilitate între dispozitive ți între versiunile programelor îmbinate . Din acest motiv
am fost nevoit s ă adaug noi solu ții pentru a reu și să fac tot ansamblul s ă fie func țional.
Pentru structur ă am preferat s ă împart lucrarea în dou ă mari capitole cu structura
asemanatoare și anume „Aplica ția web” și „Automate programabile” dec ât să vorbesc în
paralel despre ambele . Aceste capitole au o logic ă diferit ă și sunt din domenii separate și
cred c ă este ma i accesibil și mai u șor de înteles astfel. Spre exemplu am preferat s ă fac
două subcapitole separate cu același titlul „Tehnologii folosite”, fiecare integrat în
contextul s ău specific capitolului din care face parte.
Se pot aduce multe îmbunătățiri proie ctului prezentat și se poate continua în
nenum ărate direc ții precum: utilizarea datelor citite de la automat pentru a dezvolta noi
algoritmi mai performan ți în produc ție, utilizarea intelgien ței artificiale pentru a opera
mașinile și a reduce substan țial numărul de erori survenite datorit ă erori umane , generarea
de rapoarte și analiza automat ă a acestora etc. Acestea vor creste cu mult complexitatea
proiectului, dar în mod propor țional va crește și utilitatea lui.
În ultimii ani au aparut din ce în ce mai mulți distribuitori de servicii cloud, printre
aceștia se numără și multinaționale de top din lume precum: Amazon, Google, Microsoft,
IBM etc. Ca urmare a concurenței ridicate, aceste servicii s -au îmbunătățit cu o rată
semnificativ ridicată și din acest m otiv au crescut și în popularitate. Serviciile cloud au
53
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix ajuns să se extindă în foarte multe subdomenii și încă o fac, probabil datorită faptului că
tehnologia preia din ce în ce mai mult controlul vieții de zi cu zi, ceea ce în opinia mea nu
este un lucru rău, avantajele fiind mult mai mari decât dezavantajele .
Eu cred c ă legătura dintre tehnologiile cloud și echipamentele periferice va deveni
din ce în ce mai strans ă, și datorit ă acestui lucru, se va imbun ătăți semnificativ industria de
produc ție. În mod natural acest lucru va aduce multe beneficii la nivel global din punct de
vedere economic.
Sper c ă prin intermediul acestei lucrări de diplom ă am putut s ă demonstrez unele
din avantajele pe care le aduce tehnologia cloud și că am reu șit să stârnesc un oar ecare
interes asupra acestor domenii tehnologice .
54
Conectarea unui automat programabil cu sistemul cloud IBM Bluemix Bibliografie:
[1] Ray Y. Zhong, Xun Xu, Eberhard Klotz, Stephen T. Newman (2017). Intelligent
Manufacturing în the Context of Industry 4.0: A Review. Engineering, vol. 3, editia 5, pag.
616-630. https://www.sciencedirect.com/science/article/pii/S2095809917307130 Accesat:
2018.
[2] Răzvan Constantin GUȚULOV, Ștefan -Mihai MOGA, grupa 1100 Facultatea de
Ciberneti că, Statistică și Informatică Economică Academia de Studii Economice din
București, Cloud computing – arhitectură și exemple. pag. 1.
https://www.mihaimoga.com/freewar e/GutulovMoga_1100_ArticolStiintific.pdf Accesat :
2018.
[3] Documentatie modul Flask. http://flask.pocoo.org/docs/1.0/installation/ Accesat: 2018.
[4] Welcome to Flask -MySQLdb ’s documentation! . https://flask –
mysqldb.readthedocs.io/en/latest/ Accesat: 2018 .
[5] Flask documentation, Step 7:The Templates .
http://flask. pocoo.org/docs/0.12/tutorial/templates/ Accesat: 2018.
[6] Documentatie Bootstrap, Introduction . https://getbootstrap.com/docs/4.1/getting –
started/introduction/ Accesat: 2018.
[7] IBM, Evolution of the IBM Cloud: Enabling an enterprise cloud service ecosystem. 12
December 2011.
[8] Sushil Bhardwaj, Leena Jain, Sandeep Jain. CLOUD COMPUTING: A STUDY OF
INFRASTRUCTURE AS A SERVICE (IAAS). International Journal of Engineering and
Information Tehnology, 2010.
[9] Cloud Foundry Documentation. Deploying with Application Manifests.
https://docs.cloudfoundry.org/devguide/deploy -apps/manifest.html Accesat: 2 018.
[10] IBM Developer Tools CLI Installer (idt -installer) for Windows.
https://github.com/IBM -Cloud/ibm -cloud -developer -tools/tree/master/windows -installe r
Accesat: 2018.
[11] Cloud Foundry Documentation. Getting Started with the cf CLI.
https://docs.cloudfoundry.org/cf -cli/getting -started.html Accesat: 2018.
[12] IEC 61131 -3. https://en.wikipedia.org/wiki/IEC_61131 -3 Accesat: 2018.
[13] Instruction list. https://en.wikipedia.org/wiki/Instruction_list Accesat: 2018.
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: Cernica Paul Ovidiu Licenta 2018 [625594] (ID: 625594)
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.
