You are on page 1of 79

Giao din truyn thng iu khin vi Ethernet

Mc lc
Li ni u Chng I Mc tiu v nhim v ca ti 1.1- t vn 1.2- Mc tiu ca ti 1.3- Nhim v ca ti Chng II Tng quan v mng Ethernet 2.1-Kin trc giao thc 2.2-Cu trc mng v k thut truyn dn 2.3-C ch giao tip 2.4-Cu trc bc in 2.5-Truy nhp bus 2.6-Chun IEEE 802 14 Chng III Cc phng thc truyn tin da theo chun Ethernet 3.1-H giao thc TCP/IP 3.2-Cu trc gi tin IP,TCP,UDP 3.2.1 Cu trc a ch IP 3.2.2 Cu trc gi tin IP 3.2.3 Cu trc gi tin TCP v qu trnh kt ni ca giao thc TCP 3.2.4 Cu trc gi tin UDP 28 3.3-Cu trc phn cng, phn mm 3.3.1 Vi iu khin 3.3.2 Thit b ghp ni Ethernet vi vi iu khin 3.3.3 Mt s thnh phn khc Chng IV M hnh ng dng s dng Ethernet 4.1- Phn cng 4.1.1 Cc thnh phn ca mch 4.1.2 S mch nguyn l, mch in 4.2- Phn mm 4.2.1 Cc hm dng cho vi iu khin PIC16F877A trong
Trc Quang Ha Nguyn Tin Tng KT 1 K49 1

Trang 6 6 6 7 8 9 10 11

17 21 22 24

29 44 49

50 50

Giao din truyn thng iu khin vi Ethernet

mikroC 4.2.2 Cc hm API dng cho PC 4.3- Mt s kt qu thc hin c Chng V Kt lun v hng pht trin ca ti 5.1-nh gi kt qu thc hin n 5.2- Hng pht trin ca n Ti liu tham kho Ph lc

51 54 58 63 63 64 65

Trc Quang Ha Nguyn Tin Tng KT 1 K49

Giao din truyn thng iu khin vi Ethernet

Danh mc cc hnh v
Hnh 1: Ethernet/IEE 802.3 trong tp chun IEEE 802 Hnh 2: Cu trc khung MAC theo IEEE 802.3/ Ethernet Hnh 3: Minh ha phng php CSMA/CD Hnh 4: Kin trc giao thc TCP/IP Hnh 5:Gi d liu trong lp lin kt d liu Hnh 6: T chc a ch IP Hnh 7: Mng con v mt n Hnh 8: Qu trnh thit lp kt ni ca giao thc TCP Hnh 9: Vi iu khin PIC 16F877A Hnh 10: S khi cu trc ca vi iu khin PIC 16F877A Hnh 11: B nh chng trnh PIC16F877A Hnh 12: B nh d liu PIC16F877A Hnh 13: S khi ca Timer 0 Hnh 14: S khi Timer 1 Hnh 15: S khi Timer 2 Hnh 16: S kt ni ca chun giao tip SPI Hnh 17: S kt ni ca chun giao tip SPI Hnh 18: Gin xung SPI ch Master Mode Hnh 19: Gin xung chun giao tip SPI ch Slave Mode Hnh 20: S logic ca tt c cc ngt trong vi iu khin PIC 16F877A Hnh 21: ENC28J60 Hnh 22 : Giao din c bn ENC28J60 Hnh 23: Cc vng nh ca ENC28J60 Hnh 24: Vng m truyn nhn ca ENC28J60 Hnh 25: RJ45 tch hp bin p Hnh 26: Gic RJ45 v cp i dy xon Hnh 27: S mch in Hnh 28 : o v hin th nhit trn LCD. Hnh 29 : Hin th nhit nhn c trn PC. Hnh 30 : Gi d liu xung vi iu khin, s dng giao thc TCP Hnh 31 : Nhn d liu t PC, theo giao thc TCP. Hnh 32 : t IP v Port mi 7 10 12 17 20 21 22 26 29 31 32 33 34 36 36 39 40 41 42 43 45 45 46 47 49 49 51 58 58 59 59 60
3

Trc Quang Ha Nguyn Tin Tng KT 1 K49

Giao din truyn thng iu khin vi Ethernet

Hnh 33 : Hin th IP v Port mi Hnh 34 : Gi v nhn d liu theo giao thc UDP Hnh 35 : Hin th d liu nhn c theo giao thc UDP Hnh 36: Cc la chn ca chng trnh

60 61 61 62

Trc Quang Ha Nguyn Tin Tng KT 1 K49

Giao din truyn thng iu khin vi Ethernet

Li ni u
Internet ngy nay tr thnh mt cng c hiu qu trong tt c cc lnh vc i sng x hi, vic kt ni gia cc my tnh tr nn d dng rt nhiu. Vi mong mun xy dng mt phng thc kt ni gia my tnh v thit b iu khin theo chun Ethernet nhm mc ch nng cao kin thc thc tin, chng em c s gip ca thy gio - Tin s Lu Hng Vit, tin hnh nghin cu, xy dng mch thit b iu khin tch hp giao din truyn thng Ethernet. Chng em xin chn thnh cm n thy gio TS Lu Hng Vit tn tnh hng dn, gip chng em hon thnh n ny. Chng em cng xin cm n b mn iu khin t ng to iu kin thun li trong qu trnh chng em thc hin n. Nhm sinh vin Trc Quang Ha Nguyn Tin Tng

Trc Quang Ha Nguyn Tin Tng KT 1 K49

Giao din truyn thng iu khin vi Ethernet

CHNG 1 : MC TIU V NHIM V CA TI


1.1 t vn
Ngy nay, vi s pht trin nhanh chng ca thit b in- in t, vic giao tip vi my tnh l ht sc cn thit. iu ny khng nhng tn dng c ti nguyn, kh nng x l ca my tnh m cn gip ngi s dng c th theo di cc i tng lm vic pha di. Hin nay, c nhiu phng php kt ni my tnh vi cc thit b iu khin nh thc hin vic kt ni theo chun RS232, RS485 rt ph bin, tuy nhin khi thc hin vic kt ni cc theo chun ny gp phi mt s vn c bn sau: Khong cch kt ni gia my tnh vi thit b iu khin khong 30-40m. Tc truyn thng ca RS232 ch khong 19.2kBd. Ghp ni im-im. Nhng nhc im ca cc phng php giao tip trn cng chnh l nhng u im ca mng Ethernet. Vi nhng li th ca mnh, mng Ethernet tr thnh mng ph bin nht trong cc h thng nh my cng nghip. c th kt ni thit b iu khin vi my tnh theo chun Ethernet, chng em thc hin ti ny.

1.2 Mc tiu ca ti
Thc hin vic kt ni thit b iu khin vi PC thng qua mng Ethernet. Qua , thc hin vic trao i d liu, thc hin mt s ng dng c th nh : thu thp hin th nhit ; iu khin, hin th tc ng c dng Ethernet

1.3 Nhim v ca ti
thc hin c mc tiu ca ti, nhim v cn t ra l : 1. Thit k mch phn cng thit b iu khin. 2. Xy dng phn mm giao din Ethernet. Thit k phn mm giao din trn PC gip ngi s dng thc hin t cc gi tr t v theo di trng thi i tng bn di.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

Tng quan v Ethernet

CHNG 2: TNG QUAN V ETHERNET


Ethernet l kiu mng cc b (LAN) c s dng rng ri nht hin nay. Thc cht, Ethernet ch l mng cp di (lp vt l v mt phn lp lin kt d liu), v vy c th s dng cc giao thc khc nhau pha trn, trong TCP/IP l tp giao thc c s dng ph bin nht. Tuy vy, mi nh cung cp sn phm c th thc hin giao thc ring hoc theo mt chun quc t cho gii php ca mnh trn c s Ethernet. High Speed Ethernet (HSE) ca Fieldbus Foundation chnh l mt trong tm h bus trng c chun ha quc t theo IEC 61158. Ethernet c xut x l tn gi mt sn phm ca cng ty Xerox, c s dng u tin vo nm 1975 ni mng 100 trm my tnh vi cp ng trc di 1km, tc truyn 2,94 Mbit/s v p dng phng php truy nhp bus CSMA/CD. T s thnh cng ca phng php ny, Xerox cng DEC v Intel xy dng mt chun 10 Mbit/s- Ethernet. Chun ny chnh l c s cho IEEE 802.3 sau ny. c bit, vi phin bn 100 Mbit/s (Fast Ethernet, IEEE 802.3u), Ethernet ngy cng ng mt vai tr quan trng trong cc h thng cng nghip. Bn cnh vic s dng cp ng trc, i dy xon v cp quang, gn y Ethernet khng dy (Wireless LAN, IEEE 802.11) cng ang thu ht c s quan tm ln.

2.1 Kin trc giao thc


Kin trc giao thc ca Ethernet theo chun IEEE 802.3 ch bao gm lp vt l v lp MAC (Medium Access Control, lp iu khin truy nhp mi trng).

Trc Quang Ha Nguyn Tin Tng KT 1 K49

Tng quan v Ethernet

Hnh 1: Ethernet/IEE 802.3 trong tp chun IEEE 802.

2.2 Cu trc mng v k thut truyn dn


V mt logic, Ethernet c cu trc bus. Cu trc mng vt l c th l ng thng hoc hnh sao ty theo phng tin truyn dn. Bn loi cp thng dng nht : cp ng trc dy, cp ng trc mng, cp i dy xon, cp quang.
Tn hiu 10BASE5 10BASE2 10BASE-T 10BASE-F Loi cp Cp ng trc dy Cp ng trc mng Cp i dy xon Cp quang Chiu di ti a 500m 200m 100m 200m S trm ti a 100 30 1024 1024

Bng 1 : Mt s loi cp truyn Ethernet thng dng. Loi 10BASE5 cn c gi l cp dy ( thick Ethernet), loi cp ng trc thng c mu vng. K hiu 10BASE5 c ngha l tc truyn ti a 10Mbit/s, phng php truyn ti di c s v chiu di mt on mng ti a 500m. Loi cp ng trc th hai c k hiu 10BASE2 c gi l cp mng ( thin Ethernet), r hn nhng hn ch mt on mng phm vi 200m v s lng 30 trm. Vi 10BASE5, b ni c gi l vi ht ( vampire tap), ng vai tr mt b thu pht ( transceiver ). B thu pht cha vi mch in t thc hin chc nng nghe ngng ng truyn v nhn bit xung t. Trong trng hp xung t c pht hin, b thu pht gi mt tn hiu khng hp l tt c cc b thu pht khc cng nhn bit c rng xung t xy ra. Nh vy, chc nng ca module giao din mng c gim nh. Cp ni gia b thu pht v card giao din mng c gi l cp thu pht, c th di ti 50m v cha ti nm i dy xon bc lt ring bit ( STP). Hai i dy cn cho trao i d liu, hai i cho truyn tn hiu iu khin, cn i dy th nm c th s dng cung cp ngun cho b thu

Trc Quang Ha Nguyn Tin Tng KT 1 K49

Tng quan v Ethernet

pht. Mt s b thu pht cho php ni ti tm trm qua cc cng khc nhau, nh vy tit kim c s lng b ni cng nh cng lp t. Vi 10BASE2, card giao din mng c ni vi cp ng trc thng qua b ni th ng BNC hnh ch T. B thu pht c tch hp trong bng mch in t ca module giao din mng bn trong my tnh. Nh vy, mi trm c mt b thu pht ring bit. V bn cht, c hai kiu dy vi cp ng trc nh ni trn u thc hin cu trc bus ( vt l cng nh logic), v th c u im l tit kim dy. Tuy nhin, cc li phn cng nh t cp, lng b phn ni rt kh pht hin trc tuyn. Mc d c mt s bin php khc phc, phng php tin cy hn l s dng cu trc hnh sao vi mt b chia ( hub) hoc mt b chuyn mch ( switch ). Cu trc ny thng thng c p dng vi cp i dy xon, nhng cng p dng c vi cp ng trc ( v d Industrial Ethernet). a s cu hnh mng Ethernet c kt ni vi thit b iu khin thng s dng chun chung 10BASE-T. Trong mng ny cc trm c ni vi nhau qua mt b chia ging nh cch ni cc mng in thoi. u im ca cu trc ny l vic b xung hoc tch mt trm ra khi mng cng nh vic pht hin cp truyn rt n gin. Nhc im c th thy r nht l tn dy dn v cng i dy cng nh chi ph cho b chia cht lng cao cng l mt vn . Bn cnh , khong cch ti a cho php t mt trm ti b chia thng b hn ch trong vng 100 150m. Bn cnh cp ng trc v cp i dy xon th cp quang cng c s dng nhiu trong Ethernet, trong c bit l 10BASE-F. Vi cch ghp ni duy nht l im im, cu trc mng c th l daisy-chain, hnh sao hoc hnh cy. Thng thng, chi ph cho cc b ni v chn u cui rt ln nhng kh nng khng nhiu tt v tc truyn cao l cc yu t quyt nh trong nhiu phm vi ng dng. Trong nhiu trng hp, ta c th s dng phi kt hp nhiu loi trong mt mng Ethernet. V d, cp quang hoc cp ng trc dy c th s dng l ng trc chnh hay xng sng ( backbone ) trong cu trc cy, vi cc ng nhnh l cp mng hoc i dy xon. i vi mng quy m ln, c th s dng cc b lp, nhng ng dn gia hai b thu pht khng c php di qu 2,5km cng nh khng i qua qu bn b lp.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

Tng quan v Ethernet

2.3 C ch giao tip


S ph bin ca Ethernet c c l nh tnh nng m. Th nht, Ethernet ch qui nh lp vt l v lp MAC, cho php cc h thng khc nhau ty thc hin cc giao thc v dch v pha trn. Th hai, phng php truy nhp bus ngu nhin CSMA/CD khng yu cu cc trm tham gia phi bit cu hnh mng, v vy c th b xung hay tch mt trm ra khi mng m khng nh hng ti cc phn cn li. Th ba, vic chun ha sm trong IEEE 802.3 gip cho cc nh cung cp sn phm thc hin d dng hn. Trong mt mng Ethernet, khng k ti b chia hoc b chuyn mch th tt c u c vai tr bnh ng nh nhau. Mi trm c mt a ch Ethernet ring bit v thng nht. Vic giao tip gia cc trm thng qua giao tip pha trn v d NetBUI, IPX/SPX hoc TCP/IP. Ty theo giao thc c th, cn cc ca bn gi v bn nhn trong mt bc in ca lp pha trn s c dch sang a ch Ethernet trc khi c chuyn xung lp MAC. Bn cnh c ch giao tip tay i, Ethernet cn h tr phng php gi thng bo ng lot ( multicast v broadcast ). Mt thng bo multicast c gi ti mt nhm cc trm, trong khi mt thng bo broadcast gi ti tt c cc trm.

