Tworzenie podprogramów i ich wywoływanie w G-code

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 3167 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
Strony powiązane
strony powiązane
  1. linuxcnc.org/docs/html/gcode/o-code.html#ocode:repeat - opis tworzenia podprogramów w G-code na stronie dokumentacji programu LinuxCNC