Interfata de Comanda Si Control Pentru Sisteme Industriale

LUCRARE DE LICENȚĂ

Interfață de comandă și control pentru sisteme industriale

CUPRINS

Lista de figuri

Lista de tabele

Introducere

Titlul lucrării de licență este “Interfață de comandă și control pentru sisteme industriale” și are ca principal scop prezentarea unei aplicații folosind un microcontroler ce comunică cu un ecran tacitil pentru a comanda un sistem industrial. De asemenea, la realizarea părții practice doresc să folosesc un server Web prin care se poate vizualiza (comenzile date prin touchpanel), dar se și pot transmite comenzi.

Am ales acestă temă deoarece consider că este foarte utilă și necesară în aplicațiile industriale din ziua de astăzi. A consituit o provocare fiindcă prin realizarea ei am aplicat multiple cunoștințe dobândite pe perioada celor patru ani de facultate.

Pentru a dezvolta aplicația a fost nevoie de mai multe cunoștințe acumulate în timpul facultății, cunoștințe dobândite în cadrul cursurilor de programare, de sisteme cu microprocesoare, microcontrolere – arhitecturi de programare, sisteme informatice integrate.

Atunci când se vorbește de un sistem, se face referire la partea electrică, de control electronic, la reglare precum și la optimizarea procesului. Toate aceste funcții sunt asigurate de o structură fizică dedicată de tip controler. Controlerul poate fi: microcontroler, microprocesor sau automat programabil (PLC). Deși în majoritatea cazurilor controlul proceselor se face cu ajutorul automatelor programabile, deoarece au mai mult beneficii, folosirea unui microcontrolerelor este o alternativă în multiple aplicații ce permit acest lucru. După cum se știe microcontrolerul este des întâlnită la sistemele încorporate(embedded), unde există un sistem de calcul încorporat. Microcontrolerul folosit pentru partea practică a lucrării este  STM32F407VGT6.

Limbajul folosit pentru programarea microcontrolerului este C. Am ales acest tip de limbaj deoarece mediul de dezvoltare folosit pentru aplicația soft asigură conversia în limbaj mașină. Acestea include tot ceea ce este nevoie pentru o dezvoltare cât mai rapidă atât pentru utilizatorii începători cât și cei experimentați.

Folosirea touchscreen-ului a devenit tot mai prezentă în viețile noastre: fie că ne referim la telefoane, calculatoare, la cuptoarele cu microunde sau binecunoscutele tablete, ele sunt tot mai des folosite pentru a înbunătăți diferite aparate electrocasnice și nu numai. Însă această tendință nu este întâlnită numai la aplicațiile cotidiene. Numeroase dispozitive din mediul industrial se folosesc de tochscreen-uri pentru a realiza o interfață cât mai practică și mai ușor de folosit. Folosirea ecranelor tactile în mediul industrial sunt în principal utilizate pentru realizarea consolelor operator.

O altă componentă a lucrării constă în realizarea unui server Web, stocat în memoria internă a microcontrolerului ce poate fi accesată de client. În acest caz STM va juca rolul unui server, iar utilizatorul este clientul. Clientul va putea vizualiza un istoric al comenzilor, anumiți parametri ce sunt monitorizati și chiar să selecteze, sa dea anumite comenzi proceselui. Așadar pentru a realiza un server Web mă voi folosi de comunicația Ethernet. Acest tip de aplicație este explicată, mai pe larg în cuprinsul lucrării.

Lucrarea de față este structurată în două părți majore, una teoretică și una practică. În prima parte, cea teoretică, cuprinsă în capitolul 2, sunt schițate și prezentate câteva dintre aspectele, cele mai importante privind microcontrolerele, rolul lor în industrie, dar și necesitatea folosirii unei interfețe de control pentru sistemele industriale. În cea de a 2-a parte, cea practică, am descris mai pe larg ce echipamente am folosit, ce soluție am găsit și ce rezultate am obținut prin realizarea acestei (a părții practice). Cea de a 2-a parte este descrisă în capitolele 3 și 4. În ultimul capitol am realizat o comparație între rezultatele obținute de mine și soluțiile existente deja în industrie ( am realizat o comparație cu HMI-ul de la SIEMENS).

Un alt motiv pentru care am ales această temă este aplicabilitatea vastă a acestei structuri în industrie și nu numai. Fie că ne referim la aplicații mici, casnice, unde utilizatorul nu are cunoștințe tehnice, fie că ne referim la aplicații mari, industriale, unde utilizatorul are nevoie de informații precise cu privire la comenzile date procesului, implementarea unei astfel de soluții este de viitor.

Interfața creată de mine a fost gândită pentru o instalație didactică și anume suflanta ELWE pe care se studiază reglarea temperaturii și a presiunii. Comenzile date cu ajutorul paginii Web permit reglarea atât în modul manual cât și în modul automat. Atunci când se alege modul de lucru manual, utilizatorul trebuie să introducă parametrii regulatorului(Kr,Ti,Td). Pentru modul automat este suficientă comanda “send”.

Prin această lucrare doresc să evidențiez necesitatea unei astfel de aplicații în industrie dar și să înglobez două aplicații diferite pentru a obține un rezultat cât mai complet (server – utilizare touchscreen).

Noțiuni generale privind componentele modulului de procesare

Pentru a realiza partea practică a lucrării de licență a fost necesară cunoașterea cât mai detaliată a componentelor ce alcătuiesc această parte. Din acest motiv capitolul doi este, defapt, un rezumat al celor mai importante noțiuni cu privire la microcontrolere, dispozitivele LCD cu ercan tactil, dar și a sistemelor de comunicație industriale.

Microcontrolere

Noțiuni introductive

Nevoia și cererea pentru microcontolere a existat și există încă din vremea când Intel a prezentat primul său microprocesor (4004). Printre primele microcontrolere apărute au fost cele produse de Texas Instruments și a apărut în anul 1974. Ele includeau memorie RAM, ROM și porturi intrare/ieșire integrate (on-chip). Deși TMS 1000 a fost primul microcontroler, el a fost totuși denumit microcomputer. Intel a fost cel care a lansat primul microcontroler cunoscut pe piață și anume Intel 8084, care a avut o răspândire mare. 8084 a fost integrat în tastaturile de la calculator. (Grinding & Weiss, 2007)

Astăzi, microcontrolerele sunt foarte răspândite și căutate, ele fiind folosite și integrate în multiple aplicații. Printre domeniile în care sunt folosite se numără și: industria de automobile, producția de avioane, telecomunicații (telefoane mobile) și nu în ultimul rând automatizările.

În acest subcapitol sunt detaliate câteva dintre conceptele ce descriu arhitectura și resursele tipice ale unui microcontroler. Descrierea tipurilor de arhitecturi, cum diferă acestea în funcție de numărul de instrucțiuni, prezentatarea câtorva dintre cele mai importante concepte precum: oscilatorul, tipurile de memorie, watchdog-ul se regăsesc în acest subcapitol.

Pentru a înțelege cât mai bine modul de funcționare și componentele ce alcătuiesc este necasară o prezentare sumară a noțiunii de microprocesor. Figura 2.1 este o reprezentare cu blocuri a unui microprocesor sub o formă generică, nedetaliată. Microprocesorul este alcătuit din 3 componente fundamentale: Unitatea Centrală de Prelucrare (UCP sau eng. CPU), memoria și sistemul de Intrări/Ieșiri (I/O). Blocurile sunt interconectate cu ajutorul unei magistrale. Există 3 magistrale: una ce conectează și transportă memoria sau adresele I/O și este numită magistrală de adrese, una ce transportă date și instrucțiuni, numită magistrală de date, iar ultima este magistrala de control ce transportă semnalele de control. Unitatea centrală de prelucrare este „creierul” microprocesorului, el are rolul de a aduce instrucțiunile din memorie, să le interpreteze și să le execute. De asemenea UCP include circuite ce realizează operații matematice și logice. Acest circuit se numește Unitatea Aritmetică Liogică (UAL sau de la denumirea în engleză ALU). Dimensiunea registrului intern de date este un alt parametru important: el poate fi de 8, 16, 32 sau 64 de biți și determină numărul de biți ce pot fi procesați simultan.

Microcontrolerul poate fi considerat ca un microprocesor ce are integrate toate componentele descrise anterior într-un singur circuit. Microprocesoarele sunt folosite la construirea calculculatoarelor personale sau în dispozitive unde este necesar un managment al datelor rapid, al instrucțiunilor, unde puterea de calcul este mare. Pe de altă parte microcontrolerele sunt folosite în multiple aplicații precum echipamentele medicale, jucării, echipamente industriale și multe altele. Acestea au fost create pentru controlul unui număr mai mic de sarcini la un cost cât mai mic posibil. Reușita a fost posibilă prin stocarea programului în memoria microcontrolerului și executarea lui atunci când este alimentat. În cazul aplicațiilor complexe se pot folosi mai multe microcontrolere ce îndeplinesc diferite sarcini.

figura 2.1. Diagrama bloc a unui microprocesor, UCP este microprocesorul

Există multiple motive pentru care folosirea unui microcontroler este de preferat în aplicații, câteva dintre aceste motive sunt:

optimizarea spațiului – este important să se folosească un spațiu cât mai mic, la un preț cât mai redus.

consum redus de putere – din cauza limitării bateriilor, un consum cât mai mic al microcontrolerului trebuie asigurat, de asemenea atunci când acesta este în starea de așteptare a unor comenzi consumul cât mai mic este indicat.

protecție împotriva utilizatorilor neautorizați – programul stocat în memorie trebuie protejat împotriva unui acces neautorizat, pentru a face acest lucru, microcontrolerele au încorporate mecanisme împotriva copierii.

folosirea celui mai apropiat microcontroler pentru o aplicație dată – datorită multiplelor familii de microcontrolere se poate alege un microcontroler cu specifacațiile potrivite pentru orice tip de aplicație. Se poate alege o arhitectură cu un anumit număr de intrări/ieșiri, o anumită memorie, etc.

Așa cum am precizat și în paragrafele anterioare, microcontrolerele combină resursele disponibile ale unui microprocesor împreună cu memoria și porturile I/O într-un singur cip. Schema de tip bloc a unui microcontroler este arătată mai jos, în figura 2.2. În alcătuirea lui găsim un oscilator pentru a genera semnale ce sincronizează toate operațiile interne. Oscilatorul poate fi o schema a unui circuit simplu RC (rezistență-condensator) sau poate fi din cristal de cuarț pentru o frecvență înaltă. Frecvența oscilatorului are o directă influență asupra vitezei de execuție a instrucțiunilor. Microcontrolerul are în compenența sa o UCP. Unitatea centrală de prelucrare aduce instrucțiunile din memorie una câte una le interpretează, le decodifică și apoi le execută. De asemenea UCP are în componența sa UAL pentru a face calcule binare pentru operații logice. Mai întâlnim și diferite registre pentru uz general sau pentru uz specific. Registrele speciale sunt: registrul acumulator, registrul status, cel contor, registrul adrese de date. (Pietraru, curs 2013)

figura 2.2. Diagrama boc a unui microcontroler

Memoria microcontrolerului stochează atât instrucțiunile program cât și datele. Orice microcontroler are în componența sa două tipuri de memorie: memoria ROM și cea RAM. Memoria RAM este volatilă, ea poate fi citită și scrisă, datele se șterg atunci când nu este alimentată. ROM poate fi doar citită, este folosită pentru a stoca permanent programul. Memoria RAM este folosită pentru a stoca temporar datele ce urmează a fi manipulate. Pe de altă parte memoria ROM are o dimensiune mult mai mare decât cea RAM.

Unitatea intrare/ieșire este cea care asigură comunicația cu componentele periferice, ele sunt dispuse paralel și au o serie de timere precum și un manager de întreruperi. Unele dintre microcontrolere au încorporate intrări analogice dar și linii ce sunt asociate cu convertoare de tipul analog-digitale cât și digitale-analogice. Porturile paralele sunt în mod normal structurate câte 8 intrări/ieșiri. Porturile seriale se folosesc de diferite tehnologii pnologii precum USB, Ethernet, I2C(circuit integrat). (Grinding & Weiss, 2007)

Tipuri de arhitecturi:

Memoria unui microcontroler stochează datele dar și instrucțiunile. Instrucțiunile trebuie să treacă secvențial prin UCP pentru a fi decodificate și executate. Datele pot fi citite sau scrise din memorie de către UCP. Așadar modul în care memoria este organizată și modul în care aceasta comunică cu UCP determină performanțele dispozitivului. Există două tipuri de arhitecuri hard pentru structurarea memoriei si anume arhitectura Von Newmann și Harvard.

figura 2.3. Arhitectura Von Newmann figura 2.4. Arhitectura Harvard

Arhitectura Von Newmann folosește o singură memorie pentru a stoca instrucțiunile și datele. Acest lucru indică faptul că există o singură magistrală de adrese ce poate accesa instrucțiuni și date. Tot o singură magistrală de date va transmite programul. Așadar nu există semnale independente. Din punctul de vedere al UCP memoria RAM și ROM formează o singură unitate de memorie. Figura 2.3 este o schemă de tip bloc a unei arhitecturi Von Newmann.

