Определение системы координат <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

Параметры:


Параметр

CLD массив

Описание

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)> понимается система координат, которая перемещается вместе с заготовкой при изменении углов поворота поворотного стола. В такой системе координат могут работать станки, обладающие современными стойками ЧПУ со включенной опцией многоосевой обработки. В данном случае управляющая программа получается независимой от кинематики станка, неточности позиционирования заготовки компенсируются стойкой.

images/download/attachments/124268019/CSTypes.png



В CAM-системе поведение при использовании локальных систем координат может задаваться для каждого станка индивидуально. Для этого в xml-файле станка следует выставить соответствующие опции, расположенные в секции <ControlData.LocalCS>. Если в конкретном файле станка данные опции не заданы, то они наследуются из значений по умолчанию для абстрактного станка системы.

<SCType ID="MachineName" type="AbstractMachine">

...

<ControlData>

...

<LocalCS>

<IsSpatial DefaultValue="True"/>

<PositioningMode DefaultValue="Stay"/>

</LocalCS>

...

</ControlData>

...

<SCType>

Указанные параметры станка могут быть отредактированы пользователем в конкретном проекте по своему усмотрению. Они доступны в инспекторе свойств станка.

images/download/attachments/124268019/LocalCSInspector.png



Примеры обработчиков команды <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

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

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