590 likes | 1.29k Views
Elektronski fakultet Niš Katedra za elektroniku. SIMULACIJA PLC KONTROLERA PREKO MIKROKONTROLERA PIC16F877A. MILAN MLADENOVI Ć 11734 ALEKSANDRA PETROVIĆ 10600 IVAN STOJANOVIĆ 10666. Standardi za prenos podataka. TIA/EIA-232-F TIA/EIA-423-B TIA/EIA-422-B TIA/EIA-485 SCSI FireWire
E N D
Elektronski fakultet NišKatedra za elektroniku SIMULACIJA PLC KONTROLERA PREKO MIKROKONTROLERA PIC16F877A MILAN MLADENOVIĆ 11734 ALEKSANDRA PETROVIĆ 10600 IVAN STOJANOVIĆ 10666
Standardi za prenos podataka • TIA/EIA-232-F • TIA/EIA-423-B • TIA/EIA-422-B • TIA/EIA-485 • SCSI • FireWire • USB
Standard TIA/EIA-232-F • Definisan je u ANSI specifikaciji, • Maksimalni protok podataka je 20kbs, mada sada postoji veliki broj softverskih rešenja koja postižu 116 kbps i više, • Logičkoj nuli odgovara stanje "SPACE", koji se nalazi u opsegu napona +3V do +25V, • Logičkoj jedinici odgovara stanje "MARK", koji je u opsegu -3V do -25V, • Naponski nivo između -3 do + 3 V nije definisan, • Napon na kolu ne sme da pređe 25V u odnosu na masu, • Struja kola ne sme pređe vrednost 500 mA.
PIC16F877A – karakteristike/1 • RISC CPU visokih performansi • 35 instrukcija obima jedne reči • Radna frekvencija do 20 MHz • Sve instrukcije su jednocikluske, sem instrukcija grananja koje su dvocikluske • Trajanje taktnog intervala 200 ns (pri frekvenciji 20 MHz) • Opkôd je obima 14 bita • Hardverski magacin (stack) ima osam nivoa • Postoje tri načina adresiranja (direktno, indirektno i relativno) • Programska flash memorija je kapaciteta 8 k X 14-bitnih reči • Memorije za podatke (RAM) je kapaciteta 368 X 8 bita • Memorije za podatke (EEPROM) je kapaciteta 256 X 8 bita • Prekidi (maksimalno 14 izvora prekida) • šest ulazno-izlaznih portova (A, B, C, D i E)
PIC16F877A – karakteristike/2 • Timer0 (TMR0): osmobitni tajmer/brojač_događaja • Timer1 (TMR1): šesnaestobitni tajmer/brojač_događaja • Timer2 (TMR2): osmobitni tajmer/brojač_događaja • Serijska komunikacija: MSSP, USART • Paralelna 8-bitna komunikacija: PSP • ICSP (In Circuit Serial Programing) preko samo dva izvoda • Analogni komparatorski modul sa programabilnim referentnim naponima • 8-kanalni 10-bitni ADC (Analog-to-Digital Converter, analogno/ digitalni konvertor) • Power-on Reset - reset pri uključenju napajanja (POR) • Power-up timer - unošenje kašnjenja nakon uključenja napajanja (PWRT) • Oscillator Start-up Timer - unošenje kašnjenja neposredno po stabilizovanju radne frekvencije oscilatora (OST)
PIC16F877A – karakteristike/3 • Sleep mode - režim rada sa veoma malim utroškom energije • Watchdog tajmer sa sopstvenim integrisanim RC oscilatorom za nezavisni rad • Izbor tipa oscilatora (RC, XT, HS, LP) • 100000 ciklusa Write/Erase programske memorije • 1000000 ciklusa Write/Erase memorije za podatke EEPROM • Trajanje podataka u EEPROM duže od 40 godina • Radni napon može da bude u opsegu od 2V do 5.5V • Mala potrošnja energije: • <0.6 mA pri naponu od 3V i radnoj frekvenciji od 4 MHz • 20µA pri naponu od 3V i radnom taktu od 32kHz • <1µA u standby režimu rada
PIC16F877A – arhitektura/2 • Aritmetičko-logička jedinica (ALU) • Akumulator (Working Register) • Hardverski magacin (Stack) organizivan u 8 nivoa • EEPROM memorija podataka obima 256 bajtova • Flash programska memorija – 8 kiloreči obima 14 bita • RAM (File Registers) – 368 bajtova • Višekanalni A/D konvertor, • USART, • SPI interfejs, • I2C interfejs, • šest U/I portova, • tajmere itd.
Kombinovanje lečeva i flip-flopova • Postoje dva načina na koje se kombinujulečevi kod flip-flopova. • Kod prvog načina lečevi sekombinuju tako da se: • Važećim ulaznim podacima koji su prisutnina ulazima flip-flopa smatraju samo oni koji su prisutniu trenutku kada je važeći i upravljački signal; • Stanje flip-flopa menja samo kada stanje upravljačkogimpulsa nije aktivno. Ovaj tip flip-flopa se nazivamaster-slave. Kod drugog načina važi sledeći princip. Flip-flop se okida samo u toku promene taktnog impulsa sa '0' na '1' (ili sa '1' na '0'), a u ostatku perioda promene nisu dozvoljene uključujući i period taktnog signala. Ovaj flip-flop se naziva ivično-okidani flip-flop.
PLC kontroleri - definicija • PLC - namenski elektronski uređaj, zasnovan na mikroprocesoru, koji je u mogućnosti da obavlja brojne tipove upravljačkih funkcija različitog nivoa složenosti • PLC - industrijski računarčiji su hardver i softver posebno prilagođeni radu uindustrijskim uslovima, a koji se može lako programirati i ugrađivati u nove i postojeće industrijske sisteme.
PLC kontroleri - opis • PLC - (Programmable) - označava mogućnost programiranja. Program rada se unapred priprema i puni u permanentumemoriju PLC kontrolera. PLC program se razvija u jezikulestvičastih (ladder) dijagrama, koji je nastao pougledu natzv. relejne šeme. • PLC - (Logic) - jedna od glavnih osobina PLC kontrolera je mogućnost obavljanja logičkih (Bulovih) funkcija. PLC generiše diskretne (digitalne) izlazne signale u funkciji (logičkoj) diskretnih ulaznih signala - karakteristično za prvobitne tipove PLC kontrolera. Savremeni PLC-ovi, pored logičkih mogu da obavljaju: aritmetičke operacije, odmeravaju vremenske intervale, prebrojavaju događaje, a prihvataju i generišu, pored diskretnih, i analogne signale. • PLC (Controller) - Glavna primena u industriji (proizvodnoj) gde se koristi za automatsko upravljanje procesima - prati ključne parametre procesa (posredstvom priključenih senzora i davača, i shodno memorisanomprogramu, generiše pobudu kojom deluje na proces posredstvom aktuatora
Simulacija PLC kontrolera • PLC kontroler je simuliran preko PIC16F877A mikrokontrolera, • Mikrokontroler ima takt od 4MHz i napaja se preko linearnog regulatora napona LM7805, • U cilju kasnijeg proširenja uređaja, postoji mogućnost povezivanja mikrokontrolera sa računarom (preko integrisanog kola MAX232), a komunikacija je bez handshaking-a.
PLC kontroler – funkcije pinova mikrokontrolera • Organizacija pinova mikrokontrolera je sledeća: • PC7 i PC6 su pinovi za eventualnu komunikaciju sa PC računarom, • PC5-PC2 predstavljaju ulaze 2 dvoulazna logička kola, • PB7-PB5 su ulazi flip-flopova (D i JK ili T i JK), • PB4-PB1 su ulazi multipleksera, • PB0 je izlaz multipleksera, • PD7 je ulaz demultipleksera, • PD6-PD5, PC1-PC0 su izlazi demultipleksera, • PD4-PD3 su izlazi flip-flopova, • PD2-PD1 su izlazi logičkih kola, respektivno, • PD0 signalizira promenu takta, • PA5-PA3 su kontrolišući pinovi i definišu 8 različitih kombinacija, • PA1-PA0 su selektorski ulazi za multiplekser i demultiplekser.
Kôd u mikroC-u • int k = 0; // Definisanje varijabli • char AX, BX, CX, DX, EX, FX, JK, TX, Q1, Q2, Q3 = 0; • char clk, clkk = 1; • void main() { • TRISA = 0b111111; // Definisanje i inicijalizacija • PORTA = 0b000000; // pinova PORTOVA A, B, C i D • TRISB = 0b11111110; • PORTB = 0b00000000; • TRISC = 0b10111100; • PORTC = 0b00000000; • TRISD = 0b10000000; • PORTD = 0b00000000; • CMCON = 7; • ADCON1 = 0x06; // Definisanje pinova A porta // kao digitalnih
Kôd u mikroC-u • do { // Formiranje Beskonacne Petlje • if (k == 0) { // Prilikom starta, tj. prilikom prvog • // obilaska petlje - kasnjenje je dve • Delay_ms(2000); // sekunde • } • k++; • delay_ms(400); // Takt za flip-flopove je 0,4 sekunde • clkk = clk; • // Opis funkcije I kola • AX = (PORTC.F5 && PORTC.F4); • // Opis funkcije ILI kola • BX = (PORTC.F5 || PORTC.F4); • // Opis funkcije I kola • CX = (PORTC.F3 && PORTC.F2); • // Opis funkcije ILI kola • DX = (PORTC.F3 || PORTC.F2);
Kôd u mikroC-u • // Opis funkcije EXILI kola • EX = ((PORTC.F5 && !(PORTC.F4)) || (!(PORTC.F5) && PORTC.F4)); • // Opis funkcije EXNILI kola • FX = ((PORTC.F5 && PORTC.F4) || (!(PORTC.F5) && !(PORTC.F4))); • if (clk==1) { // Ako je ivica takta rastuca... • PORTD.F0 = 1; • // Opis funkcija JK i T flip-flopa • Q1 = JK; • JK = ((PORTB.F6 && (!Q1)) || ((!(PORTB.F5) && Q1))); • Q2 = TX; • TX = ((!(PORTB.F7) && Q2) || (PORTB.F7 && (!Q2))); • } • else if (clk==0) { // Ako je ivica takta opadajuca ... • PORTD.F0 = 0; • } • // Implementacija logike sa Slike 7-7 (1) • if ((PORTA.F5==0) && (PORTA.F4==0) && (PORTA.F3==0)) { • PORTC.F1 = !AX; • PORTC.F0 = !CX;
Kôd u mikroC-u • // Funkcija MUX 4/1 • if ((PORTA.F1==0) && (PORTA.F0==0)) { • PORTB.F0 = PORTB.F4; • PORTD.F6 = PORTB.F4; • } • if ((PORTA.F1==0) && (PORTA.F0==1)) { • PORTB.F0 = PORTB.F3; • PORTD.F5 = PORTB.F3; • } • if ((PORTA.F1==1) && (PORTA.F0==0)) { • PORTB.F0 = PORTB.F2; • PORTD.F2 = PORTB.F2; • } • if ((PORTA.F1==1) && (PORTA.F0==1)) { • PORTB.F0 = PORTB.F1; • PORTD.F1 = PORTB.F1; • } • PORTD.F3 = JK; // JK flip-flop • PORTD.F4 = PORTB.F7; // D flip-flop • }
Kôd u mikroC-u • // Implementacija logike sa Slike 7-8 (2) • else if ((PORTA.F5==0) && (PORTA.F4==0) && (PORTA.F3==1)) { • PORTD.F1 = !BX; • PORTD.F2 = !DX; • // Funkcija MUX 2/1 • if (PORTA.F0==0) { • PORTB.F0 = PORTB.F4; • PORTD.F6 = PORTB.F4; • } • if (PORTA.F0==1) { • PORTB.F0 = PORTB.F3; • PORTD.F5 = PORTB.F3; • } • PORTD.F3 = JK; // JK flip-flop • PORTD.F4 = TX; // T flip-flop • } • else if ((PORTA.F5==0) && (PORTA.F4==1) && (PORTA.F3==0)) { • PORTD.F1 = EX; • PORTD.F2 = FX;
Kôd u mikroC-u • // Funkcija MUX 2/1 • if (PORTA.F0==0) { • PORTB.F0 = PORTB.F4; • PORTD.F6 = PORTB.F4; • } • if (PORTA.F0==1) { • PORTB.F0 = PORTB.F3; • PORTD.F5 = PORTB.F3; • } • PORTD.F3 = JK; // JK flip-flop • PORTD.F4 = TX; // T flip-flop • } • else if ((PORTA.F5==0) && (PORTA.F4==1) && (PORTA.F3==1)) { • PORTD.F1 = AX; • PORTD.F2 = !CX; • // Funkcija MUX 2/1 • if (PORTA.F0==0) { • PORTB.F0 = PORTB.F4; • PORTD.F6 = PORTB.F4; • }
Kôd u mikroC-u • if (PORTA.F0==1) { • PORTB.F0 = PORTB.F3; • PORTD.F5 = PORTB.F3; • } • PORTD.F3 = JK; // JK flip-flop • PORTD.F4 = PORTB.F7; // D flip-flop • } • clk = !clkk; // Formiranje takta • } while (1); // Kraj Petlje • }//~
Programiranje mikrokontrolera Za programiranjemikrokontrolera PIC16F877A korišćeni su • Bootstrap loader (ALLPIC) i • Softverski alat (IC-Prog).
ALLPIC bootstrap loader • Jednostavan i veoma jeftin (do 10 evra), • Pripada grupi tzv. JDM loadera, • Programiranje se ostvaruje preko serijskog porta, • Zahteva eksterno napajanje 15-20V.
IC Prog – softverski alat • Jednostavan za korišćenje • Kompatibilan sa većim brojem bootstrap loadera