12
Leâ Höõu Phuùc K2004 BKHCM 03/2009 GIAO TIP MÁY TÍNH TOÀN TP  Tài liu nà y biên son ch yếu da theo giáo trình “Đo lường à !i"u #hi$n b%ng &áy t'nh( ca Th)y *guy+n Đ,c Thành Đ- .ách /hoa T01-23 c4ng 5i 6uá trình thc hành ca &ình 6 ua các !7 án à lu8n 9 n1 Tài liu :n c; th$ c; nhi"u sai  <;t à chưa !)y !=.luetooth> ?nternet 1 1 1 s@ !ưAc bB sung sauC nhưng chDc chDn s@  giE0 cho các bn sinh iên &nh dng hFn trong ic sG dHng &áy t'n h !$ !i"u #hi$n> !o !c thIng 6ua các ' dH cH th$1 MC LC : 1. GIAO TIP QUA CNG COM RS232 2. GIAO TIP QUA CNG MÁY IN 3. GIAO TIP QUA KHE CM PCI !. GIAO TIP QUA CNG US" Page 1 of 12

Giao Tiep May Tinh Toan Tap

Embed Size (px)

Citation preview

GIAO TIP MY TNH TON TP

Le Hu Phuc K2004 BKHCM 03/2009

GIAO TIP MY TNH TON TP

Ti liu ny bin son ch yu da theo gio trnh o lng v iu khin bng my tnh ca Thy Nguyn c Thnh H Bch Khoa Tp.HCM cng vi qu trnh thc hnh ca mnh qua cc n v lun vn. Ti liu vn c th c nhiu sai xt v cha y (Bluetooth, Internet . . . s c b sung sau) nhng chc chn s gip cho cc bn sinh vin mnh dng hn trong vic s dng my tnh iu khin, o c thng qua cc v d c th.MC LC :

1. GIAO TIP QUA CNG COM RS232

2. GIAO TIP QUA CNG MY IN

3. GIAO TIP QUA KHE CM PCI

4. GIAO TIP QUA CNG USBI.Giao tip qua cng ni tip RS232:

Ta thng s dng truyn thng ni tip thng qua cng COM my tnh c 9 chn hoc 25 chn, nhng cng 9 chn th ph bin hn. Ta thng truyn thng gia my tnh v vi iu khin thng qua cng ny trao i d liu o c, iu khin, vic ny ch cn s dng 3 chn theo s sau :

Trong : Th t chnTn tn hiuChiu

3TXDXutXut d liu ni tip

2RXDNhpNhp d liu ni tip

5GND--Mass chung.

Tuy nhin mc in p logic ca my tnh li khc vi mc in p logic ca vi iu khin nn ta cn 1 vi mch chuyn mc logic (MAX232 hoc DS275). C th s nh sau:

C 1 iu m ta cn lu l cch s dng cc chn ca MAX232 v rt d nhm nu trong trng hp khng c datasheet : Max232 thc hin nhim v chuyn mc logic t my tnh qua vi iu khin v ngc li. V vy v d vi chn R1IN th ta nn hiu n nhn d liu xut t my tnh hay vi iu khin? khi b nhm th bn c nh trong u l ch c my tnh thi. Nh vy ta ch cn nh 1 iu l my tnh truyn d liu thng qua chn Rin v nhn d liu thng qua chn Tout. Nh nh vy th ta hin nhin hiu cc chn kt ni vi vi iu khin th no.

V ch vi 3 chn ca cng COM ta sn sng thc hin cc th nghim truyn d liu hay iu khin.

Cu trc d liu truyn i theo chun RS232:

Start bit 8 bits d liu Parity bit Stop bit

Mt chui truyn d liu gm tt c 11 bit, trong 1 bit Start (cho bit l sp truyn d liu), 8 bit d liu ( d liu trao i hai chiu gia my tnh v vi iu khin), 1 bit Parity (dng kim tra li khi truyn, vi khong cch ngn th khng cn kim tra Parity), 1 bit Stop cho bit kt thc chui d liu. Khi khng truyn ng dy s trng thi Mark (mc 1). Logic trn ng dy theo kiu Mc 1

(-10V), Mc 0 (+10V).

Tn hiu truyn ni tip di dng cc bit, s bit trong 1 giy c gi l baud, vn tc truyn thng dng l 300, 600, 1200, 2400, 4800, 9600, 19200...

Mt iu cn lu l ni truyn v ni nhn phi cng c thit lp tc truyn ging nhau m bo d liu nhn c khng b sai. Khi ta truyn d liu iu khin t my tnh xung vi iu khin m vi iu khin nn thinh khng lm g c th iu u tin cn xem li l tc truyn nhn 2 bn ng cha !

