Haas Руководство оператора фрезерного станка 96-RU8200 (Редакция C Июнь 2015 г) - часть 16

 

  Главная      Книги - Разные     Haas Руководство оператора фрезерного станка 96-RU8200 (Редакция C Июнь 2015 г)

 

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

 

   

 

   

 

содержание      ..     14      15      16      17     ..

 

 

 

Haas Руководство оператора фрезерного станка 96-RU8200 (Редакция C Июнь 2015 г) - часть 16

 

 

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

 

переменных

 

228

#8550-#8567 

Оснастка

Эти

 

переменные

 

дают

 

информацию

 

об

 

инструменте

Установите

 

переменную

 

#8550

на

 

номер

 

инструмента

 

или

 

номер

 

группы

 

инструмента

затем

 

обращайтесь

 

к

 

данным

для

 

выбранного

 

инструмента

/

группы

 

инструментов

 

с

 

помощью

 

макросов

 

только

 

для

чтения

 

#8551

-

#8567

Если

 

задать

 

номер

 

группы

 

инструментов

выбранный

инструмент

 – 

это

 

следующий

 

инструмент

 

в

 

этой группе

.

ПРИМЕЧАНИЕ

:

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

 #1801-#2000 

обеспечивают

 

доступ

 

к

 

тем

 

же

данным

что

 #8550-#8567.

6.3.4

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

 

переменных

Обращение

 

ко

 

всем

 

переменным

 

выполняется

 

с

 

помощью

 

символа

 

номера

 (

#

), 

после

которого

 

указывается

 

положительное

 

число

#1

#101

и

#501

.

Переменные

 - 

это

 

десятичные

 

значения

представленные

 

в

 

виде

 

числе

 

с

 

плавающей

точкой

Если

 

переменная

 

ни

 

разу

 

не

 

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

она

 

имеет

 

особое

