ПАРАМЕТРИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ (М - КОДЫ)
СИСТЕМЫ КООРДИНАТ И РЕФЕРЕНТНАЯ ТОЧКА
КОРРЕКЦИЯ НА РАДИУС ИНСТРУМЕНТА
КОРРЕКЦИЯ НА ПОЛОЖЕНИЕ ИНСТРУМЕНТА
ПОСТОЯННЫЕ ЦИКЛЫ СВЕРЛЕНИЯ И РАСТОЧКИ.
ПРИЛОЖЕНИЕ 1 - ПРИМЕР ПРИМЕНЕНИЯ ПАРАМЕТРИЧЕСКОЙ ПОДПРОГРАММЫ
10.1 Назначение
Параметрическое программирование предназначено для расширения возможностей программирования УП для СЧПУ. Применение параметрического программирования повышает производительность и гибкость создания УП Параметрическое программирование дает технологу-программисту следующие возможности:
? использовать в программах переменные;
? вычислять сложные выражения, использовать тригонометрические, алгебраические и логические функции;
? выполнять условные и безусловные переходы внутри программы;
? создавать подпрограммы с параметрами, и вызывать их;
? создавать библиотеки программ и подпрограмм для технологических и измерительных циклов.
10.2 Вызовы подпрограмм
10.2.1 Вызов подпрограмм с параметрами
Параметрическая подпрограмма является внешней подпрограммой (не находится в кадрах текущей УП). Она расширяет возможности технологического программирования и позволяет передать числовые параметры из вызывающей программы в подпрограмму.
Синтаксис вызова параметрической подпрограммы:
LP<число> [A_] [B_] [C_] ….[Z_ ]
где:
LP<число> – команда вызова подпрограммы с параметрами.
P<число> – представляет собой имя файла с расширением .NC, в котором хранятся кадры подпрограммы.
<число> – может иметь значение в диапазоне от 1 до 99999.
Примечание:
Задание незначащих нулей в имени файла подпрограммы в поле <число> не разрешается.
Например: Для подпрограммы P0123.nс вызов по команде LP0123 приведет к ошибке. Подпрограмма не будет найдена.
Параметры передаются при помощи буквенных кодов (адресов), следующих за текстом LP<число>.
Для передачи параметров разрешается использовать все буквы латинского алфавита от A до Z, за исключением букв Строчные и прописные буквы не различаются.
Пример:
N10 LP352 A1.5 D3.4 K33.2
В этом кадре вызывается подпрограмма P352 (файл с именем P352.NC), в которую передаются параметры A,D, K с указанными значениями.
При вызове подпрограммы с параметрами по команде LP<число>, программа MSHAK-CNC ищет файл-подпрограмму P<число>.NC в текущем каталоге (там, где находится основная программа). Если ее нет в текущем каталоге, то поиск производится в каталоге, определяемый системным параметром SubProgLib в файле Profile.CNC.
Если файл подпрограммы отсутствует в обоих каталогах, то MSHAK-CNC выдает ошибку.
Возврат из подпрограммы задается вспомогательной функцией М17.
Вызов одной подпрограммы из другой называется вложенным вызовом. Главная программа имеет уровень вложенности 0.
При вызове подпрограммы по команде LP (вызов внешней подпрограммы) создается набор локальных переменных от #1 до #99 для данной подпрограммы (см. Раздел 10.5.). Они инициируются значением “не определено“.
При передаче параметров в подпрограмму, значения параметров запоминаются в локальных переменных.
На рис 51 показано, как происходит вложенный вызов подпрограмм, и как создаются и удаляются локальные переменные.
![]() |
Рис. 52 Вложенный вызов подпрограмм и локальные переменные
10.2.2 Простой вызов подпрограмм
Простой вызов подпрограммы программируется с помощью адресного слова Подпрограмма в этом случае должна находиться в том же файле, что и основная программа.
При использовании простого вызова подпрограммы передача параметров невозможна.
Формат:
L<число>
<кадры> N<число>
<кадры> M17
Где:
L<число> означает вызов подпрограммы с номером кадра N<число>
Число уровней вложенности вызовов подпрограмм не ограничено, но рекомендуется не использовать более чем 100 уровней вложенности.
Конец подпрограммы программируется вспомогательной функцией М17, после которой происходит возврат из подпрограммы, и затем выполняется тот кадр, который следует за кадром, содержащим вызов подпрограммы L<число>.
Примечание:
В кадре, где запрограммирован вызов подпрограммы, не должны быть указаны следующие величины:
начало повторяющего отрезка (Н), конец повторяющего отрезка (М20), программный переход (Е),
возврат из подпрограммы (М17) и конец программы (М02).
В кадре, где запрограммирован возврат из подпрограммы, не должны быть указаны следующие величины:
начало повторяющего отрезка (Н),
конец повторяющего отрезка (М20),
программный переход (Е) и конец программы (М02),
вызов подпрограммы (L).
Примеры:
; Основная программа
X5Z5
L10 ;Вызов подпрограммы, начинающейся с кадра N10 X2Z8
L20 ;Вызов подпрограммы, начинающейся с кадра N20 X0Z0
M2
N10Z2 ;Подпрограмма с меткой кадра N10 X10
M17 ;Конец подпрограммы и возврат в основную программу
N20Z15 ;Подпрограмма с меткой кадра N20 X20
L10 ;Вложенный вызов подпрограммы N10 из подпрограммы L20 M17 ;Конец подпрограммы и возврат в основную программу
10.2.3 Программирование повторяющегося отрезка программы (Н)
Повторяющийся отрезок управляющей программы задается с помощью адресного слова H и вспомогательной функцией М20.
Формат:
Н<число>
<кадры> ; повторяющийся отрезок программы
M20
Где:
Н<число> - показывает количество повторов отрезка УП.
<число> - принимает значение в диапазоне 0…99999.
Конец отрезка задается вспомогательной функцией М20.
После выполнения последнего кадра отрезка, если количество повторов не закончилось, выполнение программы продолжается, начиная с первого кадра отрезка.
Разрешается программировать вложение повторяющегося отрезка программы. Количество вложенных повторов - до 100.
В этом случае первый кадр, который содержит М20, считается концом последнего повторяющегося отрезка. Следующий кадр, который содержит М20, считается концом предпоследнего повторяющегося кадра и так далее до первого отрезка, который содержит все повторяющиеся отрезки.
Если в УП запрограммировано начало повторяющегося отрезка (H), но отсутствует конец отрезка (М20), то повтор отрезка игнорируется.
Примечание:
В кадре, где задан H_, не должны быть указаны следующие величины: конец повторяющегося отрезка (М20),
вызов подпрограммы (L_),
программный переход (Е),
возврат из подпрограммы (М17) и конец программы (М02).
В кадре, где задан конец повторяющегося отрезка (M20), не должны быть указаны следующие величины:
начало выполняющегося отрезка (Н_), вызов подпрограммы (L_), программный переход (Е),
возврат из подпрограммы (М17) и конец программы (М02).
Пример:
Z10X5 F1000 G1
N5 H5 ;выполнить отрезок программы N5 - N25 5 раз
G91 X5 Z10
N10 H2 ;выполнить отрезок программы N10 - N15
;2*5 = 10 раз
Z2X1 X1
N15 M20 ;конец отрезка программы для повтора,
;начиная с кадра N10
Z3X3 Z1
N25 M20 ;конец отрезка программы для повтора,
;начиная с кадра N5
10.3 Переменные (#)
Применение переменных позволяет расширить возможность программирования УП.
Переменные можно использовать в выражениях присвоения, в условных выражениях для выполнения условных переходов. Переменные и выражения с переменными можно использовать в качестве значений адресных слов.
Примечание:
Переменные не имеют специальной размерности, но при использовании их в качестве переменных каких-то величин, значения принимают размерность этих величин.
Пример:
G1 X2.5 Y.3.6 ; значения заданы явно
#1= 2.5
#2= 3.6
G1 X#1 Y#2 ; значения заданы переменными
Переменные (в качестве значений адресных слов) можно применить для букв от А
до Z за исключением адресных слов D,E,G,H,M,L,N,O,P,T
Во входном языке используется 10000 переменных. Синтаксис задания переменной:
#<целое>
Где:
<целое> - номер переменной целое число в диапазоне 0…9999
Значениями переменных являются числа с плавающей запятой.
Доступ к переменным можно осуществить и при помощи косвенной адресации, когда вместо явного задания номера переменной задается выражение в круглых скобках.
Синтаксис задания косвенной адресации:
#(<выраж>)
Где:
<выраж> - алгебраическое выражение, вычисленное значение которого выступает как номер переменной.
Диапазон значений алгебраического выражения <выраж> - целое число в диапазоне 0…9999
Примеры косвенной адресации:
#3 =15
#15=10
#17=2
#5 = #(#3) ; Присвоить переменной #5 значение переменной #15, так как выражение
; в скобках возвращает значение переменной #3 равное 15, то есть
; #5 будет равно 10
#6 = #(#3+2) ; Присвоить переменой #6 значение переменной #17, так как выражение
; в скобках возвращает значение 17, то есть
; #6 будет равно 2
В следующем примере переменная #10 принимает значение равное значению переменной #1.
#10 = #1
#10 = #(1)
#10 = #((1+2+3)/6)
#2 =1
#10 = #(#2)
#10 = #(SIN(90))
Для использования переменных в УП, необходимо заранее им присвоить значения. Значения переменным могут присваиваться как в программе обработки, так и с помощью редактора переменных программы (см. документ MSHAK-CNC Руководство оператора). Значения переменных могут изменяться в процессе выполнения программы.
Присваивания выполняются перед выполнением команд перемещений, в заданном в кадре порядке.
Переменным можно присвоить, как числовое значение, так и сложное алгебраическое и тригонометрическое выражение, состоящее из функций и арифметических действий над переменными и константами.
Пример:
#3= #3+2/(#6 * #5)
Различаются следующие типы переменных:
· Неопределенно - #0
· Локальные - #1- #99
· Общие - #100-#999
· Системные - #2000 - #7400
В программе MSHAK-CNC значения общих и локальных переменных можно наблюдать на экране. Переменные (см. документ MSHAK-CNC Руководство оператора)
Во время выполнения УП программа MSHAK-CNC показывает текущий уровень вложенного вызова подпрограммы, при помощи выделения синим цветом строки текущего уровня вызова.
Значение переменной или выражения можно задавать вместе с адресным словом следующими двумя вариантами:
10.3.1 Задание значения адреса совместно с выражением
Переменную или выражение можно задавать после числового значения слова совместно со знаком арифметического действия: "+", "-", "*", "/". При наличии этого знака, числовое значение адресного слова используется в выражении как константа при вычислении выражения. В формировании выражений, для задания приоритетности выполнения вычислений, можно использовать круглые скобки.
Пример:
#3=25 ; присвоение переменной #3 значения 25
#4=#3*2 ; присвоение переменной #4 значения 50 X5+#4 ; перемещение по X в координату 5+#4 = 55 X35-#3 ; перемещение по X в координату 35-#3 = 10
#3=10
#2=5
X4*#2+#3 ; перемещение по X в координату 4*#2+#3 = 30 X4*(#2+#3) ; перемещение по X в координату 4*(#2+#3)= 60 X4*#3*(#2+#3); перемещение по X в координату 4*#3*(#2+#3) = 600
10.3.2 Задание значения адресного слова как значения выражения
Значение переменной или выражения можно присвоить адресному слову, задав его в круглых скобках. В формировании выражений можно использовать вложенные круглые скобки, для задания приоритетности выполнения вычислений.
Пример:
#3=25 ;присвоение переменной #3 значения 25
#4=#3*2 ;присвоение переменной #4 значения 50
#5=40 ;присвоение переменной #5 значения 40 X(#3) ;перемещение по X в координату 25
Y(#3+#4) ;перемещение. по Y в координату 75: 25+50=75 Z(#3*2+#4/5) ;перемещение по Z в координату 60: 25*2+50/5=60 Y((#3+#4)/3 +#5) ;перемещение по Y в координату 65: 75/3+40=65
10.4 Переменная #0 - “неопределенно”
Неопределенные значения переменных позволяют технологу-программисту определять: был ли правилен вызов подпрограммы, - все ли параметры заданы при вызове, или правильна ли какая-то логическая цепочка вызовов.
Чтобы переменная имела значение “неопределенно”, необходимо присвоить ему значение #0 или значение другой «неопределенной» переменной.
Алгебраическое выражение преобразует значение “неопределенно” в число 0.0. Но если выражение простое присвоение, – то возвращаемое значение тоже “неопределенно”.
Пример:
#12 = #0 ; #12 имеет значение “неопределенно”
#3 = #12 ; #3 имеет значение “неопределенно”
#4 = -#12 ; #4 имеет значение “неопределенно”
#5 = #12 +#3; #5 имеет значение 0.0
#6 = #12*3 ; #6 имеет значение 0.0
Если переменная, используемая в адресном слове, имеет значение
“неопределенно”, то это адресное слово в текущем кадре игнорируется.
Пример:
#5 = #0
#6=35.6
G1 X#5 Y#6 ; то же, что и G1 Y35.6 X(#5+#0) ; то же, что и X0.0
Z-(#5) ; Z игнорируется
Логическое выражение преобразует значение “неопределенно” в число 0.0. В логических выражениях, параметры со значением “неопределенно” рассматриваются как число 0.0 , за исключением отношений “=” и “<>”
Условие |
#1 равно #0 |
#1 равно 0 |
#1 = #0 |
Истина |
Ложь |
#1 <> 0 |
Истина |
Ложь |
#1 = 0 |
Ложь |
Истина |
#1 <= #0 |
Истина |
Истина |
#1 >= #0 |
Истина |
Истина |
#1 > 0 |
Ложь |
Ложь |
#1 < 0 |
Ложь |
Ложь |
Примечание:
Важно понимать отличия между понятиями “неопределенно” и равное нулю. Если в условии сравнения переменных необходимо проверить равенство нулю, то следует использовать 0.0. Если условие сравнения используется для определения - было ли присвоено значение переменной, то следует использовать #0.
10.5 Локальные переменные
Локальные переменные создаются и инициализируются при каждом вызове подпрограммы по LP команде. Локальные переменные определяются в диапазоне от #1 до #99. Они инициализируются значением “неопределенно”, которое эквивалентно #0.
Вызов подпрограммы по L команде, отличается от вызова по LP, так как в этом случае не создаются локальные переменные, но существующие при последнем вызове по команде LP локальные переменные остаются доступными подпрограмме. При возврате из подпрограммы LP по М17, созданные при вызове на этом уровне локальные переменные удаляются. При возврате из подпрограммы L по
М17, локальные переменные не удаляются.
Локальные переменные #1…#26 соответствуют адресным словам А…Z и используются для передачи значений параметров команды LP в подпрограмму. Соответствие адресного слова параметра и номера локальной переменной приведено в таблице ниже.
Адресное слово |
Локальная переменная |
A |
#1 |
B |
#2 |
C |
#3 |
D |
#7 |
F |
#9 |
H |
#11 |
I |
#4 |
J |
#5 |
K |
#6 |
L |
#12 |
M |
#13 |
N |
#14 |
O |
#15 |
P |
#16 |
Q |
#17 |
R |
#18 |
#19 |
|
T |
#20 |
U |
#21 |
V |
#22 |
W |
#23 |
X |
#24 |
Y |
#25 |
Z |
#26 |
Примечание:
Адресные слова E,G не могут использоваться для передачи параметров.
Если в команде LP задан параметр (адресное слово), то соответствующая переменная принимает значение, равное значению адресного слова. В противном случае, данная переменная принимает значение “неопределенно”.
Пример:
При двух вариантах вызова подпрограммы:
LP100 A20 - вызов подпрограммы с передачей параметра
LP100 - вызов подпрограммы без передачи параметра Необходимо в подпрограмме выполнить проверку на передачу параметра.
IF (#1 = #0) E1 ; переход на кадр N1 , если параметр A- неопределен
X #1 ; перемещение по X на величину параметра #1 E2 ; безусловный переход на кадр N2
N1 X 100 ; перемещение по X на величину 100 N2
Таким образом, если условное выражение #1 = #0 определяется как ИСТИНА, это значит, что переменной #1 не было присвоено значение и, либо аргумент A при вложенном вызове подпрограммы отсутствует, либо имеет значение “неопределенно”.
В подпрограмме с параметрами локальные переменные #27…#99 можно использовать в качестве обычных переменных. Необходимо учесть, что при возврате из подпрограммы по М17 созданные на этом уровне локальные переменные удаляются.
Пример:
#31 = #3*2 ; присвоить переменной #31 удвоенное значение параметра С
G1 G91 X#24 ; перемещение в приращениях на величину параметра X
10.6 Общие переменные
Общие переменные доступны в любой части программы. Значения этих переменных сохраняются при выключении СЧПУ и восстанавливаются при включении СЧПУ.
Во входном языке MSHAK-CNC можно использовать общие переменные, которые определены в диапазоне #100…#999.
Примечание:
Значения локальных переменных основной программы (нулевой уровень) также сохраняются при выключении СЧПУ.
Общие переменные могут использоваться для передачи значений из одной подпрограммы в другую. Присвоенное значение переменной остается неизменной, независимо от уровня вложенности подпрограммы, до выполнения ей другого присвоения.
10.7 Системные переменные
Системные переменные предоставляют доступ к системным параметрам СЧПУ. Это необходимо для изменений станочных системных параметров из управляющей программы.
Перечень системных переменных приведен в таблице ниже:
Переменная # |
Описание |
#2000 - #2800 |
Корректоры инструментов по длине Z и радиусу D |
#3000 |
Аварийное прерывание выполнения УП с сообщением |
#3001 - #3002 |
Системные таймеры |
#3006 |
Стоп выполнения УП с сообщением |
#6001 - #7400 |
Корректоры инструментов по X,Y,U,V,W |
#4001 – #4020 |
Модальная информация о G функциях |
#4101 – #4126 |
Модальная информация об адресных словах |
#5001 – #500n |
Значение командной координаты, с учетом корректора инструмента в рабочей КС |
#5021-#502n |
Значения машинных координат |
#5041-#504n |
В рабочей КС - значение программных координат, без учета корректора инструмента |
#5061-#506n |
Значение координат контакта с измерительным щупом в рабочей КС без учета корректора инструмента |
#5070 |
Признак события – контакт с измерительным щупом |
#5071 |
Признак, что активен измерительный щуп в шпинделе |
#5072 |
Признак, что активен измерительный щуп на столе |
#5080 |
Значения корректора радиуса текущего инструмента |
#5081-#508n |
Значения корректоров текущего инструмента |
#5090 |
Значения корректора износа радиуса текущего инструмента |
#5091-#509n |
Значения корректоров износа текущего инструмента |
#5201-#520n |
Смещения текущей координатной системы |
#5221-#522n |
Смещения координатной системы G54 |
#5241-#524n |
Смещения координатной системы G55 |
#5261-#526n |
Смещения координатной системы G56 |
#5281-#528n |
Смещения координатной системы G57 |
#5301-#530n |
Смещения координатной системы G58 |
#5321-#532n |
Смещения координатной системы G59 |
10.7.1 Корректоры инструментов #2000 - #2800, #6000-#7400
Системные переменные, #2000 - #2800, #6000-#7400 предназначены для хранения значений корректоров инструментов (смещение на радиус) для 200 инструментов. При программировании используются корректоры инструментов по координатам X,Y,Z, U,V.W и корректор радиуса инструмента. Эти корректоры активизируются при задании H и D адресных слов в УП.
#2000 |
Всегда возвращает ноль в выражении |
#2001-#2200 |
Корректор длины инструмента по оси Z для инструментов с 1 по 200 |
#2201-#2400 |
Корректор износа длины инструмента по оси Z для инструментов с 1 по 200 |
#2401-#2600 |
Корректор радиуса инструмента с 1 по 200 |
#2601-#2800 |
Корректор износа радиуса инструмента с 1 по 200 |
#6001-#6200 |
Корректор по оси X для инструментов с 1 по 200 |
#6201-#6400 |
Корректор износа по оси X для инструментов с 1 по 200 |
#6401-#6600 |
Корректор по оси Y для инструментов с 1 по 200 |
#6601-#6800 |
Корректор износа по оси Y для инструментов с 1 по 200 |
#6801-#7000 |
Корректор по оси U для инструментов с 1 по 200 |
#7001-#7200 |
Корректор по оси V для инструментов с 1 по 200 |
#7201-#7400 |
Корректор по оси W для инструментов с 1 по 200 |
Например, для инструмента 4 системные переменные #2004, #2204, #2404, #2604
являются соответственно корректорами:
- длины инструмента по оси Z;
- износа инструмента по оси Z;
- радиуса инструмента;
- износа радиуса инструмента.
Используя эти переменные в УП, можно изменить или прочитать значения корректоров инструментов.
Присвоение этим переменным значений в УП, является аналогичным действием, что и задание значений корректорам инструментов на экране ИНСТР (TOOLS) в программе MSHAK-CNC.
Примечание:
Когда выполняется операция присвоения системным переменным, СЧПУ прекращает выполнение кадров УП, пересчитывает значения координат с учетом новых значений и затем продолжает выполнение УП.
10.7.2 Аварийное прерывание выполнения УП с сообщением #3000
Аварийное прерывание выполнения УП с выдачей сообщения может быть выполнено из параметрической программы с помощью присвоения значения переменной #3000.
Номер сообщения будет соответствовать присвоенному значению переменной #3000, а выводимым текстовым сообщением будет строка в кадре присвоения, заданная после символа комментария “;”.
Пример:
IF (#24 <> #0 ) E5
#3000 = 1024 ; Не задан параметр X
N5 ; условие было верно, параметр X был передан
Выполнение программы будет прервано и в окне «Сообщения» выводится сообщение:
Не задан параметр X
10.7.3 Системные таймеры #3001 - #3002
В управляющей программе можно использовать таймеры: #3001 и #3002.
Дискрета этих таймеров - миллисекунда.
Таймер #3001, после загрузки ПО MSHAK-CNC, инициализируется значением ноль, и начинает счет.
Таймер #3002 работает только тогда, когда выполняется УП.
Значение таймера #3002 сохраняется при выключении СЧПУ и восстанавливается по его включению. Оба таймера можно инициализировать в УП, операцией присвоения.
Пример:
#5 = #3001
N2 IF (#3001 < (#5 + 3500)) E2 ;Организация задержки на 3.5 сек. в УП
10.7.4 Останов выполнения УП с сообщением #3006
Программный останов (M00) выполнения УП с выдачей сообщения может быть выполнен из параметрической программы при присвоении значения переменной #3006.
Номер сообщения будет соответствовать значению, присвоенному переменной #3006, а выводимым текстовым сообщением будет строка, заданная в кадре присвоения после символа комментария “;”.
Пример:
#3006 = 2001 ; Сообщение для оператора.
10.7.5 Модальная информация о G функциях в группе #4001 – #4020
Системные переменные #4001 - #4026 могут использоваться в УП для определения номера активной G функции для любой группы G-функций. Переменные от #4001 до #4020 хранят значения активного кода для групп от 1 до 20, соответственно.
Принадлежность G функции номеру группы приведено в таблице ниже
Номер группы |
Наименование группы |
Перечень G- функций |
||
0 |
Действующие в одном кадре |
G4,G9, G28,G29,G30,G31, G33,G53,G92, G74,G75,G76, G77,G78,G79, G171,G172, G180, G700,G701,G702 |
||
1 |
Выбор разновидности движения |
G0,G1,G2,G3 |
||
2 |
Выбор плоскости |
G17, G18,G19 |
||
3 |
Размерность задания перемещений |
G20,G21 |
||
4 |
Масштабирование |
G22,G23,G24 |
||
5 |
Контроль вращения шпинделя |
G25,G26 |
||
6 |
Коррекция на радиус инструмента |
G40,G41,G42 |
||
7 |
Коррекция на положение (длину) инструмента |
G43,G44,G49 |
||
8 |
Локальная координатная система |
G52, G152 |
||
9 |
Рабочая координатная система |
G54,G55,G56,G57,G58,G59 |
||
10 |
Движение со слиянием |
G61,G64 |
||
11 |
Задание X по диаметру или радиусу |
G62,G63 |
12 |
Поворот системы координат |
G68,G69 |
13 |
Многопроходные токарные циклы |
G70,G170,G71,G72,G73 |
14 |
Сверлильно- расточные фрезерные циклы |
G80, G81,G82,G83,G84,G86,G88,G183 |
15 |
Режим задания перемещений |
G90,G91 |
16 |
Режим задания скорости подач |
G93,G94,G95 |
17 |
Режим задания вращения шпинделя |
G96,G97 |
18 |
Точка возврата в сверлильных циклах |
G98,G99 |
19 |
Зеркальная обработка |
G150,G151 |
20 |
Режим стружкодробления |
G160,G161,G162 |
Жирным шрифтом заданы G-функции, устанавливаемые по умолчанию при включении СЧПУ или при начальном запуске УП.
Пример:
Для проверки выключена ли компенсация радиуса инструмента G40, необходимо проверить, что значение группы 6 равно 40
IF (#4006 = 40) E200 ; переход на кадр N200 , если компенсация радиуса инструмента выключена.
10.7.6 Информация об адресных словах #4101 – #4126
Системные переменные #4101 - #4126 могут использоваться в УП для определения значений адресных слов от A до Z. Они содержат значения последних выполненных в УП адресных слов.
Переменные от #4101 до #4126 соответствуют адресным словам в соответствии с таблицей приведенной ниже.
Примечание:
При вызове подпрограмм с параметрами, когда адресные слова используются для передачи параметров, значения переменных #4101-#4126 не меняются.
Адресное слово |
Переменная |
A |
#4101 |
B |
#4102 |
C |
#4103 |
D |
#4107 |
F |
#4109 |
H |
#4111 |
I |
#4104 |
J |
#4105 |
K |
#4106 |
M |
#4113 |
Q |
#4117 |
R |
#4118 |
#4119 |
|
T |
#4120 |
U |
#4121 |
V |
#4122 |
W |
#4123 |
X |
#4124 |
Y |
#4125 |
Z |
#4126 |
Пример:
Для определения значения последнего задания по адресному слову S, необходимо проверить переменную #4119.
IF (#4119 > 1500) E200 ; переход на кадр N200, если S был больше 1500 об/мин
10.7.7 Командная координата, с учетом корректора инструмента
#5001 – #500n
Системные переменные #5001 – #500n содержат значения командных координат в последнем выполняемом кадре (координаты конечной точки перемещения), с учетом смещений рабочей координатной системы и корректоров инструмента. Фактически эти переменные содержат конечную программную координату в кадре.
Соответствие между осью и номером переменной приведено в таблице ниже.
Ось |
Переменная |
X |
#5001 |
Y |
#5002 |
Z |
#5003 |
U |
#5004 |
V |
#5005 |
W |
#5006 |
A |
#5007 |
B |
#5008 |
C |
#5009 |
Пример:
N10 G54 G43 H1 F1000 N20 X20 Y30 Z40
N30 #51=#5001 #52=#5002 #53=#5003 M30
После выполнения кадра с номером N30, локальные переменные #51, #52, #53
будут иметь значения 20, 30, 40.
10.7.8 Текущая машинная координата #5021-#502n
Системные переменные #5021- #502n содержат значения текущих машинных координат.
Соответствие между осью и номером переменной приведено в таблице ниже.
Ось |
Переменная |
X |
#5021 |
Y |
#5022 |
Z |
#5023 |
U |
#5024 |
V |
#5025 |
W |
#5026 |
A |
#5027 |
B |
#5028 |
C |
#5029 |
10.7.9 Текущая координата в рабочей координатной системе #5041-
#504n
Системные переменные #5041-#504n принимают значения текущих координат в рабочей координатной системе, без учета корректоров инструментов.
Значения этих переменных учитывают наличие операций зеркалирования, масштабирования и установки локальных координат по G52.
Рабочая координатная система определяется заданием одной из функций G54-G59
из 9-ой группы G-функций.
Значение этих переменных вычисляются по формуле:
#504n = Kмаш - Ксмещ Где:
Kмаш - машинная координата по оси
Ксмещ - заданное смещение по оси в текущей координатной системе (G54-G59)
Соответствие между осью и номером переменной приведено в таблице ниже.
Ось |
Переменная |
X |
#5041 |
Y |
#5042 |
Z |
#5043 |
U |
#5044 |
V |
#5045 |
W |
#5046 |
A |
#5047 |
B |
#5048 |
C |
#5049 |
10.7.10 Координата контакта с измерительным щупом #5061-#506n
Системные переменные #5061-#506n принимают значения координат, в которых сработал измерительный щуп, при движении по функции GКоординаты передаются с учетом смещений рабочей координатной системы, но без учета корректоров инструментов.
Соответствие между осью и номером переменной приведено в таблице ниже
Ось |
Переменная |
X |
#5061 |
Y |
#5062 |
Z |
#5063 |
U |
#5064 |
V |
#5065 |
W |
#5066 |
A |
#5067 |
B |
#5068 |
C |
#5069 |
10.7.11 Признак события - контакт с измерительным щупом #5070
Системная переменная #5070 принимает значение 1, если во время движения по функции G31 произошло событие срабатывания измерительного щупа.
10.7.12 Признак активности измерительного щупа в шпинделе #5071
Системная переменная #5071 принимает значение 1, если в УП была задана вспомогательная функция M51 (активизировать измерительный щуп в шпинделе) и измерительный щуп в рабочем состоянии. Эта переменная принимает значение 0, если была задана функция M50 (де активизировать измерительный щуп), или при потере работоспособности щупа.
10.7.13 Признак активности измерительного щупа на столе #5072
Системная переменная #5072 принимает значение 1, если в УП была задана вспомогательная функция M52 (активизировать измерительный щуп на столе) и измерительный щуп в рабочем состоянии. Эта переменная принимает значение 0, если была задана функция M50 (дезактивировать измерительный щуп) или при потере работоспособности щупа.
10.7.14 Значения корректора радиуса текущего инструмента #5080
Системная переменная #5080 принимает значение корректора радиуса текущего инструмента.
10.7.15 Значения корректоров текущего инструмента #5081-#508n
Системные переменные #5081- #508n принимают значения величин корректоров текущего инструмента.
Соответствие между осью и номером переменной приведено в таблице ниже.
Ось |
Переменная |
X |
#5081 |
Y |
#5082 |
Z |
#5083 |
U |
#5084 |
V |
#5085 |
W |
#5086 |
10.7.16 Значения корректора износа радиуса текущего инструмента
#5090
Системная переменная #5090 принимает значение корректора износа радиуса текущего инструмента.
10.7.17 Значения корректоров износа текущего инструмента #5091-
#509n
Системные переменные #5091- #509n принимают значения величин корректоров текущего инструмента.
Соответствие между осью и номером переменной приведено в таблице ниже.
Ось |
Переменная |
X |
#5091 |
Y |
#5092 |
Z |
#5093 |
10.7.18 Смещения текущей координатной системы #5201-#520n
Системные переменные #5201-#520n принимают значения смещений текущей рабочей координатной системы (G54-G59).
В УП можно изменить значения рабочих координатных систем с помощью присвоения переменным #5201-#520n новых значений.
Примечание
Когда выполняется операция присвоения этим переменным, СЧПУ прекращает выполнение УП, пересчитывает значения передаваемых координат с учетом новых значений и затем продолжает выполнение кадров уже с новыми значениями координат.
Соответствие между осью и номером переменной приведено в таблице ниже.
Ось |
Переменная |
X |
#5201 |
Y |
#5202 |
Z |
#5203 |
U |
#5204 |
V |
#5205 |
W |
#5206 |
A |
#5207 |
B |
#5208 |
C |
#5209 |
10.7.19 Смещения координатной системы G54 #5221-#522n
Имеют те же функции, что и в разделе 4.7.18, но для координатной системы G54.
10.7.20 Смещения координатной системы G55 #5241-#524n
Имеют те же функции, что и в разделе 4.7.18, но для координатной системы G55.
10.7.21 Смещения координатной системы G56 #5261-#526n
Имеют те же функции, что и в разделе 4.7.18, но для координатной системы G56.
10.7.22 Смещения координатной системы G57 #5281-#528n
Имеют те же функции, что и в разделе 4.7.18, но для координатной системы G57.
10.7.23 Смещения координатной системы G58 #5301-#530n
Имеют те же функции, что и в разделе 4.7.18, но для координатной системы G58.
10.7.24 Смещения координатной системы G59 #5321-#532n
Имеют те же функции, что и в разделе 4.7.18, но для координатной системы G59.
10.8 Форматированный вывод
Форматированный вывод предоставляет возможность записи информации в текстовый файл из УП.
При помощи форматированного вывода можно из УП ( во время ее выполнения) создавать отчетный файл, в который можно записать информацию о ходе выполнения УП (координаты точек измерений и разную вспомогательную информацию).
Для форматированного вывода используются команды PRINT(), POPEN(),PCLEAR
Команда POPEN открывает или создает файл для записи.
Команда PRINT выполняет запись информации в файл, открытый командой POPEN.
Каждая команда PRINT записывает (добавляет) информацию в конец открытого файла, не удаляя его содержимого
Команды PRINT должны быть заданы в УП после задания команды POPEN.
Команда PCLEAR выполняет удаление содержимого файла (но не самого файла), открытого командой POPEN.
PСLEAR должна быть задана в УП после задания команды POPEN.
Команда POPEN:
Синтаксис команды:
Где:
POPEN (<имя файла>) POPEN ()
<имя файла> - маршрут и имя файла, в который будет выводиться информация.
Если файл с таким именем не существует, то в заданном каталоге создается файл с этим именем.
Если параметр <имя файла> не задан, то и в каталоге открывается файл с именем, определяемый системным параметром ProbeFileName системного файла Profile.Cnc.
POPEN должен быть задан в УП до задания команды PRINT
Если POPEN задан несколько раз с разными именами файлов, то активным остается последний заданный файл.
Пример:
; Подпрограмма печати
POPEN ()
.
.
PRINT ( )
PRINT (Какой-то текст и переменные) PRINT (Какой-то текст и переменные)
.
.
M17
Команда PCLEAR
Синтаксис команды: PCLEAR
Команда PCLEAR задается без круглых скобок, в отличие от команд POPEN и
PRINT.
Его применяют, если необходимо удалить содержимое, открытого командой
POPEN, файла.
Пример:
POPEN() PCLEAR
Команда PRINT
Синтаксис команды:
PRINT ( <текст>| <форматированная переменная> …| @DATE | @TIME)
Где:
? <текст> - текст, состоящий из любых символов кроме символа @;
? Знак “|” в синтаксисе означает, что можно задать, или <текст>, или
<форматированная переменная> ;
? Знак “…” означает, что параметры <текст> и <форматированная переменная> могут повторяться много раз;
? Параметр @DATE выводит в файл текущую дату в одном из двух числовых форматов:
либо DD.MM.YY – дата, месяц, год – европейский стиль, либо MM.DD.YY – месяц, дата, год – американский стиль Тип формата вывода даты определяется системными установками Windows;
? Параметр @TIME выводит в файл текущее время в формате HH:MM:SS, где
HH:MM:SS – время в часах, минутах, секундах.
Форматированная переменная имеет следующий формат:
#<число> ( <ширина>[<точка><точность>])
Где:
? <число> - произвольный номер разрешенных локальных или глобальных переменных;
? <ширина> - общее количество символов для вывода значения переменной, включая знак минуса числа, десятичную точку и знаки после десятичной точки;
Если число подлежащих выводу символов меньше, чем указано, то слева или справа добавляются пробелы для достижения указанного значения. Если перед числом стоит нуль, то вместо пробелов добавляются нули. Если заданная ширина недостаточна, чтобы вместить все символы для вывода целого числа, то, для нормального отображения числа, ширина числа увеличивается;
? <точка> - символ десятичной точки “.”
? <точность> - количество символов после десятичной точки. Если параметр
<точность> пропущен или задан 0 , то десятичная точка и дробная часть числа не выводятся.
Квадратные скобки показывают, что лексемы <точка> и <точность>, являются необязательными для задания.
Примечание:
Если в команде PRINT не задан ни один параметр, то в файл записывается символ перевода строки.
Если выводимая переменная имеет значение “неопределенно”, то выводится значение “0”.
Примеры:
Задано:
#15 = 6.79
#25 = 7.9
#256 = -5.78
После команды:
PRINT(A=#15(4.2), X=#25(08.3) и переменная #256=#256(6.2) -- дата: @DATE)
В файл будет выведено:
A=6.79, X= 0007.900 и переменная #256= -5.78 -- дата: 21.09.01
Задано:
#9 = 50
#24 = -0.125
#25 = 1
После команды:
PRINT (G1 X#24(08.4) Y-#25(08.4) F#9(3))
В файл будет выведено:
G1 X-00.1250 Y-01.0000 F 50
Задано:
#500 = 100
#501 = #0
После команды:
PRINT (Это часть #501 из #500(3))
В файл будет выведено:
Это часть 0 из 100.
10.9 Выражения
В параметрических программах, вычисление выражений используется в операциях присвоения и операциях переходов.
В этой главе объясняется, что такое выражение, как оно формируется и как используется в программе.
Выражение состоит из трех элементов: операнды, операторы и круглые скобки. Операнд – это переменная или литеральное число.
Переменная – локальная, общая или системная переменная.
Литеральные числа - константы.
Оператор – это функция, которая использует операнды, и возвращает результирующее значение.
Операторами являются простые символы, такие как “+” и “/” или функции типа
SIN() или LOG().
Операторами могут быть условные операторы, такие как “=” или “>”.
Примечание:
Выражения вычисляются слева направо. При вычислении выражения, операторы выполняются, либо сразу, либо в порядке уменьшения приоритета операций.
Пример:
В следующем выражении,
#5 = 4+5*9
переменной #5 будет присвоено значение 49, потому что операция умножения имеет больший приоритет, чем сложение, и сначала выполняется эта операция.
Круглые скобки, символы “(“ и “)”, могут менять порядок выполнения операций, так как сначала выполняются операторы, заданные в скобках, затем остальные операторы.
Следующая таблица определяет приоритетность выполнения операторов в выражении. Чем больше значение “Приоритет ”, тем больше приоритет операции.
Символ |
Значение |
Приоритет |
= |
Равно (оператор условия) |
1 |
<> |
Не равно (оператор условия) |
1 |
> |
Больше (оператор условия) |
1 |
>= |
Больше или равно (оператор условия) |
1 |
< |
Меньше (оператор условия) |
1 |
<= |
Меньше или равно (оператор условия) |
1 |
+ |
Сложение |
2 |
- |
Вычитание |
2 |
| |
Логическое ИЛИ |
2 |
& |
Логическое И |
2 |
* |
Умножение |
3 |
/ |
Деление |
3 |
% |
Остаток от деления |
3 |
+ |
Унарный плюс |
6 |
- |
Унарный минус |
6 |
POPEN |
Открытие файла вывода |
7 |
|
Вывод в файл |
7 |
#( |
Косвенная адресация |
7 |
ABS |
Абсолютное значение |
7 |
ACOS |
Арккосинус |
7 |
ASIN |
Арксинус |
7 |
ATAN |
Арктангенс |
7 |
COS |
Косинус |
7 |
EXP |
Экспонента |
7 |
FIX |
Выделение целой части числа |
7 |
FUP |
Округление до целого в большую сторону |
7 |
LN |
Натуральный логарифм |
7 |
ROUND |
Округление числа |
7 |
SIN |
Синус |
7 |
SQRT |
Квадратный корень |
7 |
TAN |
Тангенс |
7 |
В тригонометрических функциях SIN, COS, TAN аргументы задаются в градусах. Для функций ATAN, ASIN, ACOS результаты возвращаются в градусах
Примеры выражений:
#4 |
Простое выражение; |
3.14159 |
Литеральная константа; |
#4/2.5 |
Сложное выражение; |
(#1+#5)/3 |
Сложное выражение с измененным порядком выполнения операций; |
(#6<>#8) |
Логическое условие; |
SIN(#5) / COS(#7) |
Применение функций в выражении. |
При обсуждении синтаксиса параметрического программирования, понятие
“выражение”, подобно приведенным выше, в тексте будет задаваться в виде -
<выраж.>.
В параметрическом программировании выражение используется в следующих четырех синтаксических формах:
· Предложение присвоения;
· Адресное слово;
· Условное выражение;
· Переход.
10.9.1 Предложение присвоения
Предложение присвоения используется для изменения значения переменной, присвоения ей нового значения. Оно может иметь следующие формы:
? #<целое> = <выраж> ; прямое присвоение;
? #(<выраж>) = <выраж> ; косвенное присвоение.
Прямое присвоение меняет значение переменной, которое явно задано.
Пример:
#5 =12.1
#3000=200
Косвенное присвоение меняет значение переменной, которое вычисляется в результате вычисления выражения.
Пример:
#5 =12
#(#5) = 10 ; Присвоить переменной #12 значение равное 10
#(#5+1)= #0 ; Присвоить переменной #13 значение “неопределенно”
10.9.2 Адресное слово
Адресное слово с применением выражения, можно задавать в следующих формах:
? x<литерал>
? x(<выраж>)
? x–(<выраж>)
Где:
< литерал > - это литеральные числа - константы, например 1.0, 5, 3.567;
x - это адресное слово, задаваемое буквой латинского алфавита от A
до Z.
Примечание
Если после x задан <литерал>, x может быть любой буквой алвавита A-Z.
Переменные (в качестве значений адресных слов)
Если после x задано <выраж>, можно применить буквы от А до Z, за исключением адресных слов D,E,G,H,M,L,N,O,P,T
Пример:
#1=#0
#2=3.2
G0 X#1 Y#2 ; то же, что и G0 Y3.2
10.9.3 Условное выражение
Условное выражение задается при помощи следующих операторов условия:
= |
Равно |
<> |
Не равно |
> |
Больше |
>= |
Больше или равно |
< |
Меньше |
<= |
Меньше или равно |
Условное выражение имеет следующий формат: (<выраж>)
или
(<выраж> <условие> <выраж>)
Где:
<условие> - это один из операторов условия приведенных выше.
Эти операторы работают с двумя операндами, и в результате возвращают либо значение 1.0, либо 0.0.
Если выражение условия ИСТИННО, то возвращается 1.0 , если выражение условия ЛОЖНО, возвращается значение 0.0.
10.9.4 Переход
Параметрическое программирование позволяет управлять последовательностью выполнения кадров программы. Для управления этой последовательностью используются следующие программные конструкции:
Безусловный переход |
E |
Условный переход |
IF |
Останов или прерывание |
#3006= n ; останов выполнение УП #3000= n ; аварийное прерывание выполнения УП |
При составлении УП, кадры можно отмечать с помощью адресного словаОтмеченные кадры можно использовать при выполнении переходов на них с помощью E или IF конструкций. Номера отмеченных кадров не должны повторяться.
Переходы могут быть двух типов – условные и безусловные.
10.9.4.1 Безусловный переход
Безусловный переход задается при помощи адресного слова E
При выполнении УП в кадре, где запрограммирована Exxx, выполняется переход на кадр c номером Nxxx.
Формат:
Exxx
Где:
xxx – любое положительное число указывающее номер кадра, который
должен выполняться после текущего кадра
Пример:
N1 G54G90
. . .
E5 ; выполняется переход вперед на кадр N5 X0Y0
. . .
N5 G1 X40 F100
. . .
E5 ; выполняется переход назад на кадр N5.
Примечание:
Если E задан не отдельным кадром, а задан после какого-то адресного слова, то следует после числа обязательно задать пробел, иначе СЧПУ воспримет E как показатель числа 10 для этого слова и использует его для умножения.
При загрузке УП в буфер отработки, если в УП не найден какой-либо кадр N для перехода E, СЧПУ выдаст аварийное сообщение.
Для удобства программирования УП, можно в файле макроопределений задать определение (см. Раздел 10.10 Макроопределения), и использовать его в тексте УП.
#define GOTO E
Например, учитывая вышеприведенное макроопределение, можно написать: GOTO5 ; выполняется переход вперед на кадр N5
X0Y0
. . .
N5 G1 X40 F100
. . .
GOTO5 ; выполняется переход назад на кадр N5.
10.9.4.2 Условный переход
Кадр с условием позволяет выполнять в УП, или условный переход, или кадр УП. Кадр с условием задается при помощи слова IF, и имеет следующие форматы:
IF (<выраж><условие><выраж>) <кадр УП> Exxx (<выраж><условие><выраж>)
Где:
· <выраж><условие><выраж> - условное выражение (см. Раздел 8.9.3);
· Exxx - указывет на кадр xxx, на который должен быть выполнен переход;
· <кадр УП> - кадр УП, где могут быть любые команды в кадре - например движения , присвоения, безусловного перехода - Exxx.
Если значение условного выражения ЛОЖНО, то выполняется следующий кадр УП.
Если значение условного выражения ИСТИННО то:
1 для формата задания со словом IF - выполняется предложение, заданное в этом кадре , <кадр УП>, и затем следующий кадр. Если <кадр УП> является командой безусловного перехода, то выполняется команда перехода, и следующий кадр не выполняется;
2 для формата задания с Exxx - выполняется переход на кадр Nxxx.
Пример- переход по условию:
IF (#24 = #0 ) E99 ; переход на кадр N99, так как не задан аргумент для X E12 (#5>3) ; переход на кадр N12, если переменная #5 больше трех
Пример - создание цикла в УП:
N10 #5 = 0
N20 #5 = #5+1
...
...
N100 IF (#5 < 10) E20 ; переход на кадр N20, пока переменная #5 меньше 10
Пример – присвоение:
IF (#500 <> 0) #500=0
Для удобства составления УП, можно задать определение в файле макроопределений:
#define GOTO E
и в тексте УП использовать GOTO вместо E.
Пример- переход по условию c использованием GOTO:
IF (#24 = #0 ) GOTO 99 ; переход на кадр N99, так как не задан аргумент для X.
Пример - создание цикла в УП с использованием GOTO:
N10 #5 = 0
N20 #5 = #5+1
...
...
N100 IF (#5 < 10) GOTO 20 ; переход на кадр N20, пока переменная #5 меньше 10.
10.10 Макроопределения
При составлении УП, в тексте программ можно использовать макроопределения, которые заданы в специальном файле определений.
Макроопределения позволяют заменить одну последовательность символов на другую, которая задана в этом файле.
Применение макроопределений создает более удобный для чтения и понимания текст УП.
Формат задания макроопределения:
#define <слово1> <слово2>
Где:
<слово1> - набор латинских букв, цифр и символов без пробелов и не больше 32;
<слово2> - любое допустимое адресное слово или переменная.
Программа MSHAK-CNC при загрузке УП, обнаружит символы <слово1>, выполнит поиск в файле макроопределений соответствующего определения, и заменит его на <cлово2>.
Пример- предположим, что есть программа
#1=5
#2=10
G1 F1000 X#1 Y#2 IF (#3 = #0) E 45
Если мы запишем в файл макроопределений следующие строки,
#define A_VAR #1
#define B_VAR #2
#define C_VAR #3
#define GOTO E
то ту же программу можно написать следующим образом. A_VAR=5
B_VAR=10
G1 F1000 X A_VAR Y B_VAR IF (C_VAR = #0) GOTO 45
В вышеприведенном примере, программа MSHAK-CNC, обнаружив слово A_VAR в тексте УП, выполнит его поиск в файле макроопределений, и заменит это слово на текст #1.
Точно также, для слова GOTO, обнаружив его, СЧПУ заменит его на слово E.
10.11 Организация библиотеки внешних подпрограмм (циклов).
Механизм библиотеки внешних подпрограмм использует подпрограммы с параметрами для организации режима интерактивного программирования СЧПУ, что позволяет:
? выполнять вызов внешних подпрограмм, вместо команды LP, с помощью подготовительной функции G;
? создавать библиотеку подпрограмм: выполнять группировку подпрограмм в виде иерархического списка для быстрого поиска и нахождения нужной
подпрограммы;
? выполнять визуализацию подпрограммы с помощью графического рисунка на экране, и выполнять интерактивный ввод параметров подпрограмм, с одновременным контролем правильности ввода данных.
Все внешние подпрограммы должны находится в каталоге, определяемом параметром SubProgLib файла Profile.cnc.
Для обеспечения функциональности интерактивного программирования циклов в текстовом редакторе программы MSHAK-CNC, организованы два режима работы:
- просмотр списка реализованных циклов в библиотеке и выбора нужного цикла;
- ввод значений параметров для выбранного цикла.
10.11.1 Вызов внешних подпрограмм с помощью подготовительной функции G.
Для вызова внешней подпрограммы с помощью функции GXXX необходимо в файле Profile.CNC в секции GCode добавить запись GXXX=2,XXX, которая означает, что реализация функции GXXX происходит с помощью внешней подпрограммы.
Номеру G функции должен соответствовать файл с именем PXXX.NC, в котором в виде УП реализована данная функция.
10.11.2 Создание библиотеки подпрограмм
Библиотеки подпрограмм создаются путем объединения подпрограмм в функциональные группы, с целью увеличения удобств поиска и доступа к ним.
Эти группы в виде двухуровневого списка появляться на экране программы
MSHAK-CNC, в режиме интерактивного программирования.
Внешние подпрограммы поддерживаются с помощью двух системных файлов Cycles.dat и CYC_RUS.Dat (CYC_ENG.Dat), которые находятся в каталоге, определяемом параметром SubProgLib.
Структура файла Cycles.dat:
[COMMON]
SectionNumber = <количество функциональных групп>
[sec1] ; Первая функциональная группа
CyclesNumber = <Количество циклов в первой функциональной группе>
[sec1_cycle1] ; Описание первого цикла
Cycle = <Идентификатор цикла>
ParNumber = < Количество параметров в первом цикле>
par1 = <Описание 1-го параметра >
par2 = <Описание 2-го параметра >
. . . . . . .
parN = <Описание N-го параметра >
. . . . . . .
. . . . . . .
[sec1_cycleN] ; Описание N-ого цикла
Cycle = <Идентификатор цикла>
ParNumber = < Количество параметров в N-ом цикле>
par1 = <Описание 1-го параметра >
par2 = <Описание 2-го параметра >
….
parM = <Описание M-го параметра >
Где:
SectionNumber - Количество функциональных групп
Sec1, Sec2, …SecN - Функциональные группы
CyclesNumber - Количество циклов в функциональной группе
Cycle - Идентификатор цикла - имеет следующий формат:
G< номер подпрограммы >
Где:
< номер подпрограммы> - Это трехзначное целое число, которое является номером G функции при вызове внешней подпрограммы из УП, а также частью имени файла внешней подпрограммы P< номер подпрограммы>.NC, который хранится в каталоге, определяемый параметром SubProgLib файла Profile.cnc.
ParNumber - Количество параметров в цикле
Par1 - Описание параметра имеет следующий формат:
<Символ (Адресное слово)>, [P1], [P2], [P3], [P4], [P5], [P6]
Где:
<Символ (Адресное слово)> - идентификатор (название) параметра
[P1] – значение параметра по умолчанию. [P2] – минимальное значение параметра. [P3] – максимальное значение параметра.
[P4] – если значение =1, то ввод данного параметра обязателен, если значение =0, то ввод данного параметра необязателен.
[P5] – значение позиции названия параметра на графическом рисунке по горизонтали.
[P6] - значение позиции названия параметра на графическом рисунке по вертикали.
Примечание:
Файлы Р<номер подпрограммы>.NC должны находиться в директории, определяемом параметром SubProgLib.
Структура файла Cycles.dat:
[sec1]
SectionName = < Назначение первой функциональной группы >
[sec1_cycle1]
CycleName = < Назначение первого цикла первой функциональной группы>
Адресное слово первого параметра = Назначение первого параметра
. . . . . .
Адресное слово N - го параметра = Назначение N-ого параметра
[sec1_cycleM]
CycleName - Назначение M-го цикла первой функциональной группы
Адресное слово первого параметра = Назначение первого параметра
. . . . . .
Адресное слово N - го параметра = Назначение N-ого параметра
. . . . . .
. . . . . .
[secN]
SectionName - Назначение N-ой функциональной группы
[secN_cycle1]
CycleName - Назначение первого цикла N-ой функциональной группы
Адресное слово первого параметра = Назначение первого параметра
. . . . . .
Адресное слово N - го параметра = Назначение N-ого параметра
[secN_cycleM]
CycleName - Назначение M-го цикла N-ой функциональной группы
Адресное слово первого параметра = Назначение первого параметра
. . . . . .
Адресное слово N - го параметра = Назначение N-ого параметра
Фактически, файл CYC_RUS.Dat (CYC_ENG.Dat) представляет собой назначение (имена) функциональных групп, назначение отдельных циклов и назначение параметров этих циклов.
10.11.3 Визуализация цикла и интерактивный ввод параметров подпрограмм
В поддержку режима интерактивного программирования при разработке внешней подпрограммы создается файл графического рисунка подпрограммы. Этот файл имеет название
Р<номер подпрограммы>.jpg
Где: < номер подпрограммы> - Это трехзначное целое число, которое является номером G функции при вызове внешней подпрограммы из УП и определяется в файле Cycles.dat в разделе описание цикла в переменном Cycle =
<Идентификатор цикла>.
Файл Р<номер подпрограммы>. jpg должен находится в директории, определяемый параметром SubProgLib файла Profile.cnc.
На графическом рисунке, для каждого параметра цикла создаются метки. Метка представляет собой символ соответствующей названию параметра.
Местоположение метки на рисунке (координаты по горизонтали и по вертикали) задается в описании параметра в файле Cycles.dat.
Для изменения положения метки, прямо на рисунке подпрограммы необходимо: курсор мыши переместить на нужную метку, нажимая клавишу “Shift”,
нажать левую кнопку мыши, и оставляя ее нажатой (“Shift” можно отпускать), переместить метку на экране в нужное положение.
ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ (М - КОДЫ)
СИСТЕМЫ КООРДИНАТ И РЕФЕРЕНТНАЯ ТОЧКА
КОРРЕКЦИЯ НА РАДИУС ИНСТРУМЕНТА
КОРРЕКЦИЯ НА ПОЛОЖЕНИЕ ИНСТРУМЕНТА
ПОСТОЯННЫЕ ЦИКЛЫ СВЕРЛЕНИЯ И РАСТОЧКИ.
ПРИЛОЖЕНИЕ 1 - ПРИМЕР ПРИМЕНЕНИЯ ПАРАМЕТРИЧЕСКОЙ ПОДПРОГРАММЫ