Sunteți pe pagina 1din 36

MINISTERUL EDUCAIEI, CERCETRII, TINERETULUI I

SPORTULUI
UNIVERSITATEA 1 DECEMBRIE 1918 ALBA IULIA
FACULTATEA DE TIINE
SPECIALIZAREA PROGRAMARE AVANSAT
I BAZE DE DATE

LUCRARE DE DISERTAIE

Coordonator tiinific:
Lect.univ. dr. Ovidiu Doma

Absolvent:
Student Andrei Corb

ALBA IULIA
2013

Universitatea 1 Decembrie 1918 Alba Iulia


Facultatea /Colegiul _________________________

Sesiunea
_______________

Specializarea _______________________________

FIA DE APRECIERE A LUCRRII DE


LICEN / DIPLOM / ABSOLVIRE / DISERTAIE
Absolvent _______________________________________________________________
Tema lucrrii ____________________________________________________________
Conductor tiinific _______________________________________________________

Aprecierea conductorului tiinific :

Respectarea indicaiilor primite

1 2 3 4 5 6 7 8 9 10

Coninutul tiinific al lucrrii

1 2 3 4 5 6 7 8 9 10

Tehnoredactare

1 2 3 4 5 6 7 8 9 10

Contiinciozitate

1 2 3 4 5 6 7 8 9 10

Elemente originale

1 2 3 4 5 6 7 8 9 10

Aplicabilitate practic

1 2 3 4 5 6 7 8 9 10

Bibliografie

1 2 3 4 5 6 7 8 9 10

Se propune admiterea / respingerea lucrrii de licen / diplom / absolvire /


disertaie n sesiunea ___________________________________________
Nota propus de conductorul tiinific ______________
Conductorul tiinific confirm faptul c lucrarea este rezultatul propriilor
activiti ale studentului.
ef de catedr
tiinific,
_____________________

Conductor

___________________

MINISTERUL EDUCAIEI, CERCETRII, TINERETULUI I SPORTULUI


UNIVERSITATEA 1 DECEMBRIE 1918 ALBA IULIA
SPECIALIZAREA PROGRAMARE AVANSAT I BAZE DE DATE
FORMA DE NVMNT ZI

PRINCIPII PRIVIND COLECTAREA I RAPORTAREA DATELOR


INDUSTRIALE FOLOSIND DISPOZITIVE MOBILE

COORDONATOR:
LECT. UNIV. DR. OVIDIU DOMA
MASTERAND:
CORB ANDREI

ALBA IULIA
2013

CUPRINS
CUPRINS ....................................................................................................................................... 2
INTRODUCERE ........................................................................................................................... 3
CAPITOLUL I PLC I TEHNOLOGIILE OPC ...................................................................... 5
1.1.

Automatele programabile (PLC) .............................................................................. 5

1.2.

Despre tehnologiile OPC .......................................................................................... 6

1.3.

Standardele OPC ...................................................................................................... 6

1.4.

OPC DA (Data Acces) ............................................................................................. 7

1.5.

OPC UA (Unified Arhitecture) ................................................................................ 7

CAPITOLUL II PRINCIPII TEORETICE ALE APLICAIEI ........................................... 10


2.1.

MySQL ................................................................................................................... 10

2.2.

jQuery ..................................................................................................................... 12

2.3.

jQuery Mobile ........................................................................................................ 13

2.4.

PHP......................................................................................................................... 13

2.5.

Android................................................................................................................... 14

CAPITOLUL III DESCRIEREA APLICAIEI .................................................................... 16


3.1.

Introducere ............................................................................................................. 16

3.2.

Conectarea fizic pe PLC S7 / S5 .......................................................................... 16

3.3.

Software-ul OPC utlizat ......................................................................................... 18

3.4.

Libnodave ............................................................................................................... 21

3.5.

Aplicaia pentru dispozitive mobile ....................................................................... 22

CONCLUZII ................................................................................................................................ 28
BIBLIOGRAFIE ......................................................................................................................... 29
ANEXE ......................................................................................................................................... 30

INTRODUCERE
Automatizrile industriale nu ar fi fost posibile fr existena automatelor
programabile. Rolul acestora este de a procesa intrri i ieiri (input / outputs) . Intrrile pot
proveni de la diferii senzori existeni n cadrul unui process. Se va aplica logica dorit pe
aceste intrri i se vor trimite comenzi pe ieiri. Acestea exist i au fost utilizate n domeniul
industrial nc de la apariia primelor procesoare. Procesarea I/O se face ntr-un mod foarte
rapid i ntr-un mod ct se poate de stabil.
Vom aminti doar civa dintre principalii productori de automate programabile:
Siemens (familia S5, S7 folosite preponderent n Europa), FANUC (Factory Automation
Numerical Control), Rockwell Automation (productorii Allen Bradley). Pe parcursul acestei
lucrri vom folosi termenul de PLC (Programable Logic Controller) pentru automatele
programabile. Odat cu maturizarea sistemului de operare Windows au aprut aa numitele
SoftPLC (care ruleaz un kernel de Windows). Programatorii din domeniul automatizrilor
industriale nc dezbat care dintre cele dou categorii de PLC sunt mai performante, stabile,
fiabile i uor de utilizat. Cert este c amndou au avantaje i dezavantaje care sunt
prezentate n Anexa 3 a acestei lucrri.
De-a lungul timpului a aprut nevoia de reele industriale care s lege diferitele PLCuri de acela productor ntre ele, sisteme de vizualizare HMI (Human Machine Interface
exemplu WinCC de la Siemens). nc de la nceput filozofia fiecrui productor a fost s
creeze protocoale proprietare de comunicaie (Ex: Profibus, MPI de la Siemens - disponibile
contra-cost clientului final). Aceste protocoale ofer un oarecare grad de siguran n ceea ce
privete fiabilitatea, ns au un dezavantaj majore: comunicarea cu alte PLC-uri, fieldbus-uri,
HMI (de la ali productori) este aproape imposibil sau foarte costisitoare (datorit
protocoalelor proprietare).
Acesta este motivul principal care a dus la crearea i dezvoltarea continu a
tehnologiilor OPC (acronim de la OLE For Process Control). Aceste tehnologii reprezint o
suit de drivere care este menit s rspund la dou cerine majore:
1. Comunicarea facil i stabil ntre diferitele dispozitive din cadrul unui proces de
automatizare industrial.
2. Colectarea, stocarea i analiza datelor de la nivelul industrial din formatul utilizat
de ctre diferitele device-uri la un nivel superior (folosind protocoloalele de
comunicaie TCP/IP sau UDP) unde aceste date pot fi utilizate de ctre conducerea
unei companii.