неопределенное

 (

undefined

значение

Оно

 

указывает

 

на

 

то

что

 

переменная

 

еще

не

 

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

Переменную

 

можно

 

назначить

 

неопределенной

 (

undefined

с

помощью

 

специальной

 

переменной

 

#0

#0

 

имеет

 

значение

 «

неопределенное

» 

или

0.0, 

в

 

зависимости

 

от

 

контекста

Косвенные

 

ссылки

 

на

 

переменные

 

можно

 

выполнять

заключением

 

номера

 

переменной

 

в

 

скобки

:

#[

Выражение

]

Выражение

 

вычисляется

 

и

 

его

 

результат

 

становится

 

номером

 

переменной

.

Например

:

% ;
#1=3 ;
#[#1]=3.5 + #1 ;
% ;

Это

 

выражение

 

присваивает

 

переменной

 #3 

значение

 6.5.

Переменную

 

можно

 

использовать

 

вместо

 

адреса

 G-

кода

где

 

адрес

 

относится

 

к

буквам

 

A

-

Z

.

В

 

блоке

N1 G0 G90 X1.0 Y0 ;
;

переменным

 

можно

 

присвоить

 

следующие

 

значения

:

% ;
#7=0 ;
#11=90 ;
#1=1.0 ;
#2=0.0 ;
% ;

и

 

заменить

 

блок

 

на

:

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

 

опций

 

229

N1 G#7 G#11 X#1 Y#2 ;
;

Значения

 

в

 

переменных

 

во

 

время

 

выполнения

 

программы

 

используются

 

как

значения адресов

.

6.3.5

Подстановка

 

адреса

Обычно

 

для

 

задания

 

управляющих

 

адресов

 

A

 - 

Z

 

используется

 

адрес

 

с

 

числом

 

после

него

Например

:

G01 X1.5 Y3.7 F20. ;
;

задаёт

 

адресам

 

G

X

Y

 

и

 

F

 

значения

 1, 1.5, 3.7 

и

 20.0, 

соответственно

и

 

таким

образом

 

дает

 

указание

 

системе

 

управления

 

перемещаться

 

линейно

G01

в

положение

 X=1.5 Z=3.7 

со

 

скоростью

 

подачи

 20" 

в

 

минуту

Синтаксис

 

макроса

позволяет

 

заменять

 

значение

 

адреса

 

на

 

любую

 

переменную

 

или выражение

.

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 

дюйма

 

на

 

оборот

Синтаксис

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

 

позволяет

 

заменять

 

значение

 

адреса

 

на

 

любую

 

переменную

 

или

выражение

.

Предыдущий

 

оператор

 

можно

 

заменить

 

следующим

 

кодом

:

% ;
#1=1 ;
#2=1.5 ;
#3=3.7 ;
#4=20 ;
G#1 X[#1+#2] Y#3 F#4 ;
% ;

Допустимый

 

синтаксис

 

адресов

 

A

 - 

Z

 (

исключая

 

N

 

или

 

O

следующий

:

Если

 

значение

 

переменной

 

не

 

соответствует

 

диапазону

 

адреса

система

 

управления

выдает

 

сигнал

 

об

 

ошибке

Например

следующий

 

текст

 

программы

 

приводит

 

к

сигналу

 

об

 

ошибке

 

из

-

за

 

ошибки

 

диапазона

потому

 

что

 

значения

 

диаметра

инструментов

 

лежат

 

в

 

диапазоне

0-200.

% ;

<

адрес

><-><

переменная

>

A-#101

<

адрес

><->[<

выражение

>]

Z[#5041+3.5]

<

адрес

><->[<

выражение

>]

Z-[SIN[#1]]

Подстановка

 

адреса

 

230

#1=250 ;
D#1 ;
% ;

Когда

 

переменная

 

или

 

выражение

 

используется

 

в

 

качестве

 

значения

 

адреса

их

значение

 

округляется

 

до

 

наименьшего

 

значимого

 

разряда

Если

 #1=.123456, 

то

G01#1 

переместит

 

станок

 

в

 

положение

 ,1235 

по

 

оси

X. 

Если

 

система

 

управления

работает

 

в

 

метрическом

 

режиме

станок

 

переместится

 

в

 

положение

 .123 

по

 

оси Х

.

Если

 

для

 

замены

 

значения

 

адреса

 

используется

 

неопределенная

 

переменная

эта

адресная

 

ссылка

 

игнорируется

Например

если

 

переменная

 #1 

не

 

определена

,

то блок

G00 X1.0 Y#1 ;
;

становится

G00 X1.0 ;
;

и

 

перемещения

 

по

 

оси

 Y 

не происходит

.

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

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

 - 

это

 

строки

 

кода

позволяющие

 

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

 

манипулировать

системой

 

управления

используя

 

характеристики

свойственные

 

любому

стандартному

 

языку

 

программирования

Сюда

 

входят

 

функции

операторы

,

условные

 

и

 

арифметические

 

выражения

операторы

 

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

 

и

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

.

Функции

 

и

 

операторы

 

используются

 

в

 

выражениях

 

для

 

изменения

 

переменных

 

или

значений

Выражения

 

обязательно

 

содержат

 

операторы

в

 

то

 

время

 

как

 

функции

просто

 

облегчают

 

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

.

Функции

Функции

 - 

это

 

встроенные

 

программы

которыми

 

может

 

пользоваться

 

программист

.

Все

 

функции

 

имеют

 

следующую

 

форму

: <

имя

_

функции

> [

аргумент

], 

и

 

возвращают

десятичные

 

значения

 

с

 

плавающей

 

точкой

В

 

систему

 

управления

 HAAS 

включены

следующие

 

функции

:

Функция

Аргумент

Возвращает

Примечания

SIN[ ]

Градусы

Десятичное

Синус

COS[ ]

Градусы

Десятичное

Косинус

TAN[ ]

Градусы

Десятичное

Тангенс

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

 

опций

 

231

Примечания

 

по

 

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

 

функций

Функция

 

округления

 

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) ;

ATAN[ ]

Десятичное

Градусы

Арктангенс

 

То

 

же

 

что

 

и

 

FANUC ATAN[ ]/[1]

SQRT[ ]

Десятичное

Десятичное

Квадратный

 

корень

ABS[ ]

Десятичное

Десятичное

Модуль

 

числа

ROUND[ ]

Десятичное

Десятичное

Округление

 

десятичной

 

дроби

FIX[ ]

Десятичное

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

Отбрасывание

 

младших

 

разрядов

ACOS[ ]

Десятичное

Градусы

Арккосинус

ASIN[ ]

Десятичное

Градусы

Арксинус

#[ ]

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

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

Разыменование

 

переменной

DPRNT[ ]

Текст

 

в

 

кодировке

 

ASCII

Внешний

 

вывод

Функция

Аргумент

Возвращает

Примечания

Подстановка

 

адреса

 

232

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.

Операторы

Операторы

 

подразделяются

 

на

 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.

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

 

опций

 

233

Арифметические

 

операторы

Арифметические

 

операторы

 

состоят

 

из

 

обычных

 

унарных

 

и

 

бинарных

 

операторов

.

Они

 

указаны ниже

Логические

 

операторы

К

 

логическим

 

операторам

 

относятся

 

операторы

работающие

 

с

 

значениями

двоичных

 

битов

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

 - 

это

 

числа

 

с

 

плавающей

 

точкой

При

применении

 

логических

 

операторов

 

к

 

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

 

используется

 

только

 

целая

часть

 

числа

 

с

 

плавающей

 

точкой

Логические

 

операторы следующие

:

OR

 – 

Логическое

 

ИЛИ

 

для

 

двух

 

значений

XOR

 - 

Исключающее

 

ИЛИ

 

для

 

двух

 

значений

AND

 – 

Логическое

 

И

 

для

 

двух

 

значений

Примеры

:

% ;
#1=1.0 ;
#2=2.0 ;
#3=#1 OR #2 ;
% ;

#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

-

Бинарное

 

вычитание

#1=#1-1

*

Умножение

#1=#2*#3 

/

Деление

#1=#2/4

MOD

Остаток

#1=27 MOD 20 (#1 

содержит

 7)

Подстановка

 

адреса

 

234

Здесь

 

переменная

 

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

ПРИМЕЧАНИЕ

:

Чтобы

 

достичь

 

нужных

 

результатов

будьте

 

очень

осторожны

 

при

 

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

 

логических

 

операторов

.

Выражения

Выражения

 

определяются

 

как

 

любая

 

последовательность

 

переменных

 

и

операторов

заключенная

 

в

 

квадратные

 

скобки

 

[

 

и

 

]

Есть

 

два

 

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

 

для

выражений

условные

 

выражения

 

или

 

арифметические

 

выражения

Условные

выражения

 

возвращают

 

значения

 

ЛОЖНО

 (0.0) 

или

 

ИСТИННО

 (

любое

 

отличное

 

от

нуля

). 

Арифметические

 

выражения

 

определяют

 

значение

 

с

 

помощью

арифметических

 

операторов

 

и функций

.

Арифметические

 

выражения

Арифметическим

 

является

 

любое

 

выражение

использующее

 

переменные

,

операторы

 

или

 

функции

Арифметическое

 

выражение

 

возвращает

 

некоторое

значение

Обычно

 

арифметические

 

выражения

 

используются

 

в

 

операторах

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

но

 

не

 

ограничиваются ими

.

Примеры

 

арифметических

 

выражений

:

% ;
#101=#145*#30 ;
#1=#1+1 ;
X[#105+COS[#101]] ;
#[#2000+#13]=0 ;
% ;

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

 

опций

 

235

Условные

 

выражения

В

 

системе

 

управления

 Haas 

все

 

выражения

 

задают

 

условное

 

значение

Это

 

значение

равно

 

либо

 0.0 (

ЛОЖНО

), 

либо

 

не

 

равно

 

нулю

  (

ИСТИННО

). 

Контекст

в

 

котором

используется

 

выражение

определяет

является

 

ли

 

оно

 

условным

Условные

выражения

 

используются

 

в

 

операторах

 

IF

 

и

 

WHILE

а

 

также

 

в

 

команде

 

M99

Условные

выражения

 

могут

 

использовать

 

булевы

 

операторы

 

для

 

определения

 

ИСТИННОСТИ

или

 

ЛОЖНОСТИ

условия

.

Условная

 

конструкция

 

M99

 

используется

 

только

 

в

 

системе

 

управления

 Haas. 

Без

макросов

 

M99

 

в

 

системе

 

управления

 Haas 

способна

 

выполнять

 

безусловный

 

переход

к

 

любой

 

строке

 

в

 

текущей

 

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

если

 

поместить

 

в

 

эту

 

строку

 

код

 

Р

.

Например

:

N50 M99 P10 ;
;

выполняет

 

переход

 

на

 

строку

 

N10

Команда

 

не

 

возвращает

 

управление

 

вызывающей

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

Если

 

макросы

 

включены

M99

 

можно

 

использовать

 

с

 

условным

выражением

 

для

 

выполнения

 

условного

 

перехода

Чтобы

 

выполнить

 

переход

если

переменная

 

#100

 

меньше

 10, 

можно

 

составить

 

строку

 

выше

 

следующим образом

N50 [#100 LT 10] M99 P10 ;
;

В

 

этом

 

случае

 

переход

 

произойдёт

только

 

если

 

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

размер

 

массива

) ;

Подстановка

 

адреса

 

236

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

 

и

 

т

.

д

.

обязательна

.

Управляющие

 

операторы

Управляющие

 

операторы

 

позволяют

 

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

 

выполнять

 

как

 

условные

так

 

и

безусловные

 

переходы

Они

 

также

 

дают

 

возможность

 

повторять

 

выполнение

 

части

текста

 

программы

 

в

 

зависимости

 

от условия

.

Безусловный

 

переход

 (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

.

Пример

Можно

 

развить

 

следующий

 

скелет

 

текста

 

программы

 

для

 

составления

программы

которая

 

наносит

 

серийные

 

номера

 

на

 

детали

:

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

 

опций

 

237

% ;
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 ;
% ;

С

 

помощью

 

приведенной

 

выше

 

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

 

можно

 

использовать

 

этот

 

вызов

,

чтобы

 

гравировать

 

пятую

 

цифру

:

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 [<

Подстановка

 

адреса

 

238

условное

 

выражение

>

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

Здесь

 

условие

 

относится

 

только

 

к

 

части

 

M99

 

оператора

Станок

 

получает

 

команду

перейти

 

к

 

X0

Y0

 

независимо

 

от

 

того

является

 

ли

 

выражение

 

истинным

 

или

 

ложным

.

В

 

зависимости

 

от

 

значения

 

выражения

 

выполняется

 

только

 

переход

 

M99

.

Рекомендуется

 

использовать

 

вариант

 

IF GOTO

если

 

необходимо

 

обеспечить

переносимость кода

.

Условное

 

выполнение

 (IF THEN)

Исполнение

 

управляющих

 

операторов

 

может

 

также

 

осуществляться

 

с

 

помощью

конструкции

 

IF THEN

Формат следующий

:

IF [<

условное

 

выражение

>

] THEN <

оператор

>

;
;

ПРИМЕЧАНИЕ

:

Для

 

сохранения

 

совместимости

 

с

 

синтаксисом

 FANUC

оператор

 

THEN

 

нельзя

 

использовать

 

с

 

GOTOn

.

Этот

 

формат

 

традиционно

 

используется

 

для

 

условных

 

операторов

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

,

например

:

IF [#590 GT 100] THEN #590=0.0 ;
;

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

 

опций

 

239

Переменной

 

#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

который

 

выполняет

 

переход

если

переменная

 

инициализирована

 

и

 

имеет

 

какое

-

либо

 

значение

В

 

противном

 

случае

обработка

 

продолжается

 

и

 

выдается

 

сигнал

 

об

 

ошибке

Помните

что

 

при

 

выдаче

сигнала

 

об

 

ошибке

 

происходит

 

останов

 

выполнения программы

.

% ;
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 ;
% ;

Подстановка

 

адреса

 

240

Эта

 

программа

 

выполняет

 

операторы

 

между

 

DOn

 

и

 

ENDn

пока

 

условное

 

выражение

остается

 

истинным

Скобки

 

в

 

выражении

 

обязательны

Если

 

выражение

 

становится

ложным

то

 

далее

 

исполняется

 

блок

 

после

 

ENDn

Вместо

 

WHILE

 

можно

 

использовать

краткое

 

написание

 

WH

Часть

 

оператора

 

DOn

-

ENDn

 – 

согласованная

 

пара

Значение

 n

равно

 1-3. 

Это

 

значит

что

 

в

 

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

 

может

 

быть

 

максимум

 

три

 

вложенных

цикла

Вложение

 – 

это

 

цикл внутри цикла

.

Несмотря

 

на

 

то

 

что

 

вложенность

 

операторов

 

WHILE

 

возможна

 

только

 

до

 

трех

уровней

фактически

 

ограничений

 

нет

поскольку

 

каждая

 

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

 

может

 

иметь

до

 

трех

 

уровней

 

вложенности

При

 

необходимости

 

получить

 

вложенность

 

более

  3

уровней

 

можно

 

вынести

 

фрагмент

 

с

 

тремя

 

младшими

 

уровнями

 

вложенности

 

в

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

 

и

 

таким

 

образом

 

обойти ограничение

.

Если

 

в

 

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

 

используется

 

два

 

независимых

 

цикла

 

WHILE

они

 

могут

использовать

 

один

 

и

 

тот

 

же

 

индекс

 

вложенности

Например

:

% ;
#3001=0 (

ОЖИДАТЬ

 500 

МИЛЛИСЕКУНД

) ;

WH [#3001 LT 500] DO1 ;
END1 ;
<

Другие

 

операторы

>

#3001=0 (

ОЖИДАТЬ

 300 

МИЛЛИСЕКУНД

) ;

WH [#3001 LT 300] DO1 ;
END1 ;
% ;

Можно

 

использовать

 

GOTO

 

для

 

перехода

 

из

 

фрагмента

ограниченного

 

DO

-

END

но

 

с

помощью

 

GOTO

 

невозможно

 

перейти

 

внутрь

 

цикла

Переход

 

в

 

пределах

 

цикла

,

ограниченного

 

DO

-

END

с

 

помощью

 

GOTO

допускается

.

Бесконечный

 

цикл

 

можно

 

выполнить

если

 

удалить

 

WHILE

 

и

 

выражение

Таким

образом

,

% ;
DO1 ;
<

операторы

>

END1 ;
% ;

выполнение

 

продолжается

 

до

 

нажатия

 

клавиши

 

СБРОС

.

ПРЕДОСТЕРЕЖЕНИЕ

:

Избегайте

 

следующей

 

ошибки

:

% ;
WH [#1] D01 ;
END1 ;
% ;

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

 

опций

 

241

В

 

этом

 

примере

 

выдается

 

сигнал

 

об

 

ошибке

указывающий

что

 

Then

 

не

 

обнаружено

;

Then

 

относится

 

к

 

D01

Замените

 

D01

 (

ноль

на

 

DO1

(

латинская

 

буква

 O).

6.3.6

Опция

 

вызова

 

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

 G65 (

группа

 00)

Команда

 

G65

 

вызывает

 

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

 

и

 

может

 

передавать

 

ей

 

аргументы

.

Используется

 

следующий

 

формат

:

G65 Pnnnn [Lnnnn] [

аргументы

] ;

;

Аргументы

выделенные

 

курсивом

 

в

 

квадратных

 

скобках

являются

необязательными

Для

 

получения

 

дополнительной

 

информации

 

об

 

аргументах

макросов

 

см

раздел

«

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

».

Команда

 

G65

 

требует

 

адреса

 

Р

соответствующего

 

номеру

 

программы

находящейся

в

 

текущий

 

момент

 

в

 

памяти

 

системы

 

управления

При

 

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

 

адреса

 

L

 

вызов

макроса

 

повторяется

 

заданное

 

количество раз

.

В

 

Примере

 1 

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

 1000 

вызывается

 

один

 

раз

 

без

 

передачи

 

ей

 

условий

.

Вызовы

 

G65

 

похожи

 

на

 

вызовы

 

M98

но

 

не

 

идентичны

 

им

Вызовы

 

G65

 

допускают

вложение

 

до

 9 

уровней

это

 

значит

что

 

программа

 1 

может

 

вызвать

 

программу

 2,

программа

 2 

может

 

вызвать

 

программу

 3, 

а

 

программа

 3 

может

 

вызвать

 

программу

4.

Пример

 1:

% ;
G65 P1000 (

Вызов

 

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

 1000 

как

 

макроса

) ;

M30 (

Останов

 

программы

) ;

O01000 (

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

) ;

... 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 ;
O09010 (

Диагональная

 

последовательность

 

отверстий

) ;

F#9 (F=

Скорость

 

подачи

) ;

WHILE [#20 GT 0] DO1 (

Повторить

 T 

раз

) ;

G91 G81 Z#26 (

Сверление

 

на

 

глубину

 Z) ;

#20=#20-1 (

Обратный

 

отсчет

) ;

IF [#20 EQ 0] GOTO5 (

Все

 

отверстия

 

выполнены

) ;

Опция

 

вызова

 

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

 G65 (

группа

 00)

 

242

G00 X#24 Y#25 (

Перемещение

 

по

 

наклону

) ;

N5 END1 ;
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.8:

Псевдонимы

 G- 

и

 M-

кодов

81

82

83

84

85

86

87

88

89

90

9000

9001

9002

9003

9004

9005

9006

9007

9008

9009

Haas Parameter O Code

Haas Parameter

91

92

93

94

95

96

97

98

99

100

9010

9012

9013

9014

9015

9016

9017

9018

9019

O Code

9011

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

 

опций

 

243

Установка

 

параметра

 

совмещения

 

имени

 

в

 

значение

 0 (

ноль

не

 

разрешает

присвоение

 

имени

 

соответствующей

 

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

Если

 

для

 

параметра

псевдонима

 

задан

 G-

код

а

 

соответствующая

 

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

 

не

 

находится

 

в

 

памяти

,

выдается

 

сигнал

 

об

 

ошибке

При

 

вызове

 

макроса

 

G65

кода

 

М

 

с

 

псевдонимом

 

или

кода

 G 

с

 

псевдонимом

 

система

 

управления

 

сначала

 

ищет

 

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

 

в

 

памяти

(

ПАМ

). 

Если

 

она

 

не

 

обнаружена

 

в

 

памяти

система

 

управления

 

далее

 

ищет

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

 

на

 

активном

 

носителе

 (

USB

жестком

 

диске

). 

Если

 

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

 

не

обнаружена

выдается

 

сигнал

 

об ошибке

.

При

 

вызове

 

макроса

 

G65

кода

 

с

 

псевдонимом

 

М

 

или

 

кода

 

с

 

псевдонимом

 G, 

система

управления

 

ищет

 

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

 

в

 

памяти

а

 

затем

если

 

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

 

не

 

удается

обнаружить

, – 

на

 

любом

 

другом

 

активном

 

носителе

Активный

 

носитель

 

может

 

быть

памятью

, USB-

носителем

 

или

 

жестким

 

диском

Если

 

система

 

управления

 

не

 

находит

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

 

в

 

памяти

 

или

 

на

 

активном

 

носителе

выдается

 

сигнал

 

об ошибке

.

6.3.7

Связь

 

с

 

внешними

 

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

 - DPRNT[ ]

Макросы

 

обеспечивают

 

дополнительные

 

возможности

 

для

 

связи

 

с

 

периферийными

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

С

 

помощью

 

устройств

которые

 

обеспечивает

 

пользователь

можно

выполнять

 

оцифровку

 

деталей

создавать

 

отчеты

 

об

 

исполнении

 

программы

 

или

синхронизировать

 

системы

 

управления

Команды

предусмотренные

 

для

 

этого

, –

POPEN

DPRNT[ ]

 

и

PCLOS

.

Команды

 

подготовки

 

обмена

 

данными

Станку

 Haas 

не

 

требуются

 

операторы

 

POPEN

 

и

 

PCLOS

Они

 

включены

 

для

 

того

чтобы

программы

составленные

 

для

 

других

 

блоков

 

управления

 

могли

 

передаваться

 

в

систему

 

управления

Haas.

Форматный

 

вывод

 

данных

Оператор

 

DPRNT

 

позволяет

 

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

 

отправлять

 

форматированный

 

текст

 

в

последовательный

 

порт

На

 

последовательный

 

порт

 

можно

 

направить

 

любой

 

текст

 

и

любую

 

переменную

Форма

 

оператора

 

DPRNT

 

указана ниже

:

DPRNT [<

текст

>

<
#nnnn[wf]>
... ] ;
;

 

 

 

 

 

 

 

содержание      ..     14      15      16      17     ..