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

    Show / Hide Table of Contents

    CIRCLE - Движение по окружности

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

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

    CIRCLE XC xc, YC yc, ZC zc, R r, XE xe, YE ye, ZE ze
    

    Команда CIRCLE осуществляет перемещение по дуге окружности. Параметры CIRCLE - это центр дуги, конечная точка дуги и радиус дуги. Знак радиуса определяет направление дуги. Если радиус положительный, дуга направлена против часовой стрелки (круговая интерполяция G03). Если радиус отрицательный, дуга направлена по часовой стрелке (круговая интерполяция G02). Плоскость дуги (G17/G18/G19) определяется текущей плоскостью обработки, заданной командой PLANE.

    Доступ из sppx

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

    Массив cld читается по индексу или по имени - в sppx по типизированному короткому имени (например, cld.X), в .NET по тому же имени как строковому ключу (например, cld["X"]).

    Параметр Массив CLD Имя CLD Описание
    xc
    yc
    zc
    CLD[1]
    CLD[2]
    CLD[3]
    CLD.Xc
    CLD.Yc
    CLD.Zc
    Координаты X, Y и Z центра дуги.
    r CLD[4] CLD.R Радиус дуги. Если CLD.R > 0, дуга направлена против часовой стрелки (G03), если CLD.R < 0 - по часовой стрелке (G02).
    xe
    ye
    ze
    CLD[5]
    CLD[6]
    CLD[7]
    CLD.Xe
    CLD.Ye
    CLD.Ze
    Координаты X, Y и Z конечной точки дуги.
    xs
    ys
    zs
    CLD[8]
    CLD[9]
    CLD[10]
    CLD.Xs
    CLD.Ys
    CLD.Zs
    Координаты X, Y и Z начальной точки дуги
    XcInc
    YcInc
    ZcInc
    CLD[11]
    CLD[12]
    CLD[13]
    CLD.XcInc
    CLD.YcInc
    CLD.ZcInc
    Координаты X, Y и Z центра дуги относительно начальной точки (I, J и K)
    RAbs CLD[14] CLD.RAbs Абсолютное значение радиуса дуги
    RIso CLD[15] CLD.RIso Радиус дуги в варианте ISO - положительный, если угол дуги меньше 180 градусов, и отрицательный в противном случае
    Dir CLD[16] CLD.Dir Направление дуги: 2 - по часовой стрелке, 3 - против часовой стрелки относительно плоскости ISO G17-G19
    Plane CLD[17] CLD.Plane Плоскость дуги, может принимать 6 значений: 17, 18, 19, -17, -18, -19. Соответствует плоскостям ISO G17-G19. Отрицательное значение означает, что нормаль плоскости дуги обратна относительно стандартной плоскости ISO.
    Length CLD[18] CLD.Length Длина дуги в текущих линейных единицах
    Ang CLD[19] CLD.Ang Угол дуги в градусах (от 0 до 360 градусов)
    SAng CLD[20] CLD.SAng Начальный угол дуги относительно первой оси текущей плоскости
    EAng CLD[21] CLD.EAng Конечный угол дуги относительно первой оси текущей плоскости
    HelixAng CLD[22] CLD.HelixAng Угол наклона спирали в градусах. Ноль для плоской окружности, положительное значение для поднимающейся спирали, отрицательное - для опускающейся спирали.

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

    program Circle
      RSign: Integer
      
      if cld[4] > 0 then INTERP_ = 3 else INTERP_ = 2   ! G3/G2
      X = cld[5]                                  ! X,Y,Z в абсолютных значениях
      Y = cld[6]
      Z = cld[7]
      if CirclesThroughRadius>0 then begin
        call CheckCircleAngle(RSign)
        Rc = RSign*abs(CLD.R); Rc@ = MaxReal
      end else begin
        XC_ = cld[1] - XT_                            ! I,J,K всегда в приращениях
        YC_ = cld[2] - YT_
        ZC_ = cld[3] - ZT_
        XC_@ = MaxReal; ZC_@ = MaxReal
        if OperationIsLathe<>1 then
          YC_@ = MaxReal
        case Plane of
          17: ZC_@ = ZC_;
          18: YC_@ = YC_;
          19: XC_@ = XC_;
        end
      end
      case Plane of
        17: begin
          X@ = MaxReal;
          Y@ = MaxReal
        end
        18: begin
          X@ = MaxReal;
          Z@ = MaxReal
        end
        19: begin
          Y@ = MaxReal
          Z@ = MaxReal
        end
      end
      if IsRotaryInterpolation = 2 then begin
        Y = -Y/CylR/Pi*180
      end
      OutBlock                     ! вывод кадра УП
      XT_ = cld[5]                 ! сохранить текущие координаты
      YT_ = cld[6]
      ZT_ = cld[7]
    end
    

    Доступ из .NET

    Обработчики (конкретный обработчик плюс скобки группы перемещений, которые срабатывают для любой команды движения):

    public override void OnCircle(ICLDCircleCommand cmd, CLDArray cld)
    public override void OnBeforeMovement(ICLDMotionCommand cmd, CLDArray cld)   // перед любым перемещением
    public override void OnAfterMovement(ICLDMotionCommand cmd, CLDArray cld)    // после любого перемещения
    

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

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

    Свойство Тип Описание
    cmd.EP TInp3DPoint Конечная точка (X, Y, Z) перемещения. (унаследовано от ICLDMotionCommand)
    cmd.SP TInp3DPoint Начальная точка дуги (X, Y, Z).
    cmd.Center TInp3DPoint Центр дуги (X, Y, Z), абсолютное значение.
    cmd.IncCenter TInp3DPoint Центр дуги (I, J, K), приращение относительно начальной точки.
    cmd.R double Радиус дуги; положительный для CCW (G03), отрицательный для CW (G02).
    cmd.RAbs double Абсолютное значение радиуса дуги.
    cmd.RIso double Радиус в стандарте ISO: положительный, если угол дуги < 180 градусов, отрицательный, если > 180 градусов.
    cmd.Dir int Код направления ISO: 2 = по часовой стрелке (G2), 3 = против часовой стрелки (G3).
    cmd.Plane int Плоскость дуги: 17, 18, 19, -17, -18, -19 (ISO G17-G19; отрицательное значение - обратная нормаль).
    cmd.Length double Длина дуги в текущих линейных единицах.
    cmd.Ang double Угол дуги в градусах (от 0 до 360).
    cmd.SAng
    cmd.EAng
    double Начальный / конечный угол дуги относительно первой оси текущей плоскости.
    cmd.HelixAng double Угол наклона спирали в градусах (0 - плоская окружность, >0 - подъём, <0 - спуск).

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

    public override void OnCircle(ICLDCircleCommand cmd, CLDArray cld)
    {
        nc.GInterp.Show(cmd.Dir);                             // G02 / G03
        nc.X.v = cmd.EP.X;  nc.Y.v = cmd.EP.Y;  nc.Z.v = cmd.EP.Z;
        switch (Abs(cmd.Plane))                               // центр дуги как приращение I, J, K
        {
            case 17:
                nc.I.v = cmd.IncCenter.X;  nc.J.v = cmd.IncCenter.Y;
                nc.Block.Show(nc.X, nc.Y, nc.I, nc.J);
                break;
            case 18:
                nc.I.v = cmd.IncCenter.X;  nc.K.v = cmd.IncCenter.Z;
                nc.Block.Show(nc.X, nc.Z, nc.I, nc.K);
                break;
            case 19:
                nc.J.v = cmd.IncCenter.Y;  nc.K.v = cmd.IncCenter.Z;
                nc.Block.Show(nc.Y, nc.Z, nc.J, nc.K);
                break;
        }
    }
    

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

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