Предопределенный массив <GMA>

Предопределенный массив <GMA> предназначен для удобного обращения с параметрами команды многокоординатного перемещения <MULTIGOTO> внутри процедуры обработки, а также при использовании шаблонов обработки этой команды. Массив <GMA>, также как и массив <CLD>, заполняется каждый раз перед обработкой команды. Но если массив <CLD> является универсальным и может использоваться для любой команды, то <GMA> следует использовать только для команды <MULTIGOTO>.

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

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

GMA(<AxisName> {,<RegisterName>})

Здесь:

  • <AxisName> – строковая переменная или константа, содержащая имя управляемой координаты.

  • <RegisterName> – имя регистра, ассоциированного с управляемой координатой (необязательный параметр).

Пример добавления:

GMA(“AxisXPos”)

Обращение к элементам массива <GMA> следует производить по имени управляемой координаты.

GMA[<AxisName>]

Здесь <AxisName> – строковая переменная или константа, содержащая имя управляемой координаты. Например, для управляемой координаты с именем <AxisXPos> обращаться к массиву в процедуре обработки нужно так:

GMA[“AxisXPos”].Vn ! Vn – текущее значение координаты

Примечание: Доступ к элементам массива <GMA> может быть осуществлен не только из программы обработки технологической команды <MultiGoto>, но и из шаблона данной команды. Более подробно об использовании <GMA> в шаблонах написано в разделе <Шаблоны>.

Каждым элементом массива <GMA> является структура, имеющая следующие составляющие:

GMA[<AxisName>].OutFlag

GMA[<AxisName>].Vn

GMA[<AxisName>].Vp

GMA[<AxisName>].Axis

GMA[<AxisName>].Reg

GMA[<AxisName>].TurnCount

GMA[<AxisName>].Dir

  • <GMA[<AxisName>].OutFlag> – поле имеет тип <Integer> (целое) и может содержать только два значения: 0 или 1. Данный признак идентифицирует наличие управляемой координаты с именем <AxisName> в списке текущей команды <MULTIGOTO>. Если в данной команде <MULTIGOTO> координата с именем <AxisName> присутствует, то <OutFlag> имеет значение 1, иначе <OutFlag> равен 0. Поле <OutFlag> может использоваться только для чтения.

  • <GMA[<AxisName>].Vn> – поле имеет тип <Real> (вещественные) и содержит новое значение управляемой координаты с именем <AxisName>, т.е. то значение, которое содержится в текущей команде <MULTIGOTO>. Поле <Vn> может использоваться как для чтения значения, так и для записи в него другого значения (т.е. может находиться слева от оператора присвоения <=>).

  • <GMA[<AxisName>].Vp> – элемент структуры имеет тип <Real> (вещественные) и содержит значение управляемой координаты <AxisName>, присвоенное предыдущей командой <MULTIGOTO>. Элемент <Vp> может использоваться как для чтения значения, так и для записи в него другого значения (т.е. может находиться слева от оператора присвоения <=>).

  • <GMA[<AxisName>].Axis> – поле имеет тип <String> (строка) и содержит имя соответствующей управляемой координаты. Может использоваться только для чтения.

  • <GMA[<AxisName>].Reg> – поле имеет тип <String> (строка) и содержит имя регистра, связанного с соответствующей управляемой координатой. Может использоваться только для чтения.

  • <GMA[<AxisName>].TurnCount> и <GMA[<AxisName>].Dir> – поля имеют смысл только для поворотных (периодических) осей станка. В системе SprutCAM величины углов поворотных осей могут не ограничиваться значениями от 0º до 360º, а, к примеру, могут принимать значения 764º, -135º, 1276º и т.п. Однако в некоторых стойках ЧПУ используются значения только из ограниченного диапазона: от 0º до 360º или от -180º до 180º. В настройках генератора постпроцессоров для любой из поворотных управляемых координат станка можно установить произвольный диапазон, к которому должны приводиться неограниченные значения, приходящие из системы SprutCAM. Поля <TurnCount> и <Dir> имеют тип <Integer> (целые) и используются для сохранения информации соответственно о количестве полных оборотов и о направлении изменения управляемой координаты после приведения ее к указанному ограничивающему диапазону. Поле <Dir> может принимать только два значения: +1 и -1. Значение +1 сигнализирует об изменении состояния координаты в положительном направлении (в направлении увеличения), а -1 – в отрицательном направлении (направлении уменьшения). <TurnCount> и <Dir> могут использоваться только для чтения.