Arhitectura Harvard utilizează două tipuri de memorie pentru a stoca instrucțiunile și datele. Memoria program are propria magistrală de adrese și propria magistrală de date. Memoria de date folosește magistrala de memorie și deține magistrala de instrcuțiuni (o controlează). Memoria program poate fi doar citită, în timp ce memoria de date poate fi citită și scrisă. Arhitectura Harvard este reprezentată în figura 2.4 .

Arhitectura von Newmann are mai puține linii decât cea Harvard ceea ce face ca legarea, conectarea UCP-ului cu memoria să fie mult mai simplu de realizat.

O altă clasificare a tipurilor de arhitecturi este dată de cele două tipuri întâlnite sub denumirea abreviată de CISC și RISC. Această clasificare este realizată în funcție de setul de instrucțiuni, de complexitatea acestora. CISC (eng. Complex Set Instruction Computer) folosește un set complex de instrucțiuni, în timp ce RISC (eng. Reduced Instruction Set Computer) are mult mai puține. (Grinding & Weiss, 2007)

Atunci când au apărut pentru prima dată microcontrolerele, în domeniul microprocesoarele exista un trend de a avea instrucțiuni cât mai complexe, așa a apărut arhitectura CISC. Numărul instrucțiunilor a crescut și au ajus să fie o combinație ale unora mult mai simple. Lungimea instrucțiunilor era diferită, modul de adresare a devenit mai complex și astfel a crescut complexitatea UCP-ului și a mărimii sale pe chip.

Pentru arhitectura RISC, UCP are un set simplu de instrucțiuni. Fiecare instrucțiune îndeplinește o sarcină simplă (spre exemplu transferul dintre UCP și memorire a unor date), avantajul este că acest lucru este realizat foarte repede. Deoarece avem moduri de adresare foarte simple, complexitatea unității centrale de prelucrare este mult simplificată. Astfel se crește frecvența oscilatorului obținându-se o viteză mai mare de execuție a instrucțiunilor.

Unitatea de memorie

Așa cum am detaliat și în paragrafele de mai sus, există două tipuri de memorie RAM și ROM cu subclasificările sale, însă ceea ce contează atunci când dorim să realizăm o aplicație este modul de transfer ce are loc între regiștri și memoria de date precum și instrucțiunile aduse din memoria de instrucțiuni. Pentru a face o descriere cât mai vizuală și ușor de înțeles, memoria este văzută ca un dulap cu sertare, care odată ce este deschis/apelat ne furnizează informația ce se află în el.

O altă clasificare ce se poate face este realizată de următoarele funcții:

registrul fișier: este o memorie relativ destul de mică încorporată în µC. Este folosită pentru a reține temporar valorile cu care lucrează în acel moment UCP – văzută ca memoria de scurtă durată a UCP.

memoria de date: pentru a stoca date pe o durată mai lungă de timp, de obicei implică o memorie externă care este mult mai mare decât cea a registrului fișier. Datele ce sunt stocate pot fi pentru o scurtă durată sau pot fi stocate pe întreaga perioadă de funcționare a microprocesorului. Desigur atașarea unei memorii externe UCP necesită eforturi hardware și financiare. Din acest motiv microcontrolerele au inclusă pe cip memoria de date.

memoria de instrucțiuni: asemănător memoriei de date, memoria de instrucțiuni este o memorie externă de dimenisiuni mai mari. La arhitectura von Newmann poate avea aceeași dimensiune ca și memoria fizică. (Grinding & Weiss, 2007)

Clasificare generală a tipurilor de memorie

memoria volatilă

memoria RAM statică:asemănător unui vector cu celule, fiecare celulă este capabilă să stocheze informații în ea. Pentru a stocarea unui singur bit de informație este necesar să se folosească 6 tranzistoare. Acest lucru conduce la dimensiuni mai mari ale plăcuței.

memoria RAM dinamică: de data aceasta numărul de tranzistoare folosiți pentru un singur bit de informație este de unul. Astfel s-a redus dimensiune fizică.

memorie nonvolatilă

memoria ROM: este primul tip de memorie de tip nonvolatilă.

memoria PROM: reține datele chiar dacă s-a deconectat de la alimentare.

memoria EPROM: perioada de reținere a datelor în acest tip de memorie este, de obicei de până la 10 ani (este specificat în documentație). Însă această limitare este folosită în general ca un avantaj, prin expunerea memoriei la radiații ultraviolete acest proces de ștergere este grăbit (durează aproximativ 30 minute)

memoria EEPROM: cu acestă memorie s-a renunțat la ștergerea cu ajutorul luminii UV. EEPROM lucrează foarte asemănător cu EPROM-ul. Pentru a șterge datele se aplică o anumită tensiune ce este generată de cip. Însă există și un dezavantaj, are un număr destul de limitat de scrieri/ștergeri, aproximativ 1.000.000 cicli. Din acest motiv este bine să fie folosită pentru a stoca date pe termen lung.

memoria Flash – deoarece memoria EEPROM este scumpă s-a ajuns la un compromis și anume Flash EEPROM. Memoria Flash este o variantă a EEPROM-ului unde ștergerea nu este posibilă pentru fiecare adresă ci doar pentru blocuri mari sau chiar pentru întreaga memorie. În general memoria flah este folosită pentru program și nu pentru date.

memoria NVRAM – acest tip îmbină memoria volatilă și cea nonvolatilă Non Volatile RAM. Acest lucru poate fi obținut prin două modalități. O modalitate este adăugarea unei baterii interne unui dispozitiv de tip SRAM și astfel atunci când alimentarea exterioară este oprită, memoria SRAM reușește să rețină în continuare informațiile. O altă variantă este combinarea SRAM-ului cu EEPROM într-un singur pachet. Atunci cînd este alimentat date sunt copiate din EEPROM în SRAM. În timpul operațiilor datele sunt citite și scrise pe SRAM. Când alimentarea este întreruptă datele sunt copiate pe EEPROM.

