SISTEME AUTOMATE DE COMANDA A PROCESELOR INDUSTRIALE [630622]

UNIVERSITATEA DE MEDICINĂ, FARMACIE, ȘTIINȚE ȘI TEHNOLOGIE DIN
TÂRGU -MUREȘ
FACULTATEA DE INGINERIE
PROGRAMUL DE STUDIU :
SISTEME AUTOMATE DE COMANDA A PROCESELOR INDUSTRIALE

PROIECT DE DISERTAȚIE
Controlul proceselor simulate cu OpenPLC

Îndrumător științific:
Sef. lucr. dr. ing. Duka Adrian
Absolvent: [anonimizat]
2019

2

3

UNIVERSITATEA DE MEDICINĂ, FARMACIE, ȘTIINȚE ȘI TEHNOLOGIE DIN TÂRGU -MUREȘ
FACULTATEA DE INGINERIE
Specializarea: SACPI Viza facultății

TEMĂ PROIECT DE DIZERTAȚIE
Conducătorul temei Candidat: [anonimizat]: 2019
a) Tema proiectului de dizertație : Controlul proceselor simulate cu OpenPLC

Problemele principale care vor fi tratate în proiect:
❑ Stadiul actual privind sistemele de automatizare industriale (Piramida de automatizare)
❑ Sistemul OpenPLC
❑ Cerințe funcționale ale sistemului propus
❑ Arhitectura sistemului
❑ Identificarea resurselor hardware și software necesare
❑ Descrierea procesului simulat bazat pe Festo EasyVeep
❑ Configurarea sistemului de calcul care asigură suportul sistemului OpenPLC
❑ Implementarea soft/hard a sistemului
❑ Descrierea componentelor software realizate ( aplicația PLC, aplicația SCADA)
❑ Harta Modbus
❑ Concluzii

b) Desene obligatorii :
Arhitectura generala a sistemului (scheme de principiu)
Scheme electronice care să pună în evidenta arhitectura hardware a sistemului
Diagrame de stare (SFC / GRAFCET) pentru aplicația PLC
Fotografii ale sistemului realizat care să pună în evidenta elementele componente

c) Softuri obligatorii – OpenPLC, SCADA BR, Festo EasyVeep.
Bibliografie recomandată:
1. Karl Heinz John, Michael Tiegelkamp – IEC 61131 -3: Programming Industrial Automation Systems ,
Springer 2010.
2. Duka A.V. – Automate programabile, note de curs, format electronic
3. International Standard IEC61131 -3. Programmable Controllers – Part 3: Programming Languages, 2003
4. www.arduino.cc
5. https://www.openplcproject.com /
6. Specificații , note de aplicație , foi de catalog pentru placile de dezvoltare, modulele și circuitele utilizate

Termene obligatorii de consultații : săptămânal
Locul practicii: laboratoare specifice din
facultate Primit la data de: aprilie 2018
Termen de predare: 26 iunie 2019

Semnătura directorului de departament Semnătura conducătorului
Prof.dr.ing. Bica Dorin Sef lucr. Dr. Ing. Duka Adrian –
Vasile
Semnătura
candidat: [anonimizat]

4
Cuprins
1. Introducere ………………………….. ………………………….. ………………………….. ………………………….. …………….. 6
1.1. Tema proiectului ………………………….. ………………………….. ………………………….. ………………………….. 6
1.2. Sisteme moderne de automatizare ………………………….. ………………………….. ………………………….. ….. 6
1.2.1. Piramida de Automatizare ………………………….. ………………………….. ………………………….. …………. 6
1.2.2. Protocoale ………………………….. ………………………….. ………………………….. ………………………….. …… 7
1.2.3. Automate Programabile (PLC) ………………………….. ………………………….. ………………………….. …… 7
1.2.4. SCADA HMI ………………………….. ………………………….. ………………………….. ………………………….. . 8
1.3. Structura lucrării ………………………….. ………………………….. ………………………….. ………………………….. 8
2. Sistemu l OpenPLC ………………………….. ………………………….. ………………………….. ………………………….. …. 9
2.1. OpenPLC ………………………….. ………………………….. ………………………….. ………………………….. ……….. 9
2.1.1. Arhitectura OpenPLC ………………………….. ………………………….. ………………………….. ……………….. 9
2.1.2. OpenPLC Runtime ………………………….. ………………………….. ………………………….. …………………. 11
2.1.3. OpenP LC Editor ………………………….. ………………………….. ………………………….. …………………….. 17
2.1.4. Harta Modbus ………………………….. ………………………….. ………………………….. ………………………… 17
2.2. ScadaBR ………………………….. ………………………….. ………………………….. ………………………….. ………. 17
2.3. Sistemul Festo: EasyVeep și EasyPort ………………………….. ………………………….. ………………………. 17
3. Proiectarea Sistemului ………………………….. ………………………….. ………………………….. ……………………….. 18
3.1. Specificații funcționale ………………………….. ………………………….. ………………………….. ……………….. 18
3.2. Arhitectura propusa ………………………….. ………………………….. ………………………….. ……………………. 18
3.3. Resurse necesare ………………………….. ………………………….. ………………………….. ………………………… 20
3.3.1. Hard ………………………….. ………………………….. ………………………….. ………………………….. …………. 20
3.3.2. Soft ………………………….. ………………………….. ………………………….. ………………………….. ………….. 20
3.4. Simularea de proces aleasă ………………………….. ………………………….. ………………………….. ………….. 20
4. Implementarea sistemului ………………………….. ………………………….. ………………………….. …………………… 25
4.1. Configurare sistem de calcul ………………………….. ………………………….. ………………………….. ……….. 25
4.1.1. Setare pe Windows ………………………….. ………………………….. ………………………….. …………………. 25
4.1.1.1. OpenPLC runtime și OpenPLC editor ………………………….. ………………………….. ………………… 25
4.1.1.2. Setare dispozitiv sclav I/O Arduino Uno ………………………….. ………………………….. …………….. 27
4.1.1.3. Instalare ScadaBR ………………………….. ………………………….. ………………………….. ……………….. 28
4.1.2. Setare pentru Linux ………………………….. ………………………….. ………………………….. ………………… 30
4.1.2.1. OpenPLC runtime ………………………….. ………………………….. ………………………….. ……………….. 30
4.1.2.2. Setare dispozitiv sclav I/O Arduino Uno ………………………….. ………………………….. …………….. 30
4.1.2.3. Instalare OpenPLC editor ………………………….. ………………………….. ………………………….. …….. 30
4.1.2.4. Instalare ScadaBR nativ ………………………….. ………………………….. ………………………….. ……….. 31
4.1.3. Setarea primului proiect și rularea lui pe OpenPLC ………………………….. ………………………….. …. 34
4.1.4. Configurare ScadaBR ………………………….. ………………………….. ………………………….. ……………… 37

5
4.1.5. Setare EasyPort și EasyVeep ………………………….. ………………………….. ………………………….. ……. 41
4.2. Schema electronica ………………………….. ………………………….. ………………………….. …………………….. 42
4.3. Implementare software ………………………….. ………………………….. ………………………….. ……………….. 44
5. Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ……………… 54
6. Anexe ………………………….. ………………………….. ………………………….. ………………………….. ………………….. 55
6.1. Anexa 1 – programul Ladder ………………………….. ………………………….. ………………………….. ……….. 55
6.2. Anexa 2 – Montajul Experimental ………………………….. ………………………….. ………………………….. … 63
7. Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. ………….. 64

6
1. Introducere
1.1. Tema proiectului

Tema proiectului este setarea și punerea în funcțiune a sistemului OpenPLC în scopul creării unui sistem
didactic de studiu pentru PLC -SCADA cu un preț redus și folosirii tehnologiilor „open source”. Principalul
motiv pentru acest sistem este ocolirea costurilor ridicate pentru PLC și licențele soft pentru care niciun
student, nici o facultate nu își permite să ofere fiecărui student un PLC pentru studiu individual. Cu acest
sistem oricine cu câteva cunoștințe minime poate să învețe și să program eze PLC-uri. Prin adăugarea
sistemului Festo se poate simula și procesul în sine.

1.2. Sistem e moderne de automatizar e

