Определение системы координат <ORIGIN>
Команда <ORIGIN> определяет систему координат, в которой производится дальнейшая обработка. Она либо выбирает одну из стандартных систем координат заготовки (G54 – G59 или другие), либо определяет смещения и углы поворота локальной системы координат относительно ранее установленной системы координат заготовки. В последнем случае, в зависимости от конкретной стойки ЧПУ, нужно формировать команды TRANS, ROT (Sinumeric), CYCLE7, CYCLE19, PLANE (Heidenhain), G52, G68 (Fanuc) и т.п.
Если параметр <CLD[4]> (<CLD.PPFun>, <Cmd.Int["OriginType"]>) равен нулю, то команда производит установку стандартной системы координат заготовки. Номер стандартной системы координат содержится в параметре <CLD[5]> (<CLD.N>, <Cmd.Int["CSNumber"]>).
Если параметр <CLD[4]> (<CLD.PPFun>, <Cmd.Int["OriginType"]=1>) равен <PPFun(1079)>, то команда задает смещения локальной системы координат относительно стандартной системы координат заготовки по осям X, Y и Z, а также углы поворота вокруг этих осей.
Команда:
ORIGIN X x, Y y, Z z, PPFUN f, N n, A a, B b, C c
Параметры:
Параметр |
Описание |
||
x, y, z |
CLD[1] CLD[2] CLD[3] |
CLD.X CLD.Y CLD.Z |
Смещение локальной системы координат по осям X, Y и Z соответственно относительно неподвижной системы координат заготовки. |
f |
CLD[4] |
CLD.PPFun |
Режим установки системы координат: 0 – выбор одной из стандартных систем координат заготовки, PPFun(1079) – преобразование локальной системы координат. |
n |
CLD[5] |
CLD.N |
Номер активируемой стандартной системы координат: 54 (для G54), 55 (для G55), 59 (для G59) и т.д. |
a |
CLD[6] |
CLD.A |
Углы поворота локальной системы координат вокруг осей X, Y и Z соответственно относительно неподвижной системы координат заготовки. Последовательность поворотов вокруг осей координат (нотация углов Эйлера) может изменяться и определяется в настройках схемы станка. |
b |
CLD[7] |
CLD.B |
|
c |
CLD[8] |
CLD.C |
Параметры, доступные через оператор Cmd
TCLDOrigin: ComplexType |
Команда задания системы координат |
|||
OriginType: Integer |
Cmd.Int["OriginType"] - Тип команды смены системы координат:0 (SelectStandardLCS) - команда выбора стандартной системы координат заготовки (G54-G59), 1 (TransformLCS) - команда преобразования локальной системы координат. |
|||
CSNumber: Integer |
Cmd.Int["CSNumber"] - Номер стандартной системы координат заготовки: 54 (для G54), 55 (для G55), 59 (для G59) и т.д. |
|||
MCS: ComplexType |
Cmd.Ptr["MCS"] - Параметры определяющие преобразование новой локальной системы координат относительно неподвижной системы координат заготовки. Содержит геометрические (пространственные) координаты. |
|||
OriginPoint: ComplexType |
Cmd.Ptr["MCS.OriginPoint"] - Смещение начальной точки системы координат |
|||
X: Double |
Cmd.Flt["MCS.OriginPoint.X"] - смещение по оси X |
|||
Y: Double |
Cmd.Flt["MCS.OriginPoint.Y"] - смещение по оси Y |
|||
Z: Double |
Cmd.Flt["MCS.OriginPoint.Z"] - смещение по оси Z |
|||
RotAngles: ComplexType |
Cmd.Ptr["MCS.RotAngles"] - Углы поворота системы координат вдоль осей (в градусах). Последовательность поворотов вокруг осей координат (нотация углов Эйлера) может изменяться и определяется в настройках схемы станка. |
|||
A: Double |
Cmd.Flt["MCS.RotAngles.A"] - угол поворота вокруг оси X |
|||
B: Double |
Cmd.Flt["MCS.RotAngles.B"] - угол поворота вокруг оси Y |
|||
C: Double |
Cmd.Flt["MCS.RotAngles.C"] - угол поворота вокруг оси Z |
|||
WCS: ComplexType |
Cmd.Ptr["WCS"] - Параметры определяющие преобразование новой локальной системы координат относительно подвижной системы координат заготовки. Содержит геометрические (пространственные) координаты. |
|||
OriginPoint: ComplexType |
Cmd.Ptr["WCS.OriginPoint"] - Смещение начальной точки системы координат |
|||
X: Double |
Cmd.Flt["WCS.OriginPoint.X"] - смещение по оси X |
|||
Y: Double |
Cmd.Flt["WCS.OriginPoint.Y"] - смещение по оси Y |
|||
Z: Double |
Cmd.Flt["WCS.OriginPoint.Z"] - смещение по оси Z |
|||
RotAngles: ComplexType |
Cmd.Ptr["WCS.RotAngles"] - Углы поворота системы координат вдоль осей (в градусах). Последовательность поворотов вокруг осей координат (нотация углов Эйлера) может изменяться и определяется в настройках схемы станка. |
|||
A: Double |
Cmd.Flt["WCS.RotAngles.A"] - угол поворота вокруг оси X |
|||
B: Double |
Cmd.Flt["WCS.RotAngles.B"] - угол поворота вокруг оси Y |
|||
C: Double |
Cmd.Flt["WCS.RotAngles.C"] - угол поворота вокруг оси Z |
|||
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"] - Значение оси станка. |
|||
IsSpatial: Integer |
Cmd.Int["IsSpatial"] - параметр, который определяет какие из координат геометрические или машинные имеют приоритет. Он может принимать два значения: 0 - приоритетом обладают машинные координаты, задаваемые через массив Axes,1 - преимущество имеют геометрические координаты, хранящиеся в структурах MCS и WCS. |
|||
PositioningMode: Integer |
Cmd.Int["PositioningMode"] - параметр, который определяет вызывает ли данная команда реальные перемещения осей станка или только задает новую локальную систему координат без перемещения осей. Он может принимать 3 значения:0 - STAY преобразование локальной системы координат не приводит к перемещению осей станка, 1 - TURN преобразование локальной системы координат перемещает только поворотные оси станка, 2 - MOVE преобразование локальной системы координат перемещает все необходимые оси станка таким образом, чтобы сохранилось расположение кончика инструмента относительно заготовки. |
В зависимости от конкретной стойки ЧПУ и от различных ее параметров для установки повернутой локальной системы координат в форматах команд могут использоваться либо пространственные (геометрические) углы, либо реальные значения поворотных осей станка. Поэтому в параметрах команды ORIGIN значения углов продублированы - в комплексных параметрах Cmd.Ptr["MCS"] и Cmd.Ptr["WCS"] указываются геометрические углы, а в массиве Cmd.Ptr["Axes"] приводятся соответствующие значения реальных осей станка. В некоторых случаях положение локальной системы координат, заданной пространственными углами может быть осуществлено несколькими позициями реальных поворотных осей станка. Некоторые стойки ЧПУ позволяют явно указывать какое решение следует выбирать. В этом случае выбор возможного решения в постпроцессоре может быть осован на анализе реальных значений поворотных осей в массиве Cmd.Ptr["Axes"].
Примечание: пространственные углы поворота в параметрах команды всегда задаются в той системе координат, которая была до начала преобразований.
Если формат стойки позволяет использовать разные типы углов, то у пользователя существует возможность явно указать в настройках CAM-системы пространственные углы или значения реальных осей станка предпочтительней использовать. В постпроцессор данная информация приходит через параметр Cmd.Int["IsSpatial"]. Если данный параметр равен нулю, то приоритетом пользуются значения реальных осей станка. Если же параметр равен 1, то предпочтение следует отдать пространственным углам.
Кроме того, в некоторых стойках ЧПУ команда на включение локальной системы координат в определенных случаях может вызывать перемещения осей станка. Поэтому в команде ORIGIN в параметре Cmd.Int["PositioningMode"] дополнительно указывается информация о поведении реальных осей станка в момент включения локальной системы координат. Если параметр равен 0 (STAY), то команда не приводит к перемещению осей станка, а только устанавливает локальную систему координат. Оси станка должны быть при необходимости спозиционированы отдельно. Если данный параметр принимает значение 1 (TURN), то установка локальной системы координат сопровождается перемещением только поворотных осей станка. И, наконец, при параметре равном 2 (MOVE) в момент установки локальной системы координат происходит перемещение всех необходимых осей станка таким образом, чтобы взаимное расположение кончика инструмента и заготовки остались неизменными. Значение параметра Cmd.Int["PositioningMode"], которое приходит в постпроцессор, определяется в настройках CAM-системы. Они могут быть изменены пользователем чтобы сделать поведение системы максимально приближенным к поведению конкретного станка.
Различные системы ЧПУ в зависимости от своей функциональности и от своих настроек могут вести себя по разному при изменении положения поворотных осей станка, задающих ориентацию заготовки. В одних случаях система координат, в которой производится обработка, может оставаться неподвижной при поворотах стола, а в других случаях может перемещаться совместно с заготовкой. С учетом данной особенности параметры локальной системы координат в команде ORIGIN приводятся для обоих описанных случаев: комплексный параметр Cmd.Ptr["MCS"] содержит значения смещений и поворотов относительно неподвижной системы координат заготовки, а комплексный параметр Cmd.Ptr["WCS"] - относительно подвижной системы координат заготовки.
Под <неподвижной системой координат заготовки (MCS)> понимается система координат, положение которой не изменяется при изменении углов поворота поворотного стола станка. Так обычно работают станки, на которых стойка ЧПУ не поддерживает специальный режим многокоординатной обработки. В данном случае управляющая программа получается сильно зависимой от кинематики станка и от расположения заготовки относительно центров вращения поворотных осей.
Под <подвижной системой координат заготовки (WCS)> понимается система координат, которая перемещается вместе с заготовкой при изменении углов поворота поворотного стола. В такой системе координат могут работать станки, обладающие современными стойками ЧПУ со включенной опцией многоосевой обработки. В данном случае управляющая программа получается независимой от кинематики станка, неточности позиционирования заготовки компенсируются стойкой.
В CAM-системе поведение при использовании локальных систем координат может задаваться для каждого станка индивидуально. Для этого в xml-файле станка следует выставить соответствующие опции, расположенные в секции <ControlData.LocalCS>. Если в конкретном файле станка данные опции не заданы, то они наследуются из значений по умолчанию для абстрактного станка системы. <SCType ID="MachineName" type="AbstractMachine"> ... <ControlData> ... <LocalCS> <IsSpatial DefaultValue="True"/> <PositioningMode DefaultValue="Stay"/> </LocalCS> ... </ControlData> ... <SCType> Указанные параметры станка могут быть отредактированы пользователем в конкретном проекте по своему усмотрению. Они доступны в инспекторе свойств станка.
|
Примеры обработчиков команды <ORIGIN>:
program Origin
if Cmd.Int["OriginType"]=0 then begin !G54-G59
Output "G" + Cmd.Str["CSNumber"]
end else begin !G52 X Y Z
X = Cmd.Flt["MCS.OriginPoint.X"]
Y = Cmd.Flt["MCS.OriginPoint.Y"]
Z = Cmd.Flt["MCS.OriginPoint.Z"]
Output "G52 X" + Str(X) + " Y" + Str(Y) + " Z" + Str(Z)
end
end
program Origin
if CLD[4]=0 then begin ! Select standart LCS (G54-G59)
! Do nothing for Heidenhain
end else if CLD[4]=1079 then begin ! Transform LCS
Output "CYCL DEF 7.0 DATUM SHIFT"
Output "CYCL DEF 7.1 X" + Str(Cmd.Flt["WCS.OriginPoint.X"])
Output "CYCL DEF 7.2 Y" + Str(Cmd.Flt["WCS.OriginPoint.Y"])
Output "CYCL DEF 7.3 Z" + Str(Cmd.Flt["WCS.OriginPoint.Z"])
if (abs(Cmd.Flt["WCS.RotAngles.A"])>0.0001) or
(abs(Cmd.Flt["WCS.RotAngles.B"])>0.0001) or
(abs(Cmd.Flt["WCS.RotAngles.C"])>0.0001)
then begin
Output "CYCL DEF 19.0 WORKING PLANE"
if Cmd.Int["IsSpatial"]>0 then begin ! Spatial coordinates
Output "CYCL DEF 19.1 A" + str(Cmd.Flt["WCS.RotAngles.A"]) +
" B" + str(Cmd.Flt["WCS.RotAngles.B"]) +
" C" + str(Cmd.Flt["WCS.RotAngles.C"])
end else begin ! Machine axes
OutStr$ = "CYCL DEF 19.1"
if Cmd.Ptr["Axes(AxisBPos)"]<>0 then begin
OutStr$ = OutStr$ + " B" + str(Cmd.Flt["Axes(AxisBPos).Value"])
end
if Cmd.Ptr["Axes(AxisCPos)"]<>0 then begin
OutStr$ = OutStr$ + " C" + str(Cmd.Flt["Axes(AxisCPos).Value"])
end
Output OutStr$
end
end
end
end
Сопутствующие ссылки: