Перемещение в физических осях станка <PhysicGOTO>


<PhysicGOTO> представляет собой обобщенную технологическую команду, предназначенную для перемещений управляемых координат станка. Она похожа на команду MULTIGOTO, разница состоит в следующем. Команда MULTIGOTO содержит координаты осей относительно текущей системы координат заготовки (пространственные координаты относительно G54-G56 либо локальной системы координат), а интерполяция базовых осей производится с контролем прямолинейности траектории перемещения в каждой из промежуточных точек. В ISO кодах это соответствует командам линейной интерполяции G01, в системах управления роботами это соответствует типу перемещений Linear (L, LIN, MOVEL), Control path (CP) motion. В отличие от нее команда PhysicGOTO содержит физические значения координат относительно машинных нулей, а при интерполяции базовых осей контроля промежуточных точек траектории не производится, контролируется лишь достижимость конечной точки. В ISO кодах ей соответствует команда перемещения G53 (SUPA в Sinumerik, M91 в HEIDENHAIN), в системах управления роботами соответствует типу перемещений Joint move (J, MOVEJ), Point-to-point (PTP) motion.

 

Команда:

 

PhysicGOTO COUNT 2, MACHINE, X 0, Y 0, GEOM X 125.281, Y -32, Z 194, NX 0, NY 0, NZ 1, NW 0, MSF 0, Time 0.013

 

 

Параметры:

Параметр

CLD массив

Описание

X

CLD[1]

Простарнственные координаты X, Y, Z кончика инструмента относительно активной системы координат заготовки

Y

CLD[2]

Z

CLD[3]

NX

CLD[4]

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

NY

CLD[5]

NZ

CLD[6]

NW

CLD[7]

MSF

CLD[8]

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

Time

CLD[9]

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

AxesCount

CLD[10]

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

r1

CLD[11]

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

Val1

CLD[12]

Значение управляемой координаты станка с именем Axis1Pos.

r2

CLD[13]

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

Val2

CLD[14]

Значение управляемой координаты станка с именем Axis2Pos.

rN

CLD[2*N + 9]

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

ValN

CLD[2*N+10]

Значение управляемой координаты станка с именем AxisNPos.

 

Параметры, доступные через оператор Cmd

 

TCLDPhysicGoto: ComplexType

Команда перемещения по осям станка

Axes: Array, Key="AxisID"

Cmd.Ptr["Axes"] - Массив структур типа Axis. Одна команда может содержать перемещения сразу по нескольким осям, положение каждой из которых хранится в данном массиве.

Axis: ComplexType

Cmd.Ptr["Axes"].Item[Index] или Cmd.Ptr["Axes(<AxisName>)"] - Отдельный элемент массива Axes. Содержит информацию о перемещении по одной оси станка. Доступ к элементам массива возможен либо по индексу, либо по ключевому полю. Здесь <AxisName> - значение ключевого поля, которое должно совпадать со значением поля AxisID.

AxisID: String

Cmd.Str["Axes(<AxisName>).AxisID"] - Идентификатор управляемой координаты (оси) станка,  для которой задается новое положение. Определяется схемой станка.

Value: Double

Cmd.Flt["Axes(<AxisName>).Value"] - Новое положение оси станка, в которое она перемещается.

Pos5D: ComplexType

Cmd.Ptr["Pos5D"] - структура содержащая координаты, определяющие конечное положение инструмента в пространстве. Определяет не только положение настроечной точки инструмента (поля X, Y и Z - декартовы координаты), но и ориентацию инструмента относительно текущей системы координат (поля NX, NY, NZ и NW). В зависимости от настроек системы (определяются в схеме станка) ориентация инструмента может задаваться:

вектором нормали n=(NX, NY, NZ),

пространственными углами поворота вокруг координатных осей - углы Эйлера (нотация используемых углов Эйлера, т.е. последовательность вращений, также задается в настройках) A=NX, B=NY, C=NZ.

кватернионом q=(NX, NY, NZ, NW).

 

