;----------- KCI -------------
;Черновое послойное фрезерование внешней
конической поверхности концевой фрезой.
;-----------------------------
 G94 G97 G40 G90
;(X) Координата центра окружности по оси X
 E30=PL1
;
;(Y) Координата центра окружности по оси Y
 E31=PL2
;
;(Z) Кооpдината точки начала отpаботки по оси Z
 E32=PL3
;
;(RGB) Радиус заготовки в основании
 E33=PL4
;
;(RFB) Радиус детали в основании
 E34=PL5
;
;(K) Координата основания конуса вдоль оси Z.
 E35=PL6
;
;(H) Высота конуса вдоль оси Z.
 E57=PL7
;
;(a) Угол конуса
 E55=PL8
E60=E57/TAN(E55)
E61=E60-E34
(BGT,E61,0.00001,ERROR1)
;
;(j) Шаг по радиусу
 E39=PL9
;
;(d) Глубина одного прохода
 E37=PL10
;
;v выбор заготовки: 1-литье (конус с литьевым припуском); 2-цилиндр. 
 E65=PL11
;
;F рабочая подача (на дуге подхода и при обработки сечения конуса).
 E25=PL15
;
;f подача выхода (на дуге отхода после обработки сечения конуса).
 E26=PL16
;
;Радиус фрезы
 E36=PL0
 E70=2*E36
(BNE,E36,0,WW)
 (DIS,"В корректоре не задан К фрезы")
 "WW"
;
;(USF) Припуск вдоль боковой поверхности
 E43=PL12
;
;(USP) Припуск по глубине
 E44=PL13
;
;(QIL) Отклонение от размера начала работы 
 E45=PL14
;
;(q-направление обхода =0-против ч.с.; =1-по ч.с.) 
E68=PL17
(BEQ,E68,0,PROTIV)
E3=3
E4=2
(BNC,PO)
"PROTIV"
E3=2
E4=3
"PO"

; --------- Расчет -----------
 (BGT,E39,0,B)
 E1=1
 E43=0
         "B"
 (BGT,E37,0,A)
 E2=1
 E44=0
         "A"

;переход на 8, если заготовка цилиндр
(BEQ,E65,2,8)

;Вариант (v = 1)

;E40 = RG-RF-USF - глубина всего материала по радиусу
 E40=E33-E34-E43
       (BEQ,E39,0,6)
;-----Pасчет количества пpоходов--------
      ;E1-Pасчет целого количества пpоходов
       E1=INT(E40/E39)
      ;E38-Pасчет остатка, мм
       E38=E40-(E1*E39)
      ;E52-10% глубины одного пpохода
       E52=E39*0.10
      ;Если остаток <=10% шага по радиусу пеpеход к "6", если > пpибавляю 1 пpоход
       (BLE,E38,E52,6)
              
       E1=E1+1
   "6"
      ;Перерасчет шага по радиусу (j) E40
       E40=E40/E1     

;------
;E50 = Высота конуса по Z
 E50=E57
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+E37
       (BEQ,E37,0,7)
;-----Pасчет количества пpоходов по глубине--------
      ;E2-Pасчет целого количества пpоходов
       E2=INT(E50/E37)
      ;E69-Pасчет остатка, мм
       E69=E50-(E2*E37)
      ;E54-10% глубины одного пpохода
       E54=E37*0.10
      ;Если остаток <=10% шага по радиусу пеpеход к "7", если > пpибавляю 1 пpоход
       (BLE,E69,E54,7)
              
       E2=E2+1

   "7"
      ;Перерасчет глубины одного прохода (d2) E53
       E53=E50/E2     
      ;Перерасчет высоты конуса E57
       E57=E57-E53

;расчет координаты вершины конуса вдоль оси Z
E58=E35+E57+E44
;расчет координаты основания конуса вдоль оси Z
E59=E35+E44
;координата начала по X=RGB-Rфрезы-10мм
E66=E33+E36+E45
E67=NEG(E66)
;расчет координаты на радиусе конуса верхнего сечения вдоль оси X
E62=E33-E57/TAN(E55)
;Изменение радиуса от сечения к сечению
E56=E53/TAN(E55)
;расчет координаты начала обработки сечений вдоль оси X(Y=0)
;(координата опускания фрезы между уровнями обработки конуса)
 E46=E62+E36
 E47=NEG(E46)
;E47-P1 по оси Х

;
;----------- Выполнение цикла ---------
 (DPI,$PS1,$PS2)

 (UIO,$PS1E30,$PS2E31)
 G0 $PS1E67 $PS2
 $PS3E32
            (RPT,E2)