2.4 Cu trc bc in
IEEE 802.3/ Ethernet ch quy nh lp MAC v lp vt l, v vy mt bc in c cn gi l khung MAC. Cu trc ca khung MAC c minh ha di M u SFD a ch a ch di D liu PA FCS 5555H (D5H) ch ngun kiu gi D 7 byte 1 byte 2/6 byte 2/6 byte 2 byte 46-1500 byte 4 byte Hnh 2: Cu trc khung MAC theo IEEE 802.3/ Ethernet. M u (Preamble ) ca khung MAC l trng 7 byte ging nhau c gi tr 55H, c bn nhn s dng ng b nhp vi bn gi. Vic ng b ha ch c thc hin mt ln cho c bc in.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

10

Tng quan v Ethernet

Mt byte SFD (Start of Frame Delimiter ) cha dy bit 10101011, nh du khi u khung MAC. Theo 802.3,a ch ch v a ch ngun c th l 2 hoc 6 byte, nhng chun qui nh cho truyn di c s 10 Mb/s ch s dng a ch 6 byte. Bit cao nht trong a ch ch c gi tr 0 cho cc a ch thng thng v gi tr 1 cho cc a ch nhm. i vi cc thng bo gi ti cc trm (broadcast), tt c cc bit trong a ch ch s l 1.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

11

Tng quan v Ethernet

C hai loi a ch Ethernet l cc a ch cc b v cc a ch ton cu, c phn bit bi bit 46 (bit gn cao nht). Cc a ch cc b c th cng hoc t bng phn mm v khng c ngha ngoi mng cc b. Ngc li, mt a ch ton cu c IEEE cp pht, lun c cng trong vi mch m bo s thng nht trn ton th gii. Vi 46 bit c th c tng cng 7* 1013 a ch cc b. Tuy nhin s lng cc trm cho php trong mt h thng mng cng nghip cn ph thuc vo kiu cp truyn, giao thc pha trn cng nh c tnh ca cc thit b tham gia mng. Mt s khc nhau gia Ethernet v IEEE 802.3 l ngha tip sau phn a ch. Theo c t Ethernet, hai byte ny cha m giao thc chuyn gi pha trn. C th, m 0800 ch giao thc IP (Internet Protocol ) v m 0806 ch giao thc ARP (Address Resolution Protocol ). Theo chun IEEE 802.3, ny dng ch s byte d liu ( t 0 n 1500). Vi iu kin rng buc gia tc truyn v (tnh bng bit/s), chiu di bc in n v khong cch truyn l (tnh bng mt) ca phng php CSMA/CD lv < 100.000.000 n. m bo tc truyn 10Mbit/s v khong cch truyn 2500m th mt bc in phi di hn 250 bit hay 32 byte. Xt ti c thi gian tr qua bn b lp, chun 802.3 qui nh chiu di khung ti thiu l 64 byte (51,2us), khng k phn m u v byte SFD. Nh vy d liu phi c chiu di ti thiu l 46 byte. Trong trng hp d liu thc ngn hn 46 byte, PAD (Padding ) c s dng lp y. cui cng trong khung MAC l FCS ( Frame Check Sequence) gm 4 byte cha m CRC (Cyclic Redundancy Check) vi a thc pht
G(x) = x 32 + x 26 + x 23 + x 22 + x16 + x12 + x11 + x10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1

Phn thng tin kim sot li bao gm cc a ch, chiu di, d liu.

2.5 Truy nhp bus


Mt vn ln thng gy lo ngi trong vic s dng Ethernet cp trng l phng php truy nhp bus ngu nhin CSMA/CD ( Carrier Sense Multiple Access with Collision Avoidance ) v s nh hng ti hiu sut cng nh tnh nng thi gian thc ca h thng. y, mt trong nhng yu t quyt

Trc Quang Ha Nguyn Tin Tng KT 1 K49

12

Tng quan v Ethernet

nh ti hiu sut ca h thng l thut ton tnh thi gian truy nhp li cho cc trm trong trng hp xy ra xung t.

Hnh 3: Minh ha phng php CSMA/CD. Nguyn tc lm vic phng php CSMA/CD Theo phng php CSMA/CD, mi trm u c quyn truy nhp bus m khng cn mt s kim sot no. Phng php c tin hnh nh sau: Mi trm u phi t nghe ng dn ( carrier sense), nu ng dn ri ( khng c tn hiu ) th mi c pht. Do vic lan truyn tn hiu cn mt thi gian no , nn vn c kh nng hai trm cng pht tn hiu ln ng dn. Chnh v vy, trong khi pht th mi trm vn phi nghe ng dn so snh tn hiu pht i vi tn hiu nhn c xem c xy ra xung t hay khng ( collision detection). Trong trng hp xy ra xung t, mi trm u phi hy b bc in ca mnh, ch mt thi gian ngu nhin v th gi li.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

13

Tng quan v Ethernet

Mt tnh hung xy ra xung t tiu biu v cch khc phc c minh ha trn hnh .. Trm A v C cng nghe ng dn. ng dn ri nn A c th gi trc. Trong khi tn hiu t trm A gi i cha kp ti nn trm C khng hay bit v cng gi, gy ra xung t ti mt im gn C. A v C s ln lt nhn c tn hiu phn hi, so snh vi tn hiu gi i v pht hin xung t. C hai trm s cng phi hy b bc in gi i bng cch khng pht tip, cc trm mun nhn s khng nhn c c hiu kt thc bc in v s coi nh bc in khng hp l. A v C cng c th gi i mt tn hiu jam c bit bo cho cc trm cn nhn bit. Sau mi trm s ch mt thi gian ch ngu nhin, trc khi th pht li. Thi gian ch ngu nhin y tuy nhin phi c tnh theo mt thut ton no sao cho thi gian ch ngn mt cch hp l v khng ging nhau gia cc trm cng ch. Thng thng thi gian ch ny l bi s ca hai ln thi gian lan truyn tn hiu Ts. u im ca CSMA/CD l tnh cht n gin, linh hot. Khc vi cc phng php tin nh, vic ghp thm hay b i mt trm trong mng khng nh hng g ti hot ng ca h thng. Chnh v vy, phng php ny c p dng rng ri trong mng Ethernet. Nhc im ca CSMA/CD l tnh cht bt nh ca thi gian phn ng. Cc trm u bnh ng nh nhau nn qu trnh ch mt trm c th lp i lp li, khng xc nh c tng i chnh xc thi gian. Hiu sut s dng ng truyn v th cng thp. R rng, nu nh khng kt hp thm vi cc k thut khc th phng php ny khng thch hp vi cc cp thp, i hi trao i d liu nh k, thi gian thc. iu kin rng buc Kh nng thc hin phng php CSMA/CD b hn ch bi mt iu kin rng buc gia chiu di dy dn, tc truyn thng v chiu di bc in. Ch khi mt trm pht hin c xung t xy ra trong khi bc in cha gi xong mi c kh nng hy b bc in ( c th ch n gin bng cch khng gi tip c hiu kt thc). Cn nu bc in c gi i xong ri mi pht hin xy ra xung t th qu mun, mt trm khc c th nhn c v x l bc in vi ni dung sai lch. Trong trng hp xu nht hai trm cng gi thng tin c th hai u ca dy dn, trm th hai ch gi bc in trc khi tn hiu t trm th nht ti mt

Trc Quang Ha Nguyn Tin Tng KT 1 K49

14

Tng quan v Ethernet

cht. Tn hiu b xung t xy ra y phi mt thm mt khong thi gian na ng bng thi gian lan truyn tn hiu Ts mi quay tr li ti trm th nht. Nh vy iu kin thc hin phng php CSMA/CD l thi gian gi mt bc in phi ln hn hai ln thi gian lan truyn tn hiu, tc : ( Chiu di bc in n/ Tc truyn v) > 2Ts n/v > 2l/(0,66*300.000.000), Vi l l chiu di dy dn v h s k= 0,67 lv < 100.000.000n y chnh l iu kin rng buc trong vic nng cao tc v tng chiu di dy dn. V d i vi mt mng Fast Ethernet (100Mbit/s) c chiu di 100m th mt bc in khng th ngn hn 100 bit. H qu ca iu kin rng buc ny l hiu sut truyn thng s rt thp nu nh d liu cn trao i khng ln. Mt ln na, ta thy rng phng php ny khng thch hp lm cho cc h thng mng cp thp. Thi gian lan truyn tn hiu mt ln qua li ng truyn c gi l khe thi gian. Gi tr ny c tnh cho ti a 2,5 km ng truyn v bn b lp l 512 thi gian bit hay 51,2 us. Sau ln xy ra xung t u tin, mi trm s chn ngu nhin 0 hoc 1 ln khe thi gian ch trc khi th gi li. Nu hai trm ngu nhin cng chn mt khong thi gian, hoc c s xung t vi mt trm th ba, th s khe thi gian la chn ch s l 0, 1, 2 hoc 3.Sau ln xung t th i , s khe thi gian chn ngu nhin nm trong khong t 0 ti 2i -1. Tuy nhin, sau mi ln xung t, s khe thi gian ch ti a s c gi li con s 1023. Sau 16 ln xung t lin tip, cc trm s coi l li h thng v bo tr li lp giao thc pha trn. Thut ton ni ting ny c gi l Binary Exponential Backoff (BEB).

2.6 Chun IEEE 802


