Primena tajmera brojaa i pomerakih registara u PLCovima
Primena tajmera, brojača i pomeračkih registara u PLC-ovima Predmet: Mikroprocesorski sistemi Student: Milan Gikić, 9596
Programibilni logički kontroleri l l Definicija: Programibilni logički kontroleri (PLC- Programmable Logic Controlle Alternativna definicija bi bila: PLC je specijalizovan elektronski uredjaj zasnovan Tipična arhitektura Proizvodi firme Allen Bradley Student: Milan Gikić, 9596
Relejna lestvičasta logika Sekvencijalni upravljački sistemi nazvani relejna-lestvičasta logika (relay ladder logic) su dugo godina, sve do pojave prvih PLCova, 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 relejnolestvič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
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 normalnozatvorenih 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
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
PLC sistem PLC komunicira sa ulaznoizlaznim uredjajima preko ulaznoizlaznih (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
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 sistema slot 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
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
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
Prednosti PLC-ova PLC ladder logika ima veći broj prednosti u odnosu na konvencionalnu relejnu logiku, a koje se ogledaju u sledećem: l jednostavnije i preglednije ožičavanje l veća pouzdanost – mehanički releji i elektro-mehanički uređaji su daleko nepouzdanije l efikasnije je održavanje i brže se nalaze kvarovi l off-line programiranje – ranije PLC-ovi su se programirali preko specijalnih programskih komponente u odnosu na softver 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
Prednosti PLC-ova l 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. l širi krug aplikacija – PLC softver podržava širi opseg analognih i diskretnih aplikacija na koje nailazimo kod upravljanja u industrijskim postrojenjima. l 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. l 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
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
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
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
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
Programiranje brojača Na sledećoj slici su prikazani programi i lista naredbi kod različitih proizvođača. (a) Mitsubishi, (b) Siemens, (c) Toshiba, (d) Allen-Bradley programi Student: Milan Gikić, 9596
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ž (a) Korišćenje borjača naviše i naniže, (b) Allen-Bradley program Student: Milan Gikić, 9596
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. Student: Milan Gikić, 9596 (a) Korišćenje borjača naviše i naniže, (b) Allen-Bradley program
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
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
Primer primene pomeračkog registra Jedna od primena pomeračkih registara je za održavanje razmaka između predmeta. Na primer, semz Održavanje razmaka između neispravnih predmeta Student: Milan Gikić, 9596
Primer primene pomeračkog registra Svaki put kada se otkrije neispravan predmet, impulsni signal se javlja na ulaz X 400. On unosi 1 u pomerački registar na unutrašnjem releu M 140. Kada se predmeti pomeraju, dali neispravni ili ne, postoji impuls na ulazu X 401. On pomera 1 duž registra. Kada 1 dospe na unutrašnji rele M 144, on aktivira izlaz Y 430 i mehanizam za izbacivanje uklanja neispravan predmet sa transportne trake. Kada je predmet uklonjen javlja se ulaz na X 403. On se koristi da resetuje mehanizam tako da se ne izbacuju nadalje predmeti sve dok se signal za izbacivanje ne javi na M 144. On to čini dajući izlaz na unutrašnji rele M 100 koji baferuje ulaz X 403 i isključuje izlaz za izbacivanje Y 430. 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 X 400 kada se javlja pomeranje. Student: Milan Gikić, 9596
Mikrokontroler AT 89 S 8253 Izgled mikrokontrolera AT 89 S 8253 Student: Milan Gikić, 9596
Mikrokontroler AT 89 S 8253 Karakteristike mikrokontrolera AT 89 S 8253 l l l l Kompatibilan je sa Microsoft-51 procesorom 12 KB fleš memorija 2 KB EEPROM memorija 64 -bajtna korisnička matrica Napon napajanja od 2. 7 V 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 automatskim prepoznavanjem adrese Poboljšani SPI serijski interfejs l l l Male snage napajanja Uspostavljanje prekida u niskom režimu rada Programabilni tajmeri Dvostruki pokazivač podataka Isključivanje pomoću znaka (Poweroff 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 x 2 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 Student: Milan Gikić, 9596
Mikrokontroler AT 89 S 8253 Na slici je prikazan blok dijagram mikrokontrolera AT 89 S 8253. Ovde se vide komponente kao što su aritmetičko-logička jedinica (ALU) sa parom registara (TMP 1, TMP 2) 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 AT 89 S 8253 Student: Milan Gikić, 9596
Hardverska realizacija Na sledećim slikama date su blok šeme elemenata smeštenih na PCB ploči i raster ploči kao i izgled realizovanog hardvera. Blok šema elemenata smeštenih na PCB ploči Student: Milan Gikić, 9596
Hardverska realizacija Blok šema elemenata smeštenih na raster ploči Student: Milan Gikić, 9596
Izgled realizovanog hardvera Student: Milan Gikić, 9596
Definisanje projektnog zadatka Na hardveru, konkretno na raster ploči, postoje osam push button-a (označenih sa P 1, P 2, P 3, P 4, P 5, P 6, P 7 i P 8 respektivno), kao i osam zelenih LED dioda (označenih sa D 1, D 2, D 3, D 4, D 5, D 6, D 7 i D 8 respektivno). Za projektni zadatak upotrebljeno je pet push button-a i svih osam LED dioda. Projektni zadatak je definisan u sledećih pet koraka: l kada se pritisne push button P 1, dioda D 1 se pali i svetli 2 s i onda se gasi; l kada se pritisne push button P 2, posle 5 s dioda D 2 se pali i svetli 2 s nakon čega se gasi; l kada se pritisne push button P 3 i drži se pritisnutim, dioda D 3 svetli, a kada se pusti dioda se gasi; l kada se pet puta pritisne push button P 4, dioda D 4 se pali, a kada se ponovo pet puta pritisne push button P 4, dioda D 4 se gasi; l kada se pritisne push button P 5, onda se naizmenično pale diode D 5, D 6, D 7, D 8, pa zatim opet D 5, D 6, D 7, D 8, i ovaj ciklus se ponavlja dokle god se ponovo ne pritisne push button P 5 i neko kratko vreme zadrži pritisnutim. Student: Milan Gikić, 9596
Softverska realizacija Napisani program startuje sa glavnim programom (main), napisanim u C 51 jeziku, u kome je proces inicijalizacije i ispitivanja pina P 3. 0. Za P 3. 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_3 min. c. //*Deo programa, u Keil-u označen kao fajl main. c u kome se vrši ispitivanje pina P 3. 0*// l l l l #include <Definicija. h> #include <REG 8253. H> extern code Init_Timer 2(); extern code Wait(); extern code Floor_Light(); sbit Taster = P 3^0; bit Status_modul; void main (void) { Init_Timer 2(); Diode = 0 x 00; while (1) { l l if (Taster==0) { Status_modul =1; Floor_Light(); l l l l l while ( (Tasteri == 0 xff)); ( !(Tasteri & 0 x 00) ); } else { Status_modul = 0; Wait(); } } } Student: Milan Gikić, 9596 //while
//*Deo programa, u Keil-u označen kao fajl main_LED. src koji se odnosi na paljenje i gašenje dioda*// l l l $NOMOD 51 #include <REG 8253. H> #include <Definicija. h> ; /************************/ //NOVA VREDNOST JE 3 F 23 hex odnosno 16163 dec odnosno 49 373 * 1, 0127 us = 50000, 0371 us == 50 ms l #define MSB_reload_value 0 x 4 B /* msb reload value za generisanje vremenskog prekida na 50 ms */ l #define LSB_reload_value 0 x. FD /* lsb reload value za generisanje vremenskog prekida na 50 ms */ l //#define MSB_reload_value 0 x 3 F /* msb reload value za generisanje vremenskog prekida na 50 ms */ l //#define LSB_reload_value 0 x 23 /* lsb reload value za generisanje vremenskog prekida na 50 ms */ l #define Led_dioda_1_vreme 40 40*50 ms = 2 s za diodu D 1*/ l #define Led_dioda_2_vreme 100 /*vreme od 100*50 ms = 5 s za diodu D 2 nakon detektovanja da je taster pritisnut*/ l #define Led_dioda_2_vreme_svetli 40 /*vreme od 40*50 ms = 2 s za diodu D 2*/ l l l l EXTRN CODE (DELAY, Prekid_3_min) EXTRN BIT (Status_modul) PUBLIC Init_Timer 2, Wait Flegovi segment bit Magacin segment idata rseg Magacin stack: DS 10 /*vreme od l l l l l l l l l l LED 1: LED 2: LED 3: LED 4: LED 5: LED 6: LED 7: LED 8: dbit 1 rseg Flegovi dbit 1 dbit 1 cseg at 002 bh jmp Timer 2_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, $ Wait 1: mov a, Tasteri cjne a, #0 x. FF, Taster_pritisnut jmp Wait 1 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 TR 2 setb LED 1 mov R 3, #Led_dioda_1_vreme jmp Idle Ispitaj_2: jb Taster_2, Ispitaj_3 jnb Taster_2, $ setb TR 2 setb LED 2 mov R 3, #Led_dioda_2_vreme jmp Idle Ispitaj_3: jb Taster_3, Ispitaj_4 setb Led_3 jnb Taster_3, $ clr Led_3 Student: Milan Gikić, 9596
l l l l l l l l l l l Ispitaj_4: Gasenje: Ispitaj_5: Next: Ispitaj_6: Setajuca: jb Taster_4, Ispitaj_5 jb LED 4, Gasenje inc R 0 jnb Taster_4, $ cjne R 0, #5, Wait setb LED 4 mov r 0, #0 setb Led_4 jmp Wait inc R 0 jnb Taster_4, $ cjne R 0, #5, Wait clr LED 4 mov r 0, #0 clr Led_4 mov r 0, #0 jb Taster_5, Ispitaj_6 jnb Taster_5, $ inc r 4 cjne r 4, #2, Next mov r 4, #0 jb Taster_5, Wait //jmp Wait call Setajuca jmp Wait setb Led_5 mov r 6, #0 x 07 mov r 7, #0 x. D 0 call DELAY clr Led_5 call Pritisnut setb Led_6 mov r 6, #0 x 07 mov r 7, #0 x. D 0 call DELAY clr Led_6 call Pritisnut setb Led_7 mov r 6, #0 x 07 mov r 7, #0 x. D 0 call DELAY clr Led_7 call Pritisnut setb Led_8 mov r 6, #0 x 07 mov r 7, #0 x. D 0 call DELAY clr Led_8 call Pritisnut jmp Setajuca l l l l l l l l /************************/ Init_Timer 2: mov TH 2, #MSB_reload_value ; /* Init msb_value */ mov TL 2, #LSB_reload_value ; /* Init lsb_value */ mov RCAP 2 H, #MSB_reload_value ; /* reload msb_value */ mov RCAP 2 L, #LSB_reload_value ; /* reload lsb_value */ setb EA ; /* interupt enable */ setb ET 2 ; /* enable timer 2 interrupt */ ret /************************/ Timer 2_Interrupt: Next_code: Student: Milan Gikić, 9596 clr TF 2 //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 jnb LED 1, Ispitaj_LED 2 djnz R 3, Kraj clr LED 1 clr Led_2 clr TR 2 jmp Kraj
l Ispitaj_LED 2: l l l jnb LED 2, Kraj djnz R 3, Kraj clr LED 2 mov R 3, #Led_dioda_2_vreme_svetli setb Led_2 setb LED 1 jmp Kraj reti l Kraj: l /*************************************/ Idle: mov PCON, #0 x 01 jb LED 1, Idle jmp Wait l l l /*************************************/ end Student: Milan Gikić, 9596
//*Deo programa, u Keil-u označen kao fajl delay. src koji se odnosi na paljenje i gašenje dioda*// l NAME EXAMPLE l l l ? PR? _DELAY_LOOP_Wait? EXAMPLE PUBLIC RSEG l l l l l l l l l SEGMENT CODE DELAY: ? C 0001: ? C 0004: ? C 0008: ? C 0003: ? C 0009: ? C 0007: CLR MOV A R 5, A R 4, A SETB MOV SUBB JNC CLR MOV C A, R 5 A, R 7 A, R 4 A, R 6 ? C 0007 A R 3, A R 2, A INC CJNE INC R 3, #00 H, ? C 0008 R 2 MOV XRL ORL JNZ A, R 3 A, #079 H A, R 2 ? C 0004 INC CJNE INC R 5, #00 H, ? C 0009 R 4 SJMP ? C 0001 DELAY ? PR? _DELAY_LOOP_Wait? EXAMPLE RET END Student: Milan Gikić, 9596
//*Deo programa, u Keil-u označen kao fajl svetlo_zgrada. c koji se odnosi na stepenišno osvetljenje*// l l l l l l l l l l #include <REG 8253. H> #include <Definicija. h> //extern code Loop_Delay(void); void Section 1(void); void Section 2(void); void Section 3(void); void Section 4(void); void Section 5(void); void Section 6(void); void Section 7(void); void Section 8(void); unsigned char Temp; int data Broj; bit Status_flag_1; void Floor_Light (void) { //TR 2 = 0; if (Tasteri != 0 xff) { Temp = ~Tasteri; switch(Temp) { case 1: case 2: case 4: case 8: case 16: case 32: l Section 6(); break; l l case 64: l Section 7(); break; l l case 128: l Section 8(); break; l l l l Section 1(); break; l l l Section 2(); break; l Section 3(); break; l Section 4(); break; Section 5(); break; l l l l } } } void Section 1(void) { if (Status_flag ==1) { while ((P 2_0 == 0)); P 1 |= 0 x 07; Broj = 1; Status_flag_1 =1; Status_flag =0; // Loop_Delay(); // Tasteri = 0 xff; } else { while ((P 2_0 == 0)); P 1 =0 x 07; Status_flag =1; TR 2 = 1; //Tasteri = 0 xff; } } Student: Milan Gikić, 9596 //LEDStatus = 0 x 07;
l l l l l l l l l l l void Section 2(void) { if (Status_flag ==1) { while ((P 2_1 == 0)); P 1 |= 0 x 0 f; Broj = 2; //LEDStatus = 0 x 0 f; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0 xff; } else { while ((P 2_1 == 0)); P 1 =0 x 0 f; Status_flag =1; TR 2 = 1; //Tasteri = 0 xff; } } void Section 3(void) { if (Status_flag ==1) { while ((P 2_2 == 0)); P 1 |= 0 x 1 f; Broj = 3; //LEDStatus = 0 x 1 f; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0 xff; } else { while ((P 2_2 == 0)); P 1 =0 x 1 f; Status_flag =1; TR 2 = 1; //Tasteri = 0 xff; } } l l l l l l l l l l l void Section 4(void) { if (Status_flag ==1) { while ((P 2_3 == 0)); P 1 |= 0 x 3 e; Broj = 4; //LEDStatus = 0 x 3 e; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0 xff; } else { while ((P 2_3 == 0)); P 1 =0 x 3 e; Status_flag =1; TR 2 = 1; //Tasteri = 0 xff; } } void Section 5(void) { if (Status_flag ==1) { while ((P 2_4 == 0)); P 1 |= 0 x 7 c; Broj = 5; //LEDStatus = 0 x 7 c; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0 xff; } else { while ((P 2_4 == 0)); P 1 =0 x 7 c; Status_flag =1; TR 2 = 1; //Tasteri = 0 xff; } } Student: Milan Gikić, 9596
l l l l l l l l l l l void Section 6(void) { if (Status_flag ==1) { while ((P 2_5 == 0)); P 1 |= 0 xf 8; Broj = 6; //LEDStatus = 0 xf 8; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0 xff; } else { while ((P 2_5 == 0)); P 1 =0 xf 8; Status_flag =1; TR 2 = 1; //Tasteri = 0 xff; } } void Section 7(void) { if (Status_flag ==1) { while ((P 2_6 == 0)); P 1 |= 0 xf 0; Broj = 7; //LEDnew = 0 xf 0; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0 xff; } else { while ((P 2_6 == 0)); P 1 =0 xf 0; Status_flag =1; TR 2 = 1; //Tasteri = 0 xff; } } l l l l l l void Section 8(void) { if (Status_flag ==1) { while ((P 2_7 == 0)); P 1 |= 0 xe 0; Broj = 8; Status_flag_1 =1; Status_flag =0; //Loop_Delay(); //Tasteri = 0 xff; } else { while ((P 2_7 == 0)); P 1 =0 xe 0; Status_flag =1; TR 2 = 1; //Tasteri = 0 xff; } } Student: Milan Gikić, 9596 //LEDnew = 0 xe 0;
//*Deo programa, u Keil-u označen kao fajl prekid_3 min. c koji se odnosi na stepenišno osvetljenje*// l l l l l l l l l #include <Definicija. h> #include <REG 8253. H> extern data Diode_old; extern data Broj; extern bit Status_flag_1; int Counter_2; void Prekid_3_min (void) { // static unsigned char tab[8]={0 x 07, 0 x 0 f, 0 x 1 f, 0 x 3 e, 0 x 7 c, 0 xf 8, 0 xf 0, 0 xe 0}; // unsigned char *point; // point = tab; if (Status_flag_1 ==1) { if (++Counter_1 == 3600) { switch(Broj) { case 1: P 1 = 0 x 07; //Section 1(); Counter_1 = 0; break; case 2: P 1 = 0 x 0 f; //Section 2(); Counter_1 = 0; break; case 3: P 1 = 0 x 1 f; //Section 3(); Counter_1 = 0; break; case 4: P 1 = 0 x 3 e; //Section 4(); Counter_1 = 0; break; case 5: l P 1 = 0 x 7 c; //Section 5(); Counter_1 = 0; break; l l l case 6: l P 1 = 0 xf 8; //Section 6(); Counter_1 = 0; break; l l l case 7: l P 1 = 0 xf 0; //Section 7(); Counter_1 = 0; break; l l l case 8: l P 1 = 0 xe 0; //Section 8(); Counter_1 = 0; break; l l } //P 1 = *(point + Broj - 1); l l l l l } else if (++Counter_2 == 3600) { P 1 = 0; Counter_2 = 0; Counter_1 = 0; TR 2 = 0; } } else if (++Counter_1 == 3600) { P 1 = 0; Counter_1 = 0; TR 2 = 0; } } Student: Milan Gikić, 9596 */
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
Laboratorijska vežba Realizacija laboratorijske vežbe izvršava se na sledeći način: Nakon inicijalizacije programa i ispitivanja pina P 3. 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
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 AT 89 S 8253. 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 AT 89 S 8253. pdf u kome je on detaljnije opisan. Student: Milan Gikić, 9596
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 u. Vision 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 AT 89 S 8253, 74 HC 373 i TS 7805. Student: Milan Gikić, 9596
Biografija Ime Milan Prezime Gikić Datum rođenja 30. 11. 1979. Adresa stanovanja Vojvode Stepe 1, Lebane E-mail adresa gikicm@yahoo. com Obrazovanje. Gimnazija ’Stojan Ljubić’ Smer Telekomunikacije Poznavanje softvera Windows okruženje, MS Office, Adobe Photoshop, Corel. DRAW, Or. CAD Interesovanja Sport, računari Student: Milan Gikić, 9596
- Slides: 43