Mng truyn thng RS232:

V ta ch thc hin nhng th nghim nh th truyn thng theo chun RS232 tm . Tuy nhin trong trng hp ta mun giao tip gia my tnh vi nhiu vi iu khin th mi chuyn s rc ri hn do chun ny khng c u tin trn ng truyn, khng c a ch ni nhn. Tuy vy nu kho lo 1 cht th ta vn c th thc hin c mng truyn thng RS232 bng nhng gii thut hp l nhm trnh xung t trn ng truyn v sai xt c th. Sau y l s kt ni v gii thut gim st ca my tnh vi 2 vi iu khin :

Chc cc bn s thc mc ti sao mnh thm vo cng AND 7408 ? iu g s xy ra khi chng ta kt ni trc tip v ch c 1 vi iu khin truyn d liu?Khi khng truyn th chn TXD ca con th 1 s trng thi ch (mc 1), v khi con th 2 truyn th chc chn s c bit 0 no gi v my tnh nhng chn TXD ca con th nht t ngt b h xung mc 0 do phn cng s gy ra chm mch, i khi c th chy vi iu khin. Chnh v th theo cch ca mnh th nn cch ly bng cng AND th khi 1 con truyn s khng nh hng n con kia. Tng t vi nhiu vi

iu khin hn th bn dng cng AND nhiu ng vo hn hoc kt ni cc cng AND 2 ng vo c s ng vo mong mun. Cn chn nhn d liu t my tnh th khng cn cch ly. Tuy nhin phn cng ny khng gii quyt chuyn 2 vi iu khin cng truyn 1 lc m phi c gii quyt bng phn mm. Do gii thut m mnh ngh l theo kiu my tnh l ngi ch ng, cn 2 vi iu khin s b ng, tc l theo kiu i thoi nh sau : while (1)

{

My tnh: A ! Nhit l nng l bao nhiu h my?

VK A : D em o c 120 , thng B n o vn tc ng c , anh hi n i! My tnh : B ! My ang chy vi vn tc bao nhiu vy?

VK B : D em chy c 2000 vng/pht ..... h, anh ng bn tc .

}

V nh vy s khng c chuyn c hai vi iu khin cng truyn 1 lc. Nhng c 1 iu cn phi ni l d liu ch c 8 bit (256 ) thi, sao bit my tnh truyn lnh v d liu cho thng no, A hay B? Mnh c kin th ny, nu nh d liu m my tnh truyn cho vi iu khin nh hn hoc bng 127 th bn quy nh rng bit ln nht l bit a ch, v d 0XXXXXXX l gi cho cho em A, cn 1XXXXXXX l gi cho em B, chnh l bit D0, nht nh hai em A v B s khng ginh git nhau Ca anh Computer gi cho tao m ! .Ti sao mnh chn D0 m khng chn D7? l do d liu ca mnh c lc chn, lc l m thng D7 s l bit chn l, chu kh d liu nh 1 cht nhng ch gi 1 ln. Cn nu d liu di lng ngong th nn tch n ra thnh nhiu ln gi lin tip nhau, byte u tin s qui nh a ch ca vi iu khin (giao tip c vi 255 con VK ln ). Ci ny dng cho c truyn v nhn, nhng bn nn thng nht l s byte truyn v nhn l c nh, v d my tnh lun lun truyn 2 byte cho tt c vi iu khin, v cc vi iu khin lun lun truyn 3 byte cho my tnh, lm nh vy ta s c li l code cho tng vi iu khin s gn ging nhau, thng no c s byte ngn hn th s byte cn li l 0 v ghp v gi lun. Di y mnh xin Code th bng C cho vi iu khin XXX (ai bit bn dng loi no !) c a ch l 0, n nhn 2 byte t my tnh ://***************V d 1********************

unsigned char data[2]; //mng d liu nhn

int i ; //bin m s byte

int my_data = 0 ;//xc nh d liu c phi dnh cho mnh hay khng.........................................

void uart_int() //hm ngt ngoi. {

if (i == 0 ) //nhn byte u tin

{

if (SBUF == 0) //Nu b m nhn byte du ng l a ch 0

{

my_data = 1;// haha, ng l qu ca anh Computer gi cho mnh ri!

}

else my_data = 0;//qu thit, nh gi cho em khc ri !

}

if (my_data == 1)//Nu ng l ca nh gi th phi nhn c 2 mn !

{

data[i] = SBUF;//em ct qu no !

}

i = i ++;//Thm 1 mn na if (i == 2)//Nhn 2 mn ri

