Ciekawe czy cokolwiek z tego co piszę zadziała na maszynie

.
Ale wstępny pomysł jest. Starałem się przewidzieć co ktoś może źle wpisać czy zapomnieć wpisać. Niby jest to potrzebne tylko do jednego projektu, ale nic nie wiadomo co będzie w przyszłości. Napisałem w miarę standardowe cykle i ruchy do zastosowania gdzie indziej, ale na pewno nie są idealne.
Cykl na ruch bezpieczny:
%
O6510( RUCH BEZP SONDY )
(JESLI W DOL TO NAJPIERW -X- I -Y-)
(JESLI W GORE TO NAJPIERW -Z-)
IF[#4003NE90]GOTO98
IF[#9EQ#0]GOTO97
#107 = #5043 (ZAPISZ -Z- POCZATKOWE BAZY)
#108 = 1. (LICZNIK)
N5
IF[#108EQ4.]GOTO80
IF[#107LT#26]GOTO9 (-Z- PIERWSZY)
IF[#107GT#26]GOTO7 (-Z- OSTATNI)
N7(-)
IF[#108EQ1.]GOTO20(-)
IF[#108EQ2.]GOTO30(-)
IF[#108EQ3.]GOTO10(-)
N9 (+)
IF[#108EQ1.]GOTO10(+)
IF[#108EQ2.]GOTO20(+)
IF[#108EQ3.]GOTO30(+)
N10
#108=#108+1.
IF[#26NE#0]GOTO40 (-Z-)
GOTO 5
N20
#108=#108+1.
IF[[#24NE#0]AND[#25NE#0]]GOTO50 (-X- I -Y-)
IF[#24NE#0]GOTO60 (-X-)
GOTO 5
N30
#108=#108+1.
IF[#25NE#0]GOTO70 (-Y-)
GOTO 5 (80)
N40 G31 Z#26 F#9 (TYLKO -Z-)
IF[[#26NE#0]AND[#5043NE#26]]GOTO99
GOTO 5
N50 G31 X#24 Y#25 F#9 (-X- I -Y-)
IF[[#24NE#0]AND[#5041NE#24]]GOTO99
IF[[#25NE#0]AND[#5042NE#25]]GOTO99
GOTO 5 (80)
N60 G31 X#24 F#9 (TYLKO -X-)
IF[[#24NE#0]AND[#5041NE#24]]GOTO99
GOTO 5
N70 G31 Y#25 F#9 (TYLKO -Y-)
IF[[#25NE#0]AND[#5042NE#25]]GOTO99
GOTO 5
N80 (RESET PARAMETROW)
#24=#0
#25=#0
#26=#0
#108=#0
GOTO1000 (DO WYJSCIA)
N99 #3000=99 (KOLIZJA SONDY)
N98 #3000=98 (PROG NIE JEST NA G90)
N97 #3000=97 (PODAJ POSUW F)
N1000
M99
%
Cykl na pomiar w osi Z. Branie pod uwagę osi X czy Y sporo utrudni, a do aktualnego zadania nie potrzebne.
%
O6511( SONDA POMIAR W -Z- )
IF[#26EQ#0]GOTO99 (SPRAWDZ CZY PODANO -Z-)
#11 = #4001 (PODTRZYMAJ G KODY GR 01)
#13 = #4003 (PODTRZYMAJ G KODY GR 03)
#32 = -6.0 (DODAJ DOD GLEB W -Z-)
#9 = 50.0 (POSUW PODCZAS POMIARU)
#33 = #26+#32 (OSTATECZNY -Z- POMIARU)
G90 G00 Z[#26+10.0] (NAJAZD WSTEPNY -Z-)
G90 G31 Z#33 F[#9*2] (POMIAR WSTEPNY NA WIEKSZYM POSUWIE)
IF[#5043EQ#33]GOTO98
G91 G00 Z5. (ODJAZD OD POMIARU)
G90 G31 Z#33 F#9 (OSTATECZNY POMIAR NA NORM POSUWIE)
#523 = #5063 (ZAPISZ POMIAR DO PARAM 523)
G90 G00 Z[#26+10.0] (ODJAZD PO POMIARZE)
GOTO1000 (DO WYJSCIA)
N99 #3000=99 (PODAJ WYSOKOSC -Z-)
N98 #3000=98 (KONIEC ZAKRESU POMIARU)
N1000
G#11 G#13 (POWROT G KODOW Z GR 01 03)
M99
%
I jakiś wstępny szkielet do prób wiercenia.
%
O0202 (TEST SONDA)
N1 G21 (JEDNOSTKI NA MM)
N2 G17 G40 G80 G49 (BLOK BEZPIECZENSTWA)
N3 G90 G54 (WSP ABSOLUTNE I BAZA)
N4 (G00 X200. Y200.) (NAJAZD DO WYM NARZEDZIA)
N5 T23 M06 (WYBIERZ SONDE)
N6 G00 X0. Y0. (NAJAZD NA OS DETALU)
N7 G43 Z200. H23
#520 = 50. (WYSOKOSC CZOLA)
#521 = [#520+1.0] (WYSOKOSC CZOLA MAX)
#522 = [#520-2.0] (WYSOKOSC CZOLA MIN)
N8 G65 P8501 (WLACZ SONDE)
(1 OTWOR)
N9 G65 P6510 X150. Y0. Z60. F3000.
N10 G65 P6511 Z30.
IF[#523GT#521]GOTO98
IF[#523LT#522]GOTO97
#531=#523 (PRZEPISZ POMIAR 1 DO PARAM)
(2 OTWOR)
N11 G65 P6510 X-150. Y0. Z60. F3000.
N12 G65 P6511 Z30.
IF[#523GT#521]GOTO98
IF[#523LT#522]GOTO97
#532=#523 (PRZEPISZ POMIAR 2 DO PARAM)
N13 G65 P6510 Z100. F3000. (ODJAZD SONDY)
N14 G65 P8503 (WYLACZ SONDE)
(---WIERCENIE---)
T1 M6 D1 (WIERTLO)
S1200 M3
G54
G0 G43 H1 Z200. M8
G94
G0 X150. Y0.
Z60.
G98 G81 X150. Y0. Z[#531-20.] R5. F120.
X-150. Y0. Z[#532-20.]
G80
G0 Z100.
GOTO1000
N98 #3000=98 (SFERA NA CZOLE ZBYT WYSOKO)
N97 #3000=97 (SFERA NA CZOLE ZBYT NISKO)
N1000 M30
%
Coś przy maszynie na pewno wyjdzie.
Póki co pozdrawiam. Nie wiem ile ludzi pisze takie specjalne makro i cuduje z sondami, ale trzeba przyznać ciekawe zajęcie.