CNC stroj u automatskom režimu rada koristi NC program. U tome programu mogu biti prema potrebi i potprogrami, ili se još nazivaju podrutine.
Što su potprogrami ili podrutine?
Potprogrami su manji programi koji sadrže radnje ili operacije koje se ponavljanju više puta za više alata. Potprogrami mogu biti u glavnom programu ili mogu biti kao drugi programi koji se u pozivaju u određeni program.
Potprogram se u literaturi još nazivaju i podrutine.
Potprogrami su na neki način modulacija G koda. Jer, možete napraviti rutine, ili potprograme koji obavljaju određenu radnju. A to je veoma korisno ako se ta radnja u proizvodnji ponavlja jako mnogo puta.
Iz tog razloga nije potrebno stalno pisati jedan te isti G kod. Već se napiše jednom i poziva se onda kad je potrebno i gdje je potrebno.
No, iz iskustva u praksi, to često zbog ne-organizacije i neznanja nije tako.
Tako postoje:
- interni ili unutarnji potprogrami
- vanjski ili eksterni potprogrami
Interni se još nazivaju i lokalna podrutina, jer se koriste samo u glavnom programu gdje se i nalaze.
Eksterni se još nazivaju samo potprogrami jer se mogu koristiti u više glavnih programa i ne nalaze se u programu u kojemu se pozivaju. Već su posebno spremljeni u memoriji upravljačke jedinice pod svojim nazivom.
- Interni potprogrami se koriste samo u onome programu u kojemu se nalaze.
- Eksterni potprogrami se mogu koristiti u bilo kojem programu.
Eksterni ili vanjski potprogram može biti u suštini bilo koji program.
Interni potprogrami se pozivaju u glavnom programu naredbom M97, a eksterni ili vanjski potprogrami naredbom M98.
Naredba M99 označava kraj internog i eksternog potprograma.
Njezinim izvršavanjem obavlja se vraćanje u glavni program i stroj dalje izvršava G kod koji ide odmah poslije naredbi za pozivanje nekog potprograma.
Potprogrami se mogu koristiti u standardnim ciklusima. A gotovo uvijek se koriste kod izrade djelova gdje je potrebno obaviti neku operaciju više puta.
Kao recimo bušenje provrta za vijke po nekoj kružnici. Ili urezivanje navoja u provrtima. Konturno glodanje u više prolaza po dubini isto se može napraviti pomoću potprograma.
Pozivanje i izvršavanje potprograma M97 i M98
Naredbe i simboli koji se koriste u potprogramima su sljedeće:
- M97
- M98
- M99
- L
- P
- N
- O
- G91
… G91, nije potreban. Samo ako je inkrementalno izvršavanje potprograma M97 ili M98.
Pozivanje i izvršavanje internog potprograma M97 – Lokalne podrutine
Interni potprogram se izvršava samo u programu u kojemu je napisan. Poziva se naredbom M97, a završava naredbom M99.
Kod za potprogram M97 uvijek dolazi nakon naredbe M30 koja definira kraj i resetiranje glavnog programa.
Odnosno potprogram M97 piše se uvijek ispod glavnog programa, nakon M30.
Simbolima P i N „povezuje” se glavni program s potprogramom.
Simbol P definira koji potprogram treba pozvati, a N definira naziv potprograma.
Npr. vizualno, tok izvođenja koda išao bi ovako.
.
.
.
M97 P1000;
.
.
.
.
M30;
N1000;
.
.
.
M99;
Drugim riječima, kako stroj izvršava G kod i kada dođe do naredbe M97, treba pozvati internet potprogram P1000, a G kod potprograma nalazi se u N1000 (koji u ovome slučaju s M97 uvijek ide nakon naredbe M30).
Kada se izvrši G kod u N1000, dolaskom do naredbe M99. Upravljačka jedinica vraća se u glavni program i nastavlja izvršavanje G koda nakon naredbe M97.
Na ovaj način internim potprogramom događa se jedan „skok” iz glavnog programa u potprogram.
Ovdje se još može koristiti programska petlja koja je uvjetovana brojem ponavljanja. Tako se može napraviti da se potprogram M97 izvršava neki određeni broj puta. Npr. 4 puta.
Za to služi simbol L.
Npr. sljedeće:
.
.
.
M97 P1000 L4;
.
.
.
.
M30;
N1000;
.
.
.
M99;
Na ovaj način potprogram N1000 izvršiti će se 4 puta.
To je korisno ako glodalo mora glodati neku konturu na 4 prolaza po dubini. Pa možemo ukupnu dubinu glodanja od 20 mm, rasporediti na 4 prolaza glodala, sa svakim prolazom po 5 mm.
Na taj način glodalo u prvom prolazu glodalo na dubini od 5mm, zatim na dubini od 10mm, zatim 15 mm i na kraju 20mm.
I u ovome slučaju da bi se programirao takav postupan pomak glodala po dubini koristi se naredba G91, za inkrementalno zadavanje pomaka glodala, u ovome slučaju po Z osi.
Pozivanje i izvršavanje eksternog programa M98
Eksterni potprogram je M98. To može biti bilo koji program koji je pohranjen u memoriji upravljačke jedinice stroja i ubacuje se u bilo koji program prema potrebi ili namjeni.
Veoma je slično kao i s M97. Za označavanje kraja potprograma M98, isto se koristi naredba M99.
Npr. vizualno, tok izvođenja koda išao bi ovako.
.
.
.
.
M98 P1000;
.
.
.
.
M30;
Kada stroj dođe do M98, poziva na izvršavanje vanjski potprogram pod nazivom P1000. A on je u memoriji stroja pohranjen s imenom O1000. (da bi se povezali moraju biti isti brojčani nazivi).
Pa bi taj vanjski potprogram izgledao vizualno ovako, njegov početak i kraj.
%
O1000;
.
.
.
.
M99;
%
Kada dođe do naredbe M99 vraća se nazad u program iz kojeg je pozvana M98 i izvršava dalje G kod nakon naredbe M98.
To je isto „skok” iz jednog programa u drugi.
Razlika između M97 i M98
Koja je razlika između ova dva potprograma M97 i M98?
Način povezivanja glavnog programa s potprogramima u jednom i drugom slučaju je jako sličan ako ne i isti.
Glavna razlika je što se potprogram M97 nalazi u glavnom programu i to nakon naredbe M30. (odnosno uvijek ide nakon kraja glavnog programa)
A, M98 se nalazi izvan glavnog programa. To je u suštini jedan drugi program koji se na ovaj način poziva za izvršavanje.
Kada koristiti M97 a kada M98?
Nema nekih pravila kada koristi M97, a kada M98. Sve ovisi od slučaja i što je potrebnije.
M97 se koristi obično kada je na jednom strojnom dijelu potrebno izvršiti više puta jednu te istu operaciju. Ili se ta operacija obavlja na istim koordinatama. Ali, opet ta operacija ne može više služiti za neku drugi dio ili proizvod.
Zato je dobar interni potprogram jer se taj kod nalazi u glavnom programu i uvijek ide zajedno s glavnim programom.
M98 je više za modulaciju. Kao radni stroj koji ima radne priključke koji se dodaju i koriste prema potrebi.
Kada je moguće jedan te isti obrazac koda koristiti više puta i to na više djelova, proizvoda ili komada obrade.
Npr, kod izrade onih provrta na zupčanicima za vijke. To je standardna operacija za koju postoje i gotovi ciklusi, koji opet koriste potprograme.
A može se napraviti i „custome” potprogram M98.
Drugi primjer je kod glodanja pravokutne konture.
Tu se koristi kombinacija potprograma M98 i macro programiranja zajedno sa varijablama kao parametrima.
Napravi se potprogram M98 u kojemu se nalaze macro operacije koje koriste vrijednosti iz varijabli . A te varijable su:
- dužina obratka
- širina obratka
- dubina glodanja
- radijus zaobljenja ili skošenje uglova
- zahvat oštrice glodala
- dodatak za finiš
- broj prolaza glodanja
Potprogrami M97 i M98 u istom programu
Može se napraviti program koji u sebi koristi eksterni i interni potprogram.
Npr. Kod operacije strojnog urezivanja navoja.
Vanjski potprogram u tome slučaju služi za definiranje same operacije urezivanja navoja. To može biti napravljeno pomoću macro naredbi i parametara.
A interni program M97 koristi se za definiranje pozicija na kojima se nalaze provrti u koje treba urezati navoj.
Na taj način postiže se jedan velika fleksibilnost i modulacija kod programiranja samog stroja.
Štedi se velika količina vremena i smanjuje mogućnost pogreške. A onda, opet povećava produktivnost i isplativost strojne obrade.
Jer u nekim slučajevima poanta je postaviti stvari da budu što jednostavnije i što brže napravljene.
Eksternim potprogramom M98 dobijemo jedan modul koji se može koristiti kada je god potrebno urezati neki navoj na bilo kojem strojnom djelu koji se može obrađivati na troosnoj glodalici.
A internim potprogramom zadamo samo koordinate provrta u koje treba urezati navoj.
Glavni problem je u tome što je takve eksterne potprograme M98 s macro naredbama teže napraviti.
Treba posjedovati jedno višu razinu znanja općenito iz računalnog programiranja a zatim i dobro razumjeti G kod.
Primjer jednog takvog programskog koda.
%
O08108 (TRN 1-248-351)
T05 M06
G43 H05
G00 G90 G54
S1000 M03
F45
M08
#110= 0 (REFERENTNA RAVNINA)
#101= 2 (PRILAZ)
#102= 38 (DUBINA BUSENJA)
#106= 1
(=0 BEZ PREKIDA)
(=1 S IZLASCIMA)
(=2 S ZASTOJIMA)
#107= 1 (PARCIJALNA DUBINA BUSENJA)
#111= 5 (IZLAZ NAKON BUSENJA)
#115= 9902 (SKOK NA VANJSKI POTPROGRAM)
M97 P1001 (INTERNI POTPROGRAM)
M05
M09
G28 G91 G00 Z0
G28 G91 G00 Y0
M30
(KRAJ GLAVNOG PROGRAMA)
(INTERNI POTPROGRAM P1001)
N1001
X7 Y6
M98 P#115
G00 Z30.
M99
%
U gornjem primjeru radi se o operaciji bušenja svrdlom promjera 5mm. U takve provrte može se urezati grubi metrički navoj M6x1.
Na početku bloka koda zadani su režimi rada za svrdlo promjera 5mm. Dalje se nalaze varijable sa svojim vrijednostima. Vrijednosti u zagradama su komentari.
Varijabla #115 definira ime eksternog potprograma. Odnosno dodijeljen joj je naziv eksternog programa kojeg treba pozvati.
Odmah ispod toga ide pozivanje internog programa (lokalnog) naziva P1001 s naredbom M97 za pozivanje internog potprograma.
Kod od internog potprograma nalazi se nakon završetka glavnog programa, odnosno naredbe M30.
U tome potprogramu N1001 nalazi se jedna pozicija s koordinatama X6 i Y6 na kojoj je potrebno urezati navoj.
Sljedeći redak je pozivanje eksternog potprograma s naredbom M98 i u ovome slučaju je naziv potprograma kojeg treba pozvati s vrijednošću varijable #115.
A to izgleda kao P#115. Gdje je P – naziv programa koji se nalazi pohranjen u varijabli #115.
Nakon toga ide odmicanje brzim hodom na Z30 i završava eksterni potprogram naredbom M99, te slijedi vraćanje u glavni program pod brojem O08108.
Ovo je dakle situacija kada se u internom potprogramu poziva eksterni potprogram.
Modulacija strojnih operacija pomoću potprograma
Gornji primjer programa je prilično modularni i fleksibilan. Vrijednost varijable #115 može se dodijeliti bili koji eksterni potprogram.
Taj potprogram može u sebi sadržavati druge režime strojne obrade. Ukoliko se radi o nekom strojnom dijelu koji je od različitog materijala. Nije potrebno raditi sve iz početka. Velika ušteda vremena.
Interni potprogram M97 je veoma pregledan jednostavan i modularan.
U slučaju da je potrebno dodati još npr. 4 provrta za navoj.
Jednostavnim kopiranjem na računalu dodaju se još 4 pozicije i samo upišete pozicije tih provrta po X i Y osi.
Nešto kao sljedeće:
(INTERNI POTPROGRAM P1001)
N1001
X7 Y6
M98 P#115
X17 Y6
M98 P#115
X27 Y6
M98 P#115
X37 Y6
M98 P#115
G00 Z30.
M99
%
Za svaku poziciju poziva se eksterni potprogram pod brojem P#115 naredbom M98.
Na taj način su internim potprogramom P1001 definirane pozicije strojne obrade. A eksternim potprogramom pod brojem 9902 definirana je sama strojna operacija, odnosno obrada.
Glavni program pod brojem O08108 čine samo režimi rada definiranog alata, pomoćne naredbe M za vreteno, izmjenu alata, i rashladno sredstvo i varijable sa svojim vrijednostima.
Ostatak je sve definirano kroz potprograme.
Olakšan način rada operatera i povećanje produktivnosti serijske proizvodnje
Jedan od najvećih mana CNC tehnologije je slaba isplativost u pojedinačnoj ili malo serijskoj proizvodnji.
Iz razloga što je potrebno utrošiti u nekim slučajevima više vremena za pripremu stroja i samo programiranje nego što traje strojna obrada i što je vrijednost posla u nekom novcu.
Najlošija varijanata je ako se pojedinačna proizvodnja radi samo metodom ručnog programiranja u G kodu.
Iz tog razloga Modulacijom i već gotovim potprogramima dobivaju se sljedeće prednosti:
- olakšan rad operatera – potrebno manje iskustva i stručnosti
- šablonski rad – manje grešaka i manji ljudski faktor
- kraća priprema stroja
- manja vjerojatnost za lomom alata ili nekog pokretnog djela stroja
- manja vjerojatnost za škart
- veoma kratko vrijeme trajanja programiranja stroja
- modularnost i prilagodljivost na veći broj strojnih dijelova
- veći fokus na dobro podešene režime rada pojedinog alata
- očuvanje trajnosti alata i oštrice alata
- veoma pregledan NC kod
U gornjem primjeru isti takav NC kod može se koristit za izradu navoja u provrtu na bilo kojoj djelu koji se obrađuje. Jedini uvjet je da u upravljačkoj jedinici stroja postoji program koji se koristi kao eksterni ili vanjski potprogram.
Na isti način može se riješiti program za kružno bušenje provrta na nekim cilindričnim dijelovima. Kao što su:
- zupčanici
- poklopci
- spojke i slično
U glavnom programu se definiraju varijable putem kojih se zadaju vrijednosti kao što je promjer ili radijus na kojemu se nalaze provrti, broj provrta, kut između provrta. Kut prvog provrta. Pozicija središta kružnice na kojoj se nalaze provrti.
U konačnici na taj način je pomoću modularnosti i potprograma riješen jedan problem koji bi inače samo primjenom običnog G koda zahtijevao pisanje novog program za svaki strojni dio.
Ovako je to riješeno jednom i dalje je potrebno samo mijenjati varijable prema potrebi, odnosno prema tehničkom crtežu.
Haas VQC (Visual Quick Code)
Hass ima svoj programski dodatak – Haas VQC koji radi veo slično kao „custome” – korisnički potprogrami.
Rješenje je zamišljeno na taj način da naprave gotove programske blokove koji rade veliki broj čestih strojnih operacija koje se ponavljaju i na taj način jako olakšaju programiranje.
Takve strojne operacije su kod glodanja su:
- plansko glodanje
- glodanje konture
- bušenje provrta po šabloni
- bušenje provrta po krugu
- glodanje pravokutnog džepa
Sve što operater treba napraviti je izabrati koji mu šablon treba. Otvoriti ga, zadati tražene vrijednosti varijabli i stroj na temelju zadanih vrijednosti sam generira NC kod.
Takav kod može se onda prebaciti u MDI mod ili u trenutni program kojeg operater na stroju piše.
Kod G65 – pozivanje makro potprograma
G naredba G65 koristi se isto za pozivanje potprograma uz mogućnost prosljeđivanja argumenata njemu.
Format koda je sljedeći:
G65 P1000 [L] [argumenti];
P1000 je naziv potprograma i on može biti proizvoljni. P je skraćenica od – program, a 1000 je brojčani naziv programa. Brojčani naziv programa može biti i brojka npr. 9952., kao P9952.
Naredba G65 zahtijeva adresu P koja odgovara broju programa koji se trenutno nalazi u pogonu upravljačke jedinice.
Kada se koristi adresa L, makro poziv, odnosno potprogram se ponavlja zadani broj puta. Kada se pozove potprogram, upravljačka jedinica traži potprogram na aktivnom pogonu, ili memoriji. Ako upravljačka jedinica ne pronađe potprogram, javlja se alarm.
Naredba za pozivanje potprograma G65 je slična, ali ne ista kao M98.
Naredba G65 se može gnijezditi do 9 puta. Što znači, program 1 može pozvati program 2, program 2 može pozvati program 3 i program 3 može pozvati program 4.
Interni potprogram M97 i inkrementalni pomaci alata G91
Potprogramima se mogu mnoge komplicirane stvari ubrzati i riješiti uz kraće vrijeme i manje G koda.
CAD/CAM sustavi odlični su za izradu programa za sve složene oblike i komplicirane strojne dijelove gdje bi pristup s ručnim pisanjem programa oduzeo previše vremena.
Ipak mnoge stvari koje su složene mogu se riješiti kombinacijom primjene standardnih ciklusa, potprograma i korištenjem macro varijabli.
Jedan primjer je kod glodanja pravilne pravokutne konture ili džepova. Gdje se može inkrementalnim pomakom po Z osi programirati ukupna dubina glodanja.
Program izrađuje pravokutnu konturu u tri prolaza po 5mm, dimenzije 100mm x 50mm x 15mm. Glodalo je fi 12mm grubo.
Jedan takav primjer je prikazan ispod.
%
O01010
G90 G54 G17 G40 G80 G21
G00 X-10 Y-10.
T25 M06 (GRUBO GLODALO D12)
M03 S2100
G43 Z1. H25
M08
G0 Z5
G01 Z0 F50
M97 P20 L3
G90 G00 Z5
M5
M9
G28 G91 G0 Z0
G28 G91 G0 Y0
M30
N20
G91 Z-5
G41 G01 X0 Y-10 D25 F150
Y50
X100
Y0
X0
G40 X-10 Y-10
M99
%