You are on page 1of 66

Cuprins

Capitolul 1. Reele 1.1. Evoluia reelelor 1.2. Modelul de referin OSI (Open

pag. 5 pag. 5 Systems pag. 6 pag. pag. pag. pag. pag. pag. 8 11 13 19 22 25

Interconnection) 1.3. Bazele lucrului n reelele de calculatoare 1.4. Stivele de protocoale 1.5. Internet Protocol, versiunea 4 (IPv4) 1.6. Internet Protocol, versiunea 6 (IPv6) 1.7. Protocoalele IPX/SPX 1.8. Protocoalele TCP/IP i UDP Capitolul 2. Placa de dezvoltare EasyPic5, microcontrolerul PIC18F452 2.1. Caracteristicile plcii de dezvoltare EasyPic5 2.2. Microcontroler-ul PIC18F452 Capitolul 3. Librria Spi Ethernet i modulul Ethernet ENC28J60 3.1. Specificaii ENC28J60 3.2. Librria Spi Ethernet Capitolul 4. Descrierea aplicaiei 4.1. Realizarea aplicaiei 4.2. Programarea microcontroler-ului 4.3. Prezentarea aplicaiei 4.4. Programul realizat n MikroC Bibliografie

pag. 29 pag. 29 pag. 38 pag. 48 pag. 48 pag. 52 pag. pag. pag. pag. pag. 61 61 61 62 64

pag. 69

Introducere

Consider conducerea proceselor cu ajutorul microcontroller-elor o soluie foarte bun pentru era automatizat ce bate la u, deoarece acestea sunt relativ uor de folosit pentru diverse scopuri i nu este necesar spaiu foarte mare pentru plasarea lor, dimensiunile lor putnd varia, dar se pot obine performane excelente la dimensiuni mici. Industria microcontroller-elor este deja ntr-o faz avansat de dezvoltare asta fiind un avantaj mare n lucrul cu microcontroller-ul deoarece sunt disponibile posibiliti ct mai simple de programare i se pot gsi foarte uor soluii pentru probleme. Pentru a realiza o imagine de ansamblu asupra modului n care funcioneaz aplicaia n Capitolul 1 sunt prezentate concepte generale referitoare la reelistic. n Capitolul 2 sunt prezentate echipamentele de lucru: placa de dezvoltare EasyPic5 cu toate facilitile ei necesare pentru conectarea la instalaie dar i pentru a realiza o bun interfa cu utilizatorul; microcontroler-ul PIC18F452; Capitolul 3 trateaz n amnunt modulul Ethernet ENC28J60 i librria Spi Ethernet a compilatorului mikroC, funciile acesteia fiind utilizate n programarea microcontroler-ului. Capitolul 4 este dedicat realizrii practice a proiectului. n primul rnd sunt prezentai paii pe care i-am urmat n realizarea aplicaiei. Apoi este descris un mic algoritm folosit pentru programarea microcontroler-ului, pentru ca n final s fie prezentat programul mpreun cu explicaiile necesare.

CAPITOLUL 1 REELE

O reea este un mecanism care permite calculatoarelor distincte i utilizatorilor acestora s comunice si s pertajeze resursele. 1.1. Evoluia reelelor Iniial reelele de calculatoare reprezentau configuraii tipice care includeau : terminale simple, cablate la controllere de dispozitiv (care asigurau accesul comun sau multiplexat la resursele de comunicare), interfee de comunicare, procesor front-end (FEP = procesor ce permitea mai multor utilizatori s partajeze un singur canal ctre main-frame) precum i calculatorul main-frame. Topologia unei astfel de structuri este descris n figura 1.1.

Figura 1.1 Structura cablat a unei reele

Dezavantajele unei astfel de sutucturi sunt numeroase, cele mai importante fiind: sistem de operare unic, software i hardware ale aceluiai productor, sistem nchis i foarte puin flexibil etc. Datorit acestor dezavantaje majore a aprut necesitatea unui sistem deschis i flexibil. Astfel a aprut prima reea local (LAN = Local Area Network) numit i ethernet, concept introdus la inceput de Xerox PARC (Xerox Palo Alto Research Center) i dezvoltat apoi de firmele Xerox, Digital i Intel. Succesul i dezvoltarea rapid a primelor LAN-uri a implicat necesitatea apariiei unor standarde unanim recunoscute. Cele mai importante organizaii care elaboreaz proiecte de standardizare sunt: - ANSI (American National Standards Institute) - rspunde de coraborarea dintre standardele americane i cele internaionale ; - IEEE (Institute of Electrical and Electronic Engineers) - rspunde de elaborarea standardelor pentru telecomunicaii i comunicaii de date; a definit standardele pentru LAN i MAN (Metropolitan Area Network); - IAB (Internet Architecture Board) - rspunde de stabilirea standardelor pentru Internet, inclusiv a protocolului IP (Internet Protocol) ; 5

- ISO (International Organization for Standardization) - organizaie fondat n 1946 cu sediul la Geneva (Elveia) i autorizat de ONU pentru definirea standardelor internaionale. n domeniul reelelor de calculatoare, ISO a dezvoltat cel mai important standard : modelulde referin OSI. 1.2. Modelul de referin OSI (Open Systems Interconnection) Acest model reprezint standardul universal pentru definirea nivelurilor funcionale necesare unei conexiuni deschise ntre calculatoare. O interconexiune deschis este o conexiune care poate fi utilizat ntr-un mediu multiproductor. Modelul a fost dezvoltat n urm cu aproape 20 de ani i a introdus noiunea de modularitate funcional (layering = stratificare). Modelul OSI clasific diversele protocoale necesare ntr-o sesiune de comunicare pe 7 niveluri (straturi) funcionale, organizarea acestor niveluri avnd la baz secvena natural de evenimente care apare n timpul unei sesiuni de comunicare. 1) NivelulFizic- rspunde de transmisia/recepia irului de bii. La transmisie el accept cadre (pachete) de date de la nivelul 2 i transmite serial, bit cu bit, structura i coninutul acestora. Pentru recepie, el este rspunztor cu recepionarea, bit cu bit, a irurilor de date care sosesc, transmindu-le apoi nivelului 2 pentru refacerea cadrelor. Nivelul fizic nu include i mediul de transmisie (cabluri coaxiale, cabluri torsadate, fibre optice etc.), acesta fiind numit de regul nivelul 0. 2) NivelulLegturdedate- rspunde de asigurarea validitii datelor transmise. La transmisie, acest nivel, asigur gruparea n cadre (pachete) a datelor transmise. Un cadru reprezint o structur care conine informaii suficiente pentru a asigura transmiterea reuit a datelor prin reeaua local. Un transfer reuit presupune ca la sosire (la destinaie) datele s fie intacte. Pentru realizarea acestui deziderat trebuie ca acest nivel s conin un mecanism de verificare a integritii cadrelor, mecanism care presupune respectarea a dou cerine : expeditorul trebuie s primeasc de la destinatar o confirmare de recepionare naintea confirmrii primirii, destinatarul trebuie s verifice integritatea pachetului. corect pentru fiecare pachet transmis ; La recepie, nivelulLegtur de date", pe lng detectarea i corectarea tuturor erorilor de transmitere a cadrelor, este responsabil i cu reasamblarea n cadre a datelor primite de la nivelul 1. Nivelurile 1 i 2 sunt necesare oricrui tip de comunicaie sau reea (LAN sau WAN). 6

3) NivelulReea- rspunde de stabilirea rutei utilizate ntre calculatorul expeditor i cel destinaie. El este utilizat pentru stabilirea comunicaiei cu calculatoarele aflate dincolo de sistemul LAN local. El poate face acest lucru pentru c are propria arhitectur de adrese de rutare, printre protocoalele de rutere numrndu-se : IP, IPX, Apple Talk etc. 4) NivelulTransport- este similar niveluluiLegtur de date", dar pentru conexiuni dincolo de segmentul LAN local, putnd s detecteze pachetele care sunt abandonate de routere i s genereze automat o cerere de retransminie. O alt funcie a acestui nivel este resecvenierea pachetelor, dac acestea nu au ajuns n ordine. 5) NivelulSesiune- gestioneaz fluxul comunicaiilor n timpul conexiunii dintre dou sisteme de calculatoare (= sesiune). El decide, de asemenea, dac o cerere este satisfcut nainte de a fi acceptat una nou. Numeroase protocoale includ funciile acestui nivel n cele ale nivelului patru. 6) NivelulPrezentare - este responsabil cu gestionarea modului n care sunt codificate datele, asigurnd serviciile de criptare i decriptare a acestora. Ca exemple de metode de codificare a datelor sunt codurile : ASCII (American Standard Code for Information Interchange), EBCDIC (Extended Binary Coded Decimal Interchange Code). 7) NivelulAplicaie- asigur interfaa dintre aplicaii i serviciile reelei. El nu conine aplicaii efective, acestea genernd automat o cerere ctre protocolul de nivelul 7 corespunztor i lanseaz o sesiune de comunicaii penrtu a obine fiierele necesare. Observaie : nu toate cele apte niveluri ale modelului de referin OSI sunt necesare pentru o sesiune de comunicaii. De exemplu, pentru comunicaiile printr-un singur segment LAN sunt necesare doar nivelurile 1 i 2. 1.3. Bazele lucrului n reelele de calculatoare O reea de calculatoare este un sistem care permite unui numr de dou sau mai multe calculatoare s comunice ntre ele i/sau cu alte dispozitive. Reelele au evoluat n dou (trei) categorii distincte : reele locale - LAN (Local Area Network) reele meropoliane_ r MAN (Metropolitan Area Network) reele de mare suprafa - WAN (Wide Area Network)

Componentele unei reele : I) Componente hardware - sunt componente elementare n sensul c toate reelele, fie trebuie s le conin, fie trebuie s funcioneze n preajma lor. Acestea se mpart n : 1. Echipamenteledetransmisie - reprezint mediul utilizat pentru a transporta semnalele unei reele de la surs ctre destinaie. Acestea includ : cabluri coaxiale, cabluri torsadate, fibre optice, semnale luminoase, radio, microunde etc. Mediul fizic este deseori irelevant comparativ cu performanele acestuia, aceste echipamente fiind de obicei descrise prin viteza de tact i structurile lor de cadre. 2. Dispozitiveledeacces - sunt componente care rspund de trei mari funcii : formatarea corect a datelor astfel nct s fie acceptate n reea; plasarea datelor n reea ; acceptarea datelor care i sunt adresate.

Pentru o reea LAN, dispozitivul standard de acces poart numele de NIC (Network Interface Card - plac de interfa cu reeaua). Pentru o reea WAN, dispozitivul standard de acces poart denumirea de router. 3. Repetoarele - sunt dispozitive care accept semnalele transmise, le amplific i le plaseaz din nou n reea. Pentru LAN, unul din cele mai cunoscute repetoare este concentratorul sau hub - ul. Acesta ndeplinete dou mari funcii: permite conectarea n reea a mai multor dispozitive ; regenerarea (amplificarea) semnalului.

Observaie : semnalele transmise printr-o reea se pot deteriora datorit atenurii sau a distorsionrii, de aceea, pentru a evita aceste deteriorri este necesar s se urmeze riguros instruciunile de instalare a echipamentelor unei reele.

II) Componente software - se mpart n : 1. Protocoalele - reprezint mijloace de comunicare standard ntre calculatoare i/sau alte dispozitive ataate la reea. Pentru reelele LAN, protocoalele sunt numite i arhitecturi LAN i sunt, de regul, incluse n NIC, determinnd forma, dimensiunea i mecanica reelei. Pentru reelele WAN ele sunt furnizate n pachete de reguli i asigur o mare varietate de servicii. 2. Driver-elededispozitiv sunt microprograme la nivel hardware care controleaz un anumit dispozitiv (sisteme de operare n miniatur specializate pentru o singur component hard). De regul acestea sunt livrate odat cu componenta hard. Pentru NIC, driver-ele includ furnizarea unei interfee pentru sistemul de operare al calculatorului. 8

3.

Software-ulpentrucomunicaii -, dac celelalte componente (hard i soft) ale unei

reele descrise anterior nu fac dect s asigure infrastructura i mecanismele care permit utilizarea acesteia, software-ul pentru comunicaii reprezint componenta reelei care face ca aceasta s fie cu adevrat utilizabil. Unele programe realizeaz legarea la uniti de reea sau partajarea resurselor, altele asigur pota electronic (e-mail), altele lucrul cu fiierele de Internet (FTP - File Transfer Protocol, HTTP - HyperText Transfer Protocol, WWW - World Wide Web) etc. Construirea reelelor din componente Componentele hard i soft enumerate anterior pot constitui o reea numai dac sunt interconectate. Modurile de interconectare a acestora sunt extrem de diferite, cele mai simple fiind descrise n cele ce urmeaz: 1. LAN fr repetoare - dou staii echipate cu NIC compatibile pot comunica direct, fr repetoare, dac sunt amplasate suficient de aproape una fa de cealalt (n limita maxim de lungime impus de mediul de transmisie). O astfel de configuraie este prezentat n figura 1.2.

Figura 1.2 LAN fr repetoare Observaie : pentru un cablu torsadat cu patru perechi de fire este necesar s se fac inversarea perechilor de fire de recepie cu cele de transmisie ("cablu de link"). 2. LAN bazat pe magistral - este cea mai simpl form de reea LAN, care se bazeaz pe NIC pentru a dirija comunicaiile n cadrul reelei. Uneori i arhitecturile LAN bazate pe concentrator pot forma o astfel de arhitectur, dac se fac inversiunile de rigoare. Avantaje : structur simpl, pre sczut. Dezavantaje : distane mici ntre staii, numr limitat de dispozitive care pot fi legate n aceeai reea. De aceea aceast arhitectur este tot mai rar utilizat. Configuraia unei astfel de reele este prezentat n figura 1.3.

