Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Jari Lehtonen
MAKRO-OHJELMOINNIN
KOULUTUSMATERIAALI
FANUC-OHJAUKSELLE
OPISKELIJAN OPAS
MAKRO-OHJELMOINNIN KOULUTUSMATERIAALI
FANUC OHJAUKSELLE
Tm opinnytety sai alkunsa talvella 2010 20-sivuisesta pikaoppaasta. Valmis teos on yli 50sivuinen ja sislt erittin laajan koulutusmateriaalin makro-ohjelmoinnin kiehtovaan
maailmaan. Ty tehtiin yhteistyss Salon seudun aikuisopiston ja Espoon ammattiopiston
kanssa. Yhteistyss oli lisksi mukana salolainen alihankintakonepaja Halikko Tools Oy, jossa
kaikki ohjelmat testattiin kytnnn tiss.
Tt koulutusmateriaalia voidaan kytt sek nuorten ett aikuisten koneistajan
koulutuksessa. Lisksi sit voidaan hydynt ammattikorkeakouluissa, esim. koneistukseen
liittyvien kurssien lismateriaalina. Koulutusmateriaalia voidaan hydynt koneistuksen
ammattilaisten tydennyskoulutuksien pohjana. Materiaali sopii hyvin mys itseopiskeluun.
Lhtkohtana on kuitenkin se, ett kaikki kursseille osallistujat hallitsevat vhintn FANUCohjelmoinnin perusteet. Tt koulutusmateriaalia voidaan kytt niin sorvauksessa kuin
koneistuksessakin, kunhan kytettvss koneessa on FANUC 10 tai siit uudempi ohjaus.
Koulutusmateriaalissa ksitelln kaikki trkeimmt muuttujat, kuten paikallismuuttujat ja
yleismuuttujat sek niiden kytt. Materiaali sislt paljon hyvi esimerkkej ja makro-ohjelmia
lauseittain selitettyn. Siin on mukana valmiita harjoitustehtvi ja tykuvia, joihin makroja
voidaan hydynt.
Opettajan versiossa on kaikkiin harjoituksiin tarvittavat makro-ohjelmat ja niiden kyttohjeet.
Siin olevia makroja voidaan hydynt sellaisenaan suoraan tuotantoon.
ASIASANAT:
Fanuc, CNC-tystkone, CNC-sorvi, makro-ohjelmointi, parametri
KEYWORDS:
Fanuc, CNC-machines, custom makro B, programming, parameter.
ALKUSANAT
Erityskiitokset kuuluvat perheelleni ja ennen kaikkea vaimolleni, joka suonut minulle
mahdollisuuden tmn tyn tekemiseen. Haluan kiitt mys Juho Kesseli, joka
tyskentelee Salon seudun aikuisopistossa, koneistuspuolen kouluttajana ja joka on
antanut minulle loistavia neuvoja ja paljon apu tyhni. Kiitos ohjaajalleni Pekka
Trnqvistille, jolta olen saanut runsaasti hyvi ohjeita ja mukavasti kannustusta. Suuret
kiitokset mys Halikko Toolsin toimitusjohtajalle Jari Juhannusvuorelle, joka oli
yhteistyss mukana ja antoi yrityksen koneita testauskyttn.
Olen toiminut koneistuksen parissa n. 10 vuotta, mutta tehdessni tt opinnytetyt
olen saanut valtavasti uusia ulottuvuuksia sorvaamisesta ja koneistamisesta sek niihin
kytettvien koneiden ohjelmoinnista. Samalla tmn projektin aikana minulle on yh
paremmin selvinnyt CNC-koneiden koko toimintaperiaate. Tehtv on ollut erittin
mielenkiintoinen ja samalla se on ollut mys hyvin haasteellinen.
Haluan viel kiitt tytni auttaneita henkilit:
Nina Tuupanen, Omnia
Jarmo Palonen, Omnia
Timo Sirki, SSKKY
Salossa 27.06.2011
Jari Lehtonen
SISLT
KYTETYT LYHENTEET JA SANASTO ..................................................................... 6
1
JOHDANTO............................................................................................................ 7
FANUC-OHJELMOINTI .......................................................................................... 8
2.1 Yleist
2.2 Aliohjelmointi
3
8
10
13
19
21
22
7.4 Jrjestelmmuuttujat
24
OHJAUSKSKYT ................................................................................................ 35
36
9.2 Toisto
37
10
RAJOITUKSET ............................................................................................... 38
11
11.1
12
13
14
15
YHTEENVETO ................................................................................................ 54
42
LHTEET ................................................................................................................... 55
LIITTEET
Liite 1. Reikpiirimakron esimerkki
Liite 2. Makroharjoituslevy
Liite 3. Plaanausmakro zigzag-menetelmll
TAULUKOT
Taulukko 1. Fanuc koneistuskeskuksissa kytettvt osoitteet. ................................... 9
Taulukko 2. Kaavio esitt miten ohjelmat etenevt. ................................................. 11
Taulukko 3. Muuttujan kytt esimerkki. .................................................................... 17
Taulukko 4. Esimerkkej muuttujien kytst osoitteen yhteydess. ......................... 18
Taulukko 5. Mrittelemtn muuttuja kerto- ja jakolaskussa. ................................... 20
Taulukko 6. Mrittelemtn muuttuja ja ehtolauseet. ............................................... 21
Taulukko 7: Tykalukorjainten vastaavuudet. ............................................................ 25
Taulukko 8. Muuttujat #3001 ja #3002. ...................................................................... 27
Taulukko 9. Muuttujan #3003 arvot ja niiden vastaavuudet. ....................................... 28
Taulukko 10. Muuttujan #3004 arvot ja niiden vastaavuudet. ..................................... 29
Taulukko 11. Muuttujaa #3007 vastaavat akselit ja alla esim. mukaiset bitit. ............. 31
Taulukko 12. Jrjestelmnmuuttujat modaalisille toiminnoille. ................................... 32
Taulukko 13. Jrjestelmmuuttujat paikoitustietoihin. ................................................ 33
Taulukko 13. Aritmeettiset ja loogiset operaatiot. ....................................................... 34
Taulukko 14. Makro-ohjelmoinnissa kytettvt ehto kskyt. ..................................... 36
Taulukko 15. Argumenttien mrittely menetelmll 1 ............................................... 40
Taulukko 16. Menetelmn 2 argumentit ja niit vastaavat osoitteet ........................... 41
Taulukko 17. G- ja M-koodeja vastaavat parametrit. .................................................. 42
Taulukko 18. Taulukkolaskennalla tutkittu Z-akselin saavuttamaa mittaa................... 44
KUVAT
Kuva 1. Modeemin suojakotelo. .................................................................................. 10
Kuva 2. Kiilauramakron kyttohjekuva. ..................................................................... 26
Kuva 3. Silmukassa sallitut ketjutukset ja hypyt. ......................................................... 38
Kuva 4. Reikpiirimakron ohje. ................................................................................... 40
Kuva 5. Tern paikoitus ja siirrot plaanauksessa. ....................................................... 45
Kuva 6. Ohjekuva helical-interpolaatio makrolle. ......................................................... 46
Kuva 7. Osatuoteperhe ohjaustapeista ja niiden mitat. ............................................... 47
Kuva 8. Ohjaustapin ohjelmointiin tarvittavat pisteet. .................................................. 48
Kuva 9. Ohjauspinnin makro-ohjelman ohjeet. ............................................................ 50
Kuva 10. Tehtvn 4 tarvittavat mitat ja taulukko. ..................................................... 53
Kuva 11. Makroharjoituslevy. ...................................................................................... 54
Back edit
CAD
CAM
CNC
FMC
FMU
FMS
MDI
MS-DOS
NC
1 Johdanto
Lastuamistekniikaltaan ei ole suurtakaan eroa siin, kytetnk manuaalista vai CNCohjattua
konetta.
Molemmissa
kytetn
samanlaisia
tykaluja,
eik
Jyrsin
koneissa
johderuuvit
liikuttavat
mm.
koneen
typyt.
ohjelmat
muistuttavat
lhestulkoon
toisiaan
eri
ohjausjrjestelmist
2 Fanuc-ohjelmointi
2.1
Yleist
T1 M6 (32.MM OTSAJYRSIN) ;
G41 D1 X-50.;
Y20. F300;
Tyst
Tyst
Sdekompensoinnin peruutus
G0 Z50. M5;
M30 TAI M2
Ohjelman lopetus
Osoitteet
Esimerkki
O-koodit
ohjelmien numerot
O5123
N-koodit
rivien numerot
N120
M-koodit
aputoiminnot
M3
T-koodit
tykalujen numerot
T12
G-koodit
G73
S-koodit
kierrosnopeudet
S1250
F-koodit
syttnopeudet
F425
Apuosoitteet
R-koodit
ympyrnkaaren sdearvot
R10.
D-koodit
tykalun sdearvot
D12
H-koodit
tykalun pituusarvot
H12
L-koodit
L5
C90.
X100. Y50.
I10. J50.
Poraustykiertojen apuosoitteet
P
P500
viive
Q15.
lastunkatkaisumatka
10
2.2
Aliohjelmointi
Mikli tystettvss kappaleessa toistuu usein sama muoto tai tyvaihe, voidaan
ohjelmointia helpottaa tekemll eri vaiheisiin ja muotoihin aliohjelma. Otetaan
esimerkiksi kuvan 1 mukainen suojakotelo.
11
ensimminen aliohjelma
toinen aliohjelma
O1000
O2000
O3000
N1 M6 T1 (tern nimi)
G1 Z_ F_
G3 J-_ Z-_ F_
N2 G54 G0 X_ Y_
G91 Y_ F_
M99
S_ M_
N3 G43 Z_ H1 M_
G1 Y-_ F_
N4 M98 P2000
G90 G0 Z_
N5 G90 G0 X_ Y_
M99
PALATAAN TAKAISIN
EDELLISEN ALIOHJELMAN
L-KOODI TOISTAA TMN
OHJELMAN 10 KERTAA JA
ENSIMMISEN
N6 M98 P2000
ALIOHJELMAAN JA L-
N7 G91 G28 Z0 M5
KOODISTA SEURAAVALLE
N8 M30
RIVILLE
tarvittavaan
kohtaan.
Tmnkaltaista
ohjelmointitapaa
kytettess
Tt
12
esimerkiss
Vasemmanpuoleinen
ohjelma
on
on
kaksi
erilaista
muuttujaohjelmoinnilla
plaanausohjelmointia.
tehty
ohjelmaa
ja
13
3.1
O1007 (MUUTTUJAOHJELMA)
M24
0G90G49G40G80
M6 T1 (63MM PLAANAUSTERA)
G10L2P1X0Y0Z0
G10L2P2X0Y0Z0
G43 Z20. H1 M8
G10L2P3X0Y0Z0
G10L2P4X0Y0Z0
G90 G0 Z50. M9
G54
G91 G28 Z0 M5
T209M6
G28 Y0
G49H209
M30
S600M3
M7
#1=-215(X-ALKU)
#123=0
#2=692(Y-ALKU)
#125=0
#3=153.5(Z-ALKU)
#126=0
#4=215(X-LOPPU)
#5=142(Y-LOPPU)
#6=153(Z-LOPPU)
#7=-50(Y-ASKEL)
#104=#7/2
#8=-0.5(Z-ASKEL)
#105=[#19/100]*#7
#9=0(B-AKSELI)
#106=[#20+#104]
WHILE[#3GE#6]DO1
#107=[#105-#104]
#11=#3+10(R-TASO)
#110=[#26+#6]
#9=0(B-AKSELI)
IF[#6LE0]GOTO30
WHILE[#9LT271]DO2
IF[#17LE0]GOTO30
G0B#9
#120=[FIX[#6/#17]]
#12=#9+90
IF [#120EQ0] GOTO 30
#12=#12/90
#121=[#120*#17]
#12=#12+53
#122=[#6-#121]
G#12
#123=[#120+#122]
#10=#2
N20 #123=#123-1
WHILE[#10GE#5]DO3
IF [#123LE0] GOTO 30
G0X#1Y#10
GOTO 40
G0G43Z#11
N30 #125=#26
G0Z#3
GOTO 50
14
4 Makro-ohjelmoinnin etuja
Kuten edell jo mainittiin, makrot toimivat erilaisia parametrej hydynten. Tst on
huomattavaa apua etenkin silloin, kun yrityksess valmistetaan ns. osatuoteperheit,
joissa vain osa kappaleen mitoista muuttuu ja perusmuodot pysyvt samoina. Muita
yleisi makro-ohjelmoinnin kohteita ovat taskujen ja urien rouhinnat, reikien poraukset
ympyrnkehlle sek suorakaide verkkoon. Reikien avaus helical-toiminnolla eli
kierreinterpolaatiolla helpottuu huomattavasti makro-ohjelmia kytettess. Mys
tasopintojen rouhintaan ja viimeistelyyn kannattaa hydynt muuttujien kytt. Ilman
muuttujaohjelmointia matemaattisten muotojen, kuten pallonpuolikkaan tai ellipsin
koneistus olisi erittin vaikeaa.
Makro-ohjelmia kytettess ohjelmointi nopeutuu ja samalla ohjelmista tulee
lyhyempi ja niiden selkeys paranee. Mys ohjelmien muunneltavuus helpottuu. Kun
kytetn ennalta hyviksi havaittuja makro-ohjelmia, pohjelmista tulee varmemmin
toimivia.
Makro-ohjelmien
kytt
motivoi
koneenkyttji,
koska
toisinaan
15
osaa koneistetaan. Tm taas auttaa siin, ett ei tarvita eri ohjelmavariaatiota, vaan
muuttujilla hoidetaan haluttu osien mr. [6]
16
17
yrityksiss,
etenkin
koneen
kyttjt
pitivt
erillisen
ohjelmoitsijan
laajentaminen,
kun
taas
tyntekijpuolella
kaivattiin
enemmn
6 Muuttujien kytt
Perusohjelmoinnissa haluttu liikeksky suoritetaan aina antamalla sit vastaava Gkoodi. Esim. suoraviivainen syttliike saadaan aikaan G1-koodilla, jonka lisksi
tarvitaan viel mrnp, olkoon se vaikka koordinaattipaikka X10., nin muodostuu
lause G1 X10. Makro-ohjelmassa numeroarvot voidaan mritell suoraan tai ne
voidaan korvata muuttujilla. Luvussa 2.1 mainittiin, ett mittalukujen yhteydess tulee
kytt pistett. Makro-ohjelmassa numeroarvot eivt aina vaadi pistett, mutta
mittalukuja
annettaessa
kannattaa
kytt
aina
pistett.
HUOM!
Tss
on
konekohtaisia eroja.
Makro-ohjelmassa
voi
olla
useita
muuttujia,
jotka
erotetaan
toisistaan
#1 = 20
# 1 =30
18
Jos #18=20
Jos #130=3
Ohjelman numero
N10 M6 T1 (ALKUREIKPORA)
Paikoitetaan
Pituuskompensointi plle
N40 S1000 M3
N50 G0 Z2.
N70 G0 Z2.
M30
Ohjelman lopetus
19
Ohjelman numero
N1 #18=2
N2 #26=-3
Poraussyvyys, eli Z.
N3 #9=100
Sytt, eli F.
N10 N40
N50 G0 Z#18
N70 G0 Z#18.
M30
Ohjelman lopetus
7 Muuttujien ryhmittely
Muuttujatyypit
voidaan
luokitella
kolmeen
eri
ryhmn,
paikallis-,
yleis-
ja
Mrittelemttmt muuttujat
Mikli muuttujan arvoa ei ole mritelty kone tulkitsee ett sen arvo on <vapaa>. Se ei
siis ole sama kuin arvo nolla, vaan se on tyhj. Muuttujat #0 ja #3100 ovat
nollamuuttujia, eli ne ovat aina tyhji. Niit ei voi muuttaa, mutta ne voidaan lukea. [4 s.
352]
20
Kun #1 = 0
#2 = #1
#2 = #1
#2 = <vapaa>
#2 = 0
#2 = #1 * 5( = 0 x 5 = 0)
#2 = 0
#2 = 0
#2 = #1 + #1 (0 + 0 = 0)
#2 = 0
#2 = 0
21
Kun #1 = <vapaa>
Kun #1 = 0
#1 EQ 0
#1 EQ 0
Ei toteudu (eptosi)
Toteutuu (tosi)
#1 NE 0
#1 NE 0
Toteutuu (tosi)
Ei toteudu (eptosi)
#1 GE 0
#1 GE 0
Toteutuu (tosi)
Toteutuu (tosi)
#1 GT 0
#1 GT 0
Ei toteudu (eptosi)
Ei toteudu (eptosi)
#1 LE 0
#1 LE 0
Toteutuu (tosi)
Toteutuu (tosi)
#1 LT 0
#1 LT 0
Ei toteudu (eptosi)
Ei toteudu (eptosi)
22
7.3
23
M6 T1 (10. MM TAPPIJYRSIN)
G43 Z20. H1 M8
Q1. T11
G67
G90 G0 Z50. M9
G91 G28 Z0 M5
M30
Ohjelman lopetus
O8101 MAKRO A
#1=#5003
G0 Z#18
#109=#9*2
#100=[#11-#7]/2
Muuttuja 100 =
#120=#20
eli on nyt 5
Q:n arvon
G3 J-#100
G1 Y-#100 F#109
G90 G0 Z#1.
M99
palataan pohjelmaan
O8102 (MAKRO B)
WHILE[#120GT0]DO1
120=#120-1
END1
M99
24
7.4
Jrjestelmmuuttujat
ja
Jrjestelmmuuttujia
kirjoittamiseen.
Niill
kytetn
voidaan
erilaisten
esimerkiksi
jrjestelmtietojen
lukea
tykalujen
tarkastellaan
hieman
lhemmin
muutamia
yleisemmin
kytettyj
Liitntsignaali
Tykalun kompensointiarvo
25
Jrjestelmmuuttuja
Tykalukorjaimen numero
#2001
#2002
#2003
#2099
99
Tai vastaavasti:
#2025 =#8
Jos
#8
on
saanut
aikaisemmin
arvon
10.0,
muuttuu
7.4.3
Makrohlytys
26
Makron laatijan tulee itse mietti ja suunnitella kaikki mahdolliset virheet, joita
koneenkyttj saattaisi makroa kyttessn tehd.
Otetaan esimerkiksi aikaisemmin mainittu kiilaura. Kiilauran leveys on annettu
muuttujalla #2 (B) ja sen koneistamiseen kytettv ter annetaan muuttujalla #20 (T).
MAKRO-OHJELMAN KUTSUMUOTO:
G65 P8200 A___ B___ T___ R___ Z___ Q___
Z=#26
A=#1
T=#20
B=#2
R=#18
27
7.4.4
Aikamuuttujat
Muuttuja Yksikk
Laskee
Kello 1
#3001
1 millisekunti
Asettuu 0:aan
Aina
Kello 2
#3002
1 tunti
Kun STL-signaali on
katkaistaessa
pll
O8300
Makro-ohjelman numero
#3001 = 0
Alkuarvon nollaus.
END1
M99
28
7.4.5
Ohjelmanajon hallittavuus
Koneenkyttj voi tarvittaessa ajaa ohjelmaa lpi lauseittain, eli silloin single
block-toiminto
on
kytkettyn
plle.
Kesken
ohjelman
voidaan
sdell
Single block
Aputoiminnon loppusignaali
Kytss
Odotetaan
Ei kytss
Odotetaan
Kytss
Ei odoteta
Ei kytss
Ei odoteta
29
Makro-ohjelman numero.
G0 W#18
#3001 = 3
G1 W#26
inkrementaalisesti).
G0 W- [[#18] + [#26]]
#3003 = 0
M99
Paluu pohjelmaan.
Sytn pysytys
Kytss
Estetty
Kytss
Estetty
Kytss
Estetty
Kytss
Estetty
Sytn st
Kytss
Kytss
Estetty
Estetty
Kytss
Kytss
Estetty
Estetty
Pysytystarkkuuden tarkistus
Toteutuu
Toteutuu
Toteutuu
Toteutuu
Ei Toteudu
Ei Toteudu
Ei Toteudu
Ei Toteudu
30
Makro-ohjelman numero.
G0 Z#18
Pikaliikkeell lhestymistasolle.
#3001 = 1
G1 Z#26
Kierteen poraus.
#3004 = 7
M5
Karan pysytys.
M4
G0 Z-#26
#3004 = 0
M5
Karan pysytys.
M3
#3003 = 0
M99
Paluu pohjelmaan.
7.4.6
31
Peilikuvatoiminto
8. aks.
7. aks.
6. aks.
5. aks.
4 aks.
3. aks.
2. aks.
1. aks.
Taulukko 11. Muuttujaa #3007 vastaavat akselit ja alla esim. mukaiset bitit.
7.4.8
Modaalinen informaatio
32
#4002
#4003
#4009
#4014
#4102
B-koodi
#4109
F-koodi
#4111
H-koodi
#4113
M-koodi
#4114
Lauseen numero
#4115
Ohjelman numero
#4119
S-koodi
#4120
T-koodi
33
7.4.9
Hetkellinen asema
Sijainti tieto
Koordinaatti
Tykalun
Toiminnon
jrjestelm
kompensaatio
lukeminen
arvo
liikkeen
aikana
#5001 - #5008
#5021 - #5028
#5041 - #5048
#5061 - #5068
Luistin loppu
piste
Nykyinen
sijainti
Nykyinen
sijainti
Ohitussignaalin
asema
Kappaleen
koordinaatti
Ei sislly
Mahdollista
Sisltyy
Mahdotonta
Sisltyy
Mahdotonta
Sisltyy
Mahdollista
jrjestelm
Tystkoneen
koordinaatti
jrjestelm
Kappaleen
koordinaatti
jrjestelm
Kappaleen
koordinaatti
jrjestelm
Tykalun
#5081 - #5088
pituuden offset
Mahdotonta
arvot
#5101 - #5108
Servoaseman
poikkeama
Mahdotonta
34
Sijoitus
# i = SQRT [# j]
Nelijuuri
#i=#j+#k
Yhteenlasku
# i = ABS [#j]
Itseisarvo
#i=#j-#k
Vhennyslasku
# i = ROUND [#j]
Pyristys
#i=#j*#k
Kertolasku
# i = FIX [#j]
pyristys alaspin
#i=#j/#k
Jakolasku
# i = FUP [#j]
pyristys ylspin
# i = SIN [# j]
Sini (asteina)
# i = # j OR # k
# i = COS [# j]
Kosini (asteina)
# i = # j XOR # k
poissulkeva tai
# i = TAN [# j]
Tangentti
# i = # j AND # k
# i = ATAN [# j]
Argustangentti
# i = BIN [# j]
# i = BCD [# j]
BCD-koodin muunnos
binrikoodiksi
binrikoodin muunnos
BCD-koodiksi
35
Esimerkkej:
1. Koneen ohjelmointi tarkkuus on 0.001 mm ja #101 = 1.4567 ja
#102= ROUND[#1]. Tllin muuttuja #102 saa arvon 1.0.
2. Mutta jos X-akselille annetaan seuraava ksky, X[ROUND[#1]], ei X:n arvoksi
tulekaan 1.0, vaan 1.457.
Muuttujat #1 = 3.3 ja #2 = -2.2 pyristyvt seuraavanlaisesti:
1. Jos #103 = FUP[#1], saa muuttuja #103 arvon 4.0.
2. Jos #103 = FIP[#1], saa muuttuja #103 arvon 3.0.
3. Jos #103 = FUP[#2], saa muuttuja #103 arvon -4.0.
4. Jos #103 = FIP[#2], saa muuttuja #103 arvon -3.0.
Aritmeettisia toimintoja ja funktioita voidaan yhdistell vapaasti. Ensimmisen
suoritetaan
funktio,
sitten
kertolasku
ja
viimeisen
yhteenlasku.
Kuten
1
#110 = #120 + #130 * SIN[#1]
2
3
9 Ohjauskskyt
Ohjauskskyt ovat matemaattisten ja loogisten operaatioiden ohella koko makroohjelmoinnin ydin. Muuttujien kesken voidaan suorittaa erilaisia vertailuja. Saatuihin
vertailutuloksiin voidaan kohdistaa ehtoja tai hyppykskyj. Hyppykskyt voivat olla
joko ehdottomia tai ehdollisia.
36
9.1
Hypyt ja ehdot
Kytettv ehto
Equal to
Not equal to
Greater than
Less than
Greater than or equal to
Less than or equal to
Kytettv lyhenne
EQ
NE
GT
LT
GE
LE
>
<
37
9.2
Toisto
kaltaista
viivett
lainkaan,
joten
sen
kytt
onkin
siin
suhteessa
#501 = #501 + 1
Suoritetaan poraus.
END 1
M30
38
Nin
Ei nin
WHILE [] DO 1
WHILE [] DO 1
WHILE [] DO 2
WHILE [] DO 2
WHILE [] DO 3
WHILE [] DO 3
END3
END1
END2
END2
END1
END3
Nin
Ei nin
WHILE [] DO 1
IF [] GOTO 100
IF [] GOTO 100
WHILE [] DO 1
END1
N100
N100
END1
10 Rajoitukset
Makro-ohjelmia laadittaessa on hyv muistaa ett NC-ohjaus suorittaa kaikki
laskutoimitukset binrilukuina. Oletetaan ett muuttuja #1 saa arvon 0.002 ja
suoritetaan yksinkertainen laskutoimitus: #2 = 1000 * #1. Kymmenjrjestelmll
laskettuna vastaukseksi pitisi tulla 2, mutta binrilukuina laskettaessa vastaukseksi
tuleekin 1.99999997. Mittalukuna tmn suuruinen virhe on mitttmn pieni, eik sit
pystyttisi normaalisti edes mittaamaan. Yhteen- ja vhennyslaskuissa sek loogisissa
toiminnoissa ninkin pienest erosta saattaa tulla ongelmia. [4 s.416]
Binrijrjestelmst
johtuen
mys
tallennustarkkuudessa
voi
ilmet
virheit.
39
Kymmenjrjestelm
Binrijrjestelm
#1
9876543277777.777
9876543300000.000
#2
9876543210123.456
9876543200000.000
Tulos
67654.321
100000.000
11 Makro-ohjelmien kutsut
Makro-ohjelmankutsu voi olla kertakutsu, jolloin se on voimassa vain siin lauseessa,
jossa se on ohjelmoitu. Kytettv koodi on silloin G65. Makro-ohjelma voidaan kutsua
mys modaalisesti, jolloin se on voimassa siksi, kunnes se peruutetaan erillisell
kskyll. Modaalinen kutsu suoritetaan koodilla G66 ja sen peruutus tapahtuu koodilla
G67. G66 koodia kytetn etenkin silloin, kun makro-ohjelmalla on tehty omia
tykiertoja.
Molemmissa
tapauksissa
makro-ohjelmasta
palataan
takaisin
40
#1
#4
#20
#2
#5
#21
#3
#6
#22
#7
#13
#23
#8
#17
#24
#9
#18
#25
#11
#19
#26
MAKRO-OHJELMAN KUTSUMUOTO:
G65 P8100 A___ B___ C___ R___
A (#1)
= REIKPIIRIN ALKUKULMA
B (#2)
= REIKPIIRIN LOPPUKULMA
C (#3)
= REIKIEN LUKUMR
R (#18)
= REIKPIIRIN SDE
41
#1
K3
#12
J7
#23
#2
I4
#13
K7
#24
#3
J4
#14
I8
#25
I1
#4
K4
#15
J8
#26
J2
#5
I5
#16
K8
#27
K1
#6
J5
#17
I9
#28
I2
#7
K5
#18
J9
#29
J3
#8
I6
#19
K9
#30
K2
#9
J6
#20
I10
#31
I3
#10
K6
#21
J10
#32
J4
#11
I7
#22
K10
#33
42
#6050
O9020
#6080
O9011
#6051
O9021
#6081
O9012
#6052
O9022
#6082
O9013
#6053
O9023
#6083
O9014
#6054
O9024
#6084
O9015
#6055
O9025
#6085
O9016
#6056
O9026
#6086
O9017
#6067
O9027
#6087
O9018
#6058
O9028
#6088
O9019
#6059
O9029
#6089
43
12 Makro-ohjelmien laatiminen
On hyv muistaa ett ei ole olemassa yht ja ainoaa tapaa laatia jokin tietty makro.
On vain erilaisia tapoja toteuttaa ne, aivan kuten perusohjelmoinnissakin.
Otetaan lhtkohdaksi makron laatiminen viimeistelyplaanaukseen. Ensimmiseksi
kannattaa laatia ohjelma ilman muuttujia. Sit varten lhdetn pohtimaan mm.
seuraavia kysymyksi.
Mik on kytettvn ter leveys? Mist kohtaa ter siirtyy haluttuun syvyyteen?
Kytetnk alaspin liikkeess pienemp sytt? Koneistetaanko mytjyrsinnll
vai kytetnk zigzag-menetelm? Kuinka suuri on seuraava sivuttainen siirtym?
Tmn jlkeen piirustuksen mitat korvataankin jollain argumenttitaulukossa annetulla
kirjaimella. Thn kannattanee kytt paperia ja kyn, mutta voit toki kytt jotain
tietokoneohjelmaa apuna. Huomioi ett editori-ohjelmalla ei voi simuloida makroja,
mutta sen sijaan voit tarkastella esim. EXCEL-taulukkolaskennalla, muuttujien tuloksia.
Taulukossa 18 on siit esimerkki.
44
(F
(H
(Q
(R
(U
(V
(Z
#9 = Sytt)
#11 = Poistettava mr Z-suunnassa)
#17 = Rouhintalastun paksuus)
#18 = Lhestymis- ja paluunpiste Z-suunnassa)
#21 = Ulkoreunan ylitysmatkan minimi)
#22 = Viimeistelylastun paksuus)
#26 = Z-akselin lopullinen syvyys)
Sytt
kentt
150
75
70
50
5
Lht
X-akseli
0
Y-akseli
0
500
5
2,5
7
5
0,5
2
Laskurit
#111=#7/2 (TERAN SADE)
#112=[#3/100]*#7 (SIVUSIIRTYMAN SUURUUS)
#113=#8+#111+ABS[#101](TURVAVALI + TERAN SADE + X-AKS LAHDON ITSEISARVO)
#114 =#8+#111+#1+#101 (TURVAVALI + TERAN SADE +KPL:N LEVEYS +X:N LAHTOKOHTA)
#115=#102-#112+#111] (Y:N LAHDON ARVO - SIVUSIIRTYMAN SUURUUS + TERAN SADE)
#116=-[#2+#21] (KPL:N KORKEUS + ULKOREUNAN YLITYS = Y:N MINIM ARVOI)
IF [#11LT#17 ]THEN#17 =#11 (JOS H:N ARVO < Q:N ARVO SILLOIN Q SAA H:N ARVON)
#117=0 (ARVON NOLLAUS)
IF[#22GT0]THEN#117=1
Uudet
#118 =#17
arvot
#120=#11
5
#121=#17
2,5
#122=#22
0,5
IF[#11EQ=]THEN#120=1
5
IF[#17EQ=]THEN#121=1
2,5
IF[#22EQ=]THEN#122=1
1
#124 =#26+#11
7
#125 =#26+#22
2,5
#130=FUP[[#120-#22]/#121]
2
#131=#130+#117
3
WHILE[#131GT0]DO1
#132=#132+1
3
#141=#124-[#17*#132]
-0,5
IF[#141LT#125]THEN#141=#125
2,5
IF[#132EQ#131]THEN#141=#26
2
VARSINAINEN OHJELMA ALKAA TST
N10
G90
G0
X30,00
Y-10,00
G0
Z7,00
G1
Z4,50
F250
TUTKITTAVA TULOS
25
35
30
210
-10
-80
45
J=#5
B=#2
E=#8
D=#7
46
Harjoitustehtv 2: Kyt seuraavaa kuvaa apuna ja laadi makro-ohjelma helicalinterpolaatiolle. Tee vain viimeistely ja lk turhaan kyt sdekompensointia. Se
voidaan hoitaa muuttamalla halutun halkaisijan D-arvoa.
Z=#26
T=#20
D=#7
R=#18
X___ Y___
Paikoitus
rein
Q=#17
47
on
kohtalaisen
helppoa
kytt
sek
absoluuttista
ett
Urien pistot, niin ett saadaan aikaan haluttu leveys ja niihin tulee samalla
pyristykset tai viisteet.
Osatuoteperheet,
niin
ett
laaditaan
esim.
taulukko
josta
poimitaan
48
pisteen
avulla.
Ohjelmointiin
kytetn
rouhintatykiertoa
(G71)
ja
49
Ohjelman numero.
G0 T0101 (ROUHINTA)
G96 S180 M3
Vakiolastuamisnopeuden asetus.
Paikoitus lhestymispisteeseen, joka on otsapinnasta
G0 X54. Z2. M8
Pntasaus.
Z-15.
X46.
T0100 M5
M1
G0 T0303 (VIIMEISTELY)
G96 S250 M3
G0 X54. Z2. M8
Paikoitus lhestymispisteeseen.
Viimeistelytykierron kutsu.
T0300 M5
M30 (M2)
Ohjelman lopetus.
50
Ohjauspinni
16
12
40
18
13
45
20
15
50
G65 P7001 A__ B__ D__ Q__ R__ S__ T__ U__ W__ F__
Q = ROUHINTALASTUN PAKSUUS
R = ROUHINNAN SYTT
S = VIIMEISTELYN VAKIOLASTUAMISNOPEUS
T = VIIMEISTELYTYKALU
U = VIIMEISTELYVARA X-SUUNNASSA
W = VIIMEISTELYVARA Z-SUUNNASSA
F = VIIMEISTELYN SYTT
51
Ohjelman numero.
G0 T0101 (ROUHINTA)
G96 S180 M3
Vakiolastuamisnopeuden asetus.
F0.25
M2 (M30)
Ohjelman lopetus.
52
Makro-ohjelman numero.
G0 X[#7+2*2] Z2. M8
Z-[#B].
P3.
X[#7-4]
#100=#4120
Tykaluarvon luku
#100=#100*100
T1*100=100
T#100 M5
M1
G0 T#20 (VIIMEISTELY)
G96 S#19 M3
G0 X[#7+2*2] Z2. M8
Paikoitus lhestymispisteeseen.
Viimeistelytykierron kutsu.
#100=#4120
Tykaluarvon luku
#100=#100*100
T3*100=300
T#100 M5
M30 (M2)
Ohjelman lopetus.
53
Pinni
E R
12 25 10 4
4 1,5x1,5
14 28 10 5
4 1,5x1,5
16 30 12 6
2x2
18 32 12 6
2x2
20 35 13 7
6 2,5x2,5
14 Loppuharjoitus
Tee tarvittavat makro-ohjelmat kuvan 11 levyyn ja laadi sellainen pohjelma, joka
hydynt niit kaikissa tyvaiheissa (pyyd tarvittaessa parempi kuva opettajalta).
Kyt hyvksi jo aikaisemmin laadittuja makroja. Tarvitset mm. suorakaiteen
ympriajoon sellaisen makron, jossa on nurkkien pyristys. Tee suorakaidetaskun
rouhintaan
ja
viimeistelyyn
makro-ohjelmat.
Vaikka
porattavia
reiki
onkin
suorakaidepisteverkossa vain nelj, tee silti mys niiden poraukseen oma makro.
MUISTA laatia selket ohjeet joka makro-ohjelmaan.
Tm harjoitus voidaan toteuttaa mys niin, ett opettaja laatii kaikki tarvittavat makrot
sek niiden kyttohjeet ja oppilas ainoastaan laatii pohjelman, jossa hydynnetn
olemassa olevia makroja.
54
Kuva 2. Makroharjoituslevy.
15 Yhteenveto
Opinnytety oli mielestni erittin opettavainen ja se onnistui hyvin. Sain arvokasta
tykokemusta juuri silt alalta, johon haluan opintojeni jlkeen sijoittua. Projektin
aikana pidin kurssin ohjelmointikoulutus koneistajille. Se toteutettiin Salon seudun
aikuisopistossa jatkokurssina koneistusalan osaajille. Monipuoliselta koulutettavien
joukolta sain itsekin arvokasta tietoa erilaisten pulmien ratkaisuihin, joita pystyn
varmasti tulevaisuudessa hydyntmn.
Projektin toinen osa-alue oli Espoossa, Omniassa, nuorten ammatillisella koulutuksen
puolella ja siell ohjelmointikoulutuksen jrjestminen. Niden lisksi projektissa oli
viel mukana salolainen alihankintaan erikoistunut konepaja HalikkoTools.
Nin makro-ohjelmointikoulutusta pstiin kokeilemaan niin nuorille kuin aikuisillekin,
sek alan ammattilaisille. Samalla saatiin hyv ja arvokasta kytnnn kokemusta
makrojen kytst konepajassa.
55
LHTEET
Kirjat
[1] Ritakallio, Topi & Kivinen, Eero
Tekninen tiedotus 33/84 NC-koulutuspaketti. Helsinki: Metalliteollisuuden kustannus Oy, 1984,
s. 13
[2] Maaranen, Keijo
Koneistustekniikat. Helsinki: Werner Sderstrm Osakeyhti, 2004, s. 248251,262, 264268
[3] Vesamki, Hannu
Lastuavan tystn NC-ohjelmointi. Helsinki: Teknologia teollisuus ry, 2007 s.105, 189191
[4] FANUC Series 30i/300i/300is-MODEL A, Yhteinen sorvausjrjestelmien ja
koneistuskeskusten kyttjn ksikirja. B-63944FI 1/02
[5] FANUC Series 16/18/160/180-MC, OPERATORS MANUAL B62764EN/01
[6] Laaksonen, Jyrki (Fanuc makro-ohjelmointi kurssi 24.10.2001 AEL)
[7] Koponen, Visa
Oppimisen hallinta konepajoissa, Turun ammattikorkeakoulu 2009 s. 27, 28, 44, 48
[8] Microsoft Oy
http://windows.microsoft.com/fi-Fi/windows/history [viitattu 12.05.2011]
Selitykset
O8100 (REIKAPIIRI)
#130=#5001
#131=#5002
#132=1
#136=360
IF [#2 EQ 0] GOTO10
#136=#2
X#101 Y#102
#132 = #132 + 1
END1
M99
Liite 2. Makroharjoituslevy
O8020
G65 P8020 A__ B__ C__ D__ E__ F__ H__ Q__ R__ V__ Z__
+Z
R
H
F/
Q
V
+X
Paikoita ohjelman
alussa ter thn
nurkkaan!!!
Nollapiste saa olla
miss tahansa.
F
B
F*2
= linearinensyttliike (G1)
O8020
PLAANAUS MAKRO ZIGZAG-MENETELMLL
G65 P8020 A__ B__ C__ D__ E__ F__ H__ Q__ R__ V__ Z__
Paikoita ter vasempaan ylkulmaan, haluamallesi turvaetisyydelle.