{

i = 0; //Tip tc xo tay ch nhn qu

my_data = 0;

}

}//************************************************

Bn thy khng, on code trn c th dng cho c cc vi iu khin c a ch khc. Tuy nhin,vit chung chung bng C th n l nh vy, vi mi h VK s thm tht cht t vo hm ngt truyn thng ni tip v d nh phi xo c ngt nhn .....vv.

Tip theo ta s tm hiu module truyn thng ni tip ca Visual Basic, c th vit chng trnh my tnh giao tip vi vi iu khin. iu trc tin l cc bn phi download c file : MSCOMM32.OCX sau qung vo C:/windows/system32. n gin, ch cn vo google g l ra ngay thui !. Sau bn m Visual Basic ln, chn kiu Form thit k, xong ri trn thanh Menu Bar c task ProjectComponents task Control bn nhn Browse Add th vin iu khin cng COM, n trong system 32 ! Sau khi add v nhn OK th bn task General s c biu tng hnh in thoi bn.

Bn click vo biu tng thoi ri v ln form 1 hnh ch nht, lp tc biu tng in thoi xut hin trn form, nh vy l ta thm i tng Com Control vo chng trnh iu khin. i tng u tin mc nh c tn l Mscomm1. Nu nh my tnh bn c hn 2 cng COM th v thm v 1 ci na v thng v sau tn l Mscomm2

Sau y l cc hm chnh trong VB lin quan n vic truyn thng RS232.- Object.CommPort = [value]

t cu hnh chn cng giao tip, mc nh l cng s 1, tuy nhin cho chc chn bn nn m Device Manager xem. Object y chnh l i tng Mscomm m ta v trn form. V d:

Mscomm1.CommPort = 1

- Object.Settings = [value]

Value = Baud rate, Parity bit, Data bit, Stop bit

Baud rate: l tc truyn nhn gia my tnh v vi iu khin (110, 300, 600, 1200, 2400, 9600, 14400, 19200, 28800, 38400......)

Parity bit : bit kim tra chn l, N : non parity (default), E : Even (kim tra chn), O : Odd (kim tra l). Tuy nhin nn gi tr mc nh l N v khng cn kim tra vi khong cch truyn ngn v t b nhiu. Lu dy cp truyn tn hiu bn nn b tr xa cc thit b lin quan n t trng nh ng c, relay ... nhm trnh b nhiu.

Data bit : s bit d liu m ta mun truyn i, c gi tr t 4, 5, 6, 7, 8(default).

Stop bit : s bit dng, c th l 1, 1.5, 2

V d : Mscomm1.Settings = 9600, N, 8, 1Tc truyn l 9600, khng kim tra chn l, 8 bit d liu v 1 bit stop.

- Object.PortOpen= [True/False]

Cho php chng trnh chng ta ng hay m cng COM, lu l chng trnh ca chng ta khng th m cng com trong khi 1 chng trnh khc ang s dng cng COM.

V d : Mscomm1.PortOpen = True , chim ly cng COM truyn thng.

Mscomm1.PortOpen = False , tr t do cho cng COM v chng trnh khc c th s dng cng com truyn thng.

- Var = Object.Input

c gi tr thu ca b m vo bin Var. S dng khi ta nhn d liu.

V d : Dim nhiet_do As byte

nhiet_do = Mscomm1.Input Object.Inputlen = [number] Qui nh s k t c bi Input. Nn chn Inputlen = 0 s cho php c ton b vng m. Trng hp ta khng bit chui d liu nhn c gm bao nhiu k t th nn chn Inputlen = 0 s cho php c ht, cn nu chng ta bit mi ln truyn nhn ch c 1 k t th nn chn Inputlen = 1 s ch c 1 k t ra thi. Sau khi tm hiu lnh pha sau ti s gii thch k hn v b m.- Object.Inbuffersize = [number]

Qui nh kch thc ca b m, number c gi tr mc nh l 1024 nu ta khng thit lp lnh ny. Bn hnh dung th ny, gi s bn qui nh kch thc ca b m my tnh bn l 1 byte th d liu nhn c s c ghi vo nh c kch thc 1 byte ny, d liu nhn sau s ln d liu trc, do mi ln nhn 1 k t th bn phi nhanh chng lu k t ny. Cn nu bn c kch thc 2 byte th khi nhn c 1 k t, my tnh s ghi vo nh 1, nhn k t tip theo s ghi vo nh 2, cn k t th 3 th c ghi vo nh 1 v c th tip tc. . . .

Nu bn lp trnh tt v c s x l mi k t mi khi nhn c n th nn thit lp nh sau ti u b m v ti u tc thc thi :