Figura 1.3 LAN bazat pe magistral

3. LAN bazat pe concentrator - concentratorul (hub-ul) este un dispozitiv care este centrul reelei i care ndeplinete dou funcii : - funcia de repetor, permiind reelei s se dezvolte pe distane mai mari dect cele ale unei LAN bazate pe magistral; - funcia de concentrare/multiplexare, permind cascadarea (conectarea cu unul sau mai multe concentratoare) i deci sporirea numrului de dispozitive care pot fi legate la aceeai reea. O astfel de configuraie este prezentat n figura 1.4.

Figura 1.4 LAN bazat pe concentrator Observaie : nu toate concentratoarele sunt i repetoare, unele fiind pasive, utilizate doar pentru funcia de cascadare i pentru totologiile de tip stea. 4. WAN : - este un sistem care interconecteaz reelele LAN prin intermediul unui router. Router-ul este un dispozitiv care permite utilizatorilor din fiecare reea LAN s comunice i s aib acces la resursele celorlalte reele LAN interconectate, fr a condensa ntregul sistem ntr-un singur LAN. O astfel de configuraie este prezentat n figura 1.5.

10

Figura 1.5 Reea WAN

Protocoalele de reea sunt acele protocoale aflate la nivelul III -Reeaal modelului de referin OSI. Aceste protocoale asigur o adresare care permite transmiterea datelor pe distane nespecificate, dincolo de domeniul reelei LAN al expeditorului. De regul, protocoalele de nivel III utilizeaz o structur numit pachet pentru a transporta datele. Dei protocoalele de nivel III ofer mecanismele de lucru n reea pentru trimiterea pachetelor, le lipsete complexitatea necesar pentru a se asigura c pachetele sunt ntr-adevr recepionate i nu oricum, ci n ordinea corect. Aceste sarcini sunt lsate n seama protocoalelor de transport de nivel IV, care accept datele de la nivelurile superioare, le includ n segmente pe care le transmit nivelului III.

1.4. Stivele de protocoale O stivdeprotocoale este o secven de protocoale de comunicaie care ofer utilizatorilor mecanismele i serviciile necesare pentru a comunica cu alte dispozitive conectate la reea. Din perspectiva utilizatorului, stiva de protocoale este cea care face ca o reea s fie utilizabil. Similar intercorelrii dintre primul i al II-lea nivel al modelului de referin OSI, nivelul III ("Reea") se afl n strns legtur cu al IV-lea nivel ("Transport"), mpreun asigurnd mecanismele care permit transferul de informaii ntre calculatoarele surs i destinaie printr-o reea de comunicaii care se ntinde dincolo de domeniul nivelului II, precum i alte funcii ca resecvenierea pachetelor recepionate dezordonat i retransmiterea de cereri pentru pachetele nerecepionate sau deteriorate la primire. Tehnica de formare a cadrelor de date care conin i cmpuri ale nivelelor III i IV se numerenfurare"(wrapping). Aceasta presupune urmtoarele etape : - protocolul de nivelul IV grupeaz datele sale primite de la protocoalele de nivel superior n segmente, ataaz antetul propriu (antetul TCP, de exemplu) i plaseaz aceste segmente omologului su de la nivelul III; - protocolul de nivel III nfoar prompt segmentul ntr-o structur de pachet, o completeaz cu adresele surs i destinaie de nivel III (aflate n antetul IP, IPX, etc.) i paseaz pachetul protocolului de nivel II; - protocolul de nivelul II nfoar n jurul pachetelor de date un cadru i o adresare de nivel II (Adresa destinaiei, Adresa sursei, Cmpul lungime, Secven de control a cadrului (FCS), etc.) i transmite cadrele de date nivelului I; 11

- nivelul I ataeaz cadrelor de date primite un antet (Preambulul i Delimitatorul de nceput (SFD)) i transmite datele n reea. Aceast tehnic este ilustrat n figura 1.6.

Figura 1.6 Tehnica denfurare(wrapping) al unui cadru Ethernet

Cadrele astfel formate sunt transmise pn la limita domeniului nivelului II, unde, de regul, se afl un router. Acest dispozitiv accept cadrele i citete informaiile de adresare de nivelul III, pe care le utilizeaz pentru a determina urmtoarea escal din ruta pachetului ctre destinaie. Pachetul este rutat apoi ctre destinaie. Ultimul router din calea spre destinaie trebuie s renfoare pachetul ntr-o structur de cadre de nivelul II care este conform cu arhitectura LAN utilizat la acea destinaie. Nivelul III asigur doar transferul de date interreea, n timp ce nivelul IV asigur mecanismelor de nivelul III fiabilitate i integritate cap-la-cap. Acest nivel este necesar pentru garantarea livrrii fr erori i secvenierea pachetelor livrate, precum i pentru garantarea calitii serviciilor. Un exemplu de protocol de nivelul IV este Transmission Control Protocol (TCP), care este aproape ntotdeauna numit n combinaie cu analogul su de nivelul III -Internet Protocol (IP), adic TCP/IP. Observaie : - dei nivelurile III i IV exist special n scopul transmisiunilor interreea, anumite aplicaii i pot plasa reciproc datele utiliznd protocoale de aceste niveluri, chiar dac sunt conectate la acelai LAN sau subreea. La nivelul III opereaz dou tipuri de protocoale de reea : - protocoale de rutare : - sunt utilizate ntre routere, pentru a determina cile disponibile de comunicare, a comunica tot ce se cunoate despre acestea i a trimite mai departe pachetele protocolului rutat pe aceste trasee ; - protocoale rutate : - sunt acelea care ncapsuleaz informaiile despre utilizator i datele n pachete i care rspund de transportul pachetelor la destinaie. n capitolul de fa sunt prezentate cele mai utilizate protocoale rutate. 1.5. Internet Protocol, versiunea 4 (IPv4)

12

Internet Protocol (IP) a fost dezvoltat acum aproximativ 20 de ani ca urmare a nevoii de a interconecta ntr-o reea comun diversele mrci de calculatoare brevetate i reelele lor de suport, de asemenea brevetate. Spre deosebire de modelul de referin OSI, modelul TCP/IP se axeaz pe asigurarea interconectivitii, nu pe aderarea strict la nivelurile funcionale. El face acest lucru recunoscnd importana aranjamentului ierarhic, dar lsndu-le n acelai timp proiectanilor de protocoale o mai mare flexibilitate pentru implementare. n consecin, modelul de referin OSI, este mai util pentru explicarea mecanismelor de comunicaii ntre calculatoare, dar TCP/IP fiind mai flexibil a devenit protocolul preferat pe pia pentru interreele. n figura 1.7 este ilustrat o comparaie ntre modelul de referin OSI i modelul TCP/IP.

Figura 1.7 Comparaie dintre modelul de referin OSI i modelul TCP/IP

Analiza modelului TCP/IP : modelul TCP/IP include patru niveluri funcionale: Proces/Aplicaie, Gazd-la-gazd, Interreea i Acces la reea. Aceste patru niveluri sunt corelate, n mare, cu cele apte niveluri ale modelului de referin OSI, fr a compromite funcionalitatea. 1) NivelulProces/Aplicaie: - furnizeaz protocoale pentru accesul la distan i la resursele partajate. Aplicaii i protocoale uzuale ca Telnet, FTP, SMTP, HTTP etc. se afl i opereaz toate la acest nivel i depind de funcionalitatea nivelurilor inferioare. 2) Nivelul Gazd-la-gazd: - este corelat ntr-o oarecare msur cu nivelurile Sesiune i Transport ale modelului de referin OSI. El este format din dou entiti de protocol : TransmissionControl Protocol (TCP) i User Datagram Protocol (UDP). Pentru a se conforma naturii din ce n ce mai orientate spre tranzacii a Internetului, este definit experimental i o a treia entitate : Transaction Transmission Control Protocol (T/TCP). TCP asigur transmisiuni de date orientate spre conexiune ntre dou sau mai multe gazde, poate accepta mai multe fluxuri de date i permite controlul fluxului i al erorilor i 13

chiar reordonarea pachetelor recepionate aleatoriu. Antetul protocolului TCP are minimum 20 de octei i conine urmtoarele cmpuri (figura 1.8):

Figura 1.8 Antetul protocolului TCP

- port surs TCP (16 bii) - conine numrul portului care iniiaz sesiunea de comunicaii. Portul surs i adresa IP surs folosesc ca adres de returnare a pachetului; - port destinaie TCP (16 bii) - conine adresa portului cruia i este destinat transmisiunea, adic adresa de interfa a aplicaiei de pe calculatorul destinatar; - numrul de secven TCP (32 bii) - este utilizat de calculatorul destinatar pentru a reconstitui forma originar a datelor fragmentate. ntr-o reea dirijat dinamic este foarte posibil ca pachetele s urmeze rute diferite i, n consecin, s ajung n dezordine ; - numrul de confirmare TCP (32 bii) - TCP utilizeaz o confirmare (ACK) a primului octet de date coninut n urmtorul segment ateptat. TCP poate s calculeze acest numr prin incrementarea numrului ultimului octet recepionat cu numrul de octei din fiecare segment. Numrul utilizat pentru identifica fiecare ACK este numrul de secven al pachetului confirmat; - deplasament date (4 bii) - conine dimensiunea antetului TCP, msurat n multipli de 32 de bii (cuvnt); - rezervat (6 bii) - este setat pe zero, fiind rezervat pentru utilizri viitoare ; - indicatoare (6 bii) - conine 6 indicatoare (flags) de 1 bit care acioneaz funciile de control ca : urgent, confirmarea cmpului semnificativ, funcia push, resetarea conexiunii, sincronizarea numerelor de secven i terminarea transmiterii datelor ; - dimensiunea ferestrei (16 bii) - este utilizat de ctre calculatorul destinaie pentru a-i spune calculatorului surs cte date pe segment TCP este dispus s accepte ; - suma de control (16 bii) - este un cmp de detecie a erorilor. Calculatorul surs calculeaz, n funcie de coninutul segmentului, o valoare matematic, calculatorul destinaie realizeaz acelai calcul i, n cazul n care coninutul rmne intact, rezultatul calculelor este identic, asigurnd astfel validitatea datelor ; - completare - sunt adugate zerouri n acest cmp, pentru a se asigura faptul c antetul TCP este ntotdeauna multiplu de 32 de bii.

14

UDP asigur transmisiuni de date elementare i cu redundan redus, cunoscute ca datagrame. Simplitatea datagramelor face ca UDP s fie inadecvat pentru unele aplicaii, dar perfect pentru aplicaii mai sofisticate, care pot asigura propria funcionalitate orientat spre conexiune. Alternativ, UDP poate fi utilizat pentru schimburi de date ca NetBIOS difuzate, mesaje de sistem etc., pentru c aceste schimburi nu necesit controlul fluxului, confirmri, reordonare sau alte funcionaliti asigurate de TCP. Antetul protocolului UDP are urmtoarea structur (figura 1.9).

Figura 1.9 Antetul protocolului UDP

- numrul portului surs UDP (16 bii) - reprezint numrul de conexiune al calculatorului surs, care mpreun cu adresa IP surs formeaz adresa de returnare a pachetului; - numrul portului destinaie UDP (16 bii) - reprezint numrul de conexiune al calculatorului destinaie. El este utilizat pentru trimiterea pachetelor ctre aplicaia corect, dup ce ajung la calculatorul destinaie ; - suma de control UDP (16 bii) - este un cmp de detecie a erorilor, calculat pe baza coninutului segmentului. Calculatorul destinaie calculeaz aceeai funcie matematic la fel ca i expeditorul, diferena dintre cele dou valori calculate indicnd faptul c s-a produs o eroare n timpul trimiterii pachetului; - lungimea mesajului UDP (16 bii) - informeaz calculatorul destinaie n legtur cu dimensiunea mesajului, care poate fi un alt mecanism utilizat de calculatorul destinaie pentru a determina validitatea mesajului. Principala diferen funcional dintre TCP i UDP este fiabilitatea. TCP este un protocol extrem de fiabil, n timp ce UDP este un simplu mecanism pentru livrarea datagramelor. Aceast diferen fundamental duce la utilizri foarte diferite ale celor dou protocoale de nivel Gazd-la-gazd. III) NivelulInterreea : - este constituit din toate protocoalele i procedurile necesare pentru a permite comunicaiilor de date dintre gazde s traverseze mai multe reele. Pachetele purttoare de date trebiue s poat fi dirijate. Internet Protocol (IP) rspunde de asigurarea dirijabilitii. Antetul IP are urmtoarea dimensiune i structur (figura 1.10).

15

Figura 1.10 Antetul protocolului IP

- versiune (4 bii) - cmp ce identific versiunea IP (de exemplu, versiunea 4 sau 6); - lungimea preambulului (antetului) Internet (4 bii) - conine lungimea antetului exprimat n multiplii de 32 de bii (cuvnt); - tipul serviciului (8 bii) - conine indicatoare de un bit care pot fi utilizate pentru specificarea ordinii, a ntrzierii, a transferului de date i a parametrilor de fiabilitate ai pachetului de date; - lungime total (16 bii) - conine lungimea total a pachetului IP, msurat n octei (valorile valide sunt cuprinse ntre 576 i 65535 de octei); - identificator (16 bii) - fiecare pachet IP are alocat un identificator unic ; - indicatoare (3 bii) - acest cmp conine trei indicatoare de un bit care indic dac este permis fragmentarea pachetului i dac este utilizat ; - deplasarea segmentului (8 bii) - msoar decalarea coninutului fragmentat fa de nceputul ntregului pachet (valoare msurat n multiplii de 64 bii); - durata de via (TTL - Time to Live) (8 bii) - deoarece unui pachet IP nu i se poate permite s circule la infinit prin WAN, trebuie stabilit o limit finit a numrului dehopuri(routere). Cmpul TTL este incrementat cu unu la fiecarehoppe care l face pachetul. Dup atingerea limitei maxime, pachetul este distrus. Aceasta reprezint o garanie c pachetele nu execut la infinit o bucl ntr-o reea dirijat dinamic ; - protocol (8 bii) - identific protocolul de dup antetul IP (ex. : etc.); - suma de control (16 bii) - este un cmp de detecie a erorilor. Calculatorul destinatar sau orice noduri gateway (puni) din reea pot reface calculul matematic asupra coninutului pachetului la fel ca i calculatorul surs. Dac rezultatele sunt diferite pachetul este eliminat i se face o cerere de retransmitere ctre expeditor. Acest cmp mai informeaz destinatarul i despre cantitatea de date care sosesc ; - adresa IP surs (32 bii) - reprezint adresa IP a calculatorului surs; - adresa IP destinaie (32 bii) - reprezint adresa IP a calculatorului destinaie ; - completare - sunt adugate zerouri n acest cmp, pentru a se asigura faptul c antetul IP este ntotdeauna multiplu de 32 de bii.
VINES,

TCP, UDP

16

Aceste cmpuri ale antetului IPv4 reflect faptul c nivelul Interreea IPv4 este prestabilit fr conexiune : dispozitivele de transmitere a pachetelor n reea au libertatea de a determina calea ideal pe care s o urmeze fiecare pachet. De asemenea, acest nivel nu asigur funciile de confirmare, controlul fluxului i de secveniere ale protocoalelor de nivel superior, ca TCP, ci las aceste funcii n seama protocoalelor respective. El trebuie s furnizeze doar mecanismele pentru conversia adreselor de nivelul II n adrese de nivelul III (ale modelului TCP/IP) i invers. Funciile de gestionare a rutelor sunt suportate de protocoalele de rutare cum ar fi : Interior Gateway Protocol (IGP), Exterior Gateway Protocol (EGP), Address Resolution Protocol (ARP), Reverse Address Resolution Protocol (RARP) sau Internet Control Message Protocol (ICMP). Operarea IPv4 tipic : pentru transferul de date cu ajutorul mecanismelor protocolului IPv4 sunt parcurse urmtoarele etape : - nivelul Aplicaie plaseaz deasupra pachetului de date un antet care identific gazda i portul destinaie; - protocolul de nivel Gazd-la-gazd (TCP sau UDP) mparte blocul de date n fragmente mai mici, mai uor de administrat. La nceputul fiecrui fragment este plasat un antet TCP, aceast structur fiind cunoscut ca segment TCP. Cmpurile antetului segmentului sunt populate corespunztor i segmentul este pasat nivelului urmtor ; - nivelul Interreea adaug informaiile referitoare la adresare, tipul protocolului (TCP sau UDP), suma de control etc. Dac segmentul a fost fragmentat, sunt populate cmpurile corespunztoare. Apoi pachetul este plasat n reea ; - calculatorul destinaie realizeaz operaiile inverse celor descrise anterior. El primete pachetele i le paseaz protocolului sau de nivel Gazd-la-gazd, pentru reasamblare. Dac este necesar, pachetele sunt reordonate n segmentele de date originale care sunt trimise aplicaiei corespunztoare. Schema de adresare IP : - IPv4 utilizeaz o schem de adresare binar, pe 32 de bii, pentru identificarea reelelor, a dispozitivelor de reea i a calculatoarelor conectate la reea. Aceste adrese sunt cunoscute sub numele de adrese IP. Exist 5 clase de adrese IP : clasa A, B, C, D i E. Fiecare adres este format din dou pri: o adres de reea i o adres de gazd. Dei aceste adrese sunt binare, ele sunt identificate n mod normal ntr-un format zecimal cu punct (de exemplu 192.168.0.101), punctele fiind utilizate pentru a separa cei patru octei ai adresei. Cele cinci clase mpart adresele de reea i de gazd dup cum urmeaz : Adresa IP de clas A: primul bit al unei adrese de cals A este 0, urmtorii 7 bii identific numrul reelei, iar ultimii 24 de bii (ultimele trei cifre zecimale ale adresei) 17

reprezint adrese de gazd posibile. Adresele de cals A posibile sunt cuprinse ntre 1.0.0.0 i 127.0.0.0, fiecare adres de reea putnd accepta 224 - 2 = 16.774.214 adrese de gad unice ; Adresa IP de clas B: primii doi bii ai unei adrese de clas B sunt 10, urmtorii 14 bii identific numrul reelei, iar ultimii 16 bii (ultimele dou cifre zecimale ale adresei) reprezint adrese de gazd posibile. Adresele de clas B posibile sunt cuprinse ntre 128.1.0.0 i 191.254.0.0, fiecare adres de reea putnd accepta 216 - 2 = 65.534 adrese de gad unice ; Adresa IP de clas C: primii trei bii ai unei adrese de clas C sunt 110, urmtorii 21 de bii identific numrul reelei, iar ultimii 8 bii (ultima cifr zecimal a adresei) reprezint adrese de gazd posibile. Adresele de clas C posibile sunt cuprinse ntre 192.0.1.0 i 223.255.254.0, fiecare adres de reea putnd accepta 28 - 2 = 254 adrese de gad unice ; Adresa IP de clas D: primii patru bii ai unei adrese de clas D sunt 1110. Aceste adrese sunt utilizate pentru difuzare de grup (multicasting), dar au avut doar o utilizare limitat. O adres multicast este o adres de reea unic, folosit pentru direcionarea pachetelor cu respectiva adres de destinaie spre grupuri predefinite de adrese IP. Adresele de clas D sunt cuprinse ntre 224.0.0.0 i 239.255.255.254; Adresa IP de clas E: adresele de clas E sunt rezervate doar utilizrii pentru cercetare de ctre InterNIC (Internet Network Information Center - organizaia care se ocup cu alocarea adeselor IP). Prin urmare, nu a fost eliberat nici o astfel de adres pentru utilizarea pe Internet. Prin utilizarea protocolului IPv4 sunt risipite un numr mare de posibile adrese. De exemplu, pentru o reea cu 300 de adrese IP, o adres de reea de tip C nu este de ajuns, fiind nevoie de dou astfel de adrese care mpart astfel reeaua n dou domenii ; dac s-ar folosii o adres de clas B s-ar risipii 65.234 de adrese. Din fericire, pentru a permite mai multor clase mici de adrese s funcioneze ca un singur domeniu de rutare, a fost dezvoltat un protocol de rutare interdomenii numit Classless InterDomain Routing (CIDR - rutare interdomeniu fr clase). Deoarece TCP/IP poate accepta mai multe sesiuni deschise de o gazd trebuie s se asigure un mod de adresare a anumitor programe de cominicaii. TCP/IP face acest lucru utiliznd numere de port. Astfel, sunt alocate unora dintre cele mai rspndite aplicaii propriile lor numere de port binecunoscute (de exemplu : 8080, 80, 21 etc). Ne putem baza pe faptul c aceste numere sunt invariante, pentru o aplicaie de la gazd-la-gazd. Altor aplicaii li se atribuie pur i simplu un numr de port disponibil. Creterea exploziv a Internetului, a dus la necesitatea unui numr mai mare de adrese i a suportului nivelului Interreea pentru noile tipuri de servicii. Limitrile Ipv4 au condus la 18

dezvoltarea unei versiuni complet noi a protocolului numit Internet Protocol,versiunea 6 (IPv6) sau next generation of Internet Protocol (IPng). 1.6. Internet Protocol, versiunea 6 (IPv6) IPv6 a fost conceput ca o modernizare simpl, compatibil cu versiunile care vor urma, a protocolului IP. Aceast modernizare a avut, de asemenea, intenia de a rezolva toate deficienele manifestate n prezent de IPv4, inclusiv lipsa de adrese IP disponibile, inabilitatea de a face fa traficului sensibil la ntrzieri i lipsa securitii la nivelul Reea. IPv6 utilizeaz o adres pe 128 de bii i are, teoretic, un spaiu de 2128 de adrese posibile. Doar aproximativ 15 % din acest spaiu de adrese este alocat n momentul de fa, restul fiind rezervat unei utilizri viitoare nespecificate. n realitate, alocarea i rutarea adreselor necesit crearea de ierarhii, care pot reduce numrul de adrese posibile, dar mresc eficiena protocoalelor de rutare. O implicaie practic a lungimii adreselor IPv6 este aceea c DNS devine o necesitate absolut, n timp ce pentru IPv4 era un lux. Observaie : - DNS (Domain Name Service) este un utilitar de reea care realizeaz conversia numelor de gazd mnemonice (ca www.microsoft.com) n adrese numerice IP. IPv6 renun la modul anterior de adresare bazat pe clase, n schimb, recunoate trei tipuri de adrese unicast, nlocuiete clasa D de adrese a lui IPv4 cu un nou format de adrese multicast i introduce un nou tip de adres. Structurile IPv6 de adrese unicast: adresarea unicast asigur conectivitatea ntre o staie de reea i alt staie de reea. IPv6 asigur suport pentru mai multe forme de adrese unicast, cum ar fi : Adresa unicast Internet Service Provider asigur un format de adrese unicast n scopul conectrii la Internet a utilizatorilor individuali. Aceste adrese unicast bazate pe furnizor ofer adrese unice pentru persoane i mici grupuri care acceseaz Internetul printr-un furnizor. Formatul adreselor unicast ISP este prezentat n figura 1.11.

Figura 1.11 Formatul adreselor unicast ISP

- caracterele alfabetice n, m, o i p reflect lungimea variabil a acestor cmpuri. Un exemplu de adres de acest tip este : 0 1 0 : 0 : 0 : 0 : 0 : x , unde x poate fi orice numr (grupurile de zerouri pot fi reduse prin dubla utilizare a semnului:, pentru exemplul de 19

mai sus rezultnd : 010 : : x). Celelalte tipuri de adrese unicast sunt destinate utilizrii locale sau dispozitivelor unui intranet care are nevoie de acces la Internet. Adresa unicast pentru legturi locale este destinat utilizrii pentru o singur legtur, n scopuri precum configurarea autoadresrii, descoperirea vecinilor i a momentelor cnd nu sunt prezente routere. Formatul adreselor unicast pentru legturi locale este prezentat n figura 1.12.

Figura 1.12 - Formatul adreselor unicast pentru legturi locale

- identificatorul de interfa poate fi adresa MAC a unei plci de interfa cu reeaua Ethernet. Adresele MAC, fiind teoretic adrese unice, pot fi concatenate cu prefixuri standard ale adreselor IP, formnd astfel adrese unice pentru utilizatorii mobili sau temporari. Un exemplu de adres unicast pentru legturi locale este : 1111111011:0: mac_address. Adresa unicast de site-uri locale este proiectat pentru utilizarea pe un singur site, ea putnd fi utilizat pentru site-uri sau organizaii care nu sunt conectate la Internetul global i care nu au nevoie de un prefix de adres din spaiul global de adrese Internet. Pentru conectarea la Internetul global se pot forma adrese globale unice prin nlocuirea prefixului site-ului local cu un prefix de abonat care conine identificatorii de registru, de furnizor i de abonat. Formatul adreselor unicast de site-uri locale este prezentat n figura 1.13.

Figura 1.13 Formatul adreselor unicast de site-uri locale

Structurile IPv6 de adrese unicast tranziionale : pentru a permite gazdelor i routerelor s ruteze dinamic pachetele IPv6 prin infrastructuri de reea IPv4 i invers, au fost definite dou adrese unicast IPv6 speciale, ca mecanisme de tranziie : -AdresaunicastIPv6compatibilcuIPv4: - aceast adres unicast tranziional poate fi atribuit nodurilor IPv6 i conine n ultimii 32 de bii o adres IPv4. Aceste adrese au urmtorul format (figura 1.14). :

20

Figura 1.14 Adres unicast IPv6 compatibil cu IPv4 Adresa unicast Ipv6 cu Ipv4 mapat este construit de ctre un router de protocol dual i permite nodurilor compatibile IPv4 s creeze un tunel prin infrastructurile de reea IPv6. Aceste adrese sunt construite automat de ctre routerele de protocol dual (IPv6 -o- IPv4) i nu pot fi atribuite nici unui nod. Aceste adrese au urmtorul format (figura 1.15) :

Figura 1.15 - Adres unicast IPv6 cu IPv4 mapat Observaie : - trecerea printunel (tunnelling) permite transportul pachetelor printr-o regiune de reea altfel incompatibil, ncapsulnd aceste pachete ntr-o structur care poate fi acceptat n exterior. Structurile IPv6 de adrese anycast : adresa anycast reprezint o singur adres atribuit mai multor dispozitive diferite. Un pachet trimis oricrei adrese anycast este rutat ctre un singur dispozitiv, adic celui mai apropiat dispozitiv cu acea adres, dup cum se consider ca msur de distan de ctre protocoalele de rutare. De exemplu, un site www poate fi gzduit (oglindit) pe mai multe servere, cererile de conectare pentru acel site fiind rutate automat ctre un singur server : serverul cel mai apropiat de utilizator. Observaie : ntr-un mediu rutat,cel mai apropiatdispozitiv (server) ar putea s nu fie cel mai apropiat, ca distan, deoarece routerele utilizeaz o gam surprinztor de larg de uniti de msur pentru a calcula rutele. Adresele anycast sunt formate dintr-un spaiu de adrese unicast i ar putea lua forma oricrei (any) adrese unicast, ele fiind formate prin simpla atribuire a aceleiai adrese unicast mai multor dispozitive. Structurile IPv6 de adrese multicast: difuzarea multipl - multicasting elimin adresele IPv4 de clas D (o clas incomplet ("obscur") definit) n favoarea unui nou format de adrese, care permite miliarde de coduri de grupuri multicast. Fiecare cod de grup identific doi sau mai muli destinatari ai pachetelor. Domeniul unei anumite adrese multicast este flexibil, fiecare adres putnd fi limitat la un singur dispozitiv, restricionat n cadrul unui anumit site, asociat cu o anumit legtur de reea sau distribuit global. 1.7. Protocoalele IPX/SPX

21

Seria de protocoale Novell este numit astfel dup principalele sale dou protocale: IPX - Internet Packet Exchange (protocol pentru schimb de pachete interreea) i SPX Sequenced Packet Exchange (protocol pentru schimb de pachete n secven). Aceast stiv de protocoale brevetate a devenit cunoscut la nceputul anilor '80 ca parte integrant a sistemului de operare n reea (NOS - Network Opearting System) - NetWare al firmei Novell. IPX seamn foarte mult cu IP, fiind un protocol cu datagrame fr conexiune, care nu necesit i nu asigur confirmarea pentru fiecare pachet transmis. IPX se bazeaz pe SPX n acelai mod n care IP se bazeaz pe TCP pentru secveniere i alte servicii de nivelul 4 orientate spre conexiune. Protocoalele IPX/SPX ale firmei Novell asigur o funcionalitate echivalent cu cea a nivelurilor 3, respectiv 4, ale modelului de referin OSI. Acest lucru este ilustrat i n figura 1.16, unde se prezint o comparaie ntre modelul de referin OSI i modelul IPX/SPX.

Figura 1.16 Comparaie dintre modelul de referin OSI i modelul IPX/SPX Analiza modelului IPX/SPX : modelul IPX/SPX include patru niveluri funcionale : Aplicaie, Interreea, Legtur de date (Open Data-Link Interface - ODI) i Acces la mediu. Aceste patru niveluri se coreleaz, ntr-o anumit msur, cu cele apte niveluri ale modelului de referin OSI, fr compromiterea funcionalitii. 1) NivelulAplicaie: cuprinde nivelurile Aplicaie, Prezentare i Sesiune ale modelului OSI, iar pentru unele dintre protocoalele sale poate cobor n stiv pn la nivelul OSI Reea. Principalul protocol de nivel Aplicaie al acestui model este NCP - NetWare Core Protocol (protocol de nucleu NetWare) care poate fi interfaa direct att cu SPX, ct i cu IPX. NCP este utilizat pentru tiprire n reea, partajarea fiierelor, pot electronic (e-mail) i acces la directoare. Printe celelalte protocoale de nivel Aplicaie se afl : - RIP Routing Information Protocol (protocol de rutare a informaiilor) - este un protocol de rutare prin care se iau decizii privind cile de rutare IPX. Aceste decizii de rutare 22

sunt luate pe baza a dou criterii : tactul = contorizarea timpului estimativ n care pachetele vor ajunge la destinaie i contorizareahopurilor= numrul routerelor care au manevrat pachetul dirijat. Acest protocol a avut de suferit din cauza faptului c actualizarea tabelei de rutare RIP era difuzat la 60 de secunde, aceasta avnd efecte negative asupra reelelor mari sau foarte ocupate. - SAP - Service Advertising Protocol (protocol de acces la servicii) - este un protocol unic, brevetat, care a fost utilizat de Novell pentru mbuntirea relaiilor client/server. Serverele utilizeaz protocoale SAP pentru a informa periodic (60 secunde) clienii sau alte servere n legtur cu statutul i serviciile lor. Aceste difuzri (informaii) includ numele i tipul, starea operaional, ca i numele de reea, nod i de socket (port pentru protocolul TCP/IP) ale serverului. Routerele pot stoca informaiile de la o difuzare SAP i le pot propaga n alte segmente ale reelei. - NLSP - NetWare Link Service Protocol (protocol de servicii de legtur NetWare) - este un protocol de rutare stare-legtur (link-state routing) pe care Novell intenioneaz s l utilizeze ca nlocuitor pentru vechile protocolale RIP i SAP. NLSP actualizeaz rutele doar atunci cnd apar modificri. 2) Nivelul Interreea: este corelat, ntr-o oarecare msur, cu nivelurile Transport i Reea ale modelului de referin OSI. SPX este un protocol de nivelul 4 (Transpot) care nu poate s realizeze direct interfaa cu nivelul Legtur de date sau ODI (Open Data-Link Interface), el trebuind s paseze datele ctre IPX pentru realizarea legturii cu ODI. SPX este orientat spre conexiune i poate fi utilizat pentru transmiterea datelor ntre un client i un server, ntre dou servere sau chiar ntre doi clieni. Ca i TCP, SPX ofer fiabilitate transmisiunilor IPX, prin administrarea conexiunii i asigurarea controlului fluxului, detectarea erorilor i secvenierea pachetelor. Antetul SPX are dimensiunea i structura descris n figura 1.17.

Figura 1.17 Antetul protocolului SPX

- controlul conexiunii (8 bii) - furnizeaz patru indicatoare de cte doi bii, care controleaz fluxul bidirecional de date ntr-o conexiune SPX ; - identificatorul conexiunii surs (16 bii)/destinaie (16 bii) - identific procesul responsabil cu iniierea conexiunii, respectiv procesul care a acceptat cererea de conexiune SPX ; 23

- numrul de secven (16 bii) - furnizeaz protocolului SPX al gazdei destinaie, contorizarea pachetelor transmise n vederea reordonrii pachetelor primite, dac acestea ajung n alt succesiune; - numrul de confirmare (16 bii) - indic urmtorul segment ateptat; - numrul de alocare (16 bii) - este utilizat pentru urmrirea numrului de pachete trimise, dar neconfirmate de ctre destinatar. IPX este predominant un protocol de nivelul 3 (Reea), dei poate s realizeze interfaa direct cu nivelul Aplicaie. Acesta ofer un serviciu de livrare a datagramelorct se poate de bun". El pregtete pachetele SPX (sau ale altor protocoale) pentru a fi distribuite prin mai multe reele, atandu-le la nceput un antet IPX. Aceast nou structur se numete datagram IPX. Antetul datagramei conine toate informaiile necesare pentru rutarea pachetelor ctre destinaiile lor, indiferent unde ar fi acestea. Antetul IPX are dimensiunea i structura descris n figura 1.18.

Figura 1.18 Antetul protocolului IPX

- suma de control (16 bii) - este folosit doar pentru compatibilizarea cu protocoalele anterioare (XNS). IPX i atribuie valoarea prestabilit FFFFh i las n seama protocoalelor superioare detectarea (i corectarea) erorilor de transmisie ; - lungimea pachetului (16 bii) - definete lungimea datagramei IPX, incluznd antetul i datele. Este util pentru verificarea integritii pachetului; - controlul transportului (8 bii) - este setat pe 0 de ctre protocolul IPX surs, naintea transmiterii, i este incrementat cu unu de ctre fiecare router care primete i retransmite datagrama respectiv; - tipul pachetului (8 bii) - identific tipul pachetului inclus n datagrama IPX (RIP, NCP, SPX, error etc.) i i permite gazdei destinaie s transmit coninutul urmtorului nivel de protocol corespunztor; - numrul de socket destinaie (16 bii)/surs (16 bii) - deoarece IPX permite mai multe conectri simultane la un singur sistem, este esenial identificarea numrului de socket al procesului sau programului care primete sau transmite pachetele (este similar cu numrul de port al protocolului TCP/IP).

24

Operarea IPX/SPX tipic. Schema de adresare IPX : SPX creeaz i menine ntre dou dispozitive interconectate un flux de bii orientat spre conexiune. Protocolul accept blocuri mari de date de la protocoalele de nivel superior i le mparte n fragmente mai uor de administrat, cu lungimi de pn la 534 octei. Antetul SPX este adugat naintea datelor, pentru a se crea segmente de date SPX. Aceste segmente sunt pasate protocolului IPX, care le introduce n cmpul de date al pachetelor sale i populeaz toate cmpurile preambulului IPX. nainte ca pachetul s fie pasat nivelului ODI (Open Data-Link Interface), aceste cmpuri ale antetului includ deja adresa reelei, lungimea, suma de control i alte informaii de antet. Poziionarea antetelor IPX i SPX ntr-un cadru 802.3 Ethernet este ilustrat n figura 1.19.

Figura 1.19 Structura unui cadru 802.3 Ethernet coninnd informaii IPX/SPX

- calculatorul destinaie realizeaz inversul operaiei descrise anterior. El primete pachetele i le paseaz protocolului IPX/SPX pentru reasamblare. Dac este necesar, pachetele sunt reordonate n segmente de date, care sunt transmise aplicaiei corespunztoare. Adresarea IPX: adresele IPX au o lungime de 10 octei (80 bii). Fiecare adres are dou componente : un numr de reea, cu o lungime de pn la 32 de bii (4 octei), i un numr de nod de 48 de bii (6 octei). Aceste numere sunt exprimate n notaie hexazecimal cu punct. Un exemplu de adres IPX ar fi : 1a2b.3c4d.0000.5e6f.7a8b, unde 1a2b.3c4d reprezint numrul de reea, iar 0000.5e6f.7a8b este numrul de nod. De obicei, pentru numrul de gazd (nod) al adresei IPX este utilizat adresa MAC care, fiind teoretic unic, confer o mai mare autenticitate adresrii IPX. Observaie : - ca i IP, IPX are capacitatea de a accepta mai multe sesiuni simultane. Acest lucru creeaz nevoia de identificare a procesului sau programului care comunic ntr-o sesiune dat. Aceast identificare este realizat prin utilizarea unui numr desocketpe 16 bii n preambulul IPX care este analog numrului de port TCP/IP. 5. 1.8. Protocoalele TCP/IP i UDP pentru asigurarea compatibilitii cu protocoalele Ethernet, firma Novell a

fcut din IPv6 protocolul prestabilit pentru versiunile NetWare viitoare, ncepnd cu NetWare

25

Modelul TCP/IP (Transmission Control Protocol/Internet Protocol) a fost creat de US DoD (US Department of Defence - Ministerul Aprrii Naionale al Statelor Unite) din necesitatea unei reele care ar putea supravieui n orice condiii. DoD dorea ca, atta timp ct funcionau maina surs i maina destinaie, conexiunile s rmn intacte, chiar dac o parte din maini sau din liniile de transmisie erau brusc scoase din funciune. Era nevoie de o arhitectur flexibil, deoarece se aveau n vedere aplicaii cu cerine divergente, mergnd de la transferul de fiiere pn la transmiterea vorbirii n timp real. Aceste cerine au condus la alegerea a patru niveluri pentru modelul TCP/IP: Aplicaie, Transport, Reea (sau Internet) i Acces la Reea.

Figura 1.20 Nivelurile modelului TCP/IP Nivelul Aplicaie Nivelul aplicaie se refer la protocoalele de nivel nalt folosite de majoritatea aplicaiilor, precum terminalul virtual (TELNET), transfer de fiiere (FTP) i pota electronic (SMTP). Alte protocoale de nivel aplicaie sunt DNS (Domain Name Service), NNTP sau HTTP. n majoritate implementrilor, nivelul aplicaie trateaz nivelurile inferioare ca ocutie neagrcare ofer o infrastructur sigur de comunicaii, dei majoritatea aplicaiilor cunosc adresa IP sau portul folosit. Majoritatea protocoalelor de la nivelul aplicaie sunt asociate cu modelul client-server. Serverele au de obicei asociate porturi fixe, atribuite de IANA: HTTP are portul 80, FTP portul 21, etc. n schimb, clienii folosesc porturi temporare. Nivelul Transport Este identic cu cel din modelul OSI, ocupndu-se cu probleme legate de siguran, control al fluxului i corecie de erori. El este proiectat astfel nct s permit conversaii ntre 26

entitile pereche din gazdele surs, respectiv, destinaie. n acest sens au fost definite dou protocoale capt-la-capt. Primul din ele, TCP (Trasmission Control Protocol). El este un protocol sigur orientat pe conexiune care permite ca un flux de octei trimii de pe o main s ajung fr erori pe orice alt main din inter-reea. Acest protocol fragmenteaz fluxul de octei n mesaje discrete i paseaz fiecare mesaj nivelului internet. TCP trateaz totodat controlul fluxului pentru a se asigura c un emitor rapid nu inund un receptor lent cu mai multe mesaje dect poate acesta s prelucreze. Al doilea protocol din acest nivel, UDP (User Datagram Protocol), este un protocol nesigur, fr conexiuni, destinat aplicaiilor care doresc s utilizeze propria lor secveniere i control al fluxului. Protocolul UDP este de asemenea mult folosit pentru interogri rapide ntrebare-rspuns, client-server i pentru aplicaii n care comunicarea prompt este mai importatnt dect comunicarea cu acuratee, aa cum sunt aplicaiile de transmisie a vorbirii i a imaginilor video. Nivelul Reea (Internet) Scopul iniial al nivelului reea ("Internet Protocol") era s asigure rutarea pachetelor n interiorul unei singure reele. Odat cu apariia interconexiunii ntre reele, acestui nivel i-au fost adugate funcionaliti de comunicare ntre o reea surs i o reea destinaie. n stiva TCP/IP, protocolul IP asigur rutarea pachetelor de la o adres surs la o adres destinaie, folosind i unele protocoale adiionale, precum ICMP sau IGMP. Determinarea drumului optim ntre cele dou reele se face la acest nivel. Comunicarea la nivelul IP este nesigur, sarcina de corecie a erorilor fiind plasat la nivelurile superioare (de exemplu prin protocolul TCP). n IPv4 (nu i IPv6), integritatea pachetelor este asigurat de sume de control. Nivelul Acces la reea Se ocup cu toate problemele legate de transmiterea efectiv a unui pachet IP pe o legtur fizic, incluznd i aspectele legate de tehnologii i de medii de transmisie, adic nivelurile OSI Legtur de date i Fizic. Modelul de referin TCP/IP nu spune mare lucru despre ce se ntmpl acolo, ns menioneaz c gazda trebuie s se lege la reea, pentru a putea trimite pachete IP, folosind un anumit protocol. Acest protocol nu este definit i variaz de la gazd la gazd i de la reea la reea. User Datagram Protocol, prescurtat UDP, reprezint un protocol de comunicaie pentru calculatoare ce aparine nivelului sau stratului Transport (layer 4) al modelului standard OSI. 27

