SISTEME AUTOMATE DE COMANDA A PROCESELOR INDUSTRIALE [630624]

UNIVERSITATEA DE MEDICINĂ, FARMACIE, ȘTIINȚE ȘI TEHNOLOGIE DIN
TÂRGU -MUREȘ
FACULTATEA DE INGINERIE
PROGRAMUL DE STUDIU MASTER :
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 -Vasile
Masterand: [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

5
Cuprins
1. Introducere ………………………….. ………………………….. ………………………….. ………………………….. …………… 7
1.1. Tema proiectului ………………………….. ………………………….. ………………………….. ………………………… 7
1.2. Sisteme moderne de automatizare ………………………….. ………………………….. ………………………….. . 7
1.2.1. Piramida de Automatizare ………………………….. ………………………….. ………………………….. ………. 7
1.2.2. Protocoale ………………………….. ………………………….. ………………………….. ………………………….. ….. 8
1.2.3. Automate Programabile (PLC) ………………………….. ………………………….. ………………………….. .. 9
1.2.4. SCADA HMI ………………………….. ………………………….. ………………………….. ………………………… 12
1.3. Structura lucrării ………………………….. ………………………….. ………………………….. ……………………… 13
2. Sistemul OpenPLC ………………………….. ………………………….. ………………………….. ………………………….. 14
2.1. OpenPLC ………………………….. ………………………….. ………………………….. ………………………….. …….. 14
2.1.1. Arhitectura OpenPLC ………………………….. ………………………….. ………………………….. …………… 14
2.1.2. OpenPLC Runtime ………………………….. ………………………….. ………………………….. ……………….. 16
2.1.3. OpenPLC Editor ………………………….. ………………………….. ………………………….. …………………… 22
2.1.4. Harta Modbus ………………………….. ………………………….. ………………………….. ………………………. 23
2.2. ScadaBR ………………………….. ………………………….. ………………………….. ………………………….. ……… 24
2.3. Sistemul Festo: EasyVeep și EasyPort ………………………….. ………………………….. ……………………. 26
3. Proiectarea Sistemului ………………………….. ………………………….. ………………………….. …………………….. 31
3.1. Specificații funcționale ………………………….. ………………………….. ………………………….. ……………… 31
3.2. Arhitectura propusă ………………………….. ………………………….. ………………………….. …………………. 31
3.3. Resurse necesare ………………………….. ………………………….. ………………………….. ………………………. 33
3.3.1. Hardw are ………………………….. ………………………….. ………………………….. ………………………….. …. 33
3.3.2. Software ………………………….. ………………………….. ………………………….. ………………………….. …… 36
3.4. Simularea de proces aleasă ………………………….. ………………………….. ………………………….. ……….. 37
4. Implementarea sistemului ………………………….. ………………………….. ………………………….. ………………… 41
4.1. Configurare sistem de calcul ………………………….. ………………………….. ………………………….. …….. 41
4.1.1. Setare pe Windows ………………………….. ………………………….. ………………………….. ……………….. 41
4.1.1.1. OpenPLC runtime și OpenPLC editor ………………………….. ………………………….. ……………. 41
4.1.1.2. Setare dispozitiv sclav I/O Arduino Uno ………………………….. ………………………….. …………. 43
4.1.1.3. Instalare ScadaBR ………………………….. ………………………….. ………………………….. …………….. 45
4.1.2. Setare pentru Linux ………………………….. ………………………….. ………………………….. ………………. 47
4.1.2.1. OpenPLC runtime ………………………….. ………………………….. ………………………….. …………….. 47
4.1.2.2. Setare dispozitiv sclav I/O Arduino Uno ………………………….. ………………………….. …………. 47
4.1.2.3. Instalare OpenPLC editor ………………………….. ………………………….. ………………………….. …. 47
4.1.2.4. Instalare ScadaBR nativ ………………………….. ………………………….. ………………………….. ……. 48
4.1.3. Setarea primului proiect și rularea lui pe OpenPLC ………………………….. ……………………….. 51

6
4.1.4. Configurare ScadaBR ………………………….. ………………………….. ………………………….. …………… 53
4.1.5. Setare EasyPort și EasyVeep ………………………….. ………………………….. ………………………….. …. 57
4.2. Schema electronica ………………………….. ………………………….. ………………………….. …………………… 58
4.3. Implementare software ………………………….. ………………………….. ………………………….. …………….. 61
5. Concluzii ………………………….. ………………………….. ………………………….. ………………………….. …………….. 70
6. Anexe ………………………….. ………………………….. ………………………….. ………………………….. …………………. 71
6.1. Anexa 1 – Programul Ladder ………………………….. ………………………….. ………………………….. ……. 71
6.2. Anexa 2 – Montajul Experimental ………………………….. ………………………….. …………………………. 79
7. Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. …………. 80

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 nici un student, nic i 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. Sisteme 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.
Fig.1 prezintă piramida de automatizare conform standard ISA-95, standard internațional pentru
un model de arhitectura de integrare a sisteme lor de control destinate mediului industrial .

Fig.1 Piramida de automatizare conform Standard ISA 95 [8]

8
Piramida de automatizare ilustrează nivelurile de automatizare într -o fabrică sau în industrie
și are următoarele nivele :
•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 fizic 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 mate rii
prime sau planurile de expediere.
•Nivel 4 sau "nivel de management" corespunde sistemul de management integrat 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 elemente de execuție , senzori și PLC), în timp ce
nivelul superior se referă la resursa întreprinderii sisteme de planificare pentr u managementul
afacerii (adică rețeaua SCADA, MES și ERP).

1.2.2. Protocoale

Orice întreprindere are nevoie de sisteme pentru a gestiona fluxul de informații din cadrul
fiecărui nivel al piramidei de automatizare, precum și între nivele . Sistemele moderne de
conducere ce asigură interconectarea echipamentelor de automatizare ale tuturor nivelurilor
ierarhice reprezintă rețeaua industrială de comunicație .
Modelel e de referinț ă pentru stabilirea nivelelor arhitecturale ale modelului de comunicație
industrial ă sunt modelul ISO -OSI (International Standardization Organization -Open Systems
Interconnection) și TCP/IP (Transmission Control Protocol/Internet Protocol).[28]
„Modelul OSI este e o stiva de protocoale de comunicație ierarhic„ [26] cuprinde șapte nivele:
aplicație , prezentare , sesiune, transport, rețea, legătură de date, fizic , fiecare ilustrând o funcție
particulară a rețelei. [26] Comunicația pe verticală intre nivele respectă regulile interfeței
respective, în timp ce comunicația pe orizontală protocolul nivelului respectiv. [26]

9
Modelul TCP/IP este modelul real și conține doar patru nivele: aplicație, transport, internet,
gazda rețea. TCP/IP este un set de protocoale ce stau la baza întregii infrastructuri Internet, dar
și a majorității rețelelor locale.
Cele mai cunoscute și des utilizate protocoale de comunicație folosite în rețele din domeniul
industrial sunt: Industrial Ethernet, ProfiNET , PROFIBUS, FieldBUS , HART, ModBUS,
DNP3 [37].
Industrial Ethernet ( IE ) a rezultat din utilizarea standardul Ethernet într-un mediu industrial.
Protocoalele pentru IE includ EtherCAT (Ethernet for Control Automation Technology) ,
EtherNet/IP, ProfiNET, Modbus TCP, etc. [18] Ethernet este protocolul de bază pentru rețele
la nivel fizic (cablaje, interfețe)
ProfiNET (Process Field Net) – un standard pentru rețelele informatice de automatizare
industrială bazate pe protocoalele TCP/IP și Ethernet [21]
PROFIBUS (Process Field Bus) este un standard pentru comunicarea cu FieldBus în tehnologia
automatizării utilizat de Siemens. [20]
FieldBUS – este numele unei familii de protocoale de rețele industriale de calcul folosite pentru
control distribuit în timp real, standardizate ca IEC 61158. [17]
HART (Highway Addressable Remote Transducer Protocol) – protocol de comunicare de tip
Fieldbus, destinat comunicațiilor pentru automatizări industriale [37] .
DNP3 (Distributed Network Protocol) este un set de protocoale de comunicații utilizate între
componentele sistemelor de automatizare a proceselor SCADA .[16]
ModBUS – este un protocol public de comunicare serială cablată destinat PLC -urilor publicat
inițial de Modicon (acum Schneider Electric) . Este un protocol de comunicație situat pe nivelul
7 în referința OSI, este bazat pe o arhitectura master/slave sau client/server și a devenit un
standard de comunicatie în industrie fiind cel mai folosit la conectarea tuturor dispozitivelor
industriale. Versiuni ale protocolului Modbus pentru portul serial și pentru Ethernet sunt [19]:
•Modbus RTU este utilizat în comunicarea serială și utilizează o reprezentare binară a datelor
pentru comunicarea prin protocol.
•Modbus ASCII este utilizat în comunicarea serială și utilizează caracterele ASCII pentru
comunicarea prin protocol.
•Modbus TCP / IP sau Modbus TCP este o variantă Modbus pentru Ethernet utilizată pentru
comunicații prin rețele TCP/IP, conectându -se la portul 5 02.

1.2.3. Automate Programabile (PLC)
[5][6][7]

10

„Confo rm standardului IEC 61131 -1, termenul Automat Prog ramabil Logic (en. PLC
– Progr ammable Logic Controller) este definit du pă cum urmează:” [5]
„Un sistem electronic digital, proiectat pentru uz în mediu industrial, care utilizează memorie
programabilă pentru stocarea instru cțiunilor utilizatorului în vederea implementăr ii
de funcții specif ice cum ar fi: funcțiile logice, secvențierile, temporiz ările, con torizări și
funcțiile aritmetice, pentru a controla prin intermedi ul intrărilor și ieșirilor digitale sau
analogice diferite tipuri de utila je sau procese.” [5]
În Fig. 1.2 se prezintă arhitectura genera lă a auto matului programabil.

Fig. 1.2. Arhitectura generală a auto matului progra mabil [5]

Componentele de baza ale automatului programabil sunt :
UPC unitatea centrală de prelucrare (Central Processing Unit) este partea PLC care
prelucrează informațiile primite de la modulele de intrare, în conformitate cu programul de
control stocat în memoria PLC -ului și trimite impulsuri la modulele de ieșire .
Memoria este formata din memoria ROM (Read Only Memo ry) pentru sistem, RAM
(Random Access Memory) pentru program; RAM (Random Access Memory) pentru

11
date și EEPROM (Elect ricaly Erasable Programmable Read Only Memory) p entru păstrarea
permanen tă a progra mului și a anumitor date .
Sistemul de intrare ieșire sunt dispozitive prin care automatul programabil comunica cu
senzori și sistemul de acționare sau instalația pe care trebuie să o comande .
Magistralele sunt magistrale de date , magistrale de adrese , magistrale de control și magistrale
de intrare ieșire .
Sistemele cu automate progra mabile sunt de dou ă tipuri : sisteme compa cte și siste me
modulare. Cele mai cunoscute firme producă toare de automate programabile sunt Mitsubishi
Electric, Siemens, Moeller, Schneider, Telemecanique, Omron, General Electric. [32]
Firma Siemens produce linia de automate programabile SIMATIC , iar software -ul de
programare SIMATIC STEP7 le permite utilizatorilor să configureze, să programeze, să
testeze și să diagnosticheze controlerele [25]. Firma Rockwell Automation din USA produce
linia de automate programabile Allen -Bradley din familia PLC-5. Programarea automatelor
programabile Allen -Bradley se face cu software -ul de programare RSLogix 5000 și mai nou
Studio 5000. [25]
Mitsubishi a dezvoltat pachetul de programe MEL SOFT, iar aplicația GX Deve loper
permite progr amarea tutu ror automatelor progra mabile MELSEC . [5]
OMRON furnizează pachetul CX-One pentru automatele progra mabile SYSMAC .
Schneider Electric pune la dispo ziție pachetul ProWORX 32 pentru gama de aut omate
progr amabile Modicon produse de divizia T elemecanique. [5]
Dezvo ltarea PLC s-a realizat atât in hardware cât și în sof tware. Standardizarea PLC este
realizat ă prin Standardul internațional IEC 61131 care se aplică PLC și perifericelor asociate.
Standardul are 8 părți dar cel mai important este IEC 61131 -3 care se ocupă de aspectul de
programare al PLC , definind blocurile de programare logică și limbajele de programare.
Standardul IEC 61131 -3 definește termenul POU (Program Organization Unit) ce reprezintă
unitatea de organizare a programului care este folosita pentru stoca rea codului scris .
Sunt 3 tipuri de POU care se pot crea: [6][7]
•Program (PROG ) codul aplicației combinând intrările, ieșirile , funcțiile și funcțiile bloc
•Function (FUN) bloc cu valoarea funcției, variabile de intrare și ieșire
•Function Block (FB) bloc cu variabile de intrare și de ieșire
Standardul IEC 61131 -3 definește 5 limbaje de programare utilizabile pentru programarea
dispozitivelor de tip PLC: [6][7]
•Limbaje text : ST ( Structured Text ) și IL ( Instruction List)
•Limbaje grafice :LD ( Ladder Diagram) , FBD ( Function Block Diagram) , SFC ( Sequential
Function Chart )]

12
Fiecare POU poate fi programat în toate cele 5 limbaje de programare IEC61131 -3.

1.2.4. SCADA HMI
[4]

„SCADA (Supervisory Control and Data Acquisition ) este o arhitectură a sistemului de
control care utilizează computere, rețea de comunicații de date și interfețe grafice pentru
utilizatori pentru managementul de supraveghere la nivel înalt, dar utilizează și alte dispozitive
periferice, cum ar fi contr olerul logic programabil (PLC)”. [22]
Funcțiile sistemului SCADA sunt: supraveghere, control , comandă a procesului condus ,
prezentarea datelor în timp real pentru monitorizarea proceselor , generarea rapoartelor și
planificarea sarcinilor, preluarea informațiilor și trimiterea la distanță a parametrilor și a
valorilor de referință , generarea de diagrame și rapoarte cu date istorice , furnizarea de interfețe
grafice care prezintă starea actuală a procesului , detectarea alarmei etc. Sistemele SCADA
servesc ca o interfață între un operator și procesele conduse , mașinile industriale, automatele și
senzorii.
Componentele sistemului SCADA sunt: Stația Master și HMI Computer(e) , mai multe RTU
sau PLC, infrastructura de comunicație. [4]
Stația Master și HMI (Human Machine Interface) „se refera la severele și software -ul
responsabil de comunicarea cu echipamentele amplasate la distan ță (RTU, PLC, etc) și apoi cu
software -ul HMI care rulează pe stațiile de lucru din camera de control ”. [4]
RTU (Remote Terminal Unit) „o unitate terminală la distanță (RTU) este un dispozitiv
electronic cu microprocesor care interacționează cu dispozitive fizice cu un sistem de control
distribuit sau cu un sistem SCADA (control de supraveghere și achiziție de date) prin
transmiterea datelor de telemetrie către un sistem master și prin utilizarea mesajelor de la
sistemul de control principal pentru controlul obiectelor conectate.” [27]
RTU colectează date de la PLC -uri, le transmite la distanță către serverul SCADA și trimite
comenzile primite de la server SCADA către echipamentele de execuție .
Infrastructura de comunicație conectează sistemul informatic de supraveghere la RTU -uri și
PLC-uri și utilizează protocoale industriale de producător ca Modbus și protocoalele standard
IEC 60870 -5-101 sau 104, Profibus și DNP3. [4] Comunicația între elementele sistemelor
SCADA se face după metoda master -slave.
Arhitectura hardware a unui sistem SCADA se prezintă în fig. 1.3 .

13

Fig. 1.3 Arhitectura hardware SCADA [14]

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 prezint ă introducerea în sisteme le moderne de automatizare acoperind piramida
de automatizare, PLC, producători, tipuri, limbaje de programare, SCADA și standardul
IEC61131, de asemenea se prezint ă tema proiectului, scopul și structura lucrării.
In capitolul 2 se prezint ă în detaliu sistemul OpenPL C, toate software necesare și rolul lor. Se
prezint ă OpenPLC runtime, Editor și ScadaBR , și sistemul Festo .
In capitolul 3 se prezint ă proiectarea sistemului , specificațiile funcționale, arhitectura propusă
cu schema bloc a sistemului, de asemenea se prezint ă resursele necesare hardware și software
și rolul lor. Se prezintă și simularea de proces aleas ă cu explicarea procesului, diagrama SFC.
In capitolul 4 se prezint ă implementarea propriu -zisă a procesului începând cu instalarea și
configurarea software necesare, implementarea hardware, schema electronic ă și implementarea
software cu diagrame Grafcet și exemple de cod.
In capitolul 5 se prezint ă concluziile, sumariza scopul proiectului și se trag concluziile ,
avantajele și dezavantajele sistemului OpenPLC
In capitolul 6 sunt atașate anexele cu exemple de cod și poza standului .

14
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.
Fig 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 PL C 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 programului încărcat pe
serverul OpenPLC într -un program C echivalent care conține numai logica creată de utilizator.
OpenPLC oferă fișiere suplimentare C care adaugă suport pentru conectivitate în rețea, t abele

15
de imagini interne, interfață hardware (pentru 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 layer (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 protocoal ele 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, ES P8266 ș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 s crierea 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 real 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 care 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 sepa rat, schimbarea
politicii de planificare pentru thread -ul principal 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 proc es care se află în
desfășurare în acest moment. În plus, procesele 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

16
OpenPLC pe nucleul 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]
• 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
[23][31][35]

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 Linux 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 sistem incorporate OpenPLC [35]

17

In continuare prezentăm cele mai importante platforme de sistem încorporate .
• OpenPLC pe Raspberry PI
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 e xtensie 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 .

18

Fig.2.6 Maparea OpenPLC I / O pentru UniPi i ndustrial [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]

Dispozitive SLAVE [35]
Dispozitivele slave utilizate de OpenPLC sunt în fig.2.8

Fig.2.8 Dispozitivele slave utilizate de OpenPLC [35]

19
În continuare prezent ăm cele mai importante platforme de sistem încorporate .
• OpenPLC și Arduino[35]
PC Windows poate rula OpenPLC Runtime și acționează ca un software PLC care controlează
plăcile 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 reprezentative 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]

20
• OpenPLC și 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]

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

• 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 OpenPL C I / O pentru ESP8266 [35]

22
2.1.3. OpenPLC Editor
[1] [2] [15][24][33]

OpenPLC Editor este un software pentru crearea de programe PLC pentru OpenPLC
Runtime. OpenPLC Editor acceptă toate cele cinci limbaje definite în standardul IEC61131 -3:
Ladder Diagram (LD), Function Block Diagram (FBD), Instruction List (IL), Structured Text
(ST), and Sequential Function Chart (SFC).
Acest standard definește limbajele de programa re [24]:
– IL ( Instruction List ) este un limbaj de programare textual, similar cu asamblarea.
– ST (Structured Text) este un limbaj de programare textual, similar cu Pascal.
– FBD (Function Block Diagram) este un limbaj de programare grafi c, asemănător cu o
diagramă a circuitelor logice (contoare, AND / OR / XOR / porți logice, temporizatoare, …).
– LD ( Ladder Diagram) este un limbaj de programare grafic, similar cu o diagramă electrică
bazată pe relee.
– SFC ( Sequential Funct ion Chart) este un limbaj de programare grafic, care definește o
mașină de stare, bazată în mare măsură pe Grafcet.
OpenPLC Editor este creat pe baza PLCOpen Editor proiect Beremiz, personalizat pentru a
funcționa cu OpenPLC Runtime. Beremiz este un software „open source” mediu integrat de
dezvoltare pentru automatizare în conformitate cu standardul IEC61131 -3. Beremiz a fost
dezvoltat la LoLiTech în Saint -Dé-des-Vosges, Franța și la Universitatea din Porto, Portugalia
de Edouard Tisserant, L aurent Bessard, and Mário de Sousa. [3][15]
Proiectul OpenPLC utilizeaz ă din p roiectul Beremiz editorul PLCOpen și MatIEC .
Editorul PLCOpen este un software‚ „open source” care permite scrierea de programe PLC în
conformitate cu IEC -61131 -3 și conform PLCopen XML . Comitetul TC 6 definește gramatica
XML pentru descrierea programelor și proiectelor IEC 61131 -3 în XML. [6][7] Toate
programele scrise în acest mediu sunt salvate în fișiere XML, în conformitate cu această
gramatică. [1]
Interfața grafică a editorului PLCOpen permite crearea unui proiect PLC compus din mai multe
unități de organizare a programelor IEC 61131 -3 (POU ) . Fiecare POU poate fi programat în
toate cele 5 limbaje de programare IEC61131 -3 folosind editorul de limbaj corespunzător .
Editorul PLCOpen are un modul responsabil pentru a compila limbajele grafice LD, FBD și
SFC în text structurat ST. Înainte de a încărca programul pe OpenPLC, toate POU -urile din
programul PLC curent sunt compilate într -un singur program ST, indiferent de limba în care
au fost inițial scrise. OpenPLC este capabil să ruleze programe Text Structurat ST. [1]

23
Proiectul MatIEC are scop ul de a produce un compilator „open source” pentru limbajele de
programare PLC definite în standardul IEC 61131 -3. Dintre cele 5 limbaje standardul definește
reprezentările textuale pentru IL, ST și SFC.
În prezent, proiectul MatIEC generează două compilatoare : iec2c, și iec2iec. Compilator ul
acceptă aceeași intrare: un fișier text cu cod ST, IL și / sau SFC. Compilatorul iec2c generează
codul ANSI C care este echivalent cu codul IEC 61131 -3 exprimat în fișierul de intrare iar
compi latorul iec2iec generează codul IEC61131 -3 care este echivalent cu codul IEC 61131 -3
exprimat în fișierul de intrare. MatIEC compilează codul ST / IL / SFC în codul ANSI -C. [3]
Compilatorul MatIEC compilează programul PLC încărcat într -un program C echival ent.

2.1.4. Harta Modbus
[1][2][31][36]

OpenPLC acceptă protocoalele Modbus și DNP3 SCADA TCP / IP. Citirea și scrierea
cererilor din oricare dintre protocoale pot avea acces direct la toate punctele I/O fizice. Implicit,
Modbus este disponibil pe portul 502, iar DNP3 este disponibil pe portul 20.000.
OpenPLC utilizează protocolul Modbus/TCP pe ntru comunicarea SCADA. Modbus este unul
dintre protocoalele cele mai utilizate în industrie, este „open source” și fără costuri de licenț ă.
Acest lucru face OpenPLC compatibil cu aproape orice software SCADA existent.
Modbus are în principal 4 funcții, fi ecare responsabil pentru citirea sau scrierea la un anumit
I/O. Spațiul de adrese I/O din OpenPLC este mapat în spațiul de adrese Modbus .
Odată cu lansarea noii versiuni a OpenPLC locația adreselor s -a schimbat fa ță de cum este
prezentat pe site . In tab elul 2.4 este indicată locația adreselor .

Tabel 2.4 – Adrese intrare / ieșire PLC – Modbus
Tip Registru Folosire Adresa PLC Adresa
Modbus Mărime
registru Intervalul de
valori Acces
Registru bobină Ieșire
digitală %QX100.0 –
%QX199.7 800- 1599 1 octet 0 sau 1 Citire și
scriere
Registru discret
de intrare Intrare
digitală %IX100.0 –
%IX199.7 800- 1599 1 octet 0 sau 1 Numai
citire
Registru intrare Intrare
analogică %IW0 –
%IW99 0 – 1023 16 octeți 0 la 65535 Numai
citire
Registru reținere Ieșire
analogică %QW0 –
%QW99 0 – 1023 16 octeți 0 la 65535 Citire și
scriere

24
OpenPLC oferă de asemenea un spațiu de adresă separat pentru variabilele de memorie, cu
suport pentru variabilele de 16, 32 și 64 biți. Spațiul de adrese este detaliat în tabelul 2.5.

Tabel 2.5 Adrese variabile de memorie PLC -Modbus
Tip
Registru Folosire Adresa PLC Adresa
Modbus Mărime
registru Intervalul de
valori Acces
Registru
reținere Registru 16
biți general %MWO –
%MW1023 1024 –
2047 16 octeți 0 la 65,535 Citire și
scriere
Registru
reținere Registru 32
biți general %MDO –
%MD1023 2048 –
4095 32 octeți 0 la
4.294.967.295 Citire și
scriere
Registru
reținere Registru 64
biți general %MLO –
%ML1023 4096 –
8191 64 octeți 0 la
264−1 Citire și
scriere

2.2. ScadaBR
[13][29][31] [34]

ScadaBR este un software „open source”, pentru dezvoltarea aplicațiilor de
automatizare, achiziție de date, control și supraveghere care intenționează să ofere toată
funcționalitatea unui sistem SCADA tradițional care trebuie să furnizeze drivere de
comunicații, un sistem de înregistrare continuă a datelor și o interfață grafică de utilizator HMI,
monitorizând toate dispozitivele și asigurând accesul organizat la controalele și parametrii săi.
ScadaBR este o aplicație Java rulănd pe Windows, Linux ( printr -un server de aplicații Apache
Tomcat), care a fost dezvoltată de MCA Sistemas (în prezent Sensorweb) și distribuită cu
licență „open source”.[13] [29] .
Software ScadaBR servește la automatizarea proceselor de măsurare și automatizare, la
accesarea și controlarea dispozitivelor fizice, senzori, elemente d e execuție , salvarea datelor în
mod continuu într -o bază de date, vizualizarea istoricului și primirea de alarme , etc.
Programul prevede instalarea Java 6 (JDK 1.6) și Apache Tomcat 6, care permite accesul la
program ca o pagină web prin intermediul unui b rowser accesând adresa
http://localhost:8080/ScadaBR (utilizator : admin , parolă : admin ). Aplicația ScadaBR se
accesează de pe browser Firefox sau Chrome. Interfața principală ScadaBR oferă vizualizare
de variabile, grafice, statistici, configurare protocoale, alarme, construirea de reprezentări
grafice de tip HMI și un număr de opțiuni de configurare.
Meniul principal ScadaBR apare in fig .2.12

25

Fig.2.12 Meniul principal ScadaBR

Semnificația principalelor pictograme din meniul principal este :
Data sour ces
Sursele de date ( data sour ces ) sunt surse primite de sistem prin care se realizează configurația
echipamentului fizic controlat. Există protocoale de comunicare susținute de ScadaBR,
Modbus, HTTP, OPC TCP / IP, SQL etc.

Data points
Punctele de date ( data points ) reprezintă punctele de măsurare, adică variabilele.
ScadaBR suportă cinci tipuri de date:
▪ valori binare: 0 sau 1;
▪ valorile numerice reprezintă valori zecimale
▪ valori on / off / inactive / active
▪ valori alfanumerice
▪ valorile imaginilor reprezintă reprezentări binare ale datelor de imagine .

Watch list
Monitorizarea punctelor din sistem se face utilizând lista de vizionări watch list
Cu watch list se vizualizează valorile , diagramele punctelor din sistem actualizate în timp real
și diagrame ale informațiilor istorice .

Graphical views
Cu graphical views se pot crea vizualizări grafice ale punctelor din sistem actualizate în timp
real. Reprezentările grafice, cunoscute și sub denumirea de HMI, servesc ca utilizatorul să poată
monitoriza punctele de date în timp real.
Pictogramele evenimente și alarme sunt următoarele:

26
Event detectors
Compound detectors
Scheduled events
Event handler
Alarm
În ScadaBR există evenimente de sistem (inițializare de sistem, conectare utilizator, erori de
sursă de date etc.) și evenimente definite de utilizator detectoare de evenimente Event detector ,
evenimente programate Scheduled event și evenimente compuse Compound detector . Odată ce
un eveniment a fost detectat, acesta este acționat de Event handler (manipulator de evenimente)
care are un comportament definit de utilizator .
Sistemul informează utilizatorul de existent a alarmei, ori de câte ori valoarea punctului de date
scade sub limita minimă impusă.

Report
Cu rapoartele (report) utilizatorul vizualizează istoricului unei variabile prin intermediul
diagramelor cu comportamentul pe o anumită perioadă, date statistice și istoricul datelor.

În prezent, ScadaBR susține multe protocoale de comunicare SCADA, inclusiv Modbus și
DNP3.

2.3. Sistemul Festo: EasyVeep și EasyPort
[9][10]

Interfața de procesare EasyPort este utilizată pentru transmiterea bidirecțională a
semnalelor de proces între un proces de control (24 V DC) și un PC.
Interfața de procesare USB EasyPort se folosește pentru formare profesională în domenii de
automatizare și tehnologie în aplicațiile prezentate în tabelul 2.6 .

27
Tabel 2.6 Aplicații pentru interfața EasyPort USB [9]

In tabelul 2.7 sunt prezentate specificațiile tehnice pentru EasyPort USB .
Tabel 2.7 Specificații tehnice EasyPort USB [9]

28

Fig.2.13 Interfata EasyPort USB [9]

Interfața de procesare EasyPort USB este echipată în (fig 2.13):
(1) Doză sub -D pentru citirea a 4 semnale de intrare analogice și a 2 semnale de ieșire
analogice
(2) USB2.0 pentru conectarea EasyPort USB la un PC
(3) RS 232 pentru conectarea EasyPort USB la un PC
(4) Borne alimentare
(5) Buton ↑↓ buton derulare
(6) LED -ul de stare (verde) la panou LCD indicator de stare
(7) LED -ul de eroare (roșu) la panou LCD
(8) Interfețe SysLink pentru citirea a 8 semnale digitale de intrare și citirea a 8 semnale
digitale de ieșire .
(9) LED -uri galben pentru a indica starea ieșirilor digitale 16 LED
(10) LED -uri verde pentru a indica starea intrărilor digitale 16 LED
(11) Panoul LCD pentru afișarea unui semnal analogic selectat .

Interfața EasyPort USB se conectează la PC iar conectarea la echipamentul de automatizare se
face prin conectori standard SysLink. Pentru a asigura că EasyPort este adaptabil la situații

29
diferite, s -a dezvoltat software cu o interfață grafică de utilizator, prin care se pot realiza
conexiuni și controlul numeroaselor modele de procese practice.
Cu software -ul EasyPort inclus și software -ul de simulare EasyVeep, o mare varietate de
modele de procese practice pot fi controlate cu orice PLC. Modelele sunt documentate și
îndepli nesc o gamă largă de cerințe. EasyVeep este noul simulator grafic de procesare 2D
gratuit, cu numeroase exemple pentru instruire .
Comportamentul funcțional al hardware -ului de proces este înlocuit de modele de proces
emulate pe un PC care schimbă semnale le de control prin interfața de intrare/ieșire EasyPort pe
portul serial/usb al PC -ului cu un PLC ales. Acest lucru înseamnă că mediul de lucru al PLC
este identic cu cel din practica industrială până la interfața cu procesul. Caseta de simulare poate
fi folosită și pentru a testa funcțiile EasyPort.
EasyVeep oferă o vastă bibliotecă de modele de procese interesante, care imită comportamentul
funcțional al proceselor reale într -o formă foarte simplificată.
Tabel 2.8 Tabel de conexiuni port SysLink [10]

30
In tabelul 2.8 sunt conexiunile port SysLink .
Când se cablează intrările și ieșirile unui PLC, trebuie să se verifice:
• Cablurile atribuite OUTPUT -urilor EasyPort sunt conectate la intrările PLC.
• Cabluri le atribuite INPUT -urilor EasyPort sunt conectate la ieșiri ale PLC.

31
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ă luc rare 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 emulează un
proces real, Sistemul Festo: EasyVeep și EasyPor t.
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 port de intrare și ieșire.

3.2. Arhitectura propus ă

Arhitectura propusă fig.3.1 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 cap. 2.1 și cap. 1.2.3 , un PLC este
format din mai multe componente, OpenPLC emulează CPU, Memoria, memoria program,
rulând pe PC. Restul componentelor sunt acoper ite 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 operare deo arece 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 prot ocoale de comunicație, în

32
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 log ice 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 aceste semnale.

Fig.3.1 Arhitectura propusă
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
optocuploare ș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 poa te fi virtualizată sau fizică.

33
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

Pentru a seta acest sistem este nevoie de următoarele resurse hardware și software .

3.3.1. Hard ware

Resurse Hardware sunt prezentate în tabelul 3.1
Tabel 3.1 Resurse hardware
Resursa Bucăți Descriere
PC 2 Sistemul de operare
Arduino Uno 1 Placa de dezvoltare care oferă porturi intrare/ieșire
Optocuplor 24V -> 5V 2 Convertește nivelul de tensiune
Relee 8 Convertește nivelul de tensiune 5V -> 24V
Sursa de alimentare 5V 1 Alimentare componente
Sursa de alimentare 24V 1 Alimentare componente
Fire de conexiune – Conectează componentele
EasyPort 1 Model care convertește semnele fizice în virtuale
Cablu SysLink 1 Cablu cu firele cu semnale logice 0 -24V
Cablu usb 2 Se conectează la PC și EasyPort și Arduino

• Arduino Uno ( fig.3.2) [44][45]
Arduino UNO este o platformă de procesare „open -source ”, bazată pe software și hardware
flexibil și simplu de folosit. Construită într -o platformă de mici dimensiuni (6.8 cm / 5.3 cm –
în cea mai des întâlnită variantă) construită în jurul unui procesor de semnal și este capabilă de
a prelua date din mediul î nconjurător printr -o serie de senzori și de a efectua acțiuni asupra
mediului prin intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive
mecanice. Procesorul este capabil să ruleze cod scris într -un limbaj de programare care este
foarte similar cu limbajul C++. Acest microcontroler este bazat pe microprocesorul
ATmega328P, care are 14 de pini de intrare/ieșire digitali (dintre care 6 pot fi utilizați ca ieșiri

34
PWM), 6 intrări analogice, 1 port serial hardware, un oscilator cu crista l de 16 MHz, o
conexiune USB indicate in fig. 3.2 .

Fig.3.2 Arduino UNO [45]

• Optocuplor 24V -> 5V [42]

Schema electrică este prezentata în fig.3.3 și schema cu porturile de intrare ieșire este
prezentata în fig.3.4

Fig.3.3 Schema electrica optocuplor [42]

35

Fig.3.4 Porturi de intrare ieșire optocuplor [42]

Nota: logica la acest model optocuplor este inversată și este necesară ajutarea logicii din
program. 24V la intrare pe portul 1+ rezulta 0V la ieșire pe portul O1.

• Relee Module ( fig.3.5 ) [43]

Fig.3.5 Releu module [43]
Tensiune: 250VAC sau 30VDC;
Curent: 10A (MAX);
Fiecare releu este comandat separat de câte un optocuplor;
Tensiune de alimentare necesară funcționării optocuploarelor este de 5V;
Curent necesar pentru control: 5mA.

• EasyPort
Sistemul Festo și EasyVeep și EasyPort este descris mai în detaliu la capitolul 2.3

36
3.3.2. Software

Pentru a pune în funcțiune acest sistem este nevoie de resurse software atât cele care propriu
zis conduc sistemul cât și resurse software ajutătoare pentru realizarea programelor , punerea în
funcțiune și testarea lui.
Proiectul OpenPLC consta din 3 componente principale: Runtime, Editor și HMI Builder
(ScadaBR).
OpenPLC Runtime este softul care emulează PLC propriu zis, responsabil pentru rularea
programului scris în Ladde r, el face legătura între toate elementele sistemului, face posibilă
comunicarea între PC și Arduino prin protocolul Modbus Serial, cât și comunicarea cu SCADA
prin Modbus TCP/IP.
OpenPLC Runtime trebuie instalat pe dispozitiv pentru a putea executa programe PLC . Suportă
mai multe platforme de sistem încorporate și poate fi de asemenea instalat pe mașinile Windows
și Linux ca PLC software. Se pot chiar utiliza d ispozitive slave (cum ar fi plăcile Arduino)
pentru a extinde porturile de intrare/ieșire. Acest software poate rula și fără dispozitiv sclav, pe
plăcile de dezvoltare care au destulă memorie și puterea de procesare pentru a conduce software
cum ar fi Rasp berry PI.
S-a ales ca instalarea să fie făcută atât pe platforma Windows cât și pe platforma Linux pentru
a demonstra versatilitate că poate rula pe cele mai populare platforme. Utilizatorul care dorește
să facă un studiu să nu fie obligat să folosească un sistem de operare necunoscut și software
greu de instalat și folosit. Ținând cont de acest lucru autorul proiectului a încercat să facă
instalarea și configurarea cât mai scurtă și la un singur click.
Pe PC s -a ales să ruleze ca sisteme de operare Windows 10 și Ubuntu 18.04 LTS (OS sunt alese
arbitrar cele mai populare și reprezentative sisteme pentru platformele suportate de OpenPLC),
Configurarea se face separat pe cele doua sisteme de operare deoarece diferențele de setare a
softurilor fiind destul de m ari, chiar dacă librăriile sunt scrise în “framework -uri cross –
platform”.
Pe dispozitivul sclave Arduino s -a realizat un program care comunica prin ModBus Serial și
s-a compilat și urcat pe acesta placa utilizând software Arduino care conține Editor, com pilator
și drivere pentru această placă de dezvoltare.
OpenPLC Editor este software prin intermediul căruia se poate realiza programul care să
controleze procesul, în limbaj ele din standard ul IEC 61131 -3, de asemenea se poate compila
proiectul într-un fișier înțeles de programul OpenPLC Runtime. Acesta are toate funcțiile
necesare și respectă standardul Ladder IEC 61131 -3 [6][7]. Aici se poate găsi o listă cu toate
funcțiile implementate: https://www.openplcproject.com/reference

37
Încă o funcționalitate necesară și foarte folositoare este modul “PLC Simulation” (modul de
simulare) în care programul se poate testa, făcând o compilare locală și monitoriza fiecare
variabilă în parte. Acest mod este încă limitat, foarte simplu față de cel oferit de Siemens dar și
așa ajută foarte mult.
Ca HMI Builder (Human -machine interface) adică interfața care face legătura între mașină și
observator (omul), s-a ales programul ScadaBR care are rol de monitorizare a procesului, a
tuturor porturilor de intrare ieșire cât și a variabilelor. Acest software implementează o interfața
web unde se poate monitoriza ușor orice variabila într -o interfață user -friendly.
Pentru proces s -a ales aplicația EasyVeep pentru simularea procesului condus. Aceasta aplicație
împreună cu driverul aferent EasyPort și hardware emulează toate semnalele necesare pentru a
primi și răspunde la comenzile oricărui PLC.
În tabelul 3.2 s-a sumarizat toate resursele software necesare
Tabel 3.2 Resurse software
Microsoft Windows 10 / Ubuntu 18.04 Sistem de operare
OpenPLC Runtime Runtime
Arduino Editor + Compilator Arduino
OpenPLC Editor Editor + convertor Ladder Diagram
ScadaBr HMI Builde r
EasyPort Driver simulator proces
EasyVeep Program simulare proces

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 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) fig. 3.6 [12] .

38

Fig. 3.6 L inie de îmbuteliere vin (Bottling wine) [12]

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)
•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)

39
•1 dispozitiv 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 dispozitiv 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_lab el_red, neck_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 banda, de asemenea se detectează tipul
sticlei și la finalizarea operației se pornește banda.
Banda pornește iar sticla se deplasează.
•La stați a 1 se face umplerea în funcție de tipul de sticla.
•La stația 2 se pune dopul de pluta.
•La stația 3 s e etichetează 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 fig. 3.7 .

40

Fig.3.7 Diagrama de activitate

41
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 c ăt și pe Ubuntu 18.04, care aduce un nivel de
dificultate mai ridicat din cauza comenzilor de terminal și de asemenea a setărilor suplimentare
făcute din cauza customizării proiectului pentru cerințele sistemului simulat. Setându -l pe
Linux a dat o înțelegere mai profund a privind funcționarea cît și ușurința de a rezolva mai rapid
unele probleme apărute în procesul de instalare. Singura problem ă 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
[32][35]
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 octeți rulează sistemul de operare 64 sau 32 octeți . În 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 meniu l 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
implici te! Se accesează meniul “Users”, se face clic pe Utilizatorul OpenPLC și se modifica
informațiile dorite ( fig.4.1 ) .

42

Fig.4.1 Meniul “Users”

Următoarea configurare este setarea dispozitivului scla v, care în cazul nostru este Arduino Uno .
Se merge la meniul “Slave Devices”, „Add new device„ (Fig. 4.2 ) și se alege placa menționată
și 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.

Fig.4.2 „Add new device ”

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.

43
Se folosește un editor cum ar fi Notepad++, se navighează pe calea unde este instalat OpenPLC
runtime, în acest caz este
C:\Program
Files \OpenPLC \Runtime \home \<nume_utilizator> \OpenPLC_v3 \webserver \pages.py
Se navighează la linia 1660 linia de cod
„else if (dropmenu.options[dropmenu.selectedIndex].value=="Uno")”
Și peste tot în acesta condiție trebuie înlocuit „turnElementOff” cu „turnElementOn”. Se
salvează. Se repornește 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 Inputs (%IX100.0): Size: 8
Coils (%QX100.0): Size: 10
Input Registers (%IW100): Size: 0
Holding Registers – Read (%IW100): Size: 0
Holding Registers – Write (%QW100): Size: 0

Se salvează , setările din meniul “Slave Devices” apar in fig. 4.3.

Fig. 4.3 Setări “Slave Devices”

4.1.1.2. Setare dispozitiv sclav I/O Arduino Uno
[30][35]
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 la
https://www.arduino.cc/en/Main/Software , [30] unde s e alege „Windows Installer”. Instalarea
are tot ce este nevoie pentru a putea dezvolta pe placa Arduino.

44
Se deschide schița cu pr ogramul Arduino, 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 următoarea:
Digital In: 8, 9, 10, 11, 12, A0, A1, A2, 13 (%IX100.0 – %IX101.0)
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

Și î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};

și î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 urcăm programul pe plac ă.

45
4.1.1.3. Instalare ScadaBR
[34]
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 îndrum ă 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 : https://www.virtualbox.org/wiki/Downloads
2. Se descarcă imaginea virtuala ScadaBR de aici:
https://drive.google.com/file/d/1gEOZmN9_Nt5shXy4iYS1z_EMxB4r0Kzh/view?usp=sharin
g
3. Se instalează Virtual Box 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 fereastra 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 închide 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: ( Fig 4.4 )

46

Fig.4. 4 ScadaBR program încărcat

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
Interfa ța ScadaB R apare î n fig. 4.5 .

Fig.4. 5 ScadaBR Interfa ța

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

47
4.1.2. Setare pentru Linux

4.1.2.1. OpenPLC runtime
[35]
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ă dependentele, cum ar fi git
sudo apt -get install gi t
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 acces ează http://localhost:8080 și urmează introducerea datelor de login
utilizator: admin
parola: admin.

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
[24]
Pentru a instala ultima 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 .

48
4.1.2.4. Instalare ScadaBR nativ
[11] [34] [38]
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 we bserver 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ă repository 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 creează 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;
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

49
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.wa
r
Se pornește tomcat8 pentru a deploia
sudo service tomcat8 start
Se oprește tomcat8 pentru a edita fișierele ScadaBR
sudo service tomcat8 stop
Se șterge fișierul 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 editează fișierul „env.properties”
sudo nano /var/lib/tomcat8/webapps/ScadaBR/WEB -INF/classes/env.properties
Se de comentează secțiunea db.mysql stergand „#” și adăugând datele de conectare a bazei de
date create anterior.

Se schimbă următoarele:
#db.type=mysql
#db.url=jdbc: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

50
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=~/../../bin/scadabrDB
#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 s ervice tomcat8 start
In browser se accesează: http://localhost:8080/ScadaBR ,
utilizator: „admin” și parola: „admin”

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

4.1.3. Setarea primului proiect și rularea lui pe OpenPLC
[32][46]
Acest pas este comun pentru ambele platforme și de acuma se va face configurarea
softu rilor 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 de
aici: https://www.openplcproject.com/getting -started -windows , ultimul link, proiectul „Hello
World” sau recomandat e să se seteze manual.
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ă selectat ă locația, aplicația va crea proiectul cu setările și config urațiile implicite și apoi
se va deschide un dialog nou cerând crearea unui „POU” care 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 intră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

Fig.4.6 Cre are POU

Se va crea doar Program POU în limbajul Ladder (LD). Atenție numele nu trebuie să conțină
spații sau caractere speciale. (Fig .4.6)
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

52
utilizeze ciclic, etc.). Se poate edita aceste elemente făcând dublu clic pe Res 0 din panoul din
partea stângă. (fig.4.7 )

Fig. 4.7 Structura proiect
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” ( fig.4.8 ) . Se poate schimba Intervalul pentru sarcina în funcție de hardware.
Programele PLC sunt ciclice, ceea ce înseamnă că ele încep 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 pl atformele este 50ms.

Fig. 4.8 Fereastra „Tasks” și „Instances”
Se declara portul D13 care are legat un led pe placa Arduino, pentru test.
Realiz ăm un program simplu și declarăm OUT_D13 ca variabila externă (fig. 4.9 )

53

Fig. 4.9 – Program0
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 4.1.2.1. și se intr ă 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 programul rulează. Pe placa Arduino ar trebui să se vadă LED -ul aprins.

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 unde rulează ScadaBR, explicat în cap. 4.1.1. 3
și 4.1.2.4 . După ce s -a realizat autentificarea și suntem întâmpinați de interfața ScadaBR avem
în partea de sus un meniu o serie de iconițe, se alege iconița care are numele „Data Sources”.
Aici se alege ModBus IP și se dă click pe iconiță conform Fig. 4.10 .

Fig. 4.10 Meniu principal ScadaB R

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

Fig.4.11 Formular setare sursa dispozitiv
Conform harta Mod bus implementat ă în cazul de față și explicat ă în cap. 2.1.4, p orturile digital e
de ieșire se decalează la portul 800 . Astfel %QX100.0 devine Coil Status 800 și %IX100.0
devine Input Status 800 .
În acest caz pentru programul test %QX101.1 va fi 809.
Pentru un test rapid se deschide secțiunea „Modbus read data” ( fig.4.12) și se selectează
Register Range: Coil Status
Offset: 800

55

Fig.4.12 Scanare și testare adrese modbus
După cum se observ ă, 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 locator test” unde se completează următoarele date: (fig.4.13 )
Register range: Coil Status
Offset: 809

Fig.4.13 Adăugare punct de observație
Apare mai jos încă o secțiune unde se completează următoarele date: ( Fig.4.14)
Name: OUT_D13
Register range: Coil Status
Offset: 809

56

Fig.4.14 Adăugare punct de observație detalii
Se apasă butonul cu icoana save. Punctul va ap ărea ca în fig.4.15. Acum trebuie activat apăsând
pe icoana din coloana „Status” și icoana se face verde.

Fig.4.15 Punct de observație

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

Fig.4.16 Activare surs a de date

În 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. În stânga se vede c ă
apare sursa și punctul adăugat. Se apasă pe săgeata dreapta iar punctul va ap ărea în partea
dreapta unde putem monitoriza starea portului (fig. 4 .17 ).

Fig.4.1 7 Vizualizare sursa și punct adăugat

57
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.

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 24V cc
2. Se pornește sursa de alimentare pentru EasyP ort 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 pornir e, 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 simult an. 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
înain tea 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 select ează „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.

58
10. Se apasă pe tab -ul „Conn.” și 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ă.
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 (fig. 4.18).

Fig.4.18 Simulare EasyVeep îmbuteliere vin

4.2. Schema electronica

Programul de simulare din EasyVeep are următoarea configurație : (fig.4.19)

59

Fig. 4.19 Conexiunile EasyPort

Astfel s -a ales următoarele seturi de legături între EasyPort și Arduino (tabel 4.1 ). 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 .
Tabel 4.1 S eturi de legături între EasyPort și Arduino
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)

60
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

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 IEC61131 -3[6][7] 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 EasyV eep.

În Fig. 4.20 este prezentat ă schema electronic ă parțial, unde este prezentat legătura dintre
EasyPort ieșire (O5) prin Optocuplor (OP1) și port -ul A0 intrare Arduino. La fel este prezentat
legătura din Arduino ieșire D2 prin releu R1 si I0 EasyPort. Această schema este la fel și pentru
toate conexiuni de intrare (I0 -I6) si ieșire (O0 -O7) conform tab. 4.1.

Fig. 4.20 – Schema electronica

61

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
cap. 4.1.3 se salvează ca proiect nou, numit „botling_wine”.
Ca arhitectura s-a ales modelul „state machine” .
Conform procesului ales s -a decis să se denumească senzorii și elementele de execuție după
tabelul 4.2. De asemenea s -a alocat la fiecare variabil ă o adresa în memorie care corespunde
unui port pe Arduino.
Tabel 4.2 Definire variabile pentru senzori și elementele de execuție și maparea lor
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
%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

In fig. 4.21 este descrisa logica programului în funcție de diagrama de stare din cap . 3.4 fig.3.7
printr-o diagrama (state machine) Grafcet.

62

Fig.4.21 Diagrama de stare (Grafcet)

63
Pasul1a: Decalarea porturilor de intrare/ieșire în Res0 ( tab . 4.3 )

Tabel 4.3 Declararea porturilor de intrare/ieșire în Res0
# 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

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

64
Tabel 4.4 Variabile program
# 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
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

65
Pasul 2: Inițializare
Se inițializează toate variabilele:
Exemplu de cod: ( fig.4.2 2 )

