Microsoft Word - Diploma_Anton_Jug_28_6_09.doc

Podobni dokumenti
Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

Microsoft Word - ELEKTROTEHNIKA2_11. junij 2104

Microsoft Word - CNC obdelava kazalo vsebine.doc

Univerza v Ljubljani

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila

Logični modul LOGO!

seminarska_naloga_za_ev

Microsoft Word doc

CelotniPraktikum_2011_verZaTisk.pdf

Šolski center celje

Delavnica Načrtovanje digitalnih vezij

Slide 1

Področje uporabe

DES11_realno

FOTO

DES

Microsoft Word - Avditorne.docx

an-01-Stikalo_za_luc_za_na_stopnisce_Zamel_ASP-01.docx

AME 110 NL / AME 120 NL

PodroĊje uporabe

5 Programirljiva vezja 5.1 Kompleksna programirljiva vezja - CPLD Sodobna programirljiva vezja delimo v dve veliki skupini: CPLD in FPGA. Vezja CPLD (

Člen 11(1): Frekvenčna območja Frekvenčna območja Časovna perioda obratovanja 47,0 Hz-47,5 Hz Najmanj 60 sekund 47,5 Hz-48,5 Hz Neomejeno 48,5 Hz-49,0

COBISS3/Medknjižnična izposoja

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Primoţ Kovačič AVTOMATIZACIJA STROJA ZA KRIVLJENJE PLOČEVINE Diplomsko d

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Microsoft Word - Navodila_NSB2_SLO.doc

KRMILNA OMARICA KO-0

Delavnica Načrtovanje digitalnih vezij

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Diapozitiv 1

Diapozitiv 1

innbox_f60_navodila.indd

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Navodila za uporabo Mini prenosna HD kamera s snemalnikom

101353_-an-01-sl-_vbodni_termometer

DES11_vmesniki

Vgrajeni sistemi Uvod & ponovitev C

VHF1-VHF2

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

1. Električne lastnosti varikap diode Vsaka polprevodniška dioda ima zaporno plast, debelina katere narašča z zaporno napetostjo. Dioda se v zaporni s

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

DKMPT

Microsoft Word doc

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

Uvod v programiranje mikrokrmilnikov, zbrano gradivo za predavanja

_ _BDA_CapitalSports_CS-Timer.indd

Microsoft PowerPoint - IPPU-V2.ppt

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

Microsoft Word - CNR-MPV2 Quick Guide_SI

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

Navodila za namestitev DEVIreg Touch Inteligentni elektronski termostat

Navodila za uporabo Mini snemalnik

Delavnica Načrtovanje digitalnih vezij

Microsoft Word doc

Vacon 100 FLOW Application Manual

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Digitalni trifazni števec električnega toka TIP NOVA 80 MID 4L

VAU 7.5-3_Kurz_SL_ indd

10. Meritev šumnega števila ojačevalnika Vsako radijsko zvezo načrtujemo za zahtevano razmerje signal/šum. Šum ima vsaj dva izvora: naravni šum T A, k

DES

Microsoft Word - CelotniPraktikum_2011_verZaTisk.doc

No Slide Title

Microsoft Word - NAVODILA ZA UPORABO.docx

1

Sistemi Daljinskega Vodenja Vaja 3 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubl

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI

Besedilo naloge:

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Tonski generator IDEAL Electrical PRO Kataloška št.:

UPS naprave Socomec Netys PL (Plug in) UPS naprava Socomec Netys PL moč: 600VA/360W; tehnologija: off-line delovanje; vhod: 1-fazni šuko 230VAC; izhod

Šolski center Celje Srednja šola za kemijo, elektrotehniko in računalništvo POSODOBITEV UČNE PRIPRAVE S PODROČJA KRMILNO-REGULACIJSKIH SISTEMOV Z MIKR

- Avtomat za mešanje tekočin Raziskovalna naloga Mentor: Gregor Kramer, univ. dipl. inž. el. Avtorja: David Fonda, E-4. B Jaka Rober, E-4. B Celje, ma

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO WLAN usmerjevalnik TP LINK Archer C5 Kataloška št.:

SLO - NAVODILO ZA UPORABO IN MONTAŽO Št

Microsoft Word - D1_D8_Prakticno_izobrazevanje_PRI.doc

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Matevž Belej AVTOMATIZIRANA HIDRAVLIČNA STISKALNICA ZA ODPADNO EMBALAŽO

Microsoft Word doc

_01.pdf

VARIMOT® in pribor

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: , NAVODILA ZA UPORABO Temperaturni regulator Voltcraft ETC 100+ Kataloška š

Strojna oprema

_ _ _BDA_Glasheizung_Klarstein_Update.indd

Poskusi s kondenzatorji

ISOFT , računalniški inženiring

Vostro 430 Informacijski tehnični list o namestitvi in funkcijah

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

Uradni list RS - 12(71)/2005, Mednarodne pogodbe

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO 2 delni komplet PMR radijskih postaj Midland M48 S Kataloška

STAVKI _5_

Univerza v Ljubljani

Microsoft Word - Varnostna navodila - ucilo2.doc

Microsoft Word - avd_vaje_ars1_1.doc

Slide 1

Microsoft Word - UP_Lekcija04_2014.docx

Vaja04_Ver02

Poročilo o praktičnem usposabljanju z delom - PUD DIJAK: Ime in priimek: Naslov: Elektronski naslov: Telefon: Izobraževalni program (obkroži): - tehni

BeoLab 12 BeoLab 12 2 BeoLab 12 3

Kazalne naprave in tipkovnica Vodnik za uporabnike

Transkripcija:

Anton Jug PROGRAMIRLJIV LOGIČNI KRMILNIK NA OSNOVI MIKROKRMILNIKA Diplomsko delo Maribor, julij 2009

Diplomsko delo visokošolskega strokovnega študijskega programa PROGRAMIRLJIV LOGIČNI KRMILNIK NA OSNOVI MIKROKRMILNIKA Študent: Študijski program: Smer: Mentor: Somentor: Anton Jug VS ŠP Elektrotehnika Avtomatika viš. pred. mag. Janez Pogorelc doc. dr. Miran Rodič Maribor, julij 2009

ZAHVALA Zahvaljujem se mentorju mag. Janezu Pogorelcu in somentorju doc. dr. Miranu Rodiču za pomoč in vodenje pri opravljanju diplomskega dela. Prav tako se zahvaljujem podjetju Etra d.o.o., ki mi je ponudilo priložnost za delo in pomoč pri opravljanju diplomskega dela. Hvala tudi moji družini in staršem za oporo, razumevanje in pomoč v času študija.

PROGRAMIRLJIV LOGIČNI KRMILNIK NA OSNOVI MIKROKRMILNIKA Ključne besede: mikrokrmilnik, programirljiv logični krmilnik, pozicioniranje UDK: 681.521.7:004.42(043.2) Povzetek Tehnološki razvoj nam prinaša vse zmogljivejše mikrokrmilnike. Vse več je programskih orodij, ki nam omogočajo lažje in učinkovitejše delo z njimi. Da bi zapolnili vrzel v naši ponudbi avtomatizacije, smo so odločili za razvoj programirljivega logičnega krmilnika. Za njegovo jedro smo uporabili osem bitni mikrokrmilnik proizvajalca Microchip. Že na samem začetku razvoja smo ga uporabljali za projekte, kjer so bili PLC sistemi predragi. Z vsako novejšo verzijo pa smo uporabnost krmilnika še povečevali in prilagajali zahtevam. Krmilnik smo uspešno uporabili pri projektu izdelave stroja za ovijanje roba cistern. Naš krmilnik je bil cenovno ugodnejši v primerjavi s komercialnim PLC. Potrebno je bilo zajemati signale inkrementalnega dajalnika in voditi asinhronski pogon s frekvenčnim pretvornikom. Prav tako je bil potreben panel za vnos programov in parametrov. Ustrezen PLC sistem bi bil neprimerno dražji. Kljub kakšni dodatni uri programiranja in testiranje so bili stroški projekta veliko nižji.

MICROCONTROLLER BASED PROGRAMMABLE LOGIC CONTROLLER Key words: microcontroller, programmable logic controller, positioning UDK: 681.521.7:004.42(043.2) Abstract Development brings us more and more powerful microcontrollers. Today have many software tools which are more effective and easy to use. In order to fill a gap in our offer of automation systems, we decided for the development of programmable logic controller. For our programmable controller we used eight bit microcontroller from Microchip. From the beginning of the development we used our programmable controller instead of PLC system for smaller projects. So we achieved lower expenses. With each newer version, we increased the usefulness of controller. We used controller for automatization of machine for coating the edge of the tanks. Our controller had very favorable price. In this system was necessary to use incremental encoder and AC motor with frequency converter. It was also necessary to use panel for parameterization and entering user programs. PLC system was inappropriately more expensive. Despite additional hours of programming and testing, the project cost much less.

VSEBINA 1. UVOD 1 1.1 Kratek opis poglavij 1 2. RAZVOJ IN IZDELAVA KRMILNIKA K-CPU 3 2.1 Blokovni shemi K-CPU in slike 4 2.2 Microchip PIC mikrokrmilnik 6 2.3 Opto ločeni vhodi in izhodi 7 2.4 Napajalni del 10 2.5 RS232 komunikacija 11 2.6 Programiranje in neposreden dostop 12 3. RAZVOJ IN IZDELAVA PANELA K-PANEL 13 3.1 Blokovna shema K-PANEL-a in slike 14 3.2 Mikrokrmilnik PIC16F876A 16 3.3 LCD prikazovalnik 17 3.4 Ostali sklopi panela 18 4. PROJEKT OVIJANJA ROBA 19 4.1 Opis stroja za ovijanje roba 19 4.2 Blokovna shema in slike stroja za krivljenje roba 21 5. OPIS DELOVANJA K-PANEL-A 25 5.1 Kratek opis K-PANEL-a 25 5.2 Protokol komunikacije za K-PANEL 25 5.3 Opis povezave mikrokrmilnika in LCD prikazovalnika 27 5.4 Tipke K-PANEL-a 28 5.5 Osvetlitev ozadja 28 6. PROGRAM K-PANEL 29 6.1 Kratek opis programa 29 6.2 Opis prekinitev programa za K-PANEL 29 6.3 Funkcije programa K-PANEL 30 7. PROGRAM K-CPU 32 7.1 Kratek opis programa za krmilnik (K-CPU) 32 7.2 Določitev vhodov in izhodov 32 7.3 Prekinitve programa K-CPU 34 7.3.1 Prekinitev Timer 1 34 7.3.2 Prekinitev INT_RB 35 7.3.3 Prekinitev INT_RDA 37 7.4 Komunikacija s modulom K-PANEL 37 7.5 Razne funkcije 38 7.6 Ročno delovanje in iskanje reference 39 7.7 Pripravljenost nastavitve, programi, števci in izklop 41 7.7.1 Delovanje pripravljenosti in shranjevanje podatkov v EEPROM 41 7.7.2 Števci izdelkov, nastavitve in vnos programov 43 7.7.3 Priprava na izklop 45 7.7.4 Osnovni meni pripravljenosti 46

7.8 Avtomatsko delovanje 47 7.8.1 Kratek opis avtomatskega delovanja 47 7.8.2 Pozicioniranje 48 7.8.3 Ostale funkcije potrebne za avtomatsko delovanje 53 7.8.4 Osnovna main() funkcija 54 8. SKLEP 56 8.1 Potek razvoja in uporaba krmilnika 56 8.2 Uporaba prirejenih krmilnikov 58 8.3 Prihodnost in zaključek 58 9. VIRI 61 10. PRILOGE 62 10. 1 Seznam slik 62 10.2 Seznam preglednic 63 10.3 Naslov študenta 64 10.4 Kratek življenjepis 64 10.5 Priloge 65 Priloga 1: Shema K-CPU 65 Priloga 2: Shema K-PANEL 66 Priloga 3: Algoritmi programa za K-PANEL (1/6) 67 Priloga 4: Algoritmi programa za K-CPU (1/10) 73 Priloga 5: Elektro načrt krmilja (1/10) 83

UPORABLJENI SIMBOLI U DI - nazivna napetost dig. vhoda U optoled - nazivna napetost diode optosklopnika U Vcc - napajalna napetost mikrokrmilnika I optoled - tok diode optosklopnika I optoled_max - maksimalni tok diode optosklopnika I led - tok led diode dig. vhoda I pulldown_max - maksimalni tok "pull_down" upora dig. vhoda R vh - upornost predupora diode optosklopnika na dig. vhodu R pulldown - upornost "pull-down" upora dig. vhoda CTR opto - razmerje vhodnega in izhodnega toka optosklopnika s - razdalja od začetne pozicije do želene končne pozicije s 1 - razdalja pospeševanje s 2 - razdalja potovanja s 3 - razdalja zaviranja s 4 - razdalja približevanja končni poziciji p 0 - začetna pozicija p 1 - pozicija konca pospeševanja p 2 - pozicija konca potovanja p 3 - pozicija konca zaviranja p 4 - končna poziciji t 1 - čas pospeševanje t 2 - čas potovanja t 3 - čas zaviranja t 4 - čas približevanja končni poziciji v max - maksimalna hitrost v min - minimalna hitrost v ref - hitrost iskanje referenčnega impulza a 1 - pospešek a 2 - pojemek

UPORABLJENE KRATICE K-CPU - CPU modul krmilnika K-PANEL - uporabniški vmesnik - modul krmilnika PLK - programirljiv logični krmilnik LCD - prikazovalnik s tekočimi kristali DI - digitalni vhod DO - digitalni izhod ENK - enkoder ICSP - In Circuit Serial Programming (serijsko programiranje v vezju) MCLR - Master Clear (glavni reset) LCD - Liquid Crystal Display (prikazovalnik s tekočimi kristali) MM - Micro Master (Siemensov tip frekvenčnega regulatorja) PWM - Pulse Width Modulation (pulzno širinska modulacija)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 1 1. UVOD Pri podjetju Etra d.o.o. sem opravljal praktično izobraževanje, kjer sem se že zaposlil kot absolvent visoko-strokovnega študija. Pri podjetju je ena izmed glavnih dejavnosti avtomatizacija v industriji, kjer srečujemo širok spekter strojev in proizvodnih linij. Veliko je povpraševanja za manjše projekte, kjer potrebujemo programirljiv krmilnik z manjšim številom vhodov in izhodov. Ti so lahko digitalni ali analogni. Prav tako je dostikrat potreben tudi panel za spremljanje delovanja in vnašanje parametrov. Komercialni PLC sistem je za manj kompleksne projekte predrag in tudi pogosto ostane neizkoriščen. Zato smo se odločili izdelati programirljiv krmilnik, ki bi zadostil našim potrebam in bil znatno cenejši od PLC sistema. Izdelali smo krmilnik na osnovi Microchipovih mikrokrmilnikov. Krmilnik je sestavljen iz programirljivega logičnega krmilnika z vhodi in izhodi, ki smo ga poimenovali K-CPU ter panela, ki smo ga poimenovali K-PANEL. Med seboj pa sta povezana preko RS232 komunikacije. Izdelan krmilnik smo uporabili pri projektu stroja za ovijanje roba, kjer je bila osnova pozicioniranje asinhronskega pogona s frekvenčnim regulatorjem. Za povratno povezavo smo uporabili inkrementalni dajalnik. Za programiranje panela in krmilnika smo uporabili CCS-ov C programski jezik za Microchipove mikrokrmilnike. 1.1 Kratek opis poglavij V drugem poglavju smo opisali krmilnik K-CPU. Najprej njegovo jedro na osnovi mikrokrmilnika PIC18F452. Nato smo opisali optično ločene digitalne vhode in izhode, napajanje, RS232 komunikacijo in možnosti dostopanja do mikrokrmilnika ter ICSP konektor za programiranje. Podali smo tudi sheme in izračune za posamezne segmente. V tretjem poglavju pa smo opisali razvoj in izdelavo panela K-PANEL oz. njegovih segmentov: mikrokrmilnik PIC16F876A, štirivrstični LCD prikazovalnik ter ostali sklopi (tipke, krmiljenje osvetlitve, napajanje in komunikacija).

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 2 Četrto poglavje vsebuje opis projekta oz. stroja, na katerem se je uporabil izdelani programirljivi logični krmilnik s panelom. Poglavje vsebuje opis stroja, slike, blokovne sheme ter princip delovanja. V petem in šestem poglavju sta opisana programa za K-PANEL in K-CPU. Program za K-PANEL je splošni program, saj opravlja le prikazovanje in zaznavanje pritiska na tipke. Program za K-CPU pa vsebuje krmiljenje, regulacijo, menije za prikaz in vnašanje nastavitev.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 3 2. RAZVOJ IN IZDELAVA KRMILNIKA K-CPU Programirljivi modul smo poimenovali K-CPU V3.0 (slika 2.1). K za krmilnik, CPU ker se na modulu opravljajo oz. procesirajo vse operacije krmiljenja, regulacije, zajemanje vhodov in izhodov ter obdelava podatkov za panel. V3.0 ker trenutno izdelujemo tretjo verzijo krmilnika. Izdelujemo že tudi v5.0, katero smo uspešno testirali in jo bomo začeli uporabljati. Za shemo celotnega modula glej prilogo 1. Modul sestavljajo (slika 2. 2): - Microchipov PIC mikrokrmilnik PIC18F452 - galvansko (z optosklopniki) ločeni vhodi in izhodi - napajalni del - RS232 komunikacijska vrata - priključki za programiranje in neposreden dostop do mikrokrmilnika Na sliki 2.3 je fotografija modula. V naslednjih podpoglavjih pa smo podrobneje opisali načrtovanje in izdelavo segmentov krmilnika.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 4 2.1 Blokovni shemi K-CPU in slike Najprej smo podali blokovno shemo segmentov K-CPU in pozicijsko blokovno shemo ter sliko modula. Reset ICSP + 5V DC 16 x DI 14 x DO PIC 18F452 XTAL 10MHz 16 1 2 3 4 a1 b1 a2 b2 a3 b3 a4 b4 5 6 7 8 14 MAX232 PORT A,B,C,D,E Slika 2.1: blokovna shema K-CPU V3.0

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 5 Varovalki 0.63 A 24VDC napajanje Dig.izhodi skupni + Dig.izhodi DI 1-14 RS 232 DB9 -Ž Mikrokrmilnik Reset tipka Dig. vhodi DI 1-16 Dig. vhodi skupni - Slika 2.2: pozicijska shema K-CPU V3.0 Slika 2.3: mikrokrmilniški modul K-CPU V3.0

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 6 2.2 Microchip PIC mikrokrmilnik Za K-CPU smo uporabili PIC18F452 v podnožju I/P 40 (glej sliko 2.4). Za generiranje takta smo uporabili kristal 10 MHz. Nastavili smo PLL in tako dobili takt 40 MHz. Osnovne karakteristike mikrokrmilnika smo podali v tabeli 2.1. S programatorjem smo ga povezali preko ICSP 10-polnega konektorja, pri katerem uporabimo samo pet priključkov in sicer za napajanje, MCLR, RB7 in RB6. Dodana je bila še RESET tipka in LED dioda za signalizacijo nalaganja programa in delovanja. Za neposreden dostop do vseh vhodno/izhodnih priključkov, smo uporabili 10-polne konektorje za vsaka vrata. Slika 2.4: razpored pinov PIC18F452

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 7 Tabela 2.1: osnovne karakteristike mikrokrmilnika PIC18F452 Maksimalna delovna frekvenca Programski pomnilnik Delovni pomnilnik EEPROM pomnilnik 40 MHz 32 kb 16384 instrukcij 1536 Byte 256 Byte Število možnih prekinitev 18 Vhodno izhodna vrata A, B, C, D, E Časovniki 4 PWM, komparatorji 2 Serijska komunikacija Paralelna komunikacija 10-bitni A/D pretvornik RESET funkcije, dodatne funkcije MSSP, USART PSP 8 kanalov POR, BOR, PWRT, OST, LVP, ICSP Število instrukcij 75 2.3 Opto ločeni vhodi in izhodi K-CPU kartica ima 16 dig. vhodov in 14 dig. izhodov, ki so galvansko ločeni z opto sklopniki. Nivo napetosti vhodov je 18V 32V ter izhodov 12 32V. Temu primerno smo glede na tok opto-sklopnika določili predupore in glede na čas zapiranja bremenske upore. Prav tako ti upori preprečujejo nedoločeno stanje pinov mikrokrmilnika, kadar so optosklopniki zaprti (glej enačbe 2.1). Vhodi imajo svojo skupno negativno priključno sponko (slika 2.5). Izhodi pa svojo skupno pozitivno priključno sponko, ki je varovana s cevno varovalko (enačbe 2.2 in slika 2.6). Vsi vhodi in izhodi imajo tudi signalizacijo z LED diodo na TTL strani optosklopnikov.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 8 Ω = Ω = = = = = = Ω = Ω = = = < Ω = Ω = = = k R ma V I U R ma I ma ma ma I I I k R ma V V I U U R ma I I I CTR k R ma V V I U U R pulldown lestvica upor pulldown Vcc pulldown pulldown led optoled pulldown led lestvica upor led led Vcc led led optoled led opto vh lestvica upor optoled optoled DI vh 2.2 2500 2 5 2 3 7 10 470 485.7 7 1.6 5 7 1 2.2 2290 10 1.1 24. _ max.. (2.1) Slika 2.5: shema digitalnega vhoda Ω = Ω = = = = = = Ω = Ω = = = < = k R ma V I U R ma I ma ma ma I I I R ma V V I U U U R ma I I I ma I pulldown lestvica upor pulldown Vcc pulldown pulldown led optoled pulldown led lestvica upor optoled led optoled DI led optoled optoled optoled optoled 2.2 2500 2 5 2 3 7 10 180 176.9 13 1.6 1.1 5 13 15. _ max. _ max _ max (2.2)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 9 Slika 2.6: shema digitalnega izhoda

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 10 2.4 Napajalni del Napajalni del K-CPU je dokaj enostaven (slika 2.7). Sestavljajo ga varovalka, zaščitna dioda za zaščito v primeru napačne polaritete priključene napetosti ter povratna dioda. Varistor ščiti pred prenapetostjo. Napetostni regulator 7805 regulira napetost, vsebuje pa tudi tokovno in termično zaščito. Zener dioda ščiti pred prenapetostjo na izhodu regulatorja, blok kondenzatorji preprečujejo oscilacijo regulatorja pri prehodnih pojavih ter elektrolitski kondenzatorji gladijo napetosti. Na izhodu pa je še led dioda s preduporom za indikacijo prisotnosti napetosti. Slika 2.7: shema napajalnega dela

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 11 2.5 RS232 komunikacija Komunikacijski del kartice (slika 2.9) sestavlja integrirano vezje MAX232 (glej sliko 2.8), ki s pomočjo zunanjih kondenzatorjev pretvori napetnostne nivoje iz TTL v RS232, in sicer signala za pošiljanje in sprejem (RX in TX). Dve led diodi pa signalizirata stanje TTL signalov RX in TX. Z mostičkom je možen priklop napajalne napetosti na pin 9 DB9 priključka. Vezava na DB9 ženskem priključku je za prenos podatkov brez strojne kontrole prenosa. Signali CTS in RTS so spojeni na tiskanini, prav tako so spojeni DTR, DTE in CD. Slika 2.8: integrirano vezje MAX232

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 12 Slika 2.9: shema komunikacijskega dela 2.6 Programiranje in neposreden dostop Na modulu K-CPU je 10-polni priključek za programiranje ICSP, preko katerega lahko s pomočjo programatorja kadarkoli naložimo program. Preko ICSP dostopamo do pinov RB7 (podatkovna linija), RB6 (linija za urin takt), MCLR (linija za programirno napetost) ter napajanje. Na začetku programiranja se mikrokrmilnik postavi v RESET stanje. Ko je nalaganje programa končano, se prične izvajati nov program, ki smo ga naložili. Prav tako ima pet 10-polnih konektorjev za direkten dostop do vrat mikrokrmilnika. Vsak konektor ima 8 priključkov določenih vrat (razen PORT A in E, ki imata manj kot 8 vhodno/izhodnih priključkov) ter minus in plus 5V napajalne napetosti. Tako lahko direktno dostopamo do vrat (PORT) A,B,C,D in E (glej sliko 2.10). Slika 2.10: konektorji vseh portov in ICSP

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 13 3. RAZVOJ IN IZDELAVA PANELA K-PANEL Uporabniški vmesnik oz. panel smo poimenovali K-PANEL V3.0. Omogoča nam prikazovanje podatkov na štirivrstičnem LCD prikazovalniku. Z osmimi tipkami pa nam omogoča vnašanje podatkov, izbir itd.. Za shemo celotnega K-PANEL-a glej prilogo 2. Sestavljajo ga : - mikrokrmilnik PIC16F876A z ICSP programskim priključkom - RS232 komunikacijska vrata - LCD prikazovalnik 4x20 znakov s nastavitvijo kontrasta in krmiljeno osvetlitvijo - 8 tipk Na sliki 3.1 smo podali blokovno shemo K-PANEL-a. Na slikah 12 in 13 pa sta fotografiji. V naslednjih poglavjih pa smo podrobneje opisali sklope.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 14 3.1 Blokovna shema K-PANEL-a in slike K-PANEL ima manj funkcij in manj zahtevnejše operacije kot K-CPU (glej sliko 3.1). Zato smo uporabili manjši in počasnejši mikrokrmilnik iz Microchipove družine 16Fxx. Za razliko od modula K-CPU, imamo pri panelu elemente na obeh straneh zaradi same montaže. Na prednji strani (slika 3.2) so tipke in LCD, na zadnji strani pa vsi ostali elementi (slika 3.3). Slika 3.1: blokovna shema K-PANEL-a

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 15 Slika 3.2: prednja stran K-PANEL-a Slika 3.3: zadnja stran K-PANEL-a

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 16 3.2 Mikrokrmilnik PIC16F876A Je eden izmed predstavnikov srednjega velikostnega razreda 16Fxx družine Microchipovih osem bitnih mikrokrmilnikov. Je v 28-polnem I/P (glej sliko 3.4) podnožju s kristalom za urin takt 20Mhz. Program nalagamo preko ICSP konektorja. Osnovne karakteristike PIC16F876A smo opisali v tabeli 3.1. Slika 3.4: razpored pinov mikrokrmilnika PIC16F876A Tabela 3.1: osnovne karakteristike mikrokrmilnika PIC16F876A Maksimalna delovna frekvenca 20 MHz Programski pomnilnik 8 kb Delovni pomnilnik 368 Byte EEPROM pomnilnik 256 Byte Število možnih prekinitev 14 Vhodni izhodna vrata (PORT) A, B, C Časovniki 3 PWM, komparatorji 2 Serijska komunikacija MSSP, USART Paralelna komunikacija PSP 10 bitni A/D pretvornik 5 kanalov Reset funkcije, dodatne funkcije POR, BOR, PWRT, OST, LVP, ICSP Število instrukcij 35

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 17 3.3 LCD prikazovalnik Uporabili smo DEM 40286 LCD prikazovalnik s štirimi vrsticami po dvajset znakov. Mikrokrmilnik je z LCD-jem povezan s štirimi podatkovnimi linijami D0 D3 ter dvema kontrolnima linijama (ena javlja veljavnost podatkov (E)nable, druga pa če je podatek ali instrukcija - RS ). Ker vedno pišemo na LCD, smo signal za izbiro pisanja ali branja RW postavili na '0' in tako določili pisanje (glej sliko 3.5). LCD ima tudi osvetlitev, ki jo vklopimo s mikrokrmilnikom preko NPN tranzistorja. Dodali smo še potenciometer za nastavitev kontrasta. LCD D0-D3 R/S E W 0VDC +5VDC NASTAVITEV KONTRASTA VKLOP OSVETLITVE MIKROKRMILNIK PIC16F876A Slika 3.5: povezava med mikrokrmilnikom in LCD

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 18 3.4 Ostali sklopi panela Uporabili smo tudi osem tipk, ki so s "pulldown" upori povezane na mikrokrmilnik. ICSP in komunikacijska vrata sta opisana v prejšnjem poglavju. Na panelu imamo tudi RESET tipko. Panel se napaja iz K-CPU, saj napetostni nivo ustreza. Dodali smo samo zaščito pred prenapetostjo in reverzno polariteto ter glajenje za manjša nihanja v napajalni napetosti.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 19 4. PROJEKT OVIJANJA ROBA Izdelani programirljivi logični krmilnik smo uporabili pri avtomatizaciji stroja za ovijanja roba. Ta projekt je bil primeren za naš krmilnik, ker potrebujemo digitalne vhode in izhode, zajemanje pozicije z inkrementalnim dajalnikom, analogni izhod ter panel. Če bi uporabili komercialni PLC sistem bi potrebovali : - CPU enoto - digitalno vhodno/izhodno enoto - analogno izhodno enoto - modul s hitrim števcem - panel Ker potrebujemo manjše število digitalnih vhodov in izhodov, zajemanje samo ene pozicije in generiranje samo enega analognega izhoda, lahko uporabimo izdelani krmilnik. PLC sistem bi bil v tem primeru dosti dražji. Vhodi in izhodi pa bi bili delno uporabljeni. V nadaljevanju smo opisali stroj in podali fotografije. Električne sheme krmilja so v prilogi 5. 4.1 Opis stroja za ovijanje roba Stroj ovija robove na cisternah različnih premerov in višin. Ovoj cisterne vstavimo v stroj. Spodnje orodje ima reže s premeri cistern, zgornje orodje pa krivine istih premerov. Zgornje orodje nato pomikamo navzdol in stiskamo ovoj in zgornji rob se prične ovijati (slika 4.1 in fotografija na sliki 4.4). Spodnje orodje je fiksirano na podnožje stroja. Zgornje orodje je pomično in preko matic povezano na štiri vretena. Vse štiri matice poganjamo oziroma vrtimo z motorjem preko verige in s tem pomikamo zgornje orodje, na katerega je pritrjen pogon. Motor preko reduktorja poganja verigo. Reduktor ima veliko prestavno razmerje in ni potrebno uporabljati zavore na motorju.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 20 Potek pozicioniranja je prikazan na sliki 4.2. Zgornje orodje se pomika z maksimalno hitrostjo do začetka krivljenja oziroma do roba cisterne. Do roba cisterne se mora hitrost zmanjšati in nadaljevati z manjšo hitrostjo, s katero se izvaja krivljenje. Ta hitrost se določa glede na premer cisterne in debelino pločevine, iz katere je cisterna narejena. začetek krivljenja začetna pozicija konec krivljenja Slika 4.1: shema stroja za krivljenje cistern

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 21 v v max vračanje v začetno pozicijo pomik do začetka krivljenja v kriv krivljenje začetna poz. začetka poz. konca pozicija krivljenja krivljenja pozicija Slika 4.2: potek krivljenja roba 4.2 Blokovna shema in slike stroja za krivljenje roba Na sliki 4.3 je prikazana blokovna shema krmilja. Fotografiji krmilja in krmilne omare sta na slikah 4.5 in 4.6. Krmilje sestavljajo naslednji sklopi : - stikalo zasilni izklop in tipka RESET za resetiranje zasilnega izklopa (povezani sta na Preventin modul za zasilni izklop) - modul za zasilni izklop preverja morebitno aktiviranje zasilnega izklopa in njegov RESET oziroma potrditev (v primeru zasilnega izklopa izklopi napajanje krmilja) - za napajanje smo uporabili Siemensov napajalnik logo power - za izbiro načina delovanje smo uporabili preklopno stikalo ter tipki za ročni pomik - induktivna stikala smo uporabili za zaznavanje končnih položajev in referenčno položaj - dve tipki smo uporabili za dvoročni vklop, ki sta na svoji konzoli - panel je preko RS232 komunikacije povezan na K-CPU in je montiran kar na glavni krmilni omari - uporabili smo Siemensov frekvenčni pretvornik MicroMaster 440, ki ga krmilimo z digitalnimi signali in PWM izhodom

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 22 - za pogon smo uporabili trifazni asinhronski motor moči 550W - pozicijo merimo s inkrementalnim dajalnikom, ki je sklopljen z osjo rotorja trifaznega motorja Slika 4.3: blokovna shema krmilja

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 23 Slika 4.4: fotografija stroja Slika 4.5: fotografija krmilne omare

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 24 Slika 4.6: fotografija krmilja

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 25 5. OPIS DELOVANJA K-PANEL-A 5.1 Kratek opis K-PANEL-a Program za K-PANEL je splošen in ni namenski, saj izpisuje samo tisto, kar sprejme po RS232 komunikaciji in pošilja po njej, katera od tipk je pritisnjena. Vklopi pa tudi osvetlitev za določen čas ob pritisku tipke ali pri spremembi izpisa na panelu. Ta program, ki smo ga razvili za panel, bomo lahko uporabljali tudi pri drugih projektih. 5.2 Protokol komunikacije za K-PANEL Panel komunicira s K-CPU po RS232 komunikaciji s hitrostjo 38400 baud. Panel sprejema dve vrsti podatkov, instrukcije in ASCII znake za izpis. Za primer izpisa glej tabelo 5.1. Znaki za izpis se prehodno shranijo v polje 4x20 znakov in se ob določeni instrukciji prenesejo izpišejo na LCD zaslon. Za instrukcije smo izbrali vrednosti manjše od 17 oz. 0x11 (HEX) in sicer : - od 0x00 do 0x03 : izbira vrstice izpisa in postavitev kazalca polja na začetek le-te - 0x0B : brisanje polja za izpis na LCD - 0x0C : brisanje LCD prikazovalnika - 0x0D : prenos izpis podatkovnega polja na LCD - 0x0F : K-CPU preverja prisotnost panela oz. testira komunikacijo (odgovor je 0x0A) - 0x11 : zahteva za RESET panela Ob detekciji pozitivne stranice na vhodu (pritisnjena tipka) se po komunikaciji pošlje znak, določen za pritisnjeno tipko (glej tabelo 5.2).

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 26 Tabela 5.1: primer začetka izpisovanja na LCD : Instrukcija Tekst ASCII znaki Opis "0x0F" "0x0B" "0x0C" Test komunikacije Brisanje podatkovnega polja Brisanje LCD prikazovalnika "0x00" Tekst 20 ASCII znakov Znaki za izpis v prvo vrstico podatk. polja "0x01" Tekst 20 ASCII znakov Znaki za izpis v drugo vrstico podatk. polja "0x02" Tekst 20 ASCII znakov Znaki za izpis v tretjo vrstico podatk. polja "0x03" Tekst 20 ASCII znakov Znaki za izpis v četrto vrstico podatk. polja "0x0D" Prenos izpis podat. polja na LCD Tabela 5.2: ASCII znaki, ki jih pošljemo ob pritisku na tipko Pritisnjena tipka "F1" "F2" "F3" "F4" "OK" "ESC Poslan ASCII znak '1' '2' '3' '4' 'o' 'e' "+" 'p' "-" 'm'

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 27 5.3 Opis povezave mikrokrmilnika in LCD prikazovalnika Z LCD prikazovalnikom komuniciramo preko šestih I/O linij. Uporabili smo signal RS (izbira tipa podatka instrukcija/podatek), enable (njegova negativna stranica nam določa veljavnost podatkov) ter D0 D3 (štiri podatkovne linije za prenos podatkov). Linijo za določanje pisanja ali branja LCD prikazovalnika smo električno povezali na "0" in s tem za stalno določili pisanje (glej sliko 5.1). Pripravili smo naslednje funkcije, ki jih uporabljamo za izpisovanje: - inicializacija LCD prikazovalnika (RESET, nastavitev prenosa, izklop kurzorja, smer pomikanje kazalca) - pošiljanje 8-bitnega podatka z dvakratnim 4-bitnim prenosom pri katerem določimo, če je podatek ali instrukcija - brisanje LCD ja - izbira vrstice za izpis - pošiljanje znaka (ob vsakem izpisanem znaku se izvede pomik kazalca v desno) PIC16F876 4-bitno podatkovno vodilo LCD D0 D3 LCD RS (instr./podatek) LCD ENAB. (veljavnost podat.) LCD "0" LCD R/W (pisanje/branje) 4x20 znakov LCD TRIM (nastav. kontrasta) K-PANEL Osn. plošča Napajanje LCD Osvetlitev Slika 5.1: shema povezave med LCD in mikrokrmilnikom

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 28 5.4 Tipke K-PANEL-a Odločili smo se za osem tipk, ki nam omogočajo izbire menijev, vnose vrednosti, izbire načina delovanja Določili smo štiri funkcijske tipke (F1 F4) in jih postavili pod LCD prikazovalnik. Izbrali smo še tipki "+" in "-" za vnos vrednosti ter tipki "OK" in "ESC" za potrditev ali preklic vnosa. Tipke so z "pull-down" upori priklopljene na vhodne linije mikrokrmilnika (glej prilogo 2 - shema K-PANEL-a). Kadar je tipka pritisnjena, je na vhodu stanje "1", kadar je tipka spuščena je preko bremenskega upora stanje "0". Vhode tipk tipamo intervalno in zaznavamo pozitivno stranico v prekinitvi "timer2" in sicer vsakih 10 ms. Prehoden pojav pri pritisku tipke traja nekaj milisekund. Če tipamo vhode tipke v intervalu, ki je večji od 5 ms, preprečimo večkratno zaznavanje stranice pri prehodnem pojavu pritiskanja ali spuščanja tipke. Zaznana stranica pritisnjene tipke nato aktivira pošiljanje pripadajočega ASCII znaka po RS232 komunikaciji (glej tabelo 5.2). S števci zaznavamo, če je tipka pritisnjena dalj časa. Takrat pošiljamo še več ASCII znakov, dokler ni spuščena. 5.5 Osvetlitev ozadja Osvetlitev ozadja krmili mikrokrmilnik preko NPN tranzistorja (glej prilogo 2 shema K-PANEL-a). Osvetlitev porablja dokaj veliko toka (200mA 500mA), zato smo dodali tudi možnost zunanjega napajanja za osvetlitev. Osvetlitev se nam vklopi za določen čas ob vsakem pritisku tipke ali vsaki spremembi izpisa na LCD prikazovalniku. Čas osvetlitve smo določili programsko glede na "TIMER2".

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 29 6. PROGRAM K-PANEL 6.1 Kratek opis programa Program za K-PANEL ni zelo obsežen, zato so prekinitve, funkcije in glavni program v isti datoteki "K-PANEL-16f876a.c". Samo funkcije za LCD smo napisali v ločeno datoteko "lcd_v2.c". Programu še pripadata datoteki z definicijami "K-PANEL-16f876a.h" ter CCS-ova priložena knjižnica za mikrokrmilnik "16F876A.h". Nastavitve se nahajajo na začetku glavnega programa. Nastavitve pripravi čarovnik za ustvarjanje novih projektov. Prav tako je še nekaj definicij, ki so v pripadajoči datoteki z definicijami. Te so : - analogni vhodi : brez - analogni izhodi : brez - nastavitve časovnikov : "timer2" (nastavljen na 10ms) - nastavitve mikrokrmilnika "fuses" način delovanja : oscilator, zaščita pomnilnika, časovni stražnik - definicija urinega cikla za izračun zakasnitev pri funkciji "delay" - nastavitve RS232 komunikacije - ostale definicije : konstante, imena pinov 6.2 Opis prekinitev programa za K-PANEL Uporabili smo dve prekinitvi (glej sliko 6.1). Eno uporabljamo za sprejem podatkov preko serijske komunikacije in s tem povezane operacije. Drugo pa za operacije, ki so vezane na tipanje vhodov in izvajanje glede na določene čase. Prekinitev "RDA_isr" se proži ob sprejemu podatka preko serijske komunikacije v sprejemni medpomnilnik. V prekinitvi se, glede na prejeti kontrolni znak, neposredno izvajajo naslednje operacije: RESET procesorja, brisanje LCD prikazovalnika, postavljanje kazalca glede na zahtevano vrstico, shranjevanje ASCII znakov v polje za izpis, aktiviranje

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 30 osvetlitve ozadja. Zahtevnejše operacije se izvajajo posredno preko postavljenih bitov zastavic v glavnem programu. Te operacije so: brisanje podatkovnega polja za LCD in prenos podatkov za izpis na LCD. V prekinitvi "TIMER2", ki se sproži vsakih 10 ms, se izvaja detekcija pritisnjenih tipk oziroma stranic na vhodih. Prav tako se izvaja zaznavanje držanja tipke, pri katerem samodejno pošiljamo znake po serijski komunikaciji v določeni periodi. Poleg tipk je še "timer" za vklop in izklop osvetlitve prikazovalnika. Slika 6.1: diagram prekinitev za program K-PANEL 6.3 Funkcije programa K-PANEL V osnovni datoteki smo kodirali nekaj osnovnih funkcij, ki so nam omogočale lažje in preglednejše programiranje. Diagram stanja smo podali na sliki 22. Algoritmi programov so v prilogi 3. Napisali smo naslednje funkcije : - prizgi_back_led(): vklop osvetlitve in reset časovnika za osvetlitev - reset_tipk(): brisanje vseh bitov za pritisnjene tipke - lcd_logo(): izpis osnovnega izpisa na LCD - polje0(): brisanje podatkovnega polja LCD oz. napolnitev s presledki

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 31 Pripravili smo si tudi datoteko s funkcijami za operiranje z LCD prikazovalnikom. To so naslednje funkcije : - LCD_poslji_nib(int1 rs,int8 nib): funkcija pošlje "nibble" na LCD prikazovalnik, s bitom "rs" pa določamo če je "nibble" del kontrolnega ali podatkovnega znaka - LCD_poslji(int1 rs, int8 Byte): funkcija pošlje kontrolni ali podatkovni znak na LCD z uporabo prejšnje funkcije - LCD_init(): funkcija izvede reset in začetno inicializacijo LCD (nastavitev 4- bitnega prenosa, izbira font-a za izpisovanje, tip kurzorja ) - LCD_vr(int8 vrstica): funkcija pošlje ustrezen byte za postavitev na začetek vrstice LCD-ja za izpisovanje - LCD_clr(): funkcija pobriše LCD prikazovalnik - LCD_izpis(int8 znak): funkcija z uporabo LCD_poslji (), pošlje znak za izpis na LCD V glavnem programu main() se izvedejo naslednje operacije: - nastavitev časovnikov in prekinitev - vklop led diode "OP_LED", ki nam signalizira delovanje K-PANEL-a - inicializacija LCD prikazovalnika - brisanje LCD in polja znakov - neskončna "while" zanka, v kateri se izvaja: o glede na zaznane pritiske tipke v prekinitvi, pošiljamo ustrezne ASCII znake preko RS232 serijskih komunikacijskih vrat o pošiljanje dodatnih ASCII znakov glede na "timer-je", če je tipka pritisnjena določen čas držanje tipke o glede na zaznano zahtevo, izvedemo brisanje polja za izpis na LCD o glede na zahtevo za prenos (izpis), prenesemo podatke iz polja na LCD

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 32 7. PROGRAM K-CPU 7.1 Kratek opis programa za krmilnik (K-CPU) Glavna naloga krmilja (program K-CPU) je pomikanje oz. pozicioniranje zgornjega orodja, v katerem se ukrivlja zgornji rob cisterne. Krmilje omogoča izvajanje avtomatskega delovanja z dvoročnim vklopom. Prav tako omogoča ročno upravljanje, referenciranje, vnos nastavitev in programov krivljenja. Program izvaja naslednje naloge : - ročno in avtomatsko delovanje s posredovanjem preko tipk, ki so priklopljene na digitalne vhode ter s tipkami K-PANEL-a - proženje avtomatskega delovanja z dvoročnim vklopom - zajemanje pozicije z inkrementalnim dajalnikom preko digitalnih vhodov - krmiljenje motorja s Siemensovim frekvenčnim regulatorjem, ki je s K-CPU povezan preko digitalnih vhodov in izhodov ter krmiljen z PWM izhodom - vnos nastavitev, parametrov in programov krivljenja ter spremljanje pozicije in alarmov preko K-PANEL-a Pri opisu programa smo si pomagali z diagrami prehajanja stanj in opisom algoritmov z diagrami poteka. Podali smo le najosnovnejše diagrame stanj. Zaradi obsežnosti programa smo podali le algoritme najpomembnejših funkcij. 7.2 Določitev vhodov in izhodov Pri določanju vhodov in izhodov smo bili omejeni le pri vhodih za enkoder in analognem izhodu. Impulza A in B inkrementalnika smo morali povezati na digitalna vhoda, ki sta povezana na PORTB mikrokrmilnika, zaradi uporabe prekinitve ob spremembi stanja na vhodu. To nam omogoča maksimalno hitrost zaznavanja impulzov na vhodih. Tako smo uporabili vhoda DI10 in DI11. Analogni izhod pa je na voljo pri digitalnem izhodu DO13 in DO14. Za razpored vhodov in izhodov glej tabeli 7.1 in 7.2.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 33 Tabela 7.1: vhodi K-CPU Vhod Programska definicija vhoda Opis vhoda DI1 DI_ROCNO Izbirno stikalo - ročni način delovanja DI2 DI_AVTO Izbirno stikalo - avtomatski način delovanja DI3 DI_DOL Tipka ročni pomik dol DI4 DI_GOR Tipka ročni pomik gor DI5 DI_MM_OK Frekvenčni regulator pripravljen DI6 DI_REF Referenčni senzor DI7 DI_KS_SP Končni senzor spodaj DI8 DI_KS_ZG Končni senzor zgoraj DI9 DI_RESET Tipka reset dodatna opcija DI10 DI_ENK_A Inkrementalni dajalnik impulz A DI11 DI_ENK_B Inkrementalni dajalnik impulz B DI12 DI_ENK_Z Inkrementalni dajalnik impulz Z DI13 DI_DVV1 Dvoročni vklop prva tipka DI14 DI_DVV2 Dvoročni vklop druga tipka DI15 DI_VRATA Senzor tipka Tabela 7.2: izhodi K_CPU Izhod Programska definicija izhoda Opis vhoda DO1 DO_MM_EN Vklop frekvenčnega regulatorja DO2 DO_MM_REV Izbira smeri vrtenja - regulator DO3 DO_MM_RES Reset frekvenčnega regulatorja DO4 DO_ERR Signalna lučka napaka - okvara K-PANEL smo povezali preko RS232 komunikacijskih vrat. Komunikacijska vrata so s RS232/TTL pretvornikom povezana na pina C6 in C7. Prav tako preko istega konektorja napajamo K-PANEL s 5V. PWM izhodni signal pa povežemo preko sponk DO14 (brez optosklopnika).

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 34 7.3 Prekinitve programa K-CPU Uporabljamo tri prekinitve in so zajete v datoteki prekinitev. Opravila v prekinitvah so kratka in nujno potrebna oz. neposredno povezana z vhodi in izhodi. Prikazali smo jih na sliki 7.1. Algoritmi prekinitev so v prilogi 4. Posamezne prekinitve smo opisali v naslednjih poglavjih. Slika 7.1: diagram prekinitev programa K-CPU 7.3.1 Prekinitev Timer 1 Prekinitev uporablja "timer1", ki ga nastavimo z deljenjem osnovnega takta na 13 ms, kar nam zadošča za naslednja opravila : - splošno namenski "timer" timer1 - zajemanje vhodov (dvoročni vklop, tipke, končna stikala, frekvenčni regulator, ) - pošiljanje podatkov iz programskega medpomnilnika panela (glej poglavje 6) - postavljanje izhodov (signalizacija ter vklop, smer in reset regulatorja) - generiranje splošne napake

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 35 7.3.2 Prekinitev INT_RB Prekinitev "INT_RB" se sproži ob spremembi stanja na kateremkoli pinu PORTB. Zato imamo v tej prekinitvi opravilo, ki mora biti najbolj odzivno in ne sme izgubiti niti enega impulza na vhodu. To je zajemanje impulzov enkoderja. Inkremente in dekremente zajemamo s štirikratno ločljivostjo (vsaka stranica impulzov je inkrement ali dekrement). Glej sliko 7.2. A B Inkrementi: 1) A pozitivna stranica in B = 0 2) B pozitivna stranica in A = 1 3) A negativna stranica in B = 1 4) B negativna stranica in A = 0 B A Dekrementi: 1) B pozitivna stranica in A = 0 2) A pozitivna stranica in B = 1 3) B negativna stranica in A = 1 4) A negativna stranica in B = 0 Slika 7.2: diagram impulzov za detekcijo inkrementa ali dekrementa V prekinitvi zajemamo cel PORTB v byte. Preko testiranja bitov izluščimo bita, ki sta impulza A in B enkoderja. Ta dva bita postavljamo v byte, kjer zaznavamo inkremente in dekremente. Za nas so bistveni zadnji štirje biti. Operiranje z biti in detekcija sta prikazana v naslednjem poteku, kjer sta A in B trenutni stanji impulzov, Ap in Bp pa sta prejšnji stanji iz predhodne prekinitve. Dodane so celoštevilčne vrednosti bitnih vrednosti, ki so določene glede na prej opisane inkremente in dekremente (glej tabelo 7.3).

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 36 Postavljanje bitov: Tabela 7.3: zaznavanje inkrementa in dekrementa imp.a imp.b 0 0 0 0 A Ap B Bp Detekcija inkrementa: 1) 0 0 0 0 1 0 0 0 = 8 2) 0 0 0 0 1 1 1 0 = 14 3) 0 0 0 0 0 1 1 1 = 7 4) 0 0 0 0 0 0 0 1 = 1 Detekcija dekrementa: 1) 0 0 0 0 0 0 1 0 = 2 2) 0 0 0 0 1 0 1 1 = 11 3) 0 0 0 0 1 1 0 1 = 13 4) 0 0 0 0 0 1 0 0 = 4 Pomik bitov desno : 0 0 0 0 0 0 A Ap B Nato ta cikel izvršujemo ob vsaki prekinitvi oz. spremembi stanja impulza A ali B. Po vsaki postavitvi bitov izvedemo detekcijo in pomik bitov, da imamo pripravljena prejšnja stanja za novo postavitev in detekcijo. Ob vsaki detekciji inkrementa ali dekrementa to operacijo izvedemo z 32-bitno spremenljivko, kjer imamo trenutno pozicijo v štirikratni ločljivosti glede na impulze enkoderja, saj imamo na en impulz AB štiri stranice.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 37 7.3.3 Prekinitev INT_RDA Ta prekinitev se izvede, kadar je sprejet nov byte v RS232 sprejemni medpomnilnik. V tej prekinitvi vzamemo samo znak iz sprejemnega medpomnilnika in ga shranimo v spremenljivko ter si postavimo kontrolni bit, da je bil sprejet nov podatek. Izvajamo tudi RESET števca kosov v avtomatskem načinu delovanja. 7.4 Komunikacija s modulom K-PANEL S panela prejemamo podatke preko prekinitve, ki se proži ob sprejemu novega podatka v sprejemni medpomnilnik. Na panel pošiljamo podatke preko vmesnega programskega medpomnilnika (glej tabelo 7.4). 0x01 Tabela 7.4: shema programskega medpomnilnika za pošiljanje na K-PANEL prva vrstica druga vrstica tretja vrstica četrta vrstica 20 byte ASCII 0x02 20 byte ASCII 0x03 20 byte ASCII 0x04 20 byte ASCII 00 01-19 20 20-40 41 42-61 62 63-83 inkrementalni kazalec za pisanje z nastavitvami (0x01 00; 0x02 20; 0x03 41; 0x04 62) kazalec za pošiljanje (inkrement = 3) 28*3 ; 29 0x0D V datoteki "K-PANEL.c" je funkcija "kp_izpis()", ki s pomočjo kazalca za pisanje piše v medpomnilnik. Kadar funkcija prejme byte vrednosti 0x01 0x04, se kazalec postavi na mesto, kjer se določena vrstica prične. Če znak ni te vrednosti, se njegova vrednost vpiše v medpomnilnik in kazalec se poveča za ena.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 38 V prekinitvi timer1 se ciklično pošilja vsebina medpomnilnika na K-PANEL in tako se osvežuje izpis na panelu. Podatke pošiljamo v paketu po 3 byte, saj ima mikrokrmilnik v K-PANEL-u 3 byte sprejemnega medpomnilnika. Za pošiljanje uporabljamo kazalec, ki se povečuje za vrednost 3. Prenos torej izvedemo 28-krat in devetindvajsetič prenesemo byte 0x0D, kar pomeni izpis iz programskega medpomnilnika panela na LCD. Celoten prenos vsebine programskega medpomnilnika (celoten izpisa na LCD) izvedemo v devetindvajsetih prekinitvah Timer1, kar je 377 ms. 7.5 Razne funkcije V datoteki "mob_rob_fnc.c" imamo tri splošne funkcije. Prva je "izracun_dej_poz()". Funkcija izvede izračun trenutne pozicije v mm iz impulzov enkoderja. Obe vrednosti sta globalni spremenljivki. Dejanska pozicija je realnega (float) tipa, števec enkoderja pa 32 bitna celoštevilčna spremenljivka. Razmerje med veličinama zapišemo v konstanto. dej_poz_mm = ((float) enk_poz) K_ENK Naslednja funkcija je "set_hitrost (signed int16 hitrosti_in)". Funkcija glede na določeno hitrost postavi PWM izhod in digitalni izhod za določitev smeri regulatorju. Vhodno vrednost funkcije najprej limitiramo v območju od -100% do +100%. Najprej postavimo digitalni izhod za smer. Nato postavimo PWM izhod, ki je absolutna vrednost od 0 do 1023 glede na želeno hitrost. Pri čemer je 100% - 1023 na PWM izhodu. Zadnja funkcija je "status_bar()". Ta nam v serijski programski medpomnilnik pripravi izpis za tretjo in četrto vrstico. V tretjo vrstico izpišemo stanje končnih stikal in frekvenčnega regulatorja. V četrto vrstico pa dejansko pozicijo v milimetrih na desetinko točno in hitrost gibanja v procentih.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 39 7.6 Ročno delovanje in iskanje reference V datoteki "moh_rob_rocno.c" so funkcije za ročno pomikanje in referenciranje. Delovanje ročnega načina bomo najprej predstavili z diagramom stanj (glej slika 7.3). Nato bomo še na kratko opisali funkcije. Slika 7.3: diagram stanj - ročno delovanje Prva funkcija je "referenciranje()", ki najprej iz petih lokacij EEPROM-a prebere vrednost referenčne točke. Nato izpiše, da se izvaja referenciranje, ki ga lahko prekinemo s tipko "ESC". Referenciranje se izvaja dokler ni končano, oziroma se ne prekine zaradi izpada regulatorja, aktiviranje končnega stikala, odprtih vrat ali pritiska na tipko "ESC".

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 40 Iskanje reference (referenciranje) se izvaja v petih fazah oziroma statusih (za potek hitrosti in digitalnih vhodov glej sliko 7.4) : 1. iskanje referenčnega stikala z veliko hitrostjo, ki je zapisana kot konstanta 2. ustavitev gibanja 3. pričetek iskanje ničtega impulza z majhno hitrostjo v drugo smer (ko je najden ničti impulz, se trenutna pozicija postavi na referenčno vrednost) 4. ustavitev, referenciranje je uspelo 5. izhod iz referenciranja Vmax Vref pozicija DI "ničti impulz" referenčna točka referenčni senzor Slika 7.4: časovni diagram referenciranja

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 41 Pospeševanje in zaviranje ne izvajamo z mikrokrmilnikom ampak s pospeškom in pojemkom, ki sta nastavljena na regulatorju. Pospeševanje in zaviranje generiramo samo pri pozicioniranju v avtomatskem delovanju. Torej pri referenciranju na PWM izhod generiramo stopničasti prehod hitrosti. Algoritem funkcije za referenciranje je v prilogi 4. Funkcija "rocno_bar1()" izpiše v prvo vrstico nastavljeno hitrost za ročni pomik. V drugo vrstico pa se izpiše stanje vrat. Če so zaprta se izpiše možnost proženja referenciranja. Funkcija "rocno_meni()" nam omogoča ročni pomik, če niso aktivirana končna stikala, in če je frekvenčni regulator pripravljen. Če so vrata zaprta nam omogoča tudi referenciranje. Hitrost ročnega pomika lahko nastavljamo s tipkama "+" in "-". 7.7 Pripravljenost nastavitve, programi, števci in izklop 7.7.1 Delovanje pripravljenosti in shranjevanje podatkov v EEPROM Datoteka "mob_rob_idle.c" vsebuje vse potrebno za zapisovanje oz. vnos nastavitev, programskih pozicij in parametrov v EEPROM. V EEPROM shranjujemo 8-bitne in 16-bitne vrednosti v binarni obliki. Float vrednosti pa zapišemo v desetiški obliki (ASCII niz), zaradi lažjega vnašanja in izračuna. Razpored oz. določitev uporabe lokacij EEPROM pomnilnika smo podali v tabeli 7.5. Vnos nastavitev je možen kadar ni izbrano ne ročno in niti avtomatsko delovanje. V tem režimu je prav tako mogoč pregled in nastavitev števcev, programov ter priprava na izklop stroja. Delovanje smo podali v diagramu stanj na sliki 7.5. Nato smo opisali delovanje funkcij, ki jih uporabljamo stanju pripravljenosti.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 42 Tabela 7.5: razpored EEPROM pomnilniških lokacij Namembnost Program krivljenja št. 1 Program krivljenja št. 2 Program krivljenja št. 17 PROSTO Lokacija EEPROM-a 0 9 10 19 160 169 Pozicija enkoderja (32-bitna vrednost) 195 196 197 198 PROSTO 16-bitni števec 1 16-bitni števec 2 16-bitni števec 17 Referenčna točka Parametri (nastavitve) pozicioniranja PROSTO 200 201 202 203 232 233 241 242 243 244 245 246 247 254

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 43 vnos nastavitev geslo pravilno geslo pravilno pregled ali reset števcev preveri geslo preveri geslo izhod ali vklop avto oz. ročno F1 geslo nastavitve neprav. geslo neprav. F4 števci izhod ali vklop avto oz. ročno tipka '+' pripravljenost idle_meni() tipka dol in vsi pogoji izbira naslednjega programa tipka spuščena ali manjka pogoj priprava na izklop tipka '-' tipka spuščena ali manjka pogoj tipka gor in vsi pogoji izbira predhodnega programa vnos programa Slika 7.5: diagram stanj za pripravljenost nastavitve, programi, števci in izklop 7.7.2 Števci izdelkov, nastavitve in vnos programov Funkcija "int16 beri_stevec(int8 adresa)" prebere števec oz. 16-bitno vrednost iz EEPROM. 16-bitno vrednost sestavimo iz dveh lokacij EEPROM-a (zgornji in spodnji byte). Za shranjevanje 16-bitnih vrednosti smo rezervirali prostor v EEPROM-u od lokacije 200 do 240. Funkcija "zapisi_stevec(int8 adresa, int16 w_stevec)" zapiše števec oz. 16-bitno vrednost v EEPROM. Števec najprej razstavimo za zgornji in spodnji byte in ju zapišemo na določeni lokaciji. Vsak števec tako zapišemo na dve prej omenjeni lokaciji.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 44 Funkcija "preberi_nastavitve()" prebere nastavitve za pozicioniranje (maksimalna, minimalna in hitrosti krivljenja ter razdalja pospeševanja, zaviranja, finega pozicioniranja ter krivljenja). Ko vrednosti preberemo iz EEPROM-a, jih preverimo. Če odstopajo iz dovoljenega območja jih nastavimo na privzeto vrednost. Funkcija "zapisi_nastavitve()" zapiše prej omenjene vrednosti v EEPROM in sicer od lokacije 246 naprej. Nastavitve so 8-bitne vrednosti, torej zasedajo po eno lokacijo v EEPROM-u. Funkcija "zapisi_prg(int8 adresa)" zapiše v EEPROM določen program krivljenja, ki ga predhodno vnesemo. Program sestavlja deset 8-bitnih vrednosti in zasede 10 lokacij EEPROM-a. Za shranjevanje programov smo rezervirali lokacije od 0 do 200. Funkcija "preberi_prg(int8 adresa)" prebere 10 lokacij EEPROM-a, ki predstavljajo določen program. Iz prebranih vrednosti se izračunajo vrednosti za program krivljenja, ki se potem shranijo v globalne spremenljivke. Adresa predstavlja zaporedno številko programa krivljenja. Funkcija "idle_bar1()" izvede začetni izpis na panel za idle meni. Funkcija "underline(int8 under_ptr)" postavi kurzor na želeno pozicijo v četrti vrstici, ki kaže na določeno mesto tretje vrstice, kjer vnašamo oz. spreminjamo številko. Funkcija "vnesi_prg()" nam omogoča vnos oz. spreminjanje programa. Vnašamo program, ki smo ga aktivirali izbrali v osnovnem meniju pripravljenosti "idle_meni()". Vrednost, ki jo želimo spremeniti izbiramo s tipko "F4" (izhodiščno pozicijo ali pozicijo krivljenja). Pri poziciji krivljenja še določimo hitrost krivljenja. Vrednost vnašamo tako, da s tipkama "F1" in "F2" premikamo kurzor in se postavimo na številko vrednosti, ki jo želimo spremeniti. Številko spreminjamo s tipkama "+" in "-". Vnos potem potrdimo s tipko "OK" in ga shranimo v EEPROM. S tipko "ESC" pa prekinemo in prekličemo vnos.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 45 S funkcijo "vnesi_rt()" vnesemo, oziroma spremenimo pozicijo referenčne točke. Najprej jo preberemo v ASCII obliki iz EEPROM-a. Vnos oz. spreminjanje vrednosti izvedemo enako kot pri vnašanju programa (glej funkcijo "vnesi_prg()"). S funkcijo "vnesi_nastavitve()" vnašamo nastavitve. S tipko "F4" izberemo parameter oz. nastavitev, ki jo želimo spremeniti. Kot zadnji parameter je možno spremeniti referenčno točko. Vsi parametri so osem-bitne vrednosti, razen referenčne točke za vnos katere pa imamo funkcijo "vnesi_rt()". Izbrani parameter spreminjamo s tipkama "+" in "-". S tipko "OK" shranimo spremembe v EEPROM. Tipka "ESC" pa prekine vnos ter obnovi stare vrednosti parametrov. Funkcija "int1 preveri_geslo()" zahteva vnos gesla preko panela. Zaporedno številko gesla izbiramo s tipkama "F1" in "F2". Vrednost izbrane številke pa spreminjamo s tipkama "+" in "-". Vnos potrdimo s tipko "OK". Vnesena vrednost se potem preveri s tisto, ki je zapisana v mikrokrmilniku. Če sta vrednosti enaki, funkcija vrne vrednost "1", v nasprotnem primeru vrne vrednost "0". S tipko "ESC" prekinemo vnos gesla. Gesla ni možno spreminjati, saj je določeno v samem programu mikrokrmilnika. Funkcija "pregled_stevcev()" je namenjena samo proizvajalcu stroja. Omogoča pregled števcev, ki štejejo število izdelkov glede na vsak program. S tem je omogočeno sledenje delovanju stroja in obrabi orodij glede na program izdelka. Števce pregledujemo s tipkama "+" in "-". Tipka "ESC" konča pregled števcev, tipka "OK" pa pobriše vrednosti vseh števcev. 7.7.3 Priprava na izklop Funkcija "izklop()" je nastala iz zahteve proizvajalca, da ne bi bilo potrebno pri vsakem vklopu naprave ponovno izvajati referenciranje. Funkcija zapiše trenutno pozicijo v EEPROM in blokira delovanje stroja, da ne bi prišlo do premika po zapisu pozicije v EEPROM. S tem preprečimo napačno pozicijo ob ponovnem vklopu. Če pride do premika, je potrebno izvesti referenciranje.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 46 7.7.4 Osnovni meni pripravljenosti Funkcija "idle_meni()" izvede preventivni izklop regulatorja, ker jo uporabljamo v stanju pripravljenosti. Izpiše nam osnovni meni, v katerem lahko izbiramo med naslednjimi možnostmi : - "F1" : vnos programov krivljenja - "F2" : priprava na izklop naprave - "F3" : vnos nastavitev (potrebno je vnesti geslo) - "F4" : pregled števcev (potrebno je vnesti geslo) - "+" / "-" : aktiviramo oz. izberemo program za avtomatsko delovanje ali vnašanje oz. spreminjanje