;V1.3 ------- SPI --------------
; -----------------------------
 G94 G97 G40 G90
;(X) Координата определяющая левый нижний угол прямоугольника по оси X.
 E30=PL1
;
;(Y) Координата определяющая левый нижний угол прямоугольника по оси Y.
 E31=PL2
;
;(Z) Координата точки начала отработки по оси Z.
 E32=PL3
;
;(K) Координата определяющая глубину по оси Z.
 E33=PL6
;
;(I) Длина стоpоны пpямоугольника по оси Х
 E34=PL4
;
;(J) Длина стоpоны пpямоугольника по оси Y
 E35=PL5
;
;(R) Радиус скpугления
 E37=PL7
;
;(d) Глубина одного пpохода
 E36=PL8
;
; Pадиус фpезы 
 E38=PL0
 (BNE,E38,0,WW)
 (DIS,"В корректоре не задан К фрезы")
 "WW"
;(USF) Пpипуск вдоль боковой повеpхности
 E53=PL9
;
;(USP) Пpипуск по глубине
 E52=PL10
;
;(QIL)Отклонение от pазмеpа начала pаботы по оси Y
 E56=PL11
;
;q направление обхода (=0-против ч.с.; =1-по ч.с.).
 E60=PL12
 (BEQ,E60,0,PROTIV)
 E3=2
 (BNC,PO)
 "PROTIV"
 E3=3
"PO"

;
;Проверки:
         ;1)R>=Rфр+USF
            E62=E38+E53
            E63=ABS(E37)
            (BLT,E63,E62,ER1)
         ;4)QIL<=(R-Rфр-USF)*2
            E64=(E63-E38-E53)*2
            (BGT,E56,E64,ER4)
;-------------Пpизнак чистовой d=0-------------------
 (BEQ,E36,0,16)
 (BNC,18)
    "16"
 E1=1
 E52=0
 E53=0
    "18"

;-----Pасчет количества пpоходов--------
      ;E57-Глубина по Z
       E57=ABS(E32-E33)-E52
       (BEQ,E36,0,6)
      ;E1-Pасчет целого количества пpоходов
       E1=INT(E57/E36)
      ;E58-Pасчет остатка, мм
       E58=E57-(E1*E36)
      ;E59-10% глубины одного пpохода
       E59=E36*0.1
      ;Если остаток <=10% глубины одного пpохода пеpеход к "6", если > пpибавляю 1 пpоход
       (BLE,E58,E59,6)
                 E1=E1+1
       "6"
;Pасчет глубины одного пpохода E40
       E40=E57/E1
       E47=E32-E40
;------------------Pасчет--------------------------
E37=E37-E38-E53
E30=E30+(E34/2)
E31=E31+(E35/2)
;E41 = I/2-USF-Радиус инструмента
E41=(E34/2-E53)-E38
;E42 = J/2-USF-Радиус инструмента
E42=(E35/2-E53)-E38
;E43 = 
E43=(E41-E37)
;E44 = 
E44=(E42-E37)
;E45 = точка P1
E45=(E42-E56)
E46=NEG(E45+((E42-E45)/2))
E45=NEG(E45)
E47=E32-E40
E48=NEG(E41)
E49=NEG(E42)
E50=NEG(E43)
E51=NEG(E44)
(BEQ,E60,1,RUNPRV)
; ------- обработка -----------
(DPI,$PS1,$PS2)
(UIO,$PS1E30,$PS2E31)
G0 $PS1E50 $PS2E45 $PS3E32
     (RPT,E1)
G1 G29 $PS3E47
G3 G28 $PS1E50 $PS2E49 IE50 JE46
G1 $PS1E43
G3 $PS1E41 $PS2E51 IE43 JE51
G1 $PS2E44
G3 $PS1E43 $PS2E42 IE43 JE44
G1 $PS1E50
G3 $PS1E48 $PS2E44 IE50 JE44
G1 $PS2E51
G3 $PS1E50 $PS2E49 IE50 JE51
G3 $PS2E45 IE50 JE46
E47=E47-E40
     (ERP)
G0 G29 $PS1E50 $PS2E45 $PS3E32
(BNC,END)
;
"RUNPRV"
; ------- обработка -----------
(DPI,$PS1,$PS2)
(UIO,$PS1E30,$PS2E31)
G0 $PS1E50 $PS2E45 $PS3E32
     (RPT,E1)
G1 G29 $PS3E47
G2 G28 $PS1E50 $PS2E49 IE50 JE46
G2 $PS1E48 $PS2E51 IE50 JE51
G1 $PS2E44
G2 $PS1E50 $PS2E42 IE50 JE44
G1 $PS1E43
G2 $PS1E41 $PS2E44 IE43 JE44
G1 $PS2E51
G2 $PS1E43 $PS2E49 IE43 JE51
G1 $PS1E50
G2 $PS2E45 IE50 JE46
E47=E47-E40
     (ERP)
G0 G29 $PS1E50 $PS2E45 $PS3E32

"END"
; 
E30=NEG(E30)
E31=NEG(E31)
(UIO,$PS1E30,$PS2E31)
(BNC,OK)
        "ER1"
  (DIS,"Параметр R должен быть >=",E62)
  (BNC,OK)
        "ER4"
  (DIS,"Параметр QIL должен быть <=",E64)
        "OK"
 