Stocarea acestor date n fiiere .csv / .txt sau baze de date ntr-un format uor de
neles ofer posibilitatea persoanelor (chiar i fr cunotinte tehnice) din cadrul
unei companii o serie de avantaje:
Colectarea datelor privind productia unui utilaj uureaz munca
personalului care programeaza aceast producie.
Urmrirea comportamentului unui utilaj n timp (de exemplu nregistrarea
avariilor) ofer personalului tehnic informaii clare despre starea acelui
utilaj.
Pentru a demonstra importana OPC n mediul industrial am ales s creez un proiect care
comunic, preia i nregistreaz date in timp real de la PLC Siemens S5 i S7, roboi
industriali Fanuc i ABB folosind urmtoarele aplicaii:
1. Kepware OPC Server pentru Siemens S5 / S7 si Fanuc.
2. IRC5 OPC Server pentru ABB.
3. Librria OpenSource Libnodave.
Aceste aplicaii software conin driverele care fac posibil comunicaia cu PLC.
Pentru partea de OPC Client se va folosi aplicaia OPC Data Logger.Datele vor fi stocate
ntr-o baz de date MySQL, de unde vor fi preluate sub form de JSON folosind pentru o
aplicaie mobil dezvoltat pe Android. Partea de interfa va fi creat folosind jQuery
Mobile.
Conexiunea fizic a echipamentelor va fi realizat diferit pentru fiecare utilaj (PLC)
prezentat, dup cum urmeaz:
Comunicarea cu S5 se face folosind module (adaptoare) care permit conectarea
PLC n LAN. Protocolul de comunicaie este proprietar Siemens PPI (Point
to Point interface).
Comunicarea cu S7 se face folosind adaptoare care permit protocolul de
comunicaie MPI (Multi Point Interface) sau Profibus.
Pentru modelul de roboi industriali utilizai (controller) ABB IRC5 i Fanuc
R-ia s-a optat pentru conectarea acestora direct n reea (cu opiunea PC
interface prezent n roboi).
Pe parcursul acestei lucrri vor fi prezentate n mod egal att tehnologii industriale ct
i limbaje de programare de nivel nalt.

CAPITOLUL I
PLC I TEHNOLOGIILE OPC
1.1.Automatele programabile (PLC)
Ce este un PLC? Un PLC (Programmable Logic Controller) este un dispozitiv
electronic digital, construit pentru a controla maini i procese efectund operaii de
conducere a evenimentelor i a timpului. PLC-ul este construit cu scopul de a fi utilzat n
mediul industrial. Poate procesa intrri / ieiri digitale sau analogice. Poate fi programat fr
aptitudini speciale n programare, i poate fi ntreinut de ctre tehnicienii fabricii. n timp,
numeroi productori de sisteme industriale au nceput dezvoltarea de PLC-uri. Printre cei
mai importani se afl: Siemens (Germania), Fanuc (Japonia), Omron, Sigmatek (o companie
austriac care produce SoftPLC), Allen Bradley (USA). n Europa cele mai utilizate PLC-uri
sunt cele produse de Siemens. Siemens a dezvoltat un sistem de automatizare numit
SIMATIC care este reprezentat de componente coordinate cu metode unitare de configurare,
nregistrare i transmitere a datelor. Exist patru tipuri principale de PLC Siemens, fiecare cu
submodele i echipri diferite:
1. Siemens S5 PLC de generaie veche, dar este nc destul de utilizat n
automatizri.
2. S7 200 model de generaie mai nou folosit n cadrul unor procese mai
simple.
3. S7 300 reprezint o soluie pentru automatizri medii acesta este i modelul
de PLC pe care am testat sistemul OPC
4. S7 400 un PLC pentru automatizri complexe cu timp de procesare foarte
mic.
Oricare dintre automatele programabile descrise mai sus sunt compuse din: unitatea
central i modulele de I/O. n unitatea central se afl programul utilizator, n timp ce
modulele de I/O face legtura cu procesul care este controlat (intrri de la senzori, ieiri ctre
motoare

etc.).

PLC-urile pot fi comunica ntre ele sau cu alte sisteme folosind MPI (MultiPoint
Protocol) sau Profibus (se folosete cablu ecranat cu dou fire i un conector special). Acest
tip de comunicaie este foarte uor de configurat ns are un dezavantaj: distana maxim la
care se poate comunica este de 200 m, dar viteza scade drastic pe msur ce distana crete; n
consecin comunicarea la distan se poate face doar pe TCP/IP. n acest sens se poate utiliza
un adaptor TCP/IP la Profibus acest tip de adaptor este descris mai pe larg n capitolul III.
5

1.2. Despre tehnologiile OPC


OPC (OLE - Object Linking and Embedding for Process Control) este un set de standarde
industriale pentru interconectarea sistemelor, asigurnd o interfa comun ntre diferitele
produse existene pe pia. Potrivit ABB, exist peste 22.000 de produse dezvoltate de
peste 3.200 de productori. Sistemele de process trebuie s poat comunica cu toate aceste
produse sau s poat oferi accesul la date folosind o platform comun de comunicare.
OPC a fost dezvoltat n anul 1996 de ctre industria de automatizri ca un standard care
permite comunicarea n timp real a device-urilor de la diferii productori. OPC
Foundation a fost creat pentru a menine acest set de standarde i de atunci a completat
cu altele noi: OPC Data Access, Historical Data Acccess (HDA), alarme i evenimente
(alarms and events A&E).
1.3. Standardele OPC
OPC Data Access - este cel mai utilizat standard i este cel pe care l-am folosit pentru
colectarea datelor din automatele programabile. Este o comunicaie de tip client
server.
OPC Alarm and events - ofer notificri la apariia erorilor i a diferitelor evenimente
la cerere (n compariie cu fluxul continu de date n cazul Data Access). Acestea pot
include informaii despre alarme de process, mesaje informaionale sau aciuni ale
operatorilor.
OPC Data eXchange acest standard ofer comunicaie server la server pentru reelele
industriale de date. Asigur interoperabilitate pentru productorii de echipamente. In
plus ofer posibilatea configurrii i a diagnosticrii la distan (remote) a
echipamentului.
OPC Security toate serverele OPC ofer informaii importante pentru companie dar
dac acest transfer de de date nu se realizeaz correct, ar putea avea consecine grave
pentru procesele din fabric. OPC Security specific modul n care se controleaz
accesul unui client la aceste servere pentru a preveni aceste date sensibile, asigurnd
protecia n vederea modificrii nedorite a diferiilor parametrii de process.
OPC XML DA - asigur reguli i formate flexibile pentru a expune datele din
fabric folosind XML, uurnd munca altor aplicaii care asigur de exemplu serviciile
web.
OPC Unified Arhitecture (OPC UA) reprezint un set de specificaii recent aprut.
In comparaie cu OPC Data acces (care folosete componente Microsoft COM, desi
6

asigurnd support doar pentru Microsoft Windows), OPC Unified Arhitecture poate
folosi i tehnologii Java, asigurnd o interoperabilitate ntre sistemele de operare.
Mai departe voi prezenta dou standarde care sunt cele mai des folosite.
1.4. OPC DA (Data Acces)
OPC Data Access Specification este primul dintre un grup de specificaii cunoscut ca
Classic OPC Specifications.
OPC DA este un grup de standarde care asigur specificaiile pentru comunicarea n timp
real de la dispozitive cum ar fi PLC-urile sau HMI. Specificaiile se concentreaz pentru
comunicaiile continue de date. OPC DA se ocup doar de datele n timp real nu i datele de
tip historical.
Exist trei atribute associate cu OPC DA:
1. Valoarea (value)
2. Calitate valorii (quality of the value)
3. Data / ora curent (timestamp)
Specificaiile OPC DA spun c aceste trei atribute trebui returnate ctre un client OPC
care efectueaz o cerere. De aceea, dac de exemplu sursa de date nu poate oferi un
timestamp, OPC Server trebuie s-l creeze.
Specificaiile OPC clasice sunt bazate pe tehnologia Microsoft COM i definesc o
interfa C / C++. n timp s-a dezvoltat o interfa wrapper pentru a se putea crea aplicaii n
Visual Basic sau Delphi. Diferii productri ofer librrile .NET necesare pentru a putea face
interfaa OPC accesibil n aplicaii .NET.
1.5.OPC UA (Unified Arhitecture)
OPC UA reprezint acronimul pentru Unified Arhitecture. Este un standard relativ nou
aprut n OPC, dar este legat tot mai mult de conceptul de Internet of things.
Dei legtura iniial cu COM / DCOM a contribuit semnificativ la rspndirea
tehnologiilor OPC a avut cteva limitri:
probleme frecvente de configurare cu DCOM;
securitatea;
suport doar Microsoft Windows
lipsa controlului asupra DCOM (programatorii sunt nevoii s se descurce cu
bug-urile existente)
7

