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

PROGRAMIRLJIV LOGIČNI KRMILNIK NA OSNOVI …

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

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: Anton Jug

Študijski program: VS ŠP Elektrotehnika

Smer: Avtomatika

Mentor: viš. pred. mag. Janez Pogorelc

Somentor: 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 UDI - nazivna napetost dig. vhoda Uoptoled - nazivna napetost diode optosklopnika UVcc - napajalna napetost mikrokrmilnika Ioptoled - tok diode optosklopnika Ioptoled_max - maksimalni tok diode optosklopnika Iled - tok led diode dig. vhoda Ipulldown_max - maksimalni tok "pull_down" upora dig. vhoda Rvh - upornost predupora diode optosklopnika na dig. vhodu Rpulldown - upornost "pull-down" upora dig. vhoda CTRopto - razmerje vhodnega in izhodnega toka optosklopnika s - razdalja od začetne pozicije do želene – končne pozicije s1 - razdalja pospeševanje s2 - razdalja potovanja s3 - razdalja zaviranja s4 - razdalja približevanja končni poziciji p0 - začetna pozicija p1 - pozicija konca pospeševanja p2 - pozicija konca potovanja p3 - pozicija konca zaviranja p4 - končna poziciji t1 - čas pospeševanje t2 - čas potovanja t3 - čas zaviranja t4 - čas približevanja končni poziciji vmax - maksimalna hitrost vmin - minimalna hitrost vref - hitrost iskanje referenčnega impulza a1 - pospešek a2 - 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.

XTAL 10MHz

16 x DI 14 x DO

DC

+ 5VICSP

PORT A,B,C,D,E

Reset

a11

a22

3a3

4a4

b1

b2

b3

b4

5

6

7

8

PIC 18F452

1614

MAX232

Slika 2.1: blokovna shema K-CPU V3.0

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 5

Dig.izhodi DI 1 - 14

24VDC napajanje

Varovalki 0.63 A

Dig. vhodi skupni -

Reset tipka Dig. vhodi DI 1 - 16

Dig.izhodi skupni +

RS 232 DB9 -Ž

Mikrokrmilnik

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 40 MHz

Programski pomnilnik 32 kB

16384 instrukcij

Delovni pomnilnik 1536 Byte

EEPROM pomnilnik 256 Byte

Število možnih prekinitev 18

Vhodno izhodna vrata A, B, C, D, E

Časovniki 4

PWM, komparatorji 2

Serijska komunikacija MSSP, USART

Paralelna komunikacija PSP

10-bitni A/D pretvornik 8 kanalov

RESET funkcije, dodatne funkcije 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

Ω= →Ω===

≈⇒=−=−=

Ω= →Ω=−

=−

=

≈⇒<⇒≈

Ω= →Ω=−

=−

=

kRmA

V

I

UR

mAImAmAmAIII

kRmA

VV

I

UUR

mAIIICTR

kRmA

VV

I

UUR

pulldownlestvicaupor

pulldown

Vccpulldown

pulldownledoptoledpulldown

ledlestvicaupor

led

ledVccled

ledoptoledledopto

vhlestvicaupor

optoled

optoledDIvh

2.225002

5

23710

4707.4857

6.15

71

2.2229010

1.124

.

max_

.

.

(2.1)

Slika 2.5: shema digitalnega vhoda

Ω= →Ω===

≈⇒=−=−=

Ω= →Ω=−−

=−−

=

≈⇒<⇒=

kRmA

V

I

UR

mAImAmAmAIII

RmA

VV

I

UUUR

mAIIImAI

pulldownlestvicaupor

pulldown

Vccpulldown

pulldownledoptoledpulldown

ledlestvicaupor

optoled

ledoptoledDIled

optoledoptoledoptoledoptoled

2.225002

5

23710

1809.17613

6.11.15

1315

.

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.

NASTAVITEV

KONTRASTA

VKLOP

OSVETLITVE

MIKROKRMILNIK

PIC16F876A

LCD

D0-D3 R/S E W +5VDC0VDC

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četna

pozicija

začetek

krivljenja

konec

krivljenja

Slika 4.1: shema stroja za krivljenje cistern

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 21

v vračanje v začetno pozicijo

vmax

pomik do začetka krivljenja

vkriv

krivljenje

pozicija

začetna poz. začetka poz. konca

pozicija krivljenja krivljenja

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" Test komunikacije

"0x0B" Brisanje podatkovnega polja

"0x0C" 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 Poslan ASCII znak

"F1" '1'

"F2" '2'

"F3" '3'

"F4" '4'

"OK" 'o'

"ESC '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)

4-bitno podatkovno vodilo

PIC16F876 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

Tabela 7.3: zaznavanje inkrementa in dekrementa

imp.A ↓ ↓imp.B

Postavljanje bitov:

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 →

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.

0 0 0 0 A Ap B Bp

0 0 0 0 0 A Ap B

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).

Tabela 7.4: shema programskega medpomnilnika za pošiljanje na K-PANEL

prva vrstica druga vrstica tretja vrstica četrta vrstica

0x01 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.

K_ENK enk_poz) ((float) = dej_poz_mm ⋅

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čni

referenčna točka 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 Lokacija

EEPROM-a

0

Program krivljenja št. 1

9 10

Program krivljenja št. 2

19

160

Program krivljenja št. 17

169

PROSTO

195 196 197

Pozicija enkoderja (32-bitna vrednost)

198

PROSTO

200 16-bitni števec 1

201 202

16-bitni števec 2 203

232 16-bitni števec 17

233

PROSTO

241 242 243 244

Referenčna točka

245 246 247

Parametri (nastavitve)

pozicioniranja

254

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 43

pripravljenost

idle_meni()

vnos programa

priprava

na izklop

tipka gor in

vsi pogojitipka spuščena

ali manjka pogoj

tipka dol in

vsi pogoji

tipka spuščena

ali manjka pogojizbira

naslednjega

programa

izbira predhodnega

programa

tipka '+'

tipka '-'

vnos nastavitev

preveri geslo

F1

nastavitvegeslo

neprav.

geslo

pravilno

izhod ali vklop

avto oz. ročno

pregled ali

reset števcev

preveri geslo

F4

števci

geslo

neprav.

geslo

pravilno

izhod ali vklop

avto oz. ročno

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

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 47

7.8 Avtomatsko delovanje

7.8.1 Kratek opis avtomatskega delovanja

V avtomatskem delovanju izvajamo krivljenje roba cisterne kot je opisano v

podpoglavju 4.1. Točke in hitrosti krivljena so določene v programu, ki ga izbira in

pripravi operater na stroju.

Avtomatsko delovanje je predstavljeno z diagramom stanj na sliki 7.6 . Iz tega je

razvidno, da je osnova delovanja pozicioniranje na določeno točko z določeno hitrostjo.

Zato bomo največ pozornosti namenili prav pozicioniranju. Uporabili smo trapezni profil s

približevanjem. Približevanje moramo uporabiti zaradi odstopanja v regulaciji hitrosti

asinhronskega pogona, predvsem pri zaviranju. Zaviranje pa je najbolj pomembno za

doseganje točnosti pozicioniranja. Zato odstopanja pri zaviranju odpravimo s

približevanjem končni poziciji z minimalno hitrostjo.

Slika 7.6: diagram stanj avtomatskega delovanja

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 48

7.8.2 Pozicioniranje

Delovanje pozicioniranja smo predstavili z diagramom stanj na sliki 7.7. Nato smo

podrobneje opisali funkcijo pozicioniranja, katera izvede pozicioniranje v podano točko z

določeno hitrostjo. Algoritmi so v prilogi 4.

POZICIONIRANJE

določanje faz pozic.

poz.faza=1

pospeševanje

poz.faza=2

potovanje

poz.faza=3

zaviranje

manjkajoči pogoj

ali menjava načina

manjkajoči pogoj

ali menjava načinamanjkajoči pogoj

ali menjava načina

poz.faza=4

fino pozicioniranje

manjkajoči pogoj

ali menjava načina

poz.faza=0

začetek poz.

z minimalno hitrostjo

start

vsi pogojimanjkajoči pogoj

ali menjava načina

poz.faza=5

potrditev uspešnega

pozicioniranja

pomikanje

se je začelo

dosežena poz.

začetek potovanja

dosežena poz.

začetek zaviranja

dosežena poz.

začetek finega

pozicioniranja

želena pozicija

dosežena

pozici.

na želeno

pozicijo s

želeno

hitrostjo

potrditev

uspešnega

poz. ali javlj.

napake

določitev smeri poz.,

izračun razdalj in poz. trap. profila,

pospeška in pojemka

uspešna pozic.

ali napaka

Slika 7.7: diagram stanj za izvajanje pozicioniranja

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 49

Funkcija "void pozicioniraj (float_setpoint_mm, v_max)" izvaja pozicioniranje na

določeno točko podano v mm. Poleg pozicije podamo tudi hitrost pozicioniranja.

Pozicioniranje se izvaja po trapeznem profilu s približevanjem (glej sliko 7.8). Na

diagramu nam oznake pozicije predstavljajo naslednje pozicije :

o poz. 1 : konec pospeševanja oz. začetek potovanja

o poz. 2 : konec potovanja oz. začetek zaviranja

o poz. 3 : konec zaviranja oz. začetek približevanja

o poz. 4 : končna želena pozicija

poz.1 poz.2

Vmax

poz. 3 4-končna poz.

Vmin

pospeševanje potovanje zaviranje približevanje

(t1) (t2) (t3) (t4)

Slika 7.8: diagram trapeznega profila pozicioniranja

s približevanjem v odvisnosti od časa

Podan trapezni profil hitrosti je v odvisnosti od časa. Algoritem poenostavimo tako, da

hitrost izračunavamo glede na doseženo pozicijo (glej sliko 7.9), kjer je korenska odvisnost

hitrosti od pozicije. Podali smo tudi diagram pozicije v odvisnosti od časa (glej sliko 7.10).

Zaradi lažjega določanja procesa krivljenja je za operaterja lažje vnašati razdaljo

pospeševanja in zaviranja, kot pa pospešek in pojemek. Te vrednosti izračunamo iz

podanih vrednosti hitrosti in razdalj po naslednjih enačbah 7.2 in 7.4 .

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 50

poz.1 poz.2

Vmax

poz. 3 4-končna poz.

Vmin

pospeševanje potovanje zaviranje približevanje

(s1) (s2) (s3) (s4)

Slika 7.9: diagram trapeznega profila pozicioniranja s približevanjem

v odvisnosti od pozicije (poti)

poz 4

poz 3

poz 2

poz 1

pospeševanje potovanje zaviranje približevanje

(t1) (t2) (t3) (t4)

Slika 7.10: diagram trapeznega profila pozicioniranja

s približevanjem v odvisnosti od časa

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 51

Funkcija najprej določi smer pozicioniranja. Nato glede na smer pozicioniranja in

nastavljene parametre izračuna pozicije (enačbe 7.1), ki smo jih omenili na začetku. Smer

pozicioniranje je pomembna, saj moramo paziti na predznake veličin, saj hitrost glede na

pozicijo izračunamo s korenom. Nato izračuna pospešek in pojemek glede na hitrosti in

razdalje (enačbi 7.2).

Naslednje enačbe (7.1) uporabimo za izračun pozicij pozicioniranja. Poz4 predstavlja

končno želeno pozicijo, poz0 pa predstavlja trenutno oz. začetno pozicijo. Razdalje s1, s2 in

s3 so podane v parametrih. Najprej izračunamo celotno razdaljo s do želene pozicije. Nato

izračunamo razdaljo s2, ki jo prepotujemo s podano hitrostjo od pospeševanja do zaviranja.

4312

04

sssss

pozpozs

−−−=

−=

323

212

101

spozpoz

spozpoz

spozpoz

+=

+=

+=

(7.1)

323

212

101

spozpoz

spozpoz

spozpoz

−=

−=

−=

Nato izračunamo pospešek in pojemek glede na hitrost (podano v klicu funkcije ) in

razdalji pospeševanja s1 in zaviranja s3 (enačbi 7.2).

3

2max

2min

2

1

2min

2max

1

2...

2...

s

vvapojemek

s

vvapospešek

−=

−=

(7.2)

Ko določimo smer pozicioniranja, izračunamo pozicije trapeznega profila in

izračunamo pospešek in pojemek, lahko pričnemo s pozicioniranjem.

Glede na dejansko pozicijo in predhodno izračunanih pozicij trapeznega profila lahko

določimo v kateri fazi pozicioniranja se nahajamo (glej enačbe 7.3). Hitrosti pa

izračunavamo s pomočjo enačb 7.4.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 52

Pozicioniranje v pozitivno smer - določanje faz pozicioniranja:

1. faza: dej_poz <= poz1

2. faza: dej_poz > poz1 & dej_poz < poz2

3. faza: dej_poz >= poz2 & dej_poz < poz3

4. faza: dej_faza >= poz3

V negativno smer: (7.3)

1. faza: dej_poz >= poz1

2. faz : dej_poz < poz1 & dej_poz > poz2

3. faza: dej_poz <= poz2 & dej_poz > poz3

4. faza: dej_faza <= poz3

Izračun hitrosti glede na določeno fazo pozicioniranja v pozitivno smer:

min

222

max

max

12

min

4_

)_(23_

2_

_21_

vvfazapoz

pozpozdejavvfazapoz

vvfazapoz

pozdejavvfazapoz

=⇒=

−⋅⋅+=⇒=

=⇒=

⋅⋅+=⇒=

V negativno smer: (7.4)

min

222

max

max

12

min

4_

)_(23_

2_

_21_

vvfazapoz

pozpozdejavvfazapoz

vvfazapoz

pozdejavvfazapoz

−=⇒=

−⋅⋅+−=⇒=

−=⇒=

⋅⋅+−=⇒=

Algoritem za pozicioniranje se prekine (pomikanje se nemudoma ustavi) če:

- ni več aktiven dvoročni vklop

- se pojavi napaka na regulatorju

- je aktivirano končno stikalo

- je aktivirano stikalo vrat (razen kadar se naprava umika v izhodiščni položaj, takrat

ni nevarnega stanja in delavec lahko medtem odstrani cisterno in vstavi novo)

- je zaznana napaka ne regulatorju

- je dosežena želena pozicija znotraj določenih toleranc

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 53

Vsi ti pogoji se preverjajo med pozicioniranjem. Vse prekinitve, razen dosežene

pozicije, nas prisilijo k reševanju problemov v ročnem načinu delovanja.

Med izvajanjem pozicioniranja se izračunava dejanska pozicija v milimetrih in se

prikazuje na panelu poleg želene hitrosti.

7.8.3 Ostale funkcije potrebne za avtomatsko delovanje

Funkcija "void avto_bar1 (int8 druga)" nam v prvo vrstico na panel izpiše, da smo v

avtomatskem načinu delovanja, številko aktiviranega programa in števec kosov. Glede na

vrednost spremenljivke, s katero smo klicali funkcijo, izpiše še stanje pripravljenosti.

Na začetku funkcije "avto_meni()" preberemo izbran oz. aktiviran program iz

EEPROM-a, nato izpišemo trenutno stanje in izvedemo umik v izhodiščno pozicijo. Če

niso prisotne napake oz. so izpolnjeni vsi pogoji za delovanje, smo pripravljeni na

avtomatsko krivljenje, ki ga izvajamo v štirih korakih (v programu smo jih poimenovali

avto_stat oz. statusi avtomatskega delovanja) :

- avto_stat = 0 : preverjanje pogojev in dvoročnega vklopa, če je stanje ustrezno

prehod v status 1

- avto_stat = 1 : izvede se pozicioniranje v pozicijo za pričetek krivljenja z

maksimalno hitrostjo; ko dosežemo pozicijo se izpiše stanje in opravi prehod v

stanje 2

- avto_stat = 2 : se izvede krivljenje do pozicije konca krivljenja s hitrostjo, ki je

podana s programom krivljenja; če se je krivljenje uspešno izvedlo se izpiše stanje

in izvede prehod v status 3

- avto_stat = 3 : po uspešno izvedenem krivljenju se umaknemo v izhodiščno

pozicijo; pri tem ni potreben dvoročni vklop in zaprta vrata, saj operater med

umikanjem lahko zamenja cisterno (ko je umik končan, izvedemo prehod v status

4)

- avto_stat = 4 : krivljenje je končano, povečamo stanje števca kosov ter števca za

sledenje ter izvedemo pripravo na novo krivljenje status 0

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 54

7.8.4 Osnovna main() funkcija

V osnovni "void main (void)" funkciji so osnovne nastavitve mikrokrmilnika ter

klicanje drugih glavnih funkcij glede na izbiro načina delovanja. Delovanje funkcije main()

smo podali v diagramu stanj na sliki 7.11, algoritmi pa so v prilogi 4. Osnovne nastavitve

mikrokrmilnika, ki so bistvene:

- izklop A/D pretvornika

- izklop PSP paralelnega vodila

- izklop SPI serijske komunikacije

- izklop časovnega stražnika

- nastavitev "timer0" – RTCC - interni

- nastavitev "timer1": izbira osnovnega takta in delitev (nam ustreza 13ms)

- nastavitev "timer2": izbira osnovnega takta in delitev; je določena glede na

frekvenco in ločljivost PWM analognega izhoda

- izklop "timer3"

- vklop PWM analognega izhoda

- omogočitev prekinitev:

o TIMER1

o PORTB (sprememba na pinu)

o RDA (sprejem novega podatka s sprejemni medpomnilnik serijske

komunikacije)

o globalna omogočitev proženja prekinitev

Po končanih nastavitvah izvedemo naslednja opravila :

- postavitev PWM izhoda na 0

- nazadnje shranjena dejanska pozicija se prebere iz EEPROM-a

- izpiše se začetni meni

- po izvedeni začetni zakasnitvi iz EEPROM-a preberemo številko nazadnje

aktiviranega programa

- aktivni program preberemo iz EEPROM-a

- preberemo nastavitve oz. parametre iz EEPROM-a

- nato v neskončni zanki glede na digitalna vhoda kličemo funkcije načina delovanja

("rocni_meni()", "avto_meni()", "idle_meni()")

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 55

neskončna zanka

while (1)

avtomatsko delovanje

pripravljenost – idle

vnos nastavitev in programov,

izbira programov …

ročno delovanje

izbira=rocno

izbira≠rocno

izbira=avto

izbira≠avto

izbira≠rocnoin

izbira≠avto

izbira=rocno

ali

izbira=avto

nastavitve mikrokrmilnika,

nalaganje parametrov,

aktivnega programa in pozicije,

začetni izpis

main()

Slika 7.11: diagram stanj main() funkcije

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 56

8. SKLEP

8.1 Potek razvoja in uporaba krmilnika

Razvoj K-CPU krmilnikov smo začeli z verzijo 1. Ta še ni imela ločeni panel

ampak so bile tipke in LCD direktno vezane na krmilnik. To nam je zavzemalo dosti

vhodno/izhodnih linij mikrokrmilnika. Kljub temu smo krmilnik uspešno uporabili pri :

- kontejnerjih za smeti s avtomatskim hidravličnim stiskanjem in zaklepanjem

(Zarja d.o.o.)

- z manjšim prilagoditvenim vezjem za analogni izhod, smo ga uporabili za

pozicioniranje z enosmernim pogonom za razrez formatne pločevine (Alpos

d.d. - cevarna).

- razrez cevi BEWO (Alpos d.d. posebne storitve)

Po prehodni verziji 2 smo razvili K-CPU in K-PANEL verzije 3. Le-to verzijo

smo uporabili pri več projektih. Panel je bil lahko oddaljen, saj bil preko RS232

komunikacije povezan na K-CPU. S tem pa je tudi zasedal manj vhodno/izhodnih linij

mikrokrmilnika in tako smo lahko imeli več vhodov ter izhodov. Uporabili smo ga pri

naslednjih projektih (podani so glede na osnovno nalogo krmilnika):

- pozicioniranje :

o nastavljalnik dolžine za razrez cevi (Alpos d.d. posebne storitve)

o pozicioniranje nastavljalnika za žage za les (Alpos d.d. posebne storitve)

o naprava na ovijanje roba na cisternah (Mohorič s.p.)

o razrez pločevine na mero (SAS s.p.)

o razrez cevi BEWO (Alpos d.d. posebne storitve)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 57

- zajem analognih in digitalnih vrednosti ter obdelava:

o prikaz hitrosti pogonov na liniji za izdelavo cevi (Alpos d.d. cevarna)

o sortiranje cevi na liniji (Alpos d.d. cevarna)

o kontrola izdelkov in stiskanje (Novem d.d)

- razne krmilne naloge :

o naprava za treniranje konjev (Šeško s.p.)

o testiranje statorjev z merjenjem upornosti (BSH d.d.)

o nadzor ter krmiljenje vzbujanja glavnega pogona valjarna ( Štore Steel)

o signalizacija delovanja proizvodne linije (Novem d.d.)

o naprava za brušenje krožne žage (Cugmajster s.p.)

- regulacija temperatur :

o masažna miza – Kailas d.o.o

Pri uporabi verzije 3 smo se evidentirali možne izboljšave, tako da smo po prehodni

verziji 4 razvili že K-CPU verzije 5. Ta ima naslednje izboljšave glede na verzijo 3 :

- za napajane mikrokrmilnika smo uporabili DC/DC pretvornik proizvajalca

Recom, s čemer smo dosegli manjše izgube pri napajanju in galvansko ločitev

napajanja mikrokrmilnika

- s hitrimi opto sklopniki smo galvansko ločili oba PWM izhoda

- K-CPU verzije 5 ima manjše dimenzije od verzije 3, prav tako so dimenzije

prirejene za uporabo Phoenixovih UM profilov za montažo na letev.

Verzijo 5 smo že uporabili pri naslednjih projektih :

- linija za izdelava aluminijastega profila z letečim odrezom – STS d.o.o.

(pozicioniranje in sledenje točki odreza)

- prikaz temperatur in pretokov Julon Aquaset d.d. (zajem analognih vrednosti,

obdelava in tudi pošiljanje na PC)

- preverjanje pritrjenosti obdelovanca na CNC stroju – Novem d.d. (zajem

analognih vrednosti, obdelava)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 58

8.2 Uporaba prirejenih krmilnikov

Na zasnovi K-CPU verzije 3 so razvili namenski modul za LED prikazovalnik

16x70 oz. 1160 pik, ki jih krmilimo s pomikalnimi registri. S pomočjo RS232/RS485

vmesnikov pa smo preko komunikacije RS485 povezani s PC, s katerega pošiljamo

podatke za izpis.

Pri SOS klicnem sistemu K-CPU verzije 5 preko vmesnika RS232/RS485 zajema

podatke iz 97 modulov. Po zasnovi so podobni K-CPU. Namesto RS232 imajo RS485

komunikacijo.

Pri nekaterih manjših projektih smo tudi uporabili sam K-PANEL. S pomočjo

manjših prilagoditvenih vezij, smo ga uporabili za prikaz vrednosti analognih ali digitalnih

signalov.

8.3 Prihodnost in zaključek

K-CPU in K-PANEL v takšni zasnovi ne nameravamo razvijati naprej. Edine

možne izboljšave, so RS485 in ETHERNET komunikacija. Vendar to sedaj brez večjih

težav dosežemo z dodatnimi zunanjimi moduli, ki ji lahko priključimo na konektorje za

direkten dostop do mikrokrmilnika.

Pri projektih se vedno bolj pojavljajo zahteve po:

- bolj prefinjenih uporabniških vmesnikih (paneli na dotik)

- obdelavi večjih količin podatkov

- lokalnem arhiviranju in shranjevanju na razne prenosne medije

- zajemu in obdelavi velikih količin podatkov

- prenosu preko ETHERNET komunikacije

V prihodnje pa nameravamo razviti module s 16-bitnim mikrokrmilnikom iz

družine 24F ali celo morda narediti preskok kar na mikrokrmilnik PIC32 iz 32-bitne

družine. Zaradi tipa mikrokrmilnika in zahtev po čim manjših krmilnikih, bo potreben

prehod na SMD tehnologijo.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 59

Z razvojem K-CPU krmilnikov smo zapolnili vrzel, ki je bila pri manjših projektih.

Tam kjer so prisotni različni tipi signalov in je potreben nek osnovni panel. Največkrat

smo ga uporabili pri projektih, kjer je bilo prisotno pozicioniranje osi ali zajemanje

analognih in digitalnih vrednosti.

Pri pozicioniranju ene osi je potrebno zajemati inkrementalni dajalnik, voditi

regulator pogona ter omogočati pregled oz. vnos parametrov, nastavitev ter raznih

vrednosti. Tukaj je PLC sistem neprimerno dražji in še povrhu ostane neizkoriščen. Za

primer bomo podali dve aplikaciji s približnimi cenami ter ceno naše rešitve:

- enostavna aplikacija za pozicioniranje narejeno s PLC (Simatic S7-300 - CPU

313 s hitrimi števci za enkoder stane 800 EUR in Simatic operator panel, ki

stane 300 EUR)

- za aplikacijo letečega odreza uporabljamo Simotion, katerega cena je 3.700

EUR (pri aplikaciji razreza aluminijastih profilov, kjer so manjše hitrost in

manj zahtevna aplikacija, smo uporabili naš krmilnik)

Naš krmilnik stane približno 200 EUR:

- K-CPU (100 EUR)

- K-PANEL (100 EUR)

- dodatno delo za testiranje krmilnika in odpravljanje morebitnih napak

Prednost imamo pri servisiranju naših krmilnikov. Manjše napake odpravimo brez

večjih težav. Na zalogi imamo večjo količino testiranih krmilnikov. Program lahko

naložimo že na podjetju in krmilnik zamenjamo na napravi.

Večkrat smo uporabljali K-CPU tudi pri zajemanju analognih in digitalnih

signalov. Podatke hkrati obdelamo ter jih pošiljamo preko RS232 komunikacije na PC,

kjer z namenskimi programi omogočimo prikazovanje, obdelavo in arhiviranje. Tudi tukaj

je PLC sistem drag. Samo za prikaz nekaj vrednosti potrebujemo dodatno opremo na PC in

nadzorni sistem. V našem primeru lahko uporabimo obstoječa RS232 komunikacijska

vrata. Uporabimo program, katerega smo razvili sami in katerega jedro ostaja isto.

Spreminjamo le prikaz podatkov. Komunikacijski vmesniki in obdelava podatkov ostajata

bolj ali manj ista.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 60

Seveda je programiranje v C programskem jeziku nekoliko zahtevnejše in manj

pregledno kot programiranje PLC sistema. Prav tako ni primerljivo spremljanje delovanja

programa na krmilniku. Kajti PLC sisteme spremljajo dodelana programska orodja. Vendar

za marsikatero orodje potrebujemo licenco.

Pri zahtevnejšem programiranju lahko izgubimo prednost cenejšega krmilnika, če je

projekt preveč obsežen. Vendar pa ima spet prednost cenejši krmilnik, kadar imamo

večkrat iste ali podobne projekte. Takrat lahko funkcije, ki smo jih dalj časa razvijali in

testirali, hitro ponovno uporabimo in pridobimo veliko časa pri programiranju.

Predvsem se je to izkazalo pri projektih s pozicioniranjem ali zajemu analognih in

digitalnih vrednosti. Funkcije so bolj ali manj enake. Napisati je treba le namenske

funkcije - predvsem krmilne. Dostikrat lahko ponovno uporabimo funkcije za vnašanje

parametrov, izpis sistemskih vrednosti na panel, komunikacijske protokole itd.

Najmanj učinkovito je delo pri projektih, kjer opravljamo obsežnejše krmilne

naloge. Pri takšnih nalogah je veliko pogojev delovanja. Pri PLC sistemih se večina

serviserjev brez težav priklopi na PLC in hitro najde manjkajoči pogoj, ki onemogoča

delovanje. V našem primeru pa je to potrebno nadomestiti z zelo dobro diagnostiko. Dobra

in obsežna diagnostika pa zahteva veliko programskega dela. Izpisi podrobne diagnostike

na panel pa zasedajo veliko programskega pomnilnika v mikrokrmilniku.

Pri projektu ovijanje roba je kode za K-CPU 2346 vrstic (vključno s knjižnicama

"18F452.h" in "math.h"). V kodi je 1005 programskih vrstic. Preveden program zasede

63% ROM pomnilnika oz. 20kB in uporablja 12% RAM pomnilnika oz. 185 bajtov.

Za K-PANEL imamo 706 vrstic kode (vključno s knjižnico "16F876A.h") od tega

je 306 programskih vrstic. Preveden program zasede 20% ROM pomnilnika oz. 1,6kB.

Uporablja pa 34% pomnilnika oz. 136 bajtov.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 61

9. VIRI www.microchip.com www.ccsinfo.com www.vishay.com www.st.com www.datasheetarchive.com www.maxim-ic.com www.display-elektronik.de

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 62

10. PRILOGE

10. 1 Seznam slik - 2.1: blokovna shema K-CPU V3.0

- 2.2: pozicijska shema K-CPU V3.0

- 2.3: mikrokrmilniški modul K-CPU V3.0

- 2.4: razpored pinov PIC 18F452

- 2.5: shema digitalnega vhoda

- 2.6: shema digitalnega izhoda

- 2.7: shema napajalnega dela

- 2.8: integrirano vezje MAX232

- 2.9: shema komunikacijskega dela

- 2.1 : konektorji vseh portov in ICSP

- 3.1: blokovna shema K-PANEL-a

- 3.2: prednja stran K-PANEL-a

- 3.3: zadnja stran K-PANEL-a

- 3.4: razpored pinov mikrokrmilnika PIC16F876A

- 3.5: povezava med mikrokrmilnikom in LCD

- 4.1: shema stroja za krivljenje cistern

- 4.2: potek krivljenja roba

- 4.3: blok shema krmilja

- 4.4: fotografija stroja

- 4.5: fotografija krmilne omare

- 4.6: fotografija krmilja

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 63

- 5.1: shema povezave med LCD in mikrokrmilnikom

- 6.1: diagram prekinitev za program K-PANEL

- 7.1: diagram prekinitev programa K-CPU

- 7.2: diagram impulzov za detekcijo inkrementa ali dekrementa

- 7.3: diagram stanj - ročno delovanje

- 7.4: diagram poteka referenciranja

- 7.5: diagram stanj za pripravljenost – nastavitve, programi, števci in izklop

- 7.6: diagram stanj avtomatskega delovanja

- 7.7: diagram stanj za izvajanje pozicioniranja

- 7.8: diagram trapeznega profila pozicioniranja s približevanjem v odvisnosti od

časa

- 7.9: diagram trapeznega profila pozicioniranja z približevanjem v odvisnosti od

pozicije (poti)

- 7.10: diagram trapeznega profila pozicioniranja z približevanjem v odvisnosti

od časa

- 7.11: diagram stanj main() funkcije

10.2 Seznam preglednic - 2.1: osnovne karakteristike mikrokrmilnika PIC18F452

- 3.1: osnovne karakteristike mikrokrmilnika PIC16F876A

- 5.1: primer začetka izpisovanja na LCD

- 5.2: ASCII znaki, ki jih pošljemo ob pritisku na tipko

- 7.1: vhodi K-CPU

- 7.2: izhodi K_CPU

- 7.3: zaznavanje inkrementa in dekrementa

- 7.4: shema programskega medpomnilnika za pošiljanje na K-PANEL

- 7.5: razpored EEPROM pomnilniških lokacij

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 64

10.3 Naslov študenta Anton Jug Stopče 16 3231 Grobelno Tel.: (03) 5794 174 Mob .: 031 613 880 e-mail: [email protected] ; [email protected]

10.4 Kratek življenjepis Rodil sem 13.10.1975 v Celju. Osnovno šolo sem obiskoval v Šentjurju na OŠ

Franja Malgaja. Po končani osnovni šoli sem se vpisal v srednjo tehniško šolo v Celju na smer elektronika.

Leta 1994 sem se vpisal v redni višješolski študij elektrotehnike – smer avtomatika Univerze v Mariboru. Po končanem višješolskem študiju pa sem se leta 1999 vpisal v redni visoko-strokovni študij iste smeri.

V absolventskem stažu visoko-strokovnega študija sem odslužil vojaški rok. Januarja 2004 pa sem redno zaposlil pri podjetju Etra d.o.o. na mesto projektno – razvojnega inženirja.

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 65

10.5 Priloge

Priloga 1: Shema K-CPU

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 66

Priloga 2: Shema K-PANEL

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 67

Priloga 3: Algoritmi programa za K-PANEL (1/6)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 68

Priloga 3: Algoritmi programa za K-PANEL (2/6)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 69

Priloga 3: Algoritmi programa za K-PANEL (3/6)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 70

Priloga 3: Algoritmi programa za K-PANEL (4/6)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 71

Priloga 3: Algoritmi programa za K-PANEL (5/6)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 72

Priloga 3: Algoritmi programa za K-PANEL (6/6)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 73

Priloga 4: Algoritmi programa za K-CPU (1/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 74

Priloga 4: Algoritmi programa za K-CPU (2/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 75

Priloga 4: Algoritmi programa za K-CPU (3/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 76

Priloga 4: Algoritmi programa za K-CPU (4/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 77

Priloga 4: Algoritmi programa za K-CPU (5/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 78

Priloga 4: Algoritmi programa za K-CPU (6/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 79

Priloga 4: Algoritmi programa za K-CPU (7/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 80

Priloga 4: Algoritmi programa za K-CPU (8/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 81

Priloga 4: Algoritmi programa za K-CPU (9/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 82

Priloga 4: Algoritmi programa za K-CPU (10/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 83

Priloga 5: Elektro načrt krmilja (1/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 84

Priloga 5: Elektro načrt krmilja (2/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 85

Priloga 5: Elektro načrt krmilja (3/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 86

Priloga 5: Elektro načrt krmilja (4/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 87

Priloga 5: Elektro načrt krmilja (5/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 88

Priloga 5: Elektro načrt krmilja (6/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 89

Priloga 5: Elektro načrt krmilja (7/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 90

Priloga 5: Elektro načrt krmilja (8/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 91

Priloga 5: Elektro načrt krmilja (9/10)

Programirljiv logični krmilnik na osnovi mikrokrmilnika Stran 92

Priloga 5: Elektro načrt krmilja (10/10)