Разработка постпроцессоров
  • Разработка постпроцессоров
v20.0.1
Search Results for

    Show / Hide Table of Contents

    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;
    }
    

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

    • Модель доступа к CLData
    In this article