mpreun cu protocolul IP, acesta face posibil livrarea mesajelor ntr-o reea. Spre deosebire de protocolul TCP, UDP este un protocol ce nu ofer sigurana sosirii datelor la destinaie. Comunicarea prin HTTP Dupa cum ii spune si numele este un protocol care permite transformarea unor comenzi de formatare de text. Aceste comenzi sunt scrise in limbajul HTML (Hyper Text Markup Language) si care pot fi scrise cu ORICE tip de editor de texte sunt mai apoi interpretate de un parser integrat intr-un Browser si care astfel ne permite sa vizualizam pe Internet documente realizate in cele mai felurite moduri, in functie de imaginatia si resursele celui care a creat acel document. De fapt ce este HTML-ul mai exact? HTML-ul este un set de conventii pentru marcarea portiunilor de document astfel incat fiecare portiune sa apara cu format distinct atunci cand documentul este accesat de un program de analiza sintactica (parser). HTML este limbajul de marcare ce stabileste aspectul documentelor WWW (World Wide Web), iar prin intermediul browserelor se poate vedea documentul gata formatat. HTML este de fapt un subset al standardului SGML (Standard Generalized Markup Language) si include capacitati care permit autorilor sa insereze hiperlegaturi care afiseaza alte documente HTML cand se executa clic pe ele.

28

CAPITOLUL 2 ACHIZIIA DATELOR I CONTROLUL PROCESULUI

2.1. Caracteristicile plcii de dezvoltare EasyPic5

Figura 2.1. PLACA DE DEZVOLTARE EASYPIC5 1. Sursa externa de alimentare 8 16 V ; 2. Alege intre sursa externa de alimentare si alimentarea prin portul USB. Cand se face alimentarea prin portul USB nu mai este nevoie de sursa externa de alimentare. 3. Comutatorul ON/OFF al sursei de alimentare. 4. Un foarte rapid si flexibil echipament de programare cu modul programator/depanator mikroICD. Caracteristica sa este abilitatea de upgradare. Prin descarcarea de noi soft uri, este posibila programarea unor noi MCU uri in anii urmatori. 29

5. Termometrul DS 1820 permite masurarea temperaturi cu o acuratete de 0,5 oC. 6. Comunicarea seriala prin liniile TX si RX pentru toate microcontrolerele. 7. Pentru testare pini RA 0 RA 5 pot fi conectati la potentiometrele P1 si P2. Acesti pini pot fi folositi ca intrare pentru masurarea setului de tensiuni ajustabile de potentiometre. 8. PORTA este conectat la o retea de rezistori, folosindu-se grupul de comutatoare SW1. Daca un comutator este OFF, pinul corespunzator nu are atasat un rezistor. Simultan, permite ca pini PORTA sa fie folositi in mod analog ca si niste pini I/O digitali obisnuiti. 9. Puntea de legatura care determina performantele portului in modul idle (ridicat sau coborat). Selecteaza ridicatdaca pini detecteaza semnalul zero (0) logic si viceversa. 10. Conectorul cu 16 pini permite conectarea usoara la afisajul LCD. 11. Conectorul cu 20 pini permite conectarea usoara la afisajul LCD (modul grafic). 12. Conector pentru touch panel. 13. Controlerul pentru touch panel. 14. Microcontrolerele suport pentru EasyPIC5 in pachete DIP8, DIP14, DIP20, DIP28 si DIP40. Prin acestea intreaga gama de microcontrolere Microcip poate fi folosita in EasyPIC5. 15. 36 de butoane permit controlul fiecarui pin din microcontroler. 16. Punte de selectare a starii inalta/joasa pentru pini de intrare cand butoanele corespunzatoare sunt apasate. 17. 36 de LED uri conectate la porturile microcontrolerului I/O. 18. Ecran in 7 segmente in modul multiplex. 19. Porneste sau opreste LED urile in porturile A, B, C, D si E. Se poate alege la care port sa fie conectate LED urile. Deasemenea aceste comutatoare pornesc sau opresc cifrele de pe ecranul in 7 segmente. Aceste comutatoare DIP permit deconectarea LED urilor de la pini MCU. 20. Potentiometrul pentru contrastul la LCD. 21. Potentiometrul pentru contrastul la LCD ul grafic. 22. Portul USB pentru MCU. 23. Conector pentru tastatura PC ului. 24. Circuitul de resetare. 25. Intrerupatorul alimentari MCU ului. Conectarea sistemului Pasul 1. Se ia placa de sistem, si CD - ul producatorului din cutie. Intai se introduce CD - ul in CD - Drive. Nu se conecteaza sistemul depanator deocamdata la PC. 30

Pasul 2.

Se instaleaza software - ul programatorului PICflash. Acesta permite ca

programul scris pe PC sa fie transferat pe cipul microcontrolerului. Instructiunile detaliate despre cum se instaleaza sunt continute de manualulProgramatorul PICflash". Pasul 3. Se instaleaza driverele USB in PC. Ele ii permit hardware - ului programator sa functioneze corect pe placa EasyPIC5. Informatii despre instalarea lor se gasesc in manualulInstalarea driverelor USB". Pasul 4. Se conecteaza EasyPIC5 la PC folosind cablul USB. Se foloseste unul din porturile USB din spatele PC - ului deoarece ei au conexiune directa cu computerul principal. Daca se alimenteaza placa EasyPIC5 pentru prima data, PC - ul imediat va detecta noul hardware. dupa aceea un mesaj va aparea pe ecran care va intreba daca Widows ar trebui sa caute noi drivere.Daca se selecteaza optiuneaNu, nu de data astasi se apasa Nextiar in ferestrele ce vor aparea se va apasa tot Nextsistemul de operare le va gasi automat. Pentru a incheia procesul se apasaFinish. Dupa aceea, se poate rula si folosi PICflash - ul dupa cum se arata in manualulProgramatorului PICflash". In cazul in care EasyPIC5 a fost alimentata in timpul instalari driverelor, Windows nu va intreba daca trebuie actualizate driverele. Dupa acesti pasi easyPIC5 fva fi instalat si gata sa fie utilizat. Acum se pot citi programe de pe chip sau se poate scrie unul nou pe el. CD - ul produsului furnizeaza numeroase exemple programe simple. Sistemul de dezvoltare EasyPIC5 reprezinta o solutie completa pentru aproape toate microcontrolerele Microchip PIC. A fost proiectat pentru a permite studentilor si inginerilor sa testeze si exploreze usor capacitatile microcontrolerelor PIC. Faciliteaza interfatarea microcontrolerelor PIC cu circuitele externe si cu o gama larga de periferice. Deci utilizatorul se poate concentra in dezvoltarea software. Figura 2.2 prezinta aspectul general al placii. Fiecare componenta are alaturi un marcaj de identificare atat sus cat si jos. Aceste marcaje descriu conesxiunile cu microcontrolerele, modul de operare si furnizeaza informatii asuplimentare utile. Deoarece toate informatiile relevante sunt tiparite pe placa, nu sunt necesare multe scheme suplimentare.

31

Figura 2.2 Aspectul general al plcii Diodele Emitatoare de Lumina (Light Emitting Diodes) sunt cele mai utilizate componente, folosite uzual pentru prezentarea starilor digitale ale pinilor. EasyPIC5 are 32 de leduri care sunt conectate la PORTA, PORTB, PORTC si PORTD ale microcontrolerului.

Figura 2.3 LED-uri

32

Fiecare grup de opt leduri poate fi conectat sau deconectat folosind comutatorul SW6. Exceptie face PORTE care are 4 leduri si este conectat la acceasi comutator ca si PORTA. Ledurile sunt conectate atunci cand comutatorul corespondent de pe SW6 este ON. Cand sunt conectate, ledurile vor prezenta starea pinului corespunzator. In caz contrar ledurile sunt tot timpul stinse, nu conteaza ce stare are portul, ca si cand nici un curent nu trece prin el. Figura 2.4 ilustreaza conexiunea dintre leduri si PORTB de pe microcontroler. Un rezistor este conectat in serie cu ledul pentru a limita curentul lui. In acest caz valoarea rezistorului este 1K.

Figura 2.4 Schema LED-urilor Circuitul de reset Printre alte butoane, exista unul rosu in stanga marcat ca si RESET. Este folosit pentru resetarea MCU.

Figura 2.5 Butonul de reset 33

Se poate vedea in figura urmatoare ca pini microcontrolerului MCLR sunt conectati la circuitul programator in loc de butonul de RESET.

Figura 2.6 Microntreruptorul de reset EasyPIC5 are 36 de butoane care pot fi folosite pentru schimbarea starilor intrrilor digitale ale porturilor microcontrolerului. Conexiunea dintre butoane si PORTA, PORTB, PORTC, PORTD si PORTE este aratata in figura 22. Jumperul J17 determina daca apasarea unui buton va aduce zero logic (0) sau unu logic (1) pinului corespunzator. Cand butonul este eliberat, statusul pinului este determinat de porturile ridicat sau coborat ale jumperelor. Jumperul J17 este conectat la +5 V, asa incat apasarea butonului va aduce unu (1) logic la pinul corespunzator. In figura 2.8, jumperul J2 este in pozitiaridicat, asa fel incat atunci cand butonul este eliberat, rezistorul duce pinul RB4 al microcontrolerului la + 5 V. Prin apasarea butonului pinul portului este conectat la impamantare (J17 este in pozitia de jos). Astfel, doar atunci cand butonul este apasat microcontrolerul va simti zero logic (0). In caz contrar statusul pinului va fi intotdeauna unu (1) logic.

34

Figura 2.8 Structura microntreruptoarelor LCD-urile standard cu caractere sunt probabil cele mai folosite componente de vizualizat date. In mod normal pot afisa doua lini de cat 16 caractere alfa-numerice, fiecare pana la 5 x 8 pixeli. LCD-urile cu caractere comunica cu microcontrolerul printr-o autostrada de data de 4 biti. Conexiunea cu microcontrolerul este exemplificata in figura 2.9.

Figura 2.9 Structura afiajului LCD 2x16 35

NOTA: Este important de stiut ca LCD-ul trebuie montat sau demontat de pe EasyPIC5 numai dupa ce este deconectat de la alimentare. Comunicarea USB Conectorul de comunicarea USB este plasat in coltul dreapta sus a placii EasyPIC5. Este folosit cu microcontrolere PIC specifice care au suport USB, ca si PIC18F2450 sau PIC18F4550. Conectorul de comunicare USB nu poate fi folosit pentru programare asa cum nici conectorul de programare USB nu poate fi folosit epntru comunicare. Pentru a activa conexiunea dintre microcontroler si conectorul de comunicare USB, grupul de jumpere J12 trenuie pozitionate in pozitia dreapta. In consecinta pini RC3, RC4 si RC5 ai microcontrolerului sunt deconectati de restul sistemului si conectati la conectorul de comunicare USB.

Figura 2.10 Schema de comunicare USB Portul de acces direct Toti pini de intrare/iesire ai microcontrolerului pot fi accesati prin conectori 2 x 5 amplasati de-a lungul partii dreapte a placii. Pentru fiecare dintre PORTA, PORTB, PORTC, 36

PORTD si PORTE exist un conector cu 10 pini care asigur VCC, GND si pana la opt pini /port. Acesti conectori pot fi folositi pentru marirea sistemului cu placi externe cum ar fi Serial Ethernet, Compact Flash, MMC/SD, ADC, DAC, CAN, RTC, RS - 485 etc. Trebuie avut in vedere ca perifericele de pe plac sunt deconectate de la microcontroler, prin setarea jumperilor corespunzatori, cand perifericele externe folosesc aceeasi pini. Conectorii pot fi de asemena folositi pentru a atasa teste logice sau alte tipuri de echipamente de testare.

Figura 2.11 Conectorii portului de acces direct

Figura 2.12 Conexiunea PORTB

37