IEEE 802 l h cc chun IEEE dnh cho cc mng LAN v mng MAN (metropolitan area network). C th hn, cc chun IEEE 802 c gii hn cho cc mng mang cc gi tin c kch thc a dng. (Khc vi cc mng ny, d liu trong cc mng cell-based c truyn theo cc n v nh c cng kch thc c gi l cell. Cc mng Isochronous, ni d liu c truyn theo mt dng lin tc cc octet, hoc nhm cc octet, ti cc khong thi gian u n,
Trc Quang Ha Nguyn Tin Tng KT 1 K49 15

Tng quan v Ethernet

cng nm ngoi phm vi ca chun ny). Con s 802 ch n gin l con s cn trng tip theo m IEEE c th dng, i khi "802" cn c lin h vi ngy m cuc hp u tin c t chc thng 2 nm 1980. Cc dch v v giao thc c c t trong IEEE 802 nh x ti hai tng thp (tng lin kt d liu v tng vt l ca m hnh 7 tng OSI. Thc t, IEEE 802 chia tng lin kt d liu OSI thnh hai tng con LLC (iu khin lin kt lgic) v MAC (iu khin truy nhp mi trng truyn), do cc tng ny c th c lit k nh sau: Tng lin kt d liu Tng con LLC Tng con MAC Tng vt l H chun IEEE 802 c bo tr bi Ban Tiu chun LAN/MAN IEEE 802 (IEEE 802 LAN/MAN Standards Committee (LMSC)). Cc chun c dng rng ri nht l dnh cho h Ethernet, Token Ring, mng LAN khng dy, cc mng LAN dng bridge v bridge o (Bridging and Virtual Bridged LANs). Mi lnh vc c mt Working Group tp trung nghin cu. Cc Working Group: IEEE 802.1 Cc giao thc LAN tng cao IEEE 802.2 iu khin lin kt lgic IEEE 802.3 Ethernet 802.3u l chun ca FastEthernet 802.3z l chun Gigabit Ethernet IEEE 802.4 Token bus ( gii tn) IEEE 802.5 Token Ring IEEE 802.6 Metropolitan Area Network ( gii tn) IEEE 802.7 Broadband LAN using Coaxial Cable ( gii tn) IEEE 802.8 Fiber Optic TAG ( gii tn) IEEE 802.9 Integrated Services LAN ( gii tn) IEEE 802.10 Interoperable LAN Security ( gii tn) IEEE 802.11 Wireless LAN (Wi-Fi certification) IEEE 802.12 cng ngh 100 Mbit/s plus IEEE 802.13 (khng s dng)
Trc Quang Ha Nguyn Tin Tng KT 1 K49 16

Tng quan v Ethernet

IEEE 802.14 modem cp ( gii tn) IEEE 802.15 Wireless PAN IEEE 802.15.1 (Bluetooth certification) IEEE 802.15.4 (ZigBee certification) IEEE 802.16 Broadband Wireless Access (WiMAX certification) IEEE 802.16e (Mobile) Broadband Wireless Access IEEE 802.17 Resilient packet ring IEEE 802.18 Radio Regulatory TAG IEEE 802.19 Coexistence TAG IEEE 802.20 Mobile Broadband Wireless Access IEEE 802.21 Media Independent Handoff IEEE 802.22 Wireless Regional Area Network.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

17

Xy dng m hnh minh ha

CHNG 3 : CC PHNG THC TRUYN TIN DA THEO CHUN ETHERNET


3.1 H giao thc TCP/IP:
TCP/IP (Transmission Control Protocol/Internet Protocol) l kt qu nghin cu v trin giao thc trong mng chuyn mch gi th nghim mang tn Arpanet do ARPA (Advanced Reseach Projecs Agency ). Khi nim TCP/IP dng ch c mt lp tp giao thc v dch v truyn thng c cng nhn thnh chun cho Internet. Cho ti nay TCP/IP xm nhp ti rt nhiu phm vi ng dng khc nhau, trong c cc my tnh cc b v mng truyn thng cng nghip. TCP/IP bao gm 5 lp c lp : lp ng dng, lp vn chuyn, lp Internet, lp truy nhp v mng vt l. Lp ng dng TELNET FTP SNMP SMTP DNS Lp vn chuyn TCP UDP ICMP Lp Internet IP ARP Lp truy nhp mng Lp vt l Hnh 4: Kin trc giao thc TCP/IP . Lp ng dng: Lp ng dng thc hin cc chc nng h tr cn thit cho nhiu ng dng khc nhau : SMTP ( Simple Mail Transfer Protocol ) cho chuyn th in t, FTP ( File Transfer Protocol ) cho chuyn giao file, TELNET l chng trnh m phng thit b u cui cho php ngi dng login vo mt my ch t mt my tnh no trn mng, SNMP (Simple Network Management Protocol) giao thc qun tr mng cung cp nhng cng c qun tr mng, DNS(Domain Name
Trc Quang Ha Nguyn Tin Tng KT 1 K49 18

RARP

Xy dng m hnh minh ha

Server) l dch v tn min cho php nhn ra my tnh t mt tn min thay cho chui a ch Internet. Lp ng dng trao i d liu vi lp di ( lp vn chuyn ) qua cng. Vic dng cng bng s cho php giao thc ca lp vn chuyn bit loi ni dung no cha bn trong gi d liu. Nhng cng c nh bng s v nhng ng dng chun thng dng cng cng. V d: giao thc FTP dng cng 20 cho d liu v cng 21 cho iu khin, giao thc SMTP dng cng 25 Lp vn chuyn: Lp vn chuyn c chc nng cung cp cc dch v cho vic thc hin vn chuyn d liu gia cc chng trnh ng dng mt cch tin cy hon ton. TCP l giao thc tiu biu nht, ph bin nht phc v vic thc hin chc nng ni trn. TCP h tr vic trao i d liu trn c s dch v c ni. Khi d liu nhn, giao thc TCP ly nhng gi c gi t lp Internet v t chng theo th t ca n, bi v nhng gi c th n v tr ch theo phng thc khng theo mt th t, v kim tra nu ni dung ca gi nhn c nguyn vn hay khng v gi tn hiu Acknowledge chp nhn ti bn gi, cho bit gi d liu n ch an ton. Nu khng c tn hiu Acknowledge ca bn nhn (c ngha l d liu cha n ch hoc c li ), bn truyn s truyn li gi d liu b mt. Bn cnh TCP, mt giao thc khc cng c s dng cho lp vn chuyn l UDP (User Data Protocol ). Khc vi TCP, UDP cung cp dch v khng hng kt ni cho vic gi d liu m khng m bo tuyt i n ch, khng m bo trnh t n ch ca cc gi d liu. Nh vy TCP c coi l mt giao thc tin cy, trong khi UDP c coi l giao thc khng ng tin cy. Tuy nhin UDP li n gin hn v c hiu sut nhanh hn TCP, ch i hi mt c ch x l giao thc ti thiu v thng c dng lm c s thc hin cc giao thc cao cp theo yu cu ring ca ngi s dng, v d tiu biu l giao thc SNMP. C hai giao thc UDP v TCP s ly d liu t lp ng dng v thm header vo khi truyn d liu. Khi nhn d liu, header s b g trc khi gi d liu n cng thch hp. Trong header ny c mt vi thng tin iu khin lin quan n s cng ngun, s cng ti ch, chui s ( h thng sp xp li d

Trc Quang Ha Nguyn Tin Tng KT 1 K49

19

Xy dng m hnh minh ha

liu v h thng Acknowledge s dng trong TCP ) v Checksum (dng tnh ton xem d liu n ch c b li hay khng ) . Header ca UDP c 8 byte trong khi header ca TCP c 20 hoc 24 byte (ty theo kiu byte la chn ). D liu lp ny s c chuyn ti lp Internet nu truyn d liu hoc c gi t lp Internet ti nu nhn d liu. Lp Internet: Lp Internet c chc nng chuyn giao d liu gia nhiu mng c lin kt vi nhau. C mt vi giao thc m lm vic lp Internet nh : IP (Internet Protocol ) c chc nng gn a ch cho d liu trc khi truyn v nh tuyn chng ti ch, ICMP ( Internet Control Message Protocol ) c chc nng thng bo li trong trng hp truyn d liu b hng, ARP ( Address Resolution Protocol ) c chc nng ly a ch MAC t a ch IP. Vi giao thc IP, lp Internet c s dng c nhim v thm header ti gi d liu c nhn t lp vn chuyn, l mt loi d liu iu khin khc, n s thm a ch IP ngun v a ch IP ch c ngha l a ch IP ca bn gi d liu v bn nhn d liu. Mi datagram ca IP c kch thc ln nht l 65.535 byte, bao gm c header m c th dng 20 hoc 24 byte, ph thuc vo s la chn trong chng trnh s dng. Nh vy datagram ca IP c th mang 65.515 byte hoc 65.511 byte, giao thc IP s ct gi xung thnh nhiu datagram nu thy cn thit. i vi mng Ethernet, d liu c th ln ti 1500 byte, ngha l kch thc ln nht trng d liu ca frame c gi ln mng MTU ( Maximum Transfer Unit ) c gi tr 1500 byte. Nh vy h iu hnh t ng cu hnh giao thc IP to ra datagram ca IP c chiu di 1500 byte m khng phi l 65.535 byte. Hnh di minh ha datagram c to ra t lp Internet bng giao thc IP. Nh chng ta cp header c giao thc IP thm vo bao gm a ch IP ngun, a ch IP ch v mt vi thng tin iu khin. Lp truy cp mng: Lp truy cp mng lin quan ti vic trao i d liu gia hai trm thit b trong cng mt mng. Cc chc nng bao gm vic kim sot truy nhp mi

Trc Quang Ha Nguyn Tin Tng KT 1 K49

20

Xy dng m hnh minh ha

trng truyn dn, kim sot li v lu thng d liu. Datagram c to t lp Internet s c gi xung ti lp truy nhp mng nu truyn d liu, hoc lp truy nhp mng s ly d liu t mng v gi n ti lp Internet nu chng ta nhn d liu. Nh cp phn trn, Ethernet l giao thc cp di c ba lp LLC ( Logic Link Control ), MAC ( Media Access Control ) v lp vt l Physical. Lp MAC (iu khin truy nhp phng tin truyn thng ) c nhim v lp rp frame m s c gi ln mng, thm a ch MAC ngun v a ch MAC ch. a ch MAC l a ch vt l ca cc mng. Nhng frame m l ch ti mng khc s dng a ch MAC ca router nh l a ch ch. Nhng lp LLC v MAC s thm nhng header ca chng ti datagram m nhn c t lp Internet. Do , cu trc y ca frame c to ra t hai lp c th hin trong hnh v di

Data

Lp ng dng

TCP/IP Header

Data

Lp vn chuyn

IP header

TCP/IP Header

Data

Lp Internet

MAC header

LLC header

IP header

TCP/IP Header

Data

MAC CRC

Hnh 5:Gi d liu trong lp lin kt d liu. Lp vt l: Lp vt l cp ti giao din vt l gia mt thit b truyn d liu vi mi trng truyn dn hay mng, trong c cc c tnh tn hiu, ch truyn, tc

Trc Quang Ha Nguyn Tin Tng KT 1 K49

21

Xy dng m hnh minh ha

truyn v cu trc c hc ca cc phch cm, rc cm. Lp ny c nhim v chuyn i frame do lp MAC to ra thnh tn hiu in ( i vi h thng dy dn mng bng cable ) hoc thnh song t trng ( i vi h thng mng khng dy ).

3.2 Cu trc gi tin IP,TCP,UDP


3.2.1 Cu trc a ch IP: Cu trc a ch IP: Mng Internet dng h thng a ch IP (32 bit) "nh v" cc my tnh lin kt vi n. C hai cch nh a ch ph thuc vo cch lin kt ca tng my tnh c th. Nu cc my tnh c kt ni trc tip vi mng Internet th NIC (Network Information Centre) s cp cho cc my tnh mt a ch IP (IP Address). Nu cc my tnh khng kt ni trc tip vi mng Internet m thng qua mt mng cc b th ngi qun tr mng s cp cho cc my tnh mt a ch IP (tuy nhin cng di s cho php ca NIC). H thng a ch ny c thit k mm do qua mt s phn lp, c 5 lp a ch IP l : A, B, C, D, E. S khc nhau c bn gia cc lp a ch ny l kh nng t chc cc cu trc con ca n. 0 0 1 1 1 1 1 2 3 4 Netid 0 1 0 1 1 0 1 1 1 0 8 Netid 16 Hostid Hostid Netid Hostid Multicast address Reverved for future use Hnh 6: T chc a ch IP. 24

Class A Class B Class C Class D Class E

a ch lp A: Lp A s dng byte u tin ca 4 byte nh a ch mng. Nh hnh trn, n c nhn ra bi bit u tin trong byte u tin ca a ch c gi tr 0. 3 bytes cn li c s dng nh a ch my trong mng. C 126 a ch lp A (c nh a ch trong byte th nht) vi s my tnh trong mng l 256 3 - 2 = 16.777.214 my cho mi mt a ch lp A (s dng 3 bytes nh a ch my).

Trc Quang Ha Nguyn Tin Tng KT 1 K49

22

Xy dng m hnh minh ha

a ch lp B: Mt a ch lp B c nhn ra bi 2 bit u tin ca byte th nht mang gi tr 10. Lp B s dng 2 byte u tin ca 4 byte nh a ch mng v 2 byte cui nh a ch my trong mng. C 64*256 - 2 = 16.128 a ch mng lp B vi 65.534 my cho mi mt a ch lp B. a ch lp C: Mt a ch lp C c nhn ra vi 3 bit u mang gi tr 110. Mng lp C s dng 3 byte u nh a ch mng v 1 byte cui nh a ch my tnh c trong mng. C 2.097.152 -2 a ch lp C, mi a ch lp C c 254 my. a ch lp D: Dng gi cc IP datagram ti mt nhm cc host trn mt mng. a ch lp E: Dng d phng v dng trong tng lai. Mng con v mt n: Mng Internet s dng a ch IP 32 bit v phn chia ra cc lp rt mm do, tuy nhin, vi mt h thng a ch nh vy vic qun l vn rt kh khn. Nu nh mt mng c cp mt a ch lp A th c ngha n cha ti 6*1.048.576 my tnh, do vy ngi ta dng mt n bit phn chia mng ra thnh nhng mng con gi l Subnet. Subnet mask l mt con s 32 bit bao gm n bit 1 (thng l cc bit cao nht) dng nh a ch mng con v m bit 0 dng nh a ch my trong mng con (vi n+m=32). 0 Network Number Network Number 1111111 16 Host Number Subnet Number 11111111 11111111 Hnh 7: Mng con v mt n.

Host Number 00000000

3.2.2 Cu trc gi tin IP: Gi tin (datagram) IP c dng: Ver-4 bt: ch version hin hnh ca ip ang c dng, nu trng ny khc vi phin bn IP ca thit b nhn, thit b nhn s loi b cc gi tin ny.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

23

Xy dng m hnh minh ha

IHL(IP Header Length)-4bt: ch di phn header ca gi tin, tnh theo t 32 bt. TOS(Type of Service)-1byte: cho bit dch v no m gi tin mun s dng chng hn nh u tin, thi hn chm tr, nng sut truyn v tin cy. C th nh sau: 3 bt u (Precedence) ch quyn u tin gi gi tin, t gi tin bnh thng l 0 n gi tin kim sot mng l 7. 1 bt tip theo (Delay) ch tr yu cu, 0 ng vi gi tin c tr bnh thng, 1 ng vi gi tin c tr thp. 1 bt tip theo (Throughput) ch thng lng yu cu s dng truyn gi tin vi la chn truyn trn ng thng sut thp hay trn ng thng sut cao, 0 ng vi thng lng bnh thng, 1 ng vi thng lng cao. 1 bt tip theo (Reliability) ch tin cy yu cu, 0 ng vi tin cy bnh thng, 1 ng vi tin cy cao. Total Length-2byte:ch di ton b gi tin tnh c phn header, tnh theo n v byte. Indentification-16 bt: cng vi cc tham s khc nh Source Address, Destination Address dng nh danh duy nht mt gi tin trong thi gian n tn ti trn mng. Flags: Cc gi tin khi truyn trn ng i c th b phn thnh nhiu gi tin nh. Trng Flags dng iu khin phn on v lp ghp gi tin. C th nh sau: Bt 0: cha s dng, lun ly gi tr 0 Bt 1: 0 ng vi gi tin b phn mnh, 1 ng vi gi tin khng b phn mnh. Bt 2: 0 ng vi gi tin thuc phn on cui cng ca gi tin gc, 1 ng vi gi tin khng phi l phn on cui cng ca gi tin gc. Fragment Offset-13bt: ch v tr ca phn on trong gi tin gc, tnh theo n v 8 byte. Time To Live-1byte: quy nh thi gian tn ti tnh bng giy ca gi tin trong mng. Thi gian ny c t bi trm gi v gim i (thng quy

Trc Quang Ha Nguyn Tin Tng KT 1 K49

24

Xy dng m hnh minh ha

c l 1) khi gi tin i qua mi router ca lin mng. Mt gi tr ti thiu phi ln mng hot ng tt. Protocol: Ch tng giao thc k tip s nhn vng d liu trm ch. TCP c ng vi gi tr 6, UDP ng vi gi tr 17, 1 ng vi ICMP. Header Checksum-2byte: Dng pht hin li header ca gi tin xy ra trong qu trnh truyn ca n. Source IP Address-4byte: a ch IP ca ni truyn gi tin. Destination IP Address-4byte: a ch IP ca ni nhn gi tin. IP Option- di thay i: Khai bo cc la chn do ngi s dng yu cu, v d nh: mc bo mt, ng m gi tin c gi i, timestamp mi router. Padding- di thay i: Dng m bo phn header lun kt thc mt mc 32 bt. Data: cha thng tin lp trn ,chiu di thay i n 64Kb. 3.2.3 Cu trc gi tin TCP v qu trnh kt ni ca giao thc TCP n v d liu trong TCP c gi l Segment vi cu trc nh sau: Source Port-2 byte: s hiu cng TCP ca trm ngun. Destination Port-2byte: s hiu cng TCP ca trm ch. Sequence number: s hiu ca byte u tin ca segment, nu c SYN bt th n l s th t gi ban u v byte u tin c gi c s th t ny cng thm 1. Nu khng c c SYN th y l s th t ca byte u tin. Acknowledgment Number-2byte: nu c ACK bt th gi tr ca trng chnh l s th t gi tin tip theo m bn nhn cn. Bo l nhn tt cc segment m trm ch gi cho trm ngun. Data offset-4bit: di ca phn header tnh theo n v t 32 bit. Tham s ny ch ra v tr bt u ca ngun d liu. Reserved-6 bt. Flags: cc bt iu khin URG: Vng con tr khn (Urgent pointer) c hiu lc ACK: Vng bo nhn ACK number c hiu lc PSH: Chc nng PUSH

Trc Quang Ha Nguyn Tin Tng KT 1 K49

25

Xy dng m hnh minh ha

RST: khi ng li lin kt SYN: ng b ho s hiu tun t FIND: khng cn d liu t trm ngun Window-2byte: s byte d liu bt u t byte c ch ra trong ACK number m trm ngun sn sng nhn. Checksum: checksum cho c phn header ln d liu. Urgent Pointer-2byte: nu c URG bt th gi tr trng ny chnh l s t 16 bit m s th t gi tin (sequence number) cn dch tri. Option-2byte: vng tu chn, khai bo cc option ca TCP trong c di ti a ca vng TCP data trong mt segment. Padding: phn chn thm vo header m bo phn header lun kt thc mt mc 32 bt TCP data: cha d liu ca tng trn c di ti a ngm nh l 536byte. Gi tr ny c th khai bo trong trng Option. Qu trnh thip lp kt ni ca giao thc TCP: Khng ging nh giao thc UDP-giao thc c th lp tc gi m khng cn thit lp kt ni, TCP i hi phi thit lp kt ni trc khi bt u gi d liu v kt thc kt ni khi vic gi d liu hon tt. C th cc kt ni ca TCP c 3 pha l :thit lp kt ni, truyn d liu v kt thc kt ni. Cc trng thi ca kt ni: LISTEN: ang i yu cu kt ni t mt TCP v cng bt k xa (trng thi ny thng do cc TCP server t). SYN-SENT: ang i TCP xa gi mt gi tin TCP vi cc c SYN v ACK c bt (trng thi ny thng do cc TCP client ci t). SYN-RECEIVED: ang i TCP xa gi li mt tin bo nhn sau khi gi cho TCP xa mt tin bo nhn kt ni(connnection acknowledgment)(thng do TCP server t). ESTABLISHED: cng sn sng nhn/gi d liu vi TCP xa (t bi TCP client v server). TIME-WAIT: ang i qua thi gian chc chn l TCP xa nhn c nhn c tin bo nhn v yu cu kt thc kt ni ca n. Mt kt ni c th trng thi TIME-WAIT trong vng ti a 4 pht.
Trc Quang Ha Nguyn Tin Tng KT 1 K49 26

Xy dng m hnh minh ha

Hnh 8: Qu trnh thit lp kt ni ca giao thc TCP. Thit lp kt ni: thit lp mt kt ni, TCP s dng mt quy trnh bt tay 3 bc. Trc khi client th kt ni vi mt server, server phi ng k mt cng v m cng cho cc kt ni: y c gi l m b ng. Mt khi m b ng c thit lp th mt client c th bt u m ch ng. thit lp mt kt ni, quy trnh bt tay 3 bc xy ra nh sau: 1. M ch ng c thc hin bng cc gi mt SYN cho server 2. Server tr li bng mt SYN-ACK 3. Cui cng, client gi mt ACK li cho server n y c client v server u nhn c mt tin bo nhn(acknowledgement) v kt ni. Truyn d liu: Mt s c im c bn ca TCP phn bit vi UDP:
Trc Quang Ha Nguyn Tin Tng KT 1 K49 27

Xy dng m hnh minh ha

Truyn d liu khng li (do c c ch sa li/truyn li) Truyn cc gi d liu theo ng th t Truyn li cc gi d liu mt trn ng truyn Loi b cc gi d liu trng lp C ch hn ch tc nghn ng truyn hai bc u tin trong ba bc bt tay, hai my tnh trao i mt s th t gi ban u (Initial Sequence Number-ISN). S ny c th chn mt cch ngu nhin. S th t ny c dng nh du cc khi d liu gi t mi my tnh. Sau mi byte c truyn i, s ny c tng ln. Nh vy ta c th sp xp li chng cho khi ti my tnh kia bt k cc gi tin ti ni theo th t th no. Trn l thuyt, mi byte gi i u c mt s th t v khi nhn c th my tnh nhn li gi tin bo nhn(ACK). Trong thc t th ch c byte d liu u tin c gn s th t trong trng s th t ca gi tin v bn nhn s gi tin bo nhn bng cch gi s th t ca byte ang ch. V d my A gi 4 byte vi s th t ban u l 100 (theo l thuyt th 4 byte s c th t l 100, 101, 102 v 103) th bn nhn s gi bo nhn c ni dung l 104, bn nhn ngm thng bo rng n nhn c cc byte 100,101,102 v 103. Trong trng hp 2 byte cui b li th bn nhn s gi tin bo nhn vi ni dung 102 v 2 byte 100 v 101 nhn thnh cng. Gi s ta c 10000 byte c gi trong 10 gi tin 1000byte v c 1 gi tin mt trn ng truyn. Nu gi tin b mt l gi u tin th bn gi s phi gi li ton b 10 gi tin v khng c cch no bn nhn thng bo n nhn c 9 gi tin kia. Vn ny c gii quyt trong giao thc SCTP (Stream Control Transmission Protocol-Giao thc iu khin truyn vn dng) vi vic b sung bo nhn chn lc. S th t v tin bo nhn gii quyt c cc vn v lp gi tin, truyn li nhng gi tin b hng/mt v cc gi tin n sai th t. phc v mc ch kim tra, cc gi tin c trng gi tr tng kim (checksum). Vi trnh hin ti, k thut kim tra tng trong TCP khng mnh. Cc tng lin kt d liu vi xc sut li bit cao c th cn c b sung cc kh nng pht hin li tt hn. Nu nh TCP c thit k vo thi im hin ti, nhiu kh nng n s bao gm trng kim tra d tun hon (cyclic rudundancy check-CRC) vi di 32 bt. im yu ny mt phn c b p bng CRC hay nhng k thut khc ti tng

Trc Quang Ha Nguyn Tin Tng KT 1 K49

28

Xy dng m hnh minh ha

th 2 trong m hnh OSI. Tuy nhin iu ny khng c ngha l trng kim tra tng ca TCP l khng cn thit: thng k cho thy cc sai st do c phn cng v phn mm gy ra gia cc im p dng k thut kim tra CRT l kh ph bin v k thut kim tra tng c kh nng pht hin phn ln cc li n gin ny. im cui cng l kh nng hn ch tc nghn. Tin bo nhn (hoc khng c tin bo nhn) l tn hiu v trng thi ng truyn gia 2 my tnh. T , hai bn c th thay i tc truyn nhn d liu cho ph hp vi iu kin. Vn ny thng c cp l iu kin lu lng, kim sot tc nghn. TCP s dng mt s c ch nhm t c hiu sut cao v ngn nga kh nng nghn mng. Cc c ch ny bao gm: ca s trt (sliding window), thut ton slow-start, thut ton trnh nghn mng (congestion avoidance), thut ton truyn li v phc hi nhanh, Hin nay, vn ci tin TCP trong mi trng truyn dn tc cao ang l hng nghin cu c quan tm. Kch thc ca s TCP l chiu di (byte) ca khi d liu c th lu trong b m bn nhn. Bn gi ch c th gi ti a lng thng tin cha trong ca s ny trc khi nhn c tin bo nhn. Dn kch thc ca s: tn dng kh nng truyn dn ca mng th ca s dng trong TCP cn c tng ln. Trng iu khin kch thc ca s ca gi tin TCP c di 2 byte do kch thc ti a ca ca s l 65535 byte. Do trng iu khin khng th thay i nn ngi ta s dng mt h s dn no . H s ny c nh ngha trong RFC1323 c th tng kch thc ti a ca ca s ln ti 1GB. Vic tng kch thc ca s ch c dng trong giao thc bt tay 3 pha. Gi tr ca trng co dn ca s th hin s bt cn c dch tri i vi trng kch thc ca s. H s dn c th thay i t 0 (khng dn) n 14 (dn ti a). Kt thc kt ni kt thc kt ni hai bn s dng qu trnh bt tay 4 bc v chiu ca kt ni kt thc c lp vi nhau. Khi mt bn mun kt thc, n gi i mt gi tin FIN v bn kia gi li tin bo nhn ACK. V vy, mt qu trnh kt thc tiu biu s c 2 cp gi tin trao i. Mt kt ni c th tn ti dng na m: mt bn kt thc gi d liu nn ch nhn thng tin, bn kia tip tc gi. 3.2.4 Cu trc gi tin UDP:

Trc Quang Ha Nguyn Tin Tng KT 1 K49

29

Xy dng m hnh minh ha

Vng header ca UDP c 64 bt vi 4 trng : Source Port-2byte: xc nh cng ca ngi gi thng tin v c ngha nu mun nhn thng tin phn hi t ngi nhn. Nu khng th t n bng 0. Destination Port-2byte: xc nh cng nhn thng tin v trng ny l cn thit. Length-2byte: l chiu di ca ton b gi tin(phn header v phn d liu). Chiu di ti thiu l 8 byte khi gi tin khng c d liu, ch c header. Checksum-2byte: dng cho vic kim tra li ca phn header v phn d liu.

3.3.Cu trc phn cng, phn mm


xy dng giao din truyn thng Ethernet th cu trc phn cng ca giao din truyn thng bao gm 3 phn chnh sau : -Vi iu khin. -Thit b kt ni Ethernet vi vi iu khin. -RJ45 tch hp bin p. 3.3.1. Vi iu khin Vi iu khin s dng thc hin giao tip l PIC 16F877A. S chn ca vi iu khin PIC 16F877A

Hnh 9: Vi iu khin PIC 16F877A.


Trc Quang Ha Nguyn Tin Tng KT 1 K49 30

Xy dng m hnh minh ha

Mt vi thng s v vi iu khin PIC 16F877A y l vi iu khin thuc h PIC16Fxxx vi tp lnh gm 35 lnh c di 14 bit. Mi lnh u c thc thi trong mt chu k xung clock. Tc hot ng ti a cho php l 20 MHz vi mt chu k lnh l 200ns. B nh chng trnh 8Kx14 bit, b nh d liu 368x8 byte RAM v b nh d liu EEPROM vi dung lng 256x8 byte. S PORT I/O l 5 vi 33 pin I/O. Cc c tnh ngoi vi bao gm cc khi chc nng sau: Timer0: b m 8 bit vi b chia tn s 8 bit. Timer1: b m 16 bit vi b chia tn s, c th thc hin chc nng m da vo xung clock ngoi vi ngay khi vi iu khin hot ng ch sleep. Timer2: b m 8 bit vi b chia tn s, b postcaler. Hai b Capture/Compare/PWM. Cc chun giao tip ni tip SSP (Synchronous Serial Port), SPI v I2C. Chun giao tip ni tip USART vi 9 bit a ch. Cng giao tip song song PSP (Parallel Slave Port) vi cc chn iu khin RD, WR, CS bn ngoi. Cc c tnh Analog: 8 knh chuyn i ADC 10 bit, hai b so snh. Bn cnh l mt vi c tnh khc ca vi iu khin nh: B nh flash vi kh nng ghi xa c 100.000 ln. B nh EEPROM vi kh nng ghi xa c 1.000.000 ln. D liu b nh EEPROM c th lu tr trn 40 nm. Kh nng t np chng trnh vi s iu khin ca phn mm. Np c chng trnh ngay trn mch in ICSP (In Circuit Serial Programming) thng qua 2 chn. Watchdog Timer vi b dao ng trong. Chc nng bo mt m chng trnh. Ch Sleep. C th hot ng vi nhiu dng Oscillator khc nhau.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

31

Xy dng m hnh minh ha

Hnh 10: S khi cu trc ca vi iu khin PIC 16F877A. Cu trc b nh ca vi iu khin PIC16F877A bao gm b nh chng trnh (Program memory) v b nh d liu (Data Memory). B nh chng trnh : B nh chng trnh ca vi iu khin PIC16F877A l b nh flash, dung
Trc Quang Ha Nguyn Tin Tng KT 1 K49 32

Xy dng m hnh minh ha

lng b nh 8K word (1 word = 14 bit) v c phn thnh nhiu trang (t page 0 n page 3) .Nh vy b nh chng trnh c kh nng cha c 8*1024 = 8192 lnh (mt lnh sau khi m ha s c dung lng 1 word -14 bit). m ha c a ch ca 8K word b nh chng trnh, b m chng trnh c dung lng 13 bit (PC<12:0>). Khi vi iu khin c reset, b m chng trnh s ch n a ch 0000h (Reset vector). Khi c ngt xy ra, b m chng trnh s ch n a ch 0004h (Interrupt vector). B nh chng trnh khng bao gm b nh stack v khng c a ch ha bi b m chng trnh.

Hnh 11: B PIC16F877A.

nh chng trnh

B nh d liu B nh d liu ca PIC l b nh EEPROM c chia ra lm nhiu bank. i vi PIC16F877A b nh d liu c chia ra lm 4 bank. Mi bank c dung lng 128 byte, bao gm cc thanh ghi c chc nng c bit SFG (Special
Trc Quang Ha Nguyn Tin Tng KT 1 K49 33

Xy dng m hnh minh ha

Function Register) nm cc vng a ch thp v cc thanh ghi mc ch chung GPR (General Purpose Register) nm vng a ch cn li trong bank.

Hnh 12: B nh d liu PIC16F877A.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

34

Xy dng m hnh minh ha

Cc thanh ghi SFR thng xuyn c s dng (v d nh thanh ghi STATUS) s c t tt c cc bank ca b nh d liu gip thun tin trong qu trnh truy xut v lm gim bt lnh ca chng trnh. S c th ca b nh d liu PIC16F877A trn. Timer 0 y l mt trong ba b m hoc b nh thi ca vi iu khin PIC16F877A.

Hnh 13: S khi ca Timer 0. Timer 0 l b m 8 bit c kt ni vi b chia tn s (prescaler) 8 bit. Cu trc ca Timer0 cho php ta la chn xung clock tc ng v cnh tch cc ca xung clock. Ngt Timer 0 s xut hin khi Timer 0 b trn. Bit TMR0IE (INTCON<5>) l bit iu khin ca Timer0. TMR0IE=1 cho php ngt Timer0 tc ng, TMR0IF= 0 khng cho php ngt Timer 0 tc ng. S khi ca Timer 0 nh trn. Mun Timer 0 hot ng ch Timer ta xo bit TOSC
Trc Quang Ha Nguyn Tin Tng KT 1 K49 35

Xy dng m hnh minh ha

(OPTION_REG<5>), khi gi tr thanh ghi TMR0 s tng theo tng chu k xung ng h (tn s vo Timer 0 bng tn s oscillator). Khi gi tr thanh ghi TMR0 t FFh tr v 00h, ngt Timer0 s xut hin. Thanh ghi TMR0 cho php ghi v xa c gip ta n nh thi im ngt Timer0 xut hin mt cch linh ng. Mun Timer0 hot ng ch counter ta set bit TOSC (OPTION_REG<5>). Khi xung tc ng ln b m c ly t chn RA4/TOCK1. Bit TOSE (OPTION_REG<4>) cho php la chn cnh tc ng vo bt m. Cnh tc ng s l cnh ln nu TOSE=0 v cnh tc ng s l cnh xung nu TOSE=1. Khi thanh ghi TMR0 b trn, bit TMR0IF (INTCON<2>) s c set. y chnh l c ngt ca Timer 0. C ngt ny phi c xa bng chng trnh trc khi b m bt u thc hin li qu trnh m. Ngt Timer 0 khng th nh thc vi iu khin t ch sleep. B chia tn s (prescaler) c chia s gia Timer 0 v WDT (Watchdog Timer). iu c ngha l nu prescaler c s dng cho Timer 0 th WDT s khng c c h tr ca prescaler v ngc li. Prescaler c iu khin bi thanh ghi OPTION_REG. Bit PSA (OPTION_REG<3>) xc nh i tng tc ng ca prescaler. Cc bit PS2:PS0 (OPTION_REG<2:0>) xc nh t s chia tn s ca prescaler. Cc lnh tc ng ln gi tr thanh ghi TMR0 s xa ch hot ng ca prescaler. Khi i tng tc ng l Timer 0, tc ng ln gi tr thanh ghi TMR0 s xa prescaler nhng khng lm thay i i tng tc ng ca prescaler. Khi i tng tc ng l WDT, lnh CLRWDT s xa prescaler, ng thi prescaler s ngng tc v h tr cho WDT. Timer 1 Timer 1 l b nh thi 16 bit, gi tr ca Timer 1 s c lu trong hai thanh ghi (TMR1H:TMR1L). C ngt ca Timer1 l bit TMR1IF (PIR1<0>). Bit iu khin ca Timer1 s l TMR1IE (PIE<0>). Tng t nh Timer0, Timer1 cng c hai ch hot ng: ch nh thi (timer) vi xung kch l xung clock ca oscillator (tn s ca timer bng tn s ca oscillator) v ch m (counter) vi xung kch l xung phn nh cc s kin cn m ly t bn ngoi thng qua chn RC0/T1OSO/T1CKI (cnh tc ng l cnh ln). Vic la chn ch hot ng no s c iu khin bi TMR1CS ( T1CON<1>).

Trc Quang Ha Nguyn Tin Tng KT 1 K49

36

Xy dng m hnh minh ha

Hnh 14: S khi Timer 1. Ngoi ra Timer 1 cn c chc nng reset input bn trong c iu khin bi mt trong hai khi CCP ( Capture/ Compare/ PMW ). Timer 1 c hai ch m l ng b ( Synchronous) v d b ( Asynchronous). Ch m c quyt nh bi bit iu khin T1SYNC (T1CON <2>). Timer 2

Hnh 15: S khi Timer 2. Timer 2 l b nh thi 8 bit v c h tr bi hai b chia tn s prescaler v postscaler. Thanh ghi cha gi tr m ca Timer 2 l TMR2. Bit cho php ngt Timer 2 tc ng l TMR2ON (T2CON<2>). C ngt ca Timer2 l bit TMR2IF (PIR1<1>). Xung ng vo (tn s bng tn s oscillator) c a qua b chia tn s prescaler 4 bit (vi cc t s chia tn s l 1:1, 1:4 hoc 1:16 v c iu khin bi cc bit T2CKPS1:T2CKPS0 (T2CON<1:0>)). Timer2 cn c h tr bi thanh ghi PR2. Gi tr m trong thanh ghi TMR2 s tng t 00h n gi tr cha trong thanh ghi PR2, sau c reset v
Trc Quang Ha Nguyn Tin Tng KT 1 K49 37

Xy dng m hnh minh ha

00h. Khi reset thanh ghi PR2 c nhn gi tr mc nh FFh. Ng ra ca Timer 2 c a qua b chia tn s postscaler vi cc mc chia t 1:1 n 1:16. Postscaler c iu khin bi 4 bit T2OUTPS3:T2OUTPS0. Ng ra ca postscaler ng vai tr quyt nh trong vic iu khin c ngt. Ngoi ra ng ra ca Timer2 cn c kt ni vi khi SSP, do Timer2 cn ng vai tr to ra xung clock ng b cho khi giao tip SSP.

MSSP
MSSP ( Master Synchronous Serial Port) l giao din ng b ni tip dng giao tip vi cc thit b ngoi vi (EEPROM, ghi dch, chuyn i ADC,) hay cc vi iu khin khc. MSSP c th hot ng di hai dng giao tip: SPI ( Serial Pheripheral Interface ). I2C ( Inter-Intergrated Circuit ). Cc thanh ghi iu khin chun giao tip ny bao gm thanh ghi trng thi SSPSTAT v hai thanh ghi iu khin SSPCON v SSPCON2. Ty theo chun giao tip c s dng (SPI hay I2C) m chc nng cc thanh ghi ny c th hin khc nhau. Chun giao tip SPI cho php truyn nhn ng b. Ta cn s dng 4 pin cho chun giao tip ny: RC5/SDO: ng ra d liu dng ni tip (Serial Data output). RC4/SDI/SDA: ng vo d liu dng ni tip (Serial Data Input). RC3/SCK/SCL: xung ng b ni tip (Serial Clock). RA5/AN4/SS/C2OUT: chn i tng giao tip (Serial Select) khi giao tip ch Slave mode. Cc thanh ghi lin quan n MSSP khi hot ng chun giao tip SPI bao gm: Thanh ghi iu khin SSPCON, thanh ghi ny cho php c v ghi. Thanh ghi trng thi SSPSTAT, thanh ghi ny ch cho php c v ghi 2 bit trn, 6 bit cn li ch cho php c. Thanh ghi ng vai tr l buffer truyn nhn SSPBUF, d liu truyn i hoc nhn c s c a vo tranh ghi ny. SSPBUF khng c cu trc m hai lp (doubled-buffer), do d liu ghi vo thanh ghi SSPBUF s lp tc c ghi vo thanh ghi SSPSR.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

38

Xy dng m hnh minh ha

Thanh ghi dch d liu SSPSR dng dch d liu vo hoc ra. Khi 1 byte d liu c nhn hon chnh, d liu s t thanh ghi SSPSR chuyn qua thanh ghi SSPBUF v c hiu c set, ng thi ngt s xy ra. Khi s dng chun giao tip SPI trc tin ta cn thit lp cc ch cho giao din bng cch a cc gi tr thch hp vo hai thanh ghi SSPCON v SSPSTAT. Cc thng s cn thit lp bao gm: + Master mode hay Slave mode. i vi Master mode, xung clock ng b s i ra t chn RC3/SCK/SCL. i vi Slave mode, xung clock ng b s c nhn t bn ngoi qua chn RC3/SCK/SCL. + Cc ch ca Slave mode. + Mc logic ca xung clock khi trang thi tm ngng qu trnh truyn nhn (Idle). + Cnh tc ng ca xung clock ng b (cnh ln hay cnh xung). + Tc xung clock (khi hot ng Master mode). + Thi im xc nh mc logic ca d liu ( gia hay cui thi gian 1 bit d liu c a vo). + Master mode, Slave mode v cc ch ca Slave mode c iu khin bi cc bit SSPM3:SSPM0 (SSPCON<3:0>). MSSP bao gm mt thanh ghi dch d liu SSPSR v thanh ghi m d liu SSPBUF.Hai thanh ghi ny to thnh b m d liu kp (doubled-buffer). D liu s c dch vo hoc ra qua thanh ghi SSPSR, bit MSB c dch trc. y l mt trong nhng im khc bit gi hai giao din MSSP v USART (USART dch bit LSB trc). Trong qu trnh nhn d liu, khi d liu a vo t chn RC4/SDI/SDA trong thanh ghi SSPSR sn sng ( nhn 8 bit), d liu s c a vo thanh ghi SSPBUF, bit ch th trng thi b m BF (SSPSTAT<0>) s c set bo hiu b m y, ng thi c ngt SSPIF (PIR1<3>) cng c set. Bit BF s t ng reset v 0 khi d liu trong thanh ghi SSPBUF c c vo. B m kp cho php c tip byte tip theo trc khi byte d liu trc c c vo. Tuy nhin ta nn c trc d liu t thanh ghi SSPBUF trc khi nhn byte d liu tip theo.
Trc Quang Ha Nguyn Tin Tng KT 1 K49 39

Xy dng m hnh minh ha

Qu trnh truyn d liu cng hon ton tng t nhng ngc li. D liu cn truyn s c a vo thanh ghi SSPBUF ng thi a vo thanh ghi SSPSR, khi c hiu BF c set. D liu c dch t thanh ghi SSPSR v a ra ngoi qua chn RC5/SDO. Ngt s xy ra khi qu trnh dch d liu hon tt. Tuy nhin d liu trc khi c a ra ngoi phi c cho php bi tn hiu t chn RA5/AN4/SS/C2OUT. Chn ny ng vai tr chn i tng giao tip khi SPI ch slave mode. Khi qu trnh truyn nhn d liu ang din ra, ta khng c php ghi d liu vo thanh ghi SSPBUF. Thao tc ghi d liu ny s set bit WCON (SSPCON<7>). Mt iu cn ch na l thanh ghi SSPSR khng cho php truy xut trc tip m phi thng qua thanh ghi SSPBUF.

Hnh 16: S kt ni ca chun giao tip SPI. Cng giao tip ca giao din SPI c iu khin bi bit SSPEN (SSPSON<5>). Bn cnh cn iu khin chiu xut nhp ca PORTC thng

Trc Quang Ha Nguyn Tin Tng KT 1 K49

40

Xy dng m hnh minh ha

qua thanh ghi TRISC sao cho ph hp vi chiu ca giao din SPI. C th : RC4/SDI/SDA s t ng c iu khin bi khi giao tip SPI. RS5/SDO l ng ra d liu, do cn clear bit TRISC<5>. Khi SPI dng Master mode, cn clear bit TRISC<3> cho php a xung clock ng b ra chn RC3/SCK/SCL. Khi SPI dng Slave mode, cn set bit TRISC<3> cho php nhn xung clock ng b t bn ngoi qua chn RC3/SCK/SCL. Set bit TRISC <4> cho php chn RA5/AN4/SS/C2OUT nhn tn hiu iu khin truy xut d liu khi SPI ch slave mode. Theo s kt ni ca chun giao tip SPI, khi Master s bt u qu trnh truyn nhn d liu bng cch gi tn hiu xung ng b SCK. D liu s dch t c hai thanh ghi SSPSR a ra ngoi nu c mt cnh ca xung ng b tc ng v ngng dch khi c tc ng ca cnh cn li. C hai khi Master v Slave nn c n nh chung cc qui tc tc ng ca xung clock ng b d liu c th dch chuyn ng thi.

SPI Master Mode


ch Master mode, vi iu khin c quyn n nh thi im trao i d liu (v i tng trao i d liu nu cn) v n iu khin xung clock ng b. D liu s c truyn nhn ngay thi im d liu c a vo thanh ghi SSPBUF. Nu ch cn nhn d liu, ta c th n nh chn SDO l ng vo (set bit TRISC<5>). D liu s c dch vo thanh ghi SSPSR theo mt tc c nh sn cho xung clock ng b. Sau khi nhn c mt byte d liu hon chnh, byte d liu s c a vo thanh ghi SSPBUF, bit BF c set v ngt xy ra.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

41

Xy dng m hnh minh ha

Hnh 17: S kt ni ca chun giao tip SPI.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

42

Xy dng m hnh minh ha

Hnh 18: Gin xung SPI ch Master Mode. Khi lnh SLEEP c thc thi trong qu trnh truyn nhn, trng thi ca qu trnh s c gi nguyn v tip tc sau khi vi iu khin c nh thc.Gin xung ca Master mode v cc tc ng ca cc bit iu khin c trnh by trong hnh v trn.

SPI Slave Mode


ch ny SPI s truyn v nhn d liu khi c xung ng b xut hin chn SCK. Khi truyn nhn xong bit d liu cui cng, c ngt SSPIF s c set. Slave mode hot ng ngay c khi vi iu khin ang ch sleep, v ngt truyn nhn cho php nh thc vi iu khin. Khi ch cn nhn d liu, ta c th n nh RC5/SDO l ng vo (set bit TRISC<5>). Slave Mode cho php s tc ng ca chn iu khin RA5/AN4/SS/ C2OUT (SSPCON <3:0>=0100). Khi chn RA5/AN4/SS/C2OUT mc

Trc Quang Ha Nguyn Tin Tng KT 1 K49

43

Xy dng m hnh minh ha

thp, d liu ra chn RC5/SDO c cho php xut d liu v khi mc cao, d liu ra chn RC5/SDO b kha, ng thi SPI c reset ( b m d liu c gn gi tr 0 ).

Hnh 19: Gin xung chun giao tip SPI ch Slave Mode. Cc thanh ghi lin quan n chun giao tip SPI bao gm: Thanh ghi INTCON (a ch 0Bh, 8Bh, 10Bh, 18Bh): cha bit cho php ton b cc ngt (GIE v PEIE). Thanh ghi PIR1 (a ch 0Ch): cha c ngt SSPIF. Thanh ghi PIE1 (a ch 8Ch): cha bit cho php ngt SSPIE. Thanh ghi TRISC (a ch 87h): iu khin xut nhp PORTC. Thanh ghi SSPBUF (a ch 13h): thanh ghi m d liu. Thanh ghi SSPCON (a ch 14h): iu khin chun giao tip SPI. Thanh ghi SSPSTAT (a ch 94h): cha cc bit ch th trng chun giao tip SPI. Thanh ghi TRISA ( a ch 85h) : iu khin xut nhp chn RA5/ AN4/S-

Trc Quang Ha Nguyn Tin Tng KT 1 K49

44

Xy dng m hnh minh ha

S/C2-OUT. Ngt (Interrupt) PIC16F877A c n 15 ngun to ra hot ng ngt c iu khin bi thanh ghi INTCON (bit GIE). Bn cnh mi ngt cn c mt bit iu khin v c ngt ring. Cc c ngt vn c set bnh thng khi tha mn iu kin ngt xy ra bt chp trng thi ca bit GIE, tuy nhin hot ng ngt vn ph thuc vo bit GIE v cc bit iu khin khc. Bit iu khin ngt RB0/INT v TMR0 nm trong thanh ghi INTCON, thanh ghi ny cn cha bit cho php cc ngt ngoi vi PEIE. Bit iu khin cc ngt nm trong thanh ghi PIE1 v PIE2. C ngt ca cc ngt nm trong thanh ghi PIR1 v PIR2.

Hnh 20: S logic ca tt c cc ngt trong vi iu khin PIC 16F877A. Trong mt thi im ch c mt chng trnh ngt c thc thi, chng trnh ngt c kt thc bng lnh RETFIE. Khi chng trnh ngt c thc thi, bit GIE t ng c xa, a ch lnh tip theo ca chng trnh chnh c ct vo trong b nh Stack v b m chng trnh s ch n a ch 0004h. Lnh RETFIE c dng thot khi chng trnh ngt v quay tr v chng trnh chnh, ng thi bit GIE cng s c set cho php cc ngt hot ng tr li. Cc c hiu c dng kim tra ngt no ang xy ra v phi c xa bng
Trc Quang Ha Nguyn Tin Tng KT 1 K49 45

Xy dng m hnh minh ha

chng trnh trc khi cho php ngt tip tc hot ng tr li ta c th pht hin c thi im tip theo m ngt xy ra. i vi cc ngt ngoi vi nh ngt t chn INT hay ngt t s thay i trng thi cc pin ca PORTB (PORTB Interrupt on change), vic xc nh ngt no xy ra cn 3 hoc 4 chu k lnh ty thuc vo thi im xy ra ngt. Ngt INT da trn s thay i trng thi ca pin RB0/INT. Cnh tc ng gy ra ngt c th l cnh ln hay cnh xung v c iu khin bi bit INTEDG (thanh ghi OPTION_REG <6>). Khi c cnh tc ng thch hp xut hin ti pin RB0/INT, c ngt INTF c set bt chp trng thi cc bit iu khin GIE v PEIE. Ngt ny c kh nng nh thc vi iu khin t ch sleep nu bit cho php ngt c set trc khi lnh SLEEP c thc thi. Ngt do s thay i trng thi ca cc chn trong PORTB. Cc pin PORTB<7:4> c dng cho ngt ny v c iu khin bi bit RBIE (thanh ghi INTCON<4>). C ngt ca ngt ny l bit RBIF (INTCON<0>). 3.3.2 Thit b kt ni Ethernet vi vi iu khin Thng thng kt ni thit b iu khin vi mng Ethernet c hai cch, mt l s dng cc vi iu khin tch hp sn phn giao tip vi Ethernet, ph bin l cc dng PIC18F66J60, PIC18F66J65, PIC18F67J60, PIC18F67J60, PIC18F86J60,. ca Microchip. S dng phng thc ny c u im vit m code n gin, kch thc bo mch nh gn. Ngoi ra cn c cch khc l s dng chip giao tip Ethernet ENC28J60, vi cch s dng ny bo mch s c kch thc ln hn, thng tch thnh hai module c lp c kt ni qua card h tr giao tip chun SPI ( Serial Pheripheral Interface ). Trong module ghp ni Ethernet, ta chn cch s dng chip ENC28J60. ENC28J60 l thit b kt ni Ethernet c lp theo chun cng nghip giao tip SPI. N c thit k p ng nh mt giao din mng Ethernet cho bt k b iu khin no c trang b giao tip SPI.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

46

Xy dng m hnh minh ha

Hnh 21: ENC28J60. ENC28J60 bao gm 7 khi chc nng chnh: Mt giao tip SPI phc v cho knh truyn thng gia vi iu khin vi ENC28J60. Cc thanh ghi iu khin c s dng iu khin v gim st ENC28J60. Mt b nh m RAM dng cho nhn v truyn d liu. Mt b phn x iu khin truy nhp ti b m RAM khi yu cu c to ra t DMA, khi nhn v truyn. Giao din bus trao i d liu v nhn lnh qua giao tip SPI. Module MAC thc hin php logic MAC theo IEEE 802.3. Module PHY m ha v gii m d liu tng t truyn trn cp i dy xon.

Hnh 22 : Giao din c bn ENC28J60. Tt c b nh bn trong ENC28J60 l kiu RAM tnh (SRAM ). C 3 loi b nh :

Trc Quang Ha Nguyn Tin Tng KT 1 K49

47

Xy dng m hnh minh ha

B nh cha cc thanh ghi iu khin c s dng cu hnh, iu khin v ly li trng thi ca ENC28J60. Chng c c v ghi trc tip bi giao tip SPI. B nh cha cc thanh ghi iu khin c chia thnh 4 ngn (bank ), c th c chn bi cc bit chn ngn BSEL1:BSEL0 trong thanh ghi ECON1. Mi bank di 32 bytes v c nh 5 bit a ch. V tr ca 5 bytes cui cng (t 1Bh n 1Fh) ca tt c cc bank u c chung nm thanh ghi EIE, EIR, ESTAT, ECON1, ECON2. B m Ethernet l b nh m c c s dng truyn v nhn d liu. Kch thc ca b m l 8Kbyte v c chia thnh b m nhn v b m truyn. Trong , kch thc v v tr ca cc b m trn c lp trnh bi vi iu khin qua giao tip SPI. Ni dung ca b m Ethernet c truy cp thng qua cc con tr c v ghi kt hp vi cc lnh c v ghi b nh m SPI.

Hnh 23: Cc vng nh ca ENC28J60. B m nhn l vng nh tm thi dng lu d liu nhn c t mng Ethernet. Cc cp thanh ghi ERXSTH: ERXSTL v ERXNDH : ERXNDL ng vai tr nh l cc con tr xc nh kch thc v v tr ca b m trong b nh.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

48

Xy dng m hnh minh ha

Khi cc byte ca d liu nhn c t giao din Ethernet th chng s c ghi vo trong b m nhn mt cch tun t. B m truyn s chim phn b nh cn li trong b m Ethernet. B m ny cng c xc nh kch thc v v tr thng qua cc cp thanh ghi ETXST v ETXSN nh cc con tr. D liu trc khi truyn ln mng Ethernet s c lu tm thi trong vng nh ny.

Hnh 24: Vng m truyn nhn ca ENC28J60.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

49

Xy dng m hnh minh ha

Cc thanh ghi PHY c s dng cu hnh, iu khin v ly li trng thi ca module PHY. Cc thanh ghi ny khng c truy nhp trc tip qua giao din SPI, chng ch c th c truy nhp qua MII thc hin trong MAC. Mi hot ng ca ENC28J60 ph thuc vo ton b cc lnh c a t vi iu khin thng qua giao din SPI. Cc lnh ny c s dng truy nhp ti b nh cha cc thanh ghi iu khin v b m Ethernet. Lnh c thanh ghi iu khin (RCR) cho php vi iu khin c bt k cc thanh ghi no ca ETH, MAC, MII. Lnh c b nh m(RBM)cho php vi iu khin c th c cc bytes bn trong b nh m truyn v nhn.Lnh vit thanh ghi iu khin vit WCR cho php vi iu khin vit ti bt k cc thanh ghi no ca ETH, MAC, MII. Lnh vit ti b nh m WBM cho php vi iu khin vit cc bytes trong 8-Kbyte b nh m truyn v nhn. Lnh BSF dng thit lp 8 bits iu khin trong thanh ghi ETH. Lnh ny khng c s dng vi thanh ghi MAC, PHY, MII hay b nh m. Lnh BFC dng xa 8 bits trong thanh ghi iu khin ETH. Lnh reset h thng SRC cho php vi iu khin pht ra lnh SSR. Khng ging nh cc lnh SPI khc. Lnh SRC ch l lnh 1 byte, khng tc ng ln cc thanh ghi khc. Qu trnh gi v nhn bc in: Module MAC bn trong ENC28J60 s t ng gi i trng m u v phn nh u khung khi truyn. Ngoi ra, MAC c th gi thm bt k phn m no (nu cn) v phn kim sot li CRC. Trong khi , vi iu khin s phi thc hin vic ghi tt c nhng trng hp cn li ca khung Ethernet vo bn trong b nh m trc khi c truyn i. truyn i mt bc in Ethernet th vi iu khin cn thc hin cc bc sau: 1.iu khin con tr ETXST tr vo vng nh no hin thi khng s dng. 2.S dng lnh ghi b nh m WBR ghi byte iu khin, sau n cc trng ca khung Ethernet : a ch MAC ch v ngun, kiu/ di v d liu mng. 3.iu khin con tr ETXSD ch ti byte cui cng ca d liu mang.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

50

Xy dng m hnh minh ha

4.Xa bit TXIF v t bit TXIE trong thanh ghi EIR, t bit INTIE trong thanh ghi EIE c th thc hin mt ngt khi cn thit. 5.Qu trnh truyn c bt u khi t bit TXRTS ca thanh ghi ECON1. Khi qu trnh truyn bc in c thc hin thnh cng hoc ngng li khi c mt nguyn nhn no th bit TXRTS ca thanh ghi ECON1 s c xa, 7 byte vector trng thi truyn s c ghi vo v tr bi ETXND +1, bit TXIF ca thanh ghi EIR s c t v ngt c to ra. kim tra nu bc in c gi thnh cng, bit TXABRT ca thanh ghi ESTAT s c c. 3.3.3 Mt s thnh phn khc

Hnh 25: RJ45 tch hp bin p. c th ni vo card mng ca PC th cp i dy xon cn c gn vo u ni RJ45.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

51

Xy dng m hnh minh ha

Hnh 26: Gic RJ45 v cp i dy xon Trong trng hp c hai hoc nhiu thit b iu khin cng kt ni vi mng Ethernet th ta cn s dng n Hub hoc s dng Switch to thnh mng.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

52

Xy dng m hnh minh ha

CHNG 4: XY DNG M HNH MINH HO


V c bn thit k c phn cng giao tip vi my tnh thng qua giao din Ethernet. C th m rng giao tip gia my tnh vi nhiu vi iu khin, s dng Hub. c th s dng c c giao thc TCP v UDP truyn nhn d liu. Hin th nhit tng i chnh xc.

4.1 Phn cng


4.1.1 Cc thnh phn ca mch Mch giao tip Ethernet s dng cc thnh phn: PIC16F877A. ENC28J60. RJ45 tch hp bin p. 74LS08 nhm mc ch chuyn mc in p t 3.3V sang 5V ghp ni ENC28J60 vi vi iu khin. LCD hin th nhit v d liu gi xung t my tnh. Cm bin nhit mi trng LM35. 4.1.2 S mch nguyn l, mch in S mch nguyn l Trnh by trong bn A3 nh km S mch in

Trc Quang Ha Nguyn Tin Tng KT 1 K49

53

Xy dng m hnh minh ha

Hnh 27: S mch in

4.2 Phn mm
4.2.1 Cc hm dng cho vi iu khin PIC16F877A trong MikroC
Trc Quang Ha Nguyn Tin Tng KT 1 K49 54

Xy dng m hnh minh ha

Vi vi iu khin thc hin giao tip Ethernet, th vin ca MikroC tch hp sn cc hm, th tc, lm n gin vic lp trnh. Mt s hm c bn: 1.Spi_Ethernet_Init: Khi to cho ENC28J60. ENC28J60 c khi to nh sau: Vng m nhn bt u t a ch 0x0000 v kt thc ti 0x19AD Vng m gi l vng cn li, t 0x19AE n 0x1FFF Con tr c vit RAM t ch t ng tng gim khi di ln nht ca gi tin l 1518 CLKOUT b v hiu ho LedA hin th trng thi, ledB hin th hot ng 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); resetPort: a ch cng c chn reset. resetBit: chn reset. CSport: i ch cng c chn chip select. CSbit: chn chip select. mac: a ch MAC, phi t trong RAM ip: i ch IP, phi t trong RAM. fullDuplex: 0 hoc l 1 ng vi ch bn song cng hay l song cng. 2.Spi_Ethernet_doPacket: Hm nhn bc in v x l, cc yu cu ARP v ICMP s c t ng p li, cc gi tin UDP, TCP s c x l trong Spi_Ethernet_UserUDP, Spi_Ethernet_UserTCP. unsinged char Spi_Ethernet_doPacket(); Gi tr tr v: 0-khng c gi tin hoc x l gi tin thnh cng. 1-qu trnh nhn bc in c li hoc vng m nhn li 2-nhn bc in sai a ch ip 3-nhn bc in khng phi phin bn Ipv4 4-kiu ca bc in khng c nh ngha trong th vin 3.Spi_Ethernet_putByte: Hm lu mt byte vo a ch hin ti xc nh bi EWRPT. void Spi_Ethernet_putByte(unsigned char v);

