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

 

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

 

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

 

   

 

   

 

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

 

 

 

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

 

 

122

Выражения

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

в квадратные скобки «[» и «]». Существует два типа выражений: условные и арифметические. 

Условные выражения возвращают значения ЛОЖНО (0.0) или ИСТИННО (любое отличное от нуля). 

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

Условные выражения

ВСЕ выражения в системе управления HAAS задают условное значение. Это значение равно либо 0.0 

(ЛОЖНО), либо не равно нулю (ИСТИННО). Контекст, в котором используется выражение, определяет, 

является ли оно условным. Условные выражения используются в операторах IF и WHILE, а также 

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

истинности или ложности условия.
Условный оператор M99 используется только в системе управления Haas. Без макропрограмм М99 

в системе управления HAAS способен выполнять обязательный (безусловный) переход к любой 

строке в текущей подпрограмме, помещая в эту строку код Р. Например: 

N50 M99 P10;

 выполняет 

переход к строке N10. Команда не возвращает управление вызывающей подпрограмме. При 

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

условного перехода. Чтобы выполнить переход, когда переменная #100 меньше 10, можно составить 

вышеприведенную строку следующим образом: 

N50 [#100 LT 10] M99 P10;

В этом случае переход произойдет, только когда #100 будет меньше 10. В противном случае 

продолжается выполнение следующей строки программы. В вышеприведенном примере условный 

оператор М99 можно заменить на: 

N50 IF [#100 LT 10] GOTO10;

Арифметические выражения

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

Арифметическое выражение возвращает некоторое значение. Обычно арифметические выражения 

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

#101=#145*#30;

#1=#1+1;

X[#105+COS[#101]];

#[#2000+#13]=0;

Операторы присваивания

Операторы присваивания позволяют программисту изменять значения переменных. Формат оператора 

присваивания: 

<выражение>=<выражение>

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

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

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

O0300

(Инициализация массива переменных) ;

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;

123

Показанная выше макропрограмма может использоваться для инициализации трех наборов 

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

G65 P300 B101. S20 (INIT 101..120 TO #0) ;

G65 P300 B501. S5 V1 (INIT 501..505 TO 1.0) ;

G65 P300 B550. S5 V0 (INIT 550..554 TO 0.0) ;

В B101. и далее потребуется десятичная точка.

Управляющие операторы

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

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

Безусловный переход (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.
Для составления программы, которая присваивает деталям заводские номера, можно использовать 

следующую структуру кода:

O9200

(Гравировка цифры в текущей позиции).

;
(D=Десятичная цифра для гравировки);
IF [[#7 NE #0] AND [#7 GE O] AND [#7 LE 9]] GOTO99;
#3000=1

(Неправильная цифра)

;
N99
#7=FIX[#7]

(Отсекание дробной части)

;
GOTO#7

(Теперь гравировать цифру)

;
N0

(Гравировка цифры "ноль")

...
M99
;
N1

(Гравировка цифры "один")

;
M99
;

124

N2

(Гравировка цифры "два")

;
...
;
(и т.д.)

Используя приведенную выше подпрограмму можно выгравировать цифру пять следующим образом: 

G65 P9200 D5;
Вычисляемые переходы GOTO с использованием выражения можно использовать для ветвления 

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

программы:

GOTO [[#1030*2]+#1031]; 

НЕТ (1030=0, 1031=0); 

...

M99;

N1  (1030=0, 1031=1); 

...

M99;

N2  (1030=1, 1031=0); 

...

M99;

N3  (1030=1, 1031=1); 

...

M99;

При чтении дискретных входных сигналов всегда получается значение 0 или 1. GOTO[выражение] 

выполнит переход к соответствующей строке кода, основываясь на состоянии двух дискретных входов 

#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. Например:

G0 X0 Y0 [#1EQ#2] M99 P5;

Здесь условие относится только к части M99. Инструменту дается команда X0, Y0 вне зависимости от 

того, является выражение истинным или ложным. В зависимости от значения выражения выполняется 

125

только переход, 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 G1 X#24 Y#26 F#9 ;

При этом линейное перемещение будет выполняться только в том случае, если переменной #1 было 

присвоено значение. Другой пример:

IF [#1 GE 180] THEN #101=0.0 M99 ;

В этом примере, если значение переменной #1 (адрес A) больше или равно 180, то переменной #101 

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

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

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

программы прерывается.

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. Это значит, что в 

126

подпрограмме может быть не более трех вложенных циклов. Хороший пример вложенного построения 

циклов WHILE для определения матрицы:

#101= 3; 

#102= 4; 

G0 X#101 Y4. ;

F2.5; 

WH [#101 GT 0] DO1; 

 #102= 4; 

WH [#102 GT 0] DO2; 

G81 X#101 Y#102 Z-0.5; 

#102= #102 - 1; 

END2; 

#101= #101 - 1; 

END1 ; 

;

M30;

Эта программа сверлит матрицу отверстий 3 x 4.
Несмотря на то что вложенность операторов WHILE не может превышать трех уровней, фактически 

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

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

младшими уровнями вложенности в подпрограмму и таким образом обойти ограничение.
Если в подпрограмме используется два независимых WHILE-цикла, они не могут иметь один и тот же 

индекс вложенности. Например:

#3001=0 (ЖДАТЬ 500 МИЛЛИСЕКУНД); 

WH [#3001 LT 500] DO1; 

END1 ;

<Другие операторы>

#3001=0 (ЖДАТЬ 300 МИЛЛИСЕКУНД);

WH [#3001 LT 300] DO1;

END1 ;

Для выхода из фрагмента, ограниченного DO-END, можно использовать GOTO, но с помощью GOTO 

нельзя перейти внутрь цикла. Переход в пределах цикла, ограниченного DO-END, с помощью GOTO 

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

DO1; 

<операторы>

END1 ; 

выполнение продолжается до нажатия кнопки RESET (сброс).

ВНИМАНИЕ! Избегайте следующей ошибки: WH [#1] D01; 
END1 ;
В приведенном выше примере выдается сигнал об ошибке, указывающий, что «Then» не обнаружено; 

«Then» относится к D01. Замените D01 (ноль) на DO1 (буква O).

g65 в

ызов

 

макроподпрограммы

Команда G65 вызывает подпрограмму и может передавать ей аргументы. Используется следующий 

формат:
G65 Pnnnn [Lnnnn] [аргументы];
Все, что выделено курсивом в квадратных скобках, является необязательным. Команда G65 требует 

127

Р-адреса, соответствующего номеру программы, находящейся в текущий момент в памяти системы 

управления. При использовании L-адреса обращение к макрокоманде повторяется заданное число раз. 

В Примере 1 подпрограмма 1000 вызывается один раз без передачи ей условий. Вызовы G65 близки 

к вызовам M98, но не идентичны им. Вызовы G65 могут иметь вложение до 9 уровней, это значит, что 

программа 1 может вызвать программу 2, программа 2 может вызвать программу 3, а программа 3 

может вызвать программу 4.

Пример 1:
G65 P1000;

(Вызов подпрограммы 1000 как 

макропрограммы)

M30;

(Останов программы)

O1000;

(Макроподпрограмма)

...
M99;

(Возврат из макроподпрограммы)

В примере 2 подпрограмма 9010 предназначена для сверления последовательности отверстий вдоль 

линии, наклон которой определяется аргументами X и Y, которые ей передаются в строке команды 

G65. Глубина сверления Z передается как Z, скорость подачи передается как F, а количество отверстий 

передается как T. Линия отверстий сверлится начиная от текущего положения инструмента в момент 

вызова макроподпрограммы.

Пример 2:
G00 G90 X1.0 Y1.0 Z.05 S1000 M03;

(Расположение инструмента)

G65 P9010 X.5 Y.25 Z.05 F10. T10;

(Вызов 9010)

G28;
M30;
O9010;

(Диагональная схема отверстий)

F#9;

(F=Скорость подачи)

WHILE [#20 GT 0] DO1;

(Повторить T раз)

G91 G81 Z#26;

(Сверлить до глубины Z)

#20=#20-1;

(Обратный отсчет)

IF [#20 EQ 0] GOTO5;

(Все отверстия просверлены)

G00 X#24 Y#25;

(Двигаться вдоль наклона)

N5 END1; 
M99;

(Возврат к месту вызова)

Псевдонимы

Псевдоним - это способ назначить G-код или М-код последовательности G65 P#####. Например, в 

примере 2 было бы проще записать: G06 X.5 Y.25 Z.05 F10. T10;
При использовании псевдонимов переменная может передаваться с кодом G; переменная не может 

передаваться с кодом М.
Здесь был заменен неиспользуемый G-код: G06 вместо G65 P9010. Чтобы приведенный выше блок 

работал, необходимо присвоить параметру, связанному с подпрограммой 9010, значение 06 (Параметр 

91). Обратите внимание, что G00, G65, G66, и G67 не могут использоваться для совмещения имен. Все 

остальные коды от 1 до 255 могут использоваться для совмещения имен.
Номера программ от 9010 до 9019 зарезервированы для совмещения имен G-кодов. В следующей 

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

128

.

Параметр Haas

91

92

93

94

95

93

97

98

99

100

Код О

9010

9011

9012

9013

9014

9015

9016

9017

9018

9019

Параметр Haas

81

82

83

84

85

86

87

88

89

90

Вызов 

макроса M

9000

9001

9002

9003

9004

9005

9006

9007

9008

9009

Псевдонимы кода G

Псевдонимы кода M

Установка параметра совмещения имени в значение 0 (ноль) не разрешает присвоение имени 

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

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

с

вязь

 

с

 

внешними

 

усТройсТвами

 - dPRnt[ ]

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

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

прогона программ или синхронизировать работу с устройствами пользователя. Для этого используются 

команды POPEN, DPRNT[ ] и PCLOS.

Команды подготовки обмена данными

Фрезерному станку Haas не требуются команды POPEN и PCLOS. Они включены для того, чтобы 

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

Форматный вывод данных

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

порт. На последовательный порт можно направить любой текст и любую переменную. Форма 

оператора DPRNT: DPRNT [<текст> <#nnnn[wf]>... ] ;
Команда DPRNT должна быть единственной командой в блоке. В предыдущем примере <текст> - это 

любые буквы от A до Z или знаки (+,-,/,* и пробел). При вводе звездочки она преобразуется в пробел. 

<#nnnn[wf]> - это переменная, за которой указан формат. Номером переменной может быть любая 

макропеременная. Указание формата [wf] является обязательным и состоит из двух цифр в квадратных 

скобках. Помните, что макропеременные - это действительные числа с целой и дробной частями. 

Первая цифра в обозначении формата указывает общее число знаков, зарезервированных на выходе 

для целой части. Вторая цифра указывает на общее число знаков, зарезервированных для дробной 

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

или превышать восемь. Таким образом, следующие форматы являются недействительными: [00] [54] 

[45] [36] /* недействительные форматы */
Между целой и дробной частью числа печатается десятичная точка. Дробная часть округляется до 

наименьшего значимого разряда. Если для дробной части зарезервировано 0 знаков, десятичная 

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

целой части резервируется как минимум один разряд, даже если она равна нулю. Если целая часть 

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

Если целая часть числа имеет больше знаков, чем зарезервировано, то поле печати расширяется так, 

чтобы вместить все цифры.
После каждого блока DPRNT отправляется команда возврата каретки.
Примеры DPRNT[ ]

Код

Вывод

129

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[25]] ;

X-123.45679 ;

Исполнение

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

внимательно следить за тем, где в программе появляются операторы DPRNT, особенно с целью 

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

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

фактически приведет к упреждающему просмотру двух блоков).
   G103 P1;
Для отмены ограничения упреждающего просмотра измените команду на G103 P0. G103 нельзя 

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

Редактирование

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

При редактировании выражений будьте внимательны, следите за парностью скобок.
Функцию DPRNT[ ] можно редактировать так же, как комментарий. Ее можно удалить, перенести как 

единое целое или отредактировать отдельные элементы в скобках. Ссылки на переменные и описания 

формата необходимо изменять как единое целое. Если вы хотите изменить [24] на [44], выделите 

курсором [24], введите [44] и нажмите кнопку записи (write). Помните, что для перемещения по 

длинным выражениям DPRNT[ ] можно использовать ручку подвода.
Адреса, содержащие выражения, могут иметь несколько запутанный вид. В этом случае символьный 

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

выражение в Х:
   G1 G90 X [COS [90]] Y3.0; 

ПРАВИЛЬНО

Здесь 

Х

 и скобки являются самостоятельным элементом и могут редактироваться отдельно. Если 

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

плавающей точкой.
   G1 G90 X 0 Y3.0 ;  

НЕПРАВИЛЬНО

Выполнение приведенного выше блока вызовет сигнал об ошибке. Правильный вид блока должен быть 

таким:
   G1 G90 X0 Y3.0; 

ПРАВИЛЬНО

Обратите внимание на отсутствие пробела между X и нулем (0). ПОМНИТЕ, что когда вы используете 

текстовый символ сам по себе, он является адресным выражением.

130

ф

ункции

 

макросов

 F

anuC

не

 

включенные

 

в

 чпу H

aas

 

В этом разделе приведены функции макропрограмм FANUC, отсутствующие в системе управления 

Haas.

Совмещение имени M заменяет G65 Pnnnn на Mnn PROGS 9020-9029.
G66

Модальный вызов в каждом блоке перемещения

G66.1

Модальный вызов в каждом блоке перемещения

G67

Модальная отмена

M98

Совмещение имени, T-код программа 9000, переменная #149, бит 

разрешения

M98

Совмещение имени, S-код программа 9029, переменная #147, бит 

разрешения

M98

Совмещение имени, В-код программа 9028, переменная #146, бит 

разрешения

ПРОПУСК/N

N=1..9

#3007

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

#4201-#4320

Модальные данные текущего блока

#5101-#5106

Текущее отклонение сервопривода

Имена переменных для отображения
ATAN [ ]/[ ]

Арктангенс, версия FANUC

BIN [ ]

Преобразование из BCD (двоично-десятичного кода) в BIN 

(двоичный)

BCD [ ]

Преобразование из BIN (двоичного кода) в BCD (двоично-

десятичный)

FUP [ ]

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

LN [ ]

Натуральный логарифм

EXP [ ]

Возведение в степень с основанием Е

ADP [ ]

Перемасштабирование переменной до целого числа

BPRNT [ ]

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

вместо некоторых отсутствующих макрофункций FANUC.
GOTO-nnnn
Поиск блока для перехода в отрицательном направлении (т.е. в сторону начала программы) не 

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

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

131

в

изуальные

 

бысТрые

 

коды

Для запуска Visual Quick Code (VQC) (визуального быстрого кода, ВБК) нажмите MDI/DNC (РВД/ГЧПУ), 

а затем нажмите PROGRM CONVRS. Выберите ВБК из меню со вкладками.

в

ыбор

 

каТегории

При помощи клавиш со стрелками выберите категорию, под описание которой подходит 

обрабатываемая деталь, и нажмите клавишу WRITE (запись). На дисплее появится набор рисунков, 

соответствующих этой категории.

.

VQC для крепежных отверстий, 

расположенных по окружности

Экран ввода данных для крепежных отвер-

стий, расположенных по окружности

Выбор шаблона

При помощи клавиш со стрелками выберите подходящий шаблон. После нажатия клавиши WRITE 

(запись) на дисплее отобразится контур детали, и ЧПУ будет ожидать ввода данных, необходимых для 

выполнения обработки.

Ввод данных

ЧПУ запросит ввести данные, характеризующие деталь. После ввода данных ЧПУ запросит 

определить место для вставки сгенерированных G-кодов:
1) Select/Create a Program (Выбрать/создать программу)
Отроется окно, предлагающее пользователю выбрать имя программы. Выберите нужное имя и 

нажмите клавишу WRITE (запись). В результате в указанную программу будут добавлены новые 

строки кодов. Если программа уже существует, VQC введет новые строки в самое начало программы. 

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

(запись). В этом случае строки кода будут добавлены к новой программе.
2) Add to Current Program (Добавить к текущей программе) - Код, сгенерированный VQC, будет

добавлен в позицию ниже курсора. 
3) MDI (Ручной ввод данных) - Код будет выведен в область ручного ввода данных. Примечание:

Текущее содержимое области ручного ввода данных будет затерто.
4) Cancel (Отмена) - Окно будет закрыто и на экране отобразятся программные значения.
ПРИМЕЧАНИЕ:   Программу можно также отредактировать в режиме Edit (редактирование). 

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

132

п

одпрограммы

Подпрограммы () обычно представляют собой последовательности команд, которые повторяются 

в программе несколько раз. Вместо повторения этих команд много раз в главной программе 

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

подпрограмму. Подпрограмма вызывается при помощи M97 и адреса P. P код совпадает с порядковым 

номером (Onnnnn) вызываемой подпрограммы, который находится после М30. Подпрограмма 

вызывается при помощи M98 и адреса P. P адрес с M98 составляют номер программы. 
Фиксированные циклы представляют собой самый распространенный пример использования 

подпрограммы. Положения X и Y отверстий помещаются в отдельной программе, а затем вызываются. 

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

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

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

в

нешняя

 

подпрограмма

Внешняя подпрограмма – это отдельная программа, к которой несколько раз обращается основная 

программа. Локальные подпрограммы запускаются (вызываются) при помощи M98 и Pnnnnn, который 

отсылает к номеру программы подпрограммы.

Пример внешней подпрограммы
O00104 (подпрограмма с M98)

Подпрограмма

T1 M06 

O00105

G90 G54 G00 X1.5 Y-0.5

X.5 Y-.75

S1406 M03

Y-2.25

G43 H01 Z1. M08

G98 X1.5 Y-2.5

G81 G99 Z-0.26 R0.1 F7.

G99 X3.5

M98 P105  (Вызов подпрограммы O00105)

X4.5 Y-2.25
Y-.75

T2 M06

X3.5 Y-.5

G90 G54 G00 X1.5 Y-0.5

G80 G00 Z1.0 M09

S2082 M03 

G53 G49 Z0. M05

G43 H02 Z1. M08

M99

G83 G99 Z-.75 Q0.2 R0.1 F12.5  

4.50
3.50
1.50

.50

.50

.75

2.25

2.50

1

2

3

4

5

6

7

8

.75

.375

M98 P105  (Вызов подпрограммы O00105) 

T3 M06  
G90 G54 G00 X1.5 Y-0.5
S750 
G43 H03 Z1. M08 
G84 G99 Z-.6 R0.1 F37.5   
M98 P105  (Вызов подпрограммы O00105) 
G53 G49 Y0. 
M30 (Закончить программу) 

133

п

ример

 

локальной

 

подпрограммы

Локальная подпрограмма - это блок кода в главной программе, к которому главная программа 

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

Pnnnnn, который отсылает к номеру строки N локальной подпрограммы.
Формат локальной подпрограммы подразумевает завершение главной программы при помощи M30, а 

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

строки N в начале и M99 в конце, который отошлет программу обратно к следующей строке в главной 

программе.

Пример локальной подпрограммы

O00104 (локальная подпрограмма с M97)

T1 M06

G90 G54 G00 X1.5 Y-0.5

S1406 M03

G43 H01 Z1. M08

G81 G99 Z-0.26 R0.1 F7.

M97 P1000 (вызов локальной подпрограммы в строке N1000)

T2 M06

G90 G54 G00 X1.5 Y-0.5

S2082 M03

G43 H02 Z1. M08

G83 G99 Z-.75 Q0.2 R0.1 F12.5

M97 P1000 (вызов локальной подпрограммы в строке N1000)

T3 M06

G90 G54 G00 X1.5 Y-0.5

S750

G43 H03 Z1. M08

G84 G99 Z-.6 R0.1 F37.5

M97 P1000 (вызов локальной подпрограммы в строке N1000)

G53 G49 Y0. 

M30 (Закончить программу)

N1000 (начало локальной подпрограммы)

X.5 Y-.75

Y-2.25

G98 X1.5 Y-2.5

G99 X3.5

X4.5 Y-2.25

Y-.75

X3.5 Y-.5

G80 G00 Z1.0 M09

G53 G49 Z0. M05

M99

п

римеры

 

подпрограмм

 

сТандарТных

 

циклов

Подпрограмма

O1234 (Пример подпрограммы фиксированного 

цикла)

O1000 (X,Y 

T1 M06

расположение)

G90 G54 G00 X.565 Y-1.875 S1275 M03

X 1.115 Y-2.750

G43 H01 Z.1 M08

X 3.365 Y-2.875

G82 Z-.175 P.03 R.1 F10.

X 4.188 Y-3.313

134

M98 P1000

X 5.0 Y-4.0

G80 G00 Z1.0 M09

M99

T2 M06
G00 G90 G54 X.565 Y-1.875 S2500 M03
G43 H02 Z.1 M08
G83 Z-.720 Q.175 R.1 F15.
M98 P1000
G00 G80 Z1.0 M09
T3 M06
G00 G90 G54 X.565 Y-1.875 S900 M03
G43 H03 Z.2 M08
G84 Z-.600 R.2 F56.25
M98 P1000
G80 G00 Z1.0 M09
G28 G91 Y0 Z0
M30

п

одпрограммы

 

при

 

нескольких

 

Точках

 

крепления

Подпрограммы полезны для обработки одной и той же детали в разных положениях X и Y в станке. 

Например, на столе установлено шесть тисков. Для каждых тисков будет использоваться новый 

ноль по X, Y. Программа обращается к ним при помощи коррекции детали G54 – G59. Пользуйтесь 

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

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

X, Y. После установки нулевого положения X, Y для каждой детали на странице коррекций, можно 

начинать программирование.
На рисунке показан вид настройки на столе станка. Например, каждую из этих шести деталей 

необходимо просверлить в центре, в нуле X и Y.

Главная программа

Подпрограмма

O2000

O3000 

T1 M06

X0 Y0

G00 G90 G54 X0 Y0 S1500 M03

G83 Z-1.0 Q.2 R.1 F15.

G43 H01 Z.1 M08

G00 G80 Z.2

M98 P3000

M99

G55

X0, Y0

X0, Y0

X0, Y0

X0, Y0

X0, Y0

X0, Y0

G54

G55

G56

G57

G58

G59

M98 P3000
G56
M98 P3000
G57
M98 P3000
G58
M98 P3000G59
M98 P3000
G00 Z1.0 M09
G28 G91 Y0 Z0
M30

135

п

рограммирование

 4-

й

 

и

 5-

й

 

осей

..

+32°

-32°

+32°

-32°

Ось B 360

°

Ось A ±120

°

ПЕРЕДНЯЯ

СТОРОНА

ОСЬ В

ОСЬ А

Движение осей на фрезерном станке VR-11 и Haas TRT 210

с

оздание

 

пяТикоординаТных

 

программ

Большинство пятимерных программ довольно сложны, и их следует писать при помощи пакета CAD/

CAM. Необходимо определить длину рычага и расчетную длину станка и ввести их в эти программы.
У каждого станка своя длина рычага. Это расстояние от центра вращения головки шпинделя до 

нижней поверхности универсальной инструментальной оправки. Длину рычага можно найти в 

Параметре настройки 116, а также она выгравирована на универсальном инструментальной оправке , 

поставляемом с 5-осными станками.

.

Ось 

вращения

Расчетная длина

Длина рычага

Всего

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

Измерительная длина - это расстояние от нижнего фланца универсальной инструментальной оправки 

до режущей кромки инструмента. Это расстояние можно вычислить, расположив на столе индикатор 

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

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

расстояние от режущей кромки инструмента до Z0. Это и будет измерительная база.
Полная база - это расстояние от центра вращения шпиндельной головки до режущей кромки 

инструмента. Ее можно вычислить, сложив измерительную базу и разводную базу. Это число вводится 

в программу CAD/CAM, которая его использует в вычислениях.

Смещения

Окно рабочих коррекций можно вывести в окне коррекций нажатием клавиши Page Up (Страница 

вверх). Коррекции от G54 до G59 или то G110 до G129 можно задавать при помощи клавиши Part 

Zero Set (Установка нуля детали). Установите оси в начало координат детали для обрабатываемой 

детали. При помощи курсора выберите нужную ось и рабочий номер. Нажмите клавишу Part Zero 

Set (Установка нуля детали), и текущее положение станка будет автоматически сохранено в данном 

адресе. Это работает только при выбранном окне рабочих коррекций нуля. Обратите внимание, что 

136

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

автоматически.
Рабочие координаты обычно вводятся в виде положительных чисел. Рабочие координаты вводятся в 

таблицу только в виде чисел. Чтобы ввести значение X, равное X2.00, в G54, переместите курсор в 

столбец X и введите 2.0.

Примечания по программированию для пяти осей

Использование строгой синхронизации в ущерб разрешению в геометрии в системе CAD/CAM 

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

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

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

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

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

G-коды

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

А и В всегда программируются в градусах.
Для одновременного движения по 5-ти осям должна действовать инверсия времени G93. В режиме 

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

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

всех осей в блоке кода.
Если возможно, ограничьте постпроцессор (программное обеспечение САПР/САП); максимальная 

скорость в режиме G93 составляет 32 градусов в минуту. Это приведет к более плавному движению, 

что может быть необходимо при веерной обработке наклонных стенок.

M-коды

Внимание! Настоятельно рекомендуется, чтобы тормоза A/B были приведены в действие 

при выполнении любых не связанных с 5-й осью перемещений. Обработка с отключенными 

тормозами может привести к чрезмерному износу редукторов.

M10/M11 включает/выключает тормоз оси A
M12/M13 включает/выключает тормоз оси B
При обработке по 4-й или 5-й оси станок будет делать паузу между блоками. Эта пауза нужна для 

отпускания тормоза оси A и/или B. Чтобы избежать этой задержки и обеспечить более плавную работу 

станка, программируйте M11 и/или M13 непосредственно перед G93. M-коды отпустят тормоза, что 

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

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

Настройки

Для программирования 4-й и 5-й осей используется несколько параметров настройки. См. настройки 

30, 34 и 48 для 4-й оси и 78, 79 и 80 для 5-й оси.
Параметр настройки 85 следует установить на .0500 для обработки по 5-й оси. Значения параметра 

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

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

Внимание! При обработке в режиме 5-ти осей может возникать неправильное расположение и 

увеличение длины хода, если коррекция на длину инструмента (H-code) не отменена. Чтобы 

избежать этой проблемы, используйте G90 G40, H00 и G49 в первых блоках после смены 

инструмента. Эта проблема может возникать при смешивании программирования для 3-х 

137

и 5-ти осей, перезапуске программы или запуске нового задания, если коррекция на длину 

инструмента по-прежнему действует.

Скорости подачи

Скорость подачи должна быть задана командой для каждой строки кода 4-й и/или 5-й оси. При 

сверлении скорость подачи должна быть в пределах 75 дюймов в минуту. Рекомендуемая скорость 

подачи для чистовой 3-осевой обработки не должна превышать 50-60 дюйм/мин с припуском для 

каждой чистовой операции не менее .0500" или .0750".
Ускоренные перемещения не разрешаются; ускоренные перемещения, входящие в отверстия и 

выходящие из них (цикл сверления с выводом), не поддерживаются.
При программировании одновременного движения по 5-ти осям требуется меньший допуск по 

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

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

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

превышать 100 дюймов в минуту.

Подвод 4-й и 5-й оси

Подвод вручную для пятой оси во всех отношениях аналогичен подводу для всех остальных осей. 

Исключением является способ выбора подвода между осью A и осью B.
По умолчанию при нажатии клавиш «+A» и «-A» для толчковой подачи выбирается ось A. Ось 

B

 можно 

выбрать для толчковой подачи нажатием кнопки Shift, а затем клавиши «+A» или «-A».
EC-300: В режиме толчковой подачи отображается A1 и A2, используйте «A» для толчковой подачи A1 

и «Shift+A» для толчковой подачи A2.

EC-300: использование спутников и 4-й оси

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

стола на спутнике 1 обозначается «A1», а ось на спутнике 2 – «A2». Примеры использования:
Для ручной подачи оси A1 введите «A1» и нажмите «HAND JOG» (толчковая подача).
Для толчковой подачи с помощью клавиш используйте клавиши толчковой подачи +/-A для оси A1 и 

кнопки +/-В для оси A2.
Для возврата в нулевую точку оси A на спутнике #2 введите «A2» и нажмите «ZERO SINGL AXIS» 

(обнулить одну ось).

Функция зеркального отражения:

 Если для зеркального отражения оси A используется G101, то 

зеркальное отражение включается для обеих осей A. Когда спутник #1 находится в зоне обработки, 

в нижней части экрана показывается индикация "A1-MIR". Когда спутник #2 находится в станке, 

показывается "A2-MIR". Настройки зеркального отражения имеют разное поведение. Если настройка 

48 Mirror Image A-Axis (зеркальная обработка по оси А) включена (ON), то зеркалируется только ось А 

спутника 1 и показывается индикация A1-MIR.
Если настройка 80 (бит 20 MAP 4TH AXIS параметра 315 установлен на 1, название настройки 80 

такое же, как у настройки 48 - Mirror Image A-Axis (зеркальное отражение по оси А)) включена (ON), 

включается отражение по оси А для спутника #2. Когда спутник #2 находится во фрезерном станке, 

показывается индикация "A2-MIR".

Процедура восстановления после удара

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

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

кнопку "Recover" (восстановить) или выключать питание. Для восстановления после аварийной 

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

шпиндель при помощи функции Vector Jog (Векторный подвод). Для этого нажмите букву «V» на 

вспомогательной клавиатуре, нажмите «Handle Jog» (толчковая подача) и пользуйтесь маховичком 

 

 

 

 

 

 

 

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