2.2. Microcontroler-ul PIC18F452 La modul general un controler (controller termen de origine anglo-saxon, cu un domeniu de cuprindere foarte larg) este o structur electronic destinat controlului unui proces sau unei caracteristici a mediului exterior, fr s fie necesar intervenia operatorului uman. Un microcontroler este un "calculator pe un chip". Cuvntul "micro" sugereaz mrimea redus a dispozitivului iar "controler" ne spune c dispozitivul poate fi folosit pentru a controla obicte, procese sau evenimente. Exist la ora actual un numr foarte mare de tipuri constructive de microcontrolere. Un criteriu de clasificare care se poate aplica ntotdeauna este lungimea (dimensiunea) cuvntului de date. Funcie de puterea de calcul dorit i de alte caracteristici se pot alege variante avnd dimensiunea cuvntului de date de 4, 8, 16, sau 32 de bii. Nu este obligatoriu ca dimensiunea cuvntului de date s fi egal cu dimensiunea unui cuvnt main. Exist i multe variante zise dedicate (specializate prin intermediul codului preprogramat i al resurselor hard) pentru comunicaie, controlul tastaturilor, controlul aparaturii audiovideo, prelucrarea numeric a semnalului, etc Practic cea mai mare parte a microcontrolerelor se realizeaz la ora actual n tehnologie CMOS (tehnologii similare seriilor standard CMOS de circuite numerice HC, AC, ALV). Se pot realiza astfel structuri cu un consum redus (care depinde de frecvena de lucru) permind eventual alimentarea de la baterie. Logica intern este static (total, sau n cea mai mare parte) permind astfel, n anumite condiii, micorarea frecvenei de ceas sau chiar oprirea ceasului n ideea optimizrii consumului. Tehnologia este caracterizat i de o imunitate mai mare la perturbaii, esenial ntr-un mare numr de aplicaii specifice. Se realizeaz i variante pentru domeniu extins al temperaturii de funcionare exemplu 40 +85 C). Exist diverse variante de ncapsulare (plastic i mai rar ceramic), multe destinate montrii pe suprafa (SMT) : DIP (de la 8 la 68 pini), SOIC, PLCC, PQFP, TQFP (> 100 pini), etc. PIC18F452 aparine unei clase de microcontrolere de 32 bii cu arhitectur RISC. Structura lui general este artat n schia urmtoare reprezentnd blocurile de baz. (de

38

Figura 2.13 Structura unui microcontroler Memoria program (FLASH)-pentru memorarea unui program scris.

Pentru c memoria ce este fcut n tehnologia FLASH poate fi programat i tears mai mult dect odat, aceasta face microcontrolerul potrivit pentru dezvoltarea de component. EPROM - memorie de date ce trebuie s fie salvate cnd nu mai este alimentare. Este n mod uzual folosit pentru memorarea de date importante ce nu trebuie pierdute dac sursa de alimentare se ntrerupe dintr-o dat. De exemplu, o astfel de dat este o temperatur prestabilit n regulatoarele de temperatur. Dac n timpul ntreruperii alimentrii aceast dat se pierde, va trebui s facem ajustarea nc o dat la revenirea alimentrii. Astfel componenta noastr pierde n privina auto-meninerii. RAM - memorie de date folosit de un program n timpul executrii sale. n RAM sunt memorate toate rezultatele intermediare sau datele temporare ce nu sunt cruciale la ntreruperea sursei de alimentare. PORTUL A i PORTUL B sunt conexiuni fizice ntre microcontroler i lumea de afar. Portul A are 5 pini, iar portul B are 8 pini. TIMER-UL LIBER (FREE-RUN) este un registru de 8 bii n interiorul microcontrolerului ce lucreaz independent de program. La fiecare al patrulea impuls de ceas al oscilatorului i ncrementeaz valoarea lui pn ce atinge maximul (255), i apoi ncepe s numere tot din nou de la zero. Dup cum tim timpul exact dintre fiecare dou incrementri ale coninutului timer-ului, poate fi folosit pentru msurarea timpului ce este foarte util la unele componente. Unitatea de procesare central are rolul unui element de conectivitate ntre celelalte blocuri ale microcontrolerului. Coordoneaz lucrul altor blocuri i execut programul utilizatorului.

39

Figura 2.14 Arhitectura Harvard vs arhitectura von Neumann CISC, RISC S-a spus deja c PIC18F452 arhitectur RISC. Acest termen este adeseori gsit n literatura despre calculatoare, i are nevoie s fie explicat aici mai n detaliu. Arhitectura Harvard este un concept mai nou dect von-Neumann. S-a nscut din nevoia de mrire a vitezei microcontrolerului. n arhitectura Harvard, bus-ul de date i bus-ul de adrese sunt separate. Astfel este posibil un mare debit de date prin unitatea de procesare central, i bineneles, o vitez mai mare de lucru. Separarea programului de memoria de date face posibil ca mai departe instruciunile s nu trebuiasc s fie cuvinte de 8 bii. PIC8F452 folosete 16 bii pentru instruciuni ceea ce permite ca toate instruciunile s fie instruciuni dintr-un singur cuvnt. Este de asemenea tipic pentru arhitectura Harvard s aib mai puine instruciuni dect von-Newmann i s aib instruciuni executate uzual intr-un ciclu. Microcontrolerele cu arhitectur Harvard sunt de asemenea numite "microcontrolere RISC". RISC nseamn Reduced Instruction Set Computer. Microcontrolerele cu arhitectura von-Newmann sunt numite "microcontrolere CISC". Titlul CISC nseamn Complex Instruction Set Computer. Pentru c PIC18F452 este un microcontroler RISC, aceasta nseamn c are un set redus de instruciuni, mai precis 75 instruciuni (de ex. microcontrolerele INTEL i Motorola au peste 100 de instruciuni). Toate aceste instruciuni sunt executate ntr-un ciclu cu excepia instruciunilor jump i branch.

40

Caracteristici ale microcontrolerului PIC8F452: nalt performan RISC CPU ; 75 de instruciuni; Vitez de operare: 40 MHz; Intrare ceas 40 MHz max; 200ns/ciclul de instruciune ; Pn la 32 Kbytes de memorie FLASH programabil ; Pn la 1536 bytes de memorie RAM ; Pn la 256 bytes de memorie EEPROM ; Capabilitate de intrerupere de pn la 18 surse ; Moduri de adresare directe i indirecte Power-on Reset (POR) ; Power-up Timer (PWRT) i Oscilator Start-up Timer (OST); Watchdog Timer (WDT) atunci cnd se folosete oscilator RC; Cod de protecie programabil; Putere sczut n modul SLEEP; Opiune de selectare a oscilatorului; Putere sczut, tehnologie CMOS FLASH/EEPROM de mare vitez; Design static; Intrare serial de programare (ICSP) prin doi pini ; Permite scrierea sau citirea datelor din memorie; Plaja tensiunii de alimentare pentru funcionare (2V 5.5V) ; Nivelul maxim de curent (25 mA) ; Consumul n regimul sczut al puterii : < 0.6 mA la 3V, 4MHz ; 20 A la 3V, 32KHz ; 1 A n standby ; Dou module PWM de captur : Captur pe 16 bii la o rezoluie de 12.5 ns ; Captur pe 16 bii la o rezoluie de 100 ns ; PWM max. rezoluie de 10 bii ; Convertor Analog Digital pe 10 bii ; 41

2 Synchronous Serial Port (SSP) cu SPI n modul (Master) i I C n modul

(Master/Slave) ; Universal Synchronous Asinchronous Receiver Transmitter (USART) cu 9 bii de adrese de detecie; Parallel Slave Port (PSP) pe 8 bii cu RD, WR i CS*; Circuit de detecie pentru Brown-out Reset (BOR); Configuraia pinilor microcontrolerului PIC18F452

Figura 2.15 Configuraia pinilor microcontrolerului

42

CARACTERISTICI Frecvena de operare Resetri i ntrzieri

PIC18F452 DC 40 MHz POR, BOR. Instructiunea RESET, Stiv plin, (PWRT, OST) 16384 32K 1536 256 18 Porturi : A,B,C,D,E 4 2 MSSP, USART PSP 8 canale de intrare 75 de instruciuni 44

Memorie Program (Instruciuni) Memorie Flash programabil Memorie RAM (bii) Memorie EEPROM (bii) ntreruperi Porturi de intrare/ieire Timere Module PWM/Comparatoare/Capturi Comunicare serial Comunicare paralel Modul pe 10 bii Analog/Digital Set de instruciuni Numr de pini

Schema bloc intern a microcontrolerului PIC8F452 43

Figura 2.16 Schema bloc intern a microcontrolerului PIC8F452

44

DENUMIREA PINILOR MCLR/Vpp

DIP pin 1

PLCC I/O/P pin 2 tip I/P

Buffer tip (Reset) ST

Descriere sau prin mod de

programare

aplicarea

tensiunii de scriere (13V) ; Pentru modul RESET pinul OSC1/CLOKIN OSC2/CLOKOUT 13 14 14 15 I O se conecteaz la mas; ST1/CMOS Intrare pentru oscilator extern Ieire pentru oscilator de cristal, rezonator sau oscilator RC ; PORTA bidirecional I/O RA0/AN0 RA1/AN1 RA2/AN2/VrefRA3/AN3/Vref+ RA4/TOCKI RA5/SS/AN4 2 3 4 5 6 7 3 4 5 6 7 8 I/O2 I/O I/O I/O I/O I/O TTL TTL TTL TTL ST TTL AN0 AN1 AN2 AN3 AN4 AN1 numeric serial; PORTB RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 36 37 38 39 41 42 43 44 I/O I/O I/O I/O I/O I/O I/O I/O TTL/ST(1) TTL TTL TTL TTL TTL TTL/ST(2) TTL/ST(2) 45 Pin de programare serial, intrare ceas pentru sincronizare ; Pin de programare serial, Pin de programare prin punere la mas; Pin bidirecional I/O, convertor convertor convertor convertor convertor convertor sau analoganaloganaloganaloganaloganalogselectarea numeric; numeric; numeric negativ; numeric negativ; numeric, intrare ceas;

modului SLAVE al portului

port pentru programare ; pentru ntrerupere extern ;

CAPITOLUL 3 LIBRRIA SPI ETHERNET I CONTROLERUL ENC28J60

3.1. Specificaii ENC28J60 ENC28J60 este un controller Ethernet cu interfaa SPI. Este special proiectat pentru a fi conectat prin SPI la un controller, oferind acestuia o interfaa Ehernet. ENC28J60 indeplineste specificaiile IEEE 802.3 si ofer urmtoarele servicii: packet filtering throughput mare pentru date (datorita modulului DMA incorporat) 46

calculul sumei de control asistat de hardware. ENC28J60 incorporeaz urmtoarele module: Interfaa SPI - canal de comunicaie cu controllerul gazda. Registri de control - controlul si monitorizarea ENC28J60. Memorie Ram dual port - buffer pentru pachetele recepionate si trimise. Unitate de arbitru - regleaz cererile de access ale DMA-ului. O interfaa pentru magistrala - interpreteaz comenzi si date venite prin SPI. MAC - conform IEEE 802.3. PHY - modul pentru nivelul fizic. Organizarea memoriei Memoria lui ENC28J60 este implementata ca RAM static si se imparte in 3 tipuri: Registri de control Ethernet buffer Registri PH Registri de control Acetia asigura interfaa principala intre controllerul gazda si logica controllerului Ethernet. Scriere si citirea acestor registri se poate face in mod direct de controllerul gazda utiliznd SPI, acesta avnd astfel controlul asupra operaiilor executate de ENC28J60. Registrii de control sunt in general grupai in registrii de tip ETH, MAC si MII (Media Independent Interface). Ne putem da seama din ce categorie face parte un registru uitandu-ne la prefixul numelui sau. Memoria unde sunt mapati registrii de control este partiionata in 4 bank-uri (vezi tabelul 3-1, pagina 12 din Data Sheet-ul ENC28J60), selectabile prin intermediul biilor BSEL1:BSELO din registrul ECON1. Fiecare bank are 32 bytes, deci putem adresa registrii in interioul unui bank folosind o adresa de 5 bii. Deoarece registrii EIE, EIR, ESTAT, ECON2 si ECON1 sunt foarte des utilizai, acetia au fost mapati in fiecare bank, pentru a facilita accesul la ei. Cel mai important registru dintre cei menionai in tabelul de mai sus este ECON1. Bii importani din acest registru sunt: TXRTS: Transmit Request to Send bit 1 = logica de transmisie transmite un pachet 0 = logica de transmisie este idle RXEN: Receive Enable bit 1 = pachetele care nu au fost filtrate vor fi scrise in bufferul de receive 0 = toate pachetele vor fi ignorate BSEL1:BSELO: Bank Select bits 47

11 = SPI va vea acces la registrii din bank-ul 3 10 = SPI va vea acces la registrii din bank-ul 2 01 = SPI va vea acces la registrii din bank-ul 1 00 = SPI va vea acces la registrii din bank-ul 0 Ethernet buffer Bufferul Ethernet reprezint acea zona de memorie in/din care ENC28J60 va scrie/citi packetele recepionate sau transmise. Capacitatea bufferului este de 8Kbytes si este impartit in doua zone distincte pentru pachete recepionate si transmise. Dimensiunea si locaia celor doua zone de memorie sunt configurabile de ctre controllerul gazda prin intermediul SPI. Receiver Buffer - este organizat ca un buffer circular FIFO, controlat de hardware. Perechile de registri ERXSTH:ERXSTL si ERXNDH:ERXNDL sunt folosii ca pointeri spre inceputul si sfritul bufferului. Hardware-ul are grija ca pachetele sa fie dispuse in mod circular in spaiul dintre cei doi pointeri. Transmit Buffer - orice spaiu care nu este folosit pentru receive din cei 8Kbytes, este folosit ca buffer de transmit. Cnd controllerul gazda vrea sa trimit un pachet, pune in registrii ETXST si ETXND adresele de inceput si de sfrit ale respectivului pachet. Hardware-ul NU verifica daca aceti pointeri sunt in spaiul de transmit. Este responsabilitatea controllerului gazda ca adresele furnizate sa fie corecte.

48

Figura 3.4 Organizarea tampoanelor ethernet Registri PHY Permit configurarea si controlul modulului Nivel Fizic. Spre deosebire de registrii de control si de bufferul Ethrenet, registrii PHY nu pot fi modificai in mod direct de controllerul gazda prin SPI. Pentru a avea acces la acetia, controllerul ii poate accesa indirect prin intremediul registrilor de control de tip MII. Implementarea SPI la ENC28J60 Controllerul Ethernet ENC28J60 este proiectat pentru a se conecta cu uurina la portul de SPI al celor mai multe microcontrollere.

49

Figura 3,5 Conectarea Enc28J60 la portul de SPI Funcionarea ENC28J60 depinde in totalitate de comenzile primite de la controllerul gazda, de aceea in continuare ne vom uita la forma pe care o au aceste comenzi SPI.

Figura 3.6 Set de instruciuni SPI pentru ENC28J60 Generaliti legate de comenzile SPI: comenzile sunt luate in considerare de ENC28J60 doar in momentul in care acesta este selectat -> controllerul gazda pune linia CS (SS) pe 0 o comanda se termina, punandu-se linia CS pe 1 primul byte trimis de controllerul gazda spre cip este format din: 3 bii reprezentnd codul operaiei 5 bii reprezentnd: o constanta in cazul scrierii / citirii din bufferul Ethernet adresa unuia dintre cei 32 registri de control ai bank-ului curent in cazul accesului la un registru de control

50

Sa analizam urmtoarele comenzi: Read Control Register (RCR): controllerul trimite doar un byte daca se dorete citirea dintr-un registru ETH, imediat dup primirea comezii, ENC28J60 va incepe transmisia coninutului registrului respectiv pe SO. deci primul byte primit de controller pe linia de MISO va fi chiar informaia dorit (coninutul registrului) daca se dorete citirea dintr-un registru MAC sau MII, prima data ENC28J60 va trimite un byte dummy, si abia apoi coninutul registrului respectiv. Write Control Register (WCR): controllerul va trimite 2 octei, despre primul am vorbit, iar al doilea este byte-ul care va fi scris la adresa registrului specificat.

3.2. Librria SPI Ethernet SPI este un standard sincron (ca si I2C) dezvoltat de Motorola ce opereaz in mod fullduplex (transferul de date are loc in ambele direcii simultan). Device-urile comunica folosind o relaie de tipul master/multi slave (nu sunt suportai mai muli masteri) master-ul fiind cel care iniiaz frame-urile de date. SPI se mai numete si "four wire" serial bus pentru al deosebi de celelalte standarde ce folosesc 1, 2 sau 3 fire. Sa vedem care sunt cele 4 fire (figura 3.1): SCLK Serial Clock ( output from master) MOSI/SIMO Master Output, Slave Input (output from master) MISO/SOMI Master Input, Slave Output (output from slave) SS Slave Select (active low; output from master)

Figura 3.1 four wire serial bus

51

Observam ca de data aceasta avem doua fire pe care se transmit date (MOI si MISO). De asemenea, slave-ul este selectat direct prin intermediul semnalului SS, pentru fiecare slave fiind nevoie de inca un fir de selecie (figura 3.2).

Figura 3.2 Evidenierea relaiei Master/Multi-Slave SPI vs I2C Ambele standarde sunt folosite cu succes pentru comunicaia cu periferice incete ce sunt accesate intermitent (EEPROM-urile si ceasurile de timp real sunt exemple de astfel de deviceuri). Totui, SPI se muleaz mai bine ca I2C pe aplicaiile care folosesc stream-uri de date (spre deosebire de aplicaiile unde se citesc/scriu diverse locaii din slave device). Un exemplu de aplicaie ce folosete stream-uri este comunicaia dintre micropocesoare sau DSP-uri (digital signal processors). SPI poate atinge rate de transfer semnificativ mai mari dect I2C - interfeele SPI putnd funciona la zeci de MHz. SPI este eficient mai ales in aplicaii ce ii folosesc capacitatea de a realiza conexiuni full duplex, ca de exemplu comunicarea dintre un "codec" (coder-decoder) si un DSP, ce presupune trimiterea de sample-uri in ambele direcii. Datorita faptului ca nu exista suport built-in pentru adresarea device-urilor, SPI necesita mai mult efort si mai multe resurse hardware dect I2C cnd avem mai muli slave. Pe de alta parte SPI este mai simplu si mai eficient in aplicaii point-to-point (single master, single slave) din acelai motive: lipsa adresrii device-urilor presupune mai puin overhead. Sumarizand, putem enumera urmtoarele avantaje ale SPI: Comunicaie full-duplex Throughput semnificativ mai mare Flexibilitate pentru biii transferai: nu exista limitarea la cuvinte de 8-bit 52

se pot trimite mesaje de orice lungime

Se interfateaza uor, uurina in folosire Mai eficient in comunicarea point-to-point Dintre dezavantaje amintim: Folosete mai multe fire Nu are suport pentru adresarea devicerurilor; este necesar cate un semnal de Slave Select pentru fiecare slave Nu exista flow control si slave acknowledgement (master poate "vorbi in gol" fara sa tie). Suporta numai un singur master Funcioneaz pe distante mici spre deosebire de RS-232 sau RS-485 Mod de funcionare Pentru a porni comunicaia masterul trebuie sa seteze ceasul la o frecventa cel mult egala cu frecventa suportata de slave. Masterul selecteaz apoi cipul slave dorit, punnd 0 pe linia SS spre acesta. In timpul unui ciclu SPI, transmisia este full-duplex: masterul trimite un bit pe linia MOSI, iar slave-ul l citete de pe aceeai linie; slave-ul trimite un bit pe linia MISO, iar masterul l citete de pe aceeai linie. Comunicaia pe SPI implica de obicei existenta a doi registri de shiftare (Shift Registers), unul in master si unul in slave, conectai in ciclu:

Figura 3.3 De obicei primul bit shiftat pe liniile de MISO/MOSI este bitul cel mai semnificativ, in timp ce un nou bit este adugat pe poziia cea mai puin semnificativa din registru. Dup ce intregul cuvnt a fost trimis, prin shiftare, masterul si slave-ul au interschimbat valorile din cei doi registri de shift. Daca mai exista date de transmis, procesul este reluat. 53

Cnd nu mai exista date de transmis, masterul intrerupe generarea ceasului si, in general, pune 1 pe linia de SS asociata slave-ului. Cipurile slave care nu au fost selectate vor ignora semnalele de pe SCK si MOI si nu vor genera nimic pe MISO. Masterul poate selecta doar un singur slave la un moment dat. Librria SPI Ethernet suport: Protocolul IPv4. Cereri ARP. Cereri ICMP. Cereri UDP. Cereri TCP Client ARP cu cache. Client DNS. Client UDP. Client DHCP. Fragmentarea pachetelor de date nu este suportat. Librria SPI Ethernet pentru PIC16 and PIC18: Spi_Ethernet_Init Spi_Ethernet_doPacket Spi_Ethernet_putByte Spi_Ethernet_putBytes Spi_Ethernet_putString Spi_Ethernet_putConstString Spi_Ethernet_putConstBytes Spi_Ethernet_getByte Spi_Ethernet_getBytes Spi_Ethernet_UserTCP Spi_Ethernet_UserUDP

54

Figura 3.4 Interfa SPI Prototipurile librriei Spi Ethernet Spi_Ethernet_Init Prototip void Spi_Ethernet_Init(unsigned char *resetPort, unsigned char resetBit, unsigned char *CSportPtr, unsigned char CSbit, unsigned char *mac, unsigned char *ip, unsigned char fullDuplex); Returneaz Nimic. Descriere Aceasta este o rutin a modulului MAC. Iniializeaz controler-ul ENC28J60. Aceast funcie este mprit intern n 2 pri pentru a ajuta linker-ul cand acesta rmne fr memorie. Setrile controler-ului ENC28J60 (parametrii care nu sunt menionai sunt setai n starea implicit):

Adresa de start a tamponului de recepie : 0x0000. Adresa de sfrit a tamponului de recepie : 0x19AD. Adresa de start a tamponului de transmisie : 0x19AE. Adresa de sfrit a tamponului de transmisie : 0x1FFF. Pointerii de citire/scriere ai tamponului RAM n modul auto-incrementare. flow control with TX and RX pause frames in full duplex mode. frames are padded to 60 bytes + CRC. Mrimea maxim a unui pachet este 1518. Configurarea LED-urilor: implicit (LEDA - starea conexiunii, LEDB activitatea conexiunii).

Parametrii:
resetPort: adresa portului de reset. resetBit: pin de reset. CSport: adresa portului chip select. CSbit: pin de chip select. mac: tampon RAM coninnd o adres MAC valid. ip: tampon RAM coninnd o adres IP valid.

55

comutare a modului ethernet duplex. Valori posibile: 0 (half duplex mode) i 1 (full duplex mode).
fullDuplex:

Cerine Exemplu #define Spi_Ethernet_HALFDUPLEX


#define Spi_Ethernet_FULLDUPLEX

Not: Dac se va folosi un server DHCP, adresa IP ar trebui setat 0.0.0.0. Modulul SPI trebuie iniializat
0 1

unsigned char myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} ; // my MAC address unsigned char myIpAddr = {192, 168, 1, 60 } ; // my IP addr Spi_Init(); Spi_Ethernet_Init(&PORTC, 0, &PORTC, 1, myMacAddr, myIpAddr, Spi_Ethernet_FULLDUPLEX);