Trc Quang Ha Nguyn Tin Tng KT 1 K49

55

Xy dng m hnh minh ha

v: gi tr cn ghi 4.Spi_Ethernet_getByte: hm c 1 byte trong RAM c a ch xc nh bi ERDPT unsigned char Spi_Ethernet_getByte(); 5.Spi_Ethernet_UserTCP: Hm x l gi tin TCP. Hm ny c gi bi hm Spi_Ethernet_doPacket x l gi tin TCP. unsigned int Spi_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength); Gi tr tr v ca hm: l s byte gi tr li remotePort , remoteHost: cng v s ip ca ni gi destPort: s cng ch reqLength: di ca d liu gi 6.Spi_Ethernet_UserUDP: Hm x l gi tin UDP. Hm ny c gi bi hm Spi_Ethernet_doPacket x l gi tin UDP. unsigned int Spi_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength); Gi tr tr v ca hm: l s byte gi tr li remotePort , remoteHost: cng v s ip ca ni gi destPort: s cng ch reqLength: di ca d liu gi Ngoi ra cn mt s hm khc nh: 7. Spi_Ethernet_putBytes ghi mt s byte vo ENC28J60 bt u t a ch xc nh bi EWRPT void Spi_Ethernet_putBytes(unsigned char *ptr, unsigned char n); ptr: vng nh cn vit vo ENC28J60 RAM n: s lng byte cn ghi vo 8. Spi_Ethernet_getBytes c mt s byte t ENC28J60 bt u t a ch addr

