Исходный код вики Организация цикла в G-коде

Версия 25.1 от writer на 2022/10/18 14:53

Последние авторы
1 Иногда бывает необходимость зациклить часть или всю управляющую программу. Другой типичный пример обращения к циклу - необходимость изменять значения параметров обработки.
2
3 В этой ситуации иногда можно применять конструкцию цикла с переменными.
4 \\**Определения:**
5 Цикл — разновидность управляющей конструкции в программировании, 
6 предназначенная для организации многократного исполнения набора инструкций (команд).
7 \\Переменная — поименованная, либо адресуемая иным способом область памяти, 
8 адрес которой можно использовать для осуществления доступа к данным. 
9 Данные, находящиеся в переменной называются значением этой переменной. 
10 \\**Обозначения:**
11 O100 do - начало тела цикла 
12 O100 while [условие выхода] - конец тела цикла с условием выхода
13 #n - (n номер) обозначение переменной
14 пример уменьшение значения переменной на 1, #1 = [#1 - 1]
15 \\**Пример конструкции цикла:**
16
17 {{code linenumbers="true" title="**Простая УП**"}}
18 #1 = 20 (В переменную #1 записывается число итераций, значение 20)
19 #2 = 1 (В переменную #2 записывается значение 1)
20 G0 X0 Y0 Z0
21 O100 do (Команда начала цикла)
22 (ниже - тело цикла)
23 G01 X#1
24 G01 Y#1
25 G01 X#2
26 G01 Y#2
27 #1 = [#1 - 1] (Уменьшение значения переменной #1 на 1)
28 #2 = [#2 + 1] (Увеличение значения переменной #2 на 1)
29 O100 while [#1 GT 10] (Условие выхода из цикла(выйти из цикла когда в переменной #1 будет значение 10))
30 {{/code}}
31
32
33 **Результат/вывод:** как мы видим на примере управляющей программы конструкция цикла, состоящая из 8 строк, заменяет около 40 команд линейной интерполяции, но так же заметим, что использование циклов и переменных считается устаревшим и официально не поддерживается многими производителями. В PUMOTIX это работает, но можно применять более изящные конструкции с помощью [[макросов на языке LUA>>doc:Руководство пользователя.Описание M-кодов.Описание функций макроязыка.WebHome]].
34 \\Исходный код примера. Он будет доступен для скачивания в виде файла, который впоследствии можно загрузить в ЧПУ систему.
35
36 {{code linenumbers="true" title="**Исходный код примера доступен в виде файла в конце статьи**"}}
37 G21 (Metric)
38 G40 G90 G91.1
39 G64 P0.1
40 M03
41 S20000
42 F750
43 #1 = 20
44 #2 = 1
45 G00 X0 Y0 Z0
46 O100 do
47 G1 X#1
48 G1 Y#1
49 G1 X#2
50 G1 Y#2
51 #1 = [#1 - 1] 
52 #2 = [#2 + 1]
53 O100 while [#1 GT 10] 
54 M05
55 M30
56 {{/code}}
57
58 [[image:attach:image2019-11-27_8-14-46.png]]
59
60 Исходный код управляющей программы:
61
62 {{code}}
63 G21 (Metric)
64 G40 G90 G91.1
65 G64 P0.1
66 M03
67 S20000
68 F750
69 #1 = 20
70 #2 = 1
71 G00 X0 Y0 Z0
72 O100 do
73 G1 X#1
74 G1 Y#1
75 G1 X#2
76 G1 Y#2
77 #1 = [#1 - 1]
78 #2 = [#2 + 1]
79 O100 while [#1 GT 10]
80 M05
81 M30
82 {{/code}}
83
84 Более сложный пример с возможностью ввода параметров в начале файла УП:
85
86 {{code linenumbers="true"}}
87 (Программа выборки кармана для фрезерного станка, окружности)
88 (Начало настройки, ввод параметров)
89 #12 = 30 (Диаметр окружности мм)
90 #13 = -20 (Глубина кармана мм)
91 #10 = 1750 (Подача)
92 #20 = 20000 (Шпиндель)
93 #30 = 1 (Высота подвода/отвода)
94 #50 = 0.5 (Шаг по XY мм)
95 #60 = 1 (Глубина за проход мм)
96 #70 = 0.02 (Допуск мм, для G64)
97 (Конец настройки)
98
99 (Тело программы)
100 #1 = 0
101 #2 = [#12 / 2]
102 #3 = 0
103 G21 (Metric)
104 G40 G90 G91.1
105 G64 P#70
106 M03
107 S#20
108 F#10
109 G00 Z#30
110 G00 X0 Y0
111 O100 do
112 G00 X0 Y0
113 G01 Z#3
114 O100 do
115 G01 X#1
116 G02 I#2
117 #1 = [#1 + #50]
118 #2 = [#2 - #50]
119 O100 while [#2 GT 0]
120 #1 = 0
121 #2 = [#12 / 2]
122 #3 = [#3 - #60]
123 O100 while [#3 GT #13]
124 G00 Z#30
125 G00 X0 Y0
126 M05
127 M30
128
129 {{/code}}
130
131 (% class="auto-cursor-target" %)
132 [[image:attach:image2019-11-27_12-3-35.png]]