Spi_Ethernet_doPacket Prototip unsigned char Spi_Ethernet_doPacket(); Returneaz 0 la procesarea pachetului. 1 n cazul unei erori la recepie. Controler-ul ENC28J60 trebuie resetat. 2 pachetul recepionat nu a fost trimis mai departe. 3 pachetul IP nu a fost de tipul IPv4. pachetul recepionat nu a fost recunoscut de librrie. Descriere Aceasta este o rutin a modulului MAC. Proceseaz urmtorul pachet de date recepionat dac acesta exist. Pachetele sunt procesate n felul urmtor:
4

Cererile ARP & ICMP sunt procesate automat. n cazul unei cereri TCP se apeleaz funcia Spi_Ethernet_UserTCP. n cazul unei cereri UDP se apeleaz funcia Spi_Ethernet_UserUDP.

Cerine Exemplu while(1) {

Not: funcia Spi_Ethernet_doPacket trebuie apelat ct mai des n cadrul codului. Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init.
... Spi_Ethernet_doPacket(); // process received packets ...

Spi_Ethernet_putByte Prototip void Spi_Ethernet_putByte(unsigned char v); Returneaz Nimic. Descriere Aceasta este o rutin a modulului MAC. Stocheaz un byte la adresa indicat de pointerul de scriere al ENC28J60 (EWRPT). Parametrii: Cerine Exemplu char data; valoare de stocat Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init.
v: ... Spi_Ethernet_putByte(data); // put an byte into ENC28J60 buffer

56

Spi_Ethernet_putBytes Prototip void Spi_Ethernet_putBytes(unsigned char *ptr, unsigned char n); Returneaz Nimic. Descriere Aceasta este o rutin a modulului MAC. Stocheaz numrul dorit de byi n RAM-ul controlerului ENC28J60 ncepnd de la poziia pointer-ului de scriere EWRPT. Parametrii:

tampon RAM ce conine byii ce urmeaz a fi nscrii n RAM-ul controlerului ENC28J60.


ptr: n:

Cerine Exemplu char *buffer = "mikroElektronika";

numr de bii ce urmeaz a fi nscrii. Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init.
... Spi_Ethernet_putBytes(buffer, 16); // put an RAM array into ENC28J60 buffer

Spi_Ethernet_putConstBytes Prototip void Spi_Ethernet_putConstBytes(const unsigned char *ptr, unsigned char n); Returneaz Nimic. Descriere Aceasta este o rutin a modulului MAC. Stocheaz numrul dorit de byi const n RAM-ul controlerului ENC28J60 ncepnd de la poziia pointer-ului de scriere EWRPT. Parametrii:

tampon const ce conine byii ce urmeaz a fi nscrii n RAM-ul controlerului ENC28J60.


ptr: n:

Cerine Exemplu const char *buffer = "mikroElektronika";

numr de bii ce urmeaz a fi nscrii. Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init.
... Spi_Ethernet_putConstBytes(buffer, 16); // put a const array into ENC28J60 buffer

Spi_Ethernet_putString Prototip unsigned int Spi_Ethernet_putString(unsigned char *ptr); Returneaz Numrul de byi scrii n RAM-ul controlerului ENC28J60. Descriere Aceasta este o rutin a modulului MAC. Stocheaz un ir de caractere n RAM-ul controlerului ENC28J60 ncepnd de la poziia pointer-ului de scriere EWRPT. Parametrii: irul de caractere ce urmeaz a fi nscrii n RAM-ul controlerului ENC28J60. Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init.
ptr: ... Spi_Ethernet_putString(buffer); // put a RAM string into ENC28J60 buffer

Cerine Exemplu char *buffer = "mikroElektronika";

57

Spi_Ethernet_putConstString Prototip unsigned int Spi_Ethernet_putConstString(const unsigned char *ptr); Returneaz Numrul de byi scrii n RAM-ul controlerului ENC28J60. Descriere Aceasta este o rutin a modulului MAC. Stocheaz un ir de caractere const n RAM-ul controlerului ENC28J60 ncepnd de la poziia pointer-ului de scriere EWRPT. Parametrii: irul de caractere const ce urmeaz a fi nscrii n RAM-ul controlerului ENC28J60. Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init.
ptr: ... Spi_Ethernet_putConstString(buffer); // put a const string into ENC28J60 buffer

Cerine Exemplu const char *buffer = "mikroElektronika";

Spi_Ethernet_getByte Prototip unsigned char Spi_Ethernet_getByte(); Returneaz Byte-ul citit din RAM-ul controlerului ENC28J60. Descriere Aceasta este o rutin a modulului MAC. Citete un byte de la adresa indicat de poziia pointer-ului de citire ERDPT. Cerine Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init. Exemplu char buffer;
... buffer = Spi_Ethernet_getByte(); // read a byte from ENC28J60 buffer

Spi_Ethernet_getBytes Prototip void Spi_Ethernet_getBytes(unsigned char *ptr, unsigned int addr, unsigned char n); Returneaz Nimic. Descriere Aceasta este o rutin a modulului MAC. Citete un numr de byi de la adresa indicat de poziia pointer-ului de citire ERDPT. Parametrii:

tampon pentru stocarea byilor citii din RAM-ul controlerului ENC28J60. addr: adresa de start a RAM-ului controlerului ENC28J60. Valori valide: 0..8192.
ptr: n:

Cerine Exemplu char buffer[16];

numr de byi ce urmeaz a fi citii. Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init.
... Spi_Ethernet_getBytes(buffer, 0x100, 16); // read 16 bytes, starting from address 0x100

Spi_Ethernet_UserTCP Prototip unsigned int Spi_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int 58

remotePort, unsigned int localPort, unsigned int reqLength); Returneaz 0 nu ar trebui s existe un rspuns la aceast cerere. Lungimea cmpului de rspuns al cererii TCP/HTTP n caz contrar. Descriere Aceasta este o rutin a modulului TCP. Este apelat intern de ctre librrie. Utilizatorul acceseaz cererea TCP/HTTP prin utilizarea unor rutine Spi_Ethernet_get. Utilizatorul pune date n tamponul de transmisie prin folosirea unor rutine Spi_Ethernet_put. Funcia trebuie s returneze lungimea n byi a rspunsului TCP/HTTP, sau 0 dac nu trebuie transmis nimic. Dac nu trebuie rspuns la cererea TCP/HTTP, funcia se definete cu return(0).

