Добрый день!
Подскажите, пожалуйста, есть ли возможность в программах для XNC использовать циклы?
Например: мне нужно фрезой (именно шпинделем, а не сверлильной группой) сделать квадратную выборку размером (к примеру) 20х40мм на глубину 50мм.
Программу пишу прямо на станке. Так вот, первый проход указываю глубину 2мм и проходим по траектории 20х40, потом второй проход ZI+2 и снова повторяю программу(проход 20х40), потом ZI+2 и снова переписываю программу.
Возможно ли сделать типа:
пока 0<Z<[требуемая глубина, в нашем случае: 50]
выполняем фрезерование по траектории 20х40мм.
То есть в будущем мне может понадобиться сделать глубину не 50, а 70 к примеру и я тогда в программе меняю только 50 на 70, а траектории не трогаю.
А то простейшая программа превращается в огромного монстра на сотни строк.
Может не совсем внятно описал чего хочу, поэтому задавайте наводящие вопросы.
Циклы в программах для XNC
- 111
- Опытный
- Сообщения: 846
- Зарегистрирован: 13 дек 2010 14:21
- Благодарил (а): 26 раз
- Поблагодарили: 22 раза
Re: Циклы в программах для XNC
Аккурат над вашей темой есть тема с документацией.
Есть там и по программированию пдфка, может подсобит чем-то?
Есть там и по программированию пдфка, может подсобит чем-то?
Rover B4.35 WRT2001 BW2.2 -> BW3.2.1
Rover 20 WRT2001 BW2.2 -> BW3.2.1
Rover 20 NC500
Rover 20 WRT2001 BW2.2 -> BW3.2.1
Rover 20 NC500
Re: Циклы в программах для XNC
Спасибо за совет. НАсколько я разобрался, там содержится информация по циклам, которые зашиты в станок, то есть по макросам, которые можно вызывать из программы. С ними я уже сталкивался. Я хотел бы выяснить, может есть какой-то простой вариант написания циклов прямо в исполняемом файле программы, чтобы не залезать в недра станка. Что-то типа повторения части кода программы пока не достигнется условие. Пробую сейчас связать как-то те самые "системные" циклы с данными (читай - переменными) из программы, но пока не выходит.
Может есть еще варианты?
Re: Циклы в программах для XNC
Можно попробовать как то так - счетчик проходов нужен для того, что количество переходов ограничено, если это не учитывать будет выдаваться ошибка. И в фрагмент программы что то нужно подумать, если остается остаток глубины - к примеру припуск на проход 2 мм, а окончательная глубина 57 мм.
.....
N300 PF2=0 ;СЧЕТЧИК ГЛУБИНЫ
N310 PN1=0 ;СЧЕТЧИК ПРОХОДОВ
N320 PN2=50 ; глубина фрезеровки
:1
N330 G1 ZI2
N340 X40
N350 Y20
N370 X0
N380 Y0
N390 PF2=PF2+2 PN1=PN1+1
N440 JM!(PN1<=25):4
N450 JM!(PF2>=PN2):1
N460 JM:7
:4
N530 G1 ZI2
N540 X40
N550 Y20
N570 X0
N580 Y0
N590 PF2=PF2+2 PN1=PN1+1
N600 JM!(PF2>=PN2):4
:7
N700 .....
.....
N300 PF2=0 ;СЧЕТЧИК ГЛУБИНЫ
N310 PN1=0 ;СЧЕТЧИК ПРОХОДОВ
N320 PN2=50 ; глубина фрезеровки
:1
N330 G1 ZI2
N340 X40
N350 Y20
N370 X0
N380 Y0
N390 PF2=PF2+2 PN1=PN1+1
N440 JM!(PN1<=25):4
N450 JM!(PF2>=PN2):1
N460 JM:7
:4
N530 G1 ZI2
N540 X40
N550 Y20
N570 X0
N580 Y0
N590 PF2=PF2+2 PN1=PN1+1
N600 JM!(PF2>=PN2):4
:7
N700 .....
Re: Циклы в программах для XNC
О! Уже пища для ума! Спасибо, буду пробовать и отпишусь о результате.
Re: Циклы в программах для XNC
заметил там косячок - если количество 25, и правильная глубина он все равно еще на 2 мм углубится. там еще нужно добавить проверку глубины, вообще цикл рабочий, только он шел по пласти, я быстренько выдернул фрагмент, ну и как всегда, быстро, значит мало думая... так что довести уже до ума Вам самим придется, а тот фрагмент - только как пример.
Re: Циклы в программах для XNC
В общем, по прошествию полугода, нашел время затестить предложенный вариант. Долго бодался, но удалось достичь желаемого. Создал новый цикл G700, в который передаю значение переменных (параметры врезаемой фурнитуры в двери), и уже в самом цикле подхватываются нужные размеры и выполняется программа фрезерования. Вот выдержки из программ:
Программа фрезерования:
N10 CENT=1000.00 ; CENTER RUCHKI - положение ручки двери относительно оси Х (высота от пола)
N11 DP=57.50 ; DLINA PLANKI - длина декоративной части защелки
N12 SP=25.50 ; SHIRINA PLANKI - ширина декоративной части защелки
N13 TP=2.50 ; TOLSCHINA PLANKI - толщина декоративной части защелки
N14 DK=73.00 ; DLINA KORPUSA - глубина, на которую нужно утопить защелку (ее корпус, механизм)
N14 SK=27.00 ; SHIRINA KORPUSA +3 - ширина механизма+3мм, т.к. корпус имеет в сечении прямоугольник, а фреза оставляет углы закругленными
N14 TK=22.00 ; TOLSCHINA KORPUSA +3 - ширина механизма+3мм по тем же причинам
N14 OTR=43.00 ; OTSTUP 4-GRAN - расстояние от края полотна до центра четырехгранника ручки
N14 DF=10.00 ; DIAM FREZY - диаметр фрезы для автоматической перестройки программы при смене диаметра фрезы
=======
Теперь выдержка из цикла:
:1
N90 JM(VF<>0~VF<MVF):2
N100 VF=9
:2
N110 ANG=RDM("MANDRINO",ST1,"ANGZ")
N120 JM(ANG<>0):10
;
; -- FORO ORIZZ. NON INCLINATO
N130 Y=QY-SIC X=CENT
G0
N140 JM(QZ>0):3
;N140 QZ=LPZ/2
N150 QZ=PLPZ/2 ; PER CONTROSAGOMA DIM. Z ORA E' PLPZ E NON PIU' PLZ
:3
N160 Z=QZ-LPZ M1
N161 X=CENT M1
N170 Y=QY+0.2 FY=VF
N170 Y=TTP/5 FY=VF
N171 ZI=-(STP/2-DTF/2) G1
N172 XI=DTP/2-DTF/2 G1
N172 ZI=STP-DTF G1
N172 XI=-(DTP-DTF) G1
N172 ZI=-(STP-DTF) G1
N172 XI=DTP/2-DTF/2 G1
N172 ZI=STP/2-DTF/2 G1
;
N170 Y=TTP G1
N171 ZI=-(STP/2-DTF/2) G1
N172 XI=DTP/2-DTF/2 G1
N172 ZI=STP-DTF G1
N172 XI=-(DTP-DTF) G1
N172 ZI=-(STP-DTF) G1
N172 XI=DTP/2-DTF/2 G1
N172 ZI=STP/2-DTF/2 G1
;N180 Y=QY-SIC FY35
; OBRABOTKLA KORPUSA
N180 YI=1.00 FY=VF
N180 ZI=-(TTK/2-DTF/2) G1
N180 XI=-(STK/2-DTF/2) G1
N180 ZI=TTK-DTF G1
N180 XI=STK-DTF G1
N180 ZI=-(TTK-DTF) G1
N180 XI=-(STK/2-DTF/2) G1
N180 Y=0 G1
N300 PF2=0
N310 PN1=0
N320 PN2=DTK
:14
N180 YI=+1 G1
N180 XI=-(STK/2-DTF/2) G1
N180 ZI=TTK-DTF G1
N180 XI=STK-DTF G1
N180 ZI=-(TTK-DTF) G1
N180 XI=-(STK/2-DTF/2) G1
N180 PF2=PF2+1 PN1=PN1+1
;N180 JM!(PN1<=5):14
N180 JM(PF2<=PN2):14
N180 JM:141
:141
N190 Y=QY-SIC FY35
N190 FY60 VF=6 QZ=0
N200 JM(PUNS=1):11
N210 Z=-(LPZ+SUZ) M0
N220 TH0
=====
Правда, при сохранении изменений в программе ругается на бесконечный цикл, но работает исправно.
Буду рад, если кому-то пригодится, а если кто-то подскажет как эту канитель оптимизировать - так и еще больше рад. Спасибо всем откликнувшимся
Программа фрезерования:
N10 CENT=1000.00 ; CENTER RUCHKI - положение ручки двери относительно оси Х (высота от пола)
N11 DP=57.50 ; DLINA PLANKI - длина декоративной части защелки
N12 SP=25.50 ; SHIRINA PLANKI - ширина декоративной части защелки
N13 TP=2.50 ; TOLSCHINA PLANKI - толщина декоративной части защелки
N14 DK=73.00 ; DLINA KORPUSA - глубина, на которую нужно утопить защелку (ее корпус, механизм)
N14 SK=27.00 ; SHIRINA KORPUSA +3 - ширина механизма+3мм, т.к. корпус имеет в сечении прямоугольник, а фреза оставляет углы закругленными
N14 TK=22.00 ; TOLSCHINA KORPUSA +3 - ширина механизма+3мм по тем же причинам
N14 OTR=43.00 ; OTSTUP 4-GRAN - расстояние от края полотна до центра четырехгранника ручки
N14 DF=10.00 ; DIAM FREZY - диаметр фрезы для автоматической перестройки программы при смене диаметра фрезы
=======
Теперь выдержка из цикла:
:1
N90 JM(VF<>0~VF<MVF):2
N100 VF=9
:2
N110 ANG=RDM("MANDRINO",ST1,"ANGZ")
N120 JM(ANG<>0):10
;
; -- FORO ORIZZ. NON INCLINATO
N130 Y=QY-SIC X=CENT
G0
N140 JM(QZ>0):3
;N140 QZ=LPZ/2
N150 QZ=PLPZ/2 ; PER CONTROSAGOMA DIM. Z ORA E' PLPZ E NON PIU' PLZ
:3
N160 Z=QZ-LPZ M1
N161 X=CENT M1
N170 Y=QY+0.2 FY=VF
N170 Y=TTP/5 FY=VF
N171 ZI=-(STP/2-DTF/2) G1
N172 XI=DTP/2-DTF/2 G1
N172 ZI=STP-DTF G1
N172 XI=-(DTP-DTF) G1
N172 ZI=-(STP-DTF) G1
N172 XI=DTP/2-DTF/2 G1
N172 ZI=STP/2-DTF/2 G1
;
N170 Y=TTP G1
N171 ZI=-(STP/2-DTF/2) G1
N172 XI=DTP/2-DTF/2 G1
N172 ZI=STP-DTF G1
N172 XI=-(DTP-DTF) G1
N172 ZI=-(STP-DTF) G1
N172 XI=DTP/2-DTF/2 G1
N172 ZI=STP/2-DTF/2 G1
;N180 Y=QY-SIC FY35
; OBRABOTKLA KORPUSA
N180 YI=1.00 FY=VF
N180 ZI=-(TTK/2-DTF/2) G1
N180 XI=-(STK/2-DTF/2) G1
N180 ZI=TTK-DTF G1
N180 XI=STK-DTF G1
N180 ZI=-(TTK-DTF) G1
N180 XI=-(STK/2-DTF/2) G1
N180 Y=0 G1
N300 PF2=0
N310 PN1=0
N320 PN2=DTK
:14
N180 YI=+1 G1
N180 XI=-(STK/2-DTF/2) G1
N180 ZI=TTK-DTF G1
N180 XI=STK-DTF G1
N180 ZI=-(TTK-DTF) G1
N180 XI=-(STK/2-DTF/2) G1
N180 PF2=PF2+1 PN1=PN1+1
;N180 JM!(PN1<=5):14
N180 JM(PF2<=PN2):14
N180 JM:141
:141
N190 Y=QY-SIC FY35
N190 FY60 VF=6 QZ=0
N200 JM(PUNS=1):11
N210 Z=-(LPZ+SUZ) M0
N220 TH0
=====
Правда, при сохранении изменений в программе ругается на бесконечный цикл, но работает исправно.
Буду рад, если кому-то пригодится, а если кто-то подскажет как эту канитель оптимизировать - так и еще больше рад. Спасибо всем откликнувшимся