1.2.1. Piramida de Automatizar e

Automatizarea proceselor și sistemelor de producție evoluează în mod constant datorită integrării
tehnologiilor clasice mecanica și electrotehnica cu tehnologiile moderne electronica, informatica,
comunicațiile etc . Această integrare a tehnologiilor este reprezentată în "piramida de automatizare",
care include cele cinci nivele tehnologice dintr -un mediu industrial.
Figura 1 prezintă piramida de automatizare conform standard ISA-95, standard internațional pentru
un model de arhitectura de integrare a sistemelor de control destinate mediului industrial

Fig.1 Piramida de automatizare conform Standard ISA 95 [8]
Piramida de automatizare ilustrează nivelurile de automatizare într -o fabrică sau în industrie și are
următoarele nivele :

7
•Nivel 0 sau "nivel proces de producție" cuprinde dispozitivele fizice existente în industrie, cum ar fi
dispozitivele de acționare , senzorii etc care fac instalația să funcționeze.
•Nivel 1 sau "nivel de control" include dispozitive logice cum ar fi PC -uri, PLC -uri (Programmable
Logic Controller), etc. PLC-urile culeg informații și controlează dispozitivele la nivel de câmp pentru
a finaliza sarcina programată.
•Nivel 2 sau "nivelul de supraveghere" corespunde sistemelor de control și achiziții de date SCADA
(Supervisory Control and Data Acquisition )
•Nivel 3 sau "nivel de planificare" corespunde sistemelor de execuție a producției sau MES .
MES monitorizează întregul proces de fabricaț ie dintr -o fabrică , de la materiile prime până la
produsul finit. Pe baza datelor reale primite conducerea poate planifica comenzile de materii prime
sau planurile de expediere .
•Nivel 4 sau "nivel de management" corespunde sistemul de management integra t al companiei
ERP( Enterprise Resource Planning) . ERP sunt aplicații informatice cu ajutorul cărora se
monitorizează toate nivelurile afacerii de la fabricație, la vânzări, la cumpărare, la finanțare și la
salarizare.
Cele cinci nivele pot fi împărțite în două secțiuni distincte: partea inferioară a piramidei este
procesul de producție (adică hardware pentru eleme nte de execuție , senzori și PLC), în timp ce nivelul
superior se referă la resursa întreprinderii sisteme de planificare pentru managementul afacerii (adică
rețeaua SCADA, MES și ERP).