(**, http://smithsonianchips.si.edu)

Accesul la memorie

De obicei microcontrolerele folosesc pentru program o memorie de tipul Flash EEPROM, iar pentru date o memorie de tipul SRAM și EEPROM. Problema este la modul cum adresele particulare sunt translatate în termenii memoriei de adrese. Există 2 metode în acest sens.

Prima este cea în care fiecare memorie este adresată separat (este figurat în 2.5). Programatorul specifică care dintre memorii este accesată, prin folosirea unor metode diferite de acces. Spre exemplu pentru accesarea EEPROM, un registru specific EEPROM – index este folosit.

figura 2.5. Memorie separată de adrese

Cea de-a doua metodă este cea în care memoria folosește la comun adresele.

În acest caz programatorul accesează memoria EEPROM în același mod cum o face și cu memoria de tip SRAM. Microcontrolerul foloște adresa și va decide ce memorie trebuie să utilizeze.

figura 2.6. Diferite tipuri de memorie mapate într-un singur interval de adrese

Unitatea centrală de prelucrare

Unitatea centrală de prelucrare este cea mai importană parte a unui microcontrolerului. O arhitectură de bază a UCP este prezentată în figura 2.7. .

Unitatea Aritmetică Logică – UAL sau eng ALU folosită pentru a realiza operații precum ȘI, SAU, XOR, INC. UAL preia 2 intrări și returnează rezultatul operației ca și ieșire. Sursa și destinația sunt preluate din regiștri sau din memorie. În plus UAL stochează informații cu privire la natura rezultatului, ele sunt stocate în registrul status.

Regisrul status este format din 4 componenete:

Z(zero): rezultatul operației este 0.

N(negativ): rezultatul operației este negativ, se setează bitul cel mai semnificativ cu 1.

O(overflow): operația produce o depășire, este o schimbare a semnului în operațiile complement față de 2.

C(carry): opearția produce transport.

Regiștrii microprocesorului sunt zone de memorie speciale, având o lungime corespunzãtoare unitãții de prelucrare a microprocesorului, care se folosește de cãtre unitatea de execuție pentru diverse operații și au nume specifice.

Ei se pot clasifica în:

regiștrii generali, folosiți pentru calcule, operații cu șiruri și biti, operații de intrare-ieșire.

regiștrii de segment conțin: adresa segmentului de cod curent, unde se aflã instrucțiunile programului (CS), adresa segmentului de stivã curent (SS), adresa segmentului de date curent unde se aflã zona de date a programlui (DS) și adresa segmentului de date externe (ES);

registrul pointerului de instrucțiuni (Instruction Pointer – IP) conține adresa instrucțiunii urmãtoare a programului mașinã, relativ la începutul segmentului de cod;

registrul indicatorilor de stare și control (flag-uri) conține biți care reflectã starea microprocesorului (detaliați anterior). (Pietraru, curs 2013)

Elementele componente:

ALU – unitatea aritmetică logică

SP – registrul de adrese

Z,N,O,C – regiștrii status

instrucțiunile.

figura 2.7. Arhitectură de bază a Unității Centrale de Prelucrare

(Grinding & Weiss, 2007)

Unitatea intrare/ieșire

Porturile sunt configurate la nivel de conexiune: fie ca intrări fie ca ieșiri.

Conexiune configurată ca ieșire

figura 2.8. Conexiunea unui microcontroler

Dacă ieșirea portului este 0 logic avem Tn – închis

Tp – deschis

Dacă ieșirea portului este 1 logic avem Tn – deschis

Tp – închis

Atenție: în cazul în care Tp și Tn sunt închise apare scurtcircuit între tensiunea de alimentare și masă.

Varianta A

figura 2.9. Conectarea sarcinii la ieșire

pentru 0 logic nu este alimentat.

pentru 1 logic este alimentat.

Parametrii:

IOH – este curentul dat de port

VOH – tensiunea de la ieșire

Tp și Tn sunt tranzistoare MOS

Varianta B

figura 2.10. Conectarea sarcinii la ieșire

pentru 0 logic Rs este alimentat

pentru 1 logic Rs nu este alimentat

Conexiune configurată ca intrare

figura 2.11. Conexiune configurată ca intrare

figura 2.12. Cazul intrării în starea logică 0

figura 2.13. Cazul intrării în starea logică 1

„zona gri” – în acest interval nu am garanția de modul de interpretare a microcontrolerului, dacă va considera 0 sau 1 logic. De asemenea la o tensiune cuprinsă între 0.3 VDD și 0.6 VDD ambele tranzistoare se pot închide parțial și astfel are loc scurtcircuit. Are loc creșterea temperaturii ce duce la o degradare accelerată. (Petrescu – curs, 2014)

figura 2. 14. Schema simplificată a comunicației µC prin intermediul porturilor I/O

Sursele de semnal de ceas pentru µC

Există mai multe posibilități de a obține un semnal de ceas și anume:

oscilator extern: folosit atunci când dorim să conectăm mai multe µC, astfel se extinde numărul de dispozitive periferice.

oscilator RC calibrat intern: nu prezintă o precizie crescută, se pot folosi rezistențe și condensatori separați pentru a mări acest lucru, însă nu este o soluție pentru aplicațiile ce necesită o precizie mare (exemplu un ceas de birou), erorile sunt de până la 15%. Pentru a rezolva această problemă se poate apela la calibrare, ajungându-se astfel la erori de 1%. Calibrarea se realizaeză prin modificarea rezistenței ce sunt înseriate. Un alt impediment este dependența de temperatură a rezistenței și a condesatorului. Însă oscilatorul RC are și un avantaj, acela este că se folosește ușor și că este deja încorporat în µC.

oscilator cu cristal de cuarț – Are o precizie foarte mare de 50 părți/1 milion, adică o secundă la 6 ore. Frecvența este mai mare de 1 MHz.

oscilator cu cristal de joasă frecvență: au funcționalități asemănătoare. Cuarțul se dilată și se contractă la trecerea curentului, începe să oscileze. Este dedicat aplicațiilor de tip ceas, precizia este de 5-10 părți/ 1 milion. Frecvența este egală cu Hz.

Mărirea preciziei: se poate face prin determinarea experimentală a frecvenței pe care o are oscilatorul și se adaugă în codul programului o îmbunătățire astfel încât să nu mai existe probleme de precizie. (Petrescu – curs, 2014)

Watchdog-ul

Pentru a reliza o aplicație cât mai corectă trebuie avut în vedere o funcționare fără defecte a întregii perioade de execuție a programului pe microcontroler. Preîntâmpinarea unor astfel de defecte este realizată cu ajutorul watchdog-ului, este ca un ceas de gardă, un cronometru ce “ne spune” cel puțin o dată pe secundă că este OK, iar în caz contrar dă semnal ce resetează procesorul. Watchdog-ul este pentru situații limită, funcționarea corectă trebuie realizată prin program (software) și nu trebuie lăsată în grija ceasului de gardă (câinelui de pază). Acest element conferă fiabilitate microcontrolerului. Watchdog-ul este format dintr-un oscilator si un numărător de tip binar de N biți. Oscilatorul poate fi același cu cel al microcontrolerului, dar este de preferat să fie 2 oscilatoare independente. (Pietraru, curs 2013)

figura 2.15. Diagrama de bază a Watchdog-ului

Semnalul de reset

Semnalul de reset este cel care inițializează microprocesorul și microcontrolerul. Această inițializare are loc atunci când este aplicat un anumit semnal de intrare, numit semnal de reset și este dat unui anumit pin, numit pinul de reset. Semnalul de reset, setează contorul programului la o valoare predeterminată, spre exemplu 0 și detemină µC să înceapă execuția programului de la adresa de memorie specificată. (Perez&Pallas, 2009)

figura 2.16. A. Circuitul de resetare a microcontrolerului (stânga)

B. Evoluția tensiunii în timp a unui semnal de reset (dreapta)

Consum redus. Moduri de funcționare cu consum redus pentru µC

Circuitul RC are constanta de timp . Atunci când circuitul este deschis tensiunea alimentează capacitatea (C) prin rezistența R. Dacă este suficient de mare, tensiunea de resetare VRESET este mai mică decât VTH timp în care tensiunea de alimentare devine stabilă pentru microcontroler ca el să funcționeze corect.

Există două modalități de resetare a µC. Un prim caz ar fi datorită problemelor de alimentare (prin alimenetare cu tensiune sub nivelul de 5V și astfel capacitatea se descarcă până la punctul în care VRESET< VTH). Cea de-a doua posibilitatea este semnalul de reset dat de watchdog, adică când acest semnal nu a fost actualizat și ieșirea contorului a devenit activă. Acest ultim caz are loc atunci când programul nu funcționează corect. Este foarte important ca microcontrolerul să genereze un semnal de reset, deoarece se garantează funcționarea corectă a programului.

Din cauza puterii bateriilor ce le folosesc marea majoritate a aplicațiilor cu microcontrolere, puterea de consum a devenit un parametru important. Putera de consum a unui circuit integrat depinde de trei factori: tehnologia folosită de cip, frecvența oscilatorului și valoare tensiunii de alimentare. Tehnologia CMOS este tehnologia preferată pentru fabricare deoarece nu are nevoie de o putere mare de alimentare. Consumul de putere este semnificativ doar atunci când are loc o trecere de la o stare logică la alta. Creșterea frecveței oscilatorului duce la creșterea tranzițiilor stărilor logice și astfel se crește și consumul. Este important de menționat că multe aplicații cu microcontrolere așteaptă un eveniment extern, o întrerupere înainte să furnizeze rezultatul. O dată ce a terminat, se întoarce în modul de așteptare. O descreștere a consumului de putere se realizează prin “paralizarea” microcontrolerului total sau parțial în timp ce se află în starea de așteptare până când se va primi un semnal exterior.

Cea mai bună metodă de a reduce consumul este prin oprirea oscilatorului principal. Astfel se forțează sistemul să stea într-o stare de așteptare până la primirea unei acțiuni, realizarea unui eveniment. Când acest lucru se întâmplă spunem că avem stările: idle state, power down sau sleep mode. Modelele diferite de µC au metode diferite de a intra în modul de funționare cu consum redus. Unele dintre ele au nevoie de modificarea unui bit dintr-un registru specific, altele au o instrucțiune dedicată. Însă modalitate de a părăsi modul de consum redus este de a oferi o întrerupere sau prin resetare.( Perez & Pallas, 2009)

Modurile de funcționare cu consum redus sunt:

idle – procesul este oprit, perifericele sunt funcționale. Se activează printr-un registru special, când apare întreruperea µP se deblochează instantaneu. Se reduce de 3-4 ori consumul de curent. Se folosește și la telefonale mobile sau telecomandă.

power down – nu funcționează nici procesorul nici majoritatea perifricelor. Consumul scade extrem de mult, nu se oprește ceasul de gardă(este folosit pentru trezirea µP). Excepție: se monitorizează starea pinilor, se face cu ceasul oprit. Nu se opresc porturile.

sleep mode. (Petrescu – curs, 2014)

Microcontrolerele STM

Diferite microcontrolere ce au aceeși unitate centrală de prelucrare și execută aceleași instrucțiuni fac parte din aceeași familie. Dispozitivele diferă prin dimensiunea memoriei și a numărului de porturi intrare/ieșire. Microcontrolerul cu care am ales să lucrez pentru a realiza partea practică face parte din familia STM și anume STM32F407/417. Această linie a fost creată cu precădere pentru aplicațiile din medicină, pentru mediul industrial dar și pentru aplicații fără pretenții foarte ridicate. Prezintă un nivel ridicat de integrare, memorie încorporată și o periferie bogată.

STM407/417 oferă perfomanțele unui procesor de tipul ARM de 32 biți cu unitatea centrală de prelucrare de tipul Cortex-M4 ce are FPU(eng floating point unit) ce rulează la 168 MHZ. FPU – este o componentă ce are rolul de a transporta operațiile cu numere de tipul virgulă mobilă.

Din punctul de vedere al consumului, valoarea se află sub 238 µA/MHz la 168MHz. Mai dispune de o gamă bogată de posibilități de conexiune. Există posibilitatea de a se conecta prin Ethernet MAC 10/100 cu standardul IEE 1588 V2.

Alte caracteristici sunt:

2 x USB OTG, unul cu suport HS; OTG-OnTheGo – este o specificație folosită pentru prima dată în 2001 ce permite dispozitivelor USB cum ar fi telefonale mobile, mp3-playere să se comporte ca și gazde și să permită altor dispozitive precum mouse-ul să se conecteze la acestea.

audio, coponentă audio dedicată PLL(phase-locked loop) și 2 full duplex I2S (Integrated Interchip Sound); PLL-generează un semnal de tip ieșire a cărui fază este conectată la semnalele de intrare. I2S este o magistrală serială folosită pentru a conecta dispozitivele audio, separă semnalul de ceas de date.

până la 15 interfețe de comunicație (inclusiv 6x UART ce funcționează până la 11.25 Mbit/s, 3 x SPI ce funcționează până la 45 Mbit/s, 3xI2C, 2xCAN, SDIO); UART –Universal Assynchronus Reciver/transmitter circuit integrat creat pentru implementarea intefeței de comunicație serială.

analog: 2x 12 biți DAC, 3x 12 biți ADC 2.4 MSPS sau 7.2 MSPS;

până la 17 timere: 16 și 32 biți ce funcționează până la 168Mhz;

memorie

până la 1 Mbyte de memorie Flash;

până la 192+4 kbytes memorie SRAM incluzând 64 kbytes CCM (core coupled memory) memorie RAM ;

memorie ce se poate extinde folosind memoria statică, SRAM, PSARAM, NOR și NAND;

generator random numeric;

LCD interfață paralelă, modelele 8080/6800;

Semnale de ceas, reset și managment de alimentare:

1.8 V până la 3.6 V alimentare;

POR – power on reset;

oscilator din cristal de cuarț 4-26 MHz;

circuit RC 16 MHz intern, de precizie de 1%;

circuit RTC cu calibrare de 32 kHz;

circuit intern RC de 32 kHz cu calibrare;

modurile sleep, stop, standby;

VBAT- alimentare pentru RTC, 20×32 bit registre de backup + opțional 4KB backup SRAM.

modul debug

SWD- serial wire debug și interfață JTAG. SWD – este un protocol pe 2 fire ce accesează modul dedug, JATG – Joint Test Action Group este un nume dat standardului IEE 1149.1;

Cortex-M4 Embedded Trace Macroell.

până la 140 porturi I/O cu posibilitatea de întrerupere

până la 136 porturi rapide I/O de până la 84 MHz;

până la 138 5V toleranță I/O.

CRC unitate de calcul;

94 biți ID unic;

RTC calendar hardware;

USB 2.0.

figura 2.17. Familia STM32F. Variația numărului de pini-memorie

STM32F407/417 furnizează între 512 kbytes până la 1 Mbyte memorie Flash, 192 kbytes memorie SRAM. De asemenea există memorie de tip backup de tip SRAM. (RM0090, 2014)

Modul de depanere ce poate fi folosit este:

ULINK2 – cel mai bine de utilizate este cu softul Keil MDK-ARM.

JLINK- V8 – cel mai bine este de utilizat folosind IAR EWARM.

ST-LINK/V2 – poate fi utilizat fie cu Keil MDK-ARM fie cu IAR EWARM.

ARM Cortex-M4F cu memorie Flash și SRAM încorporate

Familia STM32F407XX are la bază performanțele date de ARM Cortex-M4. Procesorul ARM Coretx-M4 este ultimul din gama de procesoare ARM pentru sisteme încorporate. A fost dezvoltat pentru a furniza o soluție cu cost redus ce îndeplinește cerințele de implementare, cu consum scăzut.

Procesorul este de tip RISC, furnizează un cod eficient și performanțe înalte. Suportă un set de instrucțiuni de tip DSP. Este o arhitectură de tip RISC pe 32 de biți ce funcționează la o frecvență de până la 168 MHz. Cortex-M4 oferă o pecizie de tip FPU (Floating Point Unit) – single precision – ce suportă toate procesările instrucțiunilor și datelor de tip single precision ale procesorului ARM. De asemenea are integrat un set întreg de instrucțiuni DSP și memorie de tip MPU ce crește securitatea aplicațiilor. DSP – Digital Signal Processor este un micropocesor specializat cu o arhitectură optimizată ce efectuează operațiile necesare procesării de semnal. MPU – memory protection unit. (PM02214, 2014)

figura 2.18. Sistem tipic de procesare digitală.

CAD – convertor anlogic – digital

DSP – Digital Signal Processor

CDA – convertor digital – analogic

ART Accelerator – accelerator memorie în timp-real adaptive

ART Accelerator este un accelerator de memorie ce este optimizat pentru procesoarele STM32 și anume ARM Cortex M4. El se folosește de performanțele procesorului ARM peste memoria Flash. În mod normal, procesorul trebuie să aștepte ca memoria Flash să ajungă la frecvențe mai înalte. Practic se folosește memoria cache pentru a se crește execuția programului. Bazat pe CoreMark peformanțele atinse datorită acceleratorului ART sunt echivalente cu starea 0 – așteptare execuție program din memoria Flash la o frecvență de până la 168 MHz.

Unitatea de memorie protejată (eng MPU)

MPU este folosit pentru a controla accesul unității centrale de prelucrare la memorie. Pentru prevenirea unei situații în care un task să acceseze o zonă de memorie utilizată deja de un alt task aflat în execuție se folosește memoria partajată. Această memorie este organizată în 8 zone protejate ce poate fi transformată în 8 subdiviziuni. Subdiviziunile au dimensiunile cuprinse între 32 bytes și toți cei 4 gigabytes de memorie adresabilă. MPU este foarte util atunci când un anumit cod trebuie certificat sau protejat împotriva unor anumite taskuri ce l-ar putea afecta. Sistemul de operare în timp real RTOS este cel care detectează atunci când are loc o acțiune de acest gen și să acționeze (ce afectează MPU-ul).

Memoria încorporată Flash

Dimensiunea memorie Flash este de 512 kbytes sau de 1 Mbytes utilizabile pentru stocare programului sau a datelor.

CRC (cyclic rerundancy check) unitate calcul

Unitatea de calcul CRC este folosită pentru a prelua codul CRC de la un cuvant de 32 de biți si de la un generator polinomial fixat. Pe durata rulării aplicației se verifică integritatea datelor transmise și stocate.

Memoria încorporată SRAM

până la 192 kbytes memorie SRAM pentru sistem, 64 kbytes memorie de date RAM;

4 kbytes memorie SRAM de backup. Această zonă de memorie este accesibilă doar din UCP și este protejată împotriva scrierii fără drepturi, este reținută în modul standby-așteaptă sau VBAT.

DMA control

Are rolul de a asigura accesul la memorie independent de unitatea centrală de prelucrare. Fără ajutorul DMA-ului atunci când UCP lucrează cu intrări/ieșiri nu se mai pot efectua alte operații. Însă cu ajutorul DMA, UCP inițiază transferul apoi efectuează alte operații în timp ce se realizază schimbul, el primește un semnal de întrerupere de la controlerul DMA atunci când operația este gata.

În cazul microcontrolerului întâlnim 2 portui DMA (DMA1 și DMA2) cu 8 fluxuri fiecare. Se poate asigura transferul între memorie-memorie, memorie-periferice și periferice-memorie. Ele suportă un buffer de tip circular, în acest fel nu mai este nevoie de scrierea unui cod special atunci când controlerul a ajuns la sfârșitul buffeului. Fiecare flux este conectat la o cerere hardware specific. DMA poate fi folosit cu următoarele periferice: I2S, DAC, Camera interface, scopuri generale, ADC etc.

figura 2.19. STM32F407

Dispozitive de tip LCD cu ecran tactil

Noțiuni introductive

Istoria tehnologiei touch screen a început în anul 1940, an în care au avut loc diferite cercetări făcute de către corporațiile de la acea vreme. Însă doar în anul 1975 această nouă tehnologie a fost cunoscută pe piață prin programul PLATO. Adevărata dezvoltare a început odată cu lansarea telefonului mobil de la Apple în 2007(iPhone). Telefonele iPhone erau destinate cu precădere segmentului business, deoarece costul unui astfel de produs era foarte mare. Un alt dezavantaj era cauzat de nevoia de a folosi un stylus, sistemul de operare, programele dar și tipul de ecran utilizat ce nu erau configurate pentru a fi folosite cu ajutorul degetelor. Alte modele au fost lansate și de firme ca Nokia sau Blackberry, Nokia 5800 și modelele Storm 9500/9530 de la Blackberry au conoscut și ele un mare success. Pincipalul scop al touchscreenului este de a înlocui principalele funcții ale mousului și a tastaurii. (**,http://inventors.about.com)

Astăzi touchscreenurile sunt întâlnite la dispositive ca: telefoanele mobile, bancomate, tablete, sisteme de navigare, aparatură electrocasnică (cuptor cu microunde, frigider), aparatură medicală. Popularitatea lor este datorată unei interfețe ușoare și intuitive, ce asigură o utilizare naturală.

Modul de funcționare presupune trei componente principale: senzorul, controlerul (unitatea de bază a ecranului, convertește diferența de tensiune ce apare la atingerea ecranului într-un semnal caracteristic ce se poate interpreta de calculator sau alte dispositive) și software (el va reacționa corespunzător, în funcție de informația pe care o primește de la controler). De asemenea softul este folosit pentru e recunoasțe ce gest a fost făcut, iar procesorul le asociază mișcarea fizică cu informațiile despre aplicația unde este utilizată și ceea ce face aceast în timpul în care a fost atins ecranul. Dacă gesturile nu se potrivesc dispozitivul ignoră respectiva atingere. Calculele se fac rapid, din acest motiv este nevoie de o putere mare de calcul.

figura 2.20 Elemente componente a ecranelor tactile

Senzorul, este sub forma unui panou ce poate avea dimensiuni variate și este sensibil la atingere. Tipurile de senzori diferă și ei, există senzori de tip capacitiv, rezistiv, de tipul “surface acoustic wave” dar există și multe alte tehnologii de funcționare infraroșu, APR, “CarrollTouch Infrared”, “iTouch Surface Wave” și altele.

Senzorii capacitivi sunt concepuți pentru a detecta materialele izolatoare și cele conducătoare de curent. Acestea sunt capabile să detecteze materiale precum hârtia, sticla, materiale plastice, apă, ulei dar și materiale metalice. Principiul de funcționare al acestui tip de senzor derivă din legea inducției electromagnetice.

Legea inducției electromagnetice (legea lui Faraday): tensiunea electromotoare indusă într-un circuit este egală cu viteza de variație a fluxului magnetic prin suprafața acelui circuit. Mai precis, mișcarea unui conductor printr-un câmp magnetic creează tensiune, ce este proporțională cu viteza de mișcare. Multe interfețe om-mașină au la bază senzori capacitivi, ei pot fi folosiți pentru a înlocui butoane sau switch-uri și astfel acoperă o gamă largă de aplicații. Se detectează o schimbare în răspunsul capacitiv la suprafața unui material. Atingerea făcută de om, chiar și dacă acesta are mâna udă este detectată de senzor, datorită matrialelor ionice ce sunt bune conductoare. Câteva aplicații sunt: aparatele casnice, periferice PC, controlul accesului, playere MP3, controlul la distanță, telefoanele mobile. Fiabilitatea mare a acestor senzori permit o mare libertate în proiectare și îi conferă un aspect plăcut.

Un exemplu de funcționare este cel dat de circuitele de la Freescale, ce au în componeță un oscilator într-un circuit integrat, el va genera o undă sinusoidală, de joasă undă (60,120 sau 240 KHz). Acest semnal se aplică unui multiplexor care acționează un electrod la un pin de referință sau la un nod de măsură internă. Se raportează la Ground și se generează un câmp electric. Când se apropie un conductor, mâna-degetul, se produce o schimbare în acest câmp, se măsoară impedanța, și se dă tensiune la ieșire. Figura 2.21 ilustrează principiul de funcționare.

figura 2.21. Schemă de principiu, funcționare senzor capacitiv

Există 2 tipuri de ecrane: cu un singur electrod sau cu electrozi multipli. La cei cu un singur electrod apare un câmp electric între electrod și deget. La cei cu electrozi multipli există deja un câmp electric, iar degetul face conectarea. Electrozii mari au o sensibilitate mărită, însă este afectat de zgomote, dar și de murdăria depusă. Dacă se folosește un spațiu mare între elctrod atunci zona nu mai este suficient de sensibilă și este nevoie de o apăsare mai puternică, deoarece semnalul este mai mic. De obicei electrodul este aflat la marginea ecranului. Atunci când se face proiectarea trebuie să se aleagă tipul de izolator (cât de subțire este acesta), mărimea zonelor de atingere, spațiul dintre ele și izolator, dacă izolatorul este comprimabil (exemplu neopren). De asemenea trebuie să se țină cont de factorii de mediu: temperatura, umiditatea, praf, dacă se intră în contact cu materiale uleioase și alți factori. O altă observație este aceea că ecranul capacitiv poate detecta atingerea simultană și dacă aceasta a fost făcută cu o intensitate mai mare sau mai mică. Senzorul este construit din mai multe straturi:

strat conductiv;

strat de sticlă;

strat conductiv;

electrodul senzorului;

strat protector – îmbunătățește rezistența la uzură și protecție.

figura 2.22. Mod de funcționare ecran capacitiv

Senzorii rezistivi, tehnologia capacitivă se bazează pe contactul a două suprafețe conductive. Suprafețele sunt transparente, conductive electric, distanța uneia față de cealalte este foarte mică. Atunci când suprafața este atinsă se realizează și contactul dintre ele, dintre suprafețe. Interfața va interpreta atingerea în coordonate (x,y) ce le transimte mai departe computerului. Avantajul acestor senzori sunt date de costul redus. Pentru a putea fi folosiți este nevoie de utilizarea unui creion sau a unei mănuși speciale. Sunt întâlniți la telefoane mobile, echipamente industriale, sisteme ieftine de uz comun. Figura 2.22. ilustrează modul de funcționare a unui senzor rezistiv. Spre deosebire de senzorii capacitivi ce sunt sensibili la mediul extern, cei rezistivi nu sunt afectați de praf, lichide sau alte impurități, ei oferă răspuns prin mișcarea ce opune rezistență la atingere. Se întâlnesc în mediul militar, chimic, unde pot apărea zgârieturi, șocuri, lovire. (Yaara, 2012)

figura 2.23. Ecran tactil – principiu de funcționare senzor rezistiv

Recunoașterea pulsului acustic – APR (Acoustic Pulse Recognition), principiul de funcționare are la bază combinarea calităților precum stabilitatea, durabilitatea, calități optice. Această tehnologie este folosită mai rar, deoarece implică costuri foarte mari. Ecranul este făcut din sticlă și este rezistent la apă, zgârieturi și alți agenți distructivi.

“AccuTouch Five-Wire Rezistive” – poate fi atins cu degetul, unghia sau cardul, are un răspuns rapid și precis. Este cel mai rezistent la zgârieturi, la spălări, umiditate.

“CarrollTouch Infrared” – are o calitate optică superioară, este potrivită pentru aplicațiile din mediu industrial sau chioșcuri de informații exterioare. Răspunsurile sunt mai pecise și rapide la fiecare atingere.

“IntelliTouch Surface Wave” – construit în totalitate din sticlă, performanțe foarte mari, nu poate să fie afectat de de interferențe, greu de desensibilizat. Folosit la jocuri, la birourile bancare.

“SecureTouch Surface Wave” – prezintă avantajele lui IntelliTouch dar se mai adaugă și o rezistență deosebită la lovituri, vandalizare, este greu de defectat. Dimensiunea ecranului cuprinsă între 10.4 – 32.0 inch, grosime 3-12 mm.

Infraroșu – trebuie atins cu un obiect cald pentru a putea detecta locul unde a fost atins. Se crează o matrice unde axele se întretaie. Ecranul este din sticlă. Reacționează la atingerea cu degetele, cu stylus, sau cu mănuși. Costurile sunt destul de ridicate. Vizibilitatea este bună, permite multiatingere. Durabilitate mare, rezistă la majoritatea factorilor externi, este rezistent.

“iTouch Surface Wave” – imagine de o calitate superioară, funcționează pe bază de CRT(Cathode Ray Tube), luminozitatea se păstrează, este rezistent la zgârieturi, vandalism și spargeri.

Cele mai des folosite ecrane sunt cel rezistive și cel capacitive, alegerea unuia dintre cele două se face în funcție de nevoia dată de proiectare (cost, mediu, precizie). Însă sunt și alte aspecte ce sunt urmărite: luminozitatea, sensibilitatea la atingere, precizie, vizibilitatea în interior. (**, http://inventors.about.com)

În paragraful următor sunt subliniate câteva dintre cele mai importante diferențe dintre cele două tipuri de ecrane: rezistiv și capacitiv. Aceste diferențe conduc utilizatorii să aleagă una dintre cele două variante în funcție de nevoile, necesitățile pe care le au.

Vizibilitate în timpul zilei la ecranul rezistiv este destul de proastă, apare efectul de reflexie a luminii, în timp ce la ecranul capacitiv este bună.

Sensibilitatea la atingere: la ecranul rezistiv este nevoie de exercitarea unei presiuni, presiune ce poate fi exercitată cu unghia, pixul, stylus, degetele chiar și acoperite de mănuși. La ecranele capacitive nu există reacție atunci când este atins cu unghiile sau cu obiecte neînsuflețite. Precizia este dată de numărul de pixeli, în timp ce în celălalt caz precizia este mult mai mică, depinde de mărimea fizică a amprentei.

Costurile: pentru rezistiv sunt reduse, des folosite la telefoanele mobile, în celălalt caz avem un cost mai ridicat. Suportul multitouch: este inexistent în primul caz dar este regăsit la capacitive.

Durabilitatea: sensibilitate crescută, astfel ecranul poate fi distrus prin zgârieturi și alte distrugeri minore; se pierde gradual precizia și necesită calibrări mai dese; un strat superior ce protejează aduce un plus de eficiență pentru ecranul rezistiv, se absoarbe din șocuri. La ecranul capacitiv ecranul exterior este din sticlă, dar este pretabil la spargere.

În ceea ce privește temperaturile 15-55 grade pentru rezistiv, iar pentru capacitive este 0-35 grade. (Yaara, 2012)

Un alt aspect important este folosirea conceptului multitouch. Prin folosirea acestui concept se înlocuiește nevoia unei tastaturi sau a mousului, se ajunge astfel la o utilizare cât mai naturală și mai eficientă. Sistemele pot fi controlate cu mai multe degete sau cu toată palma, se poate folosi de către mai mulți utilizatori în același timp. Însă interacțiunea se poate realiza chiar și prin intermediul brațelor, a mâinelor sau a întregului corp. Pentru a putea funcționa avem un strat ce are condensatori și sunt dispuși în funcție de sistemul de coordonate. Circuitele indentifică fiecare schimbare, se generează un semnal propriu atunci când este atins. Astfel se identifică atingerea multiplă a ecranului. Procesorul citește fiecare semnal primit și stabilește ce acțiune să facă, poate calcula și traseul făcut de către un deget, prin calcularea unei diferențe de coordonate.

Sistemele multitouch au fost făcute cunoscută prin intermediul firmei Apple și a modelului de telefon iPhone în anul 2007. În ziua de astăzi este o piață de miliarde de dolari ce se află încă în expansiune. După mediul în care sunt folosite avem clasificarea – home-small business bazată cu precădere pe ecarane de tip LCD și – proiectoare industriale. Mediul în care sunt folositr implică și cerințe diferite. Cerințele fac cu precădere referire la complexitate, gradul de uzură la care pot face față și nu numai.

Indiul – unul dintre cele mai rare metale de pe Pământ. Este recuperat din telefoanele moderne ce nu mai sunt folosite. Acest metal are o proprietate deosebită, se întinde pe suprafețe ca sticla, iar atunci când este îndoit provoacă un sunet de o tonalitate scăzută, numită și “țipăt”. Este folosit sub formă de oxid, iar în contact cu O2 devine transparent, are o foarte bună conductanță electrică. Mediul industrial crește și el nevoia de indiu prin cererea tot mai mare a unor dispozitive ce au tehnologia touchscreen încorporată. Necesitatea de indiu este tot mai mare, prețul la acest metal crescând exponential în ultimii ani. Din acest motiv se vorbește deja de o epocă post touchscreen dacă nu se găsește un înlocuitor. O soluție în acest sens pare să fie grafenul, o formă alotropică a carbonului ce este present în abudență pe Terra. Proprietățile sunt: maleabil, bun conductor de electricitate.

Gorilla Glass – întâlnit la majoritatea telefoanelor mobile și a tabletelor, este fabricat de firma Corning. La început se folosea în industria farmaceutică, auto sau aeronautică, este un strat de sticlă aluminosilicat, subțire, ușor ți foarte rezistent la avarii. Varianta 2 are o grosime de 0.8 mm și rezistă până la 50 kg. În 2013 s-a lansat varianta a 3-a ce este și mai subțire și mai rezistentă decât precedenta. (**,http://www.corninggorillaglass.com)

Avantajele folosirii acestui tip de ecran în industrie

Folosirea ecranelor tactile în mediul industrial ajută la simplificarea aspectului dispozitivelor de acționare precum și la reducerea complexității interfeței om-mașină. Beneficiile sunt numeroase: majoritatea lor sunt de tipul plug-and-play, oferă posibilitatea de multi touch, operații optimizate, dimensiunea ecranelor variabilă (în funcție de nevoie), pot fi ușor de curățat, ușor de folosit.

Câteva dintre caracteristicele pe care trebuie să le îndeplinească un ecran tactil industrial sunt:

au capacitatea de a fi antistatice – elimină praful;

pot fi optimzate pentru sisteme de operare ca Linux, Windows, Apple MAC;

majoritatea ecarenelor sunt multitouch de tip capacitiv, ceea ce permite comandarea fără a mai fi necesară atingerea propriu-zisă.

există ecrane tactile ce pot fi acționate de la o distanță considerabilă (exemplu tableta de la Siemens Simatic IFP 1900 MT ce se poate acționată chiar și de la 30 metri) și poate funcționa chiar și cu mănuși.

unghiul de vizibilitate trebuie să fie și el unul amplu, pentru a se putea distinge cât mai clar interfața, un unghi cât mai aproape de 180º.

trebuie să se configureze astfel încât ecranul să nu poată fi acționat neintenționat;

să nu reacționeze la obiectele metalice precum așchiile, sau la picături de apă pentru a nu se activa comenzi în mod accidental.

ingress protection.

Ingress Protection IP este o clasificare internațională IEC 60529. Protecția este pentru degete, praf sau apă. Sunt două numere ce caracterizează acest standard. Primul număr este de la 1 la 6 și este pentru obiectele solide, iar cel de al doilea este de la 1 la 8 și este pentru umezeală.

tabel 2.1. Semnificația valorilor Ingress Protection

Pentru clasificarea făcută de IP există un echivalente și anume NEMA.

tabel 2.2. Echivalența NEMA pentru valorile IP

Despre STM32F4 LCD

LCD –ul folosit pentru aplicația practică este cel din gama STM și anume STM32F4DIS, ce este un ecran de tip rezistiv de 3.5 inch adică un format de 320*240. Are 262.000 culori. Afișarea are la bază tehnica modulării prin pulsație. Interfața este un sistem paralel de 16 biți.Tipul ecranului este rezistiv.

figura 2.24. STM32F4 LCD

tabel 2.3. Interfața TFT_LCD

Sisteme de comunicație industriale

Sistemele de comunicație au la bază protocoalele de comunicație. Pentru ca sistemul de comunicație să fie cât mai fiabil, protocoalele folosite trebuie să fie și să ofere:

bună viteză de reacție;

să fie cât mai simple;

să aibă toleranță la defecte;

să ofere garanție de timp real;

să fie interoperabile dar și scalabile.

Prin utilizarea microcontrolerului STM32F407 doresc să dezvolt o aplicație ce se folosește de interfața de comunicația Ethernet. În următoarele subcapitole voi dezvolta câteva dintre aspectele legate de Ethernet și HTTP necesare realizării aplicației.

Ethernet

Ethernetul este un protocol ce apaține de primele 2 niveluri ale lui OSI și anume nivelul fizic și nivelul legătură de date. Este utilzat pentru a realiza rețele locale de tip LAN. A fost standardizat deS IEEE și permite transimisia în mediile fizice ca și: cablurile torsadate, fibra optică, cablurile coaxiale. Istoria Ethernetului a cunoscut o dezvoltare continuuă, s-a plecat de la un cablu central pentru a se conecta 2 calculatoare la astăzi unde de folosesc huburi, switchuri- comutatoare, bridge – punte și repetoare. Ceea ce este de menționat este faptul că deasupra nivelului fizic, unde se află biții, transimisia datelor se face cu ajutorul pachetelor ce se transmit și se recepționează unul câte unul.

Pentru ca două dispozitive să comunice este necesar ca acestea să aibă o adresă fizică, MAC, dar și o adresă virtuală IP. Adresa MAC este unică și se accordă fiecărui dispozitiv ce se poate conecta la o rețea, dimensiunea unei este astfel de adrese este de 48 biți. Se folosește pentru a se identifica destinația pachetelor ce urmează a fi trimise și sursa de proveniență. IP-ul este și el un protocol ce se folosește de internet pentru a transimte date, și această adresă este unică. Însă cea care contează pentru protoclul Ethernet este adresa fizică, MAC.

Cablurile coaxiale au viteza cea mai mică, au fost primele cabluri folosite pentru a interconecta dispozitivele, a urmat cablurile torsadate ce au o viteză mult mai mare și pot transimte pe o distanță mult mărită. Cele mai bune performanțe sunt obținute de fibra optică, însă aceasta este destul de costitoare.

Codificarea folosită pentru a transimte este Manchester (-0,85) – (+0,85) V.

Formatul cadrului Ethernet folosit astăzi presupune un antet, o zonă de date și patru octeți (sumă de verificare). Antetul este un preamubul ce oferă dispozitivelor un timp pentru a citi semnale, înainte să ajungă datele. Date – datele oferite de la nivele superioare. Suma de verificare este realizată prin intermediul algoritmului CRC. (Rughinis et all, 2007)

figura 2.25. Cadrul Ethernet

HTTP

Atunci când se accesează informația prin intermediul internetului, cel mai utilizat protocol este HTTP. HTTP este un protocol text ce aparține ultimului nivel, nivelul aplicație, el accesează informația aflată pe servărele WWW – World Wide WEB. Pentru a rula HTTP pe un dispozitiv este necesar să existe un program ce știe să-l folosească. Fișierele trimise prin intermediul protocolului pot fi: fișiere video, text, sunet etc. Este un protocol simplu, deoarece fiecare comandă este executată independent, fără a se cunoaște starea celorlalte comenzi ce vor fi executate. Din acest motiv este greu de implementat un site WEB ce să răspundă inteligent la acțiunile utilizatorului. O soluție este oferită de noile tehnologii precum ActiveX, JavaScript sau cookies.

Există două modalități prin care se poate transmite, respectiv primi informații și anume HTTP – GET și HTTP – POST. Așa cum indică și numele prin GET se obțin inforamții de la sursă, iar prin POST se face un transfer de date în sens invers.

Metodele ce se pot utiliza sunt: GET, HEAD, PUT, POST, DELETE, TRACE, OPTIONS, CONNECT. GET – folosit pentru a cere informații, surse de la un server. PUT – trimite el informații către server, sub formă de documente. POST – pentru a trimite datele către un server. DELETE – se șterg datele, documentele de pe un server, este inversul metodei PUT. TRACE – face diagnoză. OPTIONS – ne dă tipul de server WEB, parametrii săi. CONNECT – prin ce servere intermediare a mai trecut informația.

Un alt aspect ce cauzează destul de mult neplăceri sunt erorile generate, de exemplu codul 404 – Pagina nu a fost găsită, adică serverul nu a putut găsi pagina la care s-a făcut cererea. Ceea ce indică faptul că respectiva pagină fie a fost ștearsă, redenumită sau mutată. Astefel cunăscând codul erorii, se pot corecta anumite probleme ce pot apărea pe parcursul utilizării HTTP-ului. (Rughinis et all, 2007)

Server

Serverul are principalul scop de a furniza servicii către aplicațiile de tip client. Aplicațiile de tip client sunt cele care fac cereri către server. Clienții sunt cei care fac conexiunea cu serverele.

figura 2.26. Funcționare aplicație server-client

Serverele sunt în general calculatoare, dar cu o configurație puțin diferită, optimizată pentru funcțiile ce trebuie să le îndeplinească ( memorie mai mare). De asemenea ele rulează programe speciale ce diferă de cele care rulează în mod obișnuit pe calculatoarele personale. Printre caracteristicele ce diferă de cele ale unui calculator obișnuit sunt:

sisteme de răcire mai bune – ventilatoare mai mari;

hard discuri de capacitate mai mare;

în schimb viteza de procesare nu trebuie să fie una la fel de mare;

operațiile I/O sunt executate cu o viteză mai mare deoarece lipsește interfața grafică utilizator.

nu se are placă de sunet;

nu are porturi USB;

pentru o mai bună fiabilitate se folosesc mai multe microprocesoare;

sistemele de operare sunt: Solaris, UNIX, LINUX.

(John Wiley & Sons, 2011)

Particular, un server web oferă pagini web prin intermediul internetului, deține paginile.

URL

HTML static

figura 2.27. Furnizare pagină statică

Majoritatea conexiunilor ce au loc în internet se bazează pe acest tip de model și anume pe modelul de client-server. Pentru ca Internetul să dețină cantitatea enormă de informație de care dispune, el apelează la multiple servere ce rulează permanent. Pentru ca un client să primească informația cerută este nevoie ca unul sau mai multe servere să comunice între ele și astfel să răspundă clientului.

Există mai multe servicii care rulează pe servere și anume: e-mailul, FTP- face transferul de fișiere, messenger- mesaje instantanee etc.

Implementarea interfeței de control

În acest capitol este detaliat cum am realizat partea practică a lucrării de licență, ce tipuri de conexiuni am folosit, limbajul de programare utilizat, mediul de programare pentru dezvoltarea aplicației, dar și soluția pe care am găsit-o. Pentru implementarea interfeței de control a fost necesară parcurgerea unor etape și anume:

realizarea conexiunii dintre calculator și microcontroler pentru a putea încărca aplicația în memoria microcontrolerului;

realizarea conexiunii dintre microcontroler și ecranul tactil;

relizarea unei aplicații pentru ecranul tactil;

realizarea unei aplicații WEB.

figura 3.1. Modul de funcționare al aplicației

Figura de mai sus este o schemă reprezentativă a modului în care funcționează aplicația. Conexiunea la server se poate face de pe orice dispozitiv conectat la internet dacă dispozitivul respectiv are IP-ul setat în aceeași rețea. IP- ul pe care îl are microcontrolerul este 192.168.0.10. STM32 LCD afișează interfața corespunzătoare și poate da comenzi suflantei prin intermediul microcontrolerului. Suflanta este conectată la microcontroler.

Procesul tehnologic

Procesul comandat cu ajutorul microcontrolerului este instalația ELWE, instalația are scop didactic și se poate studia reglarea temperaturii, presiunii sau a debitului unui volum de aer. Temperatura este modificată cu ajutorul une rezistențe electrice (rezistență ce poate fi modificată) și a unui ventilator ce introduce aer în tub. Există o protecție de tip releu ce nu permite ca aerul din interior să se încălzească la mai mult de 140ºC. Presiunea și debitul de volum sunt și ele reglate prin ventilatorul de aer ce absoarbe aerul din exterior.

Regimurile de lucru considerate sunt în mod clasic manual și automat.

Modul manual, în care se dă comanda directă către proces, avem bucla deschisă. Modul automat, se alege structura de reglare, iar acesta va genera comenzi pentru a se urmări referința și a se rejecta perturbațiile. Bucla este închisă.

Pentru a regla presiunea și temperatura se folosește un regulator de tip PID. Pentru presiune parametrii ce trebuie setați parametrii Kr și Ti (pentru a se regla presiunea este suficient un regulator de tip PI), iar pentru temperatura trebuie setați parametrii Kr,Ti și Td.

Măsurarea temperaturii se face cu ajutorul a două traductoare. Temperatura poate fi măsurată în patru puncte diferite. Presiunea este măsurată cu un senzor diferențial.

(Pătrașcu & et al., 2011)

figura 3.2. Schema de reglare

figura 3.3. Suflanta ELWE

Soluția software

Realizarea aplicației software a presupus folosirea mai multor medii de dezvoltare:

IAR Embedded Workbench;

Microsoft Visual Studio;

Coffee Cup Free HTML Editor;

Utilitar:

Mozila Firefox

Life of Request – LORI

HxD

Pentru a scrie aplicația am folosit așa cum am menționat în introducere, programul de dezvoltare IAR. Acesta permite programarea atât în assembler cât și în limbaje de nivel înalt C și C++. De menționat este că indiferent de limbajul ales, programul permite utilizatorului să vizualizeze modul de lucru al regiștrilor și cum sunt aceștia utilizați de programul compilat. IAR este ușor de folosit. Programatorului i se oferă o destul de mare libertate în programare, de asemenea are posibilitatea de a rula programul cu ajutorul simulatorului dar și de a încărca direct pe µC. În cazul unor erori de sintaxă, în momentul compilării nu este permisă lansarea programului în execuție, pănă ce respectivele erori nu au fost corectate.

IAR este:

eficient: folosit pentru microcontrolere de 8, 16, 32 de biți ce se pot programa în C/C++;

cu interfață prietenoasă: ușor de folosit datorită intefeței funcționale de care dispune;

de încredre, sigur;

standardizabil.

Transferul programului se face modificând anumite setări din programul de dezvoltare a softului. În figurile de mai jos (figura 3.4, figura 3.5., figura 3.6) sunt prezentate modificările ce trebuiesc realizate pentru a putea descărca aplicația pe microcontroler.

figura 3.4. Alegerea familie microcontrolere

Există 2 moduri de a rula o aplicație :

simulare – cu simulator

prin intermediul ST-LINK

figura 3.5. Mod simulator figura 3.6. ST-LINK

După ce s-au realizat setările, programul este compilat (figura 3.7), iar dacă nu există erori se încarcă în memoria flash a microcontrolerului.

figura 3.7. Compilare program și încărcare în microcontrolere

Pentru a face convesriaunor fișiere ( *.jpg, *.png,*.html,*shtml, *.gif) am folosit utilitarul HxD care permite introducere fișierului dorit și afisează codul în hexazecimal. În figura 3.7 Sigla_ACS.gif a fost convertită în cod hexazecimal. Acest lucru a fost necesar pentru scrierea paginii HTML în mediul IAR.

figura 3.8. Utilitarul HxD

Microsoft Visual Studio 2010 a fost folosit pentru a implementa un program ce transformă fiecare grup hexazecimal în forma dorită. Pentru a realiza serverul Web în IAR a fost necesar scrierea în cod hexazecimal a paginilor html. Figura 3.9. este codul în C++ ce transformă fișierul brut în formatul dorit și anume “0xaa”.

Codul pentru a scrie în formatul dorit în hexazecimal este:

figura 3.9. Cod C++ ce rescrie grupurile hexazecimale

Rezultatul returnat de acest program este un fisier .txt ce are grupurile hexazecimale scrise sub forma:

figura 3.10. Exemplu rezultat al executării programului anterior

HTTP server

Aplicația implementată are următoarele caracteristici:

interpretare, parsare URL – fiecare document are o adresă ce se determină cu ajutorul URL-ului, formatul este: protocol://numele_domniului/calea_acestuia. Protocolul este în general http, domeniul este numele pe care il primește acel document pentru a putea fi identificat pe Internet, iar calea este locul unde se află respectivul fișier.

suport pentru CGI (eng Server Side Includes), CGI – este o metodă ușoară de a accesa și de a controla un sistem încorporat prin intermediul unui server WEB. CGI este o tehnică web standard folosită pentru a executa cererile de la client și de a le oferi un răspuns la ele.

suport pentru SSI ( eng Server Side Includes) – este un limbaj folosit cu precădere pentru WEB. SSI este folosit pentru a include în mod dinamic date în codul HTML. Acest lucru este posibil folosind formatul <!–#tag–>. Conversia analog digitală – ADC, este realizată folosind tagul<!–#t–> în interiorul codului HTML. În momentul când există o cerere de conversie ADC, ce are extensia .shtml, serverul va interpreta – parsa pagina, iar când tag-ul va fi găsit – valoarea înscrisă se va face conversia.

suport pentru cereri HTTP Post.

Pentru a realiza pagina Web am fosit programul Coffe Cup,ce este un program ce poate fi folosit liber și care ajută la o mai bună vizulizare a codului HTML.

figura 3.11. Coffe Cup – editor HTML

Soluția hardware

Pentru a realiza partea practică a acestei lucrări am avut nevoie de :

microcontrolerul STM32F4DISCOVERY;

modulul STM32F4DIS- BB;

ecranul tactil LCD, STM32F4DIS-LCD;

cablu USB tip A – mini B;

cablul panblică;

cablul Ethernet crossover.

figura 3.12. Modulul STM32F4DIS- BB

Realizarea conexiunii dintre laptop și microcontroler se face cu ajutorul unui cablu USB. Cablul USB are două funcții: prima este cea de alimentare a µC, iar cea de a 2- a este de a permit transferul programului de pe calculatorul personal în memoria dispozitivului. Cea de-a doua funcție este, defapt un port virtual COM.

figura 3.13. Modulul STM32F4DIS- BB- CONEXIUNI

figura 3.14. DevKit407

Pentru a putea conecta dispozitivul de tip touch screen a fost necasară adăugarea unui modul suplimentar, STM32F4DIS-BB la plăcuța microcontrolerului, STM32F4DISCOVERY ce dispune de pinii necesari pentru conectarea cu modulul LCD. Legătura propriu zisă se realizează cu ajutorul unui cablu panblică. Conexiunea dintre modulul suplimentar și microcontroler se realizează prin conexiunea la pinii CON1 și CON2. Conexiunea cu LCD-ul se realizează prin CON3.

figura 3.15. Conexiunile pentru realiarea aplicației parctice.

Pentru a putea reliza comunicația cu serverul ce rulează pe microcontroler este necesar folosirea unui cablu Ethernet crossover ce leagă calculatorul personal de STM32F4 DISCOVERY.

Realizarea conexiunii pentru server:

Calculatorul personal este setat cu IP-ul 192.168.0.11, microcontrolerul are IP-ul static 192.168.0.10.

figura 3.16. Setare IP pentru microcontroler

figura 3.17. Setare IP pentru calculator personal

Rezultate obținute

Implementarea fizică este reprezentată în cele două imagini de mai jos ( figura 4.1. figura 4.2 și figura 4.3).

Imaginile prezintă și conexiunile fizice:

conexiunea USB dintre microcontroler;

conexiunea dintre LCD și microcontroler realizat prin calul de tip panglică;

pentru a realiza transferul de date pentru server am folosit un cablu Ethernet (cablul negru). Alimentarea se face tot prin intermediul USB-ului.

figura 4.1. Microcontrolerul STM conectat la modulul STM32F4DIS- BB

Componentele fizice sunt:

8 leduri din care: LED1 verde/roșu pentru comunicația USB, LED2 roșu pentru alimentarea la 3.3 V. Pentru utilizatori ledurile sunt cele cu numărul 3 – portocaliu, 4 – verde, 5 – roșu, 6 – albastru. Pentru comunicția USB OTG LED7 de culoare verde și LED8 – roșu supra curent.

două butoane – pentru utilizator și reset.

CS43L22, audio CAD;

USB OTG FS cu conector micro AB;

accelerometru pe 3 axe;

MP45DT02, senzor audio ST MEMS, omni- direcțional microfon digital;

32768Hz cristal LSE;

8 Mhz cristal;

pini I/O;

16 canale DMA;

ST-link/V2 încorporat pentru debug și programare;

microfon.

figura 4.2. LCD35RT

STM32F4DIS:

ecran de de 3.5 inch adică un format de 320*240;

are 262.000 culori;

interfața este un sistem paralel de 16 biți;

tipul ecranului este rezistiv.

figura 4.3. Conexiuni STM32 aplicație

Pentru a realiza serverul WEB am relizat un site ce rulează pe calculatorul personal în momentul în care aplicația rulează pe microcontroler. Pagina are 3 meniuri: informatii, mod manual/mod automat și istoric comenzi.

Meniul oferă informații succinte cu privire la avantajele folosirii acestei soluții, dar și date despre instalație și ce caracteristice are. Figura 4.4. este o captura de ecran a paginii principale.

.

figura 4.4. Index

Meniul Mod manual/Mod automat

În acest meniu utilizatorul poate alege între unul din cele două moduri de reglare (manuală sau automată). Pentru reglarea manuală utilizatorul trebuie sa introducă de la tastatură valorile pentru parametrii Kr, Ti și Td. Regulatorul folosit pentru temperatură și presiune este de tip PID, acesta este motivul pentru care avem acești parametri. Pentru modul automat, utilizatorul trimite comanda send.

figura 4.5. Mod manual/Mod automat

Pentru a putea transmite valorile m-am folosit CGI, pentru a înregistra cererile de la client.

figura 4.6. Utilizare CGI pentru a înregistra cererile de la clienți

În cadrul acestui meniu sunt înregistrate comenzile date prin intermediul touchscreenului. Se înregistrează tipul comenzii, numărul ei și la ce dată și oră au fost executate.

figura 4.7. Istoric comenzi

figura 4.8. Folosire SSI

Pentru a putea prelua datele de la microcontroler am folosit în codul sursei HTML tag de tip SSI <!–#t–> .

În cazul în care apare o eroare, nu se poate conecta la server, în browser apare pagina din figura 4.9.

figura 4.9. Cazul în care pagina solicitată nu este găsită.

Dacă prin intermediul interfeței web, instalația poate primi comenzi atât pentru reglarea automată cât și pentru cea manuală, în ceea ce privește ecranul tactil reglarea poate fi realizată doar pentru modul automat.

Aplicația presupune o etapă de calibrare. LCD-ul afișează pe rând, în cele patru colțuri un punct ce trebuie atins. Pentru a realiza o calibrare corectă este necasar folosirea unui stilou. Stiloul oferă o atingere mai precisă decât cea oferită de deget și astfel calibrarea este mai exactă. Dacă calibrarea nu a fost reușită se afișează un mesaj în acest sens, “calibrarea incorectă” după care se reia procesul de recalibrare. Dacă calibrarea a fost corectă se afișează din nou un mesaj “ calibrarea corectă ” și se trece la pasul următor. În continuare LCD-ul va afișa un mesaj ce atenționează utilizatorul să atingă ecranul. Atingerea se poate face în orice punct de pe ecran.

După atingerea ecranului, în momentul următor va apărea un buton “reglarea automată”, pentru a putea accesa meniul este necesar ca utilizatorul să apese pe zona demarcată de buton. Meniul conține trei butoane: reglare temperatura, reglare presiune și înapoi. Pentru a putea accesa unul din butoanele meniului trebuie apăsat pe una din zonele delimitate. În cazul în care ecranul este atins în altă zonă acesta nu reacționează.

Butoanele au următoarele funcționalități:

reglare temperatură: la apăsarea butonului apare un mesaj “ se regleaza temperatura” și un buton “opreste” care prin apăsare se întoarce la meniu;

reglare presiune: la apăsarea butonului apare un mesaj “ se regleaza presiunea” și un buton “opreste” care prin apăsare se întoarce la meniu;

înapoi: după 2 secunde microcontrolerul se întoarce la partea de calibrare a ecranului.

Figurile de mai jos ilustrează modul cum am implementat meniul.

după 20 sec

calibrare incorectă calibrare corectă

s-a apăsat butonul de înapoi

atingere în orice punct

atingere în zona delimitată de buton

butonul r. temperatura butonoul r. presiune înapoi

Folderul programului conține următoarele surse:

fs.c

hhttpd.c

httpd_cgi_ssi.c

LCD_Touch_Calibration.c

main.c

netconf.c

stm32f4x7.c

STMPE811QTR.c

system_stm32f4xx.c

Fișierul fs.c – are implementat funcții unde:

se definește numărul maxim de fișiere ce pot fi deschise

se definește structura pentru alocarea memoriei

alocă memorie pentru fișierele ce se vor deschide

deschide fișiere

citește datele din acestea(din fișierul deschis)

le închide

bibliotecile incluse sunt:

#include "lwip/opt.h" – este o implementare ușoară a protocolului TCP/IP. Scopul este de a micșora dimensiunea codului prin executarea funcțiilor de care este cu adevărat nevoie în aplicație.

#include "lwip/def.h"

#include "fs.h"- deschide, citește și închide fișierele la nivel mai jos.

#include "fsdata.h"

#include <string.h>- pentru a putea lucra cu string-uri.

Fișierul httpd.c are rolul: de a înlocui orice tag de forma <!–#tag–> în orice fișier cu extensia .shtml, .shtm sau .ssi și să înlocuiască cu stringuri ce sunt furnizate de funcția http_set_ssi_handler(). Pentru a se putea folosi SSI și CGI trebuie definit LWIP_HTTPD_SSI respectiv LWIP_HTTPD_CGI ce vor fi scrise în lwipopts.h. În mod automat serverul presupune că headerul HTTP este deja prezent în fiecare fișier stocat. Prin definirea LWIP_HTTPD_DYNAMIC_HEADER în lwipopts.h comportanetul normal poate fi modificat astfel încât serverul să insereze automat headerul. Acest lucru este posibil prin adugarea extensiei și o locului unde se află acestea în calculator.

Fișierul httpd_cgi_ssi.c are implementat funcții pentru a prelua datele de la microcontroler dar și pentru a transimte informații către server.

Observații despre SSI:

nu este acceptat caracterul “-” pentru tag;

lungmiea maximă a numelui dat tagului ete de 8 caractere;

este permisă folosirea spațiului alb după <!–# și apoi se poate continua cu –>.

Folosirea CGI presupune folosirea cererilor de tip GET și poate suporta până la 16 parametri ce sunt scriși în URL.

netconf.c – configurare DHCP. DHCP este un protocol standardizat folosit pentru a atribui adrese IP interfețelor și serviciilor. Cu ajutorul DHCP-ului dispozitivele cer o adresă IP și parametrii de rețea de la un server DHCP. Se reduce nevoia pentru administrarea unei rețele sau cazurile în care utilizatorul trebuie să configureze manual.

stm32f4x7_eth_bsp.c – are implementate funcții pentru inițializarea conexiunii prin Ethernet, configurarea adresei MAC și configurare DMA.

Fișierul stm32f4xx_it.c – sunt scrise modul de tratare a excepțiilor și a întreruperilor provocate de periferice. Excepțiile tratate sunt:

defecțiuni hardware – se intră intr-o buclă infinită;

gestionare memorie – atunci când are loc o excepție în ceea ce privește gestionarea memorie se intră într-o buclă infinită.

defecțiuni la magistrală.

STMPE811 QTR.c – este driverul pentru touchscreen .

system_stm32f4xx.c – furnizează două funcții și o variabilă globala ce pot fi apelate și anume:

SystemInit() – setează timpul sistemului în funcție de configurațiile făcute. Această funcție este apelată la începutul execuției programului, imediat după ce a fost resetat. Acest apel este făcut în interiorul fișierului startup_stm32f4xx.s .

SystemCoreClock – variabilă

SystemCoreClockUpdate – reactualizează variabilele SystemCoreClock.

LCD_Touch_Calibration – fișierul conține codul pentru partea de calibrare și codul pentru meniu. Are implementate funcțiile:

void Lcd_Touch_Calibration(void) – se execută până când calibrarea este corectă;

void reglare_presiune (int x, int y) – primește ca parametri coordonatele punctului apăsat pe ecran atunci când este afișat meniul. Se verifică dacă punctul apăsat se află între limitele impuse. Dacă este între limite atunci se afișeză meniul pentru închideți.

if ((x > 3600) || (x < 2400) || (y > 2500) || (y < 1680))

void regla_temperatura(int x, int y) – primește ca parametri coordonatele punctului apăsat pe ecran atunci când este afișat meniul. Se verifică dacă punctul apăsat se află între limitele impuse. Dacă este între limite atunci se afișeză meniul pentru deschideți.

if ((x >3600) || (x < 2400) || (y > 1400) || (y < 600))

void inapoi(int x, int y) – – primește ca parametri coordonatele punctului apăsat pe ecran atunci când este afișat meniul. Se verifică dacă punctul apăsat se află între limitele impuse. Dacă este între limite atunci se afișeză meniul pentru înapoi.

if ((x > 3600) || (x < 2400) || (y > 3600) || (y < 2800))

void Calibration_Test_Dispose(void) – se execută imediat după ce calibrarea este realizată corect. La primul pas utilizatorul trebuie să apese ecranul în orice punct. Condiția ce trebuie respectată este:

if ((point_new.x > TOUCH_AD_VALUE_MAX)

|| (point_new.x < TOUCH_AD_VALUE_MIN)

|| (point_new.y > TOUCH_AD_VALUE_MAX)

|| (point_new.y < TOUCH_AD_VALUE_MIN))

Unde :

TOUCH_AD_VALUE_MAX (4000)

TOUCH_AD_VALUE_MIN (100)

4000 și 100 sunt valorile în modul ale capetelor ecranului.

Apoi, utilizatorul trebuie să atingă butonul – reglare automata în zona demarcată de condiția pentru apăsarea butonului meniu este :

if ((point_new.x > 2600) || (point_new.x < 1400) || (point_new.y > 2600) || (point_new.y < 1400))

În imaginile de mai jos este arătat practic soluția implementată:

figura 4.10. Calibrare ecran

figura 4.11. Utilizatorul începe să folosească aplicația propriu-zisă

figura 4.12. Meniul principal

figura 4.13. Butonul de reglare temperatură a fost apăsat.

Figurile de mai jos exemplifică modul de funcționare al aplicației:

Cerere pentru a încărca pagina WEB prin IP

Alimentarea µC și transfer program

Răspunde la cerere

furnizează informațiile primite de la LCD

Trimite informații atunci când apare un eveniment

Prelucrează datele primite

în funcție de rezultat se trece la starea următoare

Așa cum am prezentat și în introducere, scopul lucrării mele de licență este de a oferi o alternativă la soluțiile deja existențe la oră actuală pentru a comanda și controla un proces cu ajutorul unui ecran tactil și a unui server WEB.

Alternativa la componetele deja existente și folosite la scară largă, aduce două beneficii importante:

un cost mai redus al componentelor;

durată de execuție mai mică, datorită programării la un nivel inferior față de celelate cazuri.

Rezulatele obținute de mine se doresc a se apropia cât mai mult de nevoile și cerințele ce sunt la ora actuală în industrie. Folosirea unei comunicații cât mai sigure, ce să ofere un răspuns în timp real, stocarea unor date, a informațiilor vitale ale procesului sunt câteva din aspecetele ce trebuiesc respectate pentru că aplicația să fie cât mai corectă și utilă.

Făcând o paralelă cu celelalta echipamante existențe, cu precădere o comparație cu soluția data de SIEMENS și anume:

touchpanelul KTP;

automatele programabile din gamă S7;

mediul de dezvoltare TIA Portal.

am încercat să redau cât mai multe funcționalități aplicației mele.

figura 4.14. SIMATIC HMI KTP600 Basic color

În cele ce urmează sunt prezentate câteva dintre caracteristicele touchpanelului KTP600 Basic mono/color PN:

interfață PROFINET;

spațiu ce oferă posibilitatea de prindere cu cleme;

ecran cu atingere tactilă;

butoane function (F-uri).

Condițiile de funcționare sunt:

se pot folosi atât în poziție verticală cât și în poziție orizontală;

temperatură maximă ambientală este de maixm 40º C și minim 0º C;

Temperatura de funcționare a LCD35RT este cuprinsă între -10º și 60º, adică are un spectru mai mare de utilizare ce nu afectează componentele.

În momentul în care conexiunea a fost realizată, sistemul de operare ce rulează pe touchpanel permite accesarea a 3 meniuri: transfer, start și control panel. Atunci când se accesează meniul Control Panel se pot face setări pentru comunicație, protejare cu parolă, modul de transfer, salvarea ecranului de asemenea și setări ale sunetului (la atingerea ecranuluise pot emite sunete).

Profinet este un protocol ce coordonează în același timp și datele de tip TCP/IP cât și transmisiile de tip timp real. Se folosește de standarde precum Ethernet, TCP/IP etc (Dumitrașcu, curs 2014). Acest lucru este asemănător deoarece și în cazul aplicației transferul de date pentru server se realizează prin cablul Ethernet ce are definite și se folosește de standardele menționate anterior. Este folosit pentru industrie, special creat pentru acest tip de mediu – se poate face un schimb de informații biderecțional, acest lucru este comun pentru ambele cazuri. O altă caracteristică comună este aceea că se poate implementa caracteristica de timp real, Ethernet – în timp real. Cee ce oferă profinet în plus este integrarea unor sisteme cu o magistrală de câmp.

Pentru a atribui HMI-ului un IP se accesează meniul “Profinet” și se deschide căsuța pentru “ profinet Settings”. Se pot alege două moduri de atribuire a adresei IP: folosind protocolul DHCP sau introducând adresa de către utilizator. Următorul pas este introducerea vitezei de transmitere a PROFINET, viteza poate fi de 10 Mbps sau 100 Mbps. Modalitatea de transimtere poate fi full duplex sau half duplex. Dacă adresa de IP și masca ( Subnet Mask) a fost atribuită corect atunci atribuirea IP-ului a fost reușită. Figura de mai jos ilustrează modul în care se face conexiunea dintre touchpanel și calculatorul personal.

figura 4.15. Conexiune touchpanelul KTP și PC

Pentru a permite transferul de date între cele două dispozitive trebuie realizați pașii exemplificați în figura 4.14.

figura 4.16. Permiterea transferului de date prin Ethernet

Folosirea dispozitivelor cu ecran tactil specializat precum a celor de la Siemens: SIMATIC HMI au avantajul de a fi mult mai ușor de programat și oferă un grad de protecție mai ridicat. Interfața ce este disponibilă este mult mai pritenoasă, utilizatorul putând să o folosească intuitiv. Prin aplicația creată de mine am dorit să obțin același lucru. Meniul este simplu și intuitiv.

Pașii care trebuie parcurși pentru a configura un IP folosind SIMENS, în cazul aplicației sunt preluați de codul programului, asignarea este automată. Este necesară doar setarea pe calculatorul personal a IP-ului din aceeași clasă cu cea a dispozitivului conectat. Rata de transfer pentru comunicația Ethernet este în amble cazuri 10/100 Mbs. La microcontrolerul STM se poate realiza și comunicația serială RS2323 prin port serial.

Însă soluția utilizată de mine aduce avantajul posibilităților multiple de programare, nu există constrângeri așa cum există în cazul soluțiilor specializate și poate fi folosit în multiple scopuri, nu doar în interes industrial.

Un alt avantaj este cel al timpului de rulare al programelor. În cazul scrierii programelor pentru HMI-urilor de la SIEMENS se folosește Step 7 ca mediu de programare, și se utilizează programarea cu FBD (Function Block Diagram), SFC etc, în schimb pentru a programa touchscreenul de la STM am folosit limbajul de programare C, iar mediul de programare IAR Embedded Workbench 7.0. Folosirea lui Step 7 ca și mediu de dezvoltare implică un timp de execuție al programelor mult mai mare, deoarece se folosesc limbaje de nivel mai înalt și este nevoie de conversie pentru a se ajunge la limbajul mașină. Pentru cazul IAR timpul de execuție este mult mai mic deoarece limbajul folosit este de un nivel mai scăzut decât cel menționat anterior.

LORI – Life-of-request – este o exetensie ce se poate adăuga la Mozila Firefox și este util pentru a arăta durata de viață a interogării. Extensia adaugă o bară de status în josul paginii și sunt arătați următorii parametri:

TTFB – cât timp a durat pentru a vedea primul byte de la server ( de la click la primul byte primit). Această valoare permite estimarea momentului când browserul poate să furnizeze conținutul;

TTC – cât timp a durat pentru a arăta pagina ( de la primul click până la arătarea paginii complete);

Dimensiunea paginii – numărul de bytes folosiți pentru a arăta pagina;

Numărul de cereri – numărul de cereri pentru a se face sincronizarea conținutului.

Aceste valori pot fi interpretate astfel:

pentru TTFB cu cât este mai scurt cu atât este mai bine. Chiar și pentru paginile mai mari ca dimensiune- timpul este mai mic de 5 secunde – se permite browserului să afișeze conținutul cât mai repede posibil.

TTC, în mod evident cu cât este mai scurt cu atât este mai bine. Ca și înțelegere, tot ce este mai mare de 7-10 secunde- este perceput de utilizator ca fiind lent.

dimensiunea paginii, cu cât este mai mică cu atât este mai bine. Cele mai rapide site-uri sunt cele ce au dimensiunea în jurul valorii de 75KB per pagină.

numărul de cereri, cu cât mai mic cu atât mai bine. Nu mai este semnificativ pentru HTTP, dar trebuie avut în vedre cazurile când valoare este mai mare de 50 ( un număr mare de cereri presupune o dimensiune mare a paginii).

Mai jos sunt câteva valori înregistrate pentru a face o comparație între pagina Web creată de mine si alte câteva pagini.

tabel 5.1. Parametri pentru paginile comune

tabel 5.2. Parametrii pentru paginile aplicației

Din cele două tabele se observă că parametrii ce indică timpul și dimensiunea se încadrează în normele indicate. Pentru paginile obițnuite, exemplificate în primul tabel timpii sunt mai mari. Pentru al doilea tabel timpii sunt cu un ordin de mărime mai mic, fapt ce este explicat de dimensiunea fișierelor.

Dimensiunea programului final este de 13900 bytes, iar viteza de descărcare a acestuia în memoria microcontrolerului este de 16.00 Kbytes/sec. Aceste valori indică ca soluția este mult mai economică din punct de vedere al spațiului ocupat în memorie deoarece limbajul folosit este mult mai apropiat de cel mașină decât limbajul folosit pentru a programa celelalte soluții deja aflate pe piață (SFC, FBD).

Așadar beneficiile unei astfel de implementări sunt:

mai multe posibilități de a crea noi aplicații, un domeniu mai larg;

mai ușor de utilizat;

mai rapid;

un cod mai eficient;

noi modalități de conectare;

posibilitatea de a adăuga module noi;

posibilitatea de a integra și în alte sisteme.

Concluzii

Obiectivul lucrării mele de licență a fost crearea unei interfețe de comandă și control pentru sistemele industriale. Aplicația realizată de mine are scopul de a comanda și controla instalația didactică “Suflanata ELWE” pentru care am realizat un server WEB și o interfață pentru touchscreen ce comunică între ele. Deși conexiunea fizică dintre instalație și microcontroler nu a fost realizată, acest pas a fost substituit prin aprinderea unor leduri aflate de plăcuța microcontrolerului. Aplicația poate fi folosită și ajustată și pentru alte procese industraile, exemplul actual este doar un model.

În primul capitol, cel al introducerii am motivat scopul lucrării și ce rezultate doresc să obțin cu această lucrare. În al doilea capitol, am detaliat noțiunile teoretice de care m-am folosit pentru a realiza partea practica. De asemenea am detaliat în câteva subpuncte și noțiuni despre arhitectura microcontrolerului folosit dar și despre tipurile de ecran tactil existente la ora actuală în conerț și industrie. Utimele două capitole sunte cele în care prezint partea practică a lucrării, cum am gândit aplicația și ce soluții am găsit.

Implementările viitoare au ca scop obținerea comenzilor primite de la touchscreen împreună cu data și ora la care au fost acestea executate precum și persoana care le-a făcut. În acest mod fiecare utilizator va fi nevoit să se autentifice cu un ID propriu care se va regăsi într-o bază de date și care permite sau nu comandarea instalației în funcție de permisiunea pe care o are ID-ul respectiv.

Bibliografie

Gunther Grinding, Bettina Weiss, 2007, Introduction to Microcontrollers, version 1.4.

Fernando E. Valdes-Perez, Ramon Pallas- Areny, 2009, Microcontrollers, CRC Press

Radu Pietraru, 2013, curs – Sisteme cu microprocesoare

http://smithsonianchips.si.edu/ice/cd/MEMORY97/SEC09.PDF – ultima dată a accesării este 28 iunie 2014

Cătălin Petrescu, 2014, curs – Sisteme informatice integrate

RM0090, Reference manual, 2014, STM32F405xx/07xx, STM32F42xxx and STM32F43xxx advanced ARM – based 32 bit MCUs

PM0214, Programming manual, 2014, STM32F4xxx Cortex-M4 programming manual

http://inventors.about.com/od/tstartinventions/a/Touch-Screen.htm – ultima dată a accesării 28 iunie 2014

CERN Courrier, 31 martie 2010, The first capacitive touch screen at CERN

Lancet Yaara, 2012, What are the difference between capacitive& rezistive touchscreen

http://pcgeek.ro/tehnologia-touchscreen# – ultima dată a accesării 28 iunie 2014

Steve Hodges, Shahram Izadi, Alex Butler, Alban Rrustemi and Bill Buxton, ThinSight: Versatil Multi-touch Sensing for thin Form- factor Display

http://www.corninggorillaglass.com/ – ultima dată a accesării 28 iunie 2014

User manual, Discover- more STM32F4DIS-BB

Rughiniș, R., Deaconescu, R., Dobrescu, M. și Iconaru, 2007, Administrarea rețelelor locale, București, Editura Printech

 John Wiley & Sons, 2011, Windows Server Administration Fundamentals. Microsoft Official

Alexandru Dumitrașcu , 2014, curs Rețele industriale de calculatoare

Monica Pătrașcu, Monica Voinescu, 2011, Laborator Ingineria Reglării Automate- Îndrumar laborator, Editura Politehnica Press

UM 1467, User manual, September 2011, Getting started with software and firmware environments for the STM32F4Discovery Kit

http://www.iar.com/- ultima dată a accesării 28 iunie 2014

Anexe

A.1. Structura hardware ale microcontrolerului STM32F407

A.2. Diagrama DevKit407

A.3. Interfața Ethernet

A.4. Cod HTML Index

<body style="" lang="EN-US" link="blue" vlink="blue">
<div class="Section1">
<div style="margin-left: 30pt;">
<b><i><span style="font-size: 24pt;"><br>
<strong> Webserver demo pentru echipamente industriale</strong></span></i></b><span style="font-size: 13.5pt;"> </span><b><span style="font-size: 18pt; font-family: Verdana; color: rgb(51, 51, 255);"><br>
Suflanta ELWE</span></b></p>
<div class="MsoNormal" style="text-align: center;" align="center">
<hr align="center" size="2" width="100%"></div>
<div align="center">
<table class="MsoNormalTable" style="width: 720.75pt;" border="1" cellpadding="0" width="961">
<tbody>
<tr style="">
<td style="padding: 1.5pt; background: rgb(51, 51, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; text-align: center;">
<p class="MsoNormal"><b><i><span style="font-size: 10pt; font-family: Verdana;"><a href="/index.html"><span style="color: white;">Informatii</span></a></span></i></b><b><i><span style="font-family: Verdana;"><o:p></o:p></span></i></b></p>
</td>
<td style="padding: 1.5pt; background: rgb(51, 51, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; text-align: center;">
<p class="MsoNormal"><b><i><span style="font-size: 10pt; font-family: Verdana;"><a href="/STM32F4x7LED.html"><span style="color: white;">&nbsp;Mod manual/Mod automat</span></a></span></i></b><b><i><span style="font-family: Verdana;"><o:p></o:p></span></i></b></p>
</td>
<td style="padding: 1.5pt; background: rgb(51, 51, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; text-align: center;">
<p class="MsoNormal"><b><i><span style="font-size: 10pt; font-family: Verdana;"><a href="/STM32F4x7ADC.shtml"><span style="color: white;">Istoric comenzi</span></a></span></i></b><b><i><span style="font-family: Verdana;"><o:p></o:p></span></i></b></p>
</td>
</tr>
</tbody>
</table>
</div>
<div align="center">
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 574.5pt;" border="0" cellpadding="0" cellspacing="0" width="766">
<tbody>
<tr style="">
<td style="padding: 0cm;" valign="top">
<table class="MsoNormalTable" style="width: 100%;" border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>

A.5. Cod HTML Istoric comenzi

<table border="1" cellpadding="5" cellspacing="1">
<tbody>
<tr>
<td><small><span style="font-family: Verdana;">comanda 1</span> </small></td>
<td><!–#t–> <small><span style="font-family: Verdana;">actiunea</span></small> </td>
<td><!–#t–> <small><span style="font-family: Verdana;">data</span></small> </td>
</tr>
</tr>
</tbody>
<tbody>
<tr>
<td><small><span style="font-family: Verdana;">comanda 2</span> </small></td>
<td><!–#t–> <small><span style="font-family: Verdana;">actiunea</span></small> </td>
<td><!–#t–> <small><span style="font-family: Verdana;">data</span></small> </td>
</tr>
</tr>
</tbody>
<tbody>
<tr>
<td><small><span style="font-family: Verdana;">comanda 3</span> </small></td>
<td><!–#t–> <small><span style="font-family: Verdana;">actiunea</span></small> </td>
<td><!–#t–> <small><span style="font-family: Verdana;">data</span></small> </td>
</tr>
</tr>
</tbody>
<tbody>
<tr>
<td><small><span style="font-family: Verdana;">comanda 4</span> </small></td>
<td><!–#t–> <small><span style="font-family: Verdana;">actiunea</span></small> </td>
<td><!–#t–> <small><span style="font-family: Verdana;">data</span></small> </td>
</tr>
</tbody>
</table>

Bibliografie

Gunther Grinding, Bettina Weiss, 2007, Introduction to Microcontrollers, version 1.4.

Fernando E. Valdes-Perez, Ramon Pallas- Areny, 2009, Microcontrollers, CRC Press

Radu Pietraru, 2013, curs – Sisteme cu microprocesoare

http://smithsonianchips.si.edu/ice/cd/MEMORY97/SEC09.PDF – ultima dată a accesării este 28 iunie 2014

Cătălin Petrescu, 2014, curs – Sisteme informatice integrate

RM0090, Reference manual, 2014, STM32F405xx/07xx, STM32F42xxx and STM32F43xxx advanced ARM – based 32 bit MCUs

PM0214, Programming manual, 2014, STM32F4xxx Cortex-M4 programming manual

http://inventors.about.com/od/tstartinventions/a/Touch-Screen.htm – ultima dată a accesării 28 iunie 2014

CERN Courrier, 31 martie 2010, The first capacitive touch screen at CERN

Lancet Yaara, 2012, What are the difference between capacitive& rezistive touchscreen

http://pcgeek.ro/tehnologia-touchscreen# – ultima dată a accesării 28 iunie 2014

Steve Hodges, Shahram Izadi, Alex Butler, Alban Rrustemi and Bill Buxton, ThinSight: Versatil Multi-touch Sensing for thin Form- factor Display

http://www.corninggorillaglass.com/ – ultima dată a accesării 28 iunie 2014

User manual, Discover- more STM32F4DIS-BB

Rughiniș, R., Deaconescu, R., Dobrescu, M. și Iconaru, 2007, Administrarea rețelelor locale, București, Editura Printech

 John Wiley & Sons, 2011, Windows Server Administration Fundamentals. Microsoft Official

Alexandru Dumitrașcu , 2014, curs Rețele industriale de calculatoare

Monica Pătrașcu, Monica Voinescu, 2011, Laborator Ingineria Reglării Automate- Îndrumar laborator, Editura Politehnica Press

UM 1467, User manual, September 2011, Getting started with software and firmware environments for the STM32F4Discovery Kit

http://www.iar.com/- ultima dată a accesării 28 iunie 2014

Anexe

A.1. Structura hardware ale microcontrolerului STM32F407

A.2. Diagrama DevKit407

A.3. Interfața Ethernet

A.4. Cod HTML Index

<body style="" lang="EN-US" link="blue" vlink="blue">
<div class="Section1">
<div style="margin-left: 30pt;">
<b><i><span style="font-size: 24pt;"><br>
<strong> Webserver demo pentru echipamente industriale</strong></span></i></b><span style="font-size: 13.5pt;"> </span><b><span style="font-size: 18pt; font-family: Verdana; color: rgb(51, 51, 255);"><br>
Suflanta ELWE</span></b></p>
<div class="MsoNormal" style="text-align: center;" align="center">
<hr align="center" size="2" width="100%"></div>
<div align="center">
<table class="MsoNormalTable" style="width: 720.75pt;" border="1" cellpadding="0" width="961">
<tbody>
<tr style="">
<td style="padding: 1.5pt; background: rgb(51, 51, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; text-align: center;">
<p class="MsoNormal"><b><i><span style="font-size: 10pt; font-family: Verdana;"><a href="/index.html"><span style="color: white;">Informatii</span></a></span></i></b><b><i><span style="font-family: Verdana;"><o:p></o:p></span></i></b></p>
</td>
<td style="padding: 1.5pt; background: rgb(51, 51, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; text-align: center;">
<p class="MsoNormal"><b><i><span style="font-size: 10pt; font-family: Verdana;"><a href="/STM32F4x7LED.html"><span style="color: white;">&nbsp;Mod manual/Mod automat</span></a></span></i></b><b><i><span style="font-family: Verdana;"><o:p></o:p></span></i></b></p>
</td>
<td style="padding: 1.5pt; background: rgb(51, 51, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; text-align: center;">
<p class="MsoNormal"><b><i><span style="font-size: 10pt; font-family: Verdana;"><a href="/STM32F4x7ADC.shtml"><span style="color: white;">Istoric comenzi</span></a></span></i></b><b><i><span style="font-family: Verdana;"><o:p></o:p></span></i></b></p>
</td>
</tr>
</tbody>
</table>
</div>
<div align="center">
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 574.5pt;" border="0" cellpadding="0" cellspacing="0" width="766">
<tbody>
<tr style="">
<td style="padding: 0cm;" valign="top">
<table class="MsoNormalTable" style="width: 100%;" border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>

A.5. Cod HTML Istoric comenzi

<table border="1" cellpadding="5" cellspacing="1">
<tbody>
<tr>
<td><small><span style="font-family: Verdana;">comanda 1</span> </small></td>
<td><!–#t–> <small><span style="font-family: Verdana;">actiunea</span></small> </td>
<td><!–#t–> <small><span style="font-family: Verdana;">data</span></small> </td>
</tr>
</tr>
</tbody>
<tbody>
<tr>
<td><small><span style="font-family: Verdana;">comanda 2</span> </small></td>
<td><!–#t–> <small><span style="font-family: Verdana;">actiunea</span></small> </td>
<td><!–#t–> <small><span style="font-family: Verdana;">data</span></small> </td>
</tr>
</tr>
</tbody>
<tbody>
<tr>
<td><small><span style="font-family: Verdana;">comanda 3</span> </small></td>
<td><!–#t–> <small><span style="font-family: Verdana;">actiunea</span></small> </td>
<td><!–#t–> <small><span style="font-family: Verdana;">data</span></small> </td>
</tr>
</tr>
</tbody>
<tbody>
<tr>
<td><small><span style="font-family: Verdana;">comanda 4</span> </small></td>
<td><!–#t–> <small><span style="font-family: Verdana;">actiunea</span></small> </td>
<td><!–#t–> <small><span style="font-family: Verdana;">data</span></small> </td>
</tr>
</tbody>
</table>

Similar Posts