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