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

    Show / Hide Table of Contents

    INTERPOLATION - Режим интерполяции

    Отображение команды

    Как команда отображается в списке команд CLData:

    INTERPOLATION ON(71) | OFF(72), CARTESIAN(9020) | POLAR(9021) |
    CYLINDRICAL(9022) | MULTIAXIS(9023), P1 p1, P2 p2, P3 p3
    

    INTERPOLATION — эта команда активирует или деактивирует режимы интерполяции, такие как цилиндрическая или полярная интерполяция.

    Режим интерполяции, заданный параметром CLD[2] (CLD.Mode), активируется, если параметр CLD[1] (CLD.SubCmd) равен ON(71), иначе указанная интерполяция деактивируется.

    Параметры CLD[3] (CLD.P1), CLD[4] (CLD.P2), CLD[5] (CLD.P3) задают дополнительные параметры режимов интерполяции.

    Доступ из sppx

    Обработчик: program Interpolation

    Параметр Массив CLD Имя CLD Описание
    ON(71)
    OFF(72)
    CLD[1] CLD.SubCmd ON(71) – активировать, OFF(72) – деактивировать.
    CARTESIAN(9020)
    POLAR(9021)
    CYLINDRICAL(9022)
    MULTIAXIS(9023)
    CLD[2] CLD.Mode CARTESIAN(9020) – декартова интерполяция; POLAR(9021) – полярная интерполяция; CYLINDRICAL(9022) – цилиндрическая интерполяция; MULTIAXIS(9023) – многоосевая интерполяция
    P1 CLD[3] CLD.P1 Задаёт радиус цилиндра для режима цилиндрической интерполяции
    P2 CLD[4] CLD.P2 Зарезервировано
    P3 CLD[5] CLD.P3 Зарезервировано

    Режим полярной интерполяции обычно используется на токарно-фрезерных станках без оси Y для обработки деталей сбоку. В этом режиме перемещение инструмента в направлении Y заменяется одновременным поворотом заготовки вокруг поворотной оси (C) и перемещением инструмента вдоль радиальной оси (X). В зависимости от используемой системы ЧПУ координата Y в управляющей программе может заменяться координатой C.

    PolarInterp

    Режим цилиндрической интерполяции используется для обработки цилиндрических карманов на цилиндрических деталях. Управляющая программа содержит 2D-контур кармана в координатах XY, где координата X — это координата вдоль оси цилиндра, а координата Y равна радиусу цилиндра, умноженному на угол поворота заготовки вокруг поворотной оси. В зависимости от используемой системы ЧПУ координата Y в управляющей программе может заменяться координатой C.

    CylInterp

    Режим многоосевой интерполяции (MULTIAXIS) используется для одновременного пятиосевого фрезерования. В этом режиме координаты XYZ кадра управляющей программы — это координаты центральной точки инструмента относительно системы координат заготовки, вращающейся вместе с поворотным столом. В отличие от стандартного режима декартовой интерполяции, в режиме многоосевой интерполяции, если кадр УП содержит только команды позиционирования поворотных осей, положение кончика инструмента относительно заготовки остаётся неизменным. Это означает, что инструмент поворачивается вокруг своей центральной точки (см. рисунок ниже).

    5AxisInterp

    Если запрограммировать перемещение наклоняемого стола при активной многоосевой интерполяции, система ЧПУ соответствующим образом поворачивает систему координат. Если, например, повернуть ось C на 90° (командой позиционирования или сдвигом базы) и затем запрограммировать перемещение по оси X, система ЧПУ выполнит это перемещение по оси станка Y.

    Разные системы ЧПУ используют разные команды для включения и отключения режима многоосевой интерполяции. В Heidenhain этот режим называется управлением центральной точкой инструмента и управляется функциями TCPM, M128 и M129. В Sinumeric режим включается и выключается командами TRAORI и TRAFOOF.

    Пример (из постпроцессора Fanuc (30i)_Mill):

    program Interpolation
      case cld[2] of
        9023: begin ! 5-axis
          if CLD.SubCmd=71 then begin ! On
            NeedKorDl = 43.4
            IsMultiaxisInterpolation = 1
          end else begin              ! Off
            KorDl = 49;! KorDl@ = MaxReal
            IsMultiaxisInterpolation = 0
          end
          OutBlock
        end
        9021: begin ! POLAR
          OutBlock
          if CLD.SubCmd=71 then begin ! On
            GInterpRot = 12.1
            YAddress = "A"
            IsRotaryInterpolation = 1
          end else begin              ! Off
            GInterpRot = 13.1
            YAddress = "Y"
            IsRotaryInterpolation = 0
          end
          GInterpRot@ = MaxReal
          OutBlock
        end
        9022: begin ! CYLINDRICAL
          OutBlock
          if CLD.SubCmd=71 then begin ! On
            GInterpRot = 07.1
            A = CLD.P1; A@ = MaxReal
            YAddress = "A"
            IsRotaryInterpolation = 2
            CylR = CLD.P1
            CirclesThroughRadius = 1
          end else begin              ! Off
            GInterpRot = 07.1
            A = 0; A@ = MaxReal
            YAddress = "Y"
            IsRotaryInterpolation = 0
            CirclesThroughRadius = 0
          end
          GInterpRot@ = MaxReal
          OutBlock
        end
      end
    end
    

    Доступ из .NET

    Обработчики:

    public override void OnInterpolation(ICLDInterpolationCommand cmd, CLDArray cld)
    public override void OnInterpPolar(ICLDInterpolationCommand cmd, CLDArray cld)   // POLAR(9021)
    public override void OnInterpCylindrical(ICLDInterpolationCommand cmd, CLDArray cld)   // CYLINDRICAL(9022)
    public override void OnInterp5x(ICLDInterpolationCommand cmd, CLDArray cld)   // MULTIAXIS(9023)
    

    Наследование: ICLDInterpolationCommand : ICLDCommand.

    Читайте параметры из строго типизированного объекта cmd (рекомендуется); доступны также «сырой» массив cld[i] (те же индексы, что и в sppx) и именованные обёртки cmd["..."]. В таблице перечислены члены команды, включая унаследованные от базовых интерфейсов; общие члены ICLDCommand (навигация, CLD, CLDFile, TechOperation, ...) описаны в разделе Модель доступа к CLData.

    Член Тип Описание
    cmd.IsOn bool Возвращает "True", если это команда включения интерполяции, иначе возвращает "False".
    cmd.IsOff bool Возвращает "True", если это команда выключения интерполяции, иначе возвращает "False".
    cmd.InterpMode CLDInterpMode Определяет тип интерполяции (полярная - G112, цилиндрическая - G107 или непрерывная многоосевая - G43.4, TCPM, TRAORI).
    cmd.InterpType int Числовой код, определяющий тип интерполяции (полярная, цилиндрическая или непрерывная многоосевая).
    cmd.CylRadius double Задаёт радиус цилиндра для режима цилиндрической интерполяции.

    Пример - OnInterpolation (из постпроцессора Sinumerik (840D)_Mill_DN):

    public override void OnInterpolation(ICLDInterpolationCommand cmd, CLDArray cld)
    {
        if (cmd.InterpType == 9023){// MULTIAXIS interpolation
            if (cmd.IsOn){ // Switch on
                nc.Block.Out();
                nc.WriteLineWithBlockN($"TRAORI"); 
                nc.CoordSys.v0 = double.MaxValue; nc.Block.Out();
                nc.WriteLineWithBlockN($"ORIWKS");
                nc.WriteLineWithBlockN($"ORIAXES");
            }else{          // Switch off
                nc.Block.Out();
                nc.WriteLineWithBlockN($"TRAFOOF");
            }
        }else if (cmd.InterpType == 9021) {// Polar interpolation
            if (cmd.IsOn) { // Switch on
                nc.Block.Out();
                nc.WriteLine("TRANSMIT");
                Cycle.SetPolarInterpolationStatus(true);
                csC = Cos(nc.A.v);
                snC = -Sin(nc.A.v);
            }else {          // Switch off
                nc.Block.Out();
                nc.WriteLine("TRANSMIT");
                Cycle.SetPolarInterpolationStatus(true);
                nc.A.RestoreDefaultValue(false);
            }
        }else if (cmd.InterpType == 9022) {// Cylindrical interpolation
            if (cmd.IsOn) { // Switch on
                nc.Block.Out();
                nc.WriteLine("TRACYL(" + Str(2*cld[3]) + ")");
                Cycle.SetCilindInterpolationStatus(true);
            }else{             // Switch off
                nc.Block.Out();
                nc.WriteLine("TRAFOOF");
                //Output "TMCOFF"
                Cycle.SetCilindInterpolationStatus(false);
                nc.A.RestoreDefaultValue(false);
            }
        }
    }
    

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

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