Haas Фрезерный станок. Руководство оператора (96-0117 ред. AL Июль 2011) - часть 23

 

  Главная      Книги - Разные     Haas Фрезерный станок. Руководство оператора (96-0117 ред. AL Июль 2011)

 

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

 

   

 

   

 

содержание      ..     21      22      23      24     ..

 

 

 

Haas Фрезерный станок. Руководство оператора (96-0117 ред. AL Июль 2011) - часть 23

 

 

106

G65 P2000 X??? Y??? Z??? A??? ;

Где «???» - это величины, определенные в Шаге 1.

Здесь макрокоманда 2000 (p2000) выполняет работу, так как она предназначена для сверления 

последовательности болтовых отверстий зажима под заданным углом A. По сути оператор создал 

специализированный стандартный цикл.

Простые повторяющиеся последовательности

 Последовательности, которые постоянно

повторяются, можно определить при помощи макросов и сохранить. Например:
1. Схемы отверстия под болт
2. Шлицевание
3. Угловые схемы, любое количество отверстий, под любым углом, с любыми промежутками
4. Специальная обработка, такая как мягкие кулачки
5. Матричные схемы (например, 12 поперек и 15 вниз)
6. Обработка поверхности летучей фрезой (например, 12 дюймов на 5 дюймов при помощи

3-дюймовой летучей фрезы)

Автоматическая настройка коррекции на основании программы

 С помощью макросов можно

задавать коррекцию координат в каждой программе, что облегчает процедуру наладки и позволяет 

