możesz też użyć M 97 i numer wiersza do którego się odwołujesz, (możesz to dać po M30 i zakończyć M99)
Nie możesz użyć w podprogramie ani M30, ani M02 itd, bo te funkcje skończą ci natychmiastowo każdy program w momencie wywołania.
Ja robię to np tak:
1. nawiercanie:
0 BEGIN PGM 10_NAW_20 MM
1 TOOL CALL 101 Z S2500 F80 DL+0
2 L Z+200 F MAX M3
3 CYCL DEF 200 WIERCENIE ~
Q200=2 ;BEZPIECZNA WYSOKOSC ~
Q201=-8 ;GLEBOKOSC ~
Q206=AUTO ;WARTOSC POSUWU WGL. ~
Q202=10 ;GLEBOKOSC DOSUWU ~
Q210=0 ;PRZER. CZAS.NA GORZE ~
Q203=+0 ;WSPOLRZEDNE POWIERZ. ~
Q204=50 ;2-GA BEZPIECZNA WYS. ~
Q211=0 ;PRZERWA CZAS. DNIE
4 CALL PGM 40_WSP_20.H
5 L Z+200 F MAX
6 STOP M30
7 END PGM 10_NAW_20 MM
2. Wiercenie:
0 BEGIN PGM 20_WIER_20 MM
1 TOOL CALL 105 Z S1000 F220 DL+0
2 L Z+200 F MAX M3
3 CYCL DEF 205 GLEBOKIE WIERCENIE ~
Q200=2 ;BEZPIECZNA WYSOKOSC ~
Q201=-40 ;GLEBOKOSC ~
Q206=AUTO ;WARTOSC POSUWU WGL. ~
Q202=15 ;GLEBOKOSC DOSUWU ~
Q203=+0 ;WSPOLRZEDNE POWIERZ. ~
Q204=50 ;2-GA BEZPIECZNA WYS. ~
Q212=5 ;WART. ZMNIEJ. DOSUWU ~
Q205=5 ;MIN. GLEBOK. DOSUWU ~
Q258=0.2 ;GORNA BEZP.ODLEGLOSC ~
Q259=0.2 ;DOLNA BEZP. ODLEGL. ~
Q257=0 ;GLEB.ZLAMANIA. WIORA ~
Q256=0.1 ;WYCOF.DLA ZLAM.WIORA ~
Q211=0 ;PRZERWA CZAS. DNIE
4 CALL PGM 40_WSP_20.H
5 L Z+200 F MAX
6 STOP M30
7 END PGM 20_WIER_20 MM
3. rozwiercanie:
0 BEGIN PGM 30_ROZW_20 MM
1 TOOL CALL 107 Z S160 F60 DL+0
2 L Z+200 F MAX M3
3 CYCL DEF 201 ROZWIERCANIE ~
Q200=2 ;BEZPIECZNA WYSOKOSC ~
Q201=-40 ;GLEBOKOSC ~
Q206=AUTO ;WARTOSC POSUWU WGL. ~
Q211=0 ;PRZERWA CZAS. DNIE ~
Q208=200 ;POSUW RUCHU POWROTN. ~
Q203=+0 ;WSPOLRZEDNE POWIERZ. ~
Q204=50 ;2-GA BEZPIECZNA WYS.
4 CALL PGM 40_WSP_20.H
5 L Z+200 F MAX
6 STOP M30
7 END PGM 30_ROZW_20 MM
4. współrzędne punktów, nazwa pliku musi się zgadzać z CALL PGM w poszczególnych plikach z obróbkami oczywiście.:
0 BEGIN PGM 40_WSP_20 MM
1 L X+136 Y+81 F MAX M89
2 L Y-27 F MAX
3 L Y-81 F MAX
4 L X-136 F MAX
5 L Y-27 F MAX
6 L Y+81 F MAX M99
7 END PGM 40_WSP_20 MM
Programy zciągnięte z obrabiarki.