1 / 43

Primena tajmera, brojača i pomeračkih registara u PLC-ovima

Primena tajmera, brojača i pomeračkih registara u PLC-ovima. Predmet : Mikroprocesorski sistemi. Student: Milan Gikić, 9596. Programibilni logički kontroleri.

peony
Download Presentation

Primena tajmera, brojača i pomeračkih registara u PLC-ovima

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. Primena tajmera, brojača i pomeračkih registarau PLC-ovima Predmet: Mikroprocesorski sistemi Student: Milan Gikić, 9596

  2. Programibilni logički kontroleri • Definicija:Programibilni logički kontroleri (PLC- Programmable Logic Controller) su industrijski kontroleri specijalne namene koji se koriste za upravljanje različitih tipova fabričkih mašina i sistema. • Alternativna definicija bi bila:PLC je specijalizovan elektronski uredjaj zasnovan na jednom ili većem broju mikroprocesora koji se koriste za upravljenje industrijskih mašina. Proizvodi firme Allen Bradley Tipična arhitektura Student: Milan Gikić, 9596

  3. Relejna lestvičasta logika Sekvencijalni upravljački sistemi nazvani relejna-lestvičasta logika (relay ladder logic) su dugo godina, sve do pojave prvih PLC-ova, bili jedini upravljački sistemi koji su se koristili u industriji. Da bi shvatili kako PLC obavlja svoj zadatak, neophodno je dobro razumeti rad releja i relejno-lestvičaste logike. Na slici je prikazano pet tipova releja i identifikovani su svi delovi ove elektromehaničke komponente. Elektromehanički releji Student: Milan Gikić, 9596

  4. Elektromehaničko rele Elektromehaničko rele čine sledeće tri komponente: 1. Elektromagnet- to je magnet koji se kreira (formira) prolaskom struje kroz žice namotane oko gvozdenog jezgra. 2. Armatura- to je obešena metalna ploča koja se nalazi iznad kalema. Ploča se privlači ka elektromagnetu kada se kalem aktivira (pobudi). Kada kalem nije aktiviran, opruga udaljava armaturu od kalema. 3. Kontakti- kreiraju jedan električni put izmedju normalno-zatvorenih kontakata (NC – Normally Closed contacts), a drugi električni put preko normalno-otvorenih kontakata (NO- Normally Open conatcts) kada je kalem aktiviran (armatura naniže). Standardni simboli za jedno-polne releje sa dva kontakta Student: Milan Gikić, 9596

  5. PLC sistem Blok dijagram PLC sistema je prikazan na slici desno. Srce PLC-a je PLC-procesor. Procesor je okružen ulaznim modulima na levoj strani slike, izlaznim modulima na desnoj, i napajanjem sa gornje strane. Programiranje PLC-a se može obaviti na sledeća tri načina: a) manuelno pomoću ručnog programera; b) direktno preko povezane PC mašine; i c) pomoću računara preko mrežne konekcije. Blok dijagram PLC sistema Student: Milan Gikić, 9596

  6. PLC sistem PLC komunicira sa ulazno-izlaznim uredjajima preko ulazno-izlaznih (U/I) modula. S obzirom da je broj U/I uredjaja koji se povezuju na PLC sistem dosta veliki, specifičan, i raznorodan u odnosu na njihov princip rada, to znači da će biti veliki broj i U/I modula koji se povezuju na procesor. U/I interfejs koji se koristi kod PLC-a može da ima jedan od sledeća dva oblika: a) fiksni b) modularni Blok dijagram PLC sistema Student: Milan Gikić, 9596

  7. PLC tipovi U zavisnosti od operativnih karakteristika PLC-ovi se mogu grupisati u sledeće kategorije: a. rack ili adresno-zasnovani sistemi; b. tag- zasnovani sistemi; i c. soft-PLC-ovi ili PC-zasnovani sistemi. Kod rack/slot adresno-baziranih sistemaslot lokacije ulazno-izlaznih modula u rack-u definišu PLC adrese ulazno-izlaznih signala koji su povezani na taj modul. Fizički, ulazno-izlazni moduli, standardno, se smeštaju u rack-u desno u odnosu na procesor. Student: Milan Gikić, 9596

  8. PLC tipovi Tag-zasnovani PLC-ovi se koriste kod svih adresno zasnovanih modela PLC-ova. Tipično su to PLC-ovi iz familije Control-Logix kompanije Allen Bradley, ili neki slični PLC-ovi kompanija Telemecanique i Siemens. Tag ime koje se koristi kod ovih sistema je isto kao i promenljiva deklarisana kod viših programskih jezika kakav je C. Kod ovog tipa adresnih sistema, ulazima i izlazima field uredjaja, u trenutku projektovanja sistema upravljanja, dodeljuju se imena promenljivih (variable names). Kompanija Allen Bradley koristi termin tag umesto variable. Kasnije ime promenljive (variable) ili tag se dodeljuje ulazno-izlaznom modulu i specifičnom terminal broju. Tag je jedina referenca koja se koristi kada se razvija program koristeći se (pomoću) PLC-ovog ladder logičkog programa. Kada se tag-ovi ili variable-e definišu, deklariše se i tip podataka koji se prestavlja od strane tag-a. PC-bazirani upravljački sistemi, alternativno nazvani soft PLC-ovi, predstavljaju emulaciju PLC-a koja se izvodi softverom PC-mašine. Ova implementacija koristi industrijsku PC-mašinu, U/I karticu za spregu sa field uredjajem, i aplikacioni softver koji čini da se PC-mašina ponaša kao PLC. Student: Milan Gikić, 9596

  9. PLC tipovi Jedan drugi tip implementacije koristi standardni PLC sa industrijskim PC-modulom smešten u jednom od PLC rack-slotova. Kod ove verzije PC ima pristup backplane-u a time i svim U/I modulima u PLC rack-u. Soft PLC rešenje koriste jednu od pomenute dve implementacije. U principu soft PLC-ovi predstavljaju dobar projektanski izbor kod onih rešenja gde se zahteva velika memorija za čuvanje podataka, intezivnije matematičke manipulacije u toku upravljanja procesom, kao i grafički prikaz procesa. Student: Milan Gikić, 9596

  10. Prednosti PLC-ova PLC ladder logika ima veći broj prednosti u odnosu na konvencionalnu relejnu logiku, a koje se ogledaju u sledećem: • jednostavnije i preglednije ožičavanje • jednostavnije i preglednije ožičavanje • veća pouzdanost – mehanički releji i elektro-mehanički uređaji su daleko nepouzdanije komponente u odnosu na softver • efikasnije je održavanje i brže se nalaze kvarovi • off-line programiranje – ranije PLC-ovi su se programirali preko specijalnih programskih kontrolera koji su bili isporučivani od strane proizvođača. Današnji sistemi koriste mikroračunare, obično PC mašine, kao mašine za programiranje. Nova programska softverska sredstva omogućuju da se program za PLC razvije na samoj PC mašini, zatim testira pomoću emulatorskog softvera i pronađu greške u programiranju pre nego što se instalira softver u PLC-u. Nove verzije softvera omogućavaju da se PLC download-uje preko serijske konekcije, ili preko Internet-a. Kod najvećeg broja aplikacija, programiranje za datu aplikaciju se obavlja koristeći hardverske i softverske resurse PC mašine dok se sam proces programiranja izvršava na taj način što se program upisuje u memoriju PLC-a. Ovaj proces se naziva off-line programiranje, a omogućava da se PLC programira bez da se on vadi iz rack-a, tj. odstranjuje od procesa upravljanja. Student: Milan Gikić, 9596

  11. Prednosti PLC-ova • on-line programiranje –ovaj način programiranja omogućava programeru da edituje ladder logičke prečage (rungs) dok PLC izvršava program. Promene se izvode u specijalnom on-line režimu rada, a kada su promene u potpunosti obavljene nova ladder logika postaje aktivni deo tekućeg ladder programa. • širi krug aplikacija –PLC softver podržava širi opseg analognih i diskretnih aplikacija na koje nailazimo kod upravljanja u industrijskim postrojenjima. • niske cene i male dimenzije –cena i gabarit PLC-a su značajno smanjeni zadnjih 10 godina. Recimo, cena jednog mikro-PLC-a je reda $300. • mogućnosti upravljanja PLC-a –zahvaljujući ugradnji savremenih VLSI IC-ova a i sve efikasnijeg softvera mogućnosti novijih verzija PLC-ova su zaista impresivne. Pored ostalog omogućeno je kreiranje mrežno-distribuirano upravljanje i povezivanje na Internet. Student: Milan Gikić, 9596

  12. TAJMERI U mnogim kontrolnim zadacima postoji potreba za kontrolisanjem vremena. Na primer, motor ili pumpa mogu biti kontrolisani tako da rade u određenom vremenskom intervalu, ili možda da se uključe posle određenog vremenskog intervala. PLC-ovi zbog toga imaju tajmere kao ugrađene komponente. Tajmeri broje delove sekunde ili sekunde koristeći unutrašnji takt CPU-a. Ovo poglavlje pokazuje kako takvi tajmeri kogu biti programirani da izvršavaju kontrolne zadatke. Tipovi tajmera Postoji nekoliko različitih oblika tajmera: 1. on-delay tajmeri(TON) - tajmeri koji nastupaju posle određenog vremenskog kašnjenja 2. off-delay(TOF) – tajmeri koji su uključeni u fiksnom vremenskom periodu pre isključivanja 3. pulse tajmere(TP) – tajmer koji se uključuje ili isključuje u fiksnom vremenskom periodu Tajmeri: (a) On-delay, (b) Off-delay, (c) Pulse Student: Milan Gikić, 9596

  13. Programibilni tajmeri Sledeće slike prikazuju ladder dijagrame raznih proizvođača: (a) Mitsubishi, (b) Siemens (c) Telemecanique, (d) Toshiba (e) Allen-Bradley Student: Milan Gikić, 9596

  14. Primer programiranja tajmera Kao ilustracija programiranja koje uključuje tajmere razmatramo semafor koji daje sekvencu crveno, crveno i žuto, zeleno, žuto, a zatim se ponavlja. Jednostavan sistem može samo imati sekvencu koja se vremenski okida, gde se sva moguća stanja javljaju u sekvenci u fiksnom vremenskom intervalu. Slika prikazuje sekvencijalni funkcijski dijagram i mogući ladder program za datu sekvencu. Sekvenca semafora Student: Milan Gikić, 9596

  15. BROJAČI Brojači su dati kao ugrađeni elementi u PLC-ovima i omogućavaju brojanje pojavljivanja ulaznih signala.Ovo je potrebno gde moramo brojati objekte kao npr. kada oni prolaze duž prenosne trake, ili broji obrtaje osovine, ili broj ljudi koji prolaze kroz vrata. Ovo poglavlje opisuje kako takvi brojači mogu biti programirani. Tipovi brojača Postoje dva tipa brojača, mada PLC-ovi ne moraju imati oba tipa: 1. Brojači naniže (CD) broje naniže od zadate vrednosti do nule, tj. događaji se oduzimaju od podešene vrednosti. Kada brojač dostigne nulu njegovi kontakti menjaju stanje. Većina PLC-ova nude brojanje naniže. 2. Brojači naviše (CU) broje od nule do zadate vrednosti, tj. događaji se sabiraju sve dok broj ne dostigne zadatu vrednost. Kada brojač dostigne podešenu vrednost njegovi kontakti menjaju stanje. Različiti proizvođači PLC-ova se ophode prema brojačima na različite načine. Neki broje naniže (CTD) ili naviše (CTU), i resetuju odnosno tretiraju brojač kao da je namotaj relea odnosno izlaz prečage. Na ovaj način brojači se mogu razmatrati kao da se sastoje od dva osnovna elementa: jedan namotaj relea za brojanje ulaznih impulsa i jedan za resetovanje brojača, odgovarajući kontakti brojača koji se koriste u drugim prečagama. Student: Milan Gikić, 9596

  16. Programiranjebrojača Na sledećoj slici su prikazani programi i lista naredbi kod kod različitih proizvođača. (a) Mitsubishi, (b) Siemens, (c) Toshiba, (d) Allen-Bradley programi Student: Milan Gikić, 9596

  17. Primer brojanja naviše i naniže Moguće je programirati brojače koji imaju mogućnost da broje naviše i da broje naniže. Razmotrimo zadatak brojenja proizvoda kako dolaze na pokretnu traku i kako je napuštaju, ili možda automobile kako ulaze na parkiralište i kako ga napuštaju. Izlaz se okida ako broj objekata/automobila koji ulaze je neki broj veći od broja koji napuštaju, tj. broj na parkiralištu je dostigao vrednost zasićenja. Izlaz može biti osvetljeni znak ’Nema praznih mesta’. Pretpostavimo da koristimo brojač naviše za objekte koji ulaze i brojač naniže za objekte koji izlaze. (a) Korišćenje borjača naviše i naniže, (b) Allen-Bradley program Student: Milan Gikić, 9596

  18. Primer brojanja naviše i naniže Slika (a) prikazuje osnovni oblik ladder programa za takvu jednu primenu. Kada objekat uđe, on daje impuls na ulazu In 1. Ovaj povećava sadržaj brojača za jedan. Stoga svaki objekat koji uđe povećava akumuliran sadržaj za jedan. Kada jedan objekat odlazi on daje ulaz na In 2. Ovaj oduzima broj za jedan. Stoga se svaki objekat koji napušta oduzima od akumuliranog sadržaja za jedan. Kada akumulirana vrednost premaši zadatu vrednost, izlaz Out 1 se uključuje. Slika (b) prikazuje implementaciju ovog programa sa Allen-Bradley programom. (a) Korišćenje borjača naviše i naniže, (b) Allen-Bradley program Student: Milan Gikić, 9596

  19. POMERAČKI REGISTRI Pojam registar se koristi za elektronski uređaj u kome se podaci mogu čuvati. Unutrašnji rele je takav uređaj. Pomerački registar je nekoliko unutrašnjih relea grupisanih zajedno koji omogućuje pomeranje memorisanih bitova sa jednog relea na drugi. Ovo poglavlje govori o pomeraačkim registrima i kako oni mogu biti korišćeni gde se zahteva redosled operacija ili da obeleži posebne delove u sistemu proizvodnje. Registar je nekoliko unutrašnjih relea zajedno grupisanih, obično 8, 16 ili 32. Svaki unutrašnji rele je ili otvoren ili zatvoren, i ova stanja bivaju označena kao 0 i 1. Pojam bit se koristi za svaki takav binarni digit. Registri mogu da se koriste za smeštanje podataka iz ulaznih izvora drugačijih od jednostavnih on-off uređaja kao što su prekidači. Student: Milan Gikić, 9596

  20. POMERAČKI REGISTRI Kod pomeračkih registara moguće je pomerati smeštene bitove. Pomerački registri zahtevaju tri ulaza, jedan da učita podatke na prvo mesto u registru, jedan kao naredba za pomeranje podataka za jedno mesto i jedan za resetovanje ili čišćenje registra od podataka. Zajedničko grupisanje unutrašnjih relea koji formiraju pomerački registar se radi automatski so strane PLC-a kada je funkcija pomeračkog registra izabrana. Kod Mitsubishi PLC-a, ovo se radi koristeći programski kod SFT (shift) na osnovu broja unutrašnjih relea koji treba da bude prvi u registarskom nizu. Ovo onda prouzrokuje blok relea, koji počinje od tog početnog broja, a koji je rezervisan za pomerački registar. Student: Milan Gikić, 9596

  21. Primer primene pomeračkog registra Jedna od primena pomeračkih registara je za održavanje razmaka između predmeta. Na primer, semzor se može koristiti da detektuje neispravne predmete koji se kreću duž pokretne trake i za održavanje razmaka između predmeta tako da kada dostigne odgovarajuću tačku mehanizam za izbacivanje se aktivira da ga ukloni sa pokretne trake. Slika ispod ilustruje ovo uređenje i tip ladder programa koji se može koristiti. Održavanje razmaka između neispravnih predmeta Student: Milan Gikić, 9596

  22. Primer primene pomeračkog registra Svaki put kada se otkrije neispravan predmet, impulsni signal se javlja na ulaz X400. On unosi 1 u pomerački registar na unutrašnjem releu M140. Kada se predmeti pomeraju, dali neispravni ili ne, postoji impuls na ulazu X401. On pomera 1 duž registra. Kada 1 dospe na unutrašnji rele M144, on aktivira izlaz Y430 i mehanizam za izbacivanje uklanja neispravan predmet sa transportne trake. Kada je predmet uklonjen javlja se ulaz na X403. On se koristi da resetuje mehanizam tako da se ne izbacuju nadalje predmeti sve dok se signal za izbacivanje ne javi na M144. On to čini dajući izlaz na unutrašnji rele M100 koji baferuje ulaz X403 i isključuje izlaz za izbacivanje Y430. Ovo su samo osnovni elementi sistema. Praktični sistem obuhvata druge unutrašnje relee kako bi se osiguralo da je mehanizam za izbacivanje isključen kada se ispravni predmeti kreću duž pokretne trake i takođe da onemoguće ulaz na X400 kada se javlja pomeranje. Student: Milan Gikić, 9596

  23. Mikrokontroler AT89S8253 Izgled mikrokontrolera AT89S8253 Student: Milan Gikić, 9596

  24. Kompatibilan je sa Microsoft-51 procesorom 12KB fleš memorija 2KB EEPROM memorija 64-bajtna korisnička matrica Napon napajanja od 2.7V do 5.5 V Frekvencija od 0 do 24 MHz Memorijsko zaključavanje u 3 nivoa 256 x 8-bitni unutrašnji RAM 32 I/O linije za programiranje Tri 16-bitna Tajmera/Brojača 9 generatora prekida Poboljšani UART serijski port sa centriranjem detekcije greške i automatskimprepoznavanjem adrese Poboljšani SPI serijski interfejs Male snage napajanja Uspostavljanje prekida u niskom režimu rada Programabilni tajmeri Dvostruki pokazivač podataka Isključivanje pomoću znaka (Power-off Flag) Fleksibilni ISP programator (Page mode: 64 byte/page za kodnu memoriju, 32 byte/page za memoriju podataka) 4-nivo poboljšani kontrolor prekida Programabilna x2 clock opcije Unutrašnji Power-on Reset 42-pin PDIP model kućišta za redukovanje EMS emisije Zelena (Pb/Holide-free) opcija kućišta Mikrokontroler AT89S8253 Karakteristike mikrokontrolera AT89S8253 Student: Milan Gikić, 9596

  25. Mikrokontroler AT89S8253 Na slici je prikazan blok dijagram mikrokontrolera AT89S8253. Ovde se vide komponente kao što su aritmetičko-logička jedinica (ALU) sa parom registara (TMP1, TMP2) za privremeno upisivanje podataka, akumulator (ACC) sa pomoćnim registrom B, statusni registar (PSW), registar naredbi sa dekoderom, programski brojač (PC) i registar za inkrementiranje (povećanje za 1) programskog brojaća (PC-incrementer). Blok dijagram mikrokontrolera AT89S8253 Student: Milan Gikić, 9596

  26. Hardverska realizacija Na sledećim slikama date su blok šeme elemenata smeštenih na PCB pločii raster ploči kao i izgled realizovanog hardvera. Blok šema elemenata smeštenih na PCB ploči Student: Milan Gikić, 9596

  27. Hardverska realizacija Blok šema elemenata smeštenih na raster ploči Student: Milan Gikić, 9596

  28. Izgled realizovanog hardvera Student: Milan Gikić, 9596

  29. Definisanje projektnog zadatka Na hardveru, konkretno na raster ploči, postoje osam push button-a (označenih sa P1, P2, P3, P4, P5, P6, P7 i P8 respektivno), kao i osam zelenih LED dioda (označenih sa D1, D2, D3, D4, D5, D6, D7 i D8 respektivno). Za projektni zadatak upotrebljeno je pet push button-a i svih osam LED dioda. Projektni zadatak je definisan u sledećih pet koraka: • kada se pritisne push buttonP1, dioda D1 se pali i svetli 2 s i onda se gasi; • kada se pritisne push buttonP2, posle 5 s dioda D2 se pali i svetli 2 s nakon čega se gasi; • kada se pritisne push buttonP3 i drži se pritisnutim, dioda D3 svetli, a kada se pusti dioda se gasi; • kada se pet puta pritisne push buttonP4, dioda D4 se pali, a kada se ponovo pet puta pritisne push buttonP4, dioda D4 se gasi; • kada se pritisne push buttonP5, onda se naizmenično pale diode D5, D6, D7, D8, pa zatim opet D5, D6, D7, D8, i ovaj ciklus se ponavlja dokle god se ponovo ne pritisne push buttonP5 i neko kratko vreme zadrži pritisnutim. Student: Milan Gikić, 9596

  30. Softverska realizacija Napisani program startuje sa glavnim programom (main), napisanim u C51 jeziku, u kome je proces inicijalizacije i ispitivanja pina P3.0. Za P3.0=1 aktivira se softver koji realizuje projektni zadatak paljenja i gašenja dioda što je u programu pokriveno fajlovim main.c, main_LED.src i delay.src. Delovi programa kojima je je pokrivena laboratorijska vežba su main.c, svetlo_zgrada.c i prekid_3min.c. //*Deo programa, u Keil-u označen kao fajl main.c u kome se vrši ispitivanje pina P3.0*// • #include <Definicija.h> • #include <REG8253.H> • extern code Init_Timer2(); • extern code Wait(); • extern code Floor_Light(); • sbit Taster = P3^0; • bit Status_modul; • void main (void) • { • Init_Timer2(); • Diode = 0x00; • while (1) • { • if (Taster==0) • { • Status_modul =1; • Floor_Light(); • while ( (Tasteri == 0xff)); //while ( !(Tasteri & 0x00) ); • } • else • { • Status_modul = 0; • Wait(); • } • } • } Student: Milan Gikić, 9596

  31. $NOMOD51 #include <REG8253.H> #include <Definicija.h> ; /***********************************************/ //NOVA VREDNOST JE 3F23hex odnosno 16163 dec odnosno 49 373 * 1,0127 us = 50000,0371 us == 50 ms #define MSB_reload_value 0x4B /* msb reload value za generisanje vremenskog prekida na 50 ms */ #define LSB_reload_value 0xFD /* lsb reload value za generisanje vremenskog prekida na 50 ms */ //#define MSB_reload_value 0x3F /* msb reload value za generisanje vremenskog prekida na 50 ms */ //#define LSB_reload_value 0x23 /* lsb reload value za generisanje vremenskog prekida na 50 ms */ #define Led_dioda_1_vreme 40 /*vreme od 40*50ms = 2s za diodu D1*/ #define Led_dioda_2_vreme 100 /*vreme od 100*50ms = 5s za diodu D2 nakon detektovanja da je taster pritisnut*/ #define Led_dioda_2_vreme_svetli 40 /*vreme od 40*50ms = 2s za diodu D2*/ EXTRN CODE (DELAY,Prekid_3_min) EXTRN BIT (Status_modul) PUBLIC Init_Timer2, Wait Flegovi segment bit Magacin segment idata rseg Magacin stack: DS 10 rseg Flegovi LED1: dbit 1 LED2: dbit 1 LED3: dbit 1 LED4: dbit 1 LED5: dbit 1 LED6: dbit 1 LED7: dbit 1 LED8: dbit 1 cseg at 002bh jmp Timer2_Interrupt /*Procedura za ispitivanje statusa Tastera definisana kroz petlju sto pruza mogucnost generisanja procedure za bilo koji Taster i odgovarajucu diodu*/ Wait: jnb Taster_5,$ Wait1: mov a,Tasteri cjne a,#0xFF,Taster_pritisnut jmp Wait1 Pritisnut: jnb Taster_5,Wait Ret /*Ispitivanje koji je Taster pritisnut i preduzimanje odogovarajuceg algoritma za dati taster*/ Taster_pritisnut: Ispitaj_1: jb Taster_1,Ispitaj_2 jnb Taster_1,$ setb Led_1 setb TR2 setb LED1 mov R3,#Led_dioda_1_vreme jmp Idle Ispitaj_2: jb Taster_2,Ispitaj_3 jnb Taster_2,$ setb TR2 setb LED2 mov R3,#Led_dioda_2_vreme jmp Idle Ispitaj_3: jb Taster_3,Ispitaj_4 setb Led_3 jnb Taster_3,$ clr Led_3 //*Deo programa, u Keil-u označen kao fajl main_LED.src koji se odnosi na paljenje i gašenje dioda*// Student: Milan Gikić, 9596

  32. Ispitaj_4: jb Taster_4,Ispitaj_5 jb LED4,Gasenje inc R0 jnb Taster_4,$ cjne R0,#5,Wait setb LED4 mov r0,#0 setb Led_4 jmp Wait Gasenje: inc R0 jnb Taster_4,$ cjne R0,#5,Wait clr LED4 mov r0,#0 clr Led_4 Ispitaj_5: mov r0,#0 jb Taster_5,Ispitaj_6 jnb Taster_5,$ inc r4 cjne r4,#2,Next mov r4,#0 jb Taster_5, Wait //jmp Wait Next: call Setajuca Ispitaj_6: jmp Wait Setajuca: setb Led_5 mov r6,#0x07 mov r7,#0xD0 call DELAY clr Led_5 call Pritisnut setb Led_6 mov r6,#0x07 mov r7,#0xD0 call DELAY clr Led_6 call Pritisnut setb Led_7 mov r6,#0x07 mov r7,#0xD0 call DELAY clr Led_7 call Pritisnut setb Led_8 mov r6,#0x07 mov r7,#0xD0 call DELAY clr Led_8 call Pritisnut jmp Setajuca /************************************************/ Init_Timer2: mov TH2,#MSB_reload_value ; /* Init msb_value */ mov TL2,#LSB_reload_value ; /* Init lsb_value */ mov RCAP2H,#MSB_reload_value ;/* reload msb_value */ mov RCAP2L,#LSB_reload_value ;/* reload lsb_value */ setb EA ;/* interupt enable */ setb ET2 ; /* enable timer2 interrupt */ ret /************************************************/ Timer2_Interrupt: clr TF2 //ubaciti kod za stepenisno //svetlo tako sto ce da se // koristi flag koji ce da //se postavi na 1 kada se //koristi C kod jnb Status_modul,Next_code call Prekid_3_min jmp Kraj Next_code: jnb LED1,Ispitaj_LED2 djnz R3,Kraj clr LED1 clr Led_1 clr Led_2 clr TR2 jmp Kraj Student: Milan Gikić, 9596

  33. Ispitaj_LED2: jnb LED2,Kraj • djnz R3,Kraj • clr LED2 • mov R3,#Led_dioda_2_vreme_svetli • setb Led_2 • setb LED1 • jmp Kraj • Kraj: reti • /*************************************************************************/ • Idle: mov PCON,#0x01 • jb LED1, Idle • jmp Wait • /*************************************************************************/ • end Student: Milan Gikić, 9596

  34. NAME EXAMPLE ?PR?_DELAY_LOOP_Wait?EXAMPLE SEGMENT CODE PUBLIC DELAY RSEG ?PR?_DELAY_LOOP_Wait?EXAMPLE DELAY: CLR A MOV R5,A MOV R4,A ?C0001: SETB C MOV A,R5 SUBB A,R7 MOV A,R4 SUBB A,R6 JNC ?C0007 CLR A MOV R3,A MOV R2,A ?C0004: INC R3 CJNE R3,#00H,?C0008 INC R2 ?C0008: MOV A,R3 XRL A,#079H ORL A,R2 JNZ ?C0004 ?C0003: INC R5 CJNE R5,#00H,?C0009 INC R4 ?C0009: SJMP ?C0001 ?C0007: RET END //*Deo programa, u Keil-u označen kao fajl delay.src koji se odnosi na paljenje i gašenje dioda*// Student: Milan Gikić, 9596

  35. case 32: • Section6(); • break; • case 64: • Section7(); • break; • case 128: • Section8(); • break; • } • } • } • void Section1(void) • { • if (Status_flag ==1) • { • while ((P2_0 == 0)); • P1 |= 0x07; • Broj = 1; //LEDStatus = 0x07; • Status_flag_1 =1; • Status_flag =0; • // Loop_Delay(); • // Tasteri = 0xff; • } • else • { • while ((P2_0 == 0)); • P1 =0x07; • Status_flag =1; • TR2 = 1; • //Tasteri = 0xff; • } • } //*Deo programa, u Keil-u označen kao fajl svetlo_zgrada.c koji se odnosi na stepenišno osvetljenje*// • #include <REG8253.H> • #include <Definicija.h> • //extern code Loop_Delay(void); • void Section1(void); • void Section2(void); • void Section3(void); • void Section4(void); • void Section5(void); • void Section6(void); • void Section7(void); • void Section8(void); • unsigned char Temp; • int data Broj; • bit Status_flag; • bit Status_flag_1; • void Floor_Light (void) • { • //TR2 = 0; • if (Tasteri != 0xff) • { • Temp = ~Tasteri; • switch(Temp) • { • case 1: • Section1(); • break; • case 2: • Section2(); • break; • case 4: • Section3(); • break; • case 8: • Section4(); • break; • case 16: • Section5(); • break; Student: Milan Gikić, 9596

  36. void Section2(void) { if (Status_flag ==1) { while ((P2_1 == 0)); P1 |= 0x0f; Broj = 2; //LEDStatus = 0x0f; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0xff; } else { while ((P2_1 == 0)); P1 =0x0f; Status_flag =1; TR2 = 1; //Tasteri = 0xff; } } void Section3(void) { if (Status_flag ==1) { while ((P2_2 == 0)); P1 |= 0x1f; Broj = 3; //LEDStatus = 0x1f; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0xff; } else { while ((P2_2 == 0)); P1 =0x1f; Status_flag =1; TR2 = 1; //Tasteri = 0xff; } } void Section4(void) { if (Status_flag ==1) { while ((P2_3 == 0)); P1 |= 0x3e; Broj = 4; //LEDStatus = 0x3e; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0xff; } else { while ((P2_3 == 0)); P1 =0x3e; Status_flag =1; TR2 = 1; //Tasteri = 0xff; } } void Section5(void) { if (Status_flag ==1) { while ((P2_4 == 0)); P1 |= 0x7c; Broj = 5; //LEDStatus = 0x7c; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0xff; } else { while ((P2_4 == 0)); P1 =0x7c; Status_flag =1; TR2 = 1; //Tasteri = 0xff; } } Student: Milan Gikić, 9596

  37. void Section6(void) { if (Status_flag ==1) { while ((P2_5 == 0)); P1 |= 0xf8; Broj = 6; //LEDStatus = 0xf8; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0xff; } else { while ((P2_5 == 0)); P1 =0xf8; Status_flag =1; TR2 = 1; //Tasteri = 0xff; } } void Section7(void) { if (Status_flag ==1) { while ((P2_6 == 0)); P1 |= 0xf0; Broj = 7; //LEDnew = 0xf0; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0xff; } else { while ((P2_6 == 0)); P1 =0xf0; Status_flag =1; TR2 = 1; //Tasteri = 0xff; } } void Section8(void) { if (Status_flag ==1) { while ((P2_7 == 0)); P1 |= 0xe0; Broj = 8; //LEDnew = 0xe0; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0xff; } else { while ((P2_7 == 0)); P1 =0xe0; Status_flag =1; TR2 = 1; //Tasteri = 0xff; } } Student: Milan Gikić, 9596

  38. case 5: • P1 = 0x7c; //Section5(); • Counter_1 = 0; • break; • case 6: • P1 = 0xf8; //Section6(); • Counter_1 = 0; • break; • case 7: • P1 = 0xf0; //Section7(); • Counter_1 = 0; • break; • case 8: • P1 = 0xe0; //Section8(); • Counter_1 = 0; • break; • } • //P1 = *(point + Broj - 1); */ • } • else if (++Counter_2 == 3600) • { • P1 = 0; • Counter_2 = 0; • Counter_1 = 0; • TR2 = 0; • } • } • else if (++Counter_1 == 3600) • { • P1 = 0; • Counter_1 = 0; • TR2 = 0; • } • } //*Deo programa, u Keil-u označen kao fajl prekid_3min.c koji se odnosi na stepenišno osvetljenje*// • #include <Definicija.h> • #include <REG8253.H> • extern data Diode_old; • extern data Broj; • extern bit Status_flag; • extern bit Status_flag_1; • int Counter_1; • int Counter_2; • void Prekid_3_min (void) • { • // static unsigned char tab[8]={0x07,0x0f,0x1f,0x3e,0x7c,0xf8,0xf0,0xe0}; • // unsigned char *point; • // point = tab; • if (Status_flag_1 ==1) • { if (++Counter_1 == 3600) • { • switch(Broj) • { • case 1: • P1 = 0x07; //Section1(); • Counter_1 = 0; • break; • case 2: • P1 = 0x0f; //Section2(); • Counter_1 = 0; • break; • case 3: • P1 = 0x1f; //Section3(); • Counter_1 = 0; • break; • case 4: • P1 = 0x3e; //Section4(); • Counter_1 = 0; • break; Student: Milan Gikić, 9596

  39. Laboratorijska vežba Zadatak laboratorijske vežbe ogleda se u realizaciji stepenišnog osvetljenja zgrade. Konkretno za ovu vežbu zgrada ima osam spratova, a uslovi za realizaciju su sledeći: Kada se na nekom do spratova, recimo X-tom spratu, pritisne prekidač, svetlo se pali na X-tom, na X+1, na X+2, na X-1, i na X-2 sptatu. Svetlo mora biti upaljeno 3 minuta. Ako se u međuvremenu pritisne prekidač na nekom drugom spratu, onda se svetlo pali na tom spratu i na dva sprata iznad i na dva sprata ispod tog sprata. Ukoliko na nekom do spratova već gori svetlo a obuhvaćen je pritiskanjem drugog prekidača onda se njegovo trajanje svetla resetuje na novih 3 minuta. Na spratovima na kojima gori svetlo, a obuhvaćeni su samo prvim pritiskom prekidača a nisu obuhvaćeni drugim pritiskom prekidača, svetlo gori dok ne istekne prvih 3 minuta (oni se ne resetuju). Student: Milan Gikić, 9596

  40. Laboratorijska vežba Realizacija laboratorijske vežbe izvršava se na sledeći način: Nakon inicijalizacije programa i ispitivanja pina P3.0 ulazi se u odgovarajući projektni zadatak (paljenje i gašenje LED dioda ili stepenišno osvetljenje, a način na koji se to radi je opisan napred u tekstu ovog rada). Za slučaj projektnog zadatka ’’Stepenišno osvetljenje’’ program ispituje status tastera koji su hardverski vezani na port 2. Za slučaj da ni jedan taster nije pritisnut program je u statusu ’’čekanja’’. Nakon detektovanja da je neki od tastera pritisnut, u skladu sa definisanim projektnim zadatkom, pali se dioda odgovarajućeg tastera i po dve diode gore i dole. Program krene sa merenjem vremena od 3 minuta, kako je i definisano trajanje upaljenih dioda iz projektnog zadatka. Merenje vremena se realizuje pomoću tajmerskog prekida od 50 ms i brojača od 3600 tajmerskih prekida. Ako se u nekom trenutku pritisne neki drugi tasteer pali se dioda za taj taster i po dve diode gore i dole. Merenje vremena se vrši na prethodno objašnjen način s’tim što se merenje vremena za diode koje su već gorele pritiskanjem prvog prekidača, a obuhvaćene su i pritiskanjem drugog prekidača resetuje na novih 3 minuta. Student: Milan Gikić, 9596

  41. Zaključak • Prvo poglavlje ovog projekta odnosi se na Programibilne logičke kontrolere ili PLC-ove. Obrađena su pitanja šta je to programabilni logički kontroler, zatim, relejna lestvičasta logika, PLC sistemi, PLC tipovi, programiranje ladder logike PLC-a, kao i same prednosti PLC ladder logike u odnosu na konvencionalnu relejnu logiku. • Drugo poglavlje obuhvata razmatranje Tajmera, Brojača i Pomeračkih registara. Ovde je detaljno objašnjen pojedinačno svki od njih, kao i manipulisanje podacima sa kratkim primerima. • Treće poglavlje se bavi mikrokontrolerom AT89S8253. Opisane su njegove karakteristike, konfiguracija i pinovi, dat je blok dijagram, i objašnjen je Tajmer 2 ovog mikrokontrolera. Uz priloženi CD dat je i datashit AT89S8253.pdf u kome je on detaljnije opisan. Student: Milan Gikić, 9596

  42. Zaključak • Červrto poglavlje obuhvata hardversku realizaciju ovog projekta. Prikazane su ploče sa rasporedom korišćenih elemenata, i data je tabela sa korišćenim komponentama. • Peto poglavlje se odnosi na softversku realizaciju. Objašnjeno je korišćenje programa Keil uVision 3, u kome je napisan program, definisan je projektni zadatak, dat je softverski kod i objašnjeno je upisivanje koda u mikrokontroler, odnosno njegovo flešovanje. • Šesto poglavlje obuhvata laboratorijsku vežbu. Izvršeno je definisanje i detaljno objašnjenje laboratorijske vežbe. • Na priloženom CD-u dati su Datasheet-ovi za AT89S8253, 74HC373 i TS7805. Student: Milan Gikić, 9596

  43. Biografija Student: Milan Gikić, 9596

More Related