Trc Quang Ha Nguyn Tin Tng KT 1 K49

56

Xy dng m hnh minh ha

void Spi_Ethernet_getBytes(unsigned char *ptr, unsigned int addr, unsigned char n); ptr: vng nhn gi tr addr: a ch c trong RAM ENC28J60 n: s byte c 9. Spi_Ethernet_putConstBytes ghi mt s byte trong ROM vo ENC28J60 void Spi_Ethernet_putConstBytes(const unsigned char *ptr, unsigned char n); 10. Spi_Ethernet_putString unsigned int Spi_Ethernet_putString(unsigned char *ptr); 11. Spi_Ethernet_putConstString unsigned int Spi_Ethernet_putConstString(const unsigned char *ptr); 4.2.2 Cc hm API dng cho PC Khi nim v socket: Trong m hnh mng, hai my tnh c th trao i thng tin cho nhau th cn phi to ra kt ni gia chng. V vy ngi ta xy dng khi nim socket, nhm n gin ho qu trnh thit lp kt ni v trao i d liu. Socket da trn giao thc TCP/IP to mi trng trung gian cho cc ng dng v giao thc bn di. Socket c xem l mt cu trc d liu tru tng dng to ra mt knh truyn gi v nhn d liu gia cc process trong cng chng trnh hay gia cc my trong cng mi trng mng vi nhau. Qu trnh truyn, nhn d liu cn c mt bn ng vai tr server cn bn kia ng vai tr client. i vi TCP th u tin server phi to ra mt socket v ch i cc yu cu kt ni t client. Client to ra socket cho ring n xc nh v tr server(da vo tn ca server hay a ch ca server trong mng) v tin hnh vic kt ni vi server, sau khi kt ni c thit lp th client v server c th tin hnh trao i d liu vi nhau. Tm li, socket l u trao i d liu gia cc qu trnh, qua cc ng dng Winsock gi v nhn d liu qua mng.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