Mscomm1.Inputlen = 1

Mscomm1.Inbuffersize = 1

Ngha l to ra b m c kch thc 1 k t v ch c ra 1 k t thi. Object.InputMode = [value]

Value = ComInputModeText : B m s thu v chuyn thnh kiu k t ch khng phi s, lu trn ng truyn ch c m Ascii ca k t c truyn i. V d vi iu khin gi s 48 (#30H) cho my tnh m ta thit lp InputMode = 0 th b m s cha ch s 0 kiu string.

Value = ComInputModeBinary: B m s nhn nguyn s c nhn. V d nh trn th my tnh s nhn c s 48.

Var = Object.InbufferCount

Lnh ny s tr v s k nhn c trong b m vo bin Var, xo b m nhn bng cch cho Object.InbufferCount = 0. Object.Output = [value]

Value c th l s hay ch,hay chui.. . . nhng tt c u c truyn i bng m ascii ca k t.V d: Mscomm1.Output = 5 , th lc s c my tnh truyn i l #35H chnh l m ascii ca s 5. Cng tng t vy nu truyn s 55 th n s gi i 2 byte #35H v #35H lin tip nhau.- Object.Rthreshold = [number]

Number = 0 1024. Lnh ny cho php ta thit lp nhn number k t th s gi chng trnh phc v ngt nhn.

V d : Mscomm1.Rthreshold = 3 , mi ln nhn c 3 k t th s gi chng trnh phc v ngt 1 ln. Gn bng 0 ng ngha vi vic khng gi chng trnh ngt.

- Object.Sthreshold = [number]

Tng t nh trn, y ta t s byte truyn i gi chng trnh phc v ngt pht. Ni chung lnh ny t c s dng, ch trong 1 s trng hp c bit mi dng. V d ta mun truyn 1 chui d liu nhng mun rng c truyn 3 k t th s dng 1 khong 200ms. bn lm cch no? hy th suy ngh gii thut thi !

Chng trnh phc v ngt (c truyn v nhn) c vit trong procedure sau :

Private Sub MSComm1_OnComm()

...........

End Sub

Bn c th double click vo biu tng ci in thoi trn form vit code cho chng trnh ngt. Vn l lm sao bit l ngt truyn hay ngt nhn?

Bn c th bit iu bng cch kim tra thuc tnh sau:

If Mscomm1.CommEvent = ComEvReceive then ..... Ngt nhn

If Mscomm1.CommEvent = ComEvSend then ...... Ngt pht

OK vy l ta c kin thc c bn thao tc vi truyn thng RS232 bng Visual Basic. Gi chng ta s cng nhau lm mt s v d t d n kh hiu r vic truyn nhn d liu bng my tnh nh th no !V d 1: Vit chng trnh Visual Basic truyn 1 k t t vi iu khin, sau nhn li 1 k t v hin th

Bn thit k 1 form c dng sau : Text 1 cha k t truyn i mi khi nhn nt Send . Text 2 cha k t nhn c.

Sau y l code v gii thch chng trnh :

V d trn tht l n gin phi khng bn? Ch l cc thit lp c bn truyn thng RS232 v mnh cng gii thch r tng lnh. Tip theo ta s xt thm 1 v d na.

V d 2: Vit chng trnh truyn kch thc cho my v , l chiu di v chiu rng ca hnh ch nht c kch thc t 0 100 (cm) . My v sau khi nhn c c hai kch thc th s gi li k t ! confirm. Nu sau 5s sau khi truyn m khng thy replay th bo my v b li. Trong thi gian ch confirm ca vi iu khin th my tnh khng c php ra lnh v cho n khi nhn k t !.Bn thit k form c dng nh sau :

Ta thit k thm 2 ci n bo bo trng thi ca my v, 1 n bo my v sn sang nhn lnh : xanh l OK, l ang x l, 1 n bo li : xanh l OK, l b li.V d 3: Vit chng trnh my tnh iu khin v gim st 2 vi iu khin. Mt vi iu khin nhn nhit (100-200oC) thit lp t my tnh iu khin in tr nung v o nhit bng Thermocouple qua knh ADC. Vi iu khin kia nhn tc (1000-5000 vng/pht) thit lp t my tnh v o tc thng qua Encoder v truyn v my tnh.( y chnh l bi ton my tnh gim st nhiu vi iu khin m ti tng cp trn).

My tnh

Vi iu khin

TXD

TXD

RXD

RXD

GND

D0

D1

D2

D3

D4

D5

D6

D7

P

Stop

Mc 1

Mc 0

Page 4 of 12