Tworzenie podprogramów i ich wywoływanie w G-code
Stronę tą wyświetlono już: 2392 razy
G-code umożliwia tworzenie podprogramów sub oraz ich wywoływanie za pomocą call. Oto przykład implementacji programu wykorzystującego podprogram wywoływany z parametrami sterującymi:
- #<edge_width> = 10
- #<number_of_edges> = 7
- o002 sub
- #<angle> = [360 / #2]
- #<current_angle> = 0
- G0 G90 Z#5
- X#3 Y#4
- G1 G91 F300
- M3 S800
- Z-1
- o001 repeat [ #2 ]
- X[#1 * sin [#<current_angle>]] Y[#1 * cos [#<current_angle>]]
- #<current_angle> = [#<current_angle> + #<angle>]
- o001 endrepeat
- o002 endsub
- o002 call [#<edge_width>] [#<number_of_edges>] [20] [20] [0]; wywołanie podprogramu sterującego z parametrami: długość boku wielokąta, liczba boków wielokąta, x, y, z
- o002 call [#<edge_width>] [#<number_of_edges>] [120] [20] [0]; ponowne wywołanie programu sterującego z nowymi parametrami
- G0 G90 Z0
- X0 Y0
- M30
Podprogramy nie muszą być wywoływane z argumentami, ale jeżeli takie argumenty powinny zostać przekazane to odwołanie się do nich odbywa się poprzez kolejne zmienne o numerach od 1 do 30. Możliwe jest również zwrócenie wartości przez podprogram np. tak:
- #<edge_width> = 10
- #<number_of_edges> = 7
- o002 sub
- o003 if [#2 le 3]
- (msg, something wrong with argument); a to jest sposób na wyświetlenie messageboxa (w nowszych wersjach LinuxCNC)
- o002 return; kończę program bo liczba boków jest mniejsza niż 3
- o003 endif
- #<angle> = [360 / #2]
- #<current_angle> = 0
- G0 G90 Z#5
- X#3 Y#4
- G1 G91 F300
- M3 S800
- Z-1
- o001 repeat [ #2 ]
- X[#1 * sin [#<current_angle>]] Y[#1 * cos [#<current_angle>]]
- #<current_angle> = [#<current_angle> + #<angle>]
- o001 endrepeat
- o002 endsub
- o002 call [#<edge_width>] [2] [20] [20] [0]
- o002 call [#<edge_width>] [#<number_of_edges>] [120] [20] [0]
- G0 G90 Z0
- X0 Y0
- M30