Многокоординатные перемещения <MULTIGOTO>
<MULTIGOTO> представляет собой обобщенную технологическую команду, предназначенную для перемещений управляемых координат станка. Команда объединяет в себе возможности команд линейного перемещения (<GOTO>) и вращения поворотных осей (<ROTABL>), а также дает возможность управлять координатами, специфичными для конкретного станка (магазином инструментов, револьверной головкой, патроном и т.п.).
Команда:
MULTIGOTO COUNT 2, MACHINE, X 34.725, Y 32, GEOM X 34.725, Y 32, Z 194, NX 0, NY 0, NZ 1, NW 0, MSF 0, Time 0.003
Параметры:
Параметр |
Описание |
|
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
TCLDMultiGoto: 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). В зависимости от настроек системы (определяются в схеме станка) ориентация инструмента может задаваться:
|
|||
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.
Для более удобной работы с командой многокоординатного перемещения <MULTIGOTO> вместо массива <CLD> рациональнее использовать специально созданный для этой команды предопределенный массив <GMA>, либо обращаться к параметрам через оператор Cmd.
Пример простой программы обработки команды <MULTIGOTO> с использованием оператора Cmd приведен ниже.
program MultiGoto
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(AxisCPos)"]<>0 then begin
C = cmd.Flt["Axes(AxisCPos).Value"]
end
OutBlock
end
Сопутствующие ссылки: