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

Stronę tą wyświetlono już: 62 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:

Listing 1
  1. #<edge_width> = 10
  2. #<number_of_edges> = 7
  3. o002 sub
  4. #<angle> = [360 / #2]
  5. #<current_angle> = 0
  6. G0 G90 Z#5
  7. X#3 Y#4
  8. G1 G91 F300
  9. M3 S800
  10. Z-1
  11. o001 repeat [ #2 ]
  12. X[#1 * sin [#<current_angle>]] Y[#1 * cos [#<current_angle>]]
  13. #<current_angle> = [#<current_angle> + #<angle>]
  14. o001 endrepeat
  15. o002 endsub
  16. 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
  17. o002 call [#<edge_width>] [#<number_of_edges>] [120] [20] [0]; ponowne wywołanie programu sterującego z nowymi parametrami
  18. G0 G90 Z0
  19. X0 Y0
  20. 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:

Listing 2
  1. #<edge_width> = 10
  2. #<number_of_edges> = 7
  3. o002 sub
  4. o003 if [#2 le 3]
  5. (msg, something wrong with argument); a to jest sposób na wyświetlenie messageboxa (w nowszych wersjach LinuxCNC)
  6. o002 return; kończę program bo liczba boków jest mniejsza niż 3
  7. o003 endif
  8. #<angle> = [360 / #2]
  9. #<current_angle> = 0
  10. G0 G90 Z#5
  11. X#3 Y#4
  12. G1 G91 F300
  13. M3 S800
  14. Z-1
  15. o001 repeat [ #2 ]
  16. X[#1 * sin [#<current_angle>]] Y[#1 * cos [#<current_angle>]]
  17. #<current_angle> = [#<current_angle> + #<angle>]
  18. o001 endrepeat
  19. o002 endsub
  20. o002 call [#<edge_width>] [2] [20] [20] [0]
  21. o002 call [#<edge_width>] [#<number_of_edges>] [120] [20] [0]
  22. G0 G90 Z0
  23. X0 Y0
  24. 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

Komentarze