Рассмотрим несколько примеров заполнения массива <GMA> параметрами команды <MULTIGOTO>. Предположим, что поворотная ось C (<AxisCPos>) ограничена диапазоном от 0º до 360º.

  1. Команда:

MULTIGOTO COUNT 4, AxisXPos(18) 80, AxisYPos(20) 19.877,

AxisZPos(22) -200, AxisCPos(24) 0


Массив <GMA> для команды <MULTIGOTO>

Имя управляемой координаты

OutFlag

Vn

Vp

Axis

Reg

TurnCount

Dir

AxisXPos

1

80

-//-//-

“AxisXPos”

“X”

-//-//-

-//-//-

AxisYPos

1

19.877

-//-//-

“AxisYPos”

”Y”

-//-//-

-//-//-

AxisZPos

1

-200

-//-//-

“AxisZPos”

”Z”

-//-//-

-//-//-

AxisCPos

1

0

-//-//-

“AxisCPos”

”C”

-//-//-

-//-//-


Неопределенность некоторых величин (помечены знаком «-//-//-») связана с отсутствием информации о предыдущем значении координаты.

  1. Команда:

MULTIGOTO COUNT 1, AxisCPos(24) 270


Массив <GMA> для команды <MULTIGOTO>

Имя управляемой координаты

OutFlag

Vn

Vp

Axis

Reg

TurnCount

Dir

AxisXPos

0

80

80

“AxisXPos”

”X”

-//-//-

-//-//-

AxisYPos

0

19.877

19.877

“AxisYPos”

”Y”

-//-//-

-//-//-

AxisZPos

0

-200

-200

“AxisZPos”

”Z”

-//-//-

-//-//-

AxisCPos

1

270

0

“AxisCPos”

”C”

0

+1


  1. Команда:

MULTIGOTO COUNT 2, AxisZPos(22) 250, AxisCPos(24) -745


Массив <GMA> для команды <MULTIGOTO>

Имя управляемой координаты

OutFlag

Vn

Vp

Axis

Reg

TurnCount

Dir

AxisXPos

0

80

80

“AxisXPos”

”X”

-//-//-

-//-//-

AxisYPos

0

19.877

19.877

“AxisYPos”

”Y”

-//-//-

-//-//-

AxisZPos

1

250

-200

“AxisZPos”

”Z”

-//-//-

-//-//-

AxisCPos

1

335

270

“AxisCPos”

”C”

2

-1


В последнем примере исходное значение оси <AxisCPos(C)> «-745 º» приводится к диапазону от 0º до 360º следующим образом:

TurnCount = |(Vn’ - Vp’) \ 360|

TurnCount = |(-745 -270) \ 360| = 2

Dir = Sgn(Vn’-Vp’)

Dir = Sgn(-745 -270) = -1

Vn = Vn’ – (Vn’ \ 360)*360, если Vn’ > 360

Vn = Vn’ – (Vn’ \ 360)*360 + 360, если Vn’ < 0

Vn = -745 – (-745\360)*360 + 360 = 335

Здесь <Vn’> – текущее неприведенное значение координаты, <Vp’> – предыдущее неприведенное значение координаты.

Рассмотрим простейший пример обработки технологической команды <MULTIGOTO> с использованием предопределенного массива <GMA>:

program MultiGoto

! Заносим в соответствующие регистры значения

! координат из текущей команды MULTIGOTO

if GMA["AxisXPos"].OutFlag>0 then

X = GMA["AxisXPos"].Vn

if GMA["AxisYPos"].OutFlag>0 then

Y = GMA["AxisYPos"].Vn

if GMA["AxisZPos"].OutFlag>0 then

Z = GMA["AxisZPos"].Vn

if GMA["AxisCPos"].OutFlag>0 then

C = GMA["AxisCPos"].Vn

! Выводим полученные значения в кадр УП

OutBlock

end

Сопутствующие ссылки:

Служебные функции и переменные

Команда <MULTIGOTO>