TÁMOGATÓ:
Paraméteres programok és felhasználói makrók szerkesztése, programozása valamint mérés és digitalizálás CNC gépeken
- jegyzet és példatár – (CNC programozó technológusok részére)
tervezet
2011.
Írta Apostol Attila Dr. Sipos Jenő
Szerkesztette Apostol Attila Dr. Sipos Jenő Kovács Anita Tóth Szabolcs
2
Bevezetés .................................................................................................................... 5 I. Alprogram, alprogram technikák ............................................................................... 6 1.1. Alprogram, alprogram technikák ................................................................ 7 1.2. Globális alprogram ...................................................................................... 7 1.3. Az alprogram hívása .................................................................................... 8 1.4. Visszatérés alprogramból ............................................................................ 9 1.5. Ugrás főprogramon belül............................................................................. 9 1. számú mintafeladat ............................................................................................... 11 1.6. Lokális alprogram technika (Heidenhain iTNC530) ................................. 13 2. számú mintafeladat ............................................................................................... 15 II. PROGRAMOZÁS # PARAMÉTERREL ....................................................................... 17 Lokális változók: #1 – #33 ........................................................................ 18 2.1. 2.2. Globális változók: #100 - #199, #500 - #599 ............................................ 19 2.3. Rendszerváltozók ...................................................................................... 20 2.3.1. Szerszámkorrekciós értékek: #10001–#13999 .......................................... 20 2.3.2. Munkadarab nullponteltolások: #5201–#5328 .......................................... 20 2.3.3. Hibajelzés: #3000 ...................................................................................... 21 2.3.4. Milliszekundumos időmérő: #3001 ........................................................... 22 2.3.5. Forgácsolási (fő)időmérő: #3002 .............................................................. 22 2.3.6. Mondatonkénti végrehajtás elnyomása: #3003 ......................................... 22 2.3.7. Előtolás stop, előtolás override, pontos megállás elnyomása: #3004 ....... 22 2.3.8. Megállás üzenettel: #3006 ......................................................................... 23 2.3.9.Megmunkált darabok száma, elkészítendő munkadarabok száma: #3901, #3902......................................................................................................................... 23 2.3.10. Öröklődő információk: #4001–#4130, #4201–#4330 ............................... 23 2.3.11. Pozícióinformációk: #5001 – #5108 ......................................................... 24 2.4. A programnyelv utasításai ......................................................................... 26 2.4.1. Változók azonosítása ................................................................................. 26 2.4.2. Üres változók ............................................................................................. 27 2.4.3. Az értékadó utasítás ................................................................................... 27 2.4.4. Aritmetikai műveletek és függvények ....................................................... 28 2.5. Feltételes kifejezések ................................................................................. 30 2.6. Feltétel nélküli elágazás ............................................................................ 30 2.7. Feltételes elágazás ..................................................................................... 31 2.8. Feltételes utasítás ....................................................................................... 31 2.9. Ciklusszervezés ......................................................................................... 31 2.10. A paraméterek alkalmazásának főbb szabályai ......................................... 36 3. számú mintafeladat ............................................................................................... 37 4. számú mintafeladat ............................................................................................... 38 5. számú mintafeladat ............................................................................................... 39 III. Makrók programozása ........................................................................................... 40 Makró programozás ................................................................................... 41 3.1. 3.1.1. Az alprogramhívás és makróhívás közti különbség .................................. 41 3.2. A felhasználói makró ................................................................................. 42 3.2.1. Az egyszerű makróhívás (G65) ................................................................. 42 3
3.3. Az öröklődő makróhívás ........................................................................... 43 3.3.1. Makróhívás minden mozgásparancs után: (G66) ...................................... 43 3.4. Makróhívás minden mondatból: (G66.1) .................................................. 44 3.4.1. Az argumentumkijelölés szabályai ............................................................ 44 3.4.2. A mondatvégrehajtás szabályai G66.1 esetén: .......................................... 45 3.5. Felhasználói makróhívás G kódra ............................................................. 46 3.6. Felhasználói makró hívás speciális esetei ................................................. 47 3.6.1. A felhasználói G kódok argumentumkészlete ........................................... 47 3.7. Felhasználói makróhívás M kódra ............................................................ 47 3.8. Felhasználói alprogramhívás M kódra ...................................................... 48 3.9. Felhasználói alprogramhívás T kódra ....................................................... 49 3.10. Felhasználói alprogramhívás az S kódra ................................................... 49 3.11. Felhasználói alprogramhívás A, B, C kódra.............................................. 50 6. számú mintafeladat ............................................................................................... 68 7. számú mintafeladat ............................................................................................... 70 8. számú mintafeladat ............................................................................................... 72 9. számú mintafeladat ............................................................................................... 74 10. számú mintafeladat ............................................................................................. 76 Felhasznált irodalom ............................................................................................... 113 ……… ………………..
……………………
4
Bevezetés Ebben a jegyzetben a paraméterek, regiszterek alkalmazásának lehetőségeit mutatjuk be a CNC szerszámgépek FANUC alapú NCT 100T, 100M, 104T, 104M és az NCT 201 vezérléseken. A regiszterek (paraméterek) megismerése és alkalmazásának bevezetése után a makró készítés folyamatának és alkalmazásának lehetőségei közül kaphatnak ízelítőt a hallgatók. Ahhoz, hogy makrókat tudjunk programozni, szükséges megismerni az alprogramok alkalmazásának lehetőségeit, készítésének módszereit, alprogram technikák kialakítását. Későbbiekben látni fogjuk, hogy egy makró elkészítése hasonló programozási technikákat igényel, mint az alprogramé. Nem véletlen, hogy több szakirodalom is a makrót, mint speciális alprogramot nevezi meg. Lehetőség van arra, hogy egyetlen alkatrészprogrammal egy teljes alkatrészcsalád programját megadjuk. A # (ejtsd: hesmárk) paraméterek használatával a rögzített számértékek helyett a beviteleknél megadhatunk változókat. A # paraméterek számos értéket, technológia paramétert, adatot, kódot stb. helyettesíthetnek. A # paraméterek lehetővé teszik olyan kontúrok programozását, amelyek matematikai funkciók felhasználásával vannak megadva. A # paraméterek felhasználásával elérhető, hogy a megmunkáló program egyes lépései logikai feltételekhez legyenek kötve. A # paraméterek egy # betűvel és az utána álló számmal azonosíthatóak. Az ismétlődő programozási feladatok automatizálásához készíthetünk makrókat, melyek a CNC gépkezelő számára megkönnyítik a programkészítést. A programozó létrehozhat saját makróprogramokat a vezérlés utasításkészletével. A jegyzet többek között foglalkozik a szülő programok készítésével, mérőeszközök felépítésével,
kalibrálásával
gyártásközi
mérések
programozásával,
alkatrészek
digitalizálásával. A jegyzet az NCT Akadémia képzésében résztvevő CAD/CAM, CNC programozó technológus szakos hallgatók valamint a BSc-s gépészmérnök hallgatók számára készült.
5
I. Alprogram, alprogram technikák
6
1.1.
Alprogram, alprogram technikák Mit nevezünk alprogramnak?
☻
Mikor használunk alprogramot? Milyen fajtái vannak az alprogramnak? Milyen az alprogram utasítás készlete?
Programozás során kétféle programot készíthetünk,
főprogramot valamint,
alprogramot, melynek írása során a vezérlés fajtája alapján •
lokális vagy
•
globális alprogram programozási technikát alkalmazunk.
A fő- és alprogram felépítése teljes egészében megfelel a bevezetőben mondottaknak. Kettejük között a különbség az, hogy míg a főprogram végrehajtása után a megmunkálás befejeződik, és a vezérlés arra vár, hogy újra elindítsák, az alprogram végrehajtása után a vezérlés visszatér a hívó programba és onnan folytatja a megmunkálást. Ha egy programrész többször ismétlődik egy programon belül, azzal, hogy ezt a részt egyszer adjuk be, majd alprogramként vagy programrész ismétlésként definiáljuk, időt takaríthatunk meg és csökkenthetjük a programozási hibák előfordulásának esélyét. Ha azt akarja, hogy a programrész csak bizonyos feltételek mellett fusson, akkor ezt az alprogramban meghatározhatja. Emellett egy programot egy külön programból is meghívhat. Programozástechnikailag a különbség a kétféle program között a program lezárásából adódik.
A főprogram végrehajtása után a megmunkálás befejeződik, bezárása (M02, M30) (vagy P02, END, … más vezérlőknél) kódokkal.
Az alprogram végrehajtása után a vezérlés visszatér a hívó programba és onnan folytatja a megmunkálást, bezárása (M99) (vagy M17, LBL0, ... más vezérlőknél) kódokkal.
1.2.
Globális alprogram
Egy alprogramot akkor tekintünk globálisnak, ha a program elkülönül a főprogramtól, mert egy külön file-ban kerül leírásra. Ezt a programot bármely másik programból (fő- és alprogram) meg tudom hívni.
7
1. ábra: Általános elv az alprogram-technika használatára 1.3.
Az alprogram hívása
Az M98 P(....) utasítássor alprogramhívást generál. Az utasítás hatására a program végrehajtása a P címen meghatározott számú alprogramon folytatódik. P cím értékhatára: 1-9999 szabadon választható. Javaslom az 1-7999 közötti értékek alkalmazását, mivel az NCT által fejlesztett alprogramok és makrók 8000-9999 között vannak. Az alprogram végrehajtása után a hívó program alprogramhívást követő mondatán folytatódik a megmunkálás. Az M98 P(...) L(...) utasítássor az L címen megadott számban hívja egymás után a P címen megadott alprogramot. L cím értékhatára: 1-9999. Ha L-nek nem adunk értéket, az alprogram egyszer hívódik meg, azaz L=1-et tételez fel a vezérlő. Az M98 P11 L6 utasítás azt jelenti, hogy hívd meg az O0011-es alprogramot egymás után 6-szor. Alprogramból is lehet alprogramot hívni. Alprogramhívások 4 szintig skatulyázhatók egymásba. Megjegyzések – a következő hibajelzések fordulhatnak elő:
3069 SZINTTÚLLÉPÉS hibajelzést ad, ha az alprogram hívásszint túllépi a 4-et.
3071 P HIÁNYZIK, VAGY HIBÁS hibajelzést ad, ha P címértéke nagyobb, mint 9999, vagy nincs megadva.
3072 L MEGADÁSI HIBA hibajelzés képződik, ha L értéke hibás.
3073 NEM LÉTEZŐ PROGRAMSZÁM hibajelzés képződik, ha a P címen megadott programszám nincs a tárban.
8
1.4.
Visszatérés alprogramból
Az M99 utasítás alprogramban történő használata az alprogram végét jelenti, és a programvezérlést átadja a hívó programhívást követő mondatára. Az M99 P(...) utasítás alprogramban történő használata az alprogram végét jelenti, és a programvezérlést átadja a hívó program P cím alatt megadott számú mondatára. P cím értékhatára ebben az esetben: 1- 99999. Az M99 (P...) L(...) utasítás átírja a hívó program ciklusszámlálóját. Ha L-re 0-t írunk, az alprogram csak egyszer kerül meghívásra. Például, ha az M98 P11 L20 utasítással hívjuk meg az O0011 alprogramot és onnan M99 L5 utasítással térünk vissza az O0011 alprogram összesen 6-szor hívódik meg (L értékhatára: 1-9999). Megjegyzések – a következő hibajelzések fordulhatnak elő:
3070 NEM LÉTEZŐ MONDATSZÁM P hibajelzést ad, ha a visszatérési mondatszámot (P) nem találja a hívó programban.
2. ábra: Globális alprogram programozási technikája 1.5.
Ugrás főprogramon belül
Az M99 utasítás főprogramban történő használata feltétel nélküli ugrást eredményez a főprogram első mondatára, és a programvégrehajtást innen folytatja. Az utasítás használata végtelen ciklust eredményez.
9
Az M99 P(...) utasítás főprogramban történő használata feltétel nélküli ugrást eredményez a főprogram P cím alatt megadott számú mondatára, és a programvégrehajtást innen folytatja. Az utasítás használata végtelen ciklust eredményezhet.
Az esetleges végtelen ciklusok képződése elkerülhető, ha az M99, utasítást tartalmazó mondatot
„/1
M99”
formában
adjuk
meg.
Ekkor
kapcsolóállásától függően vagy kihagyja az ugrást, vagy nem.
10
a
feltételes
mondatkihagyás
1. számú mintafeladat
MARÓ FELADATOK (NCT-104M) 4x5 furatpontmintázat készítése globális alprogramtechnikával
CNC mondat
Magyarázat
%O0001
O0001 FŐPROGRAM
G54
1. munkadarab nullapont
G21 G17
metrikus üzemmód, "XY" forgácsolási sík
G40 G94 S1600 F100
kontúrkövetés kikapcsolása, percenkénti előtolás programozása, 1600 fordulat/perces fordulatszám, 100mm/perces előtolás
T1
egyes számú szerszám hívása
M3
főorsó megforgatása óramutató járásával egyező irányba
G0 G43 H1 Z10 X12 Y12 M8 M98 P101 L6
mozgás gyorsjárattal, hosszkorrekció hozzáadása a H1-es tárból, elmozdulás Z10-es koordinátára elmozdulás X12-es és Y12es koordinátákra, hűtőfolyadék bekapcsolása 101-es alprogram meghívása, 6-szor ismételve
11
CNC mondat
Magyarázat
G0 Z50 X-100
gyorsjárattal mozgás a Z50-es és X-100-as koordinátákra
M30
főprogram vége
%
%O0101
O0101 ALPROGRAM
G99 G81 Z-5 R2 F60
fúróciklus 60 mm/perces előtolással a Z-5-ös koordinátáig, gyorsjárati kiemeléssel visszatérve az R címen programozott Z2-es koordinátára
YI12 L5
Y tengelyen 12 mm-es elmozdulás 5-ször végrehajtva
G0 XI12 Y12
gyorsjárattal 12 mm-es elmozdulás az X tengelyen pozitív irányba és az Y12es koordinátára.
M99
alprogram vége
%
12
1.6.
Lokális alprogram technika (Heidenhain iTNC530)
Lokális alprogram alkalmazásánál az alprogram és a főprogram egy fájlban helyezkedik el.
3. ábra: Lokális alprogram vázlata Végrehajtási sorrend
A TNC végrehajtja az alkatrészprogramot addig a mondatig, ahol a CALL LABEL hívja az alprogramot. (CALL LBL1).
Az alprogram végrehajtódik az elejétől a végéig. Az alprogram végét a LBL 0 jelzi.
A főprogram az alprogram hívását követő mondattól folytatódik.
Megjegyzés:
A főprogram legfeljebb 254 alprogramot tartalmazhat.
Az alprogramok tetszőleges sorrendben és alkalommal meghívhatóak.
Egy alprogram nem hívhatja önmagát.
Az alprogramok a főprogram vége után állnak (egy M2 vagy M30 mondatot követően).
Ha az alprogramok az M2-t, vagy M30-at tartalmazó mondat előtt vannak, legalább egyszer végrehajtásra kerülnek, még akkor is, ha nincsenek meghívva.
13
Egy alprogram programozása
A kezdet megjelöléséhez nyomja meg a LBL SET gombot.
Címkeszám: Adja meg az alprogram számát.
A befejezés jelöléséhez nyomja meg a LBL SET gombot és adjon meg a címkeszámra 0-át.
Egy alprogram hívása
Az alprogram hívásához nyomja meg a LBL CALL gombot.
Alprogramok/ismétlések előhívása: Adja meg a hívandó alprogram címke számát.
Ismétlés REP: A NO ENT gombbal lépje át ezt a kérdést. Az ismétlés REP kizárólag a programrész ismétlésnél használható. (1.3. ábra)
Fontos szabályok:
Az alprogram hívásakor érvényben lévő öröklődő kódok az alprogramon belül is érvényesek.
Az alprogramban megváltoztatott öröklődő kódok az alprogramból való visszatéréskor is érvényesek maradnak.
A főprogramban, ill. az alprogramban módosított regiszterértékek kölcsönösen érvényesek.
Általában mind az alprogramok száma, mind a hívások mélysége korlátozott.
14
2. számú mintafeladat:
MARÓ FELADATOK (HEIDENHAIN 360) 3x4 furatpontmintázat készítése lokális alprogramtechnikával
CNC mondat
Magyarázat
0 BEGIN PGM 1 MM
Főprogram száma 1
1 BLK FORM 0.1 Z X+0 Y+0 Z-25
munkadarab min. sarokpontja
2 BLK FORM 0.2 X+50 Y+56 Z+0
munkadarab max. sarokpontja
3 TOOL DEF 1 L+0 R+3
1-es szerszám definiálása: R=3mm, L=0 hossz
4 TOOL CALL 1 Z S 1400
1-es szerszám és korrekciós tár hívása G17-e sík
5 L X+7 Y+7 Z+2 R0 FMAX M03
pozícionálás gyorsjárattal az X7 Y7 Z2 pontba,
6 CALL LBL 1 REP
az 1-es számú (címkéjű) alprogram meghívása
7 L X+30 Y+13 R F M
pozícionálás
15
CNC mondat
Magyarázat
8 CALL LBL 1 REP
az 1-es számú (címkéjű) alprogram meghívása
9 L X+13 Y+34 R F M
pozícionálás
10 CALL LBL 1 REP
az 1-es számú (címkéjű) alprogram meghívása
11 L Z+20 R0 FMAX M02
Pozícionálás, főprogram vége
12 LBL 1
1-es számú alprogram címkéje
13 LBL 2
2-es számú alprogram címkéje
14 CYCL DEF 1.0 PECKING 15 CYCL DEF 1.1 SET UP-2 16 CYCL DEF 1.2 DEPTH -12,4 17 CYCL DEF 1.3 PECKG -4
Fúróciklus leírása és meghívása
18 CYCL DEF 1.4 DWELL 1 19 CYCL DEF 1.5 F40 20 CYCL CALL M99 21 L IX+10 R F M99 22 L IY+10 IX-10 R F M 23 CALL LBL 2 REP 1 /1
2-es számú ismételve
24 LBL 0
1-es számú alprogram vége
25 END PGM 1
program vége
16
alprogram
meghívása
1-szer
II. PROGRAMOZÁS # PARAMÉTERREL
17
☻
Mit nevezünk paraméternek a CNC programozásban? Mikor használunk paramétereket? Milyen fajtái vannak a paramétereknek?
Lehetőség van arra, hogy egyetlen alkatrészprogrammal egy teljes alkatrészcsalád programját megadjuk. A # paraméterek használatával a rögzített számértékek helyett a beviteleknél megadhatunk változókat. A # paraméterek helyettesíthetnek például:
koordináta értékeket,
előtolást,
fordulatszámot,
ciklusadatokat,
utasításkódot,
szerszám- és tárhelyszámot, stb.
A # paraméterek lehetővé teszik olyan kontúrok programozását, amelyek matematikai funkciók felhasználásával vannak megadva. A # paraméterek felhasználásával elérhető, hogy a megmunkáló program egyes lépései logikai feltételekhez legyenek kötve. A # paraméterek egy # betűvel és az utána álló számmal azonosíthatóak:
Azt, hogy egy változó melyik csoportba tartozik, a változó száma mondja meg. 2.1.
Lokális változók: #1 – #33
A lokális változó (#i) olyan változó, amelyet a makróprogram adott helyen, lokálisan használ. Ha az A makró hívja B–t, és ha az A makróban is hivatkozunk a #i lokális változóra, meg a B makróban is, akkor az A makró szintjén lévő lokális #i változó értéke a B makró meghívása után sem veszik el és nem íródik át. A lokális változókat argumentum-átvitelre használjuk. Az argumentum címe és a lokális változók közötti megfeleltetést a 4. ábra mutatja. Az a lokális változó, melynek a címe nem szerepelt az argumentumkijelölésben az üres és szabadon felhasználható.
18
4. ábra: Az argumentum címe és a lokális változók közötti megfeleltetés 2.2.
Globális változók: #100 - #499, #500 - #999 (NCT-100-as típusú
vezérlőknél #100 - #199, #500 - #599) A globális változók a lokális változókkal ellentétben nem csak a programhívások ugyanazon szintjein azonosak, hanem végig az egész programon keresztül. Függetlenül, hogy főprogramban, alprogramban, vagy makróban vagyunk-e, illetve, hogy a makró melyik szintjén. Ha tehát #i–t valamelyik makróban használtuk, annak például értéket adtunk, egy másik makróban #i–nek ugyanaz marad az értéke mindaddig, amíg át nem írjuk. A globális változók a rendszerben teljesen szabad felhasználásúak, nincs semmi kitüntetett szerepük. A #100–tól #199–ig terjedő globális változók törlődnek kikapcsolásra. A #500–tól #599–ig terjedő globális változók értéke kikapcsolás után is megőrződik. A #500–tól #599–ig terjedő makróváltozók írásvédetté tehetők a WRPROT1 és a WRPROT2 paraméterek segítségével. A WRPROT1 paraméterre a védeni kívánt tömb első elemét, a WRPROT2 paraméterre a védetté nyilvánított tömb utolsó elemét írjuk. Például, ha a #500–tól a #510–ig tartó változókat írásvédetté akarjuk tenni, WRPROT1=500–ra és WRPROT2=510–re kell állítani a paramétereket. NCT 201 vezérlőn a WRPROT-ot a következő váltja fel: N1702 Write Prt Low (L1...L10, egész, csatorna) N1703 Write Prt Hig (L1...L10, egész, csatorna) A #500-as makróváltozók egy tetszőleges tömbje védetté tehető a fenti paraméterekkel. A tömb kezdőcímét a Write Prt Low, a tömb végcímét a Write Prt Hig paraméterre írjuk. Ha pl. Write Prt Low=720, és Write Prt Hig=745, akkor a #720-tól #745-ig terjedő makróváltozók írásvédettek. Az 5. ábrán a #500–#599 globális makróváltozók láthatók. Ezek a változók kikapcsolásra és az automata üzemmód resetelésekor (RESET gomb) sem törlődnek. A paraméterekhez kapcsolódva viszont, a paraméterek mentésekor a külső eszközre kiíródnak, a paraméterek beolvasásakor pedig az eredeti értékek felülíródnak. A makróváltozókon egy kiemelősáv mozgatható a le és fel nyílbillentyűkkel. Ez a kiemelő sáv a szerkeszthető változóra mutat. A változónak új értéket az alsó sorban lehet adni. Az adatbevitelt lezárva az új érték beíródik a változóba. A makróváltozónak közvetve is értéket adhatunk: egy másik makróváltozó azonosítóját beírva (pl.:#124) annak a változónak az értékét veszi fel. Egy makróváltozó üresre törlése a #0 beírásával érhető el.
19
5. ábra: A #500–#999 globális makróváltozók NCT 201 2.3.
Rendszerváltozók
A rendszerváltozók kötött változók, amelyek a rendszer állapotáról adnak információt. A szakdolgozatban nem minden rendszerváltozó ismertetésére térek ki, csak azokat ismertetem, melyek a gépészmérnöki képzés programozási ismeretek elsajátításához, a makrók írásához szükségesek. 2.4.1. Szerszámkorrekciós értékek: #10001–#13999 A szerszámkorrekciós értékeket ki lehet olvasni a #10001–#13999 változókon, illetve értéket lehet nekik adni. H D Korrekció száma geometriai kopás geometriai kopás 1
#10001
#11001
#12001
#13001
2
#10002
#11002
#12002
#13002
… 999 #10999 #11999 #12999 #13999 6. ábra: Szerszámkorrekciós értékek: #10001–#13999 NCT 100-as tip. 2.4.2. Munkadarab nullponteltolások: #5201–#5328 A munkadarab nullponteltolások értékeit ki lehet olvasni a #5201–#5328 változókon, illetve értéket lehet nekik adni. változó száma #5201 #5202
értéke közös munkadarab nullponteltolás 1. tengely közös munkadarab nullponteltolás 2. tengely
… #5208 #5221 #5222 … #5228
közös munkadarab nullponteltolás 8. tengely munkadarab nullpont eltolás 1. tengely munkadarab nullpont eltolás 2. tengely munkadarab nullpont eltolás 8. tengely
20
munkadarab koordinátarendszer
összes munkadarab koordinátarendszerében érvényes
G54
7. ábra: Munkadarab nullponteltolások A tengelyek számozása a fizikai tengelyszámot jelenti. Azt, hogy a tengelyszám és a tengelyek elnevezése között mi az összefüggés, a gép építője határozza meg az AXIS paramétercsoportban. Általában az 1. tengely az X, a 2. tengely az Y, a 3. tengely a Z címhez van rendelve, de ettől eltérő megadások is lehetségesek.
2.4.3. Hibajelzés: #3000 A #3000=nnn(HIBAJELZÉS) értékadás esetén számmal jelzett (nnn: max. három számjegy), és/vagy szöveges hibaüzenetet adhatunk. A szöveget (,) gömbölyű zárójelek közé kell tenni. Az üzenet hossza legfeljebb 25 karakter lehet. Ha a makróban hibát észlel a program, azaz olyan ágra fut, ahol a #3000 változónak értéket adtunk, az előző mondatig végrehajtja a programot. Ezután a végrehajtást felfüggeszti és a képernyőn megjelenik a zárójelek között megadott hibaüzenet, illetve az üzenet kódja. A kód formája 4nnn formában, azaz a #3000 értéken megadott nnn számhoz hozzáad 4000-et. Ha számot nem adtunk meg, az üzenet kódja 4000 lesz, ha szöveget nem adtunk, csak a kód jelenik meg. A hibaállapot a RESET gombbal szüntethető meg. Pld.:
21
… IF[#100NE#101] THEN #3000=111 (a megadott érték helytelen) …
2.4.4. Milliszekundumos időmérő: #3001 A #3001 változó értéke írható és olvasható. Két időpont között eltelt időt mérhetünk meg milliszekundumos (ms) mértékegységben, kb. 20 ms pontossággal. A #3001 számláló 65536-nál túlcsordul. A #3001 változó értéke bekapcsoláskor nulláról indul és felfele számol. Mindig számol, amikor a vezérlés be van kapcsolva. 2.4.5. Forgácsolási (fő)időmérő: #3002 A #3002 változó értéke írható és olvasható. Két időpont között eltelt időt mérhetjük meg perc mértékegységben, kb. 20 ms pontossággal. A #3002 változó értéke bekapcsoláskor a kikapcsoláskor érvényes értékkel indul, és felfele számol. Akkor számol, amikor a START lámpa ég, azaz a vezérlés start állapotában méri az időt. A paramétertár CUTTING2 nevű időmérőjén található. 2.4.6. Mondatonkénti végrehajtás elnyomása: #3003 A #3003=1 a mondatonkénti végrehajtás állapotában mindaddig nem áll meg egy mondat végrehajtása után, amíg ennek a változónak az értéke 0 nem lesz. Bekapcsolásra, program elejére történő resetelésre változó értéke 0-t vesz fel. #3003 mondatonkénti végrehajtás 0 nincs elnyomva 1 el van nyomva 2.4.7. Előtolás stop, előtolás override, pontos megállás elnyomása: #3004 Az előtolás stop funkció elnyomása esetén a stop gomb megnyomása után akkor áll meg az előtolás, amikor az elnyomás oldásra kerül. Az előtolás override elnyomásakor az override értékét 100%–nak veszi, amíg az elnyomás nem kerül oldásra. A pontos megállás elnyomásakor addig nem végez vizsgálatot a vezérlő, amíg az elnyomás nem került oldásra. Bekapcsolásra, program elejére történő resetelésre a változó értéke 0. #3004 0 1 2
előtolás override 0 0 1
pontos megállás 0 0 0
22
előtolás stop 0 1 0
3 4 5 6 7
0 1 1 1 1
1 0 0 1 1
1 0 1 0 1
0: a funkció hatásos 1: a funkció el van nyomva 8. ábra: Előtolás stop, előtolás override, pontos megállás elnyomása: #3004 2.4.8. Megállás üzenettel: #3006 A #3006=nnn(ÜZENET) értékadás hatására a program végrehajtása megáll, és a gömbölyű zárójelek közé zárt üzenet megjelenik a képernyőn. A kód formája 5nnn, vagyis a #3006 értéken megadott nnn számhoz hozzáad 5000-et. Ha számot nem adtunk, az üzenet kódja 5000 lesz. Ha szöveget nem adtunk, csak a kód jelenik meg. A program végrehajtása a START gomb lenyomására folytatódik, ekkor az üzenet letörlődik a képernyőről. Az üzenet hossza legfeljebb 25 karakter lehet. Az utasítás hasznosan alkalmazható olyan esetben, amikor a program végrehajtása közben kezelői beavatkozás szükséges.
2.4.9 e g m u n kált darabok száma, elkészítendő munkadarabok száma: #3901, #3902 A megmunkált darabok számát a #3901–es számlálóban gyűjti a vezérlő. A számláló tartalmát minden M02, M30 vagy a PRTCNTM paraméterben kijelölt M funkció végrehajtásakor 1–el lépteti a vezérlő. Amikor a megmunkált darabok száma elérte a szükséges munkadarabszámot (#3902–es számláló) a végrehajtó egy flagen értesíti a PLC–t: megmunkált darabok száma #3901, elkészítendő darabok száma #3902. A #3901 számláló a paramétertár PRTTOTAL, a #3902 számláló a paramétertár PRTREQRD paraméterén található. 2.4.10. Öröklődő információk: #4001–#4130, #4201–#4330 A megelőző mondatban érvényes öröklődő parancsok a #4001–#4130–as rendszerváltozók olvasásával állapíthatók meg. A pillanatnyilag végrehajtás alatt álló mondatban érvényes öröklődő parancsok a #4201–4330–as változók olvasásával állapíthatók meg.
23
2.4.11. Pozícióinformációk: #5001 – #5108 Mondatvégi pozíciók: rendszer pozíció információ jellege változó #5001 1. tengely mondatvégi pozíciója, #5002 2. tengely mondatvégi pozíciója, … … …. 8. tengely mondatvégi pozíciója. #5008
beolvasás mozgás közben
lehetséges
A mondatvégi pozíció az aktuális munkadarab koordinátarendszerben, a koordinátaeltolások figyelembe vételével, derékszögű koordinátákban, az összes korrekció (hossz, sugár, szerszámeltolás) figyelmen kívül hagyásával kerül a változóba. Pillanatnyi pozíciók a gép koordinátarendszerében: rendszer változó #5021 #5022 … …. #5028
pozíció információ jellege
beolvasás mozgás közben
1. tengely pillanatnyi pozíciója (G53), 2. tengely pillanatnyi pozíciója (G53), … 8. tengely pillanatnyi pozíciója (G53).
NEM lehetséges
A pillanatnyi pozíció (G53)
a gép koordinátarendszerében, az összes korrekció (hossz, sugár, szerszámeltolás) figyelembe vételével kerül a változóba. Pillanatnyi pozíciók a munkadarab koordinátarendszerében:
24
rendszer változó #5041 #5042 … …. #5048
pozíció információ jellege
beolvasás mozgás közben
1. tengely pillanatnyi pozíciója 2. tengely pillanatnyi pozíciója … 8. tengely pillanatnyi pozíciója
NEM lehetséges
A pillanatnyi pozíció
az aktuális munkadarab koordinátarendszerben, a koordinátaeltolások figyelembe vételével, derékszögű koordinátákban, az összes korrekció (hossz, sugár, szerszámeltolás) figyelembe vételével kerül a változóba. Tapintási pozíciók: rendszer változó #5061 #5062 … …. #5068
pozíció információ jellege
beolvasás mozgás közben
1. tengely tapintási pozíciója (G31), 2. tengely tapintási pozíciója (G31), lehetséges
… 8. tengely tapintási pozíciója (G31).
G31 mondatban az a pozíció, ahol a tapintó jele megjött
az aktuális munkadarab koordinátarendszerben, a koordinátaeltolások figyelembe vételével, derékszögű koordinátákban, az összes korrekció (hossz, sugár, szerszámeltolás) figyelembe vételével kerül a változóba. Ha a tapintó jele nem jött meg, a fenti változók a G31 mondatban programozott végponti pozíciót veszik fel.
25
9. ábra: Tapintási és más # pozíciók 2.4.
A programnyelv utasításai
A különböző utasítások leírásánál a #i =
kifejezést használjuk. A tartalmazhat aritmetikai műveleteket, függvényeket, változókat, konstansokat. Általánosságban a –ban a #j és a #k változókra hivatkozunk. A nem csak az értékadó utasítás jobb oldalán állhat, hanem a NC mondatban (programmondatban) a különböző címek is felvehetnek konkrét számérték vagy változó helyett formulát is. 2.4.1. Változók azonosítása Több változó használható, és minden változót a száma azonosít. Változóra való hivatkozást a # jel vezet be, és az utána következő szám jelöli ki a változó számát. Például: #12 #138 #5106 Változóra formulával is hivatkozhatunk: #[] Például: #[#120] jelentése: a 120–as változóban található az a szám, ahányadik változóra hivatkozunk.
26
#[#120-4] jelentése: a 120–as változóban található számból 4–et levonva kapjuk a hivatkozott változó számát. A programmondat szavaiban a különböző címek nemcsak számértéket vehetnek föl, hanem változók értékeit is. A címek után változóra való hivatkozás esetén is használható a "–" mínusz előjel, illetve az I operátor, de csak ott, ahol ez megengedett számértékek esetén. Például: G#102 ha #102=1.0, akkor ez a hivatkozás G1–gyel egyenértékű, XI–#24 ha #24=135.342, akkor ez a hivatkozás XI–135.342–vel egyenértékű. Programszám: O, mondatszám: N, feltételes mondat: / címei után változóra való hivatkozás nem megengedett. N címet akkor tekinti mondatszámnak, ha a mondatban legfeljebb a / cím előzi meg. Egy változó számát nem helyettesíthetjük változóval, azaz nem írhatjuk, hogy ##120. A helyes megadás: #[#120] Ha cím után használjuk a változót, akkor a változó értéke nem haladhatja meg az adott címre megengedett értéktartományt. Például: ha #112=5630 - az M#112 hivatkozás hibajelzést eredményez. Ha cím után használjuk a változót, a változó értéke a címnek megfelelő értékes jegyre kerekítődik. Például: #112=1.23 esetén M#112 M1 lesz, #112=1.6 esetén M#112 M2 lesz. 2.4.2. Üres változók
Az olyan változó értéke, amelyikre még nem hivatkoztunk, üres.
A #0 változó értéke mindig üres: #0=<üres>
2.4.3. Az értékadó utasítás: #i = #j Az utasítás kódja: = Az utasítás hatására a #i változó a #j változó értékét veszi fel, vagyis #i változóba bekerül #j változó értéke.
27
2.4.4. Aritmetikai műveletek és függvények Egyoperandusú műveletek Egyoperandusú mínusz: #i = – #j A művelet kódja: – A művelet hatására a #i változó a #j változóval abszolút értékben megegyező nagyságú, de ellentétes előjelű lesz. Aritmetikai negáció: #i = NOT #j A művelet kódja: NOT A művelet hatására a #j változót először átalakítja 32 bites fixpontos számmá. Ha az így átalakított szám 32 biten nem ábrázolható, 3091 HIBÁS MŰVELET #-VAL hibajelzést ad. Ezután ennek a fixpontos számnak a bitenkénti negált értékét veszi mind a 32 bitre, majd az így keletkezett számot visszaalakítja lebegőpontossá és beteszi a #i változóba. Additív aritmetikai műveletek Összeadás: #i = #j + #k A művelet kódja: + A művelet hatására a #i változó a #j és #k változók értékének összegét veszi fel. Kivonás: #i = #j – #k Az művelet kódja: – A művelet hatására a #i változó a #j és #k változók értékének különbségét veszi fel. Aritmetikai vagy: #i = #j OR #k A művelet kódja: OR A művelet hatására a #i változóba a #j és a #k változók bitenkénti értékeinek logikai összege kerül, mind a 32 bitre. Ahol a két szám azonos helyiértékén mindkét helyen 0 található, arra a helyiértékre az eredményben 0 kerül, egyébként 1. Multiplikatív aritmetikai műveletek Szorzás: #i = #j * #k A művelet kódja: * A művelet hatására a #i változó a #j és #k változók értékének szorzatát veszi fel. Osztás: #i = #j / #k A művelet kódja: / A művelet hatására a #i változó a #j és #k változók értékének hányadosát veszi fel. A #k értéke nem lehet 0. Ellenkező esetben 3092 0-VAL OSZTÁS # hibajelzést ad a vezérlő.
28
Modulusképzés: #i = #j MOD #k A művelet kódja: MOD A művelet hatására a #i változó a #j és #k változók osztási maradékát veszi fel. A #k értéke nem lehet 0. Ellenkező esetben 3092 0-VAL OSZTÁS # hibajelzést ad a vezérlő. Példa: #120 = 27 MOD 4 esetén a #120 változó értéke 3 lesz. Függvények Négyzetgyökvonás: #i = SQRT #j A függvény kódja: SQRT A művelet hatására a #i változó a #j változó négyzetgyökét veszi fel. A #j változó értéke nem lehet negatív szám. Szinusz: #i = SIN #j A függvény kódja: SIN A művelet hatására a #i változó a #j változó szinuszát veszi fel. A #j értéke mindig fokban értendő. Koszinusz: #i = COS #j A függvény kódja: COS A művelet hatására a #i változó a #j változó koszinuszát veszi fel. A #j értéke mindig fokban értendő. Tangens: #i = TAN #j A függvény kódja: TAN A művelet hatására a #i változó a #j változó tangensét veszi fel. A #j értéke mindig fokban értendő. A #j értéke nem lehet (2n+1)*90°, ahol n=0, ±1, ±2,... Arkuszszinusz: #i = ASIN #j A függvény kódja: ASIN A művelet hatására a #i változó a #j változó arkuszszinuszát veszi fel. A –1##j#1feltételnek teljesülnie kell. Az eredmény, azaz a #i értéke +90° és -90° közé esik. Arkuszkoszinusz: #i = ACOS #j A függvény kódja: ACOS A művelet hatására a #i változó a #j változó arkuszkoszinuszát veszi fel. A –1##j#1feltételnek teljesülnie kell. Az eredmény, azaz a #i értéke 0° és 180° közé esik. Arkusztangens: #i = ATAN #j A függvény kódja: ATAN
29
A művelet hatására a #i változó a #j változó arkusztangensét veszi fel. Az eredmény, azaz a #i értéke +90° és –90° közé esik. Abszolút érték képzés: #i = ABS #j A függvény kódja: ABS A művelet hatására a #i változó a #j változó abszolút értékét veszi fel. Kerekítés abszolút értékben lefelé: #i = FIX #j A függvény kódja: FIX A művelet a #j változó törtrészét eldobja és ez az érték kerül a #i változóba. Például: #130 = FIX 4.8 = 4 #131 = FIX –6.7 = –6 Kerekítés abszolút értékben felfelé: #i = FUP #j A függvény kódja: FUP A művelet a #j változó törtrészét eldobja és abszolút értékben 1–et ad hozzá. Például: #130 = FUP 12.1 = 13 #131 = FUP –7.3 = –8 2.5.
Feltételes kifejezések
A programnyelv a következő feltételes kifejezéseket ismeri: egyenlő: #i EQ #j nem egyenlő: #i NE #j nagyobb, mint: #i GT #j kisebb, mint: #i LT #j nagyobb, vagy egyenlő: #i GE #j kisebb, vagy egyenlő: #i LE #j A feltételes kifejezés mindkét oldalán a változó helyettesíthető formulával is. A fenti feltételes kifejezések IF, vagy WHILE feltételvizsgáló utasítások után állhatnak. 2.6.
Feltétel nélküli elágazás:
GOTOn (MENJ) A GOTOn utasítás hatására a program végrehajtása feltétel nélkül ugyanannak a programnak az n számú mondatán folytatódik. Az n szám helyettesíthető változóval, vagy
30
formulával is. A mondatszámnak, amelyikre a GOTOn utasítással ugrunk, a mondat elején kell szerepelni. Ha a kijelölt mondatszámot nem találja, 3070 NEM LÉTEZŐ MONDATSZÁM hibajelzést ad. 2.7.
Feltételes elágazás:
IF[] GOTOn (HA[<..>]MENJ) Ha a kötelezően szögletes zárójelek közé tett [] teljesül, a program végrehajtása ugyanannak a programnak az n számú mondatán folytatódik. Ha a [] nem teljesül, a program végrehajtása a következő mondaton folytatódik. Ha az IF után nem feltételvizsgálat következik, 3091 HIBÁS MŰVELET #-VAL hibajelzést ad. Ha a feltételvizsgálatban szintaktikai hiba van, 3064 HIBÁS MAKRÓ KIFEJEZÉS hibát jelez. 2.8.
Feltételes utasítás:
IF[] (THEN)utasítás (HA[<..>]AKKOR ) Ha a [] teljesül, a THEN mögötti utasítás végrehajtásra kerül. Ha a [] nem teljesül, a program végrehajtása a következő mondaton folytatódik. Az utasításban a THEN elhagyható az IF[] utasítás utasítássor végrehajtása ugyanaz. 2.9.
Ciklusszervezés:
WHILE[] DOm (AMÍG[<..>]TEDD) ... ENDm (VÉGE) Amíg a [] teljesül, a DO m utáni mondatok az END m mondatig ismételten végrehajtásra kerülnek. Vagyis a vezérlés megvizsgálja, hogy a feltétel teljesült–e, ha igen végrehajtja a DO m és END m közötti programrészt, majd END m utasítás hatására a program visszatér a WHILE utáni feltétel újbóli vizsgálatára. Ha a [] nem teljesül, a program végrehajtása az END m utáni mondaton folytatódik. Ha a WHILE [] elhagyásra kerül, azaz a ciklust a DO m ... END m utasítások írják le, a DO m és END m közötti programrészt végtelen ideig hajtja végre. Az m lehetséges értékei: 1, 2, 3. Ettől eltérő értékek megadása 3091 HIBÁS MŰVELET #-VAL hibajelzést eredményez. Ha a WHILE után nem feltételvizsgálat következik, 3091 HIBÁS
31
MŰVELET #-VAL hibajelzést ad. Ha a feltételvizsgálatban szintaktikai hiba van 3064 HIBÁS MAKRÓ KIFEJEZÉS hibát jelez.
DO m utasítást END m utasítás előtt kell megadni:
… END1 … …
HIBÁS
… DO1
A DO m és END m utasításoknak párban kell állniuk:
… DO1 … DO1
HIBÁS
… END1 … vagy … DO1 … END1
HIBÁS
… END1 …
32
Ugyanazt az azonosító számot többször lehet használni:
… DO1 … END1 … …
HELYES
… DO1 … END1
DOm ... ENDm párok háromszoros mélységig skatulyázhatók
egymásba: … DO1 … DO2 … DO3 … …
HELYES
… END3 … END2 … END1 …
33
A DO m ... END m párok nem lapolhatják át egymást:
… DO1 … DO2 … …
HIBÁS
… END1 … END2
Ciklus belsejéből a cikluson kívülre el lehet ágazni:
… DO1 … GOTO150 … …
HELYES
… END1 … N150 …
34
Ciklusba kívülről nem lehet belépni:
… GOTO150 … DO1 … …
HIBÁS
… N150 … END1 … vagy … DO1 … N150 … …
HIBÁS
… END1 … GOTO150 …
Ciklus belsejéből alprogram, vagy makróhívás lehetséges. Az alprogram, vagy a felhasználói makró belsejében a ciklusok ismét háromszoros mélységig skatulyázhatók egymásba:
… DO1 … M98... HELYES … G65... HELYES …
35
G66... HELYES … G67... HELYES … END1 … 2.10. A paraméterek alkalmazásának főbb szabályai:
Kitöltetlen paraméter nulla vagy olyan értékű, ami korábban volt betöltve (súlyos programhiba!)
Paramétertöltést általában a program elején végzünk, a paraméter hívását megelőzően.
Paramétert tartalmazó mondatban (pl. N40 #500=3000) egyéb utasítás ne szerepeljen.
A paraméterek felhasználási célját az ún. paraméter kiosztási táblázatban célszerű megadni annak érdekében, hogy a program könnyen értelmezhető legyen. Egy bizonyos paraméter kitöltött értéke bármilyen célra használható (pl. #500=100 használható X0,1 mm-es koordinátaként is vagy F100 mm/perc előtolásként)
Mínusz előjellel lehívott paraméter a betöltött tartalmat ellenkező előjellel hívja le.
Legtöbb FANUC rendszerű vezérlésnél a paramétereket mikronban kell kitölteni,
de
az
előtolásra
és
fordulatszámra
vonatkozó
paramétertartalom nem mikronban van megadva. A vezérlés fejlettségi fokától függ, hogy milyen jellegű paraméterműveleteket tesz lehetővé (pl. csak paramétertöltés lehetséges vagy paraméter és konstansok).
Művelet is lehetséges vagy paraméterek egymás közötti művelete is lehetséges).
A kezelő által szabadon felhasználható paraméterek köre lehatárolt (FANUC OM: #500-#530 között; SINUMERIK: R1-R100 között).
36
3. számú mintafeladat:
MARÓ FELADATOK (NCT-104M) Furat programozása paraméteres ciklussal
CNC mondat
Magyarázat
%O7078 N100 T1 N110 G54 G0 X10 Y0 N120 G43 Z50 H1 N130 S1000 M3 M8 N140 #1=1 N150 WHILE[#1LE9] DO1 N160 G0 X10 Y0 N170 G81 YI10 R2 Z-10 L9 N180 G80 N190 G52 XI10 Y0 N200 #1=#1+1 N210 END1
A módszer lényege, hogy a függőleges furatsorokat egy belső ciklusba szervezzük. Ebben az esetben nincs szükség alprogramra, de be kell vezetni úgynevezett makróváltozókat. Ezeket a makróváltozókat értékadással definiáljuk, és tetszőlegesen felhasználhatók. A ciklust a WHILE utasítás jellemzi, amely az ADDIG szót jelenti. A ciklus elejét a DO1, a végét az END1 jelzi, ahol a számok az összetartozást jelölik. A ciklus addig tartja fent önmagát (működik) amíg a [………] zárójelek közötti állítás igaz, ha nem akkor az END1 mögötti sorra ugrik.
N220 G52 X0 Y0 N230 G0 Z100 N240 M30 %
37
4. számú mintafeladat:
MARÓ FELADATOK (NCT-104M) Furat pontháló programozása egymásba ágyazott ciklussal
CNC mondat
Magyarázat
%O7079 N100 T1 N110 G54 G0 X10 Y0 N120 G43 Z50 H1 N130 S1000 M3 M8 N140 #1=10 N150 WHILE[#1LE90] DO1 N140 #2=10 N150 WHILE[#2LE90] DO2 N170 G81 X#1 Y#2 R2 Z-10 N200 #2=#2+10
Ebben az esetben a két egymásba ágyazott ciklusnál a makróváltozókat megfeleltetjük a furatok X, illetve Y koordinátáinak. Így a makróváltozó kezdőértéket az első koordinátájára, végértéket az utolsó koordinátáira állítjuk be. A makróváltozók növelését a koordináták közötti különbséggel végezzük.
N210 END2 N200 #1=#1+10 N210 END1 N220 G80 N230 G0 Z100 N240 M30
38
5. számú mintafeladat:
MARÓ FELADATOK (NCT-104M) Progresszíven változó furatmélység
CNC program N5 G54 S800 M3 N10 #500=0 N15 #501=-100 N20 G90 G0 X#500 Y0 N25 G0 Z2 N30 G1 Z#501 F60 N35 G0 Z2 N40 #500=#500+20 N45 #501=#501+5 N50 M5 (FORGÁS STOP) N55 M0 (FORGÁCSELTÁVOLÍTÁS) N60 M3 (FŐORSÓ FORGÁS INDUL) N65 IF [#500 EQ160] GOTO75 N70 GOTO 20 N75 G90 G0 Z100 (KIÁLL) N80 M30
Magyarázat
#500 regiszter tartalma = 0 #501 regiszter tartalma = -100 X#500 (a változóra való hivatkozást # jel vezeti be, és az utána következő szám jelöli ki a változó számát) #500=#500+20 az 500-as regiszter értékének növelése 20 mm-rel #501=#501+5 az 501-es regiszter értékének növelése 5 mm-rel IF #500 EQ 160 GOTO75 Ha #500 regiszter tartalma egyenlő 160-nal, akkor ugorjon a N75-re
39
III. Makrók programozása
40
Mit nevezünk makrónak a CNC programozásban?
☻
Mire használjuk a makrókat? Mi a különbség a makró és az alprogram között? Kinek készítjük a makró programokat?
A makró a művelet vagy műveletek csoportja, amelyet feladatok automatizálására használhatunk. Az ismétlődő programozási feladatok automatizálásához készíthetünk makrókat, melyek a CNC gépkezelő számára megkönnyítik a programkészítést. A programozó létrehozhat saját makróprogramokat a vezérlés utasítás készletével. 3.1.
Makró programozás
Az alkatrész program írása során a főprogramban, az alprogramokban és a makrókban konkrét számértékek helyett változókat is tudunk adni az egyes címeknek. A változóknak érték adható a megengedett értékhatáron belül, használatukkal a programozás sokkal rugalmasabbá tehető. Főprogramokban és alprogramokban a globális változók használatával a megfelelő méretadatok paraméterezhetők, így a hasonló, ám különböző méretű darabokhoz nem kell új programot írni, hanem a megfelelő globális változók átírásával áttérhetünk egy újabb méretű darabra. A változók használatával, a makró sokkal egyszerűbben kezelhető, mint a hagyományos alprogram. Amíg az alprogramnak nem lehet paramétereket átadni, addig a makrónak a lokális változókon keresztül argumentumok, vagy paraméterek átadhatók. 3.1.1. Az alprogramhívás és makróhívás közti különbség
Makróhívás tartalmazhat argumentumot, az alprogramhívás nem.
Az alprogramhívás csak a mondatba programozott egyéb parancsok végrehajtása után ágazik el a hívott alprogramba, a makróhívás csak elágazik.
A
makróhívás
megváltoztatja
a
lokális
változók
szintjét,
az
alprogramhívás nem.
Például: •
a #1értéke G65 hívás előtt más, mint a makró törzsében.
•
a #1 értéke M98 előtt ugyanaz, mint #1 értéke az alprogramban.
41
Típus Makróhívás Alprogramhívás
Előtte #1=0 #1=0
CNC mondat G65 P100 A12 M98 P100 L2
Utána #1=12 #1=0
3.1. táblázat: #1 lokális változó értéke 3.2.
A felhasználói makró
3.2.1. Az egyszerű makróhívás (G65) A G65 P(programszám) L(ismétlési szám) <argumentum kijelölés> utasítás hatására a P címen (programszám) megadott számú makróprogram az L címen megadott számmal egymás után ismételten meghívódik. A makróprogramnak argumentumokat lehet átadni. Az argumentumok olyan, a meghatározott címeknek adott konkrét számértékek, amelyek a makróhívás során a megfelelő lokális változókban kerülnek eltárolásra (lásd: 3.1. táblázat). A makróprogram ezeket a lokális változókat fel tudja használni. Vagyis a makróhívás olyan speciális alprogramhívás, ahol az alprogramnak a főprogram változókat (paramétereket) tud átadni. Az egyszerű makróhívás (G65) utasításban kétféle argumentumkijelölés lehetséges: 1. sz. argumentumkijelölés címlánca: ABCDEFHIJKMQRSTUVWXYZ A G, L, N, O, P címeken nem lehet értéket átadni a makróprogramnak, más szóval ezek a címek nem használhatók argumentumkijelölésre a G65 utasításban. A címeket tetszőleges sorrendben lehet kitölteni, nem szükséges, hogy ABC sorrendben írjuk be őket. 2. sz. argumentumkijelölés címlánca: A B C I1 J1 K1 I2 J2 K2 ... I10 J10 K10 Az A, B, C címeken kívül az I, J, K címekre maximum 10 különböző argumentum jelölhető ki. A címeket tetszőleges sorrendben lehet kitölteni. Ha több argumentumot jelölünk ki ugyanarra a címre, a változók a kijelölés sorrendjében veszik fel a megfelelő értéket.
42
lv #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11
1. ak A B C I J K D E F (G) H
2. ak A B C I1 J1 K1 I2 J2 K2 I3 J3
lv #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22
1. ak (L) M (N) (O) (P) Q R S T U V
2. ak K3 I4 J4 K4 I5 J5 K5 I6 J6 K6 I7
lv #23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33
1. ak W X Y Z -
2. ak J7 K7 I8 J8 K8 I9 J9 K9 I10 J10 K10
3.2. táblázat: #1-#33 lokális változók A táblázatban a #1-#33-ig a lokális változókat jelöljük, 1. ak: 1. sz. argumentumkijelölést, 2. ak: 2. sz. argumentumkijelölést jelenti. Az I, J, K címek utáni indexek
az
argumentumkijelölés
sorrendjét
mutatják.
Az
1.
sz.
és
a
2.
sz.
argumentumkijelölés együtt is létezhet egy mondaton belül, a vezérlés elfogadja. Hibát akkor jelez, ha egy adott számú változóra kétszer akarunk hivatkozni.
Ebben a példában #8–nak a második J cím (értéke –34) már adott értéket, és mivel az E cím értékét is a #8 változó veszi fel a vezérlés 3064 HIBÁS MAKRÓ KIFEJEZÉS hibát üzen. Tizedespont, előjel, is átadható a címeken. 3.3.
Az öröklődő makróhívás
3.3.1. Makróhívás minden mozgásparancs után: (G66) A G66 P(programszám) L(ismétlési szám) <argumentum kijelölés> utasítás hatására a P címen (programszám) megadott számú makróprogram az L címen megadott számmal egymás után ismételten meghívódik minden mozgásparancs végrehajtása után. P és L címek értelmezése, valamint az argumentumkijelölés szabálya megegyezik a G65 utasításnál leírtakkal.
43
A kijelölt makró mindaddig meghívódik, amíg a G67 makróhívás öröklődésének törlőparancsát nem programoztuk. Például: az alkatrészprogram egy adott szegmensén minden mozgás után egy furatot kell készíteni: Főprogram részlet: G66 P100 Z-66 R1 Q10 F100
G0 XI100 YI20 … … XI50 … G67
Leírás: P(makró száma) Z(furat talppontja) R(furat kihúzási sík) X(várakozási idő) F(előtolás) Q(egyszeri fúrási mélység) A fúrást a fenti paraméterekkel minden pozícióban végrehajtja a szerszámgép.
G67 hatására törlődik a G66 Makróprogram részlet:
%O100 G0 Z#18 G83 Z#24 R#18 Q#17
M99 3.4.
Leírás: Makró program száma Pozicionálás Z tengelyen R címen(-) megadott értékre. G83 mélyfurat ciklus, fúrás Z tengelyen Z(#24) címen megadott értékig, biztonsági távolság és kihúzás mértéke R címen (#18) átvett érték, Q címen a fogásvétel értékét veszi át a #17 lokális változótól. Makróprogram vége, visszatér a főprogramba
Makróhívás minden mondatból: (G66.1)
A G66.1 P(programszám) L(ismétlési szám) <argumentum kijelölés> parancs hatására az összes utána következő mondatot argumentumkijelölésnek értelmezi és a P címen megadott számú makrót hívja be, azt hajtja végre az L címen megadott számú ismétléssel. A parancs hatása ugyanaz, mintha minden mondat G65–ös makróhívás lenne. A kijelölt makró mindaddig meghívódik, amíg a G67 makróhívás öröklődésének törlőparancsát nem programoztuk. 3.4.1. Az argumentumkijelölés szabályai: a) A bekapcsolást végző mondatban (ahol a G66.1 P L–t programoztuk), az argumentumkijelölésre használható címek ugyanazok, mint a G65 parancs esetén, (lásd: 3.2. táblázat). b) A G66.1 utasítást követő mondatokban:
44
A G65 parancs esetén használható címek, valamint L: #12, P: #16, G: #10 azzal a megkötéssel, hogy a vezérlő egy mondatban csak egy G címre történő hivatkozást fogad el. Ha több G címet programoztunk 3005 ILLEGÁLIS G KÓD hibajelzést ad. N: #14 ha egy N cím a mondat elején áll (legföljebb a / feltételes mondat címe előzi meg), a második N címet argumentumnak veszi.
Ha az N cím a mondat közepén található (bármely /-től különböző cím megelőzi), akkor N cím argumentumként kerül értelmezésre.
Ha N cím már egyszer argumentumként került bejegyzésre, a következő N címre történő hivatkozás már 3064 HIBÁS MAKRÓ KIFEJEZÉS hibajelzést eredményez. 3.4.2. A mondatvégrehajtás szabályai G66.1 esetén: A kijelölt makró már abból a mondatból meghívódik, ahol a G66.1 kódot megadtuk, figyelembe véve az 3.4.1.a. pont alatti argumentumkijelölési szabályokat. A G66.1 kódot követő mondattól a G67 kódot tartalmazó mondatig minden NC mondat makró hívást eredményez a 3.4.1.b. pont argumentumkijelölési szabályai alapján. Nem hívódik meg a makró, ha üres mondatot talál (pl.: N1240), ahol csak egy N címre történt hivatkozás, illetve makróutasítást tartalmazó mondatból.
45
3.5.
Felhasználói makróhívás G kódra
A paramétermezőben ki lehet jelölni legfeljebb 10 különböző G kódot, amelyre makróhívást akarunk kezdeményezni. Ekkor az Nn G65 Pp <argumentum kijelölés> utasítássor helyett az Nn Gg <argumentum kijelölés> utasítássort kell leírni. Például: N100 G65 P6666 X10 Y31 Z65 Q2 K4 R12 A45 J34 helyett N100 G400 X10 Y31 Z65 Q2 K4 R12 A45 J34 A paramétermezőben azt kell beállítani, hogy a hívó G kód melyik programszámot hívja. G65, G66, G66.1, G67 kód nem adható meg ilyen célra. G(9010): G kód, amelyik az O9010 sz. programot hívja G(9011): G kód, amelyik az O9011 sz. programot hívja … G(9019): G kód, amelyik az O9019 sz. programot hívja Ha a paramétermezőben negatív értéket adunk meg, akkor a kijelölt G kód modális hívást generál. Például, ha a G(9011)=–120, akkor a programban a G120 utasítás öröklődő hívást eredményez. Azt, hogy a hívás típusa milyen legyen, a MODGEQU=0: a G hívás G66 típusú MODGEQU=1: a G hívás G66.1 típusú paraméter állapota határozza meg. Ha a paraméter értéke 0, a makró minden mozgásmondat végén hívódik. Ha a paraméter értéke 1 a makró minden mondatra meghívódik. Ha egy sztenderd G kódot jelölünk ki felhasználói hívásra (pl. G01–et) és a makró törzsében ismét erre a kódra hivatkozunk, ez a hivatkozás már nem eredményez újabb makróhívást, hanem a vezérlés, mint közönséges G kódot értelmezi és hajtja végre azt. Ha a felhasználói hívásban a makrótörzsben ismételten a hívó G kódra hivatkozunk, és ez nem sztenderd G kód 3005 ILLEGÁLIS G KÓD hibajelzést ad a vezérlő. Az előző példát kövessük végig: N100 G65 P6666 X10 Y31 Z65 Q2 K4 R12 A45 J34 (eredeti egyszerű makró hívás)
%O6666 a hívott makró programszáma
46
%O6666 file mentése %O9010 programként (Program – szerkeszt – file – ment másként)
G(9010) = 400 a hívó G(400) kód %O9010 programszámot hívja (beállítás – felhasználói paraméter –makró – Gmakró)
N100 G400 X10 Y31 Z65 Q2 K4 R12 A45 J34 3.6.
Felhasználói makró hívás speciális esetei
a) felhasználói G kód hívásból felhasználói M, S, T, A, B, C hívása, b) felhasználói M, S, T, A, B, C hívásból felhasználói G kód hívása paraméterállástól függően engedélyezett. FGMAC=0 : nem engedélyezett (közönséges M, S, G kódként kerülnek végre hajtásra), FGMAC=1 : engedélyezett, azaz új hívás keletkezik. 3.6.1. A felhasználói G kódok argumentumkészlete:
ha a kód G65 vagy G66 típusú, a G65–höz rendelt argumentumkészlet, valamint P és L,
ha a kód G66.1 típusú, akkor argumentumkészletére az ott elmondottak érvényesek.
Az öröklődő hívás törlése G67 utasítással történik. 3.7.
Felhasználói makróhívás M kódra
A paramétermezőben ki lehet jelölni legfeljebb 10 különböző M kódot,
amelyre makróhívást akarunk kezdeményezni. Ekkor az Nn Mm <argumentum kijelölés> utasítássort kell leírni. Az M kód ebben az esetben nem kerül a PLC–nek átadásra, hanem a megfelelő programszámú makró kerül hívásra. A paramétermezőben azt kell beállítani, hogy a hívó M kód melyik programszámot hívja. M(9020): M kód, amelyik az O9020 sz. programot hívja, M(9021): M kód, amelyik az O9021 sz. programot hívja,
47
… M(9029): M kód, amelyik az O9029 sz. programot hívja. N100 M68 X10 Y31 Z65 Q2 K4 R12 A45 J34 M kóddal mindig G65 típusú, tehát nem öröklődő hívás adható meg. Ha a felhasználói hívásban a makrótörzsben ismételten ugyanarra az M kódra hivatkozunk, a makró nem hívódik újra, hanem az M kód a PLC–nek kerül átadásra. N100 M68 X10 Y31 Z65 Q2 K4 R12 A45 J34 M3
átadás
PLC
Ha a makrótörzsben felhasználói G, S, T, A, B, C vagy más felhasználói M hívás történik: FGMAC=0: nem engedélyezett (közönséges M, S, G kódként kerülnek végre hajtásra), FGMAC=1: engedélyezett, azaz új hívás keletkezik. A paramétermezőben kijelölt, makróhívást kezdeményező M kódot a mondatban csak a / és az N cím előzheti meg. M kódra indított makróhívást tartalmazó mondatban csak egy M kód szerepelhet.
1. sz. argumentumkészlete: ABCDEFGHIJKLPQRSTUVWXYZ
M funkcióval a 2. sz. argumentumkészlet is használható.
3.8.
Felhasználói alprogramhívás M kódra
A paramétermezőben ki lehet jelölni legfeljebb 10 darab M kódot, amire alprogramhívást lehet kezdeményezni. Ekkor az
N100 G65 X10 Y31 Z65 Q2 K4 M98 P6666 %O6666=%O9001 utasítás helyett a következő utasítás adható meg:
%O9001=100
N100 G65 X10 Y31 Z65 Q2 K4 M100 M100 Ekkor a kijelölt M kód nem kerül a PLC–nek átadásra, hanem a megfelelő alprogram hívódik meg. A paramétermezőben azt kell beállítani, hogy a hívó M kód melyik programszámot hívja. M(9000): M kód, amelyik az O9000 sz. programot hívja,
48
M(9001): M kód, amelyik az O9001 sz. programot hívja, … M(9009): M kód, amelyik az O9009 sz. programot hívja. Ha a felhasználói hívásban az alprogramban ismételten a hívó M kódra hivatkozunk, az alprogram nem hívódik újra, hanem az M kód a PLC–nek kerül átadásra. Ha az alprogramban felhasználói G, S, T, A, B, C vagy más felhasználói M hívás történik: FGMAC=0: nem engedélyezett (közönséges M, S, G kódként kerülnek végre hajtásra), FGMAC=1: engedélyezett, azaz új hívás keletkezik. 3.9.
Felhasználói alprogramhívás T kódra
A T(9034)=1 paraméter érték mellett a programba írt T érték nem kerül a PLC–nek átadásra, hanem a T kód az O9034 alprogram hívását kezdeményezi. Ekkor a Gg Xx Yy Tt mondat ekvivalens az alábbi két mondattal: #199=t Gg Xx Yy M98 P9034 A T címnek adott érték argumentumként átadódik a #199 globális változónak. Ha a T kódra induló alprogramban újra T címre hivatkozunk, az alprogram nem hívódik újra, hanem a cím értéke már a PLC–nek kerül átadásra. Ha az alprogramban felhasználói G, M, S, A, B, C hívás történik: FGMAC=0: nem engedélyezett (közönséges M, S, G kódként kerülnek végre hajtásra), FGMAC=1: engedélyezett, azaz új hívás keletkezik. 3.10. Felhasználói alprogramhívás az S kódra Az S(9033)=1 paraméter érték mellett a programba írt S érték nem kerül a PLC–nek átadásra, hanem az S kód az O9033 alprogram hívását kezdeményezi. Ekkor a Gg Xx Yy Ss mondat ekvivalens az alábbi két mondattal: #198=s Gg Xx Yy M98 P9033 Az S címnek adott érték argumentumként átadódik a #198 globális változónak. Ha az S kódra induló alprogramban újra S címre hivatkozunk, az alprogram nem hívódik újra, hanem a cím értéke már a PLC–nek kerül átadásra.
49
Ha az alprogramban felhasználói G, M, T, A, B, C hívás történik: FGMAC=0: nem engedélyezett (közönséges M, S, G kódként kerülnek végre hajtásra) FGMAC=1: engedélyezett, azaz új hívás keletkezik. 3.11. Felhasználói alprogramhívás A, B, C kódra Ha a paramétermezőben az A(9030)=1, vagy a B(9031)=1, vagy a C(9032)=1 akkor a programba írt A, B, vagy C érték nem kerül sem a PLC–nek, sem az interpolátornak átadásra, hanem az A, B, vagy C kód az O9030, O9031, vagy az O9032 alprogram hívását kezdeményezi. Ekkor pl.: a Gg Xx Yy Bb mondat ekvivalens az alábbi két mondattal: #196=b Gg Xx Yy M98 P9031 Az A címnek adott érték a #195, a B címnek adott érték a #196, a C címnek adott érték pedig a #197 globális változónak adódik át. Ha az A, B, vagy C kódra induló alprogramban újra ugyanarra a címre hivatkozunk, az alprogram nem hívódik újra, hanem a cím értéke már a PLC–nek vagy az interpolátornak kerül átadásra. Ha az alprogramban felhasználói G, M, S, T, hívás történik: FGMAC=0: nem engedélyezett (közönséges M, S, G kódként kerülnek végre hajtásra), FGMAC=1: engedélyezett, azaz új hívás keletkezik. 3.12. Adatkiadások, szülő programok Az NCT-104T/M vezérlés a következő adatkiadási parancsokat ismeri: POPEN periféria megnyitása BPRNT bináris adatkiadás DPRNT decimális adatkiadás PCLOS periféria zárása Ezeket az adatkiadó parancsokat karaktereknek és változók értékeinek a kiadására lehet használni. A kiadás történhet a vezérlés memóriájába és a soros csatornán keresztül egy külső adattároló eszközre.
50
Periféria megnyitása: POPENn Mielőtt adatkiadó parancsot adunk, meg kell nyitni a megfelelő perifériát, amin keresztül az adatkiadás történni fog. A megfelelő periféria kiválasztása az „n” számmal történik: n = 1 soros csatorna, RS–232C interface n = 31 a vezérlés memóriája A periféria megnyitásakor egy % karakter is kiküldésre kerül a perifériára, tehát minden adatkiadás egy % karakterrel kezdődik. Decimális adatkiadás: DPRNT[...]
DPRNT [ X#130 [53] Y#500 [53] T#10 [2] ] #130=35.897421 -----------------
35.897
#500=–150.8
----------------- –150.8
#10=214.8
-----------------
15
Pld.: DPRNT [ X#130 [cd] Y#500 [53] T#10 [2] ] Szabályok: Változók értékeinek kiadásához meg kell adni, hogy a változó hány decimális egész és tört jegyen kerüljön kiadásra. A számjegyek megadását [ ] zárójelek közé kell tenni. A számjegyek megadására a 0 < c + d < 9 feltételnek teljesülni kell. A számok kiadása a legmagasabb helyértéküktől kezdődik. A számjegyek kiadásánál a negatív előjel (–) és a tizedespont (.) is ISO kódjukkal kerülnek kiadásra. Ha a PRNT paraméter PRNT=0 a + előjel és a vezető nullák helyén szóköz (space) kód kerül kiadásra, a tizedespont után, ha van, minden nulla a 0 kóddal kerül kiadásra. Ha a paraméter PRNT=1 a + előjel és a vezető nullák nem kerülnek kiadásra, ha tizedespont definiálva van az utána következő nullák kiadásra kerülnek, ha tizedespont nincs definiálva sem tizedespontot sem nullát nem ad ki.
51
Ha d=0, akkor a tizedespont kiadásra kerül, míg csak c–t megadva a tizedespontot sem adja ki a vezérlés. Az üres változót 0 kóddal adja ki. Az összes karakter és számjegy (paraméterállástól függően) ISO, vagy ASCII kódban kerül kiadásra. Az adatkiadás végén a vezérlés automatikusan egy soremelés (LF) karaktert ad ki. Periféria zárás: PCLOSn A POPEN paranccsal megnyitott perifériát a PCLOS paranccsal le kell zárni. A PCLOS parancs után meg kell nevezni a lezárandó periféria számát. A lezáráskor még egy % karakter is kiküldésre kerül a perifériára, azaz minden adatkiadást egy % karakter zár le.
Megjegyzések:
Az adatkiadási parancsok sorrendje kötött: először POPEN paranccsal meg kell nyitni a megfelelő perifériát, utána jöhet az adatkiadás BPRINT, vagy DPRINT paranccsal, végül a megnyitott perifériát le kell zárni a PCLOS utasítással.
A periféria megnyitása és lezárása bárhol a programban megadható. Például a program elején megnyitható, a program végén lezárható, és közben a program bármely, a két utasítás közé eső részén adat kiküldhető.
Adatkiadás közben végrehajtott M30, vagy M2 parancs megszakítja az adatátvitelt. Ha ezt el akarjuk kerülni, az M30 parancs végrehajtása előtt várakozni kell adatátvitel közben.
A megnyitott periféria paramétereinek (baud rate, stop bitek száma, stb.) helyes beállítására ügyelni kell. Ezek állítása a paramétermező SERIAL csoportjában lehetséges.
52
Szülő programok A szülő programként megírt alkatrészprogramokkal a nagyobb szériát igénylő munkadarabok elkészítését tudjuk, paraméter mentessen elkészíteni. Az ilyen technológiával megírt program előnye a paraméteres alkatrész programhoz képest, hogy a rendkívül sok számítás a futásidő elmarad, és a tényleges előtolás érvényesül, nem a processzoridő dönt az előtolás mértékéről. Ezt az eljárást használjuk a tapintós munkadarab digitalizálási eljárásoknál is. Erről későbbi fejezetben lesz szó. Mintafeladat: Az ábrán, látható ellipszisre készítsünk el makró segítségével egy gyors futásra alkalmas, makró változók nélküli kontúrt megadó technológiai programot.
Szülőprogram NCT 201-es vezérlésen, mely létrehozza az „O2000”-es programot G54 G21 G17 G40 G97 G94 G90 S2000 F100 T1 G43 H1 Z50 POPEN31 DPRNT[O2000] DPRNT[ G54] DPRNT[G21 G17 ] DPRNT[ G40 G97 G94 G90 S2000 F100] DPRNT[T1 ] DPRNT[G43 H1 Z50 ] G52 X50 Y50 DPRNT[G52 X50 Y50 ] #100=#12001+#13001 (VALÓS SZERSZÁMSUGÁR) #101=40+#100 (X IRÁNYÚ VALÓS SUGÁR) #102=30+#100 (Y IRÁNYÚ VALÓS SUGÁR) #560=COS0*#101 #561=SIN0*#102 G0 X#560 Y#561 Z2 G1 Z-5 DPRNT[G0 Z2] DPRNT[G1 Z-5] #550=0 WHILE [#550 LE 360] DO1 #550=#550+1 #560=COS#550*#101 #561=SIN#550*#102
53
G1 X#560 Y#561 DPRNT[G1 X#560[33] Y#561 [33]] END1 G0 Z50 DPRNT[G0 Z50] DPRNT[M30] PCLOS31 M30
Létrehozott program: %O2000 G54 G21 G17 G40 G97 G94 T1 G43 H1 Z50 G52 X50 Y50 G0 Z2 G1 Z-5 N 1 G1 X N 2 G1 X N 3 G1 X N 4 G1 X N 5 G1 X N 6 G1 X N 7 G1 X N 8 G1 X N 9 G1 X N 10 G1 X N 11 G1 X N 12 G1 X N 13 G1 X N 14 G1 X N 15 G1 X N 16 G1 X N 17 G1 X N 18 G1 X N 19 G1 X N 20 G1 X N 21 G1 X N 22 G1 X N 23 G1 X N 24 G1 X N 25 G1 X N 26 G1 X N 27 G1 X N 28 G1 X N 29 G1 X N 30 G1 X N 31 G1 X N 32 G1 X N 33 G1 X N 34 G1 X N 35 G1 X N 36 G1 X
N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N
G90 S2000 F100
39.993 39.975 39.945 39.902 39.847 39.780 39.701 39.610 39.507 39.392 39.265 39.125 38.974 38.811 38.637 38.450 38.252 38.042 37.820 37.587 37.343 37.087 36.820 36.541 36.252 35.951 35.640 35.317 34.984 34.641 34.286 33.921 33.546 33.161 32.766 32.360
Y 0.523 Y 1.046 Y 1.570 Y 2.092 Y 2.614 Y 3.135 Y 3.656 Y 4.175 Y 4.693 Y 5.209 Y 5.724 Y 6.237 Y 6.748 Y 7.257 Y 7.764 Y 8.269 Y 8.771 Y 9.270 Y 9.767 Y 10.260 Y 10.751 Y 11.238 Y 11.721 Y 12.202 Y 12.678 Y 13.151 Y 13.619 Y 14.084 Y 14.544 Y 14.999 Y 15.451 Y 15.897 Y 16.339 Y 16.775 Y 17.207 Y 17.633
54
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
31.945 31.520 31.085 30.641 30.188 29.725 29.254 28.773 28.284 27.786 27.279 26.765 26.242 25.711 25.172 24.626 24.072 23.511 22.943 22.367 21.785 21.196 20.601 20.000 19.392 18.778 18.159 17.534 16.904 16.269 15.629 14.984 14.334 13.680 13.022 12.360 11.694 11.025 10.352 9.676 8.998 8.316 7.632 6.945 6.257
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
18.054 18.469 18.879 19.283 19.681 20.073 20.459 20.839 21.213 21.580 21.940 22.294 22.641 22.981 23.314 23.640 23.959 24.270 24.574 24.871 25.160 25.441 25.715 25.980 26.238 26.488 26.730 26.963 27.189 27.406 27.615 27.815 28.007 28.190 28.365 28.531 28.689 28.837 28.977 29.108 29.231 29.344 29.448 29.544 29.630
N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1
X 5.566 X 4.874 X 4.181 X 3.486 X 2.790 X 2.093 X 1.395 X 0.698 Y X 0.000 Y X-0.698 Y X- 1.395 X- 2.093 X- 2.790 X- 3.486 X- 4.181 X- 4.874 X- 5.566 X- 6.257 X- 6.945 X- 7.632 X- 8.316 X- 8.998 X- 9.676 X- 10.352 X- 11.025 X- 11.694 X- 12.360 X- 13.022 X- 13.680 X- 14.334 X- 14.984 X- 15.629 X- 16.269 X- 16.904 X- 17.534 X- 18.159 X- 18.778 X- 19.392 X- 19.999 X- 20.601 X- 21.196 X- 21.785 X- 22.367 X- 22.943 X- 23.511 X- 24.072 X- 24.626 X- 25.172 X- 25.711 X- 26.242 X- 26.765 X- 27.279 X- 27.786 X- 28.284 X- 28.773 X- 29.254 X- 29.725 X- 30.188
Y 29.708 Y 29.776 Y 29.835 Y 29.885 Y 29.926 Y 29.958 Y 29.981 29.995 30.000 29.995 Y 29.981 Y 29.958 Y 29.926 Y 29.885 Y 29.835 Y 29.776 Y 29.708 Y 29.630 Y 29.544 Y 29.448 Y 29.344 Y 29.231 Y 29.108 Y 28.977 Y 28.837 Y 28.689 Y 28.531 Y 28.365 Y 28.190 Y 28.007 Y 27.815 Y 27.615 Y 27.406 Y 27.189 Y 26.963 Y 26.730 Y 26.488 Y 26.238 Y 25.980 Y 25.715 Y 25.441 Y 25.160 Y 24.871 Y 24.574 Y 24.270 Y 23.959 Y 23.640 Y 23.314 Y 22.981 Y 22.641 Y 22.294 Y 21.940 Y 21.580 Y 21.213 Y 20.839 Y 20.459 Y 20.073 Y 19.681
N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N
55
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-
30.641 31.085 31.520 31.945 32.360 32.766 33.161 33.546 33.921 34.286 34.641 34.984 35.317 35.640 35.951 36.252 36.541 36.820 37.087 37.343 37.587 37.820 38.042 38.252 38.450 38.637 38.811 38.974 39.125 39.265 39.392 39.507 39.610 39.701 39.780 39.847 39.902 39.945 39.975 39.993 40.000 39.993 39.975 39.945 39.902 39.847 39.780 39.701 39.610 39.507 39.392 39.265 39.125 38.974 38.811 38.637 38.450 38.252
Y 19.283 Y 18.879 Y 18.469 Y 18.054 Y 17.633 Y 17.207 Y 16.775 Y 16.339 Y 15.897 Y 15.451 Y 14.999 Y 14.544 Y 14.084 Y 13.619 Y 13.151 Y 12.678 Y 12.202 Y 11.721 Y 11.238 Y 10.751 Y 10.260 Y 9.767 Y 9.270 Y 8.771 Y 8.269 Y 7.764 Y 7.257 Y 6.748 Y 6.237 Y 5.724 Y 5.209 Y 4.693 Y 4.175 Y 3.656 Y 3.135 Y 2.614 Y 2.092 Y 1.570 Y 1.046 Y 0.523 Y 0.000 Y-0.523 Y- 1.046 Y- 1.570 Y- 2.092 Y- 2.614 Y- 3.135 Y- 3.656 Y- 4.175 Y- 4.693 Y- 5.209 Y- 5.724 Y- 6.237 Y- 6.748 Y- 7.257 Y- 7.764 Y- 8.269 Y- 8.771
N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-
38.042 37.820 37.587 37.343 37.087 36.820 36.541 36.252 35.951 35.640 35.317 34.984 34.641 34.286 33.921 33.546 33.161 32.766 32.360 31.945 31.520 31.085 30.641 30.188 29.725 29.254 28.773 28.284 27.786 27.279 26.765 26.242 25.711 25.172 24.626 24.072 23.511 22.943 22.367 21.785 21.196 20.601 20.000 19.392 18.778 18.159 17.534 16.904 16.269 15.629 14.984 14.334 13.680 13.022 12.360 11.694 11.025 10.352
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY-
9.270 9.767 10.260 10.751 11.238 11.721 12.202 12.678 13.151 13.619 14.084 14.544 15.000 15.451 15.897 16.339 16.775 17.207 17.633 18.054 18.469 18.879 19.283 19.681 20.073 20.459 20.839 21.213 21.580 21.940 22.294 22.641 22.981 23.314 23.640 23.959 24.270 24.574 24.871 25.160 25.441 25.715 25.980 26.238 26.488 26.730 26.963 27.189 27.406 27.615 27.815 28.007 28.190 28.365 28.531 28.689 28.837 28.977
N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N
56
256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1
X- 9.676 Y- 29.108 X- 8.998 Y- 29.231 X- 8.316 Y- 29.344 X- 7.632 Y- 29.448 X- 6.945 Y- 29.544 X- 6.257 Y- 29.630 X- 5.566 Y- 29.708 X- 4.874 Y- 29.776 X- 4.181 Y- 29.835 X- 3.486 Y- 29.885 X- 2.790 Y- 29.926 X- 2.093 Y- 29.958 X- 1.395 Y- 29.981 X-0.698 Y- 29.995 X-0.000 Y- 30.000 X 0.698 Y- 29.995 X 1.395 Y- 29.981 X 2.093 Y- 29.958 X 2.790 Y- 29.926 X 3.486 Y- 29.885 X 4.181 Y- 29.835 X 4.874 Y- 29.776 X 5.566 Y- 29.708 X 6.257 Y- 29.630 X 6.945 Y- 29.544 X 7.632 Y- 29.448 X 8.316 Y- 29.344 X 8.998 Y- 29.231 X 9.676 Y- 29.108 X 10.352 Y- 28.977 X 11.025 Y- 28.837 X 11.694 Y- 28.689 X 12.360 Y- 28.531 X 13.022 Y- 28.365 X 13.680 Y- 28.190 X 14.334 Y- 28.007 X 14.984 Y- 27.815 X 15.629 Y- 27.615 X 16.269 Y- 27.406 X 16.904 Y- 27.189 X 17.534 Y- 26.963 X 18.159 Y- 26.730 X 18.778 Y- 26.488 X 19.392 Y- 26.238 X 20.000 Y- 25.980 X 20.601 Y- 25.715 X 21.196 Y- 25.441 X 21.785 Y- 25.160 X 22.367 Y- 24.871 X 22.943 Y- 24.574 X 23.511 Y- 24.270 X 24.072 Y- 23.959 X 24.626 Y- 23.640 X 25.172 Y- 23.314 X 25.711 Y- 22.981 X 26.242 Y- 22.641 X 26.765 Y- 22.294 X 27.279 Y- 21.940
N 314 N 315 N 316 N 317 N 318 N 319 N 320 N 321 N 322 N 323 N 324 N 325 N 326 N 327 N 328 N 329 N 330 N 331 N 332 N 333 N 334 N 335 N 336 N 337 N 338 N 339 N 340 N 341 N 342 N 343 N 344 N 345 N 346 N 347 N 348 N 349 N 350 N 351 N 352 N 353 N 354 N 355 N 356 N 357 N 358 N 359 N 360 N 361 G0 Z50 M30 %
G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1 G1
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
27.786 28.284 28.773 29.254 29.725 30.188 30.641 31.085 31.520 31.945 32.360 32.766 33.161 33.546 33.921 34.286 34.641 34.984 35.317 35.640 35.951 36.252 36.541 36.820 37.087 37.343 37.587 37.820 38.042 38.252 38.450 38.637 38.811 38.974 39.125 39.265 39.392 39.507 39.610 39.701 39.780 39.847 39.902 39.945 39.975 39.993 40.000 39.993
Y- 21.580 Y- 21.213 Y- 20.839 Y- 20.459 Y- 20.073 Y- 19.681 Y- 19.283 Y- 18.879 Y- 18.469 Y- 18.054 Y- 17.633 Y- 17.207 Y- 16.775 Y- 16.339 Y- 15.897 Y- 15.451 Y- 15.000 Y- 14.544 Y- 14.084 Y- 13.619 Y- 13.151 Y- 12.678 Y- 12.202 Y- 11.721 Y- 11.238 Y- 10.751 Y- 10.260 Y- 9.767 Y- 9.270 Y- 8.771 Y- 8.269 Y- 7.764 Y- 7.257 Y- 6.748 Y- 6.237 Y- 5.724 Y- 5.209 Y- 4.693 Y- 4.175 Y- 3.656 Y- 3.135 Y- 2.614 Y- 2.092 Y- 1.570 Y- 1.046 Y-0.523 Y-0.000 Y 0.523
57
Programfutási adatok:
Szülőprogram
Paraméter nélküli program2000
Eredmény: A darabidő 1/7-re csökkent
58
3.13.
Makrók programozásának matematikai alapjai
Egy sokszöget a legegyszerűbben egy kör sokszögesítésével állíthatunk elő, ugyanis ha egy körívet megfelelően nagyszámú pontokkal egyenlő részekre felosztunk, és a pontokat egymás után egyenesekkel összekötjük, akkor az így kapott szakaszok a körív burkológörbéjét adják. Minél jobban közelítjük a pontok számát a végtelenhez (ami által egyre rövidülnek a pontokat összekötő egyenesek), annál jobban közelíti a burkológörbe a kört. Természetesen a pontok számának csökkentésével egyre szögletesebb lesz a burkológörbe és a végén eljutunk a sokszögekhez. A pontok száma határozza meg a sokszög fajtáját. Ha a pontok száma 3 (ez a minimális érték, ennél kevesebb nem lehet) akkor egy háromszöget kapunk. Belátható, hogy a kör végeredményben végtelenszög. A sokszög megadása paraméteresen:
X=R*COSα Y=R*SINα
X ,Y a kör egy tetszőleges pontja, adott R-hez és szögelforduláshoz R a kör sugara, sokszög esetén a sokszög köré írható kör sugara α az R sugár szögelfordulása Sokszög esetén, mivel a sokszög csúcspontjait írjuk le, az R sugárnak a sokszög köré írható kör sugarának kell lennie. Haα -t 0-tól 360-fokig léptetjük, akkor a sokszög pontjait írjuk le. Ez ciklusszervezéssel, vagy feltételes elágazással megvalósítható. A sokszög fajtáját az α szög lépésnagysága határozza meg, ezt úgy kapjuk meg, hogy a 360 fokot elosztjuk a sokszög szögeinek számával. Pl. hatszög esetén az alfa szöget 360/6=60 fokonként növeljük 0-tól 360-ig. Az α sz ög mindig a kiválasztott sík első tengelyétől számítód ik (G17-nél X tengely, G18-nál Z tengely) és iránya az óramutató járásával ellentétesen pozitív. A fentiekben ismertetett eljárással csak szigetet tudunk készíteni. Ahhoz, hogy egy zsebet tudjunk készíteni a marót spirál pálya mentén kell mozgatnunk a zseb középpontjától a zseb kontúrjáig. A spirál pálya mentén történő szerszámmozgatás az Arkhimédészi
spirálissal
valósítható
meg.
Az
Arkhimédészi spirál olyan spirális síkgörbe, mely azon pontok
mértani
helye,
melyeket
mozgása
során
pillanatnyilag elfoglal egy rögzített pont (a póluspont) körül
egyenletes
szögsebességgel
forgó
59
és
a
pólusponttól állandó sebességgel távolodó pont. Ezen spirál polárkoordinátás egyenlete a következő: R(α)=a+b*α ahol a és b valós számok. Az a paraméter megváltoztatása elfordítja a pólus körül a görbét, a b paramétertől pedig a sorban következő fordulatok közötti távolság függ. Az egyenletből következik, hogy a és b valós számok de értékük fokban értendő.
A b paraméter nem más, mint a fordulatok közötti távolságnak és egy körülfordulás szögének (azaz 360 foknak) a hányadosa Az egyenletből látható, hogy a sugár a szögelfordulással egyenes arányban növekszik, egy 360 fokos körülfordulás alatt 0-tól b*360-ig. A teljes 360 fokos fordultok, száma függ a fordulatok közötti távolságtól és az elérni kívánt sugártól (ez nem más, mint a kör sugara, vagy a sokszög köré írható kör sugara). Fordulatok száma=Sugár/fordulatok közötti távolság. A spirál derékszögű egyenlete: X=b*α*COS[a+α], Y=b*α*SIN[a+α] A spirális ciklusszervezéssel vagy feltételes elágazással megvalósítható. Az előzőekben tárgyalt kör sokszögesítése erre az esetre is igaz. Ha tehát az alfa szög lépésnagysága megfelelően kicsi, akkor spirálvonal ív lesz, ha növeljük a lépésnagyságot akkor a spirál szögletes lesz. Ha αazszöget a lépésnagysággal növeljük akkor a spirál körüljárási iránya az óramutató járásával ellentétes, ha az alfa szöget a léptetéssel csökkentjük akkor a spirál körüljárási iránya az óramutató járásával megegyező. αAzszög mindig a kiválasztott sík első tengelyétől számítódik (G17-nél X tengely, G18-nál Z tengely) és iránya az óramutató járásával ellentétesen pozitív
#100=0 #101=5 #102=1 lesz) #103=4 #104=0
(α) (a fordulatok közötti távolság, vagyis a b paraméter 360 szorosa) (az α szög léptetésének mértéke, mivel α egyesével növekszik így a spirál ív (teljes 360 fokos fordulatok száma) (a pólus körüli elforgatás szöge)
Ciklus: WHILE [#100 LE [#103*360]] DO1 G1 X[[#101/360]*#100*COS[#104+#100]] Y[[#101/360]*#100*SIN[#104+#100]] #100=#100+#102 END1 Elágazás: N1 G1 X[[#101/360]*#100*COS[#104+#100]] Y[[#101/360]*#100*SIN[#104+#100]] #100=#100+#102 IF [#100 LE [#103*360]] GOTO1 60
A fenti leírással egy olyan spirált hoztunk létre, ami 4 teljes fordulatból áll, a fordulatok közötti távolság 5 mm, a pólus körüli elforgatás nincs, a szög léptetése egy fokonként történik a körüljárás irány az óramutatóval ellentétes. A spirál végpontjának a pólusponttól való távolsága 4*5 vagyis 20 mm. Ez csak a végpontra vonatkozik, a többi pontra nem. Ezért egy 20 mm sugarú körzseb elkészítéséhez szükséges még egy teljes körülfordulás, de már állandó (a szögelfordulástól független) 20 mm-es sugárral. Ehhez szükség van még a következő ciklusra.
#100=0 (α) #101=20 (a kör R sugara, sokszög esetén a sokszögköré írható kör sugara) #102=1 (az α szög léptetésének mértéke, mivel α egyesével növekszik így egy 360 szöget kapunk, vagyis a kört 360 ponttal osztottuk fel ) WHILE [#100 LE 360] DO1 G1 X[#101*COS#100] Y[#101*SIN#100] #100=#100+#102 END1
(#101 a kör sugara)
A fent ismertetett leírások, az egyszerűség kedvéért nem foglalkoztak a
szerszámátmérővel és a kontúrkövetéssel. Mivel a szerszám minden geometriai adata a megfelelő változókból lehívható ezért nincs is szükség kontúrkövetésre. Zseb esetén a középről induló spirál miatt nem is lehetséges. Csupán a sokszög megfelelő geometriai adatát kell változtatni a szerszámsugárral. O9601 sokszögzseb makró ismertetése A következőkben a többször tesztelt általunk fejlesztett O9601 sokszögzseb felhasználó makrót mutatjuk be a 2. ábrán látható sokszög zseb marási programján keresztül. A főprogram (melyet a CNC forgácsoló szakember ír) csak a következő mondatot tartalmazza: G65 P9601 X0 Y0 Z10 U50 I0.2 S5 R45 K2 D6 Q5 A fenti utasítás a 2. ábra szerinti utasítással sokszögzseb maró ciklust indít. A 2. ábra segít a kért értékek értelmezésében. A ciklus végrehajtásához be kell tölteni az O9601 programszámú makrót a programtárba. A makró a G17-es síkban használható, futtatása előtt a zseb X, Y koordinátájú középpontjára kell pozícionálni K biztonsági távolságnyira. Abban az esetben, ha a nullpontot azzal a szerszámmal mérjük be, amelyikkel a zsebet akarjuk készíteni akkor hibaüzenettel leáll, mert ellenőrzi a szerszám hosszát. Ugyanígy, ha nagyobb a szerszám átmérője, mint a beírható kör sugara hibaüzenettel leáll. Ha nem adunk meg simítási ráhagyást a névleges mértre készíti a zsebet. A makró által kért paraméterek jelentése:
61
X: A zseb középpontja X irányban, abszolút értékként kell megadni; Y: A zseb középpontja Y irányban; abszolút értékként kell megadni; Z: A zseb mélysége, pozitív számértékként kell megadni; W: A zseb felső síkja és a munkadarab nullpont távolsága Z irányban, növekményes értékként lehet megadni; U: Fogásvétel X-Y irányban vett értéke, a szerszám átmérőjének adott százalékával, értéke 0100 közötti számértékként kell megadni. Ha pozitív értékként adjuk meg az óramutató járásával ellentétes irányban végez megmunkálást, ha negatív értékként adjuk meg az óramutató járásával megegyező irányban végez megmunkálást; I: Simítási ráhagyás X-Y irányban. Megadása nem kötelező; J: Simítási ráhagyás Z irányban. Megadása nem kötelező; S: Szögek száma, értéke 3 vagy annál nagyobb egész számértéket vagy 0-t kell megadni. 0 megadása esetén körzsebet készít el. Egész számtól eltérő megadás esetén hibajelzést küld; R: A sokszög köré írható kör sugara, értéke pozitív nullától eltérő értékként kell megadni, más esetben hibajelzést küld; K: biztonsági távolság Z irányban; D: Megmunkálást végző szerszám tárhelye, értéke pozitív egész szám lehet; Q: Fogásvétel Z irányban, értéke pozitív számként kell megadni, ha nagyobb, mint a megmunkálást végző szerszám átmérője akkor hibajelzést küld; C: Az elforgatás szöge X tengelytől mérve, pozitív számérték esetén óramutató járásával ellentétes irányban, negatív számérték esetén óramutató járásával megegyező irányban forgatja el a koordináta rendszert. A makró által használt regisztereket a 1. táblázat mutatja.
Változó típusa
Argumentum átadással
Globális
Változó címe X Y Z W U I J S R K D Q C
Regiszter
Leírás
#24 #25 #26 #23 #21 #4 #5 #19 #18 #6 #7 #17 #3 #100 #101 #102 #103 #104
Zseb középpontja X-irányban Zseb középpontja Y-irányban Zseb mélysége Eltolás Z-irányban Fogásvétel X-,Y- irányban Simítási ráhagyás X-,Y-irányban Simítási ráhagyás Z-irányban Szögek száma Köré írható kör sugara Biztonsági távolság Szerszám tárhely száma Fogásvétel Z-irányban Elforgatás szöge Szerszám sugár Szerszám átmérő Fogásvétel X-,Y-irányban Beírható kör sugara Nagyolás X-,Y-irányban
#105
Szerszám középpont számításához 62
használt regiszter #106 #107 #108 #109 #110 #111 #112 #113 #115 #114 #116 #117 #150 #151 #160
Nagyolás Z-irányban Léptetés a sokszög készítésekor Elforgatás a sokszög készítésekor Sokszög készítésekor használt regiszterek Nagyoláshoz használt regiszterek Megmunkálás irányához használt regiszter A sokszögre álláskor használt regiszterek Teszteléskor használt regiszter Ezeket az értékeket veszi fel ha körzsebet készít Ciklusok léptetésekor használt regiszterek A mélység meghatározásához használt regiszter
1. Táblázat. Regiszterek O9601
A következőkben a O9601-es programot és annak működését mutatom be. %O9601(SOKSZGZSEB MAKRO)
O9601-es program Feltétel nélküli elágazás az N8-es sorra
GOTO8 N1 #3000=301(HIBAS ERTEK ADAS SRE) N2 #3000=302(TUL NAGY FOGAS) N3 #3000=303(TUL MELY FOGAS) N4 #3000=304(HIBAS ERTEK ADAS DRE) N5 #3000=305(HIBAS ERTEK ADAS Z,J,Q) N6 #3000=306(HIBAS ERTEK ADAS U,I,R) N7 #3000=307(KICSI SZERSZAM ATMERO) N8 IF[#6 LE0]#3006 =301(BIZONSAGI TAVOLSAG?) IF[#19 LT0]OR[#19 EQ1] OR[#19 EQ2]OR[#19EQ#0]GOTO1 #114 =#19 MOD1
63
Hibaüzenet küldése Hibaüzenet küldése Hibaüzenet küldése Hibaüzenet küldése Hibaüzenet küldése Hibaüzenet küldése Hibaüzenet küldése Hibaüzenet küldése Vizsgálatot végez S-re
IF[#114 NE0]GOTO1 IF[#7 LT1]OR[#7EQ#0]GOTO4 #114 =#7 MOD1 IF[#114 NE0]GOTO4 IF[#26 LE0]OR[#26EQ#0] OR[[#17+#5]GT#26] OR[#5 LT0] OR[#17 LE0]OR[#26EQ#0] OR[#17 EQ#0]GOTO5 IF[ABS#21 GT100 ]OR[#21 EQ#0 ] OR[#4 LT0 ] OR[#18 LE0]GOTO6 IF[ABS[#106 +#23]GT#[10000 +#7] +#[11000 +#7 ]]GOTO3 IF[#21 LT0 ]#112 =-1 IF[#21 GT0 ]#112 =1 IF[#19 EQ0 ]#116 =360 IF[#19 EQ0 ]#117 =1 #116 =#19 #117 =#19 #100 =[#[12000 +#7 ]+#[13000 +#7 ]] #101 =[#100 *2 ] #102 =[ABS[#101 *#21 /100 ]] #103 =[ABS[#18 *COS[180 /#117 ]]] #104 =[#103- #4- #100 ] #105 =[[#103- #4- #100 ]/#102 ] #106 =[#26- #5 ] #107 =[360 /#116 ] #108 =[#107 /2 ] #110 =[#105 *360 ] #111 =#110 #113 =[[#116-2 ]*90 /#116 ] #115 =#113 IF[#19 EQ3 ]#113 =30 IF[#19 EQ4 ]#113 =45 IF[#19 EQ5 ]#113 =54 #160 =#17 IF[2 *[#18- #103- [#100 /SIN#113 ] - #100 ]]GT#101 ]GOTO7 IF[#17 GT#101 ]GOTO3 IF[#100 ]GOTO2
GE#103
G52 X#24 Y#25 G68 X0 Y0 R#3
]OR[#105
Vizsgálatot végez D-re
Vizsgálatot végez Z-re, Q-ra, J-re Vizsgálatot végez I-re, U-ra, R-re Vizsgálatot végez a szerszám hosszára Értéket ad változóknak a nagyolás irányának meghatározására Értéket ad változóknak
Értéket ad változóknak
Vizsgálatot végez
Vizsgálatot végez a fogás mélységre LT1 Vizsgálatot végez a fogás szélességre Nullpont áthelyezése a zseb középpontjára Koordinátarendszer elforgatása 64
G1 ZI#23 GOTO10 N30 G1 X0 Y0 Z[- #106 +#6 +#17- #23 ] N10 #150 =0 WHILE[#150 LE360 ]DO1 G1 X[#150 *#102 /720 *COS#150 ] Y[#112 *#150 *#102 /720 *SIN#150] ZI- [[#6 +#17 ]/361 ] #150 =#150 +1 END1 #151 =#150 WHILE[#151 LE720 ]DO1 G1 X[#151 *#102 /720 *COS#151 ] Y[#112 *#151 *#102 /720 *SIN#151 ] #151 =#151 +1 END1 WHILE[#150 LE#110 ]DO1 X[#150 *#102 /360 *COS#150 ] Y[#112 *#150 *#102 /360 *SIN#150 ] #150 =#150 +1 END1 WHILE[#150 LE[#110 +360 ]]DO1 X[#104 *COS#150 ] Y[#112 *#104 *SIN#150 ] #150 =#150 +1 END1 #160 =#160 +#17 G1 ZI#6 G0 X0 Y0 IF[#160 LE#106 ]GOTO10
Ha a zseb felső szintje eltér a nullpont síkjától és lett megadva W-re érték, akkor oda pozícionál Feltétel nélküli elágazás Az utolsó nagyoló fogáskor innen kezdi a megmunkálást Érték adás változónak Ciklus kezdete, egy spirál vonal mentén lesüllyed egy fogásvételnyivel Z irányban, egy teljes kört tesz meg Érték adás változónak
Ebben a két ciklusban egy spirál vonal mentén kinagyolja a zsebet a beírható kör sugaráig
Következő ciklus kezdete, egy kört tesz meg a beírható kör sugara mentén Érték adás változónak Pozícionál Pozícionál Vizsgálatot végez, hogy elérte-e az adott mélységet, ha nem visszaküldi az N10-es sorra Ha elérte a kívánt Z mélységet, akkor N20-as sorra megy
IF[#160 EQ#106 +#17 ]GOTO20 IF[#160 GT#106 ]THEN #160 =#106 GOTO30 N20 G1 Z- [#26 +#23 ] IF[#5 EQ0 ]#150 =720 IF[#5 EQ#0 ]#150 =720
Utolsó fogás Z irányban Lesüllyed adott Z mélységig Vizsgálatot végez, hogy vane megadva Z irányban 65
#151 =0 WHILE[#151 LE[#150-180 ]]DO1 X[#151 *#102 /360 *COS#151 Y[#112 *#151 *#102 /360 *SIN#151 ] #151 =#151 +1 END1
simítási ráhagyás Érték adás változónak ]
A következő ciklus kezdete, megtesz a zseb alján egy kört Ha van megadva Z irányú simítási ráhagyás akkor a következő ciklusra lép és besimítja a zseb alját
IF[#5 EQ0 ]GOTO50 IF[#5 EQ#0 ]GOTO50 WHILE[#151 LE#150-360 ]DO1 X[#104 *COS#151 ] Y[#112 *#104 *SIN#151 ] #151 =#151 +1 END1 N50 G1 ZI#6 G0 X0 Y0 G1 Z- #23 #160 =#17 G16 N70 WHILE[#160 LE#26 ]DO1 #109 =1 G1 X#104 Y#113 Z- [#160 +#23 ] X[#18- [#100 /[SIN#115 ]]]YI[90- #113 ] WHILE[#109 LE#116 ]DO2 YI[360 /#116 ] #109 =#109 +1 END2 #160 =#160 +#17 END1 IF[#160 EQ[#17 +#26 ]]GOTO6 IF[#160 GT#26 ]THEN#160 =#26 GOTO70 N60 G15 G52 X0 Y0 G0 X#24 Y#25 Z#6 G69 M99%
A következő ciklus kezdete, Z irányú simítás
Pozícionál a elkészítése előtt
sokszög
Érték adás változónak Polárkoordináta bekapcsolása
Ebben a ciklusban készíti el a sokszöget a kívánt mélységben
Vizsgálatot végez, hogy elérte-e az adott Z mélységet Polárkoordináta kikapcsolása Nullpont eltolás visszaállítása Pozícionálás Elforgatás kikapcsolása Makró vége
A makró futtatásakor előforduló hibaüzeneteket a 2. táblázat mutatja Üzenet Üzenet szövege kódja
Leírása
66
Törlés és hibaelhárítás módja
4301 4302
4303
4304
4305
4306
4307
5301
ERTEK Ha a szögek számának negatívvagy törtszámot, vagy 1-et, vagy 2-t adott meg, vagy nem adott értéket S-nek. TUL NAGY Ha a szerszám átmérője nagyobb, mint a sokszögbe FOGAS írható kör sugara. Ha a szerszám hossza kisebb, TUL MELY mint a zseb alsó síkja és a nullpont közötti távolság. Ha a FOGAS megmunkáló szerszámmal mérte be a nullpontot. Ha a szerszám tárhelynek 0 HIBAS ERTEK vagy kisebb számot, vagy 100nál nagyobbat vagy törtszámot ADAS adott meg. Ha nem adott D-RE értéket D-nek. Ha zseb mélysége, vagy a Zirányú simítási ráhagyás 0-nál kisebb szám. Ha fogásvétel és a HIBAS ERTEK z-irányú simítási ráhagyás összege nagyobb mint a zseb ADAS mélysége. Ha a fogásvétel 0 Z,J,Q vagy nincs kitöltve. Ha nem adott értéket Z-nek vagy Qnak. Ha a fogásvétel X-,Y- irányba abszolút értékének 100-nál nagyobb számot, vagy 0-át adott meg, vagy nem adott HIBAS ERTEK értéket. Ha X-,Y-irányú simítási ráhagyásnak 0 vagy ADAS annál kisebb számot adott meg. U,I,R Ha a köré írható kör sugarának 0 vagy kisebb számot adott meg. Ha nem adott érétket Rnek. KICSI Ha a szerszám átmérője kicsi, mert ekkor anyagot hagy a SZERSZAM sarkokban. ATMERO HIBAS ADAS S-RE
BIZONSAGI TAVOLSAG?
Az üzenetet a RESET gomb törli, ha ezután START-ot adunk,és nem javítjuk ki a hibát, az üzenet újra kiíródik
Az üzenet hatására az NC STOP állapotot vesz START Ha biztonsági távolságnak 0 fel. hatására vagy kisebb számot adott meg. következő a mondatra lép. Az üzenetet a RESET gomb törli. 2. Táblázat. Hibaüzenetek O9601
67
6. számú mintafeladat:
MARÓ FELADATOK (NCT-104M) Lyukháló/makróhívással-fúrásválasztással
CNC mondat Főprogram: %O0003 G54 G21 G17 G40 G94 S1600 F100 T1 M3 G0 G43 H1 Z10 G500 R5 P102 X12 Y12 Z5 A6 B6 I12 J12 F60 R2 Q5 G0 Z50 X-100 M30 % Makró: %O0104(LYUKHALO-MACROFURAS-VALASZTASSAL) G0 X#24 Y#25 Z10 #550 =83 IF [#17 EQ#0 ] THEN #550 =81 #101 =1 WHILE [#101 LE#2 ] DO1 #100 =1 WHILE [#100 LE#1 ] DO2 G99 G#550 Z- #26 F#9 R#18 Q#17 #100 =#100 +1 G0 YI#5
Magyarázat A program a G54-es munkadarab nullpont koordinátarendszerét használja, a méretmegadás metrikus rendszerben történik, a megmunkálás síkja a XY sík. A főorsó fordulatszáma 1600 ford./perc, az előtolás értéke 100 mm/perc. A szerszámot az első helyről veszi ki, a hosszkorrekció értékét a hozzá tartozó egyes korrekciós tárból adja hozzá. A felhasználói makró hívás G500-as kóddal történik. A benne található címekhez tartozó értékeket az O0104-es makró program paraméterei veszik fel. A program a szerszám munkadarabtól való eltávolodással ér véget. A lyukháló makrója gyorsjárati elmozdulással kezdődik, mellyel az első furat elvégzéséhez pozícionál. A #500-as regisztert egyenlővé teszi 83-mal melyet az azt követő feltétel akkor változtat meg 81-re, ha a főprogramban a Q értéke nincs kitöltve, azaz nincs fogásmélység megadva. Ez a feltétel dönti el, hogy a makróban mély lyukfúrás (G83) vagy egyszerű fúrás, gyorskiemeléssel (G81) legyen végrehajtva. Amennyiben a fogásmélységet nem adjuk meg, a furat egy fogásból készül el. A továbbiakban a furatháló elkészítésének stratégiáját két függvény segítségével határozzuk
68
END2 #101 =#101 +1 G0 Y#25 XI#4 END1 M99
meg. A WHILE-DO2 függvény tartalmazza az egyes furatok paramétereit, amelyeket a főprogramban adtunk meg. A WHILE-DO1 függvény magába foglalja a WHILE-DO2 függvényt. Ennek megfelelően 6x6-os furatháló készül el, ú yg h gy o az első fu atr az X1 2 Y12 koordinátákon található. az összes többi hozzá képest Y és X irányban is 12 mm-rel van eltolva.
69
7. számú mintafeladat:
MARÓ FELADATOK (NCT-104M) Sokszögmarás makróval
CNC mondat Főprogram: %O0006(SOKSZOGMARASMACROVAL) G54 G17 G21 G40 G94 F100 S1600 T1 M3 G0 G43 H1 Z10 G65 P106 X50 Y75 R20 S7 A0 Z16 Q4 D2 K3 G0 Z50 X-100 M30 % Makró: %O0106(MAKROSOKSZOG:MAKROPARAMETEREZVE) #510 =0 #511 =0 #100 =1 #130 =1 #150 =0 (#24POLAR X IRANYU KOZEPE #25 POLAR Y IRANYU KOZEPE #26 Z MÁLYSÉG #18 R ÉRTÉK
Magyarázat A program a G54-es munkadarab nullpont koordinátarendszerét használja, a méretmegadás metrikus rendszerben történik, a megmunkálás síkja a XY sík. A főorsó fordulatszáma 1600 ford./perc, az előtolás értéke 100 mm/perc. A szerszámot az első helyről veszi ki, a hosszkorrekció értékét a hozzá tartozó egyes korrekciós tárból adja hozzá. A G65 kód egyszerű makró hívás, mellyel bármely alprogramot meg tudjuk hívni. A maróban található paraméterek értékét a főprogramban tudjuk megadni. A program a szerszám munkadarabtól való eltávolodással ér véget. (#24POLAR X IRANYU KOZEPE #25 POLAR Y IRANYU KOZEPE #26 Z MÉLYSÉG #18 R ÉRTÉK #1 KEZDOSZOG #19 SZOGEK SZAMA #17 Q FOGASVETEL #7 D SZERSZM TAR HELYE #6 K BIZTONSAGI TAVOLSAG) A makró lényege, hogy az elmozdulások G52
70
#1 KEZDOSZOG #19 SZOGEK SZAMA #17 Q FOGASVETEL #7 D SZERSZM TAR HELYE #6 K BIZTONSAGI TAVOLSAG) #510 =[#[12000 +#7 ]+#[13000 +#7 ]]+#18 (TÉNYLEGES SUGAR) #511 =360 /#19 M3 G52 X#24 Y#25 G16 G0 X#510 Y#1 Z10 G1 Z#6 F200 GOTO 5 N6 G1 ZI- #110 F60 WHILE[#100 LE#19 ] DO1 YI#511 #100 =#100 +1 END1 #150 =#150 +#110 #130 =#130 +1 #100 =1 IF [#130 LE#121 ] GOTO 6 #110 =#122 IF [#150 GE#151 ] GOTO 100 #150 =#150 +#110 GOTO 6 N5 #120 =[#26 +#6 ]/#17 #121 =FIX#120 (FOGASOK SZAMA KEREKITVE EGESZRE) #122 =[#26 +#6 ]MOD#17 (MARADEK RESZ UTOLSO FOGAS) IF [#121 GT0 ] THEN #110 =#17 #151 =[#6 +#26 ] GOTO 6 N100 G15 G0 Z5 M99 %
kóddal megadott nullpont középpontú polárkoordinátarendszerben történik. Ennek megfelelően a makró hívásnál X, Y címeken programozzuk a sokszög középpontját. GOTO5 –tel az N5-ös mondatra ugrik, ahol kiszámolja a fogások mélységét a főprogramban megadott Q fogásvétel értékéből és a Z mélység értékéből. Ezek az értékek a megfelelő regiszterekben lesznek eltárolva, melyet a WHILE-DO1 függvény használ, miután a program az N6-os mondatra ugrott. Az N6-os mondat tartalmazza sokszög kontúrjának programját. Az N6 után leírt programrész annyiszor lesz végrehajtva, amíg a megmunkálás mélysége el nem éri a főprogramban található Z mélységet. Ha az IF [#150 GE #151 ] feltétel teljesül, akkor a program az N100-as mondatra ugrik, kikapcsolja a polárkoordinátát, gyorsjárattal kiemel, majd visszatér a főprogramhoz.
71
8. számú mintafeladat:
MARÓ FELADATOK (NCT-104M) Makró ellipszis
CNC mondat Főprogram: %O0008(FŐPROGRAM:MACROELIPSZIS) G54 G21 G17 G40 G94 S1600 F100 T1 M3 G0 G43 H1 Z50 G65 P108 X75 Y50 Z7 I25 J25 A0 B1 D1 G0 Z50 M30% Makró: %O0108(MACROELIPSZIS:PARAMETEREZVE) #500 =0 #501 =0 #510 =0 #511 =0 #100 =0 (#24 (X TENGYELY) #25 (Y TENGELY) #26 (Z MELYSEG) #1 (A KEZDOSZOG) #2 (B SZOG NOVEKMENY) #7 (D SZERSZAM KORREKCIOS TAR)) #100 =#1
Magyarázat A program a G54-es munkadarab nullpont koordinátarendszerét használja, a méretmegadás metrikus rendszerben történik, a megmunkálás síkja a XY sík. A főorsó fordulatszáma 1600 ford./perc, az előtolás értéke 100 mm/perc. A szerszámot az első helyről veszi ki, a hosszkorrekció értékét a hozzá tartozó egyes korrekciós tárból adja hozzá. Egyszeri makró hívással meghívjuk az O0108-as alprogramot melynek értékeit X, Y, Z, I, J, A, B és D címen programozzuk. Majd a szerszámmal eltávolodva az anyagtól a program véget ér. (#24 (X TENGYELY) #25 (Y TENGELY) #26 (Z MELYSEG) #1 (A KEZDOSZOG) #2 (B SZOG NOVEKMENY) #4 (I ELLIPSZIS X IRANYU KOZEPE) #5 (J ELLIPSZIS Y IRANYU KOZEPE) #7 (D SZERSZAM KORREKCIOS TAR)) G52 kód munkadarab eltolás, melynek értékeit a főprogramban I és J címen adunk meg. Ez a koordináta az ellipszis középpontját határozza meg. A megmunkálás mélységének nem a Z koordinátáját, hanem annak abszolút értékét
72
(#4 (I ELIPSZIS X IRANYU KOZEPE) #5 (J ELIPSZIS Y IRANYU KOZEPE)) G52 X#4 Y#5 WHILE [#100 LE360 ] DO1 #510 =[#[12000 +#7 ]+#[13000 +#7 ]]+#24 (TÉNYLEGES MARO X SUGAR) #511 =[#[12000 +#7 ]+#[13000 +#7 ]]+#25 (TENYLEGES MARO Y SUGAR) #500 =[COS#100 ]*#510 #501 =[SIN#100 ]*#511 G1 Z- #26 F80 G1 X#500 Y#501 #100 =#100 +#2 END1 G0 Z5 M99 %
adjuk meg. Az ellipszis kontúrját függvénnyel adjuk meg. A függvény az egyes pontokhoz tartozó középponti szögek segítségével számolja ki az ellipszis kontúrjának egyes pontjait. Az hogy a körvonal mennyire pontos a #2 regiszter, a főprogramban B érték határozza meg. Ezzel adjuk meg, hogy a pontok hány fokonként legyenek kiszámolva. Az egyes pontok között az elmozdulás lineáris, így a B értékének csökkentésével pontosabbá, folyamatosabbá tehetjük az ellipszis kontúrját. Az alprogram addig tart, amíg a #100 regiszter értéke el nem éri a 360°-ot Amint a feltétel teljesül, az alprogramból M99 kóddal visszatérünk a főprogramba.
73
9. számú mintafeladat:
MARÓ FELADATOK (NCT-104M) Makró ellipszis fúrás
CNC mondat
Magyarázat
Főprogram: %O0010(FŐPROGRAM:MACROA program a G54-es munkadarab nullpont ELIPSZIS FURAS) koordinátarendszerét használja, a méretmegadás G54 metrikus rendszerben történik, a megmunkálás G21 G17 G40 G94 S1600 F100 síkja a XY sík. A főorsó fordulatszáma 1600 T1 ford./perc, az előtolás értéke 100 mm/perc. A M3 szerszámot az első helyről veszi ki, a G0 G43 H1 Z50 hosszkorrekció értékét a hozzá tartozó egyes G65 P110 R2 X125 Y125 Z7 I50 J50 korrekciós tárból adja hozzá. A G65 kóddal az A0 B180 S6 F100 O0110-es alprogramot hívjuk meg. Benne G0 Z50 megadjuk a makróban szereplő paraméterek M30 értékét. % Makró: %O0110(MACRO-PARAMETEREZVEELIPSZIS FURAS) #500 =0 #501 =0 #510 =0 #511 =0 #100 =0 (#24 X TENGYELY #25 Y TENGELY #26 Z MELYSEG #1 A KEZDOSZOG #2 B VEG SZOG
(#24 X TENGYELY #25 Y TENGELY #26 Z MELYSEG #1 A KEZDOSZOG #2 B VEG SZOG #19 S FURATOK SZAMA #18 R BIZTONSAGI TAVOLSAG #9 F ELOTOLAS #4 I X CENTER #5 J Y CENTER)
74
#19 S FURATOK SZAMA #18 R BIZTONSAGI TAVOLSAG #9 F ELOTOLAS #4 I X CENTER #5 J Y CENTER) #110 =[#2- #1 ]/[#19-1 ] G52 X#4 Y#5 #100 =#1 WHILE [#100 LE#2 ] DO1 #500 =[COS#100 ]*#24 #501 =[SIN#100 ]*#25 G99 G81 X#500 Y#501 R#18 Z- #26 F#9 #100 =#100 +#110 END1 G80 M99
Az ellipszis makrója kiegészül gyorskiemeléses egyszerű fúrással (G81). A programban úgy készíthetünk furatokat, hogy paraméterekkel megadott ellipszis ívére helyezzük a furatokat. Továbbá megadjuk a kezdő és záró furat X tengelyhez képesti szögét, és az így meghatározott szögtartományon belül adott számú és mélységű furat készíthető. A fúróciklus kikapcsolása után az alprogramból M99 kóddal visszatérünk a főprogramba.
75
10. számú mintafeladat:
MARÓ FELADATOK (NCT-104M) FÉLGÖMBMARÁS MAKRÓVAL
CNC mondat
Magyarázat
Főprogram: %O0009(FŐPROGRAM:MACROA program a G54-es munkadarab nullpont koordinátarendszerét használja, a méretmegadás GOMB) metrikus rendszerben történik, a megmunkálás G54 G21 G17 síkja a XY sík. A főorsó fordulatszáma 1600 G40 G94 S1600 F100 ford./perc, az előtolás értéke 100 mm/perc. A T1 szerszámot az első helyről veszi ki, a hosszkorrekció értékét a hozzá tartozó egyes M3 korrekciós tárból adja hozzá. A G65 kóddal az G0 G43 H1 Z50 G65 P109 R20 X25 Y50 Z7 I0 J1 A0 O0109-es alprogramot hívjuk meg. Benne B1 D1 megadjuk a makróban szereplő paraméterek G0 Z50 értékét. Majd gyorsjárattal eltávolodva a M30 munkadarabtól a program véget ér. %
76
Makró: %O0109(MACROGOMB:PARAMETEREZVE) #500 =0 #501 =0 #510 =0 #511 =0 #100 =0 (#24 X TENGYELY #25 Y TENGELY #26 Z MÉLYSÉG #1 A KEZDOSZOG #2 B SZOG NOVEKMENY #7 D SZERSZAM KORREKCIOS TAR) #100 =#1 (#4 I TERBELI KEZDOSZOG #5 J TERBELI SZOG NOVEKMENY) G52 X#24 Y#25 #510 =[#[12000 +#7 ]+#[13000 +#7 ]]+#18 (T‚NYLEGES GOMB SUGAR) #150 =ASIN[[#[12000 +#7 ]+#[13000 +#7 ]]/#510 ] G0 X#510 Y0 Z[[#510- #18 ]+2 ] G1 Z[#510- #18 ] #500 =#510 WHILE [#150 LE90 ] DO1 G3 I- #500 G19 #150 =#150 +#5 #500 =[COS#150 ]*#510 #501 =[SIN#150 ]*#510 G1 Z#501 X#500 G17 END1 G0 Z5 M99
#24 X TENGYELY #25 Y TENGELY #26 Z MÉLYSÉG #1 A KEZDŐSZÖG #2 B SZÖG NÖVEKMÉNY #4 I TÉRBELI KEZDŐSZÖG #5 J TÉRBELI SZÖG NÖVEKMÉNY #7 D SZERSZÁM KORREKCIOS TÁR Az alprogram alapvetően egymás fölé elhelyezett, folyamatosan csökkenő átmérőkkel megadott teljes köröket ír le. Az egyes körök átmérője a B címen programozott szögnövekménytől függ. A körök közötti pozícionálás egyenes vonalú, és szintén a szögnövekményből számolt érték. A ciklus akkor ér véget, amikor a #150 regiszter értéke el nem éri a 90-et. Ha a feltétel teljesül, az alprogramból visszatérünk a főprogramba.
77
Feladatok:
1. Készítse el az alábbi felhasználói makró alapján, a következő tesztelési feladatokat! o Ellenőrizze a gépkezelőt, hogy jelölte-e a HSS szerszám alkalmazását, ha nem tiltsa le a program futását! o Tesztelje (HSS) maró esetén az L/D viszonyt és alkalmazzon megfelelő fúró ciklust! o Tesztelje (HSS) maró esetén az Q/D viszonyt és figyelmeztesse helytelen „Q” esetén a gép kezelőjét! …….. G65 P1000 X50 Y50 Z18 A0 B270 S7 D1 H1 Q5 C24 I70 J50 ………. Kód P1000 X50 Y50 Z18 A0 B270 S7 D1 Q5 C24 I70 J50 H1
Tulajdonság Macro száma Ellipszis x közepe Ellipszis z közepe Furat mélysége Kezdőszög Végszög Furatok száma Szerszám tárhely Fogásvétel Koordináta rendszer elforgatása Nagy sugár (X irányú) Kis sugár HSS maró
2. Makro programozás félgömb programszüléssel: Az ábrán, egy 100x100-as síkon egy R40-es félgömb látható. A feladatban készítsen el makro segítségével egy gyors futásra alkalmas, makró változók nélküli technológiai programot. Az ilyen technológiával megírt program előnye az előzőhöz képest, hogy a rendkívül sok számítás a futásidő alatt elmarad, és a tényleges előtolás érvényesül, nem a processzoridő dönt.
78
3. Makró tesztelés: Tesztelje a felhasználói makrót, egy ellipszis pályán lerakott az alap koordináta rendszerrel szöget bezáró tengely mentén elkészített furatok adatai alapján, felhasználva a következő karaktereket. o Tesztelje, hogy a gépkezelő adott-e fogásvételi értéket, ha nem állítsa be a „Q” értékét a maró átmérőjének megfelelő értékre! o Tesztelje a Q/D viszonyt és figyelmeztesse helytelen „Q” esetén (Q<szerszám átmérő!) a gép kezelőjét! o Ellenőrizze a gépkezelőt, hogy jelölte-e a szerszámtár helyét, ha nem tiltsa le a program futását! o készítsen programrészletet melyben megállapítja, hogy hány fogásból tudja a fúrást elvégezni, valamint az utolsó fogás mérete mekkora! …….. G65 P1000 X50 Y50 Z18 A0 B270 S7 D1 H1 Q5 C24 I70 J50 (.. további karaktereket bevezethet ..)
………. Kód P1000 X50 Y50 Z18 A0 B270 S7 D1 Q5 C24 I70 J50
#
Érték
Tulajdonság Macro száma Ellipszis x közepe Ellipszis z közepe Furat mélysége Kezdőszög Végszög Furatok száma Szerszám tárhely Fogásvétel Koordináta rendszer elforgatása Nagy sugár (X irányú) Kis sugár
79
megjegyzés
IV. Mérés, digitalizálás
80
Mi a mérés, milyen hibák lehetségesek? Mit jelentenek a mérő tapintó eszközök? Melyek a 3D-s tapintó rendszerek szerszámgépen jellemző
☻
alkalmazási eseteit? Melyek az érintéssel és az érintésmentesen működő rendszerek közötti választás kritériumait? Milyen mérőciklusok léteznek a vezérlésen? Hogyan kell mérő makrót készíteni?
4.1. Mérés fogalma, feladata A mérés a természet jelenségeiről való ismeretek megszerzésének egyik alapvető módszere. A mérés tervszerűen végrehajtott gyakorlati tevékenységek összessége, amelyekkel valamely fizikai, kémiai, csillagászati, statisztikai, stb. mennyiség nagyságának, arányának, stb. jellemzésére alkalmas. A mérés eredményéül a választott mértékegységben kifejezett értéket kapjuk. Ebben az esetben bukkan elő közvetlen mérési tevékenységként a számolás, (darabok, vagy események számolása, vagyis a természetes számsor tagjainak nullától kezdődő felsorolása). A mérőszám csak egy nála nagyobb, és egy nála kisebb korlátérték közé határolható be. A mérésre vonatkozó ismeretek összességét metrológiának nevezzük. A méréstechnika a metrológiának a mérés gyakorlati megvalósításával foglalkozó része. A mérés a kutatás, a termelés, az üzemeltetés, az elosztás nélkülözhetetlen eleme. 1
4.1.1. Mérőeszköz megválasztása A mérésnél a mérés számszerűsítéséhez mérőeszközt használunk. A mérőeszköz kiválasztása már elvileg helyes kell, hogy legyen! A helyes mérés előfeltétele a mérés (és a mértékegység) reprodukálhatósága! A mérési eredmények azonban a használt mérőeszközöktől, illetve a mértékegységtől függően különbözőek lesznek. 2 4.1.2. Mérés bizonytalansága A mérésnél a mérőeszköznek van egy adott hibája, (az eszköz mindig pontosabb legyen, mint amit a méréstől elvárunk!) a leolvasásnak is egy hibája, valamint a számolás során is követhetünk el hibát.
4.1.3. Mérés CNC szerszámgépeken Az NC technológia szerves részét képezi a mérési folyamat. Ahhoz, hogy a mérés a gyártási folyamatba be tudjon ágyazódni, új, fejlett digitális REAL TIME rendszerben működő érintős és érintés nélküli mérőrendszerek kialakítására volt szükség. Vezető gyártó cégek a HEIDENHAIH, a RENISHAW. Követelmény a mérőrendszerekkel szemben, hogy adatfeldolgozásuk online rendszerben történjen. 1 2
2011 Vikipédia 2011 Vikipédia
81
Korszerű CNC 2-5D gép szerszámgépeket akár mérőgépként is üzemeltethetjük, mely a gyártmány megmunkálási felfogásban történő ellenőrzését biztosítja. CNC folyamat közben lehetőség van szerszámmérésre, diagnosztikára (törésvizsgálatra), folyamat felügyeletre.
4.1.4. A munkadarab gyártási pontosságát befolyásoló hibaforrások
a munkadarab felfogási pontatlansága; a palettaváltás (tokmánycsere) hibája; szerszámkopás, deformáció; a munkadarab deformációja, a bázishossz megváltozása; a szerszámbeállítás pontatlansága; a szerszámgép pozicionálási és geometriai hibája; szerszámok alak és méreteltérései
4.1.4.1. CNC szerszámgép mint 2-5 tengelyes koordináta-mérőgép A mérés pontosságát nagymértékben befolyásolja: a szerszámgép geometriai hibája; a szerszámgép mérőrendszerének hibája; a mérőtapintó hibái; a munkadarab állapota, a mérés körülményei; a mérési folyamattól függő dinamikus hibák. A hibák két csoportba oszthatók: rendszeres (mérést pontatlanná teszi, jelfeldolgozó algoritmussal, és megfelelő mérési stratégiával legalább is részlegesen kompenzálhatok) véletlen hibákra (megbízhatatlanná teszi, leggyakoribb véletlen hibák az útmérő rendszer digitalizálási hibájából, esetleges holtjátékokból vagy súrlódásból erednek)
4.2. Mérés területei Munkadarabok mérése, mely történhet a szerszámgép főorsójába befogott 3D-s tapintó rendszerekkel, vagy mérőtapintókkal, amiket a szerszámgépeken kívül, általában mérőberendezésekben alkalmaznak. Célja a munkadarab gyártásközi ellenőrzése és ez alapján a hibás munkadarab javítása szerszámkorrekción keresztül, vagy a további gyártási folyamat megszüntetése.
10. ábra: Szerszámok mérése Különösen a sorozatgyártásban fontos a selejtes darabok és az utólagos megmunkálás elkerülése, és a végig magas minőségű gyártás biztosítása. A szerszámnak döntő szerepe van ebben. A kopás és a vágóél törése hibás alkatrészeket eredményez, ami
82
elsősorban emberi beavatkozás nélküli működés esetén sokáig felfedezetlen maradhat, és így komoly költségtöbbletet okozhat.
4.2.1. 3D-s tapintó rendszerek 3 A tapintó rendszert - mint egy szerszámot - a marógép vagy a megmunkálóközpont szerszámbefogójában rögzítjük általában rögzített szerszám tárhelyen (pld.: NCT 104M a „CONST40=99” rendszerregiszterben adja meg a tárhely számát). Robusztus ház védi az érzékelőt a környezet káros hatásaitól a gép munkaterében. Mérés közben a tapintó rendszer megközelíti a munkadarabot. Amint a tapintó rendszer tapintócsapja hozzáér a munkadarabhoz, akkor a tapintócsap vízszintes vagy függőleges irányban kismértékben kitér. Ez a kitérés aktivál egy optikai kapcsolót. A tapintó rendszerrel oldalról vagy felülről lehet megérinteni a munkadarabot.. Az NC vezérlés ebben a pillanatban érzékeli a pontos pozíciót, és visszahúzza a tapintót. A tapintócsap mereven össze van kötve egy kapcsolótányérral, ami egy hárompontos csapággyal kapcsolódik a tapintó rendszer házához. A hárompontos csapágy biztosítja a fizikailag ideális nyugalmi állapotot.
11. ábra: A 3D-s tapintó rendszer érzékelője egy optikai kapcsoló. A LED-ről kiinduló fénysugarakat egy lencserendszer gyűjti össze, amelyek fénypontként esnek egy differenciál foto elemre.
12. ábra:
4.2.2. Mérőtapintó részei 4
3 4
www.heidenhain.hu www.heidenhain.hu
83
13. ábra:
14. ábra:
4.2.3. A jelátvitel különböző módszerei 5 A kapcsolójelet : o infravörös átvitellel o rádión o vezetéken lehet az NC vezérlésnek továbbítani. Azoknál a rendszereknél, amelyeknél a kapcsolójel átvitele infravörös vagy rádiós elven történik, a tapintó rendszer a gép szerszámtárában tartható. Ebben az esetben a méréshez a mérő tapintó automatikusan behelyezhető a gép főorsójába.
5
www.heidenhain.hu
84
4.2.4. 3D-s tapintók pontossága 6 A gép típusától függően egy 3D-s tapintó rendszerrel pozíciók ≤ ± 5 µm pontossággal határozhatók meg. A tapintó rendszerek fő jellemzői: A tapintási pontosság az az eltérés, amelyet egy mintadarab különböző irányokból történő megérintése után 20°C környezeti hőmérséklet mellett meghatároznak. A tapintási pontosságot a tapintó gömb hasznos sugarának figyelembe vételével határozzák meg. A hasznos gömbsugár a tényleges gömbsugár és a tapintó csapnak a kapcsolójel létrejöttéhez szükséges kitérése ismeretében határozható meg. Ezzel a tapintó csap görbeségét is figyelembe veszik. A tapintás ismételhetősége az-az érték, amit egy mintadarab egy irányból történő többszöri tapintása után lehet meghatározni. A tapintó csap hossza és anyaga is befolyásolja a 3Ds tapintó rendszer kapcsolási karakterisztikáját. 15. ábra:
4.2.5. Alkalmazás bonyolult munkadarabok esetén Egy 3D-s tapintó rendszerrel a munkadarab minden tengely irányában letapogatható. Ez azt jelenti, hogy ferde vagy ívelt felületek pozíciói is meghatározhatók. Ha szükséges, például kis belső sugarak vagy belső élek mérésekor másik sugarú gömbbel rendelkező tapintó csapot lehet használni. Ebben az esetben a tapintó rendszert újra kell kalibrálni.
4.2.6. A munkadarab mérések 3 csoportra oszthatók: A munkadarab ferdeségének meghatározása és kompenzálása: A felületek tapintásával, két furat vagy két csap középpontjainak megmérésével meghatározható és egy alapelforgatással automatikusan kompenzálható a munkadarab helyzete. Bázispontok automatikus meghatározása: Négyszögfelületek tapintásával, sarkok és körközéppontok, valamint osztókörök geometriájának meghatározásával a bázispontok meghatározhatók és automatikusan kijelölhetők. Munkadarabok automatikus megmérése: Ciklusok a munkadarabon lévő hosszak, sugarak és szögek meghatározására.
4.3. Munkadarab beállítása 7 Az asztalra rögzített munkadarab klasszikus beállítása időrabló és kevésbé pontos, mint az elektronikus beállítás egy 3D-s tapintó rendszerrel. A 3D-s tapintó rendszerrel ez egyszerűbb, mivel először rögzítjük a munkadarabot, meghatározzuk a munkadarab helyzetét egy 3D-s tapintó rendszerrel ezután a munkadarab ferde helyzetét rögzítem a munkadarabnullpont tárolt értékei között, a megfelelő rotációs értéknél.
6 7
www.heidenhain.hu www.heidenhain.hu
85
Ha a munkadarab felfogása és beállítása megtörtént, akkor ki kell jelölni a munkadarab bázispontját (pld.: G54), hogy legyen mihez viszonyítani a koordinátákat a megmunkáló programban. Ha 3D-s tapintó rendszer nélkül dolgozunk, a munkadarabot például egy szerszámmal kell óvatosan megközelíteni és megérinteni. Ez az eljárás megsértheti a munkadarab felületét – pl. karcokat hagyhat – és nem igazán pontos. 3D-s mérőórával már pontosabban és a munkadarab megsértése nélkül tudjuk a nullapontot (bázispontot) bemérni, de még mindig szükséges a bemérési protokoll végrehajtása. A 3D-s tapintó rendszerrel gyorsabban, egyszerűbben és pontosabban végezhető el ugyanez. Az NC vezérlésben rövid programok – tapintó ciklusok – és funkciók teszik lehetővé a bázispont automatikus kijelölését, úgy hogy a 3D-s tapintó egymás után egy vagy több pozíciót megérint a munkadarabon, a vezérlés minden megérintett pozícióhoz hozzárendel egy pozícióértéket. Pld.: Vezérlésnél, egy példa az egyszerűsített nullpont felvételre: Külső sarok Z méréssel G911 8 Ez a makró a kiválasztott külső sarok helyzetének meghatározására szolgál. A megadott koordinátarendszer megfelelő pontját a sarok helyzetéhez igazítja. Ha I vagy J vagy K ki van töltve, automatikusan az adott sarkot méri, egyébként csak a tengelyválasztó nyomógomb által választott sarkot tapintja . A tapintó axiális irányban megérinti a sarok felületét, majd 30-30mm-el eltávolodva X, Y-ban, lesüllyed 5mmel a felület alá és megtapintja a sarkot. Programozása: G911 X(x) Y(y) Z(z) I(i) J(j) K(k) S(s) H(h) R(r) Q(q) H - a tapintó hosszkorrekcióját tartalmazó rekesz címe. Alapértelmezett értéke H=99. 8
www.nct.hu
86
I - J - K - A tapintó jelenlegi X-Y-Z koordinátája (X, Y, Z-hez képest inkrementálisan). Ha valamelyik paraméter ki van töltve automatikusan a kívánt sarok irányába tapint, alapértelmezett értéke X, Y= -10mm Z=10mm. Q - az a maximális távolság, amellyel a tapintó a megadott névleges méreten maximálisan túlmegy. Ha nincs megadva, értéke 10 mm (vagy 0.4 inch ). Ha a megadott méretig nem tapintott hibát jelez. R - kiállásnál a programozott széltől R távolságú ráhagyással áll ki a tapintó. Ha nincs kitöltve értéke 5 mm-nek (vagy 0,2 inchnek) veszi a vezérlő. S - az S cím kitöltése jelzi, hogy a mérés után melyik munkadarab koordinátarendszer eltolást kell módosítani úgy, hogy az egybeessék a programozott mérettel, alapértelmezett a G54: - S=1 (vagy S=54) G54 - S=2 (vagy S=55) G55 ... -S=6 (vagy S=59) G59 X - A tapintani kívánt felület X koordinátája, alapértelmezett értéke X=0mm. Y - A tapintani kívánt felület Y koordinátája, alapértelmezett értéke Y=0mm. Z - A tapintani kívánt felület Z koordinátája, alapértelmezett érétke Z=0mm.
4.4 Szerszámok bemérése 9 Ez a fejezet a 3D-s szerszámbemérő tapintó rendszerek szerszámgépen jellemző alkalmazási eseteit mutatja be, úgy mint: a tipikus alkalmazásokat a különböző tapintó stratégiák előnyeit és hátrányait szemlélteti, hogyan lehet pontos méréseket végezni Végül megismerheti az érintéssel és az érintésmentesen működő rendszerek közötti választás kritériumait.
4.4.1. Mérés a megmunkálás előtt, ellenőrzés a megmunkálás alatt 10 Különösen a sorozatgyártásban fontos a selejtes darabok és az utólagos megmunkálás elkerülése, és a végig magas minőségű gyártás biztosítása. A szerszámnak döntő szerepe van ebben. A kopás és a vágóél törése hibás alkatrészeket eredményez, ami elsősorban emberi beavatkozás nélküli működés esetén sokáig felfedezetlen maradhat, és így komoly költségtöbbletet okozhat.
9
www.heidenhain.hu www.heidenhain.hu
10
87
A megmunkálás előtt ezért célszerű a szerszám hosszát és a szerszám átmérőjét pontosan meghatározni. Ebbe beletartozik az egyes vágóélek ellenőrzése is. Lézeres rendszer esetén az alakos szerszámok és a nem koncentrikus szerszámok is pontosan megmérhetők és ellenőrizhetők. A szerszámok méretei vagy korrigált értékei (delta-értékei) minden esetben bekerülnek a szerszámtáblázatba. A megmunkálás alatt célszerű lehet a szerszám kopását folyamatosan ellenőrizni. Így az NC vezérlés a kopás mértékétől függően tudja kompenzálni a szerszámok méreteit. Új szerszámok automatikus becserélésekor külön ellenőrzés történik a szerszám törésére.
4.4.2. Szerszámsugár és hossz meghatározása Több vágóéllel rendelkező összetett szerszám hosszának és sugarának meghatározása munkaigényes tapintó ciklust igényel, mert minden egyes vágóél hosszát és sugarát meg kell határozni. Ahhoz, hogy pontosabb méréseket végezzünk, szükség lehet a tapintó eljárások többszöri végrehajtására, a mérési eredmény statisztikai függvényekkel történő pontosításához.
4.4.3. Automatikus szerszámbemérés (TT140, TS27R) 1. Kalibrálás
Az etalonszerszámmal a mérőeszköz középpontja fölé kell állni és a szerszámtengely irányában kb. 10 mm-re meg kell közelíteni a mérőfelületet! A kalibráláshoz a következő programsorok valamelyikét kell futtatni:
G65 P9019 Zz Dd Hh T0 [Ee] [Ff] [Ss] Zz Merülési (mérési) mélység (negatív illetve pozitív érték is lehet), Dd Az etalonszerszám pontos átmérője, Hh Az etalonszerszám pontos hossza (kitöltése opcionális, alapértelmezett értéke 0mm), T0 Kalibrálási mód (nem lehet a szerszámtárból beváltott szerszám) Ee Biztonsági távolság (kitöltése opcionális, alapértelmezett értéke 2mm), Ff Előtolás (kitöltése opcionális, alapértelmezett értéke a #512 változóban), Ss Fordulatszám (kitöltése opcionális, alapértelmezett értéke a #511 változóban) Kalibrálás illetve a mérés sorrendje: A négyzetben lévő irányok a mérés irányait, a körben lévő számok kalibráláskor a tapintási pontok sorrendjét jelzik.
Kalibrálás sorrendje a mérés irányának függvényében
88
2. Mérés
Z irányban a szerszámnak a mérőeszköz fölött kell lennie. A méréshez a következő programsorok valamelyikét kell futtatni:
G65 P9019 Zz [Kk] [Dd] Tt [Mm] [Ee] [Ff] [Ss] [Rr] [Ww] Kk Átmérőméréskor a kiemelési magasság (minden esetben pozitív érték, ha nincs kitöltve, csak a szerszám hosszát méri meg), Dd A mérendő szerszám becsült átmérője (kitöltése opcionális, alapértelmezett értékét a Tt paraméteren megadott sorszámú korrekciós regiszterből veszi), Mm Szerszámforgatás méréskor (kitöltése opcionális, alapértelmezés az álló főorsó, 3 vagy 4 esetén értelemszerűen forog a főorsó hossz– és átmérőméréskor is, míg 13 illetve 14 esetén csak átmérőméréskor) Rr Fogankénti előtolás megadásának lehetősége (a bemérés pontosságát nagyban befolyásolja a megadott fogankénti előtolás nagyságrendje) Ww A mérendő szerszám lapkaszáma/él száma
4. Törésvizsgálat
Ezen funkció elsősorban megmunkálás után használatos. A törésvizsgálathoz a következő programsorok valamelyikét kell futtatni:
G65 P9019 C1 Ii C1 A törésvizsgálat kódja Ii Törésvizsgálat méréshatára. Egy számérték megadásával változtathatja a felhasználó a mérni kívánt szerszámnak megfelelően a törésfigyelés határértékét.
4.4.4. Érintésmentes szerszámbemérés 11 Érintésmentes mérés esetén a szerszámok kontúrjainak és méreteinek meghatározása lézerrel történik. Érintésmentes mérés esetén a mérési stratégia befolyásolhatja a mérés pontosságát. A lézeres rendszerrel excentrikus szerszámok hossza és átmérője, továbbá opcionálisan körfutása is megmérhető, vizsgálható vagy ellenőrizhető. A szerszámok lehetnek ismertek vagy ismeretlenek is. Az eredmény az aktuális szerszám száma alatt kerül eltárolásra a
11
www.heidenhain.hu
89
szerszámtáblázatban. A szerszám gyorsmenetben névleges fordulatszámon megy a lézeres rendszerhez. A szerszám hosszát a szerszám alsó élének többszöri lézersugaras tapintásával mérik meg, a szerszám tengelyén kívül egy meghatározott mérési pontban. Közben figyelik az egyes mért értékek szórását. Ezután a szerszám sugarát mérik meg többször, a meghatározott mérési pontban, a szerszám hegye fölött. Végül csökkentett fordulatszámon a meghatározott mérési pontban ellenőrzik, hogy a szerszám vágóéleinek excentrikussága a tűrési tartományon belül van-e. A meghatározott tűréshatárok túllépése esetén a mérést megismétlik. Ezáltal az egyszeri vagy a véletlen hibaforrások kizárhatók. A szerszám gyorsmenetben eltávolodik. A mért értékek automatikusan bekerülnek a CNC kiválasztott korrekció tárolójába.
Az egyes vágóélek ellenőrzése 12
A több vágóéllel rendelkező szerszámok egyes vágóéleinek lézeres rendszerrel történő ellenőrzése figyeli a kritikus szerszámokat a megmunkálás előtt és után, hogy nincs-e törött vagy kopott vágóélük. A forgó szerszám úgy halad át a fénysugáron, hogy közben az összes vágóél által képzett átmérőt ellenőrzik, hogy annak körfutása a tűréshatáron belül marad-e. A szerszám a meghatározott kezdőpozícióba áll. A lézersugár mindig éppen a vágóél mögött vetődik a szerszámra. A szerszámot, például menetmarót vagy menetfúrót, lépésenként ellenőrzik előre meghatározott vágóélpozíciókban, hogy a sugaruk a tűréshatárokon belül van-e és hogy a vágóélek nem törtek-e el. Törés vagy a tűréshatár túllépése esetén egy kapcsolójel generálódik, és a mérést megismétlik, hogy a hibaforrásokat kizárják. A szerszám gyorsmenetben eltávolodik. A mért értékek automatikusan bekerülnek a CNC kiválasztott korrekció tárolójába.
12
www.heidenhain.hu
90
4.5. Mérőciklusok, Digitalizálás, Reverseengineering Az elmúlt években is egyre nagyobb jelentőséget kapott az első minta teljes körű, minden méretet magába foglaló mérési jegyzőkönyvének elkészítése. Ez a fajta követelményrendszer elsősorban a beszállítóipart állítja nagy kihívások elé. A háromdimenziós geometriai adatnyerésnek két főbb csapásvonala alakult ki. Az egyik a tapintással, tapintócsúcs segítségével történő adatnyerés, a másik megoldás az érintés nélküli, lézeres 3D-s adatgyűjtés. Mind a két esetben az adatnyerésre szolgáló eszközök (mind a tapintó, mind a lézerfej) a CNC-marógépek főorsójába rögzíthetőek. A legkézenfekvőbb felhasználása a fordított mérnöki tevékenység (Reverse Engineering) során történő adatnyerés, mely folyamat esetén egy testben, fizikailag már legyártott tárgy méreteiről rögzítjük a pontos dokumentációt az adott tárgy reprodukálásához. Alapvetően, a fizikai kiterjedéssel rendelkező, ismeretlen alakú tárgyak geometriailag helyes CAD modelljének előállításához vezető műszaki folyamat. A világ legnagyobb Reverse Engineering projektje a Maitreya buddha 152, 4 méter magas bronz szobra. (2. kép)
5. 6. 2. A világ eddigi legnagyobb RE projektje A módszer alkalmazásának fontossága megmutatkozik napjainkban igen sok területen. A következőkben az ipar néhány olyan területét említem, ahol a szakdolgozatomban részletezett digitalizáló témakör komoly előny vagy fejlődési lehetőség: - Alkatrészgyártás: a régi gyártmányú autók, repülőgépek, mozdonyok, hajók alkatrészeinek reprodukálása esetén, melyekről már nincs meg a megfelelő, a gyártása során minden szükséges, felületre vonatkozó eredeti és mérethű dokumentáció. Ilyen estekben elegendő egy, az utókor számára még megmaradt alkatrész a tökéletes reprukáláshoz, még estlegesen törött vagy kopott formában is. Előfordulhatnak olyan esetek melyek során egy adott mechanizmus esetlegesen „létfontosságú” kitevőjének dokumentációja megsemmisül. (Az újratervezett felület mérethűsége nem megfelelő, financiális együtthatója igen magas. Újratervezése, újragondolása irreálisan sok munkaórát is igénybe vehet.) - „Ipari kémkedés”: Különleges de életszerű esetben, az ipari verseny résztvevői szeretnének a konkurens vállalat konstrukciós újításairól minél többet megtudni, annak érdekében, hogy egy
91
a saját fejlesztésekkel megtűzdelt, optimális esetben sokkal jobb megoldással jelentkezzenek a piacon. - Orvostudomány: Sikeres de kiaknázatlan jelen és reményekkel teli jövő jellemzi az orvostudomány területén mind a gyógyászati segédeszköz, mind a sebészeti segédeszköz fejlesztéseket. Például igen hasznos művégtagok modell építése során. Gyógy lábbetétek 2½D-s tervezése és gyártásánál szintén elengedhetetlen (3. kép). A folyamat során megtörténik a láb talpi (plantáris) részének szkennelése. Szkennelés alatt ismeretlen síkbeli, 2D-s illetve térbeli 3D-s alakzatok felületi pontjainak leképezését értjük. Ebben az esetben a lényeg, hogy megtudjuk a pontos nyomás eloszlást a talp felületén. [2] Személyre szabottan megtervezhető a lábbetét, majd elkészíthető az CNC technológia segítségével is.
7. 8. 3. Gyógy lábbetétek 2½D-s tervezése - Optika: Egyre nagyobb szerepet játszik ezen a területen is. Teljes 3D-s, nagypontosságú koordináta meghatározást végeznek a szemüveg keretének mindkét oldalán, egyidejűleg két külön letapogató fejjel. Letapogatás történhet keretről, sablonról, lencséről. A letapogatott forma szükség esetén, szabadon nyújtható vertikálisan és horizontálisan, valamint arányosan is. A fúrt keretek formáit a lencse jellemzőinek megfelelően lehet a későbbiekben nagyítani vagy kicsinyíteni. - Faipar: A faipari tevékenységek során egyre gyakrabban jelentkezik speciális igény arra, hogy egyes bútorokat, kiegészítőket, díszítő elemeket is reális keretek között rekonstruálni lehessen. A feladatok általában arról szólnak, hogy egy már meglévő objektumot kell reprodukálni, újra kifaragni. Nem könnyű, azért sem mert ezek az objektumok többnyire nem rendelkeznek semmilyen rajzos dokumentációval. A kiinduló adatokat maga a fából készített modell szolgáltatja – de ezekkel az adatokkal tudni kell dolgozni. A nyugati faiparban a 3D-s adatokat tapintás nélkül egy lézeres berendezéssel nyerik. A mérőfej, a kibocsátott lézer sugár visszaverődéséből származó sugarakat két optikán keresztül egy-egy lineáris CCD-vel méri. A visszaverődés távolságának megfelelő mértékben, az adatgyűjtő számítógép a beszkennelt pontok szinkronizált, és egyben digitalizált x, y, z koordinátáit tárolja. Ezekből, a beszkennelt pontokból kapott felületmodellt nevezik a faiparban fríznek.[3]
92
4.5.1. Szabad felületek digitalizálása
Vezessük be a „Reverse engineering” fogalmat: 13
Magyarul: fordított mérnöki tevékenység. A „reverse engineering” azt a mérnöki folyamatot jelenti amely során az ismeretlen geometriájú fizikailag létező tárgyat (régi alkatrészt, prototípust stb.) számítógépes CAD modelljét meghatározzuk illetve ez alapján legyártjuk. Vagy is nem az összedőlt hidat jelenti!
13
Delcam Hungary Kft előadás
93
4.5.2. Mérés, digitalizálás a) A vezérlésben megtalálható mérőciklusokról A mérőciklusok betöltése egyszerű és könnyen kiolvashatóak a vezérlésből. A kikapcsolás után is megőrződő globális makróváltozók közül, a mérőciklusok az #500… #510 változókat használják. Ezek a változók a tapintó kalibrációs értékeit tartalmazzák, a változóknak más típusú argumentumátadásra való használata tilos. A mérőciklusok szabadon használhatók inches és metrikus adatmegadással is. A tapintóciklus háromlépéses mozgást végez. Első lépésben nagy sebességgel rátapint a mérendő felületre, majd ha a tapintó jelt adott megáll. Ezután irányt vált és egy közepes sebességgel elhagyja a felületet. Ezután ismét irányt vált, és nagyon kis sebességgel pontosan megméri a felület pozícióját.
94
Mielőtt a radiális hiba és a stílusgömb rádiuszának kalibráló ciklusainak használatát ismertetném, a digitalizáló ciklus programszerkesztéséhez meg kell ismerni, a tapintó hosszának meghatározását.
b) Tapintó hosszának kalibrálása A mérések megkezdése előtt ki kell jelölni azt a rekeszt melyben a tapintó hosszkorrekciós értékét fogom tárolni. Az Eml-610 5ax szerszámgépen ez a rekesz a H99-es. A tapintó maga, mint szerszám pedig a T99-es címet foglalja el. A tapintó hosszának bemérésénél két eset közül választhatunk: - amikor a korrekció a szerszám főorsójából való kinyúlással egyenlő, - amikor a korrekció a főorsó tengely nullponteltolását tartalmazza. Az első esetben, egy a főorsó tengelyének irányába eső, helyzetileg pontosan meghatározott felülethez kell érinteni a tapintót. Ezután a kapott értéket, munkadarab nullpont bemérés üzemmódban, közöljük a vezérlővel. Majd a hozzávetőleges kinyúlást (± 5 mm pontossággal), a kalibrálóciklus lefuttatása előtt, beírjuk a megfelelő hosszkorrekciós regiszterbe. A második esetben a folyamat, hosszkorrekció bemérés üzemmódban történik. Megérintem az ismert koordinátájú felületet és a vezérlés ebből kiszámolja a hosszkorrekciót.
Biztonsági pozícionálás
A mérőciklus programozása során az ütközések és tapintótörések elkerülése érdekében, a vezérlő tartalmaz egy biztonsági pozícionáló makróprogramot, melynek használata javasolt.
11. Biztonsági pozícionálás
A G101-es kóddal makróprogramot hív a vezérlés (O9010 PROTECTED POSITIONING), mellyel elvégezhetjük a biztonságos pozícionálást (11. kép). X, Y, Z címen a végpozíció koordinátáit adjuk meg a makró számára, F címen pedig a mozgás előtolását adjuk meg. Az előtolás programozása elengedhető, ilyenkor a vezérlés az 1500 mm/perc -et veszi alapértelmezettnek. A mértékmegadás történhet metrikus vagy inches formában. A hosszkorrekciót természetesen a programozás során meg kell adni. A G101-es kód állapotában a vezérlés megnézi, hogy a tapintó a mozgás indításakor nincs-e nyomás alatt, majd folyamatosan figyeli a tapintót. Ha esetlegesen ütközik, azonnal megáll és hibaüzenetet küld (PATH OBSTRUCTED).
95
A G101-es kód, a következő hibaüzeneteket küldheti a már említetten kívül: NO TOOL LENGTH:
hosszkorrekció nincs beváltva,
STYLUS IN CONTACT:
tapintó nyomva mozgásindítás előtt,
FALSE TRIGGER:
tapintás közben megállt, a tapintó nincs nyomva,
OUT OF POSITION:
pozícióhiba.
Radiális hiba kalibrálása Mint már azt említettem, az excentricitási hibát a stílusgömb (12. kép) radiális hibájának kalibrálásával tudjuk megismerni.
12. Stílusgömb
Fontos, mert így tudjuk meg, hogy a tapintó stílusgömbjének középpontja mekkora távolságra helyezkedik el a gép főorsójának középvonalától. (13. kép) Ezt a hibát a különböző mérőprogramok alkalmazása során, a méretek illetve pozíciók megállapításához figyelembe vesszük. A kalibrálás elvégzéséhez, az Eml-610 5ax típusú szerszámgép vezérlése tartalmaz egy G102 kóddal hívható makróprogramot (O9011- CAL. RADIAL DATUM). Ez 3 alprogramot és 3 makrót alkalmaz a mérés során. A főorsó indexálható, ezért a #510 makróváltozóra beírjuk annak az M kódnak az értékét, amelynek a hatására a főorsó 180 fokkal elfordul. Ez az M19 kód, ami a főorsó orientációt biztosítja. A radiális hibák két mérésből lesznek kiszámítva. Kalibrálógyűrűt használva, a ciklus főorsóorientált állapotban megméri a gyűrű középpontját, majd megméri 180 fokos főorsó elforgatás után is. A gyűrű névleges átmérőjét, az alkalmazott makró számára D címen kell programozni. Valamint a tapintó beváltása után G43 hosszkorrekciót kell programozni. Alkalmazása során figyelni kell, hogy a stílusgömb a teljes átmérőjének mélységéig merüljön az kalibrálógyűrűbe. A gyűrűnek elég a névleges átmérőjét megadni a makró számára. Ha nem talál falat, hibát jelez. A mérés elvégzése után visszatér a kiindulási pontra. A kalibrálás eredménye a #504, #505 makróváltozókon jelenik meg.
96
A tapintó radiális hibájának kalibrálását üzembehelyezéskor mérjük, később csak időszakos ellenőrzés céljából. Azonban szintén mérni kell, ha törés történik, ha kicseréljük a stílusgömböt, vagy ha a gépen a főorsó iránya megváltozik. A G102 makró végrehajtása során, adott esetben előforduló hibajelzések: FORMAT ERROR:
ha a D cím nincs kitöltve,
NO TOOL LENGTH:
hosszkorrekció nincs beváltva,
STYLUS IN CONTACT:
kontaktus mozgásindítás előtt,
PROBE FAIL:
nem tapintott,
NO MOVEMENT:
a programozott adatokból nem adódott ki elmozdulás,
FALSE TRIGGER:
tapintás közben megállt, de a tapintó nincs nyomva,
OUT OF POSITION:
pozícióhiba.
Stílusgömb rádiuszának kalibrálása Most már tudjuk, hogy milyen távolságra van a tapintó stílusgömbjének középpontja a főorsó középvonaltól. A következő lépés pontosan megállapítani a stílusgömb rádiuszát. Erre a vezérlés a G103-as kóddal hívható makróprogramot (O9012-CAL. BALL RADIUS) biztosítja, ami 3 alprogramot és 3 makrót alkalmaz.[9] X és Y radiális irányú tengelyeken pozitív és negatív irányban is meg kell történnie a mérésnek. Az érétkek #500… #503 makróváltozókon lesznek eltárolva (14. kép)
14. Rádiuszkalibrálás Ennél a folyamatnál már, egy pontosan ismert átmérőjű etalongyűrűt használunk, melynek értékét az alkalmazott makró számára D címen kell megadni. A makró a már bemért excentricitást is figyelembe veszi.
97
A tapintó beváltása után természetesen G43 hosszkorrekciót kell programozni. Ehhez a megadott értékhez fog 10 mm-t hozzáadni, és a megkapott értéken belül, felületet keresni. A mérés pontossága érdekében, a gyűrű átmérőjének minimum 25 mm-esnek kell lennie. A mérés előtt az etalongyűrű középpontját elég ±10 mm-es pontossággal megadni. Majd a makró az első lépésben pontosan meghatározza azt. Fontos, hogy a tapintó, minimum a teljes átmérő mélységéig belemerüljön a gyűrűbe. A már meghatározott pontos középpontból kiindulva fogja számolni a radiális irányú stílusgömbsugarat. A rádiusz kalibrálását, a radiális hiba kalibrálásánál felsorolt változások esetében érdemes alkalmazni. Optimális esetben elég egyszer, az első üzembehelyezéskor, ugyanis ha a mérés megtörtént, a vezérlés menti a kapott értékeket, melyek a kikapcsolás után is megőrzésre kerülő makróváltozókon lesznek eltárolva. A #500-as az 1. tengely mentén + irányban; a #501-es az 1. tengely mentén – irányban; a #502-es a 2. tengely mentén + irányban; a #503-as a 2. tengely mentén – irányban vett koordinátaadatokat fogja tárolni. Mechanikus letapintás esetén, a változó mérési feladatok és a munkadarabok eltérő hozzáférhetősége miatt, különböző átmérőjű stílusgömbökre lehet szükség. Apró fogazású elemek mérése során, 25μm átmérőjű úgynevezett rosttapintót (15. kép) is használhatunk. Ezek különböző felfogó betétek és hosszabbítók segítségével rögzíthetők a tapintófejben. A tapintószárak anyaga acél, titán, kerámia lehet. A tapintóelemek általában szintetikus rubinból készülnek.
15. Rosttapintó. (A mellette lévő hajszál jól szemlélteti vastagságát)
A mérés leírása a megtalálható a követőző honlapon http://akademia.nct.hu/index.php/hallgatoknak/cadcam-cnc-programozo
98
Mérő programok és makrók készítése
99
100
101
102
103
104
4. A digitalizáló ciklus A digitalizálás, az adott felület koordinátáinak elhelyezkedését állapítja meg. Szabad felületen egy tetszőleges, akár matematikailag lenem írható felületet értünk. A mérési eredményeket, azaz a felület pontjainak koordinátáit, a digitalizáló ciklusok NC mondatformátumban, akár (beállítástól függően) soros átviteli csatornán (RS-232C) is ki tudják küldeni a számítógépnek. A létrejött mérési eredmények számítógépen kerülnek eltárolásra. A letapogatott alakzat pozitív mintájának elkészítése esetén az ilyen formán tárolt adathalmazt, mivel az egy NC program, vissza lehet küldeni az NCT vezérlőnek DNC csatornán. A megmunkált alakzat akkor lesz mérethű, ha a letapogatást ugyanolyan átmérőjű gömbbel végezzük el, mint amilyen átmérőjű szerszámmal forgácsoljuk a darabot. Ha a digitalizálást más átmérőjű gömbbel végezzük, mint amilyen átmérőjű szerszámmal forgácsolunk, a letárolt adathalmazt át kell transzformálni.[9] 4. 1. A derékszögű digitalizáló ciklus Ez a fajta ciklus, egy a kiválasztott síkon elhelyezett, szabad felületet tapogat le. A kiválasztott sík valamely tengelyére merőlegesen és azzal párhuzamosan tapogat, egyenlő távolságú síkok mentén. A metszeteken, a programozott érték szerint lépked végig úgy, hogy a tapintott pontok közötti távolság a felülettől függően egyforma. A digitalizáló programban a mérési határokat úgy kell megadni, hogy a megmérendő felületnek a kiválasztott síkra eső vetülete téglalap formájú legyen. A makró hívása és jellemző paramétereinek beállítása a G65 P9969-es mondattal történik. G17-es sík (x-y) esetén tartalmaznia kell a tapogatási irányra és a lépéstávolságra vonatkozó adatokat. Ha a mondatban J-t programozunk (16. kép), akkor X tengely mentén tapogat és Y irányban J távolságot lép a tapintó.
16. J távolságot lép Y irányban, közben X tengely mentén tapogat.
105
Y irányban is van lehetőség tapogatni, ez esetben I értéket kell programozni és a már említett rajzon értelemszerűen a J-t I érték váltja. Meg kell határozni a digitalizálandó felület végpontjait, valamint a felület legmélyebb pontját, G17 esetében Z irányban. Ebben a mondatban kell megadni a letapogatás (R) rasztertávolságát és a tapintó (Q) merőleges kiemelésének mértékét (17. kép). A derékszögű digitalizáló ciklus alkalmazása során az F címen megadott érték, a tapogatás mérési pontossága és annak sebessége közötti összefüggést jelenti: - F12, a pontosság 0, 001 mm, - F120, a pontosság 0, 01 mm, - F1200, a pontosság 0, 1 mm. Az S címen megadott érték pedig nem, a már jól meg szokott fordulatszámot jelenti, hanem arra a programszámra mutat, ahova a számítógép a letapogatott koordinátákat menti.
17. Rasztertávolság és merőleges kiemelés tapogatás közben A derékszögű digitalizálás során, adott esetben előforduló hibaüzentek a következők lehetnek: FORMAT ERROR: ha X, Y, Z, Q, R címek közül valamelyik nincs kitöltve, vagy ha a kiválasztott síkhoz tartozó I, J, K értékek kitöltése hibás, NO TOOL LENGTH: nincs hosszkorrekció programozva, OUT OF POSITION: a szánok beállása pozíciófigyelési határon kívül esik, STYLUS IN CONTACT: a tapintó hegye nyomva van mozgásindítás előtt, SCANNING OBSTRUCTED: a tapintó mozgás során beszorult egy üregbe, SCANNING FAIL: a tapintó harmadik próbálkozásra sem talált pontot. A ciklus összesen 13 makrót és alprogramot foglal magában, használata során a #126 és a #150…#160 globális változókat alkalmazza, melyek a ciklus lefutása után szabadon felhasználhatók programíráshoz.[9]
106
107
108
109
110
111
Vizsga felkészülési feladatok
112
Felhasznált irodalom 1. Apostol Attila: Példatár CNC szerszámgépek programozásához, NCT-104M, Budapest, 2007. 2. Dr. Sipos Jenő: Példatár Felhasználói makrók programozásához NCT 104M, Budapest 2008. 3. Dr. Sipos, Apostol, Nagy: Makró programok fejlesztése a CNC szerszámgépek programozásában, 2010, Hadmérnök IV. évf.1.sz. 4. Dr. Horváth László: CAD/CAM TECHNIKA I. Bevezetés a gépészeti rendszerek és gyártásuk számítógépi tervezésébe, Bánki Donát Műszaki Főiskola, Budapest, 1998. 5. Mátyási Gyula - Sági György: Számítógéppel támogatott technológiák CNC, CAD/CAM, Műszaki Könyvkiadó, Budapest, 2007. 6. Peter Smid: FANUC CNC Custom Macros, Idustrial Press, Inc., New York, 2005 7. www.hadmernok.hu „Dr. Sipos Jenő - Apostol Attila: CAD/CAM, CNC technology in Field engineering, security technology and Mechanical engineer training I.” 8. www.graphit.hu/plmsupport „Solid Edge Alaptanfolyam V18” 9. www.graphit.hu/plmsupport „Solid Edge haladótanfolyam V18” 10. www.nct.hu 11. www.heidenhain.hu
113