X: Double

Cmd.Flt["Pos5D.X"] - декартова координата X положения кончика инструмента.

Y: Double

Cmd.Flt["Pos5D.Y"] - декартова координата Y положения кончика инструмента.

Z: Double

Cmd.Flt["Pos5D.Z"] - декартова координата Z положения кончика инструмента.

NX: Double

Cmd.Flt["Pos5D.NX"] - в зависимости от настроек системы может содержать компонент NX вектора нормали инструмента, угол поворота вокруг одной из координатных осей, либо коэффициент кватерниона.

NY: Double

Cmd.Flt["Pos5D.NY"] - в зависимости от настроек системы может содержать компонент NY вектора нормали инструмента, угол поворота вокруг одной из координатных осей, либо коэффициент кватерниона.

NZ: Double

Cmd.Flt["Pos5D.NZ"] - в зависимости от настроек системы может содержать компонент NZ вектора нормали инструмента, угол поворота вокруг одной из координатных осей, либо коэффициент кватерниона.

NW: Double

Cmd.Flt["Pos5D.NW"] - при заданном способе вывода ориентации инструмента в виде кватерниона, представляет собой четвертый коэффициент кватерниона.

MachineStateFlags: Integer

Cmd.Ptr["MachineStateFlags"].Bit[i], i=(0..31). Цело число, которое представляет собой битовое поле из 32 бит от 0 до 31. При наличии нескольких вариантов расположения осей станка, обеспечивающих заданное положение инструмента в пространстве, каждый бит этого поля определяет выбор одного из возможных решений. Например, пятикоординатный станок с осями A и C для большинства положений инструмента имеет два возможных решения - с положительным значением оси A и с отрицательным значением оси A. Нулевой бит этого поля будет определять какое из этих решений выбрать. Для стандартного шести осевого робота многие положения инструмента в пространстве могут быть обеспечены различным сочетанием положений трех его ключевых сочленений - базы, локтя и кисти, что дает в общей сложности 8 возможных решений. В этом случае нулевой бит данного поля будет определять положение базы, первый бит - положение локтя, а третий бит будет задавать положение кисти робота. Таким образом, смысл каждого из битов данного поля целиком определяется используемой схемой станка. При использовании станков, в которых необходимости использования данных флагов нет, в схеме станка имеется возможность отключить вывод данного параметра в CLData.

Time: Double

Время выполнения перемещения в минутах

 

Список управляемых координат передаваемых в CLData определяется кинематической схемой станка SprutCAM.

Для более удобной работы с командой многокоординатного перемещения <PhysicGOTO> вместо массива <CLD> рациональнее использовать специально созданный для этой команды предопределенный массив <GMA>, либо обращаться к параметрам через оператор Cmd.

Пример простой программы обработки команды <PhysicGOTO> с использованием оператора Cmd приведен ниже.

 

program PhysicGoto

  if cmd.Ptr["Axes(AxisXPos)"]<>0 then begin

    X = cmd.Flt["Axes(AxisXPos).Value"]

  end

  if cmd.Ptr["Axes(AxisYPos)"]<>0 then begin

    Y = cmd.Flt["Axes(AxisYPos).Value"]

  end

  if cmd.Ptr["Axes(AxisZPos)"]<>0 then begin

    Z = cmd.Flt["Axes(AxisZPos).Value"]

  end

  if cmd.Ptr["Axes(AxisAPos)"]<>0 then begin

    A = cmd.Flt["Axes(AxisAPos).Value"]

  end

  if cmd.Ptr["Axes(AxisCPos)"]<>0 then begin

    C = cmd.Flt["Axes(AxisCPos).Value"]

  end

  if (X<>X@) or (Y<>Y@) or (Z<>Z@) or (A<>A@) or (C<>C@) then begin

    Interp_ = 53; Interp_@ = 0; ! G53

    OutBlock

  end

end

 

 

 

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

Описание технологических команд

Массив <GMA>