Paraméteres programok és felhasználói makrók szerkesztése, programozása valamint mérés és digitalizálás CNC gépeken



Hasonló dokumentumok
Versenyzők, felkészítő tanárok. CNC programozó és új technológia. tanfolyam MARÓ-ESZTERGA. CNC modul Készítette: SM&SJMI Bt.

Példák 04 4a Négyzet megmunkálása kontúrkövetéssel

1. Alapok. #!/bin/bash

Házikó tetejének megmunkálása (45 -ban, 10 -ban döntött sík, negyedkör és ismét 10 -ban döntött sík határolja)

Automatikus szerszámbemérés. Szerszámbemérő program TS27R illetve TT140 tapintóhoz

2012. NCT VEZÉRLÉSRE írásbeli ORSZÁGOS CNC PROGRAMOZÁS ÉS GÉPKEZELÉS SZAKMAI VERSENY. április 19. Versenyző száma:

CNC-forgácsoló CNC-forgácsoló

BASH script programozás II. Vezérlési szerkezetek

A 10/2007 (II. 27.) 1/2006 (II. 17.) OM

Szkriptnyelvek. 1. UNIX shell

Felhasználói kézikönyv Ciklus programozás. itnc 530. NC szoftver

Forgácsolási folyamatok számítógépes tervezése I.

Gyártandó alkatrész műhelyrajza és 3D test modellje

Objektumorientált Programozás III.

az Excel for Windows programban

B) Ismertesse a CNC szerszámgépnél a dolgozó által végzendő rendszeres (napi, heti, havi stb.) karbantartással kapcsolatos teendőket!

NCT. Marógép és megmunkáló központ vezérlők. Példatár

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

CNC-forgácsoló CNC-forgácsoló

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

SZÁMÍTÁSOK A TÁBLÁZATBAN

Példák DR+0 sugárkorrekció programozott módosítása

CAD/CAM, CNC programozó technológus (FAT lajstromszám: PL-5608)

SZOCIÁLIS ÉS MUNKAÜGYI MINISZTÉRIUM. Szóbeli vizsgatevékenység

KOVÁCS BÉLA, MATEMATIKA I.

Vezérlési szerkezetek

Az AVR programozás alapjai. Előadja: Both Tamás

KÉRDÉSEK PROGRAMOZÁSBÓL_TKU (MARÁS) 1. Írd le а CNC megmunkáló rendszerek jellemző pontjainak neveit: a) М 0,5 b) А 0,5 c) W 0,5 d) R 0,5

MAKRÓ PROGRAMOK FEJLESZTÉSE A CNC SZERSZÁMGÉPEK PROGRAMOZÁSÁBAN

Eljárások és függvények

KÉRDÉSEK PROGRAMOZÁSBÓL_TKU (ESZTERGÁLÁS) 1. Írd le а CNC megmunkáló rendszerek jellemző pontjainak neveit: a) М 0,5 b) А 0,5 c) W 0,5 d) R 0,5

2011. NCT-104T ÍRÁSBELI ORSZÁGOS CNC PROGRAMOZÁS ÉS GÉPKEZELÉS SZAKMAI VERSENY. április Versenyző száma:

CAD-CAM-CAE Példatár

SZÓBELI VIZSGATÉTELEK. CAD/CAM, CNC programozó technológus

5. Az NC programozás alapjai. Az NC technika fejlődése

a.) b.) a.) b.) a.) b.)

Szoftvertervezés és -fejlesztés I.

Java II. I A Java programozási nyelv alapelemei

C programozási nyelv Pointerek, tömbök, pointer aritmetika

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

LEGO robotok. XII. rész

Webprogramozás szakkör

10. Az NC programozás alapjai. Az NC technika fejlődése. Az NC technika rugalmas automatizált. nagy termelékenység

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Gépgyártástechnológiai technikus Gépgyártástechnológiai technikus

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

S z á m í t ó g é p e s a l a p i s m e r e t e k

Excel 2010 függvények

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

WP1 Vezérlő Használati Útmutató

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

NCT hosszesztergák mûködése

DIN GÉP TIPUS MARÓ ESZTERGA MONDAT FORMÁTUM, MEGJEGYZÉSEK KÓD JELENTÉSE. Elmozdulás gyorsmenetben Egyenes interpoláció munkamenetben G00

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Occam 1. Készítette: Szabó Éva

BASH SCRIPT SHELL JEGYZETEK

Egyszerűsített nullpontbemérés NCT maróvezérléseknél

NC gyakorlat. 1. CNC gépek jellegzetes pozícionálási módjai

Menetvágás állandó emelkedéssel (G33, SF)

CAD-ART Kft Budapest, Fehérvári út 35.

A C programozási nyelv I. Bevezetés

Apple Swift kurzus 3. gyakorlat

Az Ön kézikönyve HEIDENHAIN ITNC 530

Rekurzió. Dr. Iványi Péter

CNC MARÁSI FELADATOK. Furatok készítése. Furatkészítés

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Készítette: Nagy Tibor István

Raszteres elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Útmutató EDC kézivezérlőhöz

munkamenetben x x G01 [X...] [Y...] [Z...] [F...] [S...] [T...] [M...]

Statisztikai függvények

A C programozási nyelv I. Bevezetés

Mély-fúróciklusok optimalizálása Fanuc típusú vezérléseknél (Optimizing deep-drilling cycle "Fanuc" type controls)

EPA 320 CNC eszterga Oktatási segédlet

Forgácsolás technológia számítógépes tervezése I. BAGFS15NNC/NLC

A programozás alapjai

CAD/CAM, CNC-programozó technológus

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Programozás alapjai. 7. előadás

Angol szótár V

NCT 90T Programozási leírás

Egész számok értelmezése, összehasonlítása

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

TANFOLYAMZÁRÓ ÍRÁSBELI VIZSGAFELADAT

NCT 99M NCT 2000M. Marógép és megmunkáló központ vezérlő. Programozási leírás

AWK programozás, minták, vezérlési szerkezetek

ABB Teach Pendant programozás segédlet

Mechatronika segédlet 2. gyakorlat

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

SZÁMÉRTÉKEK (ÁT)KÓDOLÁSA

Átírás:

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 2.1. Lokális változók: #1 #33... 18 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 3.1. Makró programozás... 41 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 a feltételes mondatkihagyás kapcsolóállásától függően vagy kihagyja az ugrást, vagy nem. 10

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 G21 G17 G40 G94 S1600 F100 T1 M3 G0 G43 H1 Z10 X12 Y12 M8 M98 P101 L6 1. munkadarab nullapont metrikus üzemmód, "XY" forgácsolási sík kontúrkövetés kikapcsolása, percenkénti előtolás programozása, 1600 fordulat/perces fordulatszám, 100mm/perces előtolás egyes számú szerszám hívása főorsó megforgatása óramutató járásával egyező irányba 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 G0 Z50 X-100 M30 Magyarázat gyorsjárattal mozgás a Z50-es és X-100-as koordinátákra főprogram vége % %O0101 O0101 ALPROGRAM G99 G81 Z-5 R2 F60 YI12 L5 G0 XI12 Y12 M99 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 Y tengelyen 12 mm-es elmozdulás 5-ször végrehajtva gyorsjárattal 12 mm-es elmozdulás az X tengelyen pozitív irányba és az Y12es koordinátára. 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ú alprogram meghívása 1-szer ismételve 24 LBL 0 1-es számú alprogram vége 25 END PGM 1 program vége 16

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. Korrekció száma H D 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 értéke munkadarab koordinátarendszer #5201 közös munkadarab nullponteltolás #5202 1. tengely közös munkadarab nullponteltolás 2. tengely #5208 közös munkadarab nullponteltolás 8. tengely #5221 munkadarab nullpont eltolás 1. tengely #5222 munkadarab nullpont eltolás 2. tengely #5228 munkadarab nullpont eltolás 8. tengely összes munkadarab koordinátarendszerében érvényes G54 20

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 pontos megállás előtolás override előtolás stop 0 0 0 0 1 0 0 1 2 0 1 0 22

3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 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. 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. e g m u n 2.4.9 23

2.4.11. Pozícióinformációk: #5001 #5108 Mondatvégi pozíciók: rendszer pozíció információ jellege beolvasás mozgás közben változó #5001 #5002. #5008 1. tengely mondatvégi pozíciója, 2. tengely mondatvégi pozíciója, 8. tengely mondatvégi pozíciója. 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 1. tengely pillanatnyi pozíciója (G53), 2. tengely pillanatnyi pozíciója (G53), 8. tengely pillanatnyi pozíciója (G53). beolvasás mozgás közben 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 A pillanatnyi pozíció pozíció információ jellege 1. tengely pillanatnyi pozíciója 2. tengely pillanatnyi pozíciója 8. tengely pillanatnyi pozíciója beolvasás mozgás közben NEM lehetséges 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 1. tengely tapintási pozíciója (G31), 2. tengely tapintási pozíciója (G31), 8. tengely tapintási pozíciója (G31). beolvasás mozgás közben lehetséges 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 = <formula> kifejezést használjuk. A <formula> tartalmazhat aritmetikai műveleteket, függvényeket, változókat, konstansokat. Általánosságban a <formula> ban a #j és a #k változókra hivatkozunk. A <formula> 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: #[<formula>] 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[<feltételes kifejezés>] GOTOn (HA[<..>]MENJ) Ha a kötelezően szögletes zárójelek közé tett [<feltételes kifejezés>] teljesül, a program végrehajtása ugyanannak a programnak az n számú mondatán folytatódik. Ha a [<feltételes kifejezés>] 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[<feltételes kifejezés>] (THEN)utasítás (HA[<..>]AKKOR ) Ha a [<feltételes kifejezés>] teljesül, a THEN mögötti utasítás végrehajtásra kerül. Ha a [<feltételes kifejezés>] nem teljesül, a program végrehajtása a következő mondaton folytatódik. Az utasításban a THEN elhagyható az IF[<feltételes kifejezés>] utasítás utasítássor végrehajtása ugyanaz. 2.9. Ciklusszervezés: WHILE[<feltételes kifejezés>] DOm (AMÍG[<..>]TEDD)... ENDm (VÉGE) Amíg a [<feltételes kifejezés>] 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 [<feltételes kifejezés>] nem teljesül, a program végrehajtása az END m utáni mondaton folytatódik. Ha a WHILE [<feltételes kifejezés>] 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

DO1 END1 DO1 END1 Ugyanazt az azonosító számot többször lehet használni: HELYES DOm... ENDm párok háromszoros mélységig skatulyázhatók egymásba: DO1 DO2 DO3 HELYES END3 END2 END1 33

DO1 DO2 END1 END2 A DO m... END m párok nem lapolhatják át egymást: HIBÁS 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 %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 N220 G52 X0 Y0 N230 G0 Z100 N240 M30 % Magyarázat 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. 37

4. számú mintafeladat: MARÓ FELADATOK (NCT-104M) Furat pontháló programozása egymásba ágyazott ciklussal CNC mondat %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 N210 END2 N200 #1=#1+10 N210 END1 N220 G80 N230 G0 Z100 N240 M30 Magyarázat 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. 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 CNC mondat Előtte Utána Makróhívás G65 P100 A12 #1=0 #1=12 Alprogramhívás M98 P100 L2 #1=0 #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: A B C D E F H I J K M Q R S T U V W X Y Z 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. ak 2. ak lv 1. ak 2. ak lv 1. ak 2. ak #1 A A #12 (L) K3 #23 W J7 #2 B B #13 M I4 #24 X K7 #3 C C #14 (N) J4 #25 Y I8 #4 I I1 #15 (O) K4 #26 Z J8 #5 J J1 #16 (P) I5 #27 - K8 #6 K K1 #17 Q J5 #28 - I9 #7 D I2 #18 R K5 #29 - J9 #8 E J2 #19 S I6 #30 - K9 #9 F K2 #20 T J6 #31 - I10 #10 (G) I3 #21 U K6 #32 - J10 #11 H J3 #22 V I7 #33 - 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. kell készíteni: Például: az alkatrészprogram egy adott szegmensén minden mozgás után egy furatot 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: Leírás: %O100 Makró program száma G0 Z#18 Pozicionálás Z tengelyen R címen(-) megadott értékre. G83 Z#24 R#18 Q#17 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. M99 Makróprogram vége, visszatér a főprogramba 3.4. 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

másként) %O6666 file mentése %O9010 programként (Program szerkeszt file ment 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 hívja. 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 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: A B C D E F G H I J K L P Q R S T U V W X Y Z 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 utasítás helyett a következő utasítás adható meg: %O6666=%O9001 %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