57

Xy dng m hnh minh ha

Mt TCP/IP socket gm mt a ch IP kt hp vi mt port xc nh duy nht mt qu trnh lin mng. i vi giao thc IP, mi bn giao tip c gn mt a ch IP i din bi mt chui 32 bit, gi l a ch Ipv4. Ngoi a ch IP truy cp my tnh xa, mt ng dng phi bit c s cng hay port ca dch v truyn thng vi dch v ang chy trn my cc b hoc xa. Khi mt client mun truyn thng giao tip vi server qua giao thc TCP hay UDP, n phi d a ch IP ca server song song vi s cng dch v. Khi server mun lng nghe kt ni v thu thp nhu cu ca client chng phi ch r mt a ch IP v port. C hai loi socket: Stream socket: da trn giao thc TCP, vic truyn d liu ch thc hin gia hai qu trnh thit lp kt ni. D liu c truyn tin cy, ng trnh t v khng lp li. Datagram socket: Da trn giao thc UDP, vic truyn d liu khng yu cu c s thit lp kt ni gia hai qu trnh. D liu truyn khng tin cy, c th khng ng trnh t hoc lp li. 1.Hm WSAStartup khi ng Windows Sockets. int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); Hm tr v 0 nu thnh cng wVersionRequested: Version yu cu ca Windows Sockets. lpWSAData: Nhn li cc thng tin chi tit ca Windows Sockets. 2.Hm WSACleanup kt thc Windows Sockets. int WSACleanup(void); Hm tr v gi tr 0 nu thnh cng. 3. Hm socket to mt socket. SOCKET socket (int af, int type, int protocol) ; af: h a ch type: kiu ca socket 4. Hm close kt thc mt socket