Neajunsurile menionate mai sus au dus la la decizia de a dezvolta o stiv nou i


independent pentru OPC UA, menit s nlocuiasc COM / DCOM. Caracteristicile
principale ale acestei stive de comunicaie sunt:
implementare multi-platform, incluznd implentri Java i .NET
scalabilitate
securitate ridicat
pe unul sau mai multe thread-uri.
Arhitectura OPC UA este una orientat pe servicii (SOA) i este bazat pe diferite
niveluri logice.
OPC Base Services reprezint descrieri abstracte ale unor metode, care sunt
independente de protocol i asigur baza pentru funcionalitatea OPC UA. Layer-ul de
transport combin aceste metode ntr-un protocol, deci datele sunt serializate i deserializate,
fiind mai apoi transmise n reea. Dou protocoale sunt folosite n acest scop: Primul este
TCP, optimizat pentru performane ridicate, n timp ce al doilea este orientat pe servicii web.
Model informaional al OPC este aa numita reea Full Mesh bazat pe noduri. Aceste
noduri pot include orice tip de meta-date. Putem compara aceste noduri cu obiectele din OOP.
Acest obiect poate avea atribute (DA, HAD), metode care pot fi apelate (comenzi) i
evenimente care pot fi transmise (AE, DataAccess, DataChange).
Software-ul client poate verifica ce profile suport un server. Este absolut necesar s
obin informaii dac de exemplu serverul suport doar funcionalitate DA sau, adiional AE,
HDA.
Specificaiile OPC UA:
1. Concepts
2. Security Model
3. Address Space Model
4. Services
5. Information Model
6. Mappings
7. Profiles
8. Data Access
9. Alarms and Conditions
10. Programs
11. Historical Access
8

12. Discovery
13. Aggregates

Fig. 1.6.1. Arhitectura unui sistem OPC UA


De la utilaj la sistemul ERP

CAPITOLUL II
PRINCIPII TEORETICE ALE APLICAIEI
2.1. MySQL
Putem numi o baz de date drept o colecie partajat de date ntre care exist relaii
logice (i o descriere a acestor date), proiectat pentru a satisface necesitile informaionale
ale unei organizaii, individ etc. 1
Putem spune spune ca o baz de date nu se refer la un singur fiier, ci la o mulime de
fiiere care stocheaz datele necesare. Un fiier din baza de date nu conine doar datele, dar i
structura acestora fiierele se numesc tabele.
Un SGBD (Sistem de gestiune al bazelor de date) reprezint un ansamblu de
programare care permite utilizatorului definirea, creearea i ntreinerea bazei de date, dar i
accesul controlat la aceasta. n Fig. 2.1.1 se poate observa o scurt comparaie ntre
principalele avantaje i dezavantaje ale unui SGBD.
Fig. 2.1.1. Avantaje i dezavantaje ale unui SGBD
Avantaje

Dezavantaje

Integritatea crescut a datelor (validitatea i

Complexitatea

coerena datelor)
Securitatea crescut

Costuri foarte mari

Partajarea datelor (datele pot fi consultate de

Impactul crescut al unei defeciuni (deoarece

ctre oricine, dar modificate doar de ctre

muli utilizatori se bazeaz pe SGBD,

persoanele cu drept dea acces

blocarea lui duce la blocarea ntregii activiti

Coerena datelor (dac o informaie este

Dimensiunea (n prezent, ele pot ajunge la

nregistrat o singur dat, actualizarea ei se

sute de MB i chiar GB).

face tot o singur dat.

Este important ca la proiectarea logic i crearea unei baze de date, trebuie s urmrim
nite aspecte:

Definiie preluat din cartea Baze de date relaionale, Emil Olteanu, Maria Muntean, Ed. Aeternitas 2010.

10

a) Analiza cerinelor prin analiza sistemului utilizat n prezent, evaluarea


necesitilor informaionale ale organizaiei
b) Modelarea datelor prin modelarea tabelelor sau a relaiilor dintre acestea.
c) gruparea informaiilor i normalizarea

tabelei, reducnd la minim

informaiile redundante.
d) n MySQL un numr mai redus de coloane ntr-un tabel nseamn i
interogri mai rapide
MySQL este unul dintre cele mai populare sisteme de gestiune de baze de date
(SGBD) in regim OpenSource. Exist i alte posibiliti, cel mai frecvent utilizat dup
MySQL, fiind PostgreSQL (asemntor), dar i altele.
Producatorul su se numete MySQL AB i este o companie a crei principal
activitate const n oferirea de servicii legate de acest SGBD. Exist mai multe ediii ale
MySQL: MySQL Community Edition care reprezint versiunea gratuit a acestui SGBD; n
ordinea funcionalitilor oferite i a preului putem enumera: MySQL Standard Edition,
MySQL Enterprise Edition, MySQL Cluster Carrier Grade Edition.
Cele mai importante caracteristici ale MySQL sunt:
Este un SGBD.
Asigur gestiunea unei colecii structurate de date.
Este un SGBD relaional.
Datele sunt organizate n tabele. ntre tabele sunt stabilite relaii i constrngeri de
integritate.
Folosete limbajul SQL (Structured Query Language) care este un standard n acest
domeniu.
Este un sistem client-server.
Suport SSL.
Serverul de baze de date este separat logic i deseori fizic (pe calculatoare diferite) de
programele client.
Interfaa operaiilor cu baza de date. Serverul MySQL suport o palet larg de
programe client, scrise n diverse limbaje de programare.
De cele mai multe ori MySQL este gestionat chiar din browser cu ajutorul
phpMyAdmin un script PHP pentru administrarea MySQL. Dar exist i alte soluii sau chiar
operaiuni din linia de comand pe server. Se pot crea baze de date, care au tabele cu cmpuri,