сократить количество ошибок (макропеременные #2001-2800).

Измерение головкой

 Измерение головкой во многих отношениях расширяет возможности станка, вот

несколько примеров:
1. Профилирование детали с целью определения неизвестных размеров для последующей обработки.
2. Калибровка инструментов для учета значений коррекции и износа.
3. Обследование перед обработкой для определения припусков формовки.
4. Обследование после обработки для определения параметров параллельности и плоскости, а также

положения.

Полезные G- и М-коды

M00, M01, M30 - останов программы

G04 - Пауза

G65 Pxx - Вызов макроподпрограммы.  Допускается передача переменных.

M96 Pxx Qxx - Условный локальный переход, когда дискретный входной сигнал равен 0

M97 Pxx - Вызов локальной подпрограммы

M98 Pxx - Вызов подпрограммы

M99 - Возврат из подпрограммы или цикл

G103 - Предел опережающего просмотра блока. Компенсация на режущий инструмент не разрешена

M109 - Интерактивные данные пользователя (см. раздел «Коды М»)

Настройки

Существует 3 настройки, которые влияют на работу макропрограмм (программы серии 9000). Это - 

блокировка программ 9xxxx (#23), трассировка программ 9xxx (#74) и покадровая отработка программ 

9xxx (#75).

Опережающий просмотр

Опережающий просмотр очень важен для программиста работающего с макропрограммами. система 

управления будет пытаться обработать как можно больше строк программы заранее, чтобы ускорить 

процесс обработки. Сюда входит и интерпретирование переменных макропрограммы.  Например:

107

#1101=1

G04 P1.

#1101=0

Предполагается, что эта последовательность ВКЛЮЧИТ мощность на выходе, подождет 1 секунду и 

выключит ее. Однако, благодаря опережающему просмотру мощность будет выключена немедленно, 

еще до завершения обработки паузы. Для ограничения опережающего просмотра вплоть до 1 блока 

можно использовать G103 P1. Чтобы в нашем примере программа выполнялась правильно, ее 

необходимо изменить следующим образом:

G103 P1 (дальнейшее описание G103 cм. в разделе о G-кодах).

;

#1101=1

G04 P1.

;

;

;

#1101=0

Округление

Система управления хранит десятичные числа в виде бинарных величин.  В результате значения, 

хранящиеся в переменных, могут отклоняться на 1 наименьший значимый разряд.  Например, число 7, 

сохраненное в макропеременной #100, может в дальнейшем быть прочитано как 7.000001, 7.000000, 

или 6.999999.  Если оператор был «IF [#100 EQ 7]…» результатом могут быть ложные показания.  

Более надежно программа работала бы в таком виде: «IF [ROUND [#100] EQ 7]…».  Такая проблема 

обычно возникает только при сохранении в макропеременных целых чисел, при этом использование 

дробной части ожидается в последующем.

п

римечания

 

по

 

рабоТе

Сохранить или загрузить макропеременные можно через интерфейс RS-232 или порт USB, так же, как 

настройки и коррекции.

Страница отображения переменных

Переменные макропрограмм выводятся на экран и их можно изменить на экране текущих команд. 

Чтобы попасть на страницы переменных, нажмите кнопку CURNT COMDS и пролистайте кнопками 

PAGE UP и PAGE DOWN (стр.вверх/вниз).
Когда блок управления интерпретирует программу, изменения переменных показываются на экране 

переменных, где можно увидеть результаты.
Для задания макропеременной необходимо ввести значение и нажать кнопку Write/Enter (Запись/Ввод). 

Макропеременные можно удалить нажатием клавиши Origin (начало координат), при этом удаляются 

значения всех переменных.
Для поиска макропеременной введите ее номер и нажмите кнопку со стрелкой вверх/вниз.
Выводимые на экран переменные представляют собой значения переменных во время выполнения 

программы. Иногда они могут быть на расстоянии до 15 блоков вперед от фактических операций 

станка. При отладке программ бывает удобно вставить в начале программы код G103, чтобы 

ограничить буферизацию блоков, а после окончания отладки – удалить этот G103.

Аргументы макропрограмм

Аргументы в операторе G65 являются средством передачи значений и задания локальных переменных 

в вызванной макроподпрограмме.
В предыдущем примере 2 аргументы (значения) X и Y передаются в локальные переменные 

макроподпрограммы. Локальная переменная #24 связана с X и установлена равной 0.5. Аналогично, 

108

локальная переменная #25 связана с Y и установлена равной 0.25.
В двух следующих таблицах показано соответствие алфавитных адресных переменных и числовых 

переменных, используемое в макроподпрограмме.

Алфавитная адресация

Адрес:

Переменная:

A

1

B

2

C

3

D

7

Е

8

F

9

G

-

H

11

I

4

J

5

K

6

L

-

M

13

Адрес:

Переменная

(Нет)

-

O

-

P

-

Q

17

R

18

S

19

T

20

U

21

V

22

W

23

X

24

Y

25

Z

26

Альтернативная алфавитная адресация

 Адрес:

Переменная:

A

1

B

2

C

3

I

4

J

5

K

6

I

7

J

8

K

9

I

10

J

11

Адрес:

Переменная:

K

12

I

13

J

14

K

15

I

16

J

17

K

18

I

19

J

20

K

21

I

22

Адрес:

Переменная:

J

23

K

24

I

25

J

26

K

27

I

28

J

29

K

30

I

31

J

32

K

33

Аргументы принимают любые значения с плавающей точкой до четырех десятичных знаков. 

Если система управления работает в метрическом режиме, он принимает значения до тысячных 

долей (.000). В примере 3 локальная переменная #7 примет значение .0004. Если десятичный 

знак не включен в значение аргумента, например: G65, P9910, A1, B2, C3, значения передаются в 

макроподпрограммы в соответствии со следующей таблицей:

Передача целочисленных аргументов (без десятичной точки)

Адрес:

Переменная:

A

.001

B

.001

C

.001

D

1.

Е

1.

F

1.

G

Адрес:

Переменная

H

1.

I

.0001

J

.0001

K

.0001

L

1.

M

1.

(Нет)

-

Адрес:

Переменная:

O

-

P

-

Q

.0001

R

.0001

S

1.

T

1.

U

.0001

Адрес:

Переменная:

V

.0001

W

.0001

X

.0001

Y

.0001

Z

.0001

Всем 33 локальным макропеременным можно присвоить значения с аргументами, используя метод 

альтернативной адресации. В следующем примере показано, как можно передать две группы 

координат установки рабочего органа в макроподпрограмму. Локальным переменным от #4 до #9 будут 

присвоены значения от .0001 до .0006, соответственно.

Пример 3:

 G65 P2000 I1 J2 K3 I4 J5 K6; 

Для передачи значений в макроподпрограммы можно использовать следующие буквы: G, L, N, O или P.

Макропеременные

Существует три вида макропеременных: системная, глобальная и локальная.
Макроконстанты – это значения с плавающей точкой, помещаемые в макровыражение. Они могут 

использоваться совместно с адресами от А до Z или самостоятельно при использовании в выражении. 

Примеры констант: .0001, 5.3 или -10.

109

Локальные переменные 

Локальные переменные находятся в диапазоне от #1 до #33. Набор локальных переменных доступен 

в любое время. При выполнении вызова подпрограммы с помощью команды G65 локальные 

переменные сохраняются, и можно использовать новый набор. Это называется вложенностью 

локальных переменных. При вызове G65 все новые локальные переменные сбрасываются на 

значение «не определено», а всем локальным переменным, имеющим соответствующие адресные 

переменные в строке G65, присваиваются значения из строки G65. Ниже приводится таблица 

локальных переменных с аргументами адресных переменных, которые изменяют их.

Переменная:

Адрес:

Альтернатива:

1

A

2

B

3

C

4

I

5

J

6

K

7

D

I

8

Е

J

9

F

K

10

I

11

H

J

Переменная:

Адрес:

Альтернатива:

12

K

13

M

I

14

J

15

K

16

I

17

Q

J

18

R

K

10

S

I

20

T

J

21

U

K

22

V

I

Переменная:

Адрес:

Альтернатива:

23

W

J

24

X

K

25

Y

I

26

Z

J

27

K

28

I

29

J

30

K

31

I

32

J

33

K

Переменные 10, 12, 14-16 и 27-33 не имеют соответствующих адресных аргументов. Их можно 

задать, если использовано достаточное число аргументов I, J и K, как показано выше, в разделе об 

аргументах. После входа в макроподпрограмму локальные переменные можно читать и изменять, 

ссылаясь на них по номерам переменных от 1 до 33.
При использовании аргумента L для многократных повторов макроподпрограммы аргументы задаются 

только при первом повторе. Это означает, что если локальные переменные 1-33 изменены при 

первом повторе, то при следующем повторе будут доступны только измененные значения. Локальные 

значения остаются без изменений от повторения к повторению, если адрес L больше 1.
Вызов подпрограммы через М97 или М98 не приводит к вложенности локальных переменных. Любые 

локальные переменные, на которые есть ссылки в подпрограмме, вызванной с помощью М98, 

являются теми же переменными и значениями, которые существовали до вызова М97 или М98.

Глобальные переменные

Глобальными называются переменные, которые доступны всегда. Каждая глобальная переменная 

существует всего в одном экземпляре. Глобальные переменные находятся в трех диапазонах: 100-199, 

500-699 и 800-999. При выключении питания глобальные переменные сохраняются в памяти.
В отдельных случаях было написано несколько макропрограмм для заводских целей, которые 

используют глобальные переменные. Сюда относится, например, контактное измерение, устройства 

автоматической смены спутников и т.д. При использовании глобальных переменных убедитесь, что они 

не задействованы в другой программе станка.

Системные переменные

Системные переменные дают программисту возможность взаимодействовать с различными условиями 

функционирования. С помощью задания системной переменной можно изменить функцию управления. 

Путем чтения системной переменной программа может изменять свое поведение в зависимости от 

значения переменной. Некоторые системные переменные имеют статус "только для чтения". Это 

значит, что программист не может изменять их. Ниже приводится краткая таблица существующих в 

настоящее время системных переменных с описанием их использования.

ПЕРЕМЕННЫЕ

ИСПОЛЬЗОВАНИЕ

#0

Не является числом (только для чтения)

#1-#33

Аргументы вызовов макроса

#100-#199

Переменные общего назначения, сохраняемые при выключении питания

110

ПЕРЕМЕННЫЕ

ИСПОЛЬЗОВАНИЕ

#500-#699

Переменные общего назначения, сохраняемые при выключении питания

#700-#749

Скрытые переменные только для внутреннего использования

#800-#999

Переменные общего назначения, сохраняемые при выключении питания

#1000-#1063

64 дискретных входа (только для чтения)

#1064-#1068

Максимальные нагрузки оси для осей X, Y, Z, A и B соответственно

#1080-#1087

Аналого-цифровые входы для исходных данных (только для чтения)

#1090-#1098

Аналого-цифровые входы для отфильтрованных данных (только для чтения)

#1094

Уровень СОЖ

#1098

Нагрузка на шпиндель при использовании векторного привода HAAS (только для 

чтения)

#1100-#1139

40 дискретных выходных сигналов

#1140-#1155

16 дополнительных релейных выходов через мультиплексный выход

#1264-#1268

Максимальные нагрузки оси для осей C, U, V, W и T соответственно

#1601-#1800

Количество канавок инструментов с #1 до 200

#1801-#2000

Максимальная записанная вибрация инструментов от 1 до 200

#2001-#2200

Коррекции на длину инструмента

#2201-#2400

Коррекции на длину инструмента с учетом износа

#2401-#2600

Компенсации диаметра/радиуса инструмента

#2601-#2800

Износ диаметра/радиуса инструмента

#3000

Программируемое аварийное сообщение

#3001

Миллисекундный таймер

#3002

Часовой таймер

#3003

Пропуск блока

#3004

Управление обходом функций

#3006

Программируемый останов с сообщением

#3011

Год, месяц, день

ПЕРЕМЕННЫЕ

ИСПОЛЬЗОВАНИЕ

#3002

Часовой таймер

#3003

Пропуск блока

#3004

Управление обходом функций

#3006

Программируемый останов с сообщением

#3011

Год, месяц, день

#3012

Час, минута, секунда

#3020

Таймер включения (только для чтения)

#3021

Таймер запуска цикла

#3022

Таймер подачи

#3023

Таймер обрабатываемой детали

#3024

Таймер последней обработанной детали

#3025

Таймер предыдущей детали

#3026

Инструмент в шпинделе (только для чтения)

#3027

Скорость вращения шпинделя, об./мин. (только для чтения)

111

#3028

Номер спутника, загруженного на приемник

#3030

Покадровый режим

#3031

Пробный прогон

#3032

Удаления блока

#3033

Дополнительная остановка

#3201-#3400

Действительный диаметр инструментов с 1 до 200

#3401-#3600

Программируемое положение СОЖ от 1 до 200

#3901

M30 счетчик 1

#3902

M30 счетчик 2

#4000-#4021

Коды группы G-кода предыдущего блока

#4101-#4126

Адресные коды предыдущего блока

Примечание:  

Соответствие переменных от 4101 до 4126 аналогично символьной адресации в 

разделе «Аргументы макропрограмм», например, оператор x1.3 устанавливает переменную #4124 на 

1.3. Соответствие осей следующее: x=1, y=2, … b=5, например, системная переменная координаты Z 

будет #5023.

ПЕРЕМЕННЫЕ

ИСПОЛЬЗОВАНИЕ

#5001-#5005

Конечное положение предыдущего блока

#5021-#5025

Предыдущее положение координаты станка

#5041-#5045

Предыдущее положение рабочей координаты

#5061-#5069

Текущая позиция сигнала пропуска - X, Y, Z, A, B, C, U, V, W

#5081-#5085

Текущая коррекция на инструмент

#5201-#5205

Коррекция детали G52

#5221-#5225

Коррекция детали G54

#5241-#5245

Коррекция детали G55

#5261-#5265

Коррекция детали G56

#5281-#5285

Коррекция детали G57

#5301-#5305

Коррекция детали G58

#5321-#5325

Коррекция детали G59

#5401-#5500

Таймеры подачи инструмента (в секундах)

#5501-#5600

Таймеры полного времени инструмента (в секундах)

#5601-#5699

Ограничение срока службы инструмента

#5701-#5800

Счетчик срока службы инструмента

#5801-#5900

Контроль нагрузки инструмента (максимальная нагрузка, зарегистрированная до 

настоящего времени)

#5901-#6000

Ограничение срока службы инструмента

#6001-#6277

Параметры настройки (только для чтения)

#6501-#6999

Параметры (только для чтения)

Примечание:  

Младшие разряды больших значений не отображаются в переменных макросов для 

настроек и параметрах.

ПЕРЕМЕННЫЕ

ИСПОЛЬЗОВАНИЕ

#7001-#7006 (#14001-#14006)

Дополнительные рабочие компенсации G110 (G154 P1)

#7021-#7026 (#14021-#14026)

Дополнительные коррекции детали G111 (G154 P2)

#7041-#7046 (#14041-#14046)

Дополнительные коррекции детали G112 (G154 P3)

#7061-#7066 (#14061-#14066)

Дополнительные коррекции детали G113 (G154 P4)

112

ПЕРЕМЕННЫЕ

ИСПОЛЬЗОВАНИЕ

#7081-#7086 (#14081-#14086)

Дополнительные коррекции детали G114 (G154 P5)

#7101-#7106 (#14101-#14106)

Дополнительные коррекции детали G115 (G154 P6)

#7121-#7126 (#14121-#14126)

Дополнительные коррекции детали G116 (G154 P7)

#7141-#7146 (#14141-#14146)

Дополнительные коррекции детали G117 (G154 P8)

#7161-#7166 (#14161-#14166)

Дополнительные коррекции детали G118 (G154 P9)

#7181-#7186 (#14181-#14186)

Дополнительные коррекции детали G119 (G154 P10)

#7201-#7206 (#14201-#14206)

Дополнительные коррекции детали G120 (G154 P11)

#7221-#7226 (#14221-#14221)

Дополнительные коррекции детали G121 (G154 P12)

#7241-#7246 (#14241-#14246)

Дополнительные коррекции детали G122 (G154 P13)

#7261-#7266 (#14261-#14266)

Дополнительные коррекции детали G123 (G154 P14)

#7281-#7286 (#14281-#14286)

Дополнительные коррекции детали G124 (G154 P15)

#7301-#7306 (#14301-#14306)

Дополнительные коррекции детали G125 (G154 P16)

#7321-#7326 (#14321-#14326)

Дополнительные коррекции детали G126 (G154 P17)

#7341-#7346 (#14341-#14346)

Дополнительные коррекции детали G127 (G154 P18)

#7361-#7366 (#14361-#14366)

Дополнительные коррекции детали G128 (G154 P19)

#7381-#7386 (#14381-#14386)

Дополнительные коррекции детали G129 (G154 P20)

#7501-#7506

Приоритет спутника

#7601-#7606

Состояние спутника

#7701-#7706

Номера программ обработки детали, назначенных спутникам

#7801-#7806

Подсчет использования спутника

#8500

Расширенное управление инструментами (РУИ) Group ID (индекс группы)

#8501

РУИ. Процент имеющегося ресурса инструмента для инструментов в 

группе.

#8502

РУИ. Суммарный подсчет использования инструмента, имеющегося в 

группе.

#8503

РУИ. Суммарный подсчет выполненных отверстий в группе.

#8504

РУИ. Суммарное имеющееся время подачи (в секундах) в группе.

#8505

РУИ. Суммарное имеющееся время инструментов (в секундах) в группе.

#8510

РУИ. Номер следующего используемого инструмента.

#8511

РУИ. Процент имеющегося ресурса следующего инструмента.

#8512

РУИ. Имеющийся подсчет использования следующего инструмента.

#8513

РУИ. Имеющийся подсчет выполненных отверстий следующего 

инструмента.

#8514

РУИ. Имеющееся время подачи следующего инструмента (в секундах).

#8515

РУИ. Имеющееся суммарное время следующего инструмента (в секундах).

#8550

Код отдельного инструмента

#8551

Количество канавок инструмента

#8552

Максимум записанных вибраций

#8553

Коррекции на длину инструмента

#8554

Коррекции на длину инструмента с учетом износа

#8555

Коррекция на диаметр инструмента

#8556

Износ диаметра инструмента

#8557

Фактический диаметр

113

ПЕРЕМЕННЫЕ

ИСПОЛЬЗОВАНИЕ

#8558

Программируемое положение СОЖ

#8559

Таймеры подачи инструмента (секунд)

#8560

Таймеры полного времени инструмента (в секундах)

#8561

Ограничение срока службы инструмента

#8562

Счетчик срока службы инструмента

#8563

Контроль нагрузки инструмента (максимальная нагрузка, 

зарегистрированная до настоящего времени)

#8564

Ограничение срока службы инструмента

#14401-#14406

G154 P21 дополнительная коррекция детали

#14421-#14426

G154 P22 дополнительная коррекция детали

#14441-#14446

G154 P23 дополнительная коррекция детали

#14461-#14466

G154 P24 дополнительная коррекция детали

#14481-#14486

G154 P25 дополнительная коррекция детали

#14501-#14506

G154 P26 дополнительная коррекция детали

#14521-#14526

G154 P27 дополнительная коррекция детали

#14541-#14546

G154 P28 дополнительная коррекция детали

#14561-#14566

G154 P29 дополнительная коррекция детали

#14581-#14586

G154 P30 дополнительная коррекция детали

#14781-#14786

G154 P40 дополнительная коррекция детали

#14981-#14986

G154 P50 дополнительная коррекция детали

#15181-#15186

G154 P60 дополнительная коррекция детали

#15381-#15386

G154 P70 дополнительная коррекция детали

#15581-#15586

G154 P80 дополнительная коррекция детали

#15781-#15786

G154 P90 дополнительная коррекция детали

15881-15886

G154 P95 дополнительная коррекция детали

15901-15906

G154 P96 дополнительная коррекция детали

15921-15926

G154 P97 дополнительная коррекция детали

15941-15946

G154 P98 дополнительная коррекция детали

15961-15966

G154 P99 дополнительная коррекция детали

114

п

одробнее

 

о

 

сисТемных

 

переменных

Переменные #750 и #751

Эти переменные получают данные из последовательного порта 2. Программист может выполнить 

проверку данных в очереди в буфере последовательного порта 2 и получить данные для обработки. 

Переменная #750 сообщит программисту, есть ли данные в очереди в RS232, порт 2. Значение 

1 означает, что в буфере приема находятся данные в очереди, в другом состоянии возвращается 

значение 0. Переменная 751 извлекает первый символ из буфера ввода, если в очереди есть данные. 

Это означает, что сначала проверяется содержимое буфера для определения, пусто ли он, если это не 

так - возвращается значение следующего символа в очереди.

1-разрядные дискретные входы

Входы, обозначенные как «резервные» (spare), можно подключать к внешним устройствам для 

использования программистом.

1-разрядные дискретные выходы

система управления HAAS способен контролировать до 56 дискретных выходов. Тем не менее 

некоторые из этих выходов уже зарезервированы для использования контроллером HAAS.

ВНИМАНИЕ! Не используйте выходы, зарезервированные системой. Их использование может привести к 

травме или выходу из строя оборудования.

Пользователь может изменять состояние этих выходов, записывая значения в переменные, 

обозначенные как «резервные». Если выходы подключены к реле, то присвоение значения 1 включает 

реле. Присвоение значения 0 сбрасывает реле.
При обращении к этим выходам возвращается текущее состояние выхода, которое может 

быть последним присвоенным значением или последним состоянием вывода, установленным 

пользовательским М-кодом. Например, после проверки того, что выход #1108 «в резерве»:
#1108=1; (Включает реле #1108)
#101=#3001+1000;(101 наступит через 1 после текущего момента)
WHILE [[#101 GT #3001] AND [#1109 EQ 0]] D01
END1 (Подождать здесь 1 секунду или до срабатывания реле #1109)
#1108=0; (Выключает реле #1108)
Если система управления не оборудован релейной платой М-кодов, то коды от M21 до M28 будут 

отображаться от #1132 до #1139. Если релейная панель М-кодов установлена, см. дополнительную 

информацию и инструкции в разделе "Опция 8М".

ПРИМЕЧАНИЕ:  Всегда выполняйте тестовые или пробные прогоны программ, которые написаны для 

макросов, использующих новое аппаратное оборудование.

Максимальные нагрузки оси

Для хранения значений максимальной нагрузки для каждой оси теперь используются следующие 

переменные. Их можно сбросить, выключив и включив питание станка или установив макропрограмму 

на 0 (например, #1064=0;).

   1064 = ось X 

1264 = ось C

   1065 = ось Y 

1265 = ось U

   1066 = ось Z 

1266 = ось V

   1067 = ось A 

1267 = ось W

   1068 = ось B 

1268 = ось T

Коррекция на инструмент

Каждый инструмент имеет коррекцию на длину (H) и радиус (D) и связанные с ними величины износа.

#2001-#2200 

Геометрические коррекции H (1-200) на длину.

115

#2200-#2400 

Геометрические коррекции H (1-200) на длину с учетом износа.

#2401-#2600 

Геометрические коррекции D (1-200) на диаметр.

#2601-#2800 

Геометрические коррекции D (1-200) на диаметр с учетом износа.

Программируемые сообщения

#3000 Сигналы об ошибке можно программировать. Программируемый сигнал об ошибке будет 

действовать как встроенные сигналы об ошибке. Для подачи сигнала об ошибке макропеременной 

#3000 присваивается значение от 1 до 999.

#3000= 15 (СООБЩЕНИЕ, ПОМЕЩАЕМОЕ В СПИСОК ОШИБОК);

После этого в правом нижнем углу дисплей мигает слово «Alarm» (сигнал об ошибке), а в список 

сигналов об ошибке заносится текст в следующем комментарии. К номеру аварийного сообщения 

(например, 15) прибавляется 1000 и эта сумма используется в качестве номера аварийного сообщения. 

При выдаче такого аварийного сообщения все перемещения останавливаются и для продолжения 

требуется сброс программы. Программируемые сигналы об ошибке имеют номера от 1000 до 1999. 

Первые 34 символа комментария используются для сообщения о сигнале об ошибке.

Таймеры

Можно установить два таймера на определенное значение путем присвоения числового значения 

соответствующей переменной. Программа затем может выполнить чтение этой переменной и 

определить время, прошедшее с момента запуска таймера. Таймеры могут использоваться для 

имитации циклов пауз, определения времени между обработкой деталей и в других случаях, когда 

необходимо учитывать время.
#3001 Millisecond Timer (таймер миллисекунд) - Таймер миллисекунд обновляется каждые 20 

миллисекунд, таким образом, точность измерения времени равна лишь 20 миллисекунд. При 

включении питания показания миллисекундомера сбрасываются. Таймер имеет предел работы - 497 

суток. Целое число, возвращаемое при вызове #3001, представляет собой количество миллисекунд.
#3002 Hour Timer (часовой таймер) - Часовой таймер похож на таймер миллисекунд с той разницей, что 

число, возвращаемое при вызове #3002, равно количеству часов. Часовый таймер и миллисекундомер 

независимы друг от друга и могут запускаться отдельно.

Ручные коррекции системы

#3003 Переменная 3003 является параметром пропуска отдельного блока. Она обходит функцию 

"покадровый режим" G-кода (т.е. является более приоритетной) В следующем примере функция 

"покадровый" (Single Block) игнорируется, когда #3003 присваивается значение 1. После того, как 

M3003 присвоено значение 1, все команды G-кода (строки 2-5) выполняются последовательно, даже 

если функция "покадровый режим" включена. При установке #3003 на "ноль" функция "покадровый" 

действует как обычно. Пользователь должен нажимать кнопку «Запуск цикла» для выполнения каждой 

строки программы (строки 7-11).

#3003=1;

G54 G00 G90 X0 Y0;

S2000 M03;

G43 H01 Z.1;

G81 R.1 Z-0.1 F20.;

#3003=0;

T02 M06;

G43 H02 Z.1;

S1800 M03;

G83 R.1 Z-1. Q.25 F10.;

X0. Y0.;

Переменная #3004

Переменная #3004 обходит некоторые функции управления при выполнении.
Первый разряд отключает функцию Feed Hold (Остановка подачи). Если остановка подачи во время 

116

выполнения части текста программы не используется, необходимо перед этими строками программы 

назначить переменной #3004 значение 1. После этого фрагмента кода присвойте переменной #3004 

значение 0 для восстановления функции кнопки Feed Hold (Остановка подачи). Например:

Код подвода 

(Остановка подачи разрешена)

#3004=1;  

(Отключает кнопку Feed Hold)

Непрерываемый код 

(Остановка подачи запрещена)

#3004=0;  

(Включает кнопку Feed Hold)

Код отвода 

(Остановка подачи разрешена)

Ниже приводится схема разрядов переменной #3004 и соответствующие функции обхода.

E - Включено D - Выключено

#3004

Остановка 

подачи

Коррекция скорости 

подачи

Проверка абсолютной 

остановки

0

Е

Е

Е

1

D

Е

Е

2

Е

D

Е

3

D

D

Е

4

Е

Е

D

5

D

Е

D

6

Е

D

D

7

D

D

D

#3006 Программируемый останов

Можно запрограммировать, который будет выглядеть как М00 - система управления останавливается 

и ожидает нажатия кнопки Cycle Start. После нажатия кнопки Cycle Start (Запуск цикла) программа 

продолжится с блока, следующего за #3006. В следующем примере в левой нижней части экрана будут 

показаны первые 15 знаков комментария.
IF [#1 EQ #0] THEN #3006=101 (здесь комментарий);

#4001-#4021 Групповые коды последнего блока (модальные)

Группирование G-кодов позволяет повысить эффективность обработки. G-коды с близкими функциями 

обычно объединяются в одну группу. Например, G90 и G91 находятся в группе 3. Эти переменные 

хранят последний код или G-код по умолчанию для одной из 21 групп. При чтении группового кода 

макропрограмма может изменить поведение G-кода. Если в 4003 содержится 91, макропрограмма 

может определить, что все перемещения должны быть шаговыми, а не абсолютными. Нулевой группе 

не соответствует переменная, G-коды нулевой группы являются немодальными.

#4101-#4126 Адресные данные последнего блока (модальные)

Адресные коды от А до Z (исключая G) рассматриваются как модальные значения. Информация, 

представленная в последней строке кода, интерпретируемого в процессе опережающего просмотра, 

содержится в переменных с 4101 по 4126. Числовое соответствие номеров переменных алфавитным 

адресам такое же, как описано в разделе о соответствии алфавитных адресов. Например, значение 

ранее интерпретированного адреса D находится в #4107, а последнее интерпретированное значение 

I - #4104. При совмещение имен макросов М-коду нельзя передавать переменные в макропрограмму, 

используя переменные 1-33. Вместо этого в макропрограмме следует использовать значения из 4101-

4126.

#5001-#5005 Последняя заданная позиция

Через переменные #5001-#5005, X, Y, Z, A и B, соответственно, можно получить доступ к последней 

запрограммированной точке последнего блока перемещения. Значения даются в текущей рабочей 

системе координат и могут использоваться, когда станок находится в движении.

117

Переменные положения осей

#5021 ось X 

#5022 ось Y 

#5023 ось Z

#5024 ось A 

#5025  Ось B  #5026 ось C

#5021-#5025 Текущие координаты станка

Текущее положение координат станка можно получить с помощью #5021-#5025, X, Y, Z, A и B, 

соответственно. Эти значения НЕЛЬЗЯ прочитать, когда станок находится в движении. Значение #5023 

(Z) дается с учетом коррекции на длину инструмента.

#5041-#5045 Текущие рабочие координаты

 Текущее положение в текущих рабочих координатах можно получить с помощью #5041-#-5045, X, Y, Z, 

A и B, соответственно. Эти значения нельзя прочитать, когда станок находится в движении. Значение 

#5043 (Z) дается с учетом коррекции на длину инструмента.

#5061-#5069 Текущая позиция сигнала пропуска

Позицию, в которой сработал последний сигнал пропуска, можно получить с помощью #5061-#5069 X, 

Y, Z, A, B, C, U, V и W, соответственно. Значения даются в текущей рабочей системе координат и могут 

использоваться, когда станок находится в движении. Значение #5063 (Z) дается с учетом коррекции на 

длину инструмента.

#5081-#5085 Коррекция на длину инструмента

Возвращает текущее значение коррекции на длину инструмента. Сюда входит геометрия инструмента, 

определяемая текущим модальным значением, заданным в H (#4008), плюс значение износа.

ПРИМЕЧАНИЕ:  Соответствие осей следующее: x=1, y=2, … b=5. Например, системная переменная 

координаты Z будет #5023.

#6996-#6999 Доступ к параметрам при помощи макропеременных

Программа может обращаться к параметрам 1 - 1000 и любому из битов параметра следующим 

образом:

#6996: Номер параметра

#6997: Номер бита (необязательный)

#6998: Содержит значение номера параметра в переменной 6996

#6999: Содержит значение бита (0 или 1) бита параметра, указанного в переменной 6997.

ПРИМЕЧАНИЕ:  Переменные 6998 и 6999 - только для чтения.

Использование

Для получения доступа к значению параметра номер этого параметра копируется в переменную 6996, 

после чего значение этого параметра становится доступным при использовании макропеременной 

6998, как показано ниже:

#6996=601 (Задать параметр 601)
#100=#6998 (Копировать значение параметра 601 в переменную #100)

Для получения доступа к конкретному биту параметра номер параметра копируется в переменную 

6996, а номер бита копируется в макропеременную 6997. Значение бита этого параметра становится 

доступным при использовании макропеременной 6999, как показано ниже:

#6996=57 (Задать параметр 57)

#6997=0 (Задать нулевой бит)

#100=#6999 (Копировать бит 0 параметра 57 в переменную #100)

ПРИМЕЧАНИЕ:  Биты параметра имеют номера от 0 до 31. 32-битные параметры выводятся на экран 

с форматированием, бит 0 - вверху слева, бит 31 - справа внизу..

118

УАСС

Состояние спутников, на устройстве автоматической смены спутников проверяется при помощи 

следующих переменных:

#7501-#7506 

Приоритет спутника

#7601-#7606 

Состояние спутника

#7701-#7706 

Номера программ обработки детали, назначенных спутникам

#7801-#7806 

Подсчет использования спутника

#3028 

Номер спутника, загруженного на приемник

Смещения

В выражении макроса можно прочитать и задать все значения коррекции на инструмент и коррекции 

детали, это позволяет задавать координаты приблизительного положения или присваивать координаты 

значениям, основываясь на результатах положения сигнала пропуска и расчетов. При чтении любого 

из значений коррекции очередь опережающей интерпретации останавливается до выполнения этого 

блока.

#5201-#5205 

Значения коррекции G52 X, Z, Y, A, B

#5221-#5225 

G54 “  “ “ “  “   “      “

#5241-#5245 

G55 “  “ “ “  “   “      “

#5261-#5265 

G56 “  “ “ “  “   “      “

#5281-#5285 

G57 “  “ “ “  “   “      “

#5301-#5305 

G58 “  “ “ “  “   “      “ 

#5321-#5325 

G59 “  “ “ “  “   “      “

#7001-#7005 

Значения коррекции G110 X, Z, Y, A, B

   “     “ 

    “  “ “ “  “   “       “  

#7381-#7385 

Значения коррекции G129 X, Z, Y, A, B

#8550-#8567

Эти переменные обеспечивают информацию об инструменте. Установите переменную #8550 на 

номер инструмента или номер группы инструмента, затем обращайтесь к данным для выбранного 

инструмента / группы инструментов с помощью макросов только для чтения 8551-8564. При задании 

номера группы инструмента выбранный инструмент будет следующим инструментом в группе.

и

спользование

 

переменных

Обращение ко всем переменным выполнятся с помощью знака «фунт» (#) и следующего за ним 

положительного числа: #1, #101, #501.
Переменные - это десятичные значения, представленные в виде числе с плавающей точкой. Если 

переменная ни разу не использовалась, она имеет особое «неопределенное» значение. Оно указывает 

на то, что переменная еще не использовалась. Переменной можно присвоить неопределенное 

значение с помощью специальной переменной #0. Переменная #0 имеет неопределенное значение 

или 0.0, в зависимости от контекста, в котором она используется. Косвенные ссылки на переменные 

можно задавать, заключая номер переменной в скобках. #[<выражение>]
Выражение вычисляется и его результат становится номером переменной. Например:

#1=3;

#[#1]=3.5 + #1;

Это выражение присваивает переменной #3 значение 6.5.
Переменные можно использовать вместо адресов G-кодов, когда «адреса» обращаются к буквам А-Z.
В блоке N1 G0 G90 X1.0 Y0; переменным можно присвоить следующие значения:

#7=0;

#11=90;

#1=1.0;

#2=0.0;

119

и заменить блок на: N1 G#7 G#11 X#1 Y#2; Значения переменных во время выполнения программы 

используются как значения адресов.

п

одсТановка

 

адреса

Обычно для задания управляющих адресов A-Z используется адрес с числом после него. Например:

G01 X1.5 Y3.7 F20. ;

Задает адресам G, X, Z и F значения 1, 1.5, 3.7 и 20.0, соответственно, и таким образом дает указание 

системе управления перемещаться линейно, G01, к позиции X=1.5 Y=3.7 со скоростью подачи 

20 дюймов в минуту. Синтаксис макропрограммы позволяет заменять значение адреса на любую 

переменную или выражение.
Предыдущий оператор можно заменить следующим кодом:

#1=1;

#2=.5;

#3=3.7;

#4=20;

G#1 X[#1+#2] Y#3 F#4 ;

Допустимый синтаксис адресов A-Z (исключая N и O) таков:

<адрес><-><переменная> 

A-#101

<адрес><->[<выражение>] 

Y[#5041+3.5]

<адрес><->[<выражение>] 

Z-[SIN[#1]]

Если значение переменной не соответствует диапазону адреса, система управления выдаст сигнал 

об ошибке. Например, следующий код приведет к аварийному сообщению о неправильном диапазоне, 

потому что значения диаметров инструментов лежат в диапазоне 0-50.

#1=75;
D#1;

Когда переменная или выражение используется в качестве значения адреса, их значение округляется 

до наименьшего значимого разряда. Если #1=.123456, то G1X#1 переместит инструмент станка к 

позиции .1235 по оси X. Если система управления работает в метрическом режиме. инструмент будет 

перемещен к позиции .123 по оси Х.
При использовании неопределенной переменной в качестве значения адреса это обращение 

игнорируется. Например, если переменная #1 не определена, то блок

G00 X1.0 Y#1 ;

Становится

G00 X1.0.

Перемещения по оси Y не происходит.

Макрооператоры

Макрооператоры - это строки кода, позволяющие программисту манипулировать системой управления, 

используя характеристики, свойственные любому стандартному языку программирования. Сюда 

входят функции, операторы, условные и арифметические выражения, операторы присваивания и 

управляющие операторы.
Функции и операторы используются в выражениях для изменения переменных или значений. В 

выражениях обязательно должны присутствовать операторы, в то время как функции просто облегчают 

120

работу программиста.

Функции

Функции - это встроенные программы, которыми может пользоваться программист. Все функции имеют 

следующую форму: <имя_функции> [аргумент], и возвращают десятичные значения с плавающей 

точкой. В систему управления HAAS включены следующие функции:

Функция

Аргумент

Возвращает

Примечания

SIN[ ]

Градусы

Десятичное

Синус

COS[ ]

Градусы

Десятичное

Косинус

TAN[ ]

Градусы

Десятичное

Тангенс

ATAN[ ]

Десятичное

Градусы

Арктангенс То же что и FANUC 

ATAN[ ]/[1]

SQRT[ ]

Десятичное

Десятичное

Квадратный корень

ABS[ ]

Десятичное

Десятичное

Модуль числа

ROUND[ ]

Десятичное

Десятичное

Округление десятичной дроби

FIX[ ]

Десятичное

Целочисленное Отбрасывание младших 

разрядов

ACOS[ ]

Десятичное

Градусы

Арккосинус

ASIN[ ]

Десятичное

Градусы

Арксинус

#[ ]

Целочисленное

Целочисленное Разыменование переменной

DPRNT[ ]

Текст в кодировке 

ASCII

Внешний вывод

Примечания по использованию функций

Функция округления (Round) может работать по-разному в зависимости от контекста, в котором она 

используется. При использовании в арифметическом выражении любое число, с дробной частью 

большей или равной .5 округляется до следующего целого числа, в остальных случаях дробная часть 

отсекается от числа.

#1= 1.714 ;

#2= ROUND[#1] ; (#2 присваивается значение 2.0)

#1= 3.1416 ;

#2= ROUND[#1] ; (#2 присваивается значение 3.0)

При использовании округления в адресном выражении, аргумент округляется до значимого разряда 

адреса. Для метрических и угловых размеров точность по умолчанию - три знака. Для дюймовых 

размеров точность по умолчанию - четыре знака.

#1= 1.00333 ;

G0 X[ #1 + #1 ] ;

(Стол перемещается к 2.0067) ;

G0 X[ ROUND[ #1 ] + ROUND[ #1 ] ] ;

(Стол перемещается к 2.0066) ;

G0 A[ #1 + #1 ] ;

(Ось перемещается к 2.007) ;

G0 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.

Операторы

Операторы можно разделить на три категории: арифметические, логический и булевы.

121

Арифметические операторы

Арифметические операторы состоят из обычных унарных и бинарных операторов. Это

- Унарный плюс 

+1.23

- Унарный минус 

-[COS[30]] 

- Бинарное сложение  #1=#1+5

- Бинарное вычитание #1=#1-1

- Умножение 

#1=#2*#3 

- Деление 

#1=#2/4

MOD 

- Остаток 

#1=27 MOD 20 (#1 содержит 7)

Логические операторы

К логическим операторам относятся операторы, работающие с значениями двоичных битов. 

Макропеременные являются числами с плавающей точкой. При применении логических операторов к 

макропеременным используется только целая часть числа с плавающей точкой. Логические операторы 

бывают следующими:

OR - логическое ИЛИ для двух значений

XOR - исключающее ИЛИ для двух значений

AND - логическое И для двух значений

Примеры:

#1=1.0; 0000 0001
#2=2.0; 0000 0010
#3=#1 OR #2; 0000 0011

Здесь после выполнения операции ИЛИ (OR) переменная #3 

будет иметь значение 3.0.

#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.

Обратите внимание, что для получения необходимых результатов нужно внимательно подходить к 

использованию логических операторов.

Булевы операторы

Булевы операторы всегда дают в результате 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.

 

 

 

 

 

 

 

содержание      ..     21      22      23      24     ..