Trc Quang Ha Nguyn Tin Tng KT 1 K49

58

Xy dng m hnh minh ha

int closesocket (SOCKET s ); Hm tr v 0 nu thnh cng 5.Hm accept hm chp nhn yu cu kt ni t client SOCKET accept(SOCKET s, struct sockaddr FAR * addr, int FAR *addrlen); Hm tr v INVALID_SOCKET nu khng thnh cng s: Socket ang trng thi listen. Kt ni c to ra vi socket tr v. addr: cha a ch ca ni kt ni addrlen: di ca d liu trong addr 6.Hm connect yu cu thip lp mt kt ni int connect (SOCKET s, const struct sockaddr *name, int namelen); s : Mt socket cha kt ni name: tn ca socket cn kt ni namelen: chiu di ca i s name 7.Hm send gid liu int send (SOCKET s, const char *buf, int len, int flags ); Hm tr v s byte truyn s: Socket kt ni buf: vng cha d liu truyn len: di d liu cn truyn 8.Hm recv nhn d liu int recv (SOCKET s, char *buf, int len, int flags ); Hm tr v s byte nhn c, SOCKET_ERROR ch nh c li, 0 nu kt ni kt thc s: socket kt ni buf: vng m nhn len: ln ca vng m flag: t l 0 9.Hm bind gn mt a ch cho socket

Trc Quang Ha Nguyn Tin Tng KT 1 K49

59

Xy dng m hnh minh ha

int bind(SOCKET s, const struct sockaddr *addr, int namelen ); Hm tr v gi tr 0 nu thnh cng s : socket cha c s dng addr: a ch gn cho socket namelen: di ln ca addr 10.Hm setsockopt t mt s thuc tnh cho socket int setsockopt (SOCKET s, int level, int optname, const char *optval, int optlen ); Hm tr v gi tr 0 nu thnh cng s: socket cn thay i level: cp ca tu chn , c th mc socket, giao thc TCP/UDP, hoc giao thc IP optname: thuc tnh cn thay i optval: con tr n vng m cha gi tr cn t optlen: di ca vng optval

Trc Quang Ha Nguyn Tin Tng KT 1 K49

60

Xy dng m hnh minh ha

4.3 Mt s kt qu

Hnh 28 : o v hin th nhit trn LCD.

Hnh 29 : Hin th nhit nhn c trn PC.


Trc Quang Ha Nguyn Tin Tng KT 1 K49 61

Xy dng m hnh minh ha

Hnh 30 : Gi d liu xung vi iu khin, s dng giao thc TCP

Hnh 31:Nhn d liu t PC, theo giao thc TCP.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

62

Xy dng m hnh minh ha

Hnh 32 : t IP v Port mi

Hnh 33 : Hin th IP v Port mi

Trc Quang Ha Nguyn Tin Tng KT 1 K49

63

Xy dng m hnh minh ha

Hnh 34 : Gi v nhn d liu theo giao thc UDP

Hnh 35 : Hin th d liu nhn c theo giao thc UDP

Trc Quang Ha Nguyn Tin Tng KT 1 K49

64

Xy dng m hnh minh ha

Hnh 36: Cc la chn ca chng trnh

Trc Quang Ha Nguyn Tin Tng KT 1 K49

65

Kt lun v hng pht trin ca ti

CHNG V: KT LUN V HNG PHT TRIN CA TI


5.1. nh gi kt qu thc hin n
Thit b iu khin tch hp giao din truyn thng Ethernet, nh trnh by trong n l mt thit b phc v tt cho vic hc tp v nghin cu ca sinh vin. Vic xy dng thit b lin quan n nhiu mng kin thc, t nhng kin thc l thuyt cho n nhng kin thc thc tin. Vi nhng c gng ca nhm, chng em thc hin c nhng phn sau y : Xy dng c module ghp ni Ethernet, bao gm c phn cng v phn mm, gip cho vic ghp ni thit b iu khin vi mng Ethernet n gin. Trong module ghp ni Ethernet c tch hp thm thit b o nhit , nh l mt ng dng nh trong vic truyn thng theo chun Ethernet. Xy dng phn mm trn PC gip ngi s dng d dng gim st, gi d liu xung i tng pha di hay l nhn d liu t di gi ln. Tuy nhin, n vn cn mt s vn nh sau : Vic s dng, lm ch cha c hon ton. ng dng ca n mi dng li mc n gin do iu kin thi gian v c s vt cht.

5.2. Hng pht trin ca n


Thit b iu khin tch hp giao din truyn thng Ethernet l mt ng dng hay v c tnh cht m, kh nng ng dng thc t cao. Trong n mi ch dng li vic thc hin truyn thng theo chun Ethernet v ng dng nh l o v truyn nhit hay l d liu . Vic tip tc pht trin n vi nhng ng dng ln hn l rt cn thit nh ng dng vo phng iu khin gim st tc ng c ca phng iu khin V vy, n c th pht trin thm c nhng ng dng thc t hn na.

Trc Quang Ha Nguyn Tin Tng KT 1 K49

66

Kt lun v hng pht trin ca ti

TI LIU THAM KHO


[1] PGS.TS Hong Minh Sn : Mng truyn thng cng nghip, NXB Khoa hc k thut 2006. [2] Help mikroC. [3] MSDN library. [4] PIC16F877X, ENC28J60, LM35 datasheet. [5] www.microchip.com [6] www.dientuvietnam.net [7] www.picvietnam.net [8] http://vi.wikipedia.org [9] Nguyn Quc Cng, Hong c Hi : Internetworking vi TCP/IP

Trc Quang Ha Nguyn Tin Tng KT 1 K49

67

Kt lun v hng pht trin ca ti

Ph lc
1. Chng trnh trn vi iu khin PIC16F877A
#define PORT_SD 20000 unsigned char dcMac[6]= {0x11, 0x11, 0x11, 0x11,0x11,0x11}; unsigned char dcIP[4]= {10,0,0,10}; unsigned int port = PORT_SD; unsigned iNhietdo; unsigned char cDem = 0; unsigned char pDemNhietdo[8]; unsigned char cVtNhietdo; char strNhietdo[6]; char cChedo; void interrupt(){ if(INTCON.TMR0IF){ cDem++; INTCON.TMR0IF = 0; } } void XoaSpace (char *str){ char j,i= 0; char ddstr; while (str[i]== ' ') i++; ddstr = strlen(str)-i; for(j= 0; j< ddstr; j++){ str[j]= str[j+i]; } while (j< ddstr+i) str[j++]= ' '; } void VietBandau(){ Lcd8_Out(1,1,"Do an tot nghiep"); Lcd8_Out(2,1,"Nhiet do:");

Trc Quang Ha Nguyn Tin Tng KT 1 K49

68