;E41 = координата начала и конца для каждого сечения
 E41=(E62-E40)+E36

 G1 G29 $PS3E58           FE25
            (RPT,E1)
;E42 = цент радиуса врезания 
 E42=(E41+((E46-E41)/2))
 E48=NEG(E41)
 E49=NEG(E42)
 G1 G27 $PS1E47 $PS2      FE25
 GE3 G28 $PS1E48 IE49 J   FE25
 GE4 I J                  FE25
 GE3 $PS1E47 $PS2 IE49  J FE26
 E41=E41-E40
            (ERP)
 G0 $PS1E67 $PS2

 E58=E58-E53
;расчет координаты на радиусе конуса следующего сечения вдоль оси X
E57=E57-E53
E62=E33-E57/TAN(E55)
E46=E62+E36
E47=NEG(E46)
            (ERP)
 G0 G29 $PS3E32
; 
 E30=NEG(E30)
 E31=NEG(E31)
 (UIO,$PS1E30,$PS2E31)
;--------- КОНЕЦ ---------------
(BNC,FINISH)

;Вариант (v = 2)

"8"
;------
;E50 = Высота конуса по Z
 E50=E57
       (BEQ,E37,0,11)
;-----Pасчет количества пpоходов по глубине--------
      ;E2-Pасчет целого количества пpоходов
       E2=INT(E50/E37)
      ;E69-Pасчет остатка, мм
       E69=E50-(E2*E37)
      ;E54-10% глубины одного пpохода
       E54=E37*0.10
      ;Если остаток <=10% шага по радиусу пеpеход к "11", если > пpибавляю 1 пpоход
       (BLE,E69,E54,11)
              
       E2=E2+1
  "11"
      ;Перерасчет глубины одного прохода (d2) E50
       E53=E50/E2     

 E41=E33+E36
 E46=E33+2*E36+E45
;E47-P1 по оси Х
 E47=NEG(E46)
 E40=0
 E57=E57-E53
;размер радиуса на сечении
 E63=E34-E57/TAN(E55)
;изменение размера конуса вдоль X
 E56=E53/TAN(E55)
;расчет координаты вершины конуса вдоль оси Z
 E58=E35+E57+E44
;расчет координаты основания конуса вдоль оси Z
 E59=E35+E44

;----------- Выполнение цикла ---------
 (DPI,$PS1,$PS2)
 (UIO,$PS1E30,$PS2E31)
 G0 $PS1E47 $PS2
 $PS3E32

            (RPT,E2)

;E40 = RGB-(RFтекущего сечения)-USF
 E40=E33-E63-E43	
(BLE,E40,E63,JLESSK)
       (BEQ,E39,0,10)
;-----Pасчет количества пpоходов--------
      ;E1-Pасчет целого количества пpоходов
       E1=INT(E40/E39)
      ;E38-Pасчет остатка, мм
       E38=E40-(E1*E39)
      ;E52-10% глубины одного пpохода
       E52=E39*0.10
      ;Если остаток <=10% шага по радиусу пеpеход к "10", если > пpибавляю 1 пpоход
N10       (BLE,E38,E52,10)
              
N11       E1=E1+1
   "10"
;Перерасчет шага по радиусу (j) E40
       E40=E40/E1     

;Проверка: "Диаметр фрезы > j", если нет, то вывод предупреждения
(BLE,E70,E40,ATTEN1)
(BNC,JLESSK)
"ATTEN1"
(DIS,"ВНИМАНИЕ!:Диаметр фрезы <=Шага j")

"JLESSK"
(BGT,E40,E63,NOLAST)
E1=1
"NOLAST"
 G1 G29 $PS3E58          FE25
            (RPT,E1)
;E41 = координата X в точке P2
 E41=E41-E40
;E42 = координата центра дуги подхода к сечению
 E42=(E41+((E46-E41)/2))
 E48=NEG(E41)
 E49=NEG(E42)
 GE3 G28 $PS1E48 IE49 J   FE25
 GE4 I J                  FE25
 GE3 $PS1E47 $PS2 IE49  J FE26
            (ERP)
 E41=E33+E36
 E63=E63+E56
;расчет координаты текущего сечения вдоль оси Z
 E58=E58-E53
            (ERP)
 G0 G29 $PS3E32
; 
 E30=NEG(E30)
 E31=NEG(E31)
 (UIO,$PS1E30,$PS2E31)
;--------- КОНЕЦ ---------------

(BNC,FINIS)
"ERROR1"
(DIS,"ВНИМАНИЕ1! Rвершины > Rоснования?")
(BNC,FINISH)

"FINISH"

"FINIS"