GOTO - Линейный переход
Отображение команды
Как команда отображается в списке команд CLData:
GOTO.abs X x, Y y, Z z
CAM-система передаёт данные линейного перехода командой ABSMOV (GOTO.abs). Параметрами команды являются новые абсолютные координаты по осям X, Y и Z.
Доступ из sppx
Обработчик: program AbsMov
| Параметр | Массив CLD | Имя CLD | Описание |
|---|---|---|---|
| x y z |
CLD[1] CLD[2] CLD[3] |
CLD.X CLD.Y CLD.Z |
Новые координаты инструмента (абсолютные) |
Пример (из постпроцессора Fanuc (30i)_Mill):
program AbsMov
if (INTERP_ > 1) and (INTERP_ <> 33) then
INTERP_ = 1 ! G1
X = cld[1] ! X,Y,Z в абсолютных значениях
Y = cld[2]
if IsRotaryInterpolation = 2 then begin
Y = -Y/CylR/Pi*180
end
Z = cld[3]
if (Z<>Z@) and (NeedKorDl<>0) then begin
KorDl = NeedKorDl; KorDl@ = MaxReal
H@ = MaxReal
NeedKorDl = 0
end
if (CycleOn=0) and ((X<>X@) or (Y<>Y@) or (Z<>Z@)) then begin
if KorEcv<>KorEcv@ then begin
if Interp_<>Interp_@ then begin
X@ = X
Y@ = Y
Z@ = Z
KorEcv@ = KorEcv
D@ = D
OutBlock
KorEcv@ = MaxReal
D@ = MaxReal
end
X@ = MaxReal !XT_
Y@ = MaxReal !YT_
Z@ = MaxReal !ZT_
end
if IsMultiaxisInterpolation = 1 then begin
X@ = MaxReal;
Y@ = MaxReal;
Z@ = MaxReal;
end;
OutBlock
end
XT_ = X; YT_ = Y; ZT_ = Z ! сохранить текущие координаты
end
Доступ из .NET
Обработчики:
public override void OnBeforeMovement(ICLDMotionCommand cmd, CLDArray cld) // групповой обработчик - перед любой командой перемещения
public override void OnGoto(ICLDGotoCommand cmd, CLDArray cld)
public override void OnAfterMovement(ICLDMotionCommand cmd, CLDArray cld) // групповой обработчик - после любой команды перемещения
Наследование: ICLDGotoCommand : ICLDMotionCommand : ICLDCommand.
Читайте параметры из строго типизированного объекта cmd (рекомендуется); доступны также «сырой» массив cld[i] (те же индексы, что и в sppx) и именованные обёртки cmd["..."]. В таблице перечислены члены команды, включая унаследованные от базовых интерфейсов; общие члены ICLDCommand (навигация, CLD, CLDFile, TechOperation, ...) описаны в разделе Модель доступа к CLData.
| Член | Тип | Описание |
|---|---|---|
cmd.EP |
TInp3DPoint |
Конечная точка (X, Y, Z) перемещения |
Пример - OnGoto (из постпроцессора Fanuc (30i)_Mill_DN):
public override void OnGoto(ICLDGotoCommand cmd, CLDArray cld)
{
if (nc.GInterp > 1)
nc.GInterp.v = 1;
nc.X.v = cmd.EP.X;
nc.Y.v = cmd.EP.Y;
nc.Z.v = cmd.EP.Z;
if (!cycleIsOn) {
if (nc.Z.Changed && nc.GLCompens.ValuesDiffer) {
nc.Block.Hide(nc.X, nc.Y);
nc.Block.Show(nc.GLCompens, nc.HLCompens, nc.Z);
nc.Block.Out();
nc.Block.UpdateState(nc.X, nc.Y);
}
// Раскомментируйте, если нужны обязательные XYZABC в режиме TCPM
// if (nc.GLCompens == 43.4) {
// nc.Block.Show(nc.X, nc.Y, nc.Z);
// if (CLDProject.Machine.HasAAxis)
// nc.A.Show();
// if (CLDProject.Machine.HasBAxis)
// nc.B.Show();
// if (CLDProject.Machine.HasCAxis)
// nc.C.Show();
// }
if(nc.X.Changed || nc.Y.Changed || nc.Z.Changed )
nc.Block.Out();
}
nc.LastP = cmd.EP;
}