Bibliografie
MAGNUS ÅKERMAN Towards interoperable information and communication systems for
manufacturing operations Department of Product and Production Development CHALMERS
UNIVERSITY OF TECHNOLOGY Gothenburg, Sweden 2016 disponibil la
https://www.researchgate.net/figure/The -automation -pyramid -with-levels -from -ISA-
95_fig2_314263189 ]
).(https://www.smctraining.com/webpage/indexpage/312

1.2.2. Protocoale

1.2.3. Automate Programabile (PLC)

8

1.2.4. SCADA HMI

1.3. Structura lucrării

Lucrarea cu titlul „Controlul proceselor simulate cu OpenPLC ” cuprinde în principal descrierea și
implementarea sistemului OpenPLC și simularea procesului ales. Lucrarea este structura pe 6
capitole.
In capitulul 1 se prezinta introducerea a sistemelor de automatizare acoperind piramida de
automatizare, PLC, produc ători, tipuri, limbaje de programare, SCADA și standardul IEC61131, de
asemenea se prezinta tema proiectului, scopul și structura lucrării.
In capitolul 2 se prezinta în detaliu sistemul OpenPLC, toate softurile necesare și rolul lor. Se prezinta
OpenPLC r untime, Editor și ScadaBR , și sistemul Festo .
In capitolul 3 se prezinta proiectarea sistemului , specificațiile funcționale, arhitectura propusă cu
schema bloc a sistemului, de asemenea se prezinta resursele necesare hardware și software și rolul
lor. Se prezintă și simularea de proces aleasa cu explicarea procesului, diagrama SFC.
In capitolul 4 se prezinta implementarea propriu -zisa a procesului începând cu instalarea și
configurarea a softurilor necesare, implementarea hardware, schema electronica și implementarea
software cu diagrame Grafcet și exemple de cod.
In capitolul 5 se prezinta concluziile, sumariza scopul proiectului și se trage concluziile , avantajele
și dezavantajele sistemului OpenPLC
In capitolul sunt atașate anexele cu exemple de cod și poza standului

9

2. Sistemul OpenPLC
2.1. OpenPLC

2.1.1. Arhitectura OpenPLC
[1][2] [24] [31]
OpenPLC este primul PLC „open source” standardizat, atât ca software, cât și ca hardware creat de
Thiago Rodrigues Alves de la Univesitatea din Huntsville Alabama USA .
OpenPLC este un controler logic programabil „open source” bazat pe un software creat în conformitate cu
standardul IEC 61131 -3, care definește arhitectura software de bază și limbajele de programare pentru PLC –
uri. Proiectul OpenPLC a fost creat ca o soluție industrială ieftină pentru automatizare și cercetare SCADA.
Figura 2.1 prezintă diagrama arhitectura internă a OpenPLC și modulele curente: Webserver(server web),
MatIEC Compiler ( compilator ), Network layer (Nivelul de rețea) ; Input and Ouput Image Tables (tabel
imagine cu maparea porturilor de intrare / ieșire) , Hardware Layer (nivel fizic), Real – Time Library ( biblioteca
de timp real ) .

Fig.2.1 Diagrama arhitectură internă OpenPLC [1]

O descriere a fiecărei componente OpenPLC din diagrama este prezentată mai jos:
Webserver (serverul web) este un utilitar care permite încărcarea și compilarea unui program PLC. Acesta
rulează pe portul 8080 și poate fi deschis în browser web. Programul PLC este încărcat ca un singur fișier
care conține codul generat de editorul grafic IEC 61131 -3 furnizat cu OpenPLC. Odată ce fișierul este primit,
acesta este trimis la MatIEC Compiler.
MatIEC Compiler (compilatorul) este responsabil pentru compilarea p rogramului încărcat pe serverul
OpenPLC într -un program C echivalent care conține numai logica creată de utilizator. OpenPLC oferă fișiere

10
suplimentare C care adaugă suport pentru conectivitate în rețea, tabele de imagini interne, interfață
hardware (pent ru a manipula I / O fizic) și o bibliotecă în timp real care adaugă comportamentul în timp real
pentru OpenPLC. Atunci când sunt combinate cu logica creată de utilizator, aceste fișiere suplimentare C
asigură întregul mediu pentru aplicația PLC.
Network la yer (Nivelul de rețea) este responsabil pentru comunicarea în rețea prin intermediul protocoalelor
SCADA. În prezent, OpenPLC acceptă Modbus/TCP și DNP3. Pentru a răspunde solicitărilor de rețea din
protocoalele SCADA, acest strat are acces la tabelele de intrare și ieșire.
Input and Ouput Image Tables (tabel imagine cu maparea porturilor de intrare/ieșire) sunt zone de
memorie definite în aplicația OpenPLC care stochează starea curentă a tuturor intrărilor și ieșirilor. Când
programul de utilizator este executat, acesta examinează tabelul de imagine de intrare astfel încât logica să
determine următoarea stare a tuturor ieșirilor fizice. Odată ce execuția lo gică este completă, starea tuturor
ieșirilor este scrisă în tabel.
Hardware Layer (nivelul fizic) este modulul care trebuie să citească intrările fizice, să le scrie starea în
tabela de intrare și să stabilească ieșirile fizice conform tabelului de ieșire. Pentru a efectua aceste operațiuni,
stratul hardware trebuie să conțină driverele de dispozitiv responsabile cu manipularea I/O hardware.
Această arhitectură modulară face ca OpenPLC să fie compatibil cu alte dispozitive. Acest modul are drivere
de nivel hardware care să se ocupe de multe platforme diferite, cum ar fi Raspberry Pi, UniPi, Arduino,
ESP8266 și altele.
Driverul de dispozitiv scris pentru OpenPLC se ocupă de comunicarea cu coprocesorul și cu dispozitivele
externe pe magistrala de expansiune. Intrările sunt manipulate prin citirea tuturor punctelor de intrare
primite de la coprocesor și scrierea acestora pe tabela de imagini de intrare. Ieșirile sunt citite din tabela de
imagini de ieșire și încapsulate în mesajele interne care sunt trimise către coprocesor .
Real – Time Library ( biblioteca de timp real ) oferă un răspuns mai bun în timp re al pentru procesul OpenPLC.
Sistemele de operare moderne bazate pe Linux și Windows nu au un comportament bun în timp real și
afectează foarte mult aplicațiile care se bazează pe un răspuns determinist. Această lipsă de determinism
afectează procesele ca re necesită un răspuns în timp real. OpenPLC conține o biblioteca în timp real care
îmbunătățește răspunsul Linux pe o arhitectură multi -nucleu prin izolarea procesului OpenPLC pe un nucleu
separat, schimbarea politicii de planificare pentru thread -ul prin cipal OpenPLC la SCHED_FIFO și stabilirea
priorității sale la valoarea maximă. Procesele programate în conformitate cu politica SCHED_FIFO cu
prioritate maximă vor preveni întotdeauna orice proces care se află în desfășurare în acest moment. În plus,
proce sele din această politică nu au politica de întrerupere, ceea ce înseamnă că un fir de execuție
SCHED_FIFO rulează pe termen nelimitat până când se eliberează resursa sau este blocat de o cerere I/O.
Deoarece nici alte procese nu concurează cu OpenPLC pe n ucleul dat, acesta va fi programat imediat.
Deoarece procesul OpenPLC rulează în mod constant, acesta poate oferi un răspuns determinist îmbunătățit,
chiar și atunci când sistemul este încărcat.
Proiectul software OpenPLC este compus din trei subproiecte fig.2.2 [24][31]:

11
-Runtime este software este responsabil pentru executarea programului PLC .
-Editor este software utilizat pentru a crea programe PLC.
-ScadaB R (HMI) este constructorul HMI , software care comunică cu OpenPLC Runtime pe Modbus/TCP.

Fig.2.2 Soluția OpenPLC – subproiecte [31]

2.1.2. OpenPLC Runtime

OpenPLC este o platformă PLC „open source ” care în prezent poate funcționa pe o varietate de
dispozitive populare, cum ar fi Raspberry Pi, UniPi și PiXtend , Arduino ,ESP8266 , etc . Proiectul
software OpenPLC suportă mai multe platforme de sistem încorporate și poate fi rulat pe PC
Windows și Li nux ca PLC software. Se pot utiliza și dispozitive slave (cum ar fi plăcile Arduino)
pentru a extinde punctele de I / O sau pentru a le utiliza ca PLC I / O.
Platforme de sistem încorporate utilizate de OpenPLC sunt în fig 2.3 :

Fig.2.3 Platforme de sis tem incorporate OpenPLC [35]

In continuare prezentăm cele mai importante platforme de sistem încorporate .

OpenPLC pe Raspberry PI

12
Raspberry Pi este cea mai cunoscut ă placă de dezvoltare de tip SBC ( Single Board Computer ),
microcomputer care rulează un sistem de operare (Linux sau Windows) și aplicații utilizator. In
fig.2.4 se prezint ă maparea OpenPLC I / O pentru placa Raspberry Pi .

Fig.2.4 Maparea OpenPLC I / O pentru Raspberry Pi [35]
OpenPLC pe PiXtend
PiXtend este o variantă a platformei Raspberry Pi care este robustă pentru a fi compatibilă cu I/O de
nivel industrial. In fig.2.5 se prezintă maparea OpenPLC I/O pentru placa PiXtend.

Fig.2.5 Maparea OpenPLC I / O pentru PiXtend [35]

OpenPLC pe UniPi industrial

UniPi industrial este o placă de extensie Raspberry Pi, permițând computerului să fie utilizat pentru
controlul sau colectarea de date printr -un set de module de I / O. In fig.2.6 se prezintă maparea
OpenPLC I / O pentru placa UniPi industrial .

13

Fig.2.6 Maparea OpenPLC I / O pentru UniP i industrial [35]
OpenPLC pe UniPi Neuron
UniPi Neuron ( fig.2.7 ) este o linie de produse PLC concepute pentru aplicații în casă inteligentă ,
clădiri comerciale, industria ușoară fiind un dispozitiv modular și flexibil .

Fig.2.7 UniPi Neuron [40]

Disp ozitive SLAVE [35]

Dispozitivele slave utilizate de OpenPLC sunt în fig.2.8

14
Fig.2.8 Dispozitivele slave utilizate de OpenPLC [35]
In continuare prezent ăm cele mai importante platforme de sistem încorporate .
OpenPLC si Arduino[35]
PC Windows poate rula OpenPLC Runtime și acționează ca un software PLC care controlează
plăcile reale Arduino configurate ca dispozitive Slave I/O, pentru a extinde numărul de intrări/ieșiri.
Ca placi Arduino dispozitive slave se pot folosi Arduino Uno ; Arduino Pro; Arduino Pro Mini ;
Arduino Nano; Arduino Micro; Arduino Lilypad; Arduino Zero; Arduino Mega; Arduino ADK;
Arduino Due. În continuare prezentăm cele mai importante dispozitive slave utilizate pe OpenPLC.
Din platforma Arduino reprezentantive sunt plăcile Arduino Uno și Arduino Mega.
OpenPLC și Arduino UNO
Arduino UNO constituie o platformă de procesare tip open -source, bazat și pe un software și
hardware flexibil construit și în jurul unui microcontroler ATMEGA 328P -PU ( fig.2.9 ).

Fig.2.9 Arduino UNO [39]
In tabelul 2.1 se prezint ă maparea OpenPLC I / O pentru placa Arduino Uno .
Tabel 2.1 Maparea OpenPLC I / O pentru Arduino Uno [35]

15
OpenPLC si Arduino Mega
Arduino Mega 2560 ( fig.2.10 ) este o placă de dezvoltare Arduino. Maparea OpenPLC
I/O pentru placa Arduino Mega este prevăzută în tabel 2.2 și tabel 2.3 [35]

Fig.2.10 Arduino Mega 2560 [41]
Tabel 2.2 Maparea OpenPLC I / O digitale pentru placa Arduino Mega [35]

Tabel 2.3 Maparea OpenPLC I / O analogice pentru placa Arduino Mega [35]

16

OpenPLC și ESP8266
PC Windows poate rula OpenPLC Runtime și poate acționa ca un software PLC care controlează plăcile
reale ESP8266 configurate ca dispozitive wireless slave I / O pentru a extinde numărul de puncte I / O. In
fig.2.11 se prezint ă maparea OpenPLC I / O pentru placa ESP8266.

Fig.2.11 Maparea OpenPLC I / O pentru ESP8266 [35]

17
2.1.3. OpenPLC Editor

2.1.4. Harta Modbus

2.2. ScadaBR

2.3. Sistemul Festo: EasyVeep și EasyPort

18
3. Proiectarea Sistemului

3.1. Specificații funcționale

Proiectul OpenPLC are mai multe elemente de hardware și software pentru a -l pune î n funcțiune.
De asemenea are mai multe arhitecturi și moduri de configurare, autorul acestui proiect a dorit ca
soluția lui să fie cât mai versatilă și să ruleze pe cat mai multe sisteme de operare și plăci compatibile,
cele mai populare. Pentru ace astă lucrare s -a ales ca PC care rulează Microsoft Windows și Linux
rulând OpenPLC iar ca dispozitiv sclav intrare ieșire s -a ales Arduino Uno. Pentru simularea
procesului s -a ales din nou o soluție care emu lează un proces real, Sistemul Festo: EasyVeep și
EasyPort.
Soluția va consta într -un sistem de automatizare a unei linii de îmbuteliere vin care este descri să în
capitolul 3.4, PLC emulat cu programul de control va rula pe PC, iar porturile fizice vor fi pe Placa
de dezvoltare Arduino. Modulul EasyPort va prelua aceste semnale de control logice și le va
transforma în semnale virtuale prin care o aplicație de simul are rulând pe PC o va interpreta și va
afișa vizual procesul în funcție de semnalele de intrare/ieșire.
Placa de dezvoltare Arduino funcționează cu 0 -5V semnale logice, iar un PLC este standardizat la 0 –
24V, pentru acesta s -au folosit o serie de relee și optocuploare pentru a face tranziția logica dintre
nivelele logice pentru fiecare intrare și ieșire în parte.

3.2. Arhitectura propusa

19

Fig Arhitectura propusă
Arhitectura propusă fig. este compusă din 6 componente PC, OpenPLC, Arduino, ScadaBR , EasyPort
și EasyVeep, fiecare cu rolul bine stabilit.
OpenPLC emulează PLC propriu zis, după cum s -a descris în capitolul 1 un PLC este format din mai
multe componente, OpenPLC emuleaza CPU, Memoria, memoria program, rulând pe PC. Restul
componentelor sun t acoperite de Arduino, care transformă valorile logice în semnale logice și
interacționează la nivel fizic cu procesul, de asemenea asigură și tranziția logică (dacă este cazul) și
izolarea galvanică.
ScadaBR și EasyVeep rulează pe PC sub un sistem de ope rare deoarece acestea sunt implementări
software, programe care simulează câte o funcționalitate .
ScadaBR se ocupa cu monitorizarea procesului, a tuturor variabilelor care au relevanță, foarte
configurabil, se setează o sursa care poate comunica prin diferite protocoale de comunicație, în cazul
de față s -a ales ModBus TCP/IP, apoi se setează adresele la variabile le la care se dorește
monitorizarea. Totul este afișat într -un tabel pentru o vizualizare ușoară și rapidă.
EasyPort se ocupă cu convertirea semnalelor logice 24V în semnale virtuale care sunt înțelese de PC.
EasyVeep se ocupă cu simularea sof tware a procesului, ia semnalele de la EasyPort și reacționează
simularea în funcție de a ceste semnale.

20
Comunicările între componente se face în modul următor :
Între OpenPLC și Arduino se comunică prin protocolul ModBus Serial prin interfața fizică USB.
Între Arduino și EasyPort sunt semnale fizice logice 0 -24V, Arduino are de asemenea optocup loare
și relee care transformă semnalele 0 -5V în 0-24V și invers.
Între EasyPopt și EasyVeep se comunică seriale prin interfața USB.
Între OpenPLC și ScadaBR se comunică prin protocolul Modbus TCP/IP prin interfața ethernet care
poate fi virtualizată sau fizică.
Notă :
Sistemul OpenPLC este versatil și poate fi configurat în mai multe moduri în funcție de posibilitate.
S-a ales ca toate componentele software să ruleze pe același PC, dar pot să ruleze fiecare componentă
pe alt PC și pe alt sistem de operare și ScadaBR poate să ruleze și la distantă nefiind limitat de
lungimea cablului.

3.3. Resurse necesare

3.3.1. Hard

3.3.2. Soft

3.4. Simulare a de proces aleas ă

Pentru a testa toate tehnologiile puse în aplicare este nevoie de un proces pe care să-l putem controla.
S-a ales din nou să se simuleze și această parte pentru a demonstra încă o data că nu este nevoie de
hardware propriu zis pentru a proiecta și testa o automatizare/un control a oricărui proces. Așa ca s -a ales

21
modulul EasyVeep cu EasyPort de la Festo. Acest modul ajuta la simularea unui proces predefinit pe PC și
convertește semnalele din simulare la semnale înțelese de orice PLC, adică în intrări/ieșiri logice (0-24V).

Procesul ales este o linie de îmbuteliere vin (Bottling wine)

Descrierea procesului:

Sticlele sunt de 2 tipuri, transparente sau întunecate. Acestea sunt livrate către instalația de îmbuteliere a
vinului. Selecția este determinată fie de un generator aleator, fie prin clic cu mouse -ul pe unul dintre
butoanele din partea de jos. O sticlă tr ansparenta trebuie umplută cu vin alb și trebuie să fie prevăzută cu
dop și etichetă pentru vin alb. O sticlă întunecată trebuie umplută cu vin roșu în mod corespunzător și
trebuie să fie prevăzută cu plută și etichetă corespunzătoare. Există o inspecție a calității vizuale la sfârșitul
producției.
Viteza benzii transportoare poate fi modificată făcând clic cu mouse -ul.

Procesul are în total 7 senzori și 8 elemente de execuție

4 senzori pentru a detecta în care dintre cele 4 stații de prelucrare este amplasată sticla.
(s_filling, s_cork, s_neck_label, s_label)

22
2 senzori pentru a detecta dacă sticla este transparenta sau întunecată. (s_white_bottle, s_dark_bottle)
1 senzor pentru a detecta dacă stația curentă a terminat cu procesarea. (ready)
1 dispozit iv de acționare pentru îmbutelierea vinului roșu (sticlă întunecată) și 1 dispozitiv de acționare
pentru îmbutelierea vinului alb (sticlă transparenta). (fill_red, fill_white)
1 dispozitiv de acționare pentru etichetarea flaconului de vin roșu și 1 dispozi tiv de acționare pentru
etichetarea sticlei de vin alb. (labeling_dark, labeling_white)
1 dispozitiv de acționare pentru etichetarea gâtului sticlei de vin roșu și 1 dispozitiv de acționare pentru
etichetarea gâtului sticlei de vin alb. (neck_label_red, ne ck_label_white)
1 dispozitiv de acționare pentru furnizarea sticlei cu dop. (corking)
1 dispozitiv de acționare pentru activarea motorului benzii transportoare. (conveyor)

Derularea procesului:
La fiecare stație se face detecția sticlei și se oprește band a, de asemenea se detectează tipul sticlei și la
finalizarea operației se pornește banda.
Banda pornește iar sticla se deplasează.
La prima stație se face umplerea în funcție de tipul de sticla.
La stația 2 se pune dopul de pluta.
La stația 3 se etichetea ză gatul sticlei în funcție de tipul de sticla.
La stația 4 se etichetează sticla în funcție de tipul de sticla.

Mai jos este descris procesul printr -o diagrama de activitate:

23

24
Bibliografie:
http://www.easyveep.com/modules.php?akt_modul=6&akt_Lang=2

25
4. Implementarea sistemului

4.1. Configurare sistem de calcul

Fiind mai familiarizat cu Sistemul de operare Linux, specific Ubuntu s -a decis să se seteze sistemul
OpenPLC atât pe Windows 10 cat și pe Ubuntu 18.04, care aduce un nivel de dificultate mai ridicat
din cauza comenzilor de terminal și de asemenea a setăril or suplimentare făcute din cauza
customizării proiectului pentru cerințele sistemului simulat. Setându -l pe Linux a dat o înțelegere
mai profunda privind funcționarea cat și ușurința de a rezolva mai rapid unele probleme apărute în
procesul de instalare. S ingura problema referitoare la instalarea pe Windows este ca din cauza
instalării la 1 click, în cazul în care eșuează este foarte greu de a identifica problema. Pentru cei mai
puțin experimentați se recomanda setarea cat mai rapida a sistemului cu ajutorul tutorialul pe
Windows.

4.1.1. Setare pe Windows

4.1.1.1. OpenPLC runtime și OpenPLC editor

Prima data se va instala OpenPLC runtime & OpenPLC editor, se accesează link -ul
https://www.openplcproject.com/runtime , apoi se alege SOFT -PLC apoi Windows. Aici se alege în
funcție pe câți biti rulează sistemul de operare 64 sau 32 biți. In acest caz s -a ales varianta
„OpenPLC Runtime64 -bit Installer”. Programul de instalare Windows vine, de asemenea, însoțit de
OpenPLC Editor. Deci, nu trebuie să fie descărcat separat.
Odată ce OpenPLC Runtime este instalat, se poate porni mergând în meniul Start și lansând
comanda rapidă “OpenPLC Runtime”. De asemenea Editorul se poate porni accesând comanda
rapidă “PLCopen Editor”
OpenPLC runtime are o interfață web frumoasă care poate fi accesata accesând link-ul:
http://localhost:8080/

Numele de utilizator și parola implicite sunt openplc (login) și openplc (parola). Prima acțiune care
trebuie făcută după prima conectare este schimbarea numelui de utilizator și a parolei implicite! Se
accesează meniul “Users”, se face clic pe Utilizatorul OpenPLC și se modifica informațiile dorite.

26

Următoarea configurare este setarea dispozitivului sclave, care în cazul nostru este Arduino Uno, se
merge la meniul “Slave Devices” , „Add new device„
și se alege placa menționată, se completează următoarele informații:
Device Name: ArdUno
Device Type: Arduino Uno
COM Port: COM6
Restul câmpurilor nu pot fi completate și se lasă implicit.

Se salvează apăsând butonul „Save device”.

Din cauza customizarii configurației trebuie făcut câteva modificări în cod pentru a putea edita din
interfața numărul de porturi alocate.
Se folosește un editor cum ar fi Notepad++, se navighează pe calea unde este instalat OpenPLC
runtime, în acest caz este

27
C:\Program Files \OpenPLC \Runtime \home \Adrian \OpenPLC_v3 \webserver \pages.py
Se navighează la linia 1660 linia de cod
„else if (dropmenu.options[dropmenu.selectedIndex].value=="Uno")”
Si peste tot în acesta condiție trebuie înlocuit „turnEle mentOff” cu „turnElementOn”. Se salvează.
Se retratează OpenPLC runtime închinând fereastra cmd și accesând din nou comanda rapidă.
Se merge la meniul “Slave Devices” și se dă click pe dispozitivul nou creat și editează următoarele
câmpuri:
Discrete Input s (%IX100.0): Size: 9
Coils (%QX100.0): Size: 9
Input Registers (%IW100): Size: 0
Holding Registers – Read (%IW100): Size: 0
Holding Registers – Write (%QW100): Size: 0

Se salvează.

4.1.1.2. Setare dispozitiv sclav I/O Arduino Uno

Un PC nu are porturi fizice de intrare/ieșire logice asemenea PLC -urilor și din acesta cauza
avem nevoie de o placa de dezvoltare sclave care să transforme comenzile în semnale logice către
procesul controlat. Prin urmare, mașina Windows poate rula OpenPLC Runtime și poate acționa ca
un soft -PLC care controlează plăcile reale configurate ca dispozitive Slave I / O.
Avem nevoie de programul care va face legătura dintre PC și Arduino,
Pentru a descărca schița se merge la link -ul https://www.openplcproject.com/runtime unde sub
„SLAVE DEVICES” se alege „Arduino and compatible boards” și apoi Arduino Uno.
Pentru a compila și urca programul pe placa avem nevoie de Programul Aduino c are se găsește pe
https://www.arduino.cc/en/Main/Software , Se alege „Windows Installer”. Instalarea are tot ce este
nevoie pentru a putea dezvolta pe placa Arduino.
Se deschide schița cu programul Ar duino, se alege placa corespunzătoare „Tools” -> „Board” se
alege „Arduino/Genuino Uno”, apoi se alege portul serial corespunzător COMX. Înainte de a
încărca avem nevoie de câteva modificări pentru a seta noua mapare a pinilor, configurația pinilor
este ur mătoarea:
Digital In: 8, 9, 10, 11, 12, A0, A1, A2, 13 (%IX100.0 – %IX101.0)

28
Digital Out: 2, 3, 4, 5, 6 , 7, A3, A4, A5 (%QX100.0 – %QX101.0)
Căutam liniile
#define NUM_DISCRETE_INPUT 5
#define NUM_INPUT_REGISTERS 6
#define NUM_COILS 4
#define NUM_HOLDING_REGISTERS 3

Si înlocuim numerele corespunzătoare numărului de pini
#define NUM_DISCRETE_INPUT 8
#define NUM_INPUT_REGISTERS 0
#define NUM_COILS 10
#define NUM_HOLDING_REGISTERS 0

De asemenea căutam liniile de cod
//Create the I/O pin masks
uint8_t pinMask_DIN[] = {2, 3, 4, 5, 6};
uint8_t pinMask_AIN[] = {A0, A1, A2, A3, A4, A5};
uint8_t pinMask_DOUT[] = {7, 8, 12, 13};
uint8_t pinMask_AOUT[] = {9, 10, 11};

Si înlocuim cu pini corespunzători:
//Create the I/O pin masks
uint8_t pinMask_DIN[] = { 8, 9, 10, 11, 12, A0, A1, A2 };
uint8_t pinMask_AIN[] = {};
uint8_t pinMask_DOUT[] = { 2, 3, 4, 5, 6, 7, A3, A4, A5, 13 };
uint8_t pinMask_AOUT[] = {};

Salvam și urcam programul pe placa .

4.1.1.3. Instalare ScadaBR

29
Cea mai simplă modalitate de a instala aplicația ScadaBR este utilizarea unei mașini virtuale. O
mașină virtuală este un software care poate crea un computer virtual în propriul calculator.
Următorii pași îndruma cum să se descarce și să se instaleze VirtualBox. Odată instalat, tot ce
trebuie făcut este să se încarce fișierul de imagine ScadaBR în VirtualBox pentru a avea un mediu
ScadaBR gata de utilizare

1. Se descarcă VirtualBox de pe site -ul oficial[XXXXX]
2. Se descarcă imaginea virtuala ScadaBR de aici:
https://drive.google.com/file/d/1gEOZmN9_Nt5shXy4iYS1z_EMxB4r0Kzh/view?usp=sh aring
3. Se instalează VirtualBox descărcat la pasul 1.
4. Se deschide programul VirtualBox și se importa imaginea ScadaBR urmând meniul File ->
Import Appliance
5. Se face clic pe pictograma dosar și se selectează fișierul ScadaBR .ova descărcat la pasul 2 .
6. Se face clic pe Next și apoi pe Import pentru a încărca imaginea ScadaBR în VirtualBox.
7. Înainte de a începe programul ScadaBR , trebuie configurat rețeaua mașinii virtuale astfel încât
ScadaBR să poată vedea PLC -urile conectate la rețea. În fereastr a principală VirtualBox, se face
clic dreapta pe ScadaBR și se selectează setările.
8. Se merge la “Network” și la opțiunea "Attached to:" se verifica să fie este selectat „Bridged
Adapter” . Apoi pe "Name:" se alege adaptorul de rețea. VirtualBox va replica adaptorul de rețea
pentru mașina virtuală. Prin urmare, se verifica ca adaptorul ales este de fapt adaptorul de rețea care
este conectat la rețea. După ce s -a terminat, se face clic pe „OK” pentru a închid e această fereastră.

9. În ecranul principal VirtualBox se face clic pe „Start” pentru a lansa ScadaBR . S-ar putea să
dureze câteva secunde pentru încărcare. Odată ce este încărcat în sfârșit, se va vedea acest mesaj pe
ecran:
<poza>
ScadaBR este o aplicație web, se deschide browser -ul și se navighează la adresa afișată în mesaj.
Apoi, se va afișa o pagină de conectare. Se utilizează date de conectare:
Utilizator: admin
Parola: admin

<poza2>

Configurarea interfeței ScadaBR se va explica în capitolul XXXX după ce programul și placa
funcțională este pregătită pentru colectarea datelor.

30
Bibliografie ScadaBR : https://www.openplcproject.com/reference -installing -scadabr

4.1.2. Setare pentru Linux

4.1.2.1. OpenPLC runtime

Acest tutorial este specific și testat pentru Ubuntu 18.04 dar este destinat pentru distribuțiile bazate
pe Debian (ca Ubuntu, Mint, Kali, etc)
Se deschide un terminal și se introduc următoarele comenzi:
Se instaleaz a dependentele, cum ar fi git
sudo apt -get install git
Pentru a instala se ia cu git proiectul de pe github
git clone https://github.com/thiagoralves/OpenPLC_v3.git
Se rulează scriptul
cd OpenPLC_v3
./install.sh linux
Instalarea durează destul de mult și va seta tot ce este nevoie,
După finalizare se accesează http://localhost:8080 și urmează introducerea datelor de login
utilizator: admin
parola: admin.
Configurarea interfeței ScadaBR se va explica în următoarele capitolul XXXX după ce programul și
placa funcțională este pregătită pentru colectarea datelor.

4.1.2.2. Setare dispozitiv sclav I/O Arduino Uno

Instalarea se face exact ca pe Windows. Singura adiție este ca daca se instalează prin pachet
manager sau snap este necesar să se dea drepturi de acces la portul serial.
Portul serial arata astfel: /dev/USB0

4.1.2.3. Instalare OpenPLC editor

31
Pentru a instala ul tima versiune se descarcă proiectul de pe git și se rulează scriptul. Se deschide un
terminal și se introduc pe rând următoarele comenzi:
git clone https://github.com/thiagoralves/OpenPLC_Editor.git
cd OpenPLC_Editor
./install.sh
Se caută comanda rapida și se deschide programul
Bibliografie: https://github.com/thiagoralves/OpenPLC_Editor

4.1.2.4. Instalare ScadaBR nativ

Conform tutorialului de pe site -ul OpenPLC se recomanda să rulăm ScadaBR într-o mașină virtuala,
dar fiind dat ca sistemul de operare gazda este Debian 7, este o risipa de resurse să rulam un sistem
de operare linux peste altul.
Mai jos se va explica pas cu pas instalarea manuala a ScadaBR
ScadaBR rulează sub tomcat pentru webserver care de asemenea depinde de java, este nevoie să se
instaleze dependințele necesare. Mai este nevoie și de o baza de date unde SCADA va stoca
informațiile.

Se adaugă repozitoiul java și se actualizează lista
sudo add -apt-repository ppa:webupd8team/java
sudo apt -get update
Se instalează mysql:
sudo apt -get install mysql -server
Se deschide baza de date:
sudo mysql -p
Se creează baza de date:
create database scadabr;
Se creeaza un utilizator și o parola:
CREATE USER 'scadabr' IDENTIFIED BY 'scadabr';
Se dă permisiuni utilizatorului la baza de date
GRANT ALL PRIVILEGES ON scadabr. * TO scadabr;
Se iasă.
quit;

32
In următorul pas se instalează java:
sudo apt -get install oracle -java8 -installer
Se instalează tomcat
sudo apt -get install tomcat8
Se instalează Lib rxtx pentru java
sudo apt -get install librxtx -java
Se oprește serviciul tomcat:
sudo service tomcat8 stop
Se navighează către folderul web
cd /var/lib/tomcat8/webapps
Se descarcă ultima versiune a proiectul ScadaBR de pe sourceforge
sudo wget
https://sourceforge.net/projects/scadabr/files/Software/WAR/ScadaBR%200.9.1/ScadaBR.war
Se por nește tomcat8 pentru a deploia
sudo service tomcat8 start
Se oprește tomcat8 pentru a edita fișierele ScadaBR
sudo service tomcat8 stop
Se sterge fisierul ScadaBR war
sudo rm /var/lib/tomcat8/webapps/ScadaBR.war
Se creează directorul “bin” în tomcat8.

sudo mkdir /var/lib/tomcat8/bin
Se setează proprietarul folder -ului rădăcină tomcat8
sudo chown -R tomcat8.tomcat8 /var/lib/tomcat8/
Se adaugă utilizatorul “tomcat8” la grupul „dialout”
sudo gpasswd -a tomcat8 dialout
Se editeaza fisierul „en v.properties”
sudo nano /var/lib/tomcat8/webapps/ScadaBR/WEB -INF/classes/env.properties
Se decomenteaza sectiunea db.mysql stergand „#” și adăugând datele de conectare a bazei de date
create anterior.

Se schimbă următoarele:

33
#db.type=mysql
#db.url=jdb c:mysql://localhost/scadabr
#db.username=root
#db.password=
#db.pool.maxActive=10
#db.pool.maxIdle=10

In:
db.type=mysql
db.url=jdbc:mysql://localhost/scadabr
db.username=scadabr
db.password=scadabr
db.pool.maxActive=10
db.pool.maxIdle=10

Se comentează „db.derby” și „convert.db” adăugând „#” în față

Se schimba:
db.type=derby
db.url=~/../../bin/scadabrDB
db.username=
db.password=

convert.db.type=
convert.db.url=
convert.db.username=
convert.db.password=

In:
#db.type=derby
#db.url=~/../../b in/scadabrDB

34
#db.username=
#db.password=

#convert.db.type=
#convert.db.url=
#convert.db.username=
#convert.db.password=
Se salvează fișierul și apăsând „Ctrl+X” și apăsând „Y”
Se editează fișierul de creare a tabelelor
sudo nano /var/lib/tomcat8/webapps/ScadaBR/WEB -INF/db/createTables -mysql.sql
Se înlocuiește „type=InnoDB;” în „engine=InnoDB;”
Se apasă „Ctrl+ \” se scrie „type=InnoDB;” apoi se scrie „engine=InnoDB;” apoi se apasă „A”, apoi
se salvează.
Se pornește tomcat8.
sudo service tomcat8 start
In browser se accesează: http://localhost:8080/ScadaBR , utilizator: „admin” și parola: „admin”

Bibliografie:
https://www.openplcproject.com/reference -installing -scadabr
http://forum.scadabr.com.br/t/scadabr -install -guide -for-a-fresh -install -of-ubuntu -64bit -server -headless –
version -16-04-3-using -mariadb -mysql -as-the-database -also-works -on-raspberry -pi-3/1543

4.1.3. Setarea primului proiect și rularea lui pe OpenPLC

Acest pas este comun pentru ambele platforme și de acuma se va face configurarea softurilor
instalate și generarea programului pentru a putea pune în funcțiune sistemul.
Librăria OpenPLC are nevoie de un fișier cu extensia .st care se va genera din OpenPLC Editor.

Pentru realizarea programului este nevoie de un proiect șablon care se poate descarcă direct d e aici:
https://www.openplcproject.com/getting -started -windows , ultimul link, proiectul „Hello World” sau
recomandat e să se seteze manual.

35
După deschiderea „OpenPLC Editor” se va crea un proiect nou, dând click pe File -> New, un
dialog va apărea unde se va salva, se alege un folder, atenție, directorul trebuie să fie gol.
Odată selectata locația, aplicația va crea proiectul cu setările și configurațiile implicite ș i apoi se va
deschide un dialog nou cerând crearea unui „POU”. POU vine de la „Program Organization Unit”
care este folosit pentru stocarea codului scris în proiect. Sunt 3 tipuri de „POU” care se pot crea:
1. Program – codul aplicației combinând i ntrările, ieșirile , funcțiile și funcțiile bloc
2. Function (funcție) – cod reutilizabil care returnează o valoare
3. Function Block (funcție bloc) – cod reutilizabili care își păstrează starea

Se va crea doar Program POU în limbajul Ladder Diagram (LD). Atenție numele nu trebuie să
conțină spatii sau caractere speciale. (FigXXXX)
OpenPLC Editor creează automat o configurație, o resursă, o sarcină și o instanță. Aceste elemente
spun OpenPLC ce să facă cu programul (adică când să se apeleze o funcție, cum să se utilizeze
ciclic, etc.). Se poate edita aceste elemente făcând dublu clic pe Res0 din panoul din partea stângă.

Fig. X
Fereastra principală va afișa un câmp de intrare variabilă globală î n partea de sus (care va permite
să se creeze variabile globale pentru programul ), o fereastră „Tasks” și o fereastră „Instances”. Se
poate schimba Intervalul pentru sarcina în funcție de hardware. Programele PLC sunt ciclice, ceea

36
ce înseamnă că ele înce p de la prima instrucțiune și se termină cu ultima instrucțiune, se așteaptă un
pic și apoi se reia din nou de la prima la ultima instruire. Intervalul de sarcină înseamnă cât de des
se va repeta ciclul programului. Valoarea implicită este de 20ms, ceea ce înseamnă că programul va
fi executat o dată la fiecare 20ms. Un număr sigur pentru toate platformele este 50ms.

Se declara portul D13 care are legat un led pe placa Arduino, pentru test.
Realizam un program simplu și declarăm OUT_D13 ca variabila exter nă

Se salvează și se compilează programul dând clic pe săgeata portocalie. O fereastră va apare unde
se alege locația de salvare a fișierului .st
Se deschide un browser și se accesează interfața web OpenPLC Runtime cum s -a explicat la cap
XXXX și se intra pe meniul “Programs” și la secț iunea „Upload Program” se selectează fișierul
generat anterior și se apăsa butonul „Upload Program”, apoi apare un formular unde se scrie un
nume și o descriere(opțional) și se apasă pe butonul „Upload Program”. In momentul acesta PLC
este activ și program ul rulează. Pe placa Arduino ar trebui să se vadă LED -ul aprins.

37

4.1.4. Configurare ScadaB R

În acest moment PLC este funcțional cu un program în rulare și o variabila.
Se va conecta Aplicația OpenPLC la ScadaBR prin intermediul protocolului de comunicație
ModBus TCP/IP.
Se deschide un browser și se accesează adresa la ScadaBR, explicat în cap. XXXX.
După ce s -a realizat autentificarea apare avem în partea de sus un meniu o serie de iconițe, se alege
iconița car e are numele „Data Sources”.Aici se alege ModBus IP și se dă click pe iconiță conform
Fig. xx

Aici apare un alt formular unde se completează următoarele date:
Name: ArdUnoMod
Update Period: 50ms
Host : 127.0.0.1 (IP unde rulează OpenPLC în cazul în care rulează pe alt PC)
Port: 502

38

Conform harta Mod implementata în cazul de față și explicata în capitolul XXXX
Porturile digital de ieșire se reșapează la portul 800
Astfel %QX100.0 devine Coil Status 8 00 și %IX100.0 devine Input Status 800

In acest caz pentru programul test %QX101.1 va fi 809.
Pentru un test rapid se deschide secțiunea „Modbus read data” și se selectează
Register Range: Coil Status
Offset: 800

39

După cum se observa adresa 809 are valoarea „true” după cum s -a setat în program.
Acum ca PLC este funcțional trebuie să se salveze configurația apăsând pe butonul Save.
Mai trebuie să se adauge aceasta adresa ca punct de observație. Se face prin formularul de mai jos la
secțiunea „Point lo cator test” unde se completează următoarele date:
Register range: Coil Status
Offset: 809

Apare mai jos încă o secțiune unde se completează următoarele date:
Name: OUT_D13
Register range: Coil Status
Offset: 809

40

Se apasă butonul cu icoana save. Punctul va apare ca mai jos. Acum trebuie activat apăsând pe
icoana din coloana „Status” și icoana se face verde.

Trebuie de asemenea să se activeze și Sursa de date apăsând pe iconiță să se facă verde.

In momentul de față punctul este adăugat și este monitorizat de SCADA.
Se selectează meniul „Watch List” dând click pe prima iconița din meniu.
Aici în stânga se vede ca apare sursa și punctul adăugat. Se apasă pe săgeata dreapta iar punctul va
apare în partea dreapta unde pu tem monitoriza starea portului.

Asemănător se procedează pentru adăugarea unui port de intrare cu diferența ca în loc de Coil
Status va fi Input Status.

Setarea exacta cu maparea porturilor în ScadaBR se va face în capitolul 4.3 după ce este prezentat
programul.

41

4.1.5. Setare EasyPort și EasyVeep

Ultima fază este conectarea procesului la „PLC”. Pentru acesta trebuie să se seteze modulul și
programul pentru simularea procesului. Programul EasyVeep este compatibil doar cu sistemul de
operare Windows.
Pașii de setare sunt următorii :
1. Se conectează EasyPort USB la o sursă de alimentare de 24 V cc
2. Se pornește sursa de alimentare pentru Easy Port USB.
"LED -ul de eroare roșu se aprinde pentru scurt timp apoi se oprește din nou în timpul test de
pornire.
"LED -ul de stare verde clipește la o frecvență de 1 Hz. Aceasta înseamnă că EasyPort USB nu
comunică încă.
3. După terminarea testului de porni re, EasyPort USB este gata pentru funcționare și așteaptă să fie
inițializat de PC. Adresa selectat ă cu ajutorul butoanelor este folosit ă.
4. Se verifică adresa EasyPort USB activând modul de setare a adresei prin apăsarea ambelor
butoane de defilare simul tan. Se selectează o adresă în intervalul 1 … 4 cu butoanele de defilare. Se
iasă din modul de setare a adresei apăsând simultan ambele butoane de defilare.
5. Urmează instalarea driverelor și programelor necesare. Atenție nu se introduce cablul USB
înaintea instalări driverelor și nu se instalează driverul USB rulând o actualizare Windows, în cazul
în care această opțiune apare pe ecran, se dă clic pe Nu.
6. Se introduce CD de instalare primit împreună cu modulul și se instalează următoarele:
EasyVeep 2, USB driver for EasyPort, EasyPort ActiveX Control, OPC server EzOPC.
7. Se introduce cablul USB, sistemul de operare ar trebui să detecteze dispozitivul și să seteze
portul.
8. Se deschide programul EasyVeep 2, la „Interface of communication” se selectează „EasyPort
USB/D16/DA8” și daca driverul a fost setat și cablul introdus la „Communication Port” apare
„EasyPort USB – COMXX”.
Se dă „Next ”
9. Pentru simulare am ales programul „Bottling Wine”, select ăm acest program din lista.
10. Se apasă pe tab-ul „Conn.” Si aici sunt afișate conexiunile senzorilor și elementelor de execuție
EasyVeep prin EasyPort către PLC și culorile la fire.
11. Se apasă pe tab -ul „Display” și aici sunt doua moduri.
În modul "Afișaj", se poate simula modelul acționând manual ieșirile dând click pe butoanele din
partea dreaptă.

42
Daca se apasă pe butonul „Emulate” se trece pe modul simulare cu EasyPort. In acest mod ieșirile
nu sunt comutate cu mouse -ul, ci cu semnale lo gice 24 V cc de la PLC -ul existent. Se poate testa
programul care rulează pe PLC.
În orice moment se poate vedea vizual daca un port este 1 sau 0 prin indicația led -urilor de pe
EasyPort sau prin led -urile virtuale din EasyPort.

4.2. Schema electronica

Programul de simulare din EasyVeep are următoarea configurație :

43

Astfel s -a ales următoarele seturi de legături între EasyPort și Arduino respectiv elementele de
legătură: Se va folosi Port 1 de pe EasyPort . Se notează cu I – intrare și O – ieșire din EasyPort.
Atenție! Portul de intrare a EasyPort este port de ieșire din Arduino și invers.
In tabelul ______

Nr Pin Culoare fir Pin Arduino Nume var iabila Denumire
I0 gri-roz D2 fill_red Umple re vinul roșu
I1 roșu-albastru D3 fill_white Umple re vinul alb
I2 alb-verde D4 corking Punere dop pluta
I3 gri-verde D5 neck_label_red Etichetarea gâtului de vin roșu
I4 alb-galben D6 neck_label_white Etichetarea gâtului de vin alb
I5 galben -maro D7 labeling_red Etichetarea vinului roșu
I6 Alb-gri A3 labeling_white Etichetarea vinului alb
I7 gri-maro A5 conveyor Linie de producție (motor)

44
O0 alb D8 s_filling Senzor prezenta stația: Umplere
O1 maro D9 s_cork Senzor prezenta stația: Dop pluta
O2 verde D10 s_neck_label Senzor prezenta stația: eticheta gat
O3 galben D11 s_label Senzor prezenta stația: eticheta
O4 gri D12 s_dark_bottle Senzor pentru sticla întunecată
O5 roz A0 s_white_bottle Senzor pentru sticla alba
O6 albastru A1 ready Stația este gata
Tabel
Montajul experimental însoțit de legenda se afl ă în Anexa 2.
Schema electronica desfășurată cu legăturile între Arduino relee, optocuploare și EasyPort.
S-au ales să se folosească relee și optocuploare deoarece nivele de tensiune logica diferă.
Standardul XXX pentru PLC este 24V iar Arduino funcționează doar cu 5V. Astfel am folosit 7
optocuploare pentru a transforma nivelul logic a porturilor de ieșire din EasyPort în intrare pentru
Arduino și am folosit 8 relee pentru a transforma nivelul logic a porturilor de ieșire din Arduino în
intrare pentru EasyVeep .

4.3. Implementare software

Pentru implementarea programului care controlează procesul s -a ales limbajul Ladder, iar programul
este scris în aplicația OpenPLC Editor. După crearea primului proiect explicat la capitolul 4.1.3 se salvează ca
proiect nou, numit „botling_wine”.
Ca arhitectura s -a ales modelul „state machine” descris ă în capitolul 3.X pe 5 pași
Conform procesului ales s -a decis să se denumească senzorii și eleme ntele de execuție după tabelul
următor. De asemenea s -a alocat la fiecare variabil ă o adresa în memorie care corespunde unui port pe
Arduino.
Adresa Adresa Modbus Pin Arduino Nume var Denumire
%QX100.0 800 D2 fill_red Umpleți vinul roșu
%QX100.1 801 D3 fill_white Umpleți vinul alb
%QX100.2 802 D4 corking Punere dop pluta
%QX100.3 803 D5 neck_label_red Etichetarea gâtului de vin roșu
%QX100.4 804 D6 neck_label_white Etichetarea gâtului de vin alb
%QX100.5 805 D7 labeling_ red Etichetarea vinului roșu
%QX100.6 806 A3 labeling_white Etichetarea vinului alb
%QX10 1.0 808 A5 conveyor Linie de producție (motor)
%IX100.0 800 D8 s_filling Senzor prezenta stația: Umplere

45
%IX100.1 801 D9 s_cork Senzor prezenta stația: Dop pluta
%IX100.2 802 D10 s_neck_label Senzor prezenta stația: eticheta gat
%IX100.3 803 D11 s_label Senzor prezenta stația: eticheta
%IX100.4 804 D12 s_dark_bottle Senzor pentru sticla întunecată
%IX100.5 805 A0 s_white_bottle Senzor pentru sticla alba
%IX100.6 806 A1 ready Stația este gata
Tab

Mai jos este descrisa logica programului în funcție de diagrama de stare din cap XXXX , fig. xXXX printr-o
diagrama (state machine) Grafcet.

46

47
Pasul1a: Decalarea porturilor de intrare/ieșire în Res0 ( tab )
# Name Class Type Location Documentation
1 fill_red Global BOOL %QX100.0 OUT_D2
2 fill_white Global BOOL %QX100.1 OUT_D3
3 corking Global BOOL %QX100.2 OUT_D4
4 neck_label_white Global BOOL %QX100.3 OUT_D5
5 neck_label_dark Global BOOL %QX100.4 OUT_D6
6 labeling_white Global BOOL %QX100.5 OUT_D7
7 labeling_dark Global BOOL %QX100.6 OUT_A3
8 conveyor Global BOOL %QX10 1.0 OUT_A 5
9 s_filling Global BOOL %IX100.0 IN_D8
10 s_cork Global BOOL %IX100.1 IN_D 9
11 s_neck_label Global BOOL %IX100.2 IN_D 10
12 s_label Global BOOL %IX100.3 IN_D 11
13 s_white_bottle Global BOOL %IX100.4 IN_D 12
14 s_dark_bottle Global BOOL %IX100.5 IN_A0
15 ready Global BOOL %IX100.6 IN_A 1

Tabel Declar area porturilor de intrare/ieșire în Res0

Pasul 1.b Variabile declarate în Res0 se declar ă și în program0 ca variabile externe cu numele definite mai
sus. În plus p entru fiecare stare se declar ă o variabila și pentru fiecare tranziție se declar ă o variabil ă
conform diagramei din Fig.

# Name Class Type Initial value Documentation
1 start Local BOOL 1
2 fill_red External BOOL OUT_D2
3 fill_white External BOOL OUT_D3
4 corking External BOOL OUT_D4
5 neck_label_white External BOOL OUT_D5
6 neck_label_dark External BOOL OUT_D6
7 labeling_white External BOOL OUT_D7
8 labeling_dark External BOOL OUT_A3
9 conveyor External BOOL OUT_A 5

48
10 s_filling External BOOL IN_D8
11 s_cork External BOOL IN_D 9
12 s_neck_label External BOOL IN_D 10
13 s_label External BOOL IN_D 11
14 s_white_bottle External BOOL IN_D 12
15 s_dark_bottle External BOOL IN_A0
16 ready External BOOL IN_A 1
17 S0 Local BOOL State 0
18 S1 Local BOOL State 1
19 S2 Local BOOL State 2
20 S3 Local BOOL State 3
21 S4 Local BOOL State 4
22 Tr01 Local BOOL Tr S0 -> S1
23 Tr02 Local BOOL Tr S0 -> S2
24 Tr03 Local BOOL Tr S0 -> S3
25 Tr04 Local BOOL Tr S0 -> S4
26 Tr10 Local BOOL Tr S1 -> S0
27 Tr20 Local BOOL Tr S2 -> S0
28 Tr30 Local BOOL Tr S3 -> S0
29 Tr40 Local BOOL Tr S4 -> S0

Tabel
Pasul 2: Inițializare
Se inițializează toate variabilele:

Exemplu de cod:

49

Pasul 3: Depășire condiții
În acest pas fiind într -o anumita tranziție se face trecea într -o alta stare la validarea condiției de trecere. Se
resetează celelalte tranziții.
Ex de cod:

50

Pasul 4: Porniri Opriri
În acest pas se executa starea efectiv, adică se setează/resetează poate variabilele conform stării în care se
află.
Ex de cod ( fig ):

Figura

Pasul 5 – validare
In acest pas se validează starea, se resetează acesta și se trece în tranziția aferenta. Se resetează celelalte
tranziții.
Exemplu de cod :

51

Codul integral cu programul se găsește în Anexa 1
După ce s-a realizat programul acesta trebuie verificat să nu aibă erori și se compilează într-un fișier cu
extensia .st și se va urca în OpenPLC Runtime cum s -a explicat în capitolul XXXX .
În acest moment este nevoie să se seteze punctele de observație în ScadaBR . După cum a fost explicat în
capitolul XXX , se merge la „Data Sources” și se adaugă punctele conform tab

52

Tabel Adăugare punctele de observație
Se adaugă punctele în „Watch List” conform fig

53

Figura Adăugare puncte în Watch List
Daca se dorește adăugarea de variabile locale se procedează la fel.

54
5. Concluzii

Principalul obiectiv al acestei lucrări este realizarea unui control automat a proceselor simulate
cu OpenPLC și demonstrarea c ă folosind acest sistem este suficient pentru a învăța , studia și chiar
realiza o automatizare fără a cheltui o suma uriașă pe PL C.
Pentru realizarea proiectului de dizertație au fost necesare studii aprofundate în automate
programabile, limbajul ladder, protocolul Modbus și SCADA .
Avantaje
• Cost redus prin folosirea unor resurse deja prezente (PC) și a unor placi ieftine (5 -20 Euro)
în comparație cu un PLC industrial (1000 -5000 euro)
• Simularea controlului fără un PLC real
• Posibilitatea a de rula pe o varietate de placi de dezvoltare
• Posibilitate de a învăța ladder și alte limbaje specifice automatelor programabile fără un
PLC fizic
• Posibilitate de a realiza programe în scopul studiului și cercetări aprofundate a modului de
funcționare a automatelor programabile.
• Rulează pe mai multe sisteme de operare (cross -platform)
• Softurile nu au costuri de licențiere

Dezavantaje
• Dificultatea se tări softurilor
• Probleme de stabilitate softuri
• Facilități lips ă ( o metoda de a putea face depanare a programului în timp real ).
• Multe softuri independente care trebuie instalate, setate .
• Învățarea softurilor necesită o perioada mai lunga de învățare a f olosirii acestora .
• Lipsa de d urabilitate, siguranța și stabilitatea hardware -ului (PLC industriale sunt concepute
să ruleze non stop în condiții variate de temperatura și umiditate, rezistente la interferente și
factori extern, De asemenea rezistente la defecte ca supratensiune și scurt.)

55
6. Anexe

6.1. Anexa 1 – programul Ladder

56

57

58

59

60

61

62

63
6.2. Anexa 2 – Montajul Experimental

64
7. Bibliografie

Similar Posts