Kt lun v hng pht trin ca ti


} void main () { unsigned temp; char i; cChedo= 1; TRISA.F0= 1; TMR0 = 0; OPTION_REG = 0x07; INTCON = 0xA0; TRISD = 0; TRISE = 0; ADCON1 = 0xAE;

Lcd8_Config(&PORTE,&PORTD,0,2,1,7,6,5,4,3,2,1,0); VietBandau(); Spi_Init(); SPi_Ethernet_Init(&PORTC,0, &PORTC, 1, dcMac, dcIP, 1 ); iNhietdo = 0; memset(pDemNhietdo, 0, sizeof(pDemNhietdo)); cVtNhietdo = 0; while (1) { Spi_Ethernet_doPacket(); if (cDem == 10){ pDemNhietdo[cVtNhietdo] = (unsigned char) (ADC_Read(0) * 500L/1023); cVtNhietdo++; if (cVtNhietdo==8) cVtNhietdo = 0; temp = 0; for(i=0; i<8; i++) temp = temp+ pDemNhietdo[i]; iNhietdo = temp >> 3; if(cChedo== 2){ Lcd8_cmd(LCD_CLEAR);

Trc Quang Ha Nguyn Tin Tng KT 1 K49

69

Kt lun v hng pht trin ca ti


VietBandau(); cChedo =1; } if(cChedo==1){ wordToStr (iNhietdo, strNhietdo); XoaSpace (strNhietdo); Lcd8_Out (2,11,strNhietdo); Lcd8_Out (2,13,"(C)"); } else if(cChedo==3){ SPi_Ethernet_Init(&PORTC,0, &PORTC, 1, dcMac, dcIP, 1 ); cChedo = 0; //Lcd8_Out (1,1,"IP:"); Lcd8_Cmd(LCD_CLEAR); for(i=0; i<4; i++){ intToStr(dcIP[i],strNhietdo); XoaSpace (strNhietdo); strNhietdo[3] = 0; if(i==0) Lcd8_Out(1,1,strNhietdo); else Lcd8_Out_Cp(strNhietdo); if(i!= 3) Lcd8_Out_Cp("."); } wordToStr(port,strNhietdo); XoaSpace(strNhietdo); Lcd8_Out(2,1,strNhietdo); } cDem = 0; } } } unsigned int Spi_Ethernet_UserTCP (unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqlength){ char cCommand; char i; if(localPort!= port) return 0; cCommand = Spi_Ethernet_getByte(); if(cCommand== 0){ Spi_Ethernet_putByte((iNhietdo>>8) & 0xff); Spi_Ethernet_putByte(iNhietdo & 0xff); return 2;

Trc Quang Ha Nguyn Tin Tng KT 1 K49

70

Kt lun v hng pht trin ca ti


}else if(cCommand==255){ cChedo = 2; cDem = 10; }else if(cCommand==254){ cChedo = 3; for(i=0; i<4; i++) dcIP[i]= Spi_Ethernet_getByte(); port = Spi_Ethernet_getByte()*256+Spi_Ethernet_getByte(); }else { cChedo = 0; Lcd8_Cmd(LCD_CLEAR); Lcd8_Chr(1,1, cCommand); for(i= 1; i<reqlength-1; i++){ cCommand = Spi_Ethernet_getByte(); if(cCommand!= 0) Lcd8_Chr_Cp(cCommand); else{ cCommand = Spi_Ethernet_getByte(); i++; Lcd8_Chr(2,1,cCommand); } } } return 0; }

unsigned int Spi_Ethernet_UserUDP (unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqLength){ char c; unsigned char i; if(localPort==port){ c= Spi_Ethernet_getByte(); if(c==255){ cChedo = 2; cDem = 10; }else { if(c!= 0){ cChedo = 0; Lcd8_cmd(LCD_CLEAR);

Trc Quang Ha Nguyn Tin Tng KT 1 K49

71

Kt lun v hng pht trin ca ti


Lcd8_Chr(1,1,c); if(isUpper(c)) Spi_Ethernet_putByte(tolower(c)); else Spi_Ethernet_putByte(toupper(c)); for(i= 1; i< reqLength; i++){ c= Spi_Ethernet_getByte(); if(i==16) Lcd8_Chr(2,1,c); else Lcd8_Chr_Cp(c); if(isUpper(c)) Spi_Ethernet_putByte(tolower(c)); else Spi_Ethernet_putByte(toupper(c)); } return reqLength; } } } return 0; }

2. Chng trnh trn PC


#include "DA_Std.h" #define WM_READ #define ID_TIMER #define PORT_DATA WM_USER 1 20000

HINSTANCE hInst; HWND hDlgDAEthernet; BOOL bUsedTCP = TRUE; IN_ADDR szHostIP = {10,0,0,10}; USHORT uPort = PORT_DATA; UINT iTimerUpdate = 2000; BOOL bConnect= FALSE; unsigned char szMessage[100]; WSADATA WSADat; SOCKADDR_IN sockaddrHost,sockaddrLocal; SOCKET sockConnect,sockConnectUDP; int iTempe = 0; void SetSockAddr(){ sockaddrLocal.sin_family = AF_INET; sockaddrLocal.sin_addr.s_addr = INADDR_ANY; sockaddrLocal.sin_port= htons (uPort); sockaddrHost.sin_family = AF_INET; sockaddrHost.sin_addr = szHostIP; //inet_addr (szHostIP); sockaddrHost.sin_port = htons (uPort); }

Trc Quang Ha Nguyn Tin Tng KT 1 K49

72

Kt lun v hng pht trin ca ti

int ConnectTCP(){ int tempval; SetSockAddr(); sockConnect = socket (AF_INET, SOCK_STREAM, 0); if (sockConnect == INVALID_SOCKET) { return WSAGetLastError(); } bind (sockConnect, (LPSOCKADDR)&sockaddrLocal, sizeof(sockaddrLocal)); if (connect (sockConnect, (LPSOCKADDR) &sockaddrHost, sizeof(sockaddrHost))== SOCKET_ERROR){ tempval = WSAGetLastError(); closesocket (sockConnect); return tempval; } if (WSAAsyncSelect (sockConnect, hDlgDAEthernet, WM_READ, FD_READ) == SOCKET_ERROR){ tempval = WSAGetLastError(); WSAAsyncSelect (sockConnect, hDlgDAEthernet, 0, 0); return tempval; } tempval = TRUE; if(setsockopt(sockConnect, IPPROTO_TCP,TCP_NODELAY, (LPCSTR)&tempval, sizeof(tempval))); tempval = TRUE; setsockopt(sockConnect, SOL_SOCKET, SO_DONTLINGER,(LPCSTR)&tempval, sizeof(tempval)); return 0; } int ConnectUDP(){ SetSockAddr(); sockConnectUDP = socket (AF_INET, SOCK_DGRAM, 0); if (sockConnect == INVALID_SOCKET) { return WSAGetLastError(); } bind (sockConnectUDP, (LPSOCKADDR)&sockaddrLocal, sizeof(sockaddrLocal)); return 0; } void GetTemperature(){ char pCommand[6] = {0,0,0,0,0,0}; ConnectTCP(); send(sockConnect, (LPCSTR)&pCommand, 6, 0); } void Swap(unsigned char * n1, unsigned char * n2){ unsigned char t; t = *n1; *n1= *n2; *n2 = t; }

Trc Quang Ha Nguyn Tin Tng KT 1 K49

73

Kt lun v hng pht trin ca ti


INT_PTR APIENTRY DlgConfigProc(HWND hDlg, UINT uMsg, UINT wParam, LONG lParam){ unsigned int t; BOOL bTransSucc; switch(uMsg){ case WM_INITDIALOG: CheckRadioButton(hDlg, IDC_TCP,IDC_UDP,bUsedTCP? IDC_TCP:IDC_UDP); SendDlgItemMessage(hDlg,IDC_TARGETIP,IPM_SETADDRESS,0, MAKEIPADDRESS(szHostIP.s_net,szHostIP.s_host,szHostIP.s_lh,szHostIP.s_impno)); SetDlgItemInt(hDlg,IDC_PORT,(unsigned int)uPort,FALSE); SetDlgItemInt(hDlg,IDC_TIMER,iTimerUpdate,FALSE); break; case WM_COMMAND: switch(LOWORD(wParam)){ case IDOK: if(IsDlgButtonChecked(hDlg, IDC_TCP)==BST_CHECKED) bUsedTCP = TRUE; else bUsedTCP = FALSE; SendDlgItemMessage(hDlg,IDC_TARGETIP,IPM_GETADDRESS, 0, (long)&szHostIP); Swap(&szHostIP.s_impno,&szHostIP.s_net); Swap(&szHostIP.s_lh,&szHostIP.s_host); // t = GetDlgItemInt(hDlg,IDC_PORT,&bTransSucc,FALSE); if(bTransSucc && t <= 65535) uPort= t; else{ SetFocus(GetDlgItem(hDlg,IDC_PORT)); SendDlgItemMessage(hDlg,IDC_PORT,EM_SETSEL,0,-1); MessageBox(hDlg,"Port number is invalid","DA Ethernet",MB_OK|MB_ICONEXCLAMATION); break; } t = GetDlgItemInt(hDlg,IDC_TIMER,&bTransSucc,FALSE); if(bTransSucc && t <= 65535){ iTimerUpdate = t; } else { SetFocus(GetDlgItem(hDlg,IDC_TIMER)); SendDlgItemMessage(hDlg,IDC_TIMER,EM_SETSEL,0,-1); MessageBox(hDlg,"Temperature time update is invalid","DA Ethernet",MB_OK|MB_ICONEXCLAMATION); break; } KillTimer(hDlgDAEthernet, ID_TIMER); SetTimer(hDlgDAEthernet, ID_TIMER, iTimerUpdate, NULL); EndDialog(hDlg,IDOK); break; case IDCANCEL: EndDialog(hDlg,IDCANCEL); }

Trc Quang Ha Nguyn Tin Tng KT 1 K49

74

Kt lun v hng pht trin ca ti


} return 0; } INT_PTR APIENTRY DlgAboutProc(HWND hDlg,UINT uMsg, UINT wParam, LPARAM lParam){ switch(uMsg){ case WM_LBUTTONDOWN: case WM_COMMAND: EndDialog(hDlg,0); return TRUE; } return 0; } void EnableSendData(BOOL bEnable){ EnableWindow(GetDlgItem(hDlgDAEthernet,IDC_STATIC_LCDROW1),bEnable); EnableWindow(GetDlgItem(hDlgDAEthernet,IDC_STATIC_LCDROW2),bEnable); EnableWindow(GetDlgItem(hDlgDAEthernet,IDC_LCDROW1),bEnable); EnableWindow(GetDlgItem(hDlgDAEthernet,IDC_LCDROW2),bEnable); } void EnableSetIP(BOOL bEnable){ EnableWindow(GetDlgItem(hDlgDAEthernet,IDC_STATIC_IPSET),bEnable); EnableWindow(GetDlgItem(hDlgDAEthernet,IDC_STATIC_PORTSET),bEnable); EnableWindow(GetDlgItem(hDlgDAEthernet,IDC_IPSET),bEnable); EnableWindow(GetDlgItem(hDlgDAEthernet,IDC_PORTSET),bEnable); } BOOL APIENTRY DlgDAEthernetProc(HWND hDlg, UINT uMsg, UINT wParam, LONG lParam){ int temp; char szLcdRow1[17]; char szLcdRow2[17]; static LPSTR szList[] = {"Temperature", "Data", "Set IP"}; static char cExe =0; char i; INITCOMMONCONTROLSEX icce ={sizeof(INITCOMMONCONTROLSEX),ICC_INTERNET_CLASSES}; switch (uMsg) { case WM_INITDIALOG: InitCommonControlsEx(&icce); SendMessage(GetDlgItem(hDlg,IDC_LCDROW1),EM_LIMITTEXT,16,0); SendMessage(GetDlgItem(hDlg,IDC_LCDROW2),EM_LIMITTEXT,16,0); SetDlgItemText(hDlg,IDC_TEMPERATURE,"- - - (C)"); if (WSAStartup (0x0101, &WSADat)){

Trc Quang Ha Nguyn Tin Tng KT 1 K49

75

Kt lun v hng pht trin ca ti


MessageBox(hDlg,"Error in startup winsock","DAEthernet",MB_OK| MB_ICONERROR); DestroyWindow(hDlg); PostQuitMessage(0); } else { wsprintf(szMessage,"%s is running",WSADat.szDescription); SetDlgItemText(hDlg,IDC_STATUS,szMessage); } SetTimer(hDlg, ID_TIMER, iTimerUpdate,NULL); for(i=0; i<3; i++) SendDlgItemMessage(hDlg,IDC_DISPLAY,CB_ADDSTRING,0, (long)szList[i]); SendDlgItemMessage(hDlg,IDC_DISPLAY, CB_SETCURSEL,0,0); break; case WM_READ: if(WSAGETSELECTERROR(lParam)!= 0) break; if(WSAGETSELECTEVENT(lParam)==FD_READ){ temp = recv(sockConnect, szMessage, sizeof(szMessage),0); if(temp==0){ SetDlgItemText(hDlg,IDC_STATUS,"Connect broken"); } else { iTempe= (szMessage[0]*256+szMessage[1]); wsprintf(szMessage,"%d (C)",iTempe); SetDlgItemText(hDlg, IDC_TEMPERATURE, szMessage); } } break; case WM_TIMER: if(bConnect) GetTemperature(); break; case WM_COMMAND: switch (LOWORD(wParam)){ case IDC_DISPLAY: if(HIWORD(wParam)== LBN_SELCHANGE){ cExe= (char)SendDlgItemMessage(hDlg,IDC_DISPLAY,CB_GETCURSEL,0,0); switch(cExe){ case 0: EnableSendData(FALSE); EnableSetIP(FALSE); break; case 1: EnableSendData(TRUE);

Trc Quang Ha Nguyn Tin Tng KT 1 K49

76

Kt lun v hng pht trin ca ti


EnableSetIP(FALSE); break; case 2: EnableSendData(FALSE); EnableSetIP(TRUE); } } break; case IDC_ABOUT: DialogBox(hInst,"ABOUT",hDlg,(DLGPROC)DlgAboutProc); break; case IDOK: case IDCANCEL: KillTimer(hDlg, ID_TIMER); DestroyWindow(hDlg); PostQuitMessage(0); break; case IDC_CONFIG: if(DialogBox(hInst,"CONFIGETHERNET",hDlg,(DLGPROC) DlgConfigProc)== IDOK){ EnableWindow(GetDlgItem(hDlg,IDC_CONNECT),bUsedTCP); EnableWindow(GetDlgItem(hDlg,IDC_SEND),!bUsedTCP); } break; case IDC_SEND: if(cExe==0){ szMessage[0]= (char)255; szMessage[1]= 0; temp = 2; } else if(cExe==1){ if(bUsedTCP){ memset(szLcdRow1,0,sizeof(szLcdRow1)); memset(szLcdRow2,0,sizeof(szLcdRow2)); GetDlgItemText(hDlg,IDC_LCDROW1,szLcdRow1,sizeof(szLcdRow1)); GetDlgItemText(hDlg,IDC_LCDROW2,szLcdRow2,sizeof(szLcdRow2)); memset(szMessage,0,sizeof(szMessage)); strcpy(szMessage,szLcdRow1); memcpy(szMessage+strlen(szLcdRow1)+1,szLcdRow2,strlen(szLcdRow2)+1); temp = strlen(szLcdRow1)+strlen(szLcdRow2)+2; }else{ GetDlgItemText(hDlg,IDC_LCDROW1,szMessage,sizeof(szMessage)); GetDlgItemText(hDlg,IDC_LCDROW2,szMessage+strlen(szMessage),sizeof(szMessage)); temp = strlen(szMessage);

Trc Quang Ha Nguyn Tin Tng KT 1 K49

77

Kt lun v hng pht trin ca ti


} }else{ //int i; //PIP_ADAPTER_INFO pai; //ULONG outbuflen= sizeof(pai); unsigned short port; szMessage[0]= 254; SendDlgItemMessage(hDlg, IDC_IPSET,IPM_GETADDRESS, 0, (long)(szMessage+1)); port = GetDlgItemInt(hDlg, IDC_PORTSET,NULL,FALSE); SetDlgItemInt(hDlg,IDC_PORTSET, port,0); Swap(szMessage+1,szMessage+4); Swap(szMessage+2,szMessage+3); szMessage[5] = port/256; szMessage[6] = port%256; temp= 7; //GetAdaptersInfo(&pai,&outbuflen); //pai.IpAddressList.IpMask.String } if(bUsedTCP){ temp = send(sockConnect,szMessage,temp,0); if(cExe==2){ closesocket(sockConnect); bConnect = FALSE; SetDlgItemText(hDlg,IDC_CONNECT,"Connect"); EnableWindow(GetDlgItem(hDlg,IDC_CONFIG),TRUE); } }else{ ConnectUDP(); temp = sendto(sockConnectUDP,szMessage,temp,0, (LPSOCKADDR)&sockaddrHost,sizeof(sockaddrHost)); if(cExe==1){ temp = sizeof(sockaddrHost); recvfrom(sockConnectUDP, szMessage, sizeof(szMessage),0,(LPSOCKADDR)&sockaddrHost,&temp); wsprintf(szMessage+strlen(szMessage),"\nReceive %d bytes",temp); SetDlgItemText(hDlg, IDC_STATUS, szMessage); } else if(cExe==2){ closesocket(sockConnectUDP); } break; } wsprintf(szMessage, "Send %d bytes to %d.%d.%d. %d",temp,szHostIP.s_net,szHostIP.s_host,szHostIP.s_lh,szHostIP.s_impno); SetDlgItemText(hDlg,IDC_STATUS,szMessage); break; case IDC_CONNECT:

Trc Quang Ha Nguyn Tin Tng KT 1 K49

78

Kt lun v hng pht trin ca ti


bConnect = !bConnect; if(bConnect){ if((temp=ConnectTCP())== 0){ wsprintf (szMessage, "Connection to %d.%d.%d. %d",szHostIP.s_net,szHostIP.s_host,szHostIP.s_lh,szHostIP.s_impno); SetDlgItemText(hDlg, IDC_STATUS, szMessage); } else{ wsprintf(szMessage,"Socket error %d",temp); SetDlgItemText(hDlg,IDC_STATUS,szMessage); closesocket(sockConnect); bConnect = 0; } } else { closesocket(sockConnect); SetDlgItemText(hDlg, IDC_STATUS,"Disconnection..."); } SetDlgItemText(hDlg,IDC_CONNECT,bConnect?"Disconnect":"Connect"); EnableWindow(GetDlgItem(hDlg,IDC_CONFIG),!bConnect); EnableWindow(GetDlgItem(hDlg,IDC_SEND),bConnect); } return TRUE; } return FALSE; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ MSG msg; hInst = hInstance; hDlgDAEthernet = CreateDialog(hInstance, "DAETHERNET", NULL, (DLGPROC) DlgDAEthernetProc); SetClassLong(hDlgDAEthernet, GCL_HICON, (LONG)LoadIcon(hInstance,"ICONDAETHERNET")); while (GetMessage(&msg, NULL, 0, 0)){ if(!IsDialogMessage(hDlgDAEthernet, &msg)){ TranslateMessage(&msg); DispatchMessage(&msg); } } return msg.wParam; }

Trc Quang Ha Nguyn Tin Tng KT 1 K49

79

You might also like