11

i eventual indeci. SQL este un limbaj simplu de interogare, modificare sau tergere a
datelor, dar i de manipulare a structurii bazei de date.
Dintre aplicaiile bine cunoscute care folosesc MySQL putem enumera: Joomla,
WordPress, phpBB, Drupal. MySQL este folosit i de ctre Wikipedia, Google (nu n cadrul
cutrilor), Facebook, Nokia, YouTube i Fickr.
MySQL reprezint o component central a des utilizatului pachet software LAMP
Linux, Apache, MySQL, Perl/PHP/Python.
2.2. jQuery
Ce este jQuery? Este o platform de dezvoltare JavaScript uor de folosit i compact.
Aceasta permite crearea rapid a interfeelor pentru RIA (Rich Internet Applications) i nu
numai. n general folosirea JavaScript pune probleme n utilizarea pe diferite navigatoare
web. Pot aprea diferene sau aplicaia nu poate funciona corect dect pe anumite browsere.
jQuery a fost gndit cu scopul de a elimina acest probleme i s fie ct mai compact cu
putin. Folosind jQuery se pot efectua cereri de tip Ajax. Ajax permite programatorului
dezvoltarea unor aplicaii web rapide, deoarece pagina nu este ncrcat din nou la fiecare
aciune a utilizatorului, rezultnd astfel un schimb mai redus de informaii ntre client i
server. Alte caracteristi alte jQuery sunt:
nregistrarea i modificarea evenimentelor din browser
Efecte i animaii
Selecii de elemente n DOM (Document Object Model)
Manipularea elementelor CSS
jQuery se afl sub licen dual GPL i MIT. Acest lucru a permis dezvoltarea multor
extensii. Astfel programatorul poate dezvolta sub-aplicaii care se leag de librria principal,
acestea putnd fi folosite ntr-o pagin doar cnd este nevoie de ele. Un set de extensii
important (folosit i n aplicaia dezvolt de mine) este jQuery UI (User Interface) care ofer
un set de extensii pentru interactivitate de baz, efecte mai complexe dect cele din libraria de
baz i teme de culori. Printre acestea putem aminti: diferite widget-uri: bar de progres,
butoane, taburi, alegerea datei curente, ferestre de dialog; permite de asemenea i interaciuni:
elemente sortate, minimizate, maximinizate. Avantajul jQuery UI fa de alte extensii este c
dezvoltarea i testarea acestor componente se face n paralel cu dezvoltarea libriei principale,
minimiznd riscul de incomptibilitate.

12

2.3. jQuery Mobile


A fost dezvoltat cu scopul de a permite dezvoltarea facil a interfeei UI pentru
dispozitivele mobile folosind cod JavaScript.. Aceast librrie are o serie de avantaje:
Crearea unei singure interfee care va rula att pe Android, Windows sau iOS.
Se va crea o aplicaie nativ simpl care include un webview cu link ctre
pagina creat n jQuery Mobile.
Nu este nevoie de compilarea codului surs i ncrcarea lui pe Google Play,
respectiv AppStore n cazul iOS.
Dar i o serie de dezavantaje:
Aplicaia web n jQuery sau orice alt framework mobile va avea un mic lag, n
special la elementele de tip drop-down (selectare), de aceea n cadrul aplicaiei
realizate de mine am ncercat s evit elementele de tip drop-down.
Traficul de date crete n comparaie cu o aplicaie nativ.
In cazul iOS, Apple verific atent aplicaiile nainte de publicarea lor pe
AppStore i n cele mai multe cazuri nu sunt acceptate aplicaiile care conine
view-uri de acest tip.
2.4. PHP
Conform Wikipedia2 numele PHP provine din limba englez i este un acronym de la
Hypertext Preprocessor. A fost folosit iniial pentru crearea de pagini web dinamice, n
prezent este utilizat pentru dezvoltarea aplicaii web, dar i a paginilor mai simple de un
numr ridicat de programatori. O caracteristic important este integrarea lui n cadrul codului
HTML. ns ncepnd de la versiunea 4.3.0 se poate utilize i n linia de comand, permind
astfel dezvoltarea aplicaiilor independente. Este unul dintre cele mai importante limbaje de
programare folosit n domeniu web, existnd versiuni pentru aproape toate serverele web /
sistemele de operare. Fiind open-source PHP beneficiaz de un suport activ din partea
comunitii online; datorit acestui suport puternic un numr relativ mare de programatori au
deprins limbajul de-a lungul timpului. Fapt care a dus la o cretere exploziv a site-urilor /
aplicaiilor web create n PHP. Un alt avantaj major pe care l ofer PHP este conectarea cu
uurin

la

orice

tip

de

baz

de

date:

Oracle,

MySQL,

SQLite.

ncepnd cu versiunea 5 PHP a fost adaptat trendului OOP, astfel c n prezent este n

http://ro.wikipedia.org/wiki/PHP

13

ntregime OOP. Se poate utiliza i n modul procedural, dar nu este recomandat. Codul scris
este interpretat, i nu compilat ca i n cazul altor limbaje de programare (Java, C etc.). n
schimb, i JavaScript este interpretat dar operaiile se fac client-side i nu server-side cum este
n cazul PHP. Interpretorul caut tag-ul de deschidere <?php , iar pn la nchiderea acestui
tag ?> tot codul este tratat ca fiind PHP. n aplicaia mea am combinat cod JavaScript cu
HTML i PHP.
2.5.Android
Conform

Wikipedia

Android

este

o platform

software i

un sistem

de

operare pentru dispozitive i telefoane mobile bazat pe nucleul Linux, dezvoltat iniial de
compania Google, iar mai trziu de consoriul comercial Open Handset Alliance. Android a
fost creat nc de la nceput pentru a permite dezvoltatorilor s creeze aplicaii software care
s permite utilizarea ntregii palete de resurse pe care o pune la dispoziie. Spre exemplu, o
aplicaie poate utiliza toate funcionalitile de baz pe care le are dispozitivul mobil:
efectuarea de apeluri, trimiterea de mesaje scrise sau utilizarea camerei integrate n terminal.
Android utilizeaz o main virtual custom creat pentru optimizarea memoriei i a
resurselor hardware. Sistemul de operare este totododat open source i poate fi integrat de
ctre orice productor de terminale mobile.
Platforma este ntr-o continu dezvoltare deoarece comunitatea de programatori
lucreaz mpreun pentru a dezvolta aplicaii mobile inovative. Pe

lng caracteristica