Fig. 4.22 Exemplu cod inițializare
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.
Exemplu de cod: ( fig.4.2 3)

66

Fig. 4.23 Exemplu cod depășire condiții
Pasul 4: Porniri Opriri
În acest pas se executa starea efectiv, adică se setează/resetează poate variabilele conform stării
în care se afl ă.
Exemplu de cod: ( fig.4.24 ):

Fig. 4.24 Exemplu cod Porniri Opriri

Pasul 5 – validare
În acest pas se validează starea, se resetează acesta și se trece în tranziția aferent ă. Se resetează
celelalte tranziții.
Exemplu de cod: (fig.4 .25)

67

Fig. 4.25 Exemplu cod validare

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 4.1.3 .
În acest moment este nevoie să se seteze punctele de observație în ScadaBR . După cum a fost
explicat în capitolul 4.1.4 , se merge la „Data Sources” și se adaugă punctele conform tab .4.5.

68
Tabel 4.5 Adăugare punctele de observație

Se adaugă punctele în „Watch List” conform fig .4.26 .

Fig. 4.26 Adăugare puncte în Watch List

Daca se dorește adăugarea de variabile locale se procedează la fel.

69

70
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 Diagram , 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 mare de placi de dezvoltare
• Posibilitate de a învăța Ladder Diagram ș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 setă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 folosirii 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.)

71
6. Anexe

6.1. Anexa 1 – Programul Ladder

Fig. A1.1 Program Ladder Diagram inițializare

72

Fig. A1.2 Program Ladder Diagram depășire condiții stația umplere

Fig. A1. 3 Program Ladder Diagram depășire condiții stația închidere sticlă cu dop

73

Fig. A1. 4 Program Ladder Diagram depășire condiții stația etichetare gat sticlă

Fig. A1. 5 Program Ladder Diagram depășire condiții stația etichetare sticlă

74

Fig. A1. 6 Program Ladder Diagram depășire condiții test

Fig. A1. 7 Program Ladder Diagram porniri opriri

75

Fig. A1. 8 Program Ladder Diagram porniri opriri stația umplere și stația închidere sticlă cu
dop

Fig. A1. 9 Program Ladder Diagram porniri opriri stația etichetare gat sticlă

Fig. A1. 10 Program Ladder Diagram porniri opriri stația etichetare sticlă

76

Fig. A1. 11 Program Ladder Diagram validare S0

Fig. A1. 12 Program Ladder Diagram validare stația umplere

77

Fig. A1. 13 Program Ladder Diagram validare stația închidere sticlă cu dop

Fig. A1. 14 Program Ladder Diagram validare stația etichetare gatul sticlei

78

Fig. A1. 15 Program Ladder Diagram validare stația etichetare sticlă

79
6.2. Anexa 2 – Montajul Experimental

Fig. A 2.1 Montajul experimental

80
7. Bibliografie
1. Alves Thiago Rodrigues ; ThomasMorris OpenPLC: An IEC 61131 –3 compliant open
sourc e industrial controller for cyber security research Computers & Security Volume
78, September 2018, Pages 364 -379 disponibil la
https://www.sciencedirect.com/science/article/pi i/S0167404818305388
2. Alves Thiago Rodrigues ; Mario Buratto ; Flavio Mauricio de Souza ; Thelma Virginia
OpenPLC: An open source alternative to automation IEEE Global Humanitarian
Technology Conference (GHTC 2014) Year: 2014 Pages: 585 – 589 disponibil la
https://ieeexplore.ieee.org/document/6970342
3. Beremiz User Manual by Lolitech – The Free and Open Source IEC 611313 Automation
IDE disponibil la https://beremiz.org/beremiz_user_manual_lolitech.pdf
4. Duinea Adelaida Mihaela Informatica de proces -notițe de curs disponibil
http://retele.elth.ucv.ro/Duinea%20Adelaida /Informatica%20de%20proces/Informatica%2
0de%20proces%20 -%20suport%20de%20curs.pdf
5. Duka A.V. – Automate programabile, note de curs, format electronic
6. Karl Heinz John, Michael Tiegelkamp – IEC 61131 -3: Programming Industrial Automation
Systems, Concepts -and-Programming -Languages -Requirements -for-Programming –
Systems -Decision -Making -Aids Springer 2010.
7. International Standard IEC61131 -3. Programmable Controllers – Part 3: Programming
Languages, 2003
8. Magnus Akerman Towards interoperable information and communication systems for
manufacturing operations Chalmers University of Technology Gothenburg, Sweden 2016
disponibil la https://www.researchgate.net/figure/The -automation -pyramid -with-levels –
from -ISA-95_fig2_314263189
9. Manual EasyPort USB Festo
10. Manual EasyVeep Festo disponibil la
https://www.festo -didactic.com/ov3/media/customers/1100/00730997001075223738.pdf
11. 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
12. http://www.easyveep.com/modules.php?akt_modul=6&akt_Lang=2
13. http://www.scadabr.com.br/
14. http://www.science.upm.ro/~traian/web_curs/Scada/arhit_scada/arhit_scada.pdf
15. https://beremiz.org/
16. https://en.wikipedia.org/wik i/DNP3
17. https://en.wikipedia.org/wiki/Fieldbus
18. https://en.wikipedia.org/wiki/Industrial_Ethernet

81
19. https://en.wikipedia.org/wiki/Modbus
20. https://en.wikipedia.org/wiki/Profibus
21. https://en.wikipedia.org/wiki/PROFINET
22. https://en.wikipedia.org/wiki/SCADA
23. https://github.com/thiagoralves/OpenP LC_v3
24. https://github.com/thiagoralves/OpenPLC_Editor
25. https://realpars.com/plc -manufacturers/
26. https://ro.wikipedia.org/wiki/Modelul_OSI
27. https://en.wikipedia.org/wiki/Remote_terminal_unit
28. https: //ro.wikipedia.org/wiki/Protocol_de_comunica%C8%9Bii )
29. https://sourceforge.net/p/scadabr/wiki/Manual%20ScadaBR%20English%200%20Summa
ry/
30. https://www.arduino.cc/en/Main/Software
31. https://www.openplcproject.com/
32. https://www .openplcproject.com/getting -started -windows
33. https://www.openplcproject.com/plcopen -editor
34. https://www.openplcproject.c om/reference -installing -scadabr
35. https://www.openplcproject.com/runtime
36. https://www.openplcproject.com/scada
37. https://www.ttonline.ro/revista/automatizari/reteaua -de-date-din-fabrica
38. https://www.youtube.com/watch?v=BPOvjt1R350
39. www.arduino.cc
40. https://www.unipi.technology
41. https://robokits .co.in/arduino/arduino -boards/arduino -mega -2560 -r3-original -made -in-
italy-with-box
42. https://www.aliexpress.com/item/32647062218.html?spm=a2g0s.9042311.0.0. 6c9f4c4dai
m5aI
43. https://www.optimusdigital.ro/ro/electronica -de-putere -module -cu-releu/478 -modul -releu –
cu-4-canale -albastru.html
44. https://www.arduino.cc/en/Main/ArduinoBoardUno
45. https://microcontrolere.wordpress.com/2016/08/10/arduino -uno/
46. https://www.openplcproject.com/reference -your-first-project

Similar Posts