1 / 49

Master-slave komunikacija realizovana korišćenjem RS485 interfejsa

Master-slave komunikacija realizovana korišćenjem RS485 interfejsa . Predmet : Mikroprocesorski sistemi Predmetni nastavnik: Prof. dr. Mile Stojčev. Projektni zadatak. Realizovati protokol koji ostvaruje master-slave komunikaciju između 3 uređaja na zajedničkoj magistrali

nhi
Download Presentation

Master-slave komunikacija realizovana korišćenjem RS485 interfejsa

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Master-slave komunikacija realizovana korišćenjem RS485 interfejsa Predmet: Mikroprocesorski sistemi Predmetni nastavnik:Prof. dr. Mile Stojčev

  2. Projektni zadatak • Realizovati protokol koji ostvaruje master-slave komunikaciju između 3 uređaja na zajedničkoj magistrali • Protokol mora imati neku vrstu provere greške prilikom prenosa • Treba se realizovati mogucnost broadcast slanja

  3. Načini prenosa podataka

  4. Podela po broju bitova koji se prenose u jednom trenutku Serijski prenos Paralelni prenos Podela po načinu sinhronizacije Sinhroni prenos Asinhroni prenos Nacini prenosa podataka

  5. Paralelni prenos Brži Potrebno više linija Moraju imati sinhronizaciju (handshake) Serijski prenos Sporiji Bit po bit Moze biti i asinhron Nacini prenosa podataka

  6. Sinhroni prenos podataka • Korišćenje sinhronizacionih signala na nivou takta • Predajnik generiše taktni signal koji je… • Prenet do prijemnika bilo preko posebnog kanala ili… • Direktno regenerisan od strane prijemnika iz dolazećeg signala

  7. Asinhroni prenos podataka • Predajnik može u bilo kom trenutku generisati bitove • Asinhroni prijemnik ne regeneriše takt na osnovu dolazećeg signala • Početak i kraj rada prijema : metod start-stop • Predajnik i prijemnik koriste posebne taktne impulse čije su frekvencije veoma bliske jedna drugoj

  8. Vrste serijskog prenosa • Simpleks (simplex) • Polu Dupleks (half-duplex) • Potpuni dupleks(full-duplex)

  9. RS485

  10. RS485 • Serijski • Asinhroni • Polu-dupleks i Potpuni-dupleks • Diferencijalni linijski predajnici i prijemnici

  11. RS485 • Dvosmerna komunikacija većeg broja uređaja vezanih na jedan vod • Upredene parice Zc=100Ωdo Zc=120Ω • Do 32 predajna stepena i 32 prijemnika • Rastojanje do 1200 metara

  12. RS485 • Osobine diferencijalnih signala omogućavaju visok imunitet na šum i komunikaciju na velikim rastojanjima • RS-485 mreža komunicira sa naponima od -7V do +12V • Binarni protok do 10 Mb/s

  13. RS485 • Završna impedansa • Polarizacija

  14. RS485 • SN75176B drajver • Potrošnja drajvera je do 60mA • Napon napajanja je 5V

  15. RS485 • Električna šema ulaza(D,DE,RE) portova (A,B) i izlaza (R)

  16. Provera tačnosti prenosa

  17. Provera tačnosti - čeksuma • karakter provere (check character checksum) • jednostruka preciznost (single precision checksum) • dvostruka preciznost (double precision checksum) • Honeywell (Honeywell checksum) • ostatak (residue checksum)

  18. Čeksuma – karakter provere • Svakom karakteru se dodeljuje decimalna vrednost • Decimalne vrednosti svakog karaktera u poruci se zajedno sabiraju . • Ovaj karakter se pridružuje na kraju poruke u obliku redundantnih bitova i vrši se predaja

  19. Čeksuma – jednostruka preciznost • Čeksuma se izračunava binarnim sabiranjem podataka u okviru poruke • Carry out • Čeksuma kod sabiranja u običnoj preciznosti predstavlja samo LS bajt aritmetičke sume binarnih podataka koji se prenose • Korišćena u projektu

  20. Čeksuma – jednostruka preciznost H E L L O 48 45 4C 4C 4F H E L L O CHSUM 48 45 4C 4C 4F 74 LS bajt je 74 h

  21. Čeksuma – dvostruka preciznost • Čeksuma je suma obima 2n bitova • Ako podatke čine 8-bitni karakteri, čeksuma će biti 16-bitna, čime se smanjuje verovatnoća generisanja pogrešne čeksume

  22. Honeywell čeksuma • Čeksuma je obima 2n bitova • Čeksuma se formira preplitanjem uzastopnih reči podataka sa ciljem da se dobiju reči dvostruke dužine • Reči dvostruke dužine se sabiraju zajedno pa se formira čeksuma dvostruke preciznosti

  23. Čeksuma ostatak • Prividno identična čeksumi jednostruke preciznosti • Razlika: ostatak bit prenosa se dodaje LS bajtu sume • Za primer malopre, čeksuma ostatak se formira dodavanjem 1 vrednosti 74 h, pa se dobija 75 h

  24. Opis sistema

  25. TASTERI DISPLEJ MASTER LED DIODE RS485 magistrala SLAVE 1 SLAVE 2 LED DIODE LED DIODE Blok šema sistema

  26. Opis blok šeme • Koristi se RS485 interfejs • Polu – dupleks • Master slave komunikacija • Displej i tastatura za komunikaciju sa korisnikom • User – frendly meny • Moguće adresiranje jednog ili svih uređaja (broadcast) • Detekcija greške čeksumom jednostruke preciznosti • Detekcija prisutnosti uređaja time-out funkcijama

  27. Električna šema jednog bloka

  28. Blok šema PCB ploče

  29. Komunikacioni protokol • Format poruke Start karakterAscii '!' HEX '0x21' Adresa pošiljaoca Ascii 00 do FF00 je rezervisana za master, a FF za broadcast Adresa primaoca Ascii 00 do FF PodaciAscii poruka Čeksuma Ascii Dvobajtna reprezentacija čeksume jednostruke preciznosti End karakterAscii '@' HEX '0x40'

  30. Primer komuniciranja sa jednim uređajem Neka poruka bude oblika: !0100D32A@ ascii tj 21 30 31 30 30 44 33 32 40 u HEX obliku. • Slave prima prvi karakter (!) koji je prepoznao kao start karakter, i sada očekuje poruku • Upisuje poruku u buffer dok ne stigne @, nakon čega je spremna obrada poruke • Upoređuje se adresa koja je stigla sa adresom u memoriji • Slave1 prepoznaje da je poruka za njega • Proverava da li je checksum ok • Ukoliko je sve u redu, smešta adresu onoga koji je slao (00) na adresu za slanje (za odgovor) • Prepoznaje se D3 kao naredba da se upale određene diode • Šalje se odgovor Masteru (adresi 0)

  31. Primer broadcast slanja Neka poruka bude oblika: !FF00D32A@ ascii Koraci 1 .. 3 su isti kao i za slanje jednom uređaju • Prepoznaje se broadcast adresa (FF) • Proverava se checksum • Ukoliko je sve u redu, smešta se adresa onoga koji je slao (00) na adresu za slanje (za odgovor) • Prepoznaje se D3 kao naredba da se upale određene diode • Generiše se slučajna vrednost • Čeka se određeno vreme u zavisnosti od slučajne vrednosti • Šalje se odgovor Masteru (adresi 0)

  32. Meni za upravljanje uređajem • Koristi se dvoredni displej sa 16 karaktera u redu • Upravljanje uređajem se vrši pomoću 2 tastera • Bira se adresa uređaja kome se šalje i raspored dioda koje treba upaliti • Nakon inicirane komunikacije prikazuje se status (uspešna ili neuspešna komunikacija)

  33. Software

  34. start inicijalizacija while (1) switch taster pritisnut enter pritisnut select switch stanje switch stanje Biranje adrese uredjaja (2) slanje podataka (3) start ekran (1) (1) (2) (3) Set displej Adresa = counts Poruka = counts Counts++ Counts++ Stanje = 1 F F Stanje = 2 Set displej Set displej counts > 4 counts > 8 Stanje = 3 Iniciranje slanja Counts = 0 Counts = 0 Cekanje odgovora Set displej Set displej T F Switch taster Kom = OK Kom = err Stanje = 1 Algoritam programa za master modul

  35. start inicijalizacija while (1) primljena poruka ? databuf[0] = ‘!” databuf[1..2] = my address format poruke OK obrada poruke i promena stanja na diodama odgovor “OK” ERROR Algoritam programa za slave modul

  36. ORG 0 LJMP INIT ;************ INICIJALIZACIJA ********* ;************************************** ORG 30H INIT: MOV SP, #STCK MOV R0,#7FH MOV A,#00H FILL00: MOV @R0,A ; INT MEM =00 DJNZ R0, FILL00 CLR EN485TX ; RS485 U RECEIVE MODU CLR SEL_EN ; DRUGI KRAJ SELECT TASTERA NA MASU CLR ENT_EN ; DRUGI KRAJ ENTER TASTERA SETB STAT.MASTER LCALL SERINI LCALL RANDOM_INIT Inicilizaciona sekvenca ; ****** INIT INTERNOG UARTA ********** ;*************************************** SERINI: MOV A,#0FDH ; 9600 MOV TH1, A ; SET TIMER 1 TO SELECTED BAUD RATE MOV TMOD,#20H ; SET TIMER 1 TO AUTO RELOAD MODE MOV TCON,#0C0H ; START TIMER 1 MOV SCON,#52H ; EN.SER.RECEIVE ; 8N1; TI=1 RET

  37. MAIN: MOV COUNTS, #0 MOV COUNTE, #0 MOV A, #080H LCALL DCOMW MOV DPTR, #MSG2 LCALL DSTRW MOV A, #0C0H LCALL DCOMW MOV DPTR, #MSG3 LCALL DSTRW MOD0: JNB SELECT, SEL_PRESS JNB ENTER, ENT_PRESS SJMP MOD0 SEL_PRESS: MOV R7,#30 ; 30mS - VIBRACIJA TASTERA LCALL WAIT1 LCALL OBR_SEL JNB SELECT, $ ;SACEKAJ DA SE PUSTI TASTER MOV R7,#60 ; 60mS - VIBRACIJA TASTERA LCALL WAIT1 SJMP MOD0 ENT_PRESS: MOV R7,#30 ; 30mS - VIBRACIJA TASTERA LCALL WAIT1 LCALL OBR_ENT JNB ENTER, $ ;SACEKAJ DA SE PUSTI TASTER MOV R7,#60 ; 60mS - VIBRACIJA TASTERA LCALL WAIT1 SJMP MOD0 Master – glavna petlja

  38. Master – obrada tastera enter ;****** OBRADA TASTERA ENTER ************ OBR_ENT: MOV A, COUNTE XRL A, #00H JZ ENT1 ;TRUE= PRELAZI U STANJE 1 MOV A, COUNTE XRL A, #01H JZ ENT2 ;TRUE= PRELAZI U STANJE 2 MOV A, COUNTE XRL A, #02H JZ ENT0 ;TRUE= PRELAZI U STANJE 0 • Postoje 3 stanja • Glavno stanje (biranje adreae uređaja) ENT0 • Biranje rasporeda dioda ENT1 • Slanje poruke ENT2

  39. Master – obrada tastera enter ENT0: MOV COUNTE, #00H ; MOV A, #PRVIR ; LCALL DCOMW ; MOV DPTR, #MSG2 ; LCALL DSTRW ; MOV A, #DRUGIR ;VRATI START EKRAN LCALL DCOMW ; MOV DPTR, #MSG3 ; LCALL DSTRW ; LJMP EXITENT ; ENT1: MOV COUNTE, #01H MOV ADRX, COUNTS ;STAVI U ADRESU ZA SLANJE MOV S_ADR, COUNTS ;STAVI U ADRESU ZA PROVERU ODGOVORA MOV A, #DRUGIR LCALL DCOMW MOV A, #ST LCALL DDATAW MOV A, #PRVIR LCALL DCOMW MOV A, #' ' LCALL DDATAW LJMP EXITENT ENT2: MOV COUNTE, #02H MOV A, #DRUGIR+8 LCALL DCOMW MOV DPTR, #MSG7 ;STAVI ...... LCALL DSTRW MOV A, COUNTS XRL A, #08H ;DA LI JE SLANJE PAKETA? JNZ ENT3 MOV COMDATA, #'M' ;SLANJE PAKETA..... MOV COMDATA+1, #00H SJMP ENT4

  40. Master – slanje paketa i provera odgovora za slanje jednom uređaju ENT4: LCALL INITTI ;INICIRAJ TRANSMIT MOV A, S_ADR XRL A, #0FFH ;DA LI JE BROADCAST? JZ RNDCHK ENT5: MOV T_OUT, #0FFH ; CEKAJ 0.5S NA ODGOVOR LCALL GETDATA JC ENT20 ;DA LI JE PRIMLJENA ISPRAVNA PORUKA ZA MENE? ENT22: MOV A, #DRUGIR+8 LCALL DCOMW ;NIJE MOV DPTR, #MSG4 LCALL DSTRW MOV A, S_ADR LCALL HEXTOA LCALL DDATAW SJMP EXITENT ENT20: MOV A, COMDATA ;JESTE, PROVERI DA LI JE FORMAT 'OK' XRL A, #'O' JNZ ENT22 MOV A, COMDATA+1 XRL A, #'K' JNZ ENT22 MOV A, ADRX XRL A, S_ADR JNZ ENT22 ;ERROR ENT21: MOV A, #DRUGIR+8 LCALL DCOMW MOV DPTR, #MSG5 ;OK JE LCALL DSTRW EXITENT: MOV COUNTS, #00H RET

  41. Master –provera odgovora za broadcast slanje RNDCHK: MOV STREC, #00H MOV T_OUT, #00H SETB TR2 MOV R1, #22 RND1: JB RI, JTOGET JNB TF2, RND1 CLR TF2 DJNZ R1, RND1 CLR TR2 JB STREC.U1, RND4 MOV A, #DRUGIR+8 LCALL DCOMW MOV DPTR, #MSG10 LCALL DSTRW RND4: JB STREC.U2, EXITENT MOV A, #DRUGIR+11 LCALL DCOMW MOV DPTR, #MSG11 LCALL DSTRW SJMP EXITENT JTOGET: LCALL GETBR JNC RND1 MOV A, ADRX CJNE A, #01H, RND2 SETB STREC.U1 MOV A, #DRUGIR+8 LCALL DCOMW MOV DPTR, #MSG8 LCALL DSTRW RND2: MOV A, ADRX CJNE A, #02H, RND3 SETB STREC.U2 MOV A, #DRUGIR+11 LCALL DCOMW MOV DPTR, #MSG9 LCALL DSTRW RND3: SJMP RND1

  42. Master – obrada tastera select OBR_SEL: MOV A, COUNTE XRL A, #00H JZ SEL0 ;TRUE= ENTER STANJE 0 MOV A, COUNTE XRL A, #01H JZ SEL1 ;TRUE= ENTER STANJE 1 MOV A, COUNTE XRL A, #02H JNZ SEL0 LJMP SEL2 ;TRUE= ENTER STANJE 2 • U zavisnosti od stanja u kom se nalazi meni, tasterom select se menja ili adresa uređaja, ili raspored dioda koje treba upaliti

  43. Master – obrada tastera select OBR_SEL: MOV A, COUNTE XRL A, #00H JZ SEL0 ;TRUE= ENTER STANJE 0 MOV A, COUNTE XRL A, #01H JZ SEL1 ;TRUE= ENTER STANJE 1 MOV A, COUNTE XRL A, #02H JNZ SEL0 LJMP SEL2 ;TRUE= ENTER STANJE 2 SEL0: INC COUNTS MOV A, COUNTS CJNE A, #03H , SEL01 MOV COUNTS, #0FFH ;BROADCAST ADRESA FF MOV A, #PRVIR+10 LCALL DCOMW MOV DPTR, #MSG1 LCALL DSTRW SJMP SELEND SEL01: MOV A, #PRVIR+10 LCALL DCOMW MOV A, COUNTS LCALL HEXTOA LCALL DDATAW MOV A, #' ' LCALL DDATAW ;DVA PRAZNA MESTA LCALL DDATAW SJMP SELEND SEL1: INC COUNTS MOV A, COUNTS CJNE A, #09H, SEL12 MOV COUNTS, #00H SEL12: MOV A, #DRUGIR+11 LCALL DCOMW MOV A, COUNTS JB 3, SEL10 ;VECI JE OD 7H; NIJE ZA DIODE JB 2, SEL5 MOV A, #OFF LCALL DDATAW SJMP SEL6 SEL5: MOV A, #ON LCALL DDATAW SEL6: MOV A, COUNTS JB 1, SEL7 MOV A, #OFF LCALL DDATAW SJMP SEL8 SEL7: MOV A, #ON LCALL DDATAW SEL8: MOV A, COUNTS JB 0, SEL9 MOV A, #OFF LCALL DDATAW SJMP SELEND SEL9: MOV A, #ON LCALL DDATAW SJMP SELEND SEL10: MOV DPTR, #MSG6 LCALL DSTRW SJMP SELEND SEL2: LJMP ENT0 ;KAO DA JE PRITISNUT ENTER SELEND: RET

  44. Slave – glavna petlja SLAVE: MOV T_OUT, #00H LCALL GETDATA JNC SLAVE MOV A, COMDATA XRL A, #'D' ;UPALI DIODE JZ KOMAND1 MOV A, COMDATA SJMP SLAVE KOMAND1: MOV A, COMDATA+1 LCALL ATOHEX SWAP A RL A CPL A ORL A, #1FH MOV P2, A MOV A, S_ADR MOV S_ADR, #00H XRL A, #0FFH JNZ KOM11 LCALL RANDOM ANL A, #7FH MOV R4, A LCALL WAIT10 KOM11: MOV COMDATA, #'O' MOV COMDATA+1, #'K' MOV COMDATA+2, #00H LCALL INITTI LJMP SLAVE

  45. Potprogrami koji su korišćeni u master i/ili slave programu • Funkcije za čekanje: • wait 1 ms – WAIT1 • wait 10 ms – WAIT10 • Funkcije za konverziju podataka: • ascii u hex – ATOHEX • hex u ascii – HEXTOA • Funkcije za upravljanje displejom • inicijalizacija displeja – DISPINI • pošalji komandu – DCOMW • pošalji karakter – DDATAW • pošalji niz karaktera – DSTRW • ispitavanje da li je slobodan displej – WTBUSY • kreiranje simbola – CHAR_SET • Funkcije za slanje i primanje podataka: • Inicijalizacija serijskog porta – SERINI • primi podatke – GETDATA • pošalji podatke – INITTI • Funkcije za generisanje nasumičnih vrednosti • random init – RANDOM_INIT • random - RANDOM

  46. O autorima – Sanja Tomić

  47. O autorima – Stevan Marinković

  48. O autorima – Stevan Marinković

  49. Hvala na pažnji

More Related