Haas Automation Руководство оператора токарного станка (2015 год) 96-RU8900 - часть 9

 

  Главная      Книги - Разные     Haas Automation Руководство оператора токарного станка (2015 год) 96-RU8900

 

поиск по сайту            правообладателям  

 

   

 

   

 

содержание      ..     7      8      9      10     ..

 

 

 

Haas Automation Руководство оператора токарного станка (2015 год) 96-RU8900 - часть 9

 

 

Подробнее о системных переменных
ПЕРЕМЕННЫЕ
ИСПОЛЬЗОВАНИЕ
Ɣ
Ɣ
Ɣ
#15781 - #15786
G154 P90 дополнительная коррекция детали
Ɣ
Ɣ
Ɣ
#15881 - #15886
G154 P95 дополнительная коррекция детали
#15901 - #15906
G154 P96 дополнительная коррекция детали
#15921 - #15926
G154 P97 дополнительная коррекция детали
#15941 - #15946
G154 P98 дополнительная коррекция детали
#15961-#15966
G154 P99 дополнительная коррекция детали
6.2.3
Подробнее о системных переменных
Системные переменные связаны с определенными функциями. Подробное описание
этих функций приводится ниже.
Переменные с #550 по #580
Эти переменные хранят данные калибровки измерительной головки. Если эти
переменные перезаписаны, потребуется снова калибровать измерительную головку.
1-разрядные дискретные входы
Входы, заданные как резервные, можно подключать к внешним устройствам.
1-разрядные дискретные выходы
Блок управления HAAS способен контролировать до 56 дискретных входов. Однако
некоторые из этих выходных сигналов зарезервированы для использования
системой управления Haas.
224
Программирование опций
Максимальные нагрузки оси
Эти переменные содержат максимальную нагрузку оси, под которой находилась ось
с момента последнего включения станка или с момента удаления значения
макропеременной. Максимальная нагрузка оси - это самая большая нагрузка (100.0
= 100%), под которой находилась ось, а не нагрузка оси на момент чтения
переменной.
#1064 = ось X
#1264 = ось C
#1065 = ось Y
#1265 = ось U
#1066 = ось Z
#1266 = ось V
#1067 = ось A
#1267 = ось W
#1068 = ось B
#1268 = ось T
Коррекция на инструмент
Используйте следующие макропеременные для чтения или задания следующих
значений геометрии, сдвига или коррекции на износ:
#2001-#2050
Коррекция смещения/геометрии по оси Х
#2051-#2100
Коррекция смещения/геометрии по оси Y
#2101-#2150
Коррекция смещения/геометрии по оси Z
#2201-#2250
Геометрия радиуса режущей кромки
инструмента
#2301-#2350
Направление вершины инструмента
#2701-#2750
Износ инструмента по оси X
#2751-#2800
Износ инструмента по оси Y
#2801-#2850
Износ инструмента по оси Z
#2901-#2950
Износ радиуса режущей кромки
инструмента
225
Подробнее о системных переменных
Программируемые сообщения
#3000 Сигналы об ошибке можно программировать. Программируемый сигнал об
ошибке будет действовать как встроенные сигналы об ошибке. Сигнал об ошибке
выдается путем присвоения макропеременной #3000 числового значения от 1
до 999.
#3000= 15 (СООБЩЕНИЕ, ПОМЕЩАЕМОЕ В СПИСОК ОШИБОК) ;
;
Если это сделать в внизу экрана мигает индикация Сигнал об ошибке, а в список
сигналов об ошибке заносится текст в следующем комментарии. К номеру сигнала об
ошибке (например, 15) прибавляется 1000, и эта сумма используется в качестве
номера. При выдаче такого сигнала об ошибке все перемещения останавливаются,
и для продолжения требуется сброс программы. Номера программируемых сигналов
об ошибке всегда находятся в диапазоне от 1000 до 1999. Первые 34 символа
комментария используются в качестве сообщения об ошибке.
Таймеры
Можно установить два таймера на определенное значение путем присвоения
числового значения соответствующей переменной. Программа затем может
выполнить чтение этой переменной и определить время, прошедшее с момента
запуска таймера. Таймеры можно использовать для имитации циклов задержки,
определения времени обработки деталей или в других случаях, когда необходимо
поведение, зависящее от времени.
#3001 Таймер миллисекунд - Таймер миллисекунд обновляется каждые 20
миллисекунд, таким образом события можно хронометрировать с точностью
только 20 миллисекунд. При включении питания показания миллисекундомера
сбрасываются. Предел работы таймера
-
497 суток. Целое число,
возвращаемое при обращении к
#3001, представляет собой
количество миллисекунд.
#3002 Часовой таймер - Часовой таймер похож на таймер миллисекунд, с той
разницей, что число, возвращаемое при обращении к
#3002, означает
количество часов. Часовый таймер и таймер миллисекунд независимы друг от
друга и могут настраиваться отдельно.
Ручные коррекции системы
Переменная #3003 отменяет функцию одиночного блока в коде G. Если #3003 имеет
значение 1, система управления исполняет все команды кода G непрерывно,
несмотря на то, что функция одиночного блока ВКЛЮЧЕНА. Если #3003 имеет
значение «ноль», функция одиночного блока действует как обычно. Необходимо
нажимать [CYCLE START] (запуск цикла) для исполнения каждой строки программы
в режиме одиночного блока.
#3003=1 ;
G54 G00 X0 Z0 ;
226
Программирование опций
G81 R0.2 Z-0.1 F.002 L0 ;
S2000 M03 ;
#3003=0 ;
T02 M06 ;
Q.05 G83 R0.2 Z-1. F.001 L0 ;
X0. Z0. ;
;
Переменная #3004
Переменная #3004 отменяет некоторые функции системы управления во время
работы.
Первый бит выключает [FEED HOLD] (остановка подачи). Если переменная #3004
установлена на
1,
[FEED HOLD] (остановка подачи) выключается для блоков
программы, которые идут после нее. Установите
#3004 на 0 для обратного
включения [FEED HOLD] (остановка подачи). Например:
% ;
(Текст программы для подвода -
#3006 Программируемый останов
Можно добавить остановки в программу, которые действуют как M00 - Система
управления останавливается и ожидает нажатия [CYCLE START] (запуск цикла),
затем программа продолжает блок после #3006. В приводимом примере система
управления отображает первые
15 символов комментария в нижней левой
части экрана.
#3006=1 (комментарий располагается здесь) ;
;
#4001-#4021 Групповые коды последнего блока
(модальные)
Группы кодов G позволяют системе управления станка обрабатывать коды более
эффективно. Коды G с близкими функциями обычно объединяются в одну группу.
Например, G90 и G91 находятся в группе 3. Макропеременные с #4001 по #4021
хранят последний код или код G по умолчанию для любой из 21 групп.
Когда макропрограмма выполняет чтение группового кода, программа может
изменить поведение кода G. Если #4003 содержит 91, макропрограмма может
определить, что все перемещения должны относительными, а не абсолютными.
Нулевой группе не соответствует переменная, G-коды нулевой группы
являются немодальными.
227
Подробнее о системных переменных
#4101-#4126 Адресные данные последнего блока
(модальные)
Адресные коды от А до Z (исключая G) рассматриваются как модальные значения.
Данные, представленные в последней строке программы, интерпретируемой
процессом опережающего просмотра, содержатся в переменных с #4101 по #4126.
Числовое сопоставление номеров переменных с буквенными адресами
соответствует сопоставлению под буквенными адресами. Например, значение ранее
интерпретированного D-адреса находится в
#4107, а последнее
интерпретированное значение I - это #4104. При задании псевдонима макроса для
M-кода нельзя передавать переменные в макрос с помощью переменных #1 - #33;
вместо этого в макросе необходимо использовать значения из #4101 - #4126.
#5001-#5006 Последнее заданное положение
Через переменные #5001 - #5006, X, Y, Z, A и B, соответственно, можно получить
доступ к последней запрограммированной точке последнего блока перемещения.
Значения даются в текущей системе координат детали, и их можно использовать,
когда станок совершает перемещения.
Переменные положения оси
#5021 ось X
#5022 ось Z
#5023 ось Y
#5024 ось A
#5025 ось B
#5026 ось C
#5021-#5026 Текущее положение в координатах станка
Чтобы получить текущие координаты осей станка, вызывайте макропеременные с
#5021 по #5025, соответствующие осям X, Z, A и B, соответственно.
ПРИМЕЧАНИЕ: Чтение значений НЕВОЗМОЖНО, пока станок в движении.
К значению #5022 (Z) применена коррекция на длину инструмента.
228
Программирование опций
#5041-#5046 Текущее положение в координатах детали
Чтобы получить текущие координаты осей станка, вызывайте макропеременные с
#5041 по #5046, соответствующие осям X, Z, Y, A, B и C, соответственно.
ПРИМЕЧАНИЕ: Эти значения нельзя прочитать, когда станок находится в
движении.
К значению #5042 (Z) применена коррекция на длину инструмента.
#5061-#5069 Текущая позиция сигнала пропуска
Макропеременные с #5061 по #5069 соответствующие X, Z, Y, A, B, C, U, V и W,
соответственно, выдают координаты осей, где произошел последний сигнал
пропуска. Значения даются в текущей системе координат детали и могут
использоваться, когда станок находится в движении.
К значению #5062 (Z) применена коррекция на длину инструмента.
#5081-#5086 Коррекция на длину инструмента
Макропеременные #5081 - #5086 выдают текущую общую коррекцию на длину
инструмента по оси X, Z, Y, A, B или C, соответственно. Это включает коррекцию на
длину инструмента, к которой обращается текущее значение, заданное в T плюс
значение износа.
#6996-#6999 Доступ к параметрам с помощью
макропеременных
Эти макропеременные могут осуществлять доступ к параметрам 1 - 1000 и любому
из битов параметра, следующим образом:
#6996: Номер параметра
#6997: Номер бита (необязательный)
#6998: Содержит значение номера параметра, заданного в переменной #6996
#6999: Содержит значение бита (0 или 1) бита параметра, заданного в переменной
#6997.
ПРИМЕЧАНИЕ: Переменные #6998 и #6999 - только для чтения.
229
Подробнее о системных переменных
Использование
Для доступа к значению параметра, скопируйте номер этого параметра в
переменную #6996. Значение этого параметра доступно в макропеременной #6998,
как показано ниже:
% ;
#6996=601 (Задать параметр 601) ;
#100=#6998 (Копировать значение параметра 601 в) ;
(переменную #100) ;
% ;
Для доступа к конкретному биту параметра копируйте номер параметра в
переменную 6996, а номер бита - в макропеременную 6997. Значение бита этого
параметра доступно в макропеременной 6999, как показано ниже:
% ;
#6996=57 (Задать параметр 57) ;
#6997=0 (Задать нулевой бит) ;
#100=#6999 (Копировать параметр 57 бит 0 в) ;
(переменную #100) ;
% ;
ПРИМЕЧАНИЕ: Биты параметра имеют номера от 0 до 31. 32-битные
параметры выводятся на экран с форматированием, бит 0 -
вверху слева, бит 31 - внизу справа.
Переменные устройства автоматической смены
спутников
Состояние спутников из устройства автоматической смены спутников проверяется с
помощью следующих переменных:
#7501-#7506
Приоритет спутника
#7601-#7606
Состояние спутника
#7701-#7706
Номера программ обработки детали, назначенных
спутникам
#7801-#7806
Подсчет использования спутника
#3028
Номер спутника, загруженного на приемник
230
Программирование опций
Коррекция детали
Макровыражения могут выполнять чтение и задавать все значения коррекции
детали. Это позволяет задавать координаты приблизительного местоположения или
присваивать координаты значениям, основываясь на результатах положения
сигнала пропуска и расчетах. При чтении любого из значений коррекции очередь
интерпретации опережающего просмотра останавливается, пока этот блок не будет
выполнен.
#5201- #5206
Значения коррекции G52 X, Z, Y, A, B, C
#5221- #5226
G54 ЗНАЧЕНИЯ КОРРЕКЦИИ X, Y, Z, A, B, C
#5241- #5246
G55 ЗНАЧЕНИЯ КОРРЕКЦИИ X, Y, Z, A, B, C
#5261- #5266
G56 ЗНАЧЕНИЯ КОРРЕКЦИИ X, Y, Z, A, B, C
#5281- #5286
G57 ЗНАЧЕНИЯ КОРРЕКЦИИ X, Y, Z, A, B, C
#5301- #5306
G58 ЗНАЧЕНИЯ КОРРЕКЦИИ X, Y, Z, A, B, C
#5321- #5326
G59 ЗНАЧЕНИЯ КОРРЕКЦИИ X, Y, Z, A, B, C
#7001- #7006
G110 (G154 P1) дополнительная коррекция детали
#7021-#7026
G111 (G154 P2) дополнительная коррекция детали
(#14021-#14026)
#7041-#7046
G114 (G154 P3) дополнительная коррекция детали
(#14041-#14046)
#7061-#7066
G115 (G154 P4) дополнительная коррекция детали
(#14061-#14066)
#7081-#7086
G116 (G154 P5) дополнительная коррекция детали
(#14081-#14086)
#7101-#7106
G117 (G154 P6) дополнительная коррекция детали
(#14101-#14106)
#7121-#7126
G118 (G154 P7) дополнительная коррекция детали
(#14121-#14126)
#7141-#7146
G119 (G154 P8) дополнительная коррекция детали
(#14141-#14146)
231
Подробнее о системных переменных
#7161-#7166
G120 (G154 P9) дополнительная коррекция детали
(#14161-#14166)
#7181-#7186
G121 (G154 P10) дополнительная коррекция детали
(#14181-#14186)
#7201-#7206
G122 (G154 P11) дополнительная коррекция детали
(#14201-#14206)
#7221-#7226
G123 (G154 P12) дополнительная коррекция детали
(#14221-#14221)
#7241-#7246
G124 (G154 P13) дополнительная коррекция детали
(#14241-#14246)
#7261-#7266
G125 (G154 P14) дополнительная коррекция детали
(#14261-#14266)
#7281-#7286
G126 (G154 P15) дополнительная коррекция детали
(#14281-#14286)
#7301-#7306
G127 (G154 P16) дополнительная коррекция детали
(#14301-#14306)
#7321-#7326
G128 (G154 P17) дополнительная коррекция детали
(#14321-#14326)
#7341-#7346
G129 (G154 P18) дополнительная коррекция детали
(#14341-#14346)
#7361-#7366
G154 P19 дополнительная коррекция детали
(#14361-#14366)
#7381-#7386
G154 P20 дополнительная коррекция детали
(#14381-#14386)
#8550-#8567 Оснастка
Эти переменные дают информацию об инструменте. Установите переменную #8550
на номер инструмента или номер группы инструмента, затем обращайтесь к данным
для выбранного инструмента/группы инструментов с помощью макросов только для
чтения
#8551-#8567. Если задать номер группы инструментов, выбранный
инструмент - это следующий инструмент в этой группе.
ПРИМЕЧАНИЕ: Макропеременные #1801-#2000 обеспечивают доступ к тем же
данным, что #8550-#8567.
232
Программирование опций
6.2.4
Использование переменных
Обращение ко всем переменным выполняется с помощью символа номера (#), после
которого указывается положительное число: #1, #101, и #501.
Переменные - это десятичные значения, представленные в виде числе с плавающей
точкой. Если переменная ни разу не использовалась, она имеет особое
неопределенное (undefined) значение. Оно указывает на то, что переменная еще
не использовалась. Переменную можно назначить неопределенной (undefined) с
помощью специальной переменной #0. #0 имеет значение «неопределенное» или
0.0, в зависимости от контекста. Косвенные ссылки на переменные можно выполнять
заключением номера переменной в скобки: #[Выражение]
Выражение вычисляется и его результат становится номером переменной.
Например:
#1=3 ;
#[#1]=3.5 + #1 ;
;
Это выражение присваивает переменной #3 значение 6.5.
Переменную можно использовать вместо адреса G-кода, где адрес относится к
буквам A-Z.
В блоке:
N1 G0 X1.0 ;
;
переменным можно присвоить следующие значения:
#7 = 0 ;
#1 = 1.0 ;
;
и заменить блок на:
N1 G#7 X#1 ;
;
Значения в переменных во время выполнения программы используются как
значения адресов.
6.2.5
Подстановка адреса
Обычно для задания управляющих адресов A - Z используется адрес с числом после
него. Например:
G01 X1.5 Z3.7 F.02 ;
;
задаёт адресам G, X, Z и F значения 1, 1.5, 3.7 и 0.02, соответственно, и таким
образом дает указание системе управления перемещаться линейно, G01, в
положение X=1.5 и Z=3.7 со скоростью подачи 0.02 дюйма на оборот. Синтаксис
макропрограммы позволяет заменять значение адреса на любую переменную или
выражение.
233
Подстановка адреса
Предыдущий оператор можно заменить следующим кодом:
% ;
#1=1 ;
#2=0.5 ;
#3=3.7 ;
#4=0.02 ;
G#1 X[#1+#2] Z#3 F#4 ;
% ;
Допустимый синтаксис адресов A - Z (исключая N или O) следующий:
<адрес><-><переменная>
A-#101
<адрес><->[<выражение>]
Z[#5041+3.5]
<адрес><->[<выражение>]
Z-[SIN[#1]]
Если значение переменной не соответствует диапазону адреса, будет выдан
обычный сигнал ошибки управления. Например, следующий текст программы
приводит к сигналу об ошибке из-за недопустимого G-кода, потому что код G143
отсутствует:
% ;
#1= 143 ;
G#1 ;
% ;
Когда переменная или выражение используется в качестве значения адреса, их
значение округляется до наименьшего значимого разряда. Если #1=.123456, то
G01#1 переместит станок в положение ,1235 по оси X. Если система управления
работает в метрическом режиме, станок переместится в положение .123 по оси Х.
Если для замены значения адреса используется неопределенная переменная, эта
адресная ссылка игнорируется. Например:
(#1 - неопределенная переменная) ;
G00 X1.0 Z#1 ;
;
становится
G00 X1.0 (перемещения по оси Z не происходит) ;
;
234
Программирование опций
Макрооператоры
Макрооператоры - это строки кода, позволяющие программисту манипулировать
системой управления, используя характеристики, свойственные любому
стандартному языку программирования. Сюда входят функции, операторы,
условные и арифметические выражения, операторы присваивания и
управляющие операторы.
Функции и операторы используются в выражениях для изменения переменных или
значений. Выражения обязательно содержат операторы, в то время как функции
просто облегчают работу программиста.
Функции
Функции - это встроенные программы, которыми может пользоваться программист.
Все функции имеют следующую форму: <имя_функции> [аргумент], и возвращают
десятичные значения с плавающей точкой. В систему управления HAAS включены
следующие функции:
Функция
Аргумент
Возвращает
Примечания
SIN[ ]
Градусы
Десятичное
Синус
COS[ ]
Градусы
Десятичное
Косинус
TAN[ ]
Градусы
Десятичное
Тангенс
ATAN[ ]
Десятичное
Градусы
Арктангенс То же что и
FANUC ATAN[ ]/[1]
SQRT[ ]
Десятичное
Десятичное
Квадратный корень
ABS[ ]
Десятичное
Десятичное
Модуль числа
ROUND[ ]
Десятичное
Десятичное
Округление десятичной
дроби
FIX[ ]
Десятичное
Целочисленное
Отбрасывание
младших разрядов
ACOS[ ]
Десятичное
Градусы
Арккосинус
ASIN[ ]
Десятичное
Градусы
Арксинус
235
Подстановка адреса
Функция
Аргумент
Возвращает
Примечания
#[ ]
Целочисленное
Целочисленное
Разыменование
переменной
DPRNT[ ]
Текст в кодировке
Внешний вывод
ASCII
Примечания по использованию функций
Функция округления ROUND работает по-разному в зависимости от контекста, в
котором она используется. При использовании в арифметическом выражении любое
число, с дробной частью большей или равной .5 округляется до следующего целого
числа, в остальных случаях дробная часть отсекается от числа.
% ;
#1=1.714 ;
#2=ROUND[#1] (переменной #2 присвоено значение 2.0) ;
#1=3.1416 ;
#2=ROUND[#1] (переменной #2 присвоено значение 3.0) ;
% ;
Если ROUND используется в адресном выражении, результат округляется до
значащего разряда. Для метрических и угловых размеров точность по умолчанию -
три знака. Для дюймовых размеров точность по умолчанию - четыре знака.
% ;
#1= 1.00333 ;
G00 X[ #1 + #1 ] ;
(Ось X стола перемещается к 2.0067) ;
G00 X[ ROUND[ #1 ] + ROUND[ #1 ] ] ;
(Ось X стола перемещается к 2.0066) ;
G00 A[ #1 + #1 ] ;
(Ось вращается к 2.007) ;
G00 A[ ROUND[ #1 ] + ROUND[ #1 ] ] ;
(Ось вращается к 2.006) ;
D[1.67] (Диаметр 2 сделан текущим) ;
% ;
Разница между функциями Fix и Round
% ;
#1=3.54 ;
#2=ROUND[#1] ;
#3=FIX[#1]. % ;
#2 будет установлена на 4. #3 будет установлена на 3.
236
Программирование опций
Операторы
Операторы подразделяются на 3 категории: булевы, арифметические и логические.
Булевы операторы
Булевы операторы всегда дают в результате 1.0 (ИСТИННО) или 0.0 (ЛОЖНО).
Существует шесть булевых операторов. Чаще всего они используются в условных
выражениях, но не ограничиваются ими. Это:
EQ - Равно
NE - Не равно
GT - Больше
LT - Меньше
GE - Больше или равно
LE - Меньше или равно
Ниже приводится четыре примера того, как можно использовать булевы и логические
операторы:
Пример
Пояснения
IF [#1 EQ 0.0] GOTO100 ;
Перейти к блоку 100, если переменная #1 равна
;
0.0.
WHILE [#101 LT 10] DO1 ;
Пока переменная #101 меньше 10, повторять цикл
;
DO1..END1.
#1=[1.0 LT 5.0] ;
Переменной #1 присвоено значение 1.0
;
(ИСТИННО).
IF [#1 AND #2 EQ #3] GOTO1 ;
Если переменная #1 И переменная #2 равны
;
значению в #3, то система управления выполняет
переход в блок 1.
Арифметические операторы
Арифметические операторы состоят из обычных унарных и бинарных операторов.
Они указаны ниже
+
- Унарный плюс
+1,23
-
- Унарный минус
-[COS[30]]
+
- Бинарное сложение
#1=#1+5
237
Подстановка адреса
-
- Бинарное вычитание
#1=#1-1
- Умножение
#1=#2*#3
/
- Деление
#1=#2/4
MOD
- Остаток
#1=27 MOD 20 (#1 содержит 7)
Логические операторы
К логическим операторам относятся операторы, работающие с значениями
двоичных битов. Макропеременные
- это числа с плавающей точкой. При
применении логических операторов к макропеременным используется только целая
часть числа с плавающей точкой. Логические операторы следующие:
OR - Логическое ИЛИ для двух значений
XOR - Исключающее ИЛИ для двух значений
AND - Логическое И для двух значений
Примеры:
% ;
#1=1.0 ;
#2=2.0 ;
#3=#1 OR #2 ;
% ;
Здесь переменная #3 будет иметь значение 3.0 после выполнения операции ИЛИ
(OR).
% ;
#1=5.0 ;
#2=3.0 ;
IF [[#1 GT 3.0] AND [#2 LT 10]] GOTO1 ;
% ;
Здесь система управления перейдет к блоку 1, потому что #1 GT 3.0 дает результат
1.0, а #2 LT
10дает результат 1.0, таким образом, 1.0 AND 1.0 дает 1.0 (ИСТИНА),
значит выполняется команда перехода GOTO.
ПРИМЕЧАНИЕ: Чтобы достичь нужных результатов, будьте очень
осторожны при использовании логических операторов.
238
Программирование опций
Выражения
Выражения определяются как любая последовательность переменных и
операторов, заключенная в квадратные скобки [ и ]. Есть два использования для
выражений: условные выражения или арифметические выражения. Условные
выражения возвращают значения ЛОЖНО (0.0) или ИСТИННО (любое отличное от
нуля). Арифметические выражения определяют значение с помощью
арифметических операторов и функций.
Арифметические выражения
Арифметическим является любое выражение, использующее переменные,
операторы или функции. Арифметическое выражение возвращает некоторое
значение. Обычно арифметические выражения используются в операторах
присваивания, но не ограничиваются ими.
Примеры арифметических выражений:
% ;
#101=#145*#30 ;
#1=#1+1 ;
X[#105+COS[#101]] ;
#[#2000+#13]=0 ;
% ;
Условные выражения
В системе управления Haas все выражения задают условное значение. Это значение
равно либо 0.0 (ЛОЖНО), либо не равно нулю (ИСТИННО). Контекст, в котором
используется выражение, определяет, является ли оно условным. Условные
выражения используются в операторах IF и WHILE, а также в команде M99. Условные
выражения могут использовать булевы операторы для определения ИСТИННОСТИ
или ЛОЖНОСТИ условия.
Условная конструкция M99 используется только в системе управления Haas. Без
макросов M99 в системе управления Haas способна выполнять безусловный переход
к любой строке в текущей подпрограмме, если поместить в эту строку код Р.
Например:
N50 M99 P10 ;
;
выполняет переход на строку N10. Команда не возвращает управление вызывающей
подпрограмме. Если макросы включены, M99 можно использовать с условным
выражением для выполнения условного перехода. Чтобы выполнить переход, если
переменная #100 меньше 10, можно составить строку выше следующим образом:
N50 [#100 LT 10] M99 P10 ;
;
239
Подстановка адреса
В этом случае переход произойдёт, только если #100 будет меньше 10, в противном
случае продолжится обработка следующей строки программы. В вышеприведенном
примере условный оператор M99 можно заменить на
N50 IF [#100 LT 10] GOTO10 ;
;
Операторы присваивания
Операторы присваивания позволяют изменять переменные. Формат оператора
присваивания таков:
<
выражение>
=<
выражение>
;
Выражение слева от знака равенства всегда должно прямо или косвенно указывать
на макропеременную. Эта макропрограмма инициализирует последовательность
переменных до любого значения. В этом примере используется и прямое, и
косвенное присваивание.
% ;
O50001 (ИНИЦИАЛИЗАЦИЯ ПОСЛЕДОВАТЕЛЬНОСТИ ПЕРЕМЕННЫХ) ;
N1 IF [#2 NE #0] GOTO2 (B=базовая переменная) ;
#3000=1 (Базовая переменная не задана) ;
N2 IF [#19 NE #0] GOTO3 (S=размер массива) ;
#3000=2 (Размер массива не задан) ;
N3 WHILE [#19 GT 0] DO1 ;
#19=#19-1 (Обратный отсчет) ;
#[#2+#19]=#22 (V=значение для присваивания массиву) ;
END1 ;
M99 ;
% ;
Можно использовать макропрограмму выше для инициализации трех совокупностей
переменных следующим образом:
% ;
G65 P300 B101. S20 (ИНИЦ 101..120 КАК #0) ;
G65 P300 B501. S5 V1. (ИНИЦ 501..505 КАК 1.0) ;
G65 P300 B550. S5 V0 (ИНИЦ 550..554 КАК 0.0) ;
% ;
Десятичная точка в B101. и т.д. обязательна.
Управляющие операторы
Управляющие операторы позволяют программисту выполнять как условные, так и
безусловные переходы. Они также дают возможность повторять выполнение части
текста программы в зависимости от условия.
240
Программирование опций
Безусловный переход (GOTOnnn и M99 Pnnnn)
Система управления HAAS позволяет использовать два способа безусловного
перехода. Безусловный переход всегда осуществляется к указанному блоку.
Команда M99 P15 выполнит безусловный к блоку номер 15. Команду M99 можно
использовать независимо от того, установлены макросы, или нет, и это
традиционный способ безусловного перехода в системе управления Haas. GOTO15
делает то же, что M99 P15. В системе управления Haas команду GOTO можно
использовать в одной строке с другими G-кодами. GOTO исполняется после всех
других команд, например, М кодов.
Вычисляемый переход (GOTO#n и GOTO [выражение])
Вычисляемый переход позволяет программе передавать управление другой строке
кода в той же подпрограмме. Система управления может вычислить блок, пока
выполняется программа, с помощью формы GOTO
[выражение], или она может
передать блок для обработки с помощью локальной переменной, как делается в
форме GOTO#n .
Команда GOTO округляет переменную или результат выражения, связанного с
вычисляемым переходом. Например, если переменная #1 содержит значение 4.49,
а программа содержит команду перехода GOTO#1, система управления делает
попытку перехода к блоку, который содержит N4. Если #1 содержит значение 4.5, то
система управления перейдет в блок, который содержит N5.
Пример: Можно развить следующий скелет текста программы для составления
программы, которая наносит серийные номера на детали:
% ;
O50002 (ВЫЧИСЛЯЕМЫЙ ПЕРЕХОД) ;
(D=Десятичная цифра, которая будет гравироваться) ;
;
IF [[#7 NE #0] AND [#7 GE 0] AND [#7 LE 9]] GOTO99 ;
#3000=1 (Недопустимая цифра) ;
;
N99 ;
#7=FIX[#7] (Усечение возможной дробной части) ;
;
GOTO#7 (Теперь гравируется цифра) ;
;
N0 (Выполнение цифры ноль) ;
M99 ;
;
N1 (Выполнение цифры один) ;
;
M99 ;
% ;
С помощью приведенной выше подпрограммы можно использовать этот вызов,
чтобы гравировать пятую цифру:
241
Подстановка адреса
G65 P9200 D5 ;
;
Вычисляемые переходы GOTO с использованием выражения можно использовать
для обработки переходов на основе результатов опроса входов оборудования.
Например:
% ;
GOTO [[#1030*2]+#1031] ;
NO(1030=0, 1031=0) ;
...M99 ;
N1(1030=0, 1031=1) ;
...M99 ;
N2(1030=1, 1031=0) ;
...M99 ;
N3(1030=1, 1031=1) ;
...M99 ;
% ;
#1030 и #1031.
Условный переход (IF и M99 Pnnnn)
Условный переход позволяет программе передавать управление другому фрагменту
кода в той же подпрограмме. Условный переход может использоваться, только если
разрешено использование макросов. Система управления Haas позволяет
выполнять условные переходы двумя похожими способами.
IF [<
условное выражение>
] GOTOn ;
Как говорилось выше,
<условное выражение>
- это любое выражение,
использующее какой-либо из шести булевых операторов: EQ, NE, GT, LT, GE или LE.
Выражение обязательно заключается в скобки. Для системы управления Haas
включать эти операторы не обязательно. Например:
IF [#1 NE 0.0] GOTO5 ;
;
может также иметь вид:
IF [#1] GOTO5 ;
;
В этом операторе, если значение переменной
#1 не равно
0.0 или не
неопределенное значение #0, то произойдет переход к блоку 5, в противном случае
будет исполняться следующий блок.
На системе управления Haas,
<условное выражение> также используется с
форматом M99 Pnnnn. Например:
G00 X0 Y0 [#1EQ#2] M99 P5 ;
;
242
Программирование опций
Здесь условие относится только к части M99 оператора. Станок получает команду
перейти к X0, Y0 независимо от того, является ли выражение истинным или ложным.
В зависимости от значения выражения выполняется только переход M99.
Рекомендуется использовать вариант IF
GOTO, если необходимо обеспечить
переносимость кода.
Условное выполнение (IF THEN)
Исполнение управляющих операторов может также осуществляться с помощью
конструкции IF THEN. Формат следующий:
IF [<
условное выражение>
] THEN <
оператор>
;
;
ПРИМЕЧАНИЕ: Для сохранения совместимости с синтаксисом FANUC
оператор THEN нельзя использовать с GOTOn.
Этот формат традиционно используется для условных операторов
присваивания, например:
IF [#590 GT 100] THEN #590=0.0 ;
;
Переменной #590 присваивается нулевое значение, если когда значение #590
превышает
100.0. В системе управления Haas, если условное выражение
возвращает ЛОЖЬ (0.0), то оставшаяся часть блока IF игнорируется. Это значит, что
для управляющих операторов также можно задавать условия, чтобы можно было
написать что-то следующее:
IF [#1 NE #0] THEN G01 X#24 Y#26 F#9 ;
;
При этом линейное перемещение будет выполняться только в том случае, если
переменной #1 было присвоено значение. Ниже приводится еще один пример:
IF [#1 GE 180] THEN #101=0.0 M99 ;
;
То есть, если значение переменной #1 (адрес A) больше или равно 180, то
переменной
#101 присваивается нулевое значение и происходит возврат
из подпрограммы.
Вот пример использования оператора IF, который выполняет переход, если
переменная инициализирована и имеет какое-либо значение. В противном случае
обработка продолжается и выдается сигнал об ошибке. Помните, что при выдаче
сигнала об ошибке происходит останов выполнения программы.
% ;
243
Подстановка адреса
N1 IF [#9NE#0] GOTO3 (ПРОВЕРКА ЗНАЧЕНИЯ В F) ;
N2 #3000=11(НЕТ СКОРОСТИ ПОДАЧИ) ;
N3 (ПРОДОЛЖИТЬ) ;
% ;
Повторение / использование циклов (WHILE DO END)
Важной характеристикой любого языка программирования является способность
исполнять последовательности операторов заданное число раз или выполнять
циклы операторов до достижения некоторого условия. Традиционное
программирование с помощью G-кодов позволяет делать это, используя L-адрес.
Подпрограмму можно выполнять любое количество раз, используя L адрес.
M98 P2000 L5 ;
;
Возможности этого подхода ограничены, поскольку нельзя прервать исполнение
подпрограммы по условию. Макросы обеспечивают большую гибкость, позволяя
использовать циклическую конструкцию WHILE-DO-END. Например:
% ;
WHILE [<
условное выражение>
] DOn ;
<
операторы>
;
ENDn ;
% ;
Эта программа выполняет операторы между DOn и ENDn, пока условное выражение
остается истинным. Скобки в выражении обязательны. Если выражение становится
ложным, то далее исполняется блок после ENDn. Вместо WHILE можно использовать
краткое написание WH. Часть оператора DOn-ENDn - согласованная пара. Значение n
равно 1-3. Это значит, что в подпрограмме может быть максимум три вложенных
цикла. Вложение - это цикл внутри цикла.
Несмотря на то что вложенность операторов WHILE возможна только до трех
уровней, фактически ограничений нет, поскольку каждая подпрограмма может иметь
до трех уровней вложенности. При необходимости получить вложенность более 3
уровней можно вынести фрагмент с тремя младшими уровнями вложенности в
подпрограмму и таким образом обойти ограничение.
Если в подпрограмме используется два независимых цикла WHILE, они могут
использовать один и тот же индекс вложенности. Например:
% ;
#3001=0 (ОЖИДАТЬ 500 МИЛЛИСЕКУНД) ;
WH [#3001 LT 500] DO1 ;
END1 ;
<
Другие операторы>
244
Программирование опций
#3001=0 (ОЖИДАТЬ 300 МИЛЛИСЕКУНД) ;
WH [#3001 LT 300] DO1 ;
END1 ;
% ;
Можно использовать GOTO для перехода из фрагмента, ограниченного DO-END, но с
помощью GOTO невозможно перейти внутрь цикла. Переход в пределах цикла,
ограниченного DO-END, с помощью GOTOдопускается.
Бесконечный цикл можно выполнить, если удалить WHILE и выражение. Таким
образом,
% ;
DO1 ;
<
операторы>
END1 ;
% ;
выполнение продолжается до нажатия клавиши СБРОС.
ПРЕДОСТЕРЕЖЕНИЕ:Избегайте следующей ошибки:
% ;
WH [#1] D01 ;
END1 ;
% ;
В этом примере выдается сигнал об ошибке, указывающий, что Then не обнаружено;
Then относится к D01. Замените D01 (ноль) на DO1 (латинская буква O).
6.2.6
Опция вызова макроподпрограммы G65 (группа 00)
Команда G65 вызывает подпрограмму и может передавать ей аргументы.
Используется следующий формат:
G65 Pnnnn [Lnnnn] [аргументы] ;
;
Аргументы, выделенные курсивом в квадратных скобках, являются
необязательными. Для получения дополнительной информации об аргументах
макросов см. раздел «Программирование».
Команда G65 требует адреса Р, соответствующего номеру программы, находящейся
в текущий момент в памяти системы управления. При использовании адреса L вызов
макроса повторяется заданное количество раз.
В Примере 1 подпрограмма 1000 вызывается один раз без передачи ей условий.
Вызовы G65 похожи на вызовы M98, но не идентичны им. Вызовы G65 допускают
вложение до 9 уровней, это значит, что программа 1 может вызвать программу 2,
программа 2 может вызвать программу 3, а программа 3 может вызвать программу 4.
245
Опция вызова макроподпрограммы G65 (группа 00)
Пример 1:
% ;
G65 P1000 (Вызов подпрограммы 1000 как макроса) ;
M30 (Останов программы) ;
O01000 (Макроподпрограмма) ;
... M99 (Возврат из макроподпрограммы) ;
% ;
Псевдонимы
Коды псевдонима - это заданные пользователем коды G и M, которые обращаются
к макропрограмме. Есть 10 кодов псевдонима G и 10 кодов псевдонима M, доступных
пользователям.
Псевдонимы - это способ назначить G-код или M-код последовательности G65
P#####. Например, в предыдущем примере 2 было бы проще записать:
G06 X.5 Y.25 Z.05 F10. T10 ;
;
При использовании псевдонимов переменные можно передавать с кодом G,
переменную невозможно передавать с кодом M.
Здесь был заменен неиспользуемый G-код, G06 вместо G65
P9010. Чтобы
предыдущий блок работал, параметр, связанный с подпрограммой
9010,
необходимо установить на значение 06 (Параметр 91).
ПРИМЕЧАНИЕ: G00, G65, G66 и G67 невозможно использовать с псевдонимами.
Все остальные коды от
1 до
255 можно использовать
с псевдонимами.
Номера программ от 9010 до 9019 зарезервированы для псевдонимов G-кодов. В
таблице перечислены параметры Haas, которые зарезервированы для псевдонимов
имен макроподпрограмм.
F6.2:
Псевдонимы G- и M-кодов
Haas Parameter O Code
Haas Parameter
O Code
81
9000
91
9010
82
9001
92
9011
83
9002
93
9012
84
9003
94
9013
85
9004
95
9014
86
9005
96
9015
87
9006
97
9016
88
9007
98
9017
89
9008
99
9018
90
9009
100
9019
246
Программирование опций
Установка параметра совмещения имени в значение
0
(ноль) не разрешает
присвоение имени соответствующей подпрограмме. Если для параметра
псевдонима задан G-код, а соответствующая подпрограмма не находится в памяти,
выдается сигнал об ошибке. При вызове макроса G65, кода М с псевдонимом или
кода G с псевдонимом система управления сначала ищет подпрограмму в памяти
(ПАМ). Если она не обнаружена в памяти, система управления далее ищет
подпрограмму на активном носителе (USB, жестком диске). Если подпрограмма не
обнаружена, выдается сигнал об ошибке.
При вызове макроса G65, кода с псевдонимом М или кода с псевдонимом G, система
управления ищет подпрограмму в памяти, а затем, если подпрограмму не удается
обнаружить, - на любом другом активном носителе. Активный носитель может быть
памятью, USB-носителем или жестким диском. Если система управления не находит
подпрограмму в памяти или на активном носителе, выдается сигнал об ошибке.
6.2.7
Связь с внешними устройствами - DPRNT[ ]
Макросы обеспечивают дополнительные возможности для связи с периферийными
устройствами. С помощью устройств, которые обеспечивает пользователь, можно
выполнять оцифровку деталей, создавать отчеты об исполнении программы или
синхронизировать системы управления. Команды, предусмотренные для этого, -
POPEN, DPRNT[ ] и PCLOS.
Команды подготовки обмена данными
Станку Haas не требуются операторы POPEN и PCLOS. Они включены для того, чтобы
программы, составленные для других блоков управления могли передаваться в
систему управления Haas.
Форматный вывод данных
Оператор DPRNT позволяет программисту отправлять форматированный текст в
последовательный порт. На последовательный порт можно направить любой текст и
любую переменную. Форма оператора DPRNT указана ниже:
DPRNT [<
текст>
<
#nnnn[wf]>
... ] ;
;
247
Связь с внешними устройствами - DPRNT[ ]
Команда DPRNT должна быть единственной командой в блоке. В предыдущем
примере <текст> - это любые символы от A до Z или буквы (+,-,/,* и пробел).
Звездочка при выводе преобразуется в пробел. Строка
<#nnnn[wf]> - это
переменная, после которой указан формат. Номером переменной может быть любая
макропеременная. Указание формата [wf] является обязательным и состоит из
двух цифр в квадратных скобках. Помните, что макропеременные
- это
действительные числа с целой и дробной частями. Первая цифра в обозначении
формата указывает общее число знаков, зарезервированных на выходе для целой
части. Вторая цифра указывает на общее число знаков, зарезервированных для
дробной части. Общее количество знаков, зарезервированных для вывода числа, не
может быть равно нулю или превышать восемь. Эти форматы недопустимы: [00] [54]
[45] [36] /* недопустимые форматы */
Между целой и дробной частью числа печатается десятичная точка. Дробная часть
округляется до наименьшего значимого разряда. Если для дробной части
зарезервировано 0 знаков, десятичная точка не печатается. При наличии дробной
части нулевые младшие разряды выводятся на печать. Для целой части
резервируется как минимум один разряд, даже если она равна нулю. Если целая
часть числа имеет меньше знаков, чем зарезервировано, то вместо старших
разрядов выводятся пробелы. Если значение целой части имеет больше знаков, чем
зарезервировано, то поле печати расширяется так, чтобы вместить эти цифры.
После каждого блока DPRNT отправляется команда возврата каретки.
Примеры DPRNT[ ]
Код
Вывод
N1 #1= 1.5436 ;
;
N2 DPRNT[X#1[44]*Z#1[03]*T#1[40]] ;
X1.5436 Z 1.544 T 1
;
N3
ИЗМЕРЕННЫЙ ВНУТРЕННИЙ ДИАМЕТР
DPRNT[***MEASURED*INSIDE*DIAMETER**
*] ;
;
N4 DPRNT[] ;
(без текста, только возврат каретки)
;
N5 #1=123.456789 ;
;
N6 DPRNT[X-#1[35]] ;
X-123.45679 ;
;
248
Программирование опций
Исполнение
Операторы DPRNT выполняются во время интерпретации блока. Это значит, что
программист должен внимательно следить за тем, где в программе появляются
операторы DPRNT, особенно с целью распечатки.
Для ограничения опережающего просмотра удобно использовать G103. Если
необходимо ограничить интерпретацию опережающего просмотра одним блоком,
необходимо включить следующую команду в начало программы: Это заставляет
систему управления выполнять опережающий просмотр на 2 блока.
G103 P1 ;
;
Для отмены ограничения предел опережающего просмотра измените команду на
G103 P0. G103 невозможно использовать при активной коррекции на инструмент.
Редактирование
Неправильная структура или расстановка операторов макропрограммы приводит к
сигналу об ошибке. При редактировании выражений будьте внимательны,
соблюдайте парность скобок.
Функцию DPRNT[
] можно редактировать так же, как комментарий. Ее можно
удалить, перенести как единое целое или отредактировать отдельные элементы в
скобках. Ссылки на переменные и описания формата необходимо изменять как
единое целое. Если необходимо изменить [24] на [44], установите курсор так, чтобы
[24] было выделено, введите [44] и нажмите [ENTER] (ввод). Помните, что можно
использовать орган управления
[HANDLE JOG]
(толчковая подача) для
перемещения по длинным выражениям DPRNT[ ] .
Адреса, содержащие выражения, могут иметь несколько запутанный вид. В этом
случае символьный адрес является самостоятельной единицей. Например, в
следующем блоке содержится адресное выражение в Х:
G01 G90 X [COS [90]] Y3.0 (ПРАВИЛЬНО) ;
;
Здесь Х и скобки являются самостоятельным элементом и могут редактироваться
отдельно. Возможно путем редактирования удалить выражение целиком и заменить
его константой с плавающей точкой.
G01 G90 X 0 Y3.0 (НЕПРАВИЛЬНО) ;
;
Выполнение приведенного выше блока вызовет сигнал об ошибке. Правильный вид
блока должен быть следующим:
G01 G90 X0 Y3.0 (ПРАВИЛЬНО) ;
;
249
Макросы стиля Fanuc не включены
ПРИМЕЧАНИЕ: Между X и нулем (0) нет пробела. ПОМНИТЕ, что если вы
видите отдельный текстовый символ,
-
это
адресное выражение.
6.2.8
Макросы стиля Fanuc не включены
В этом разделе приведены функции макросов FANUC, отсутствующие в блоке
управления Haas.
Замена псевдонима M G65 Pnnnn на Mnn PROGS 9020-9029.
G66
Модальный вызов в каждом блоке перемещения
G66,1
Модальный вызов в каждом блоке перемещения
G67
Модальная отмена
M98
Использование псевдонима, T-код программа 9000, переменная #149, бит
включения
M98
Совмещение имени, В-код программа 9028, переменная #146, бит разрешения
ПРОПУСК/N
N=1..9
#3007
Флажок включения зеркального отражения по каждой оси
#4201-#4320
Модальные данные текущего блока
#5101-#5106
Текущее отклонение сервопривода
Имена для переменных для отображения:
ATAN [ ]/[ ]
Арктангенс, версия FANUC
BIN [ ]
Преобразование из BCD (двоично-десятичного
кода) в BIN (двоичный)
BCD [ ]
Преобразование из BIN (двоичного кода) в BCD
(двоично-десятичный)
FUP [ ]
Отбрасывание младших разрядов
LN [ ]
Натуральный логарифм
250
Программирование опций
EXP [ ]
Возведение в степень с основанием Е
ADP [ ]
Перемасштабирование переменной до целого
числа
BPRNT [ ]
GOTO-nnnn
Поиск блока для перехода в отрицательном направлении, т.е. в обратную сторону
программы, не нужен, если использовать уникальные адресные N-коды.
Поиск блока осуществляется начиная с текущего интерпретируемого блока. При
достижении конца программы поиск продолжается с начала программы до
обнаружения текущего блока.
251
Рабочие зоны перемещения оси Y
6.3
Ось Y
Этот Y перемещает инструменты перпендикулярно осевой линии шпинделя. Это
перемещение достигается сложным движением шариковых винтов осей Х и Y. См.
G17 и G18, начиная на странице 291, где имеется информация
по программированию.
F6.3:
Перемещение оси Y: [1] Сложное движение оси Y, [2] Горизонтальная плоскость.
1
X
2
+
X
Z
+
+
C1
6.3.1
Рабочие зоны перемещения оси Y
Подробную информацию о рабочей зоне и зоне перемещения станка см. на сайте
www.HaasCNC.com. Найдите свою модель станка и выберите опцию Dimensions
(размеры) в ниспадающем меню. Размер и положение доступной рабочей зоны
изменяется согласно длине радиального приводного инструмента.
При установке оснастки для оси Y обратите внимание на:
252
Программирование опций
Диаметр обрабатываемой детали
Вылет инструмента (радиальные инструменты)
Необходимое перемещение оси Y от осевой линии
6.3.2
Токарный станок с осью Y с револьверной головкой
VDI
При использовании радиального приводного инструмента положение рабочей зоны
перемещается. Длина, на которую режущий инструмент выступает от осевой линии
инструментального гнезда, определяет расстояние сдвига рабочей зоны. Подробную
информацию о рабочей зоне станка см. на странице габаритов модели на
сайте www.HaasCNC.com.
6.3.3
Принцип работы и программирование
Ось Y - это дополнительная ось на токарных станках (если имеется), которой можно
управлять командами и поведение которой аналогично стандартным осям X и Z. Для
включения оси Y нет специальной команды.
После смены инструмента токарный станок автоматически выполняет возврат оси Y
к осевой линии шпинделя. Прежде чем подавать команду на вращение, убедитесь,
что револьверная головка расположена правильно.
Стандартные коды G и M Haas доступны при программировании с использованием
оси Y.
При выполнении операций приводного инструмента коррекция на инструмент типа
фрезы может применяться как в плоскости G17, так и G19. Необходимо выполнять
правила коррекции на режущий инструмент во избежание непредсказуемого
перемещения при применении и отмене коррекции. Значение радиуса
используемого инструмента необходимо ввести в столбец RADIUS (радиус) на
странице геометрии соответствующего инструмента. Вершина инструмента
принимается за «0», и значение вводить не нужно.
Рекомендации по программированию:
При смене инструмента перемещайте оси в исходное положение или в
безопасное положение, используя G53 для одновременного перемещения всех
осей. Независимо от положения оси Y и оси Х относительно друг друга обе оси
перемещаются в заданную точку на максимальной возможной скорости и
обычно заканчивают перемещение не одновременно. Например:
G53 X0 (команда перемещения в исходное положение) ;
G53 X-2.0 (команда перемещения Х на 2"
от исходного положения) ;
G53 X0 Y0 (команда перемещения в исходное положение) ;
253

 

 

 

 

 

 

 

содержание      ..     7      8      9      10     ..