principal descris mai sus (open source), Android mai are o serie de caracteristici
importante pe care le voi prezenta mai jos:
1. Toate aplicaii sunt create egale Android nu face diferena ntre aplicaiile de
de baz ale sistemului i aplicaii third - party. Toate programele instalate au
aceleai drepturi la resursele hardware ale terminalului.
2. Programatorul nu este limitat doar la datele existente pe terminal (contacte,
calendar etc. ) sau doar pe web poate combina aceste date pentru a crea o
aplicaie mult mai interactiv pentru utilizatorul final.
3. Dezvoltarea rapid i uoar Android asigur acces la o multitudine de
librrii utile i unelte care pot fi utilizate pentru crearea unor aplicaii
interesante.

http://ro.wikipedia.org/wiki/Android_(sistem_de_operare)

14

Ca i IDE programatorul poate alege dintre Eclipse cu pluginul pentru Android sau
mai nou se poate Android Studio. Acesta din urm are mai multe opiuni dect Eclipse. Un
exemplu ar fi crearea interfeei folosind un layout designer cu care se pot aduga componente
GUI doar printr-un simplu drag and drop.
Fig 2.5.1. Workflow necesar pentru crearea unei aplicaii Android

Instalare /
configurare
IDE

Configurare
AVD i device
pentru teste

Crearea
aplicaiei

Testarea
aplicaiei

Debug-ul aplicaiei

Pregtirea
aplicaiei pentru
lansare

Lansarea aplicaiei

Compilare /
Rulare aplicaie

n cazul Android aplicaia se adaug relativ uor pe Google Play. n schimb Apple, n
cazul iOS are un set de reguli care pot duce la respingerea aplicaii, mpiedicnd astfel
publicarea aplicaiei n AppStore. Unul dintre cele mai frecvente motive pentru respingerea
aplicaiei este utilizarea n aplicaie a metodelor proprietare Apple.

15

CAPITOLUL III
DESCRIEREA APLICAIEI
3.1. Introducere
Aplicaia dezvoltat de mine permite vizualizarea datelor care vor fi colectate folosind
tehnologiile prezentate. Pentru testarea diferitelor funcii am decis s utilizez date fictive care
se schimb n mod continuu printr-o serie de scripturi PHP care ruleaz n cron. n schema de
mai jos sunt reprezentai toi paii care trebuiesc parcuri pentru funcionarea cu success al
sistemului.
Fig. 3.1.1. Schema de funcionare
sistemului de colectare / analiz date industriale
Aplicaie Web

MySQL

PC

OPC Client
OPC Data Logger

Android

iOS

OPC Sever Siemens S7/S5


Kepware

Conectarea IBH LAN


3.2. Conectarea fizic pe PLC S7 / S5
Pentru conectarea n reeaua TCP/IP a procesorului S5/S7 se va folosi un adaptor
TCP/IP la S7 compact, stabil i foarte uor de utilizat: IBH Softec .
Acest pas este absolut necesar pentru realizarea conexiunii dintre server i PLC.
Adaptorul este alimentat la 24V (dar se poate alimenta i direct din PLC) i se conecteaz cu o
muf RJ45 la reeaua LAN sau WAN. Configurarea acestui adaptor se face foarte rapid i
usor, urmnd paii descrii mai jos:

16

1. Se instaleaz aplicaia necesar pentru configurare IBH S7 disponibil pe siteul productorului4.


2. Se deschide utilitarul Administrate IBH Stations
Fig 3.2.1 Configurarea IBH

3. Se apas click pe IBH Link S7. Utilitarul va cuta automat IBH S7 disponibil
n reea.
4. Se schimb setrile pentru IP (IP, subnet mask, gateway) dar i numele
adaptorului.
5. Se poate configura adaptorul s funcioneze att pe Profibus, ct i pe MPI.
6. Dup ce configurarea adaptorului s-a realizat cu succes se poate trece la
urmtorul pas: Configurarea OPC Server i OPC Client.
In Fig 3.2.2 este reprezentat un caz tip de utilizare a acestui tip de adaptor:

http://www.ibhsoftec.com

17

Fig 3.2.2. Conectarea IBH

3.3. Software-ul OPC utlizat


Kepware OPC Server
Vom folosi acest soft (care conine driver-ul necesar) pentru conectarea direct pe S7.
Kepware OPC Server cuprinde peste o sut de drivere necesare conectrii pe sisteme
industrial pe care le vom enumera pe scurt: ABB TotalFlow, Automation Direct OPC Server,
GE Fanuc OPC Server, Siemens OPC Server Suite (Siemens S7 MPI, Siemens S7 TCP/IP),
Yokogawa OPC Server. Programe software de genul acesta au avantajul c permit
introducerea relativ uoar a datelor pe care le vom numi tag-uri n OPC.
Aceste tag-uri pot avea diverse tipuri de date: Boolean, Timer, Word sau Integer i pot
reprezenta: contoare, starea unui proces etc. Paii pentru crearea unui proiect n Kepware sunt
relative simpli i vor fi prezentai n cele ce urmeaz:
Se descarc programul software 5
Se instaleaz programul selectnd urmtoarele drivere de la Communication
Drivers:
a) Siemens S7 MPI
b) Siemens TCP / IP Ethernet
c) Siemens TCP / IP
Se ncepe configurarea unui nou proiect astfel:
a) Se apas File New.

https://my.kepware.com/mykepware/Downloads.aspx

18

b) Se apas click pe Click to add a channel. Va aprea o fereastr ca cea de


mai jos:
Fig 3.3.1 Configurarea Kepware

c) Se introduce numele canalului. Aceast valoare are doar caracter


informativ.
d) Se selecteaz Siemens TCP/IP Ethernet.
e) Se selecteaz placa de reea care va fi utilizat pentru conexiune i se
apas Next, dup care Finish.
f) Se apas click pe Add new device.
g) Se va deschide o nou fereastr unde se introduce Device Name aceast
informaie are doar rol informativ; mai multe device-uri pot exista pe un
singur canal.
h) La Device Model se va selecta NetLink 300 S7300 (deoarece portul
standard este 1099.
i) Va aprea o fereastr nou Device ID, unde se va introduce IP-ul.
j) O alt opiune util care merit activat este Enable auto device
demotion on communication failures dac conexiunea cu PLC este
ntrerupt, serverul va ncerca s o refac.
k) La Port Number i MPI ID se las valorile standard, adic 1099 i 0
(adresa default de MPI al adaptorului IBH).
l) Se va selecta Big Endian (S7 default) ordinea byte pentru valorile de 16
i 32.
19

