Last modified by writer on 2023/11/28 18:47

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