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

    Show / Hide Table of Contents

    CYCLE - Циклы обработки отверстий

    Оставлена для совместимости. CYCLE сохранена только для совместимости со старыми постпроцессорами. Текущие версии CAM-системы вместо неё генерируют команду расширенного цикла EXTCYCLE: она предоставляет больше возможностей и позволяет CAM-системе полностью моделировать все вложенные перемещения цикла, чего CYCLE не умеет. Вывод CYCLE всё ещё можно включить в настройках CAM-системы, но это не рекомендуется.

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

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

    CYCLE ON(71) | OFF(72) | DRILL(163) | FACE(81) | DEEP(153) |
    BRKCHP(288) | TAP(168) | BORE5(209) | BORE6(210) | BORE7(211) |
    BORE8(212) | BORE9(213)
    

    Команда CYCLE используется для передачи стандартных циклов сверления G81–G89. С помощью команды CYCLE определите тип цикла и обработайте цикл соответствующим образом. Тип цикла задаётся первым параметром; типы остальных параметров и их количество зависят от типа цикла.

    Доступ из sppx

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

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

    Параметр Массив CLD Имя CLD Описание
    Type CLD[1] CLD.Type Тип цикла: 71(ON) – включить цикл, 72(OFF) – выключить цикл, 163(DRILL) - цикл сверления G81, 81(FACE) - цикл сверления G82, 153(DEEP) - цикл глубокого сверления, 288(BRKCHP) - сверление с ломкой стружки, 168(TAP) - цикл нарезания резьбы G84, 209(BORE5) - цикл сверления G85, 210(BORE6) - цикл сверления G86, 211(BORE7) - цикл сверления G87, 212(BORE8) - цикл сверления G88, 213(BORE9) - цикл сверления G89.

    Обычно CAM-система генерирует технологию сверления, подобную следующей:

    ...
    GOTO.abs X, Y, Z ! Позиционирование инструмента у первого отверстия.
    CYCLE DRILL(163) ! Выполнить сверление вызовом цикла соответствующего типа.
    GOTO.abs X, Y, Z ! Переместить инструмент к следующему отверстию.
    CYCLE DRILL(163) ! Выполнить сверление вызовом цикла соответствующего типа.
    ...
    GOTO.abs X, Y, Z ! Переместить инструмент к последнему отверстию.
    CYCLE DRILL(163) ! Выполнить сверление вызовом цикла соответствующего типа.
    CYCLE OFF(72) ! Выключить цикл.
    ...
    

    Первая команда цикла сверления должна формировать кадр УП, содержащий определение цикла (например, G81) и параметры цикла. Например:

    G81 X_Y_Z_R_F_
    

    Обработка последующих команд должна формировать кадр, содержащий только изменившиеся регистры. Например:

    X_Y_Z_
    X_Y_Z_
    ...
    X_Y_Z_
    

    Команда CYCLE OFF(72) должна формировать код отмены цикла. Например:

    G80
    

    При разработке ISO-постпроцессоров с использованием шаблонов можно применять оператор ISO.G. Значение ISO.G устанавливается автоматически согласно следующей таблице:

    Значение параметра CLD Значение ISO.G
    CLD[1] = 163 ISO.G = 81
    CLD[1] = 81 ISO.G = 82
    CLD[1] = 168 ISO.G = 84
    CLD[1] = 209 ISO.G = 85
    CLD[1] = 210 ISO.G = 86
    CLD[1] = 211 ISO.G = 87
    CLD[1] = 212 ISO.G = 88
    CLD[1] = 213 ISO.G = 89
    CLD[1] = 153 ISO.G = 83
    CLD[1] = 288 ISO.G = 73
    CLD[1] = 72 ISO.G = 80

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

    program Cycle
      if cld[1]=71 then CycleOn = 1 else ! включение цикла
      if cld[1]=72 then CycleOn = 0 else ! выключение цикла
      begin
        CycleOn = 1                      ! включение цикла
        KodCycle = cld[1]
        Za = cld[2]                      ! рабочая глубина
        if cld[4] > 0 then begin         ! формирование значения FEED_
          if cld[3]=316 then Fr=cld[4]*S else Fr=cld[4]
        end
        Zf = cld[5]                      ! безопасный уровень
        ZP_ = cld[6]                      ! уровень обратного хода
        Dwell = cld[10]*1000              ! время выстоя
        Zl = cld[6]                      ! глубина одного шага сверления
        Zi = cld[8]                    ! переходное значение
    
      end
    
      if CycleOn=1 then begin
        !X@=maxreal; Y@ = maxreal;
        !Feed_@=Maxreal;
        Zcycle=Zf-Za
        ZClear=Zf
        p=0;  P@=0
        If KodCycle=153 or KodCycle=288 or KodCycle=211 then Q=Zl else Q=0
        If KodCycle=81 or KodCycle=213 then P=Dwell else P=0
        if KodCycle=163 then Cycle = 81   ! DRILL
        if KodCycle=81  then Cycle = 82   ! FACE
        if KodCycle=168 then begin
          Fr = S * cld[12]
          ! Klient: Pered cziklom narezaniya
          ! rezby dolzhna stoyat strochka M84S2000 (zhyostkoj)
          if (Cycle<>84) and (Cycle<>74) then begin
            if cld[14]=1 then  ! esli zhyostkij tip derzhatelya
              output "M84 S" + Str(S);
          end
          if Msp=4 then ! SHpindel nazad krutitsya, levaya relba
            Cycle = 74
          else          ! SHpindel vperyod krutitsya, obychnaya relba
            Cycle = 84;
        end;
        if KodCycle=209 then Cycle = 85   ! BORE5
        if KodCycle=210 then begin ! BORE6
          if cld[14]>0 then begin
            Cycle = 76;
            QStep = sqr(cld[6]^2+cld[7]^2);
    !        DrillPause = cld[15]*1000;
    !        if DrillPause=0 then
    !          DrillPause@ = 0
          end else begin
            Cycle = 86;
          end
        end
        if KodCycle=211 then begin ! BORE7
          if cld[14]>0 then begin
            call Swap(ZCycle, ZClear)
            Cycle = 87;
            QStep = sqr(cld[6]^2+cld[7]^2);
    !        DrillPause = cld[15]*1000;
    !        if DrillPause=0 then
    !          DrillPause@ = 0
          end else begin
            Cycle = 88;
          end
        end
        if KodCycle=212 then Cycle = 88   ! BORE8
        if KodCycle=213 then Cycle = 89   ! BORE9
        if KodCycle=153 then Cycle = 83   ! DEEP
        if KodCycle=288 then Cycle = 73   ! BRKCHP
        FEED_ = Fr
        OutBlock
      end else
        begin
          Cycle = 80;
          OutBlock;
        end
    end
    

    Доступ из .NET

    public override void OnCycle(ICLDCycleCommand cmd, CLDArray cld)
    

    Наследование: ICLDCycleCommand : ICLDCommand. Читайте из строго типизированного cmd, из «сырого» массива cld[i] (те же индексы, что и в sppx) или через именованные помощники cmd["..."]; общие члены ICLDCommand описаны в разделе Модель доступа к CLData.

    Пример:

    public override void OnCycle(ICLDCycleCommand cmd, CLDArray cld)
    {
        // cld[1] — тип цикла: 71 = ON, 72 = OFF, иначе конкретный цикл (DRILL 163, TAP 168, ...)
        if ((int)cld[1] == 72) {
            nc.G.Show(80);                 // отменить стандартный цикл
            nc.Block.Out();
        } else if ((int)cld[1] != 71) {
            nc.G.Show((int)cld["ISO.G"]);  // ISO.G — сопоставленный G-код (G81..G89)
            nc.Z.Show(cld["H"]);           // уровень дна отверстия
            nc.R.Show(cld["Top"]);         // уровень отвода
            nc.F.Show(cld["F"]);           // подача
            nc.Block.Out();
        }
    }
    

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

    • Цикл сверления G81 CYCLE DRILL(163)
    • Цикл сверления G82 CYCLE FACE(81)
    • Цикл сверления G84 CYCLE TAP(168)
    • Цикл сверления G85 CYCLE BORE5(209)
    • Цикл сверления G86 CYCLE BORE6(210)
    • Цикл сверления G87 CYCLE BORE7(211)
    • Цикл сверления G88 CYCLE BORE8(212)
    • Цикл сверления G89 CYCLE BORE9(213)
    • Глубокое сверление с удалением стружки CYCLE DEEP(153)
    • Глубокое сверление с ломкой стружки CYCLE BRKCHP(288)
    • Модель доступа к CLData
    In this article