Etapele descrise mai sus se refer doar la configurarea iniial a proiectului. Mai
departe este necesar adugare tag-urilor. Pentru aceasta se apas click pe Click to add a static
tag. Se va trece:
a) Nume tag
b) Adres tag (aceasta este foarte important i trebuie adugat exact
cum este utilizat n PLC).
c) Descriere o descriere opional pentru a oferi informaii despre tag-ul
respectiv.
d) Data Type Tipul de dat dac este lsat pe Default serverul OPC
va interpreta tipul automat n funcie de valoare primit de PLC.
OPC Data Logger
OPC Data Logger 6este un client de OPC care permite vizualizarea i nregistrarea datelor
expuse de OPC Server ntr-o baz de date MySQL / Microsoft SQL sau n fiiere .csv / txt.
Caracteristicile cheie ale unui client OPC sunt:
1. Colectarea datelor de la orice OPC DA server
2. Colectarea datelor de la orice OPC UA server care are implementat profilul
OPC DA
3. Conectarea la unul sau mai multe OPC Server.
4. Reconectarea automat la OPC Server.
5. Funcioneaz att cu OPC Server existent local, dar i remote.
Un alt aspect important de luat nseamn l reprezint flexibilitatea clientului de OPC:
Importul tag-urilor din OPC Server pentru a scurta timpul alocat configurrii
proiectului.
nceperea / Oprirea nregistrrii n funcie de anumite evenimente.
Posibilitatea schimbrii modului de nregistrare (n funcie de timp,
schimbarea unei stri etc.)
OPC Data Logger ndeplinete att condiiile descrise din punct de vedere al flexibilitii, dar
i a funcionalitii.

http://www.opclogger.com/

20

Fig 3.3.2 7 Un proiect n OPC Data Logger

Configurarea unui proiect n OPC Data Logger se face urmnd paii de mai jos:
1. Se deschide clientul de OPC
2. Se apas click pe File -> New
3. Se apas click dreapta pe Servers i se adaug serverul de OPC
4.

Pentru configurarea bazei de date se apas File -> Configure Database se introduce
toate valorile necesare i se apas Test Connection.

5. Se apas click dreapta pe OPC Server i se adaug un grup nou. Acest grup va
reprezenta un tabel n baza de date. n imaginea de mai sus avem dou grupuri:
Machine1 i Machine2.
6. Proprietile grupului pot fi accesate cu click dreapta pe Group -> Properties.
7. Din tabul Log Tabel se selecteaz tabelul aferent grupului. Este foarte important ca
tabelul s fie creat nainte de nceperea nregistrrii - un tag din cadrul unui grup
reprezint o coloan n tabel; de asemenea este necesar ca tipul de dat al coloanei s
coincid cu cel al valorii tagului din grup.
8. Tabul Log Data specific modul n care datele sunt nregistrate n BD.
3.4. Libnodave
Libnodave8 este o librrie gratuit (Open Source) pentru schimbarea de date ntre un
PC i un PLC de la Siemens. Este gndit n mod special pentru familia S7 (S7-200/300/400).
7

http://www.opclogger.com/screenshots/main.jpg

http://sourceforge.net/projects/libnodave/

21

Libnodave a fost scris n C i poate comunica pe MPI, PPI i ISO on TCP. Librria se poate
utiliza att pe Windows ct i pe Linux. In timp au aprut versiuni i pentru VB / C#, Delphi
i Java. Utilizarea acestei librrii necesit cunotine de baz n ceea ce privete PLC. Paii
care trebuie urmai sunt:
1. Stabilirea conexiunii TCP: fds.rfd=openSocket(1099,Adresa_IP_IBH), 1099
fiind portul standard pentru IBH;
2. Iniializarea structurii daveInterface: di=daveNewInterface(fds, "IF1",
localMPI, daveProtoXXX, daveSpeedYYY);
3. Iniializarea adaptorului: res =daveInitAdapter(di);
4. n listLength vom avea toate device-urile din reeaua de MPI sau Profibus care
pot fi accesate: listLength = daveListReachablePartners(di,buf1);
5. Crearea conexiunii ctre PLC: dc =daveNewConnection(di, MPI_address,
Rack, Slot);
6. Efectuarea conexiunii la PLC: res =daveConnectPLC(dc);
7. Citirea de date (bytes)din PLC: res=daveReadBytes(dc, AREA, area_Number,
start_address, length, buffer);
8. Scrierea de date n PLC: res=daveWriteBytes(dc, AREA, area_Number,
start_address, length, buffer);
9. Deconectarea de la PLC: daveDisconnectPLC(dc);
10. Deconectarea de la adaptor: daveDisconnectAdapter(di);
Aprnd o versiune de Libnodave pentru Java, aceasta poate fi implementat cu
success ntr-un proiect Android. In cadrul proiectului meu am folosit Libnodave doar pentru a
testa librria i modul n care comunic cu PLC Siemens.
Avnd n vedere c procolul de comunicaie a fost implementat prin reverse
engineering, autorul librriei nu recomanda utilizarea ei ntr-un mediu de producie.
3.5. Aplicaia pentru dispozitive mobile
Pentru realizarea aplicaiei pentru dispozitive mobile am ales ca tehnologii jQuery
Mobile (pentru interfa) i PHP (pentru partea de back-end). Motivul principal pentru care
am dorit s aleg aceste soluii este acela c nc de la bun nceput am urmrit ca aplicaia s
fie cross-platform.

22

Aplicaia web ruleaz pe un server Nginx cu MySQL i PHP instalat. Motivul pentru
care am ales Nginx n locul Apache este acela al consumului de resurse. Aplicaia am testat-o
pe un server avnd resurse limitate: Un procesor ARM la 900 Mhz cu 512 MB RAM, dintre
care 8 MB alocai GPU. n timp ce Apache este mult mai stabil i mai uor de configurat, deci
mai adecvat de folosit n producie, Nginx ofer performane bune chiar i pe un sistem cu
resurse limitate.
Accesarea paginii web se poate face foarte uor de pe orice dispozitiv mobil cu
ajutorul unui browser. Dar pentru a simplifica procesul am decis ca pentru Android s creez o
aplicaie cu un singur webView care are rolul de a ncrca pagina aplicaiei. Instalarea
acesteia se face foarte uor este necesar copierea fiierului .apk generat de Android Studio
pe dispozitivul mobil i rularea acestuia. Singura permisiune pe care am adugat-o i pentru
care

Android

cere

acordul

utiliaztorului

este

aceea

pentru

traficul

de

date.

n prezent datele din MySQL nu sunt nregistrate n mod real. In schimb am creat o
serie de scripturi PHP care scriu n baza de date la un anumit interval de timp. De exemplu un
contor din PLC (pentru producia la un utilaj, de exemplu) poate fi nregistrat la un interval de
un minut incrementnd valoarea deja existent n baza de date. Astfel se poate simula
procesul fr a conecta n mod real serverul la reeaua de PLC-uri prin OPC. Dac se dorete
nregistrarea valorii unui senzor digital (a unei fotocelule de exemplu) se poate crea un ir de
1/0

baza de

date, deoarece senzorul

nu va

avea niciodat alt

valoare.

De cele mai multe ori ns se dorete implementarea sistemului OPC pe un numr