Parametrii:
remoteHost: adresa IP a clientului. remotePort: portul TCP al clientului. localPort: portul la care se trimite cererea. reqLength:

lungimea cererii TCP/HTTP. Cerine Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init. Exemplu Funcia este apelat intern de ctre librrie. Spi_Ethernet_UserUDP Prototip unsigned int Spi_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength); Returneaz 0 nu ar trebui s existe un rspuns la aceast cerere. Lungimea cmpului de rspuns al cererii UDP n caz contrar. Descriere Aceasta este o rutin a modulului UDP. Este apelat intern de ctre librrie. Utilizatorul acceseaz cererea UDP prin utilizarea unor rutine Spi_Ethernet_get. Utilizatorul pune date n tamponul de transmisie prin folosirea unor rutine Spi_Ethernet_put. Funcia trebuie s returneze lungimea n byi a rspunsului UDP, sau 0 dac nu trebuie transmis nimic. Dac nu trebuie rspuns la cererea UDP, funcia se definete cu return(0).

Parametrii:
remoteHost: adresa IP a clientului. remotePort: portul TCP al clientului. localPort: portul la care se trimite cererea. reqLength:

lungimea cererii UDP. Cerine Modulul ethernet trebuie iniializat. Vezi Spi_Ethernet_Init. Exemplu Funcia este apelat intern de ctre librrie.

59

CAPITOLUL 4 DESCRIEREA APLICAIEI

4.1. Realizarea aplicaiei Lucrarea propune un sistem de monitorizare acionat prin intermediul unui server HTTP. Pentru realizarea acestuia am utilizat urmtoarele echipamente: - placa de dezvoltare EasyPIC5; - microcontroler-ul PIC18F452; - un computer pentru realizarea serverului HTTP. Componentele plcii de dezvoltare care le-am utilizat n cadrul proiectului sunt: - afiajul alfanumeric LCD; - porturile A, B i D; - modulul de ethernet ENC28J60. 4.2. Programarea microcontroler-ului Pentru ca sistemul de monitoritare sa aib aplicabilitate practica la nceputul programului am realizat o pagina web care reprezint interfaa sistemului. Urmtorul pas este reprezentat de definirea parametrilor serverului web i anume adresa MAC i adresa IP. n continuare este apelat funcia Spi_Ethernet_UserTCP a librriei Spi Ethernet care returneaz lungimea rspunsului HTTP i funcia Spi_Ethernet_UserUDP care returneaz lungimea rspunsului UDP. Urmeaz programul principal inclus n funia main(): se configureaz pinii portului B ca pini de ieire; se iniializeaz afiajul alfanumeric LCD; se terge afiajul; se dezactiveaz cursorul; se dezactiveaz ntreruperile; se configureaz pinii portului A ca pini de intrare; se configureaz pinii portului D ca pini de ieire; se iniializeaz librria Spi Ethernet; se intr ntr-o bucl infinit n care se vor procesa pachetele recepionate i se vor scrie

datele pe afiajul alfanumeri. 60

4.3. Prezentarea aplicaiei Am realizat un sistem de alarmare prin ethernet a unui complex de opt depozite, fiecare dintre acestea fiind dotat cu cte un senzor de micare. n lipsa unui semnal emis de senzorul de micare sistemul va informa operatorul despre aceast stare existent att prin intermediul paginii HTML ct i prin intermediul afiajului alfanumeric n felul urmtor: - pagina HTML va afia o schem a depozitelor, fiecare dintre acestea fiind colorat n verde, cum se poate observa n figura 4.1.

Figura 4.1 Reprezentarea grafic n cazul n care nu exist semnal de la detectorul de micare - afiajul alfanumeric nu va indica nimic, indicator al faptului ca nu exist micare n depozite (figura 4.2)

Figura 4.2 Afiajul alfanumeric pentru situaia prezentat n figura 4.1.

61

n situaia n care senzorul de micare este declaat ntr-unul dintre depozitele monitorizate, aplicaia va informa operatorul n aceast privin n felul urmtor: - n pagina HTML schema depozitelor se va modifica, zonele afectate fiind colorate n rou, situaie prezentat n figura 4.3.

Figura 4.3 Reprezentarea grafic n cazul n care senzorii 4, 6 i 8 sunt activi - afiajul alfanumeric va indica numerele corespunztoare depozitelor n care senzorul a fost declanat (figura 4.4)

Figura 4.4 Afiajul alfanumeric pentru situaia prezentat n figura 4.3

4.4. Programul realizat in MikroC 62

#define SPI_Ethernet_HALFDUPLEX #define SPI_Ethernet_FULLDUPLEX

0 1

const unsigned char httpHeader[] = "HTTP/1.1 200 OK\nContent-type: " ; // Header HTTP const unsigned char httpMimeTypeHTML[] = "text/html\n\n" ; // HTML MIME type const unsigned char httpMimeTypeScript[] = "text/plain\n\n" ; // TEXT MIME type unsigned char httpMethod[] = "GET /"; // metoda http suportata //pagina scrisa in limbaj HTML const char *indexPage = "<HTML><HEAD><meta http-equiv=\"refresh\" content=\"5\"> </HEAD><BODY>\ <h1><center>Sistem de monitorizare</center></h1>\ <script src=/s></script>\ <TABLE border=5 width=600 height=400 ALIGN=CENTER BORDER=1 BRODERCOLOR=#000000>\ <script>\ var i,str1;\ str1=\"\";\ var arr=[\"#66CC33\",\"#66CC33\",\"#66CC33\",\"#66CC33\",\"#66CC33\",\"#66CC33\",\"#66CC3 3\",\"#66CC33\"];\ for(i=0;i<8;i++)\ if(PORTD&(1<<i))\ arr[i]=\"#ff0000\";\ str1+=\"<TR> <td align=center valign=middle rowspan=3 bgcolor=\" + arr[0] + \"><B>Depozitul 1</B></color></td>\ <td align=center valign=middle colspan=2 bgcolor=\" + arr[1] + \"><B>Depozitul 2</B></td></TR>\ <TR> <td align=center valign=middle bgcolor=\" + arr[2] + \"><B>Depozitul 3</B></td>\ <td align=center valign=middle bgcolor=\" + arr[3] + \"><B>Depozitul 4</B></td></TR>\ <TR> <td align=center valign=middle colspan=2 bgcolor=\" + arr[4] + \"><B>Depozitul 5</B></td></TR>\ <TR> <td align=center valign=middle bgcolor=\" + arr[5] + \"><B>Depozitul 6</B></td>\ <td align=center valign=middle bgcolor=\" + arr[6] + \"><B>Depozitul 7</B></td>\ <td align=center valign=middle bgcolor=\" + arr[7] + \"><B>Depozitul 8</B></td></TR>\";\ document.write(str1);\ </script>\ </TABLE>\ </BODY></HTML>\ "; unsigned char unsigned char unsigned char unsigned char myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f} ; // Adresa MAC myIpAddr[4] = {172, 16, 196, 100} ; // Adresa IP getRequest[15] ; // tamponul pentru raspunsul HTTP dyna[31] ; // tamponul pentru raspuns dinamic

unsigned int putConstString(const char *s) { unsigned int ctr = 0 ; while(*s) 63

{ SPI_Ethernet_putByte(*s++) ; ctr++ ; } return(ctr) ; } unsigned int putString(char *s) { unsigned int ctr = 0 ; while(*s) { SPI_Ethernet_putByte(*s++) ; ctr++ ; } return(ctr) ; } unsigned int SPI_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqLength) { unsigned int len = 0 ; // lungimea raspunsului unsigned int i ; // variabila de tip intreg if(localPort != 80) { return(0) ; } // se asculta doar cererile de la portul 80

for(i = 0 ; i < 10 ; i++) { getRequest[i] = SPI_Ethernet_getByte() ; } getRequest[i] = 0 ; if(memcmp(getRequest, httpMethod, 5)) { return(0) ; } // se accepta doar metoda GET

if(getRequest[5] == 's') // daca numele cererii incepe cu s, stocheaza datele dinamic in tamponul de transmitere { len = putConstString(httpHeader) ; // Header HTTP len += putConstString(httpMimeTypeScript) ; // with text MIME type len += putConstString("var PORTD=") ; intToStr(PORTD, dyna) ; // schimba valoare starii LED'urilor portului D in sir de caractere len += putString(dyna) ; len += putConstString(";") ; 64

} if(len == 0) // situatia implicita { len = putConstString(httpHeader) ; // Header HTTP len += putConstString(httpMimeTypeHTML) ; // with HTML MIME type len += putConstString(indexPage) ; // pagina HTML } return(len) ; } // transmite librarie numarul de byti ce trebui trimisi

unsigned int SPI_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength) { return 0 ; // transmite librariei numarul de byti ai raspunsului UDP } void { TRISB=0; Lcd_Config(&PORTB, 4, 5, 6, 3, 2, 1, 0); // Initializeaza LCD LCD_Cmd(LCD_CLEAR); // Sterge disply-ul LCD_Cmd(LCD_CURSOR_OFF); // Elimina cursorul INTCON = 0; ADCON1 = 0x07; PORTB pins as digital TRISA = 0xFF; TRISB = 0x00; PORTD = 0 ; TRISD = 0xff ; // seteaza PORTD ca intrare pentru butoane // dezactiveaza intreruperile // configure VDD as Vref, PORTA pins as analog, // desemneaza PORTA pentru intrerea datelor main()

Spi_Init(); SPI_Ethernet_Init(&PORTC, 0, &PORTC, 1, myMacAddr, myIpAddr, SPI_Ethernet_FULLDUPLEX) ; while(1) // bucla infinita { SPI_Ethernet_doPacket() ; // proceseaza pachetele receptionate if (Button(&PORTD,0,1,1)) { lcd_out(1,1,"1"); SPI_Ethernet_doPacket(); } if (Button(&PORTD,0,1,0)) { lcd_out(1,1," "); SPI_Ethernet_doPacket(); } if (Button(&PORTD,1,1,1)) { lcd_out(1,3,"2"); SPI_Ethernet_doPacket(); } if (Button(&PORTD,1,1,0)) { lcd_out(1,3," "); SPI_Ethernet_doPacket(); } if (Button(&PORTD,2,1,1)) { lcd_out(1,5,"3"); SPI_Ethernet_doPacket(); } if (Button(&PORTD,2,1,0)) { lcd_out(1,5," "); SPI_Ethernet_doPacket(); } if (Button(&PORTD,3,1,1)) { lcd_out(1,7,"4"); SPI_Ethernet_doPacket(); } if (Button(&PORTD,3,1,0)) { lcd_out(1,7," "); SPI_Ethernet_doPacket(); } 65

if (Button(&PORTD,4,1,1)) { lcd_out(1,9,"5"); SPI_Ethernet_doPacket(); } if (Button(&PORTD,4,1,0)) { lcd_out(1,9," "); SPI_Ethernet_doPacket(); } if (Button(&PORTD,5,1,1)) { lcd_out(1,11,"6"); SPI_Ethernet_doPacket(); } if (Button(&PORTD,5,1,0)) { lcd_out(1,11," "); SPI_Ethernet_doPacket(); } if (Button(&PORTD,6,1,1)) { lcd_out(1,13,"7"); SPI_Ethernet_doPacket(); } if (Button(&PORTD,6,1,0)) { lcd_out(1,13," "); SPI_Ethernet_doPacket(); } if (Button(&PORTD,7,1,1)) { lcd_out(1,15,"8"); SPI_Ethernet_doPacket(); } if (Button(&PORTD,7,1,0)) { lcd_out(1,15," "); SPI_Ethernet_doPacket(); } } } Compilatorul mikroC ofer mai multe date statistice care ne informeaz despre procedurile folosite n cadrul aplicaiei i despre starea memorie microcontroler-ului, dup cum se poate observa n urmtoarele figuri.

Figura 4.5 Locaia procedurilor

Figura 4.6 Mrimea procedurilor

66

Figura 4.7 Statistici memorie

67

BIBLIOGRAFIE 1. Poanta Aron Dispozitive i circuite electronice (Vol. 2), Litografia I.M.P., Petroani, 1997; 2. Pop E., Leba M. Microcontrollere si automate programabile, Editura Didactic i Pedagogic, Bucureti, 2003; 3. http://www.mikroe.com 4. Nebojsa Matic Microcontrolere PIC; 5. Curs Reele inter-intranet, editura ISA MULTIMEDIA, 2009; 6. D. Danciu, G. Mardale Arta programrii n Java (Vol. 1), editura Albastra; 7. F.M. Boian, R.F. Boian Tehnologii fundamentale Java pentru aplicaii web, editura Albastra.

68

You might also like