ridicat de utilaje (device-uri PLC, HMI), justificndu-se costurile sistemului. De aceea
interfaa mobile trebuie s fie ct mai compact i uor de utilizat.
O alt problem important este aceea c datele fiind nregistrate direct de ctre OPC
Client posibilitatea de intervenire asupra structurii bazei de date este destul de limitat.
Proiectul OPC Client dicteaz cnd i ce date se nregistreaz. De aceea structura, gruparea
device-urilor n funcie de rolul su reprezint un factor important de care trebuie inut cont.
La deschiderea aplicaiei utilizatorul este ntmpinat de pagina de logare. Acest pas
este foarte important deoarece este necesar restricionarea accesului la pagina web. Dup ce
s-au introdus credenialele cu succes utilizatorul este direcionat spre prima pagin.
Pe prima pagina se gsesc butoanele necesare pentru a naviga n cadrul aplicaiei.
Dup cum am precizat i mai sus pentru interfa am utilizat jQuery Mobile. Lista cu utilajele,
dup care se poate vedea mai jos se genereaz automat din baza de date, astfel c la
introducerea unui nou device n OPC nu este necesar schimbarea listei din cod. n partea de
23

sus

se regsete un cmp pentru filtrarea rezultatelor din list. Filtrarea se face fr

rencrcarea paginii.
Ultimul item din list l reprezint Ieiri PLC care va permite utilizatorului scrierea
de ieiri n PLC. Acest lucru se poate realiza doar cu Libnodave pe Siemens S7.
Fig 3.5.1 - Prima pagina a aplicaiei

Imaginea de mai sus este de pe un dispozitiv Android 4.1 Jelly Bean Evolio Aria cu
ecranul de 9.7 inch i rezoluia de 1024x768px.
Pentru scrierea de ieiri se apeleaz din pagina web programul C avnd ca argument
ieirea dorit. Mai departe programul C creat utilizat librria LibNodave transfer adresa ctre
PLC.
La selectarea unui utilaj din list se deschide o nou pagin care conine dou butoane
Productie i Erori dar i starea utilajului (n funciune / staionare) n momentul ncrcrii
paginii.
Pagina de configurare aplicaie
Aceast pagina permite utilizatorului configurarea setrilor cum ar fi:

24

dimensiunea n pixeli a graficelor de producie generate aceasta setare este


recomandat a se face pentru prima dat
schimbarea temei
schimbarea adresei de e-mail.
Setrile de mai sus sunt salvate n bazate de date i de aduc pentru fiecare utilizator n
parte. La deschiderea pentru prima dat a paginii cu un anumit utilizator se aduc setrile
default, mrimea graficului generat este de 320x240 px. Folosind adresa de e-mail setat n
pagina de configurare, utilizatorul va primi e-mail despre erorile pe care le produce utilajul
sau informaii despre realizarea normelor pe utilaje.
Pagina de producie utilaj
Momentan pentru dezvoltarea aplicaiei am utilizat date de test. Aceste date se
schimb la fiecare minut utiliznd un script PHP care ruleaz n cron pe serverul web. Datele
sunt menite s simuleze procesul de producie real. n prezent se pot genera grafice de
producie doar pe zile. Se selecteaz data start i data stop, reprezentnd intervalul orar pentru
care se va genera raportul i se apas Caut. Valorile selectate de ctre utilizator sunt tratate n
sensul ca se face verificarea ca data start s fie mai mic dect data stop (n caz contrar se
afieaz un mesaj corespunztor) i c ambele date trebuiesc schimbate.
Pagina de erori utilaj
Aceast pagin are dou cmpuri identice ca rol (pentru dat) cu cele de producie,
diferena major const n faptul c datele rezultate din interogare sunt afiate descresctor, n
funcie de numrul de apariii n intervalul de timp selectat. Astfel, acest feedback poate oferi
utilizatorul informaii rapide i concrete despre situaia utilajelor. Poate urmri i monitoriza
comportamentul utilajului n timp, reducnd astfel timpul n care acesta este oprit prin
verificri i mentenan periodic acolo unde i cnd este nevoie.

25

Fig. 3.5.2. Graficul rezultat dup cutare - producie pe trei zile

Dup ce s-au introdus datele necesare se afieaz graficul generat. Pentru generarea
graficului am utilizat librria PHP gratuit LibChart 9 care permite generarea graficelor cu
uurin.
Pagina de ntreinere / mentenan
Pagina de ntreinere i mentenan se dorete a servi inginerilor care au n sarcin
aceste programe periodice de mentenan. Se poate adauga un anumit eveniment, iar la
deschiderea aplicaiei i va afia urmtoarea dat pe care a adugat-o (dac exist). n viitor,
doresc s integrez aceste date n cadrul serviciilor comerciale de comunicare, cum ar fi
Microsoft Exchange.
Pagina ieiri PLC
Aceast pagin este util pentru diagnosticarea rapid a unei probleme care poate
aprea la un utilaj. Utilizatorul poate selecta utilajul (PLC-ul corespunztor), introduce adresa
ieirii (ex: Q2.3 ) pe care vrea s o scrie dac vrea s o schimbe n 1 sau 0, iar aplicaia prin
intermediul Libnodave va trimite datele ctre PLC. Valoarea se va scrie direct n PLC.

http://naku.dohcrew.com/libchart

26

Trimitere alerte prin e-mail


Alertele care se trimit pe e-mail sunt foarte utile deoarece utilizatorul sistemului OPC
poate lua msuri n timp real, chiar dac nu utilizeaz n momentul respectiv aplicaia. Astfel
orice eroare survenit poate fi trimis sau se poate genera un raport sptmnal / lunar care se
va trimite utilizatorului pe e-mail. Trimiterea de e-mail se face folosind librria Swiftmailer10;
contul de pe care se trimite este unul de Gmail, pe care le-am creat doar pentru teste.
Protocolul este SMTP, iar Gmail n varianta gratuit ofer suport pentru SMTP. Crearea unui
mesaj utiliznd SwiftMailer se face foarte rapid i uor; paii necesari sunt descrii mai jos:
includerea librriei n proiect: require_once 'lib/swift_required.php';
crearea modului de transport:
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
->setUsername('user')
->setPassword('parola')
crearea mesajului: $message = Swift_Message::newInstance($transport);
acordarea unui subiect: ->setSubject('Subiect');
de la cine l trimitem folosind un array asociativ:
->setFrom(array('john@doe.com' => 'John Doe'));
cui l trimitem folosind un array asociativ:
->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'));
coninutul mesajului (body): ->setBody('body mesaj');
trimiterea mesajului: $result = $mailer->send($message);

10

http://swiftmailer.org/

27

CONCLUZII
Sistemele OPC combinate cu o aplicaie web reprezint o soluie viabil pentru
monitorizarea n timp real i automat a oricrui tip de procesor. Acest lucru, pe lng
avantajele evidente n mediul industrial pe care consider c le-am demonstrat pe parcursul
acestei lucrri pot fi aplicate cu succes i n cadrul automatizrilor rezideniale. Dei costul
unui asemenea sistem poate prea mare la nceput, va fi amortizat n timp. De exemplu, n
cadrul automatizrilor industriale se pot aduga apometre conectate pe un PLC, senzori de
umiditate, micare, de gaz sau de fum. Astfel se poate urmri n timp consumul de ap sau se
pot trimite alerte (e-mail sau telefonic) cnd oricare dintre senzorii montai sunt activai.
Cteva dintre lucrurile menionate se pot realiza i cu alarm standard, OPC-ul i
automatizarea asigur o flexibilitate net superioar.
ns n mediul industrial investiia n sistemul OPC este recuperat ntr-un interval de
timp scurt (aceasta depinde i de volumul de producie, dar i de tipul de PLC-uri este
recomandat s exist aceleai tipuri de PLC-uri fapt care va reduce costul de integrare a
sistemului). n ultimii ani WEB-ul a ptruns tot mai mult n mediul industrial (prin
conectivitate TCP/IP, protocoale FTP, HTTP etc.) punnd la dispoziia inginerilor, a
managerilor sisteme tot mai inteligente reducnd astfel timpul necesar montrii i ntreinerii
utilajului, maximinznd n schimb cifrele de producie.
n cadrul acestei lucrri am dorit s prezint n special tehnologiile OPC, dar i modul
n care se poate realize o aplicaie cross-platform mobil, aplicaie uor de ntreinut i utilizat.
Pentru viitor doresc sa utilizez i OPC UA, nu doar OPC DA cum am fcut pn acum. De
asemenea doresc s adaug funcionaliti suplimentare aplicaiei:
sincronizarea programului de mentenan cu Microsoft Exchange;
posibilitatea vizualizrii erorilor / datelor de producie att pe schimburi, ct i
pe ore;
crearea unei aplicaii pe iOS, n mod identic cu cea de pe Android aplicaia
va ncrca pe un webView pagina web n jQuery Mobile.

28

BIBLIOGRAFIE
I.

Surse scrise

[1] Marko Gargenta, Learning Android, Editura O'Reilly Media, 2011


[2] Lynn Beighley, Michael Morrison, Head First PHP & MySQL, O'Reilly Media, 2008
[3]
[4]

II.

Bear Bibeault, Yehuda Katz, jQuery in Action, Manning Publications Company,


2010
Juergen Lange, Frank Iwanitz, Thomas J. Burke, OPC from Data Access to Unified
Architecture

Surse Internet

[1] http://www.opcfoundation.org/Default.aspx/01_about/01_whatis.asp?MID=AboutOPC
[2] http://www.kepware.com/Support_Center/helpfiles.asp
[3] http://www.automation.siemens.com/mcms/programmable-logic-controller/en/simatics7-controller/s7-300/pages/default.aspx
[4] http://api.jquerymobile.com/

29

ANEXE
Cod surs pentru citirea unui bit din S7 folosind Libnodave
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "nodavesimple.h"
#include "openSocket.h"
int main(int argc, char **argv) {
int i, a,b,c,
initSuccess,
res;
float d;
daveInterface * di;
daveConnection * dc;
_daveOSserialType fds;
if (argc<2) {
printf("runIBH IP adresa\n");
exit(-1);
}
daveSetDebug(daveDebugPrintErrors);
initSuccess=0;
fds.rfd=openSocket(1099, argv[1]);
fds.wfd=fds.rfd;
//conectarea la IBH
if (fds.rfd>0) {
di = daveNewInterface(fds, "IF1", 0, daveProtoMPI_IBH, daveSpeed187k);
daveSetTimeout(di,5000000);
for (i=0; i<3; i++) {
if (0==daveInitAdapter(di)) {
initSuccess=1;
break;
} else daveDisconnectAdapter(di);
}
if (!initSuccess) {
printf("Nu m-am putut conecta la adaptor\n");
return -3;
}
dc =daveNewConnection(di, 2, 0, 0);
printf("Conectarea la PLC\n");
if (0==daveConnectPLC(dc)) {
res=writeBits(dc, daveOutputs, 0, 5, 1);
if (res==0) {
printf("Iesirea a fost scrisa cu succes");
30

} else
printf("eroare %d=%s\n", res, daveStrerror(res));
printf("Ma pot deconecta acum.\n");
daveDisconnectPLC(dc);
daveDisconnectAdapter(di);
return 0;
} else {
printf("Nu m-am putut conecta la PLC\n");
daveDisconnectAdapter(di);
return -2;
}
} else {
printf("Nu am putut stabili conexiunea cu %s\n",argv[1]);
return -1;
}
}
Cod Surs aplicaia Android

MainActivity.java
package com.example.opcapp;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
//todo :
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Creare webview
WebView mywebview = (WebView) findViewById(R.id.webview);
//Adaugare pagina jQuery pe webview.
mywebview.loadUrl("http://192.168.2.10/work/disertatie/html/app/");
mywebview.setHorizontalScrollBarEnabled(false);
mywebview.setVerticalScrollBarEnabled(false);
//activam JavaScript.
WebSettings webSettings = mywebview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setDomStorageEnabled(true);
}
31

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<WebView
android:id="@+id/webview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
Cod Surs jQuery Mobile i PHP

index.php
<?php include('header.php'); ?>
<br /><br />
<ul data-role="listview" data-theme="a" data-dividertheme="e" datafilter="true">
<li><a href="#u1" data-transition="slide">Utilaj 1</a></li>
<li><a href="#u2" data-transition="slide">Utilaj 2</a></li>
<li><a href="#u3" data-transition="slide">Utilaj 3</a></li>
<li><a href="#special" data-transition="slide">Iesiri PLC</a></li>
</ul>
<?php include('footer.php'); ?>
productie.php
<html>
<head>
<title>OPC App</title>
<link rel="stylesheet" href="http://jquerymobile.com/demos/1.3.0beta.1/css/themes/default/jquery.mobile-1.3.0-beta.1.css" />
32

<script type="text/javascript" src="http://code.jquery.com/jquery1.7.1.min.js"></script>


<script type="text/javascript" src="http://jquerymobile.com/demos/1.3.0beta.1/js/jquery.mobile-1.3.0-beta.1.js"></script>
<script type="text/javascript" src="src/jquery.jqplot.min.js"></script>
</head>
<body>
<div data-role="page" data-theme="b" id="prod">
<div data-role="header" data-theme="b">
<h1>Productie / zile </h1>
</div>
<div data-role="content">
<?php
$data_start = htmlentities($_POST["data_start"]);
$data_stop = htmlentities($_POST["data_stop"]);

//echo $data_start;
//echo $data_stop;
$sizeDataStart = strlen($data_start);
$sizeDataStop = strlen($data_stop);
$unixDStart = strtotime($data_start);
$unixDStop = strtotime($data_stop);
if ($sizeDataStart === 0 || $sizeDataStop === 0)
echo "Nu ati introdus nici o data";
else if ($unixDStart > $unixDStop)
{
echo "Data start este mai mare decat data stop. <br>";
echo "Apasati inapoi si schimbati data";
}
else {
include "getData.php";
returnProductie($data_start,$data_stop);
}
?>
<br>
33

<a href="#prod" data-role="button" data-inline="true" dataicon="back">Inapoi</a>


</div>
</div>
</body>
</html>
Not: Datorit numrului mare de linii de cod asemntoare PHP i jQuery nu am introdus
codul surs n aceast lucrare. Acesta poate fi descrcat de la adresa:
https://sourceforge.net/projects/opcapp/files/

34

S-ar putea să vă placă și