;ЦИКЛ: С21 Измерение круглого отверстия=
;==========
SYVAR185.15CH="Версия    1.02"
;результат измерения в переменной:
;PR1031 -измеренная координата центра
;        отверстия по X 
;PR1032 -измеренная координата центра
;        отверстия по Y
;PR1040 -измеренный радиус отверстия
;PR1051 -отклонение координаты центра
;        отверстия по X 
;PR1052 -отклонение координаты центра
;        отверстия по Y 
;PR1060 -отклонение радиуса отверстия
                                            ;
;Особенности ЦИКЛА.
                                            ;
;Датчик касания (ДК) в шпинделе.
                                            ;
;Номер канала измерения в цикле не определяе
;тся: по умолчанию канал №0:
;канал №0     BPI=0 - активирует ДК,
;                     конфигурированный в
;                     TAS или TAS0 *5 PGCFIL
;канал №1     BPI=1 - активирует ДК,
;                     конфигурированный в
;                     TAS1 *5 PGCFIL
                                            ;
;В файле PGCFIL в секции *2 для процесса
;записать 2 инструкции:
;  SIM=E,,1000,,,         - количество E не
;                           более 65565
;  SIM=NEW,PR,2000,6,62,3 - новыя переменная
;      (исключительно для параметрирования
;       циклов измерения)
; Сокращение
; SB - стандартный блок
                                            ;
;=======================Текст цикла:========================================
; == Проверка: переменные INAX1),2),3) не
;    должны иметь одинаковые значения ====SB
(BEQ,$INAX1,$INAX2,ERR1)
                 ;проверка имя оси ординат
                 ;не совпадает с именем оси
                 ;шпинделя
(BEQ,$INAX2,$INAX3,ERR1)
                 ;проверка имя оси абсциссы
                 ;не совпадает с именем оси
                 ;шпинделя
(BEQ,$INAX1,$INAX3,ERR1)
                                            ;
;==Вычисление № процесса, в котором
;  выполняется цикл==SB
;Примечание.
;Используется для расчета номера сигнала
;управляющего безопасностью ДК
;Данный сигнал, например, для 1-ого процесса
;U10N9 устанавливается через переменную
;SN(E16).BL , где: E16=329  (10*32+9=329) 
;!!!Безопасность ДК в цикле включается до
;   начала движения по G0,G1,G2,G3
;!!!Безопасность ДК в цикле выключается до
;   начала движения по G72,G73,G74
;!!!В случае срабатывания защиты ДК система
;   выведет на экран сообщение:
;!!!"Вход на ограничение перемещения
;    <имя оси>,<# процесса>"
;!!!и в PLC установит сигнал I3N9="1".
(BGE,SK25,80,5)
(BGE,SK25,80,4)
(BGE,SK25,80,3)
(BGE,SK25,80,2)
E15=0
(BNC,PROEND)
"2"
E15=1
(BNC,PROEND)
"3"
E15=2
(BNC,PROEND)
"4"
E15=3
(BNC,PROEND)
"5"
E15=4
                                            ;
   "PROEND"
                                            ;
                                            ;расчет порядкового номера
                                            ;сигнала управления защитой ДК
                                            ;для активного процесса
E16=(10+26*E15)*32+9
                                            ;
                                            ;PR1230=1 -управление сигналом
                                            ;          безопасности ДК
                                            ;          выполнено в ПЛ
(BEQ,PR1230,1,IZPLC1)
                 ;начальная установка:
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC1"
                                            ;
                 ;=====Входные данные=======
         ;X
E31=PL1
         ;Y
E32=PL2
         ;R
E41=PL3
         ;A0
E42=PL4
         ;dA
E43=PL5
         ;Z0
E30=PL6
         ;Z1
E37=PL7
         ;D
E40=PL8+DPMA
         ;dX
E44=PL9
         ;dY
E45=PL10
         ;dr+
E46=PL11
         ;dr-
E47=-PL12
         ;B
E8=PL13
         ;T
E4=PL14
         ;Q
E2=PL15
         ;F
E25=DPMF
         ;R
E9=PL16
         ;T
E3=PL17
         ;S
E1=PL18
                 ;скорость быстрого
                 ;перемещения к точке начала
                 ;измерения

E28=PR1228
G1FE28
                                ;
                                ;вспомогательная переменная.Используется для
                                ;выхода из цикла после появления на
                                ;видеостранице #8 ASSET текста ошибки
E5=0
         ;===================================
                 ;проверка диаметра ДК>0
(BEQ,PL0,0,ERR6)
                 ;проверка возможности
                 ;выполнить измерение
E81=2*E41-2*PL0-E40
(BLE,E81,1,ERR5)
                                            ;
;== определение осей на плоскости обработки ==SB
         ;имя оси абсцисс
$PS1=$INAX1
         ;имя оси ординат
$PS2=$INAX2
         ;имя оси шпинделя
$PS3=$INAX3
                                            ;
;==========================================
         ;== инициализация переменных
         ; измеренная координата центра
         ; отверстия по X
PR1031=0
         ; измеренная координата центра
         ; отверстия по Y
PR1032=0
         ; измеренный радиус отверстия
PR1040=0
         ; отклонение центра отверстия по X
PR1051=0
         ; отклонение центра отверстия по Y
PR1052=0
         ; отклонение радиуса отверстия
PR1060=0
                 ;расчет координат точки
                 ;начала измерения с учетом
                 ;D и DPMA
E51=E31+(E41-E40)*COS(E42)
E52=E32+(E41-E40)*SIN(E42)
                                            ;
E53=E31+(E41-E40)*COS(E42+E43)
E54=E32+(E41-E40)*SIN(E42+E43)
                                            ;
E55=E31+(E41-E40)*COS(E42+2*E43)
E56=E32+(E41-E40)*SIN(E42+2*E43)
                                            ;
E57=E31+(E41-E40)*COS(E42+3*E43)
E58=E32+(E41-E40)*SIN(E42+3*E43)
                                            ;         
                 ;расчет координат точки
                 ;касания ДК с поверхностью
E61=E31+E41*COS(E42)
E62=E32+E41*SIN(E42)
                                            ;      
E63=E31+E41*COS(E42+E43)
E64=E32+E41*SIN(E42+E43)
                                            ;         
E65=E31+E41*COS(E42+2*E43)
E66=E32+E41*SIN(E42+2*E43)
                                            ;         
E67=E31+E41*COS(E42+3*E43)
E68=E32+E41*SIN(E42+3*E43)
;============================================
;СОХРАНЕНИЕ ПАРАМЕТРОВ, ЗАДАННЫХ В ИНСТРУКЦИИ
;DPM (DPM0).
;============================================
         ;DPMA- дистанция установки рабочей
         ;скорости измерения.
         ;Дистанция откладывается от
         ;предполагаемой точки касания DK
         ;с поверхностью в направлении к
         ;начальной точке цикла.

E199=DPMA
         ;DPMS- дистанция безопасности DK.
         ;Откладывается от предполагаемой
         ;точки касания щупа с поверхностью в
         ;направлении измерения. 
E200=DPMS
         ;DPMF- рабочая скорость измерения.
         ;Действует на отрезке DPMA+DPMS
E25=DPMF
         ;активация схемы движения
         ;в цикле измерения
E26=DPMF
(BEQ,PR1227,0,F)
E26=PR1227
"F"
(DPT,E40,E200,E26)
;==========================================
                                            ;
(BEQ,PR1230,1,IZPLC2)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC2"
;=== подход в начало измерения
;=====точка 1======
                 ;-по оси шпинделя
                 ; на безопасную высоту
G0 $PS3 E30
                 ;-по осям в плоскости
                 ; обработки
$PS1 E31 $PS2 E32 
$PS1 E51 $PS2 E52
                 ;-по оси шпинделя
                 ; на высоту измерения
$PS3 E37
                                            ;
(BEQ,PR1230,1,IZPLC3)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC3"
                                            ;
;====измерение 1-ой точки=====
E71=0
E72=0
(BEQ,E9,1,DDD11)
(BEQ,E9,2,DDD12)
G72 $PS1 E61 $PS2 E62 RE200 E69
E71=E69
E72=E70
"DDD12"
G72 $PS1 E61 $PS2 E62 RE200 E69
E71=(E71+E69)/(E9-1)
E72=(E72+E70)/(E9-1)
"DDD11"
                                            ;
G72 $PS1 E61 $PS2 E62 E69
E71=(E71*(E9-1)+E69)/E9
E72=(E72*(E9-1)+E70)/E9
                                            ;
(BEQ,PR1230,1,IZPLC4)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC4"
                                            ;
                 ;-отход в плоскости
                 ; обработки
$PS1 E51 $PS2 E52
                                            ;
                 ;переход к точке начала
                 ;измерения №2 на высоте
                 ;измерения
(BEQ,E8,0,BBB1)
                                            ;
                 ;-отход по оси шпинделя на
                 ; безопасную высоту
G0 $PS3 E30
                                            ;
                                            ;
"BBB1"
                                            ;
(BEQ,E4,0,q1)
                                            ;
                 ;-выход к точке начала
                 ; измерения №2 в плоскости
                 ; обработки на высоте
                 ; измерения
G3 $PS1 E53 $PS2 E54 IE31 JE32
G1
                                            ;
"q1"
$PS1  E53 $PS2  E54
                 ;-выход оси шпинделя
                 ; на высоту измерения
$PS3 E37
                                            ;
                                            ;
(BEQ,PR1230,1,IZPLC5)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC5"
                                            ;
                 ;===измерение 2-ой точки===
E73=0
E74=0
(BEQ,E9,1,DDD21)
(BEQ,E9,2,DDD22)
G72 $PS1 E63 $PS2 E64 RE200 E69
E73=E69
E74=E70
"DDD22"
G72 $PS1 E63 $PS2 E64 RE200 E69
E73=(E73+E69)/(E9-1)
E74=(E74+E70)/(E9-1)
"DDD21"
G72 $PS1 E63 $PS2 E64 E69
E73=(E73*(E9-1)+E69)/E9
E74=(E74*(E9-1)+E70)/E9
                                            ;
(BEQ,PR1230,1,IZPLC6)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC6"
                                            ;
                 ;-отход в плоскости
                 ; обработки
$PS1 E53 $PS2 E54
                                            ;
(BEQ,E8,0,BBB2)
                 ;-отход по оси шпинделя на
                 ; безопасную высоту
$PS3 E30
                                            ;
"BBB2"
                                            ;
(BEQ,E4,0,q2)
                                            ;
G3 $PS1  E55 $PS2  E56  IE31 JE32
G1
                                            ;
"q2"
                 ;-подход по осям в
                 ; плоскости обработки
$PS1  E55 $PS2  E56
                 ;-по оси шпинделя на высоту
                 ; измерения
$PS3 E37
                                            ;
(BEQ,PR1230,1,IZPLC7)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC7"
                                            ;
                 ;===измерение 3-ей точки===
E75=0
E76=0
(BEQ,E9,1,DDD31)
(BEQ,E9,2,DDD32)
G72 $PS1 E65 $PS2 E66 RE200 E69
E75=E69
E76=E70
"DDD32"
G72 $PS1 E65 $PS2 E66 RE200 E69
E75=(E75+E69)/(E9-1)
E76=(E76+E70)/(E9-1)
"DDD31"
G72 $PS1 E65 $PS2 E66 E69
E75=(E75*(E9-1)+E69)/E9
E76=(E76*(E9-1)+E70)/E9
                                            ;
(BEQ,PR1230,1,IZPLC8)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC8"
                                            ;
                 ;-отвод по осям в плоскости
                 ; обработки
$PS1 E55 $PS2 E56
                                            ;
                 ;переход к точке начала
                 ;измерения на высоте
                 ;измерения
(BEQ,E8,0,w3)
                 ;-отход по оси шпинделя
                 ; на безопасную высоту
$PS3 E30
                                            ;
"w3"
(BEQ,E2,3,S4)
(BEQ,E4,0,q3)
                                            ;
G3 $PS1 E57 $PS2 E58 IE31 JE32
G1
                                            ;
"q3"
                 ;-выход к точке начала
                 ; измерения в плоскости
                 ; измерения
$PS1 E57 $PS2 E58
                 ;-выход оси шпинделя на
                 ; высоту измерения
$PS3 E37
                                            ;
                                            ;
(BEQ,PR1230,1,IZPLC9)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC9"
                                            ;
                 ;===измерение 4-ой точки===
E77=0
E78=0
(BEQ,E9,1,DDD41)
(BEQ,E9,2,DDD42)
G72 $PS1 E67 $PS2 E68 RE200 E59
E77=E59
E78=E60
"DDD42"
G72 $PS1 E67 $PS2 E68  RE200 E59
E77=(E77+E59)/(E9-1)
E78=(E78+E60)/(E9-1)
"DDD41"
G72 $PS1 E67 $PS2 E68  E59
E77=(E77*(E9-1)+E59)/E9
E78=(E78*(E9-1)+E60)/E9
                                ;
                                ;
(BEQ,PR1230,1,IZPL10)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPL10"
                                            ;
$PS1 E57 $PS2 E58
                                            ;
"S4"
                                            ;
                 ;-отход по оси шпинделя
                 ; на безопасную высоту
$PS3 E30
                                            ;
                                            ;
$PS1 E31 $PS2 E32
;===========================================
;Обработка результатов измерения
;===========================================
;построение окружности "c1" по первым 3-м
;измеренным координатам отверстия  
p1=XE71 YE72
p2=XE73 YE74
p3=XE75 YE76
c1=p1,p2,p3
         ;извлечение координаты центра
         ;окружности "c1" по X
E71=FEC(1,1)
         ;извлечение координаты центра
         ;окружности "c1" по Y
E72=FEC(1,2)
         ;извлечение радиуса окружности "c1"
E73=FEC(1,3)
         ;рассчет отклонения X,Y,R
E90=E71-E31
E91=E72-E32
E92=E73-E41
E100=ABS(E90)
E101=ABS(E91)
                 ; конец обработки,
                 ; если Q=3 (3 измерения)
(BEQ,E2,3,qwe2)
                 ; если Q=4 (4 измерения)
p4=XE77 YE78
;построение окружности"c2"по 2-ой 3-ей 4-ой
;измеренным координатам отверстия  
c2=p2,p3,p4
         ;извлечение координаты центра
         ;окружности "c2" по X
E74=FEC(2,1)
         ;извлечение координаты центра
         ;окружности "c2" по Y
E75=FEC(2,2)
         ;извлечение радиуса окружности "c2"
E76=FEC(2,3)
;рассчет отклонения X,Y,R, как среднее
;арифметическое между соответствующими 
;элементами окружностей "c1" и "c2"
E71=(E74+E71)/2
E72=(E75+E72)/2
E73=(E76+E73)/2
E90=E71-E31
E91=E72-E32
E92=E73-E41
E100=ABS(E90)
E101=ABS(E91)
                                            ;
"qwe2"
                                            ;
                 ;Обработка отклонений
(BLT,E44,E100,ERRX3)
(BLT,E45,E101,ERRY3)
(BGT,E92,E46, ERRP3)
(BLT,E92,E47, ERrM3)
                                            ;
(BNC,en)
                                ;===
"ERRX3"
(DIS,"Отклонение X")
                                            ;
(BEQ,E1,0,ERR13)
E2=1
"ERR13"
(BNC,en)
                                ;===
"ERRY3"
(DIS,"Отклонение Y")
                                            ;
(BEQ,E1,0,ERR23)
E2=1
"ERR23"
(BNC,en)
                                ;===
"ERrM3"
(DIS,"Превышение R")
                                            ;
(BEQ,E1,0,ERR33)
E2=1
"ERR33"
(BNC,en)
                                ;===
"ERRP3"
(DIS,"Низкий R")
                                            ;
(BEQ,E1,0,ERR43)
E2=1
"ERR43"
(BNC,en)
                                ;===
                                            ;
"en"
                                            ;
                                            ;
(BEQ,E3,0,END1)
(BEQ,E3,2,SQRT)
                                            ;
         ;структура файла-отчета PRC21/MP3
(DER,2,SYVAR.32CH,SYVAR32.7CH,E350,SYVAR39.3CH,E351)
ERR=1
(CRE,2,PRC21/MP3,22)
(BNE,IOSTA,5,OK)
(CAN,PRC21/MP3)
(CRE,2,PRC21/MP3,22)
                                            ;
"OK"
(OPN,1,PRC21/MP3,W)
SYVAR39.3CH="   "
E351=0
E350=0
SYVAR32.7CH="       "
SYVAR.32CH="Измерение круглого отверстия    "
(WRT,1,2,1)
                                            ;
SYVAR32.7CH="       "
E351=E44
SYVAR39.3CH="+/-"
                                            ;
SYVAR.32CH="Центр отверстия по оси X        "
E350=E31
(WRT,1,2,2)
                                            ;
SYVAR32.7CH="       "
E351=E45
SYVAR39.3CH="+/-"
                                            ;
SYVAR.32CH="Центр отверстия по оси Y        "
E350=E32
(WRT,1,2,3)
                                            ;
SYVAR39.3CH="   "
E351=0
SYVAR32.7CH="       "
SYVAR.32CH="Номинальный радиус отверстия    "
E350=E41
(WRT,1,2,4)
                                            ;
SYVAR.32CH="Отн. макс. допуск по радиусу    "
E350=E46
(WRT,1,2,5)
                                            ;
SYVAR.32CH="Отн. мин. допуск по радиусу     "
E350=-E47
(WRT,1,2,6)
                                            ;
SYVAR.32CH="Безопасная высота               "
E350=E30
(WRT,1,2,7)
                                            ;
SYVAR.32CH="Высота измерения по оси щупа    "
E350=E37
(WRT,1,2,8)
                                            ;
SYVAR.32CH="Безопасное расстояние           "
E350=E40
(WRT,1,2,9)
                                            ;
SYVAR.32CH="Скорость измерения              "
E350=E26
(WRT,1,2,10)
                                            ;
SYVAR32.7CH="PR1031="
SYVAR.32CH="Координата центра отв.по X      "
E350=E71
(WRT,1,2,11)
                                            ;
SYVAR32.7CH="PR1032="
SYVAR.32CH="Координата центра отв.по Y      "
E350=E72
(WRT,1,2,12)
                                            ;
SYVAR32.7CH="PR1040="
SYVAR.32CH="Значение радиуса отверстия      "
E350=E73
(WRT,1,2,13)
                                            ;
SYVAR32.7CH="PR1051="
SYVAR.32CH="Отклонение центра отв.по X      "
E350=E90
(WRT,1,2,14)
                                            ;
SYVAR32.7CH="PR1052="
SYVAR.32CH="Отклонение центра отв.по Y      "
E350=E91
(WRT,1,2,15)
                                            ;
SYVAR32.7CH="PR1060="
SYVAR.32CH="Отклонение радиуса отверстия    "
E350=E92
(WRT,1,2,16)
                                            ;
        ;Проверка размеров для записи в файл
SYVAR32.7CH="       "
E98=0
"XoFILE"
(BLT,E44,E100,ERRX1)
"YoFILE"
(BLT,E45,E101,ERRY1)
"RgFILE"
(BGT,E92,E46, ERRP1)
"RlFILE"
(BLT,E92,E47, ERrM1)
"ENDFIL"
                                            ;
(BEQ,E98,1,NOGOOF)
SYVAR.32CH="!Все размеры отверстия в допуске"
E350=0
(WRT,1,2,18)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,22)
(CLO,1)
(BNC,POS)
                                            ;
"NOGOOF"
SYVAR.32CH="!Размеры отверстия не в допуске:"
E350=0
(WRT,1,2,18)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,22)
(CLO,1)
                                            ;
"POS"
                                            ;
(BEQ,E3,1,END1)
(BGE,E3,2,SQRT)
                                            ;
                                ;===
"ERRP1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Радиус отверстия > допустимого  "
E350=0
(BEQ,E1,0,ERR2)
E2=1
"ERR2"
(WRT,1,2,21)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,22)
(BNC,ENDFIL)
                                ;===
"ERrM1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Радиус отверстия < допустимого  "
E350=0
(BEQ,E1,0,ER3)
E2=1
"ER3"
(WRT,1,2,21)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,22)
(BNC,ENDFIL)
                                ;===
"ERRX1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Смещен X - вне допуска          "
E350=0
(BEQ,E1,0,ER4)
E2=1
"ER4"
(WRT,1,2,19)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,22)
(BNC,YoFILE)
                                ;===
"ERRY1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Смещен Y - вне допуска          "
E350=0
(BEQ,E1,0,ER5)
E2=1
"ER5"
(WRT,1,2,20)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,22)
(BNC,RgFILE)
                                ;===
"SQRT"
                                            ;
(SCR,ON)
(DEF,  1, 2, 1," Цикл измерения детали          ",A16)
(DEF,  2, 2,33,"Измерение круглого отверстия    ",A16)
(DEF,  3, 2,64,SYVAR185.15CH,A16)
(DEF,  4, 1, 1,"                                ",A16)
(DEF,  5, 1,33,"                                ",A16)
(DEF,  6, 1,65,"              ",A16)
                                            ;
(DEF,  7, 4, 3,"Координаты центра:",A183)
(DEF,  8, 5, 3,$PS1)
(DEF,  9, 5, 16,"+/-")
(DEF, 10, 5, 5,E31,6)
(DEF, 11, 5, 20,E44,6)
                                            ;
(DEF, 12, 6, 3,$PS2)
(DEF, 13, 6, 16,"+/-")
(DEF, 14, 6, 5,E32,6)
(DEF, 15, 6, 20,E45,6)
                                            ;
(DEF, 17,19,44,"Скорость измерения")
(DEF, 18,19,68,E26,5)
                                            ;
(DEF, 19, 4,53,"Результаты измерения:",A183)
                                            ;
(DEF, 20,17,44,"Параметры измерения:",A49)
(DEF, 21,18,44,"Безопасное расстояние")
(DEF, 22,18,68,E40,6)
                                            ;
(DEF, 23,7,3,"Радиус",A183)
(DEF, 24,8,3,"+dr")
(DEF, 25,9,4,"R")
(DEF, 26,10,3,"-dr")
                                            ;
E47=-E47
(DEF, 27,8,7,E46)
(DEF, 28,9,6,E41)
(DEF, 29,10,7,E47)
E47=-E47
                                            ;
(DEF, 32,18, 3,"Высота безопасная")
(DEF, 33,18,25,E30,6)
(DEF, 34,19, 3,"Высота измерения")
(DEF, 35,19,25,E37,6)
                                            ;
(DEF, 36,17, 3,"Ось щупа",A59)
(DEF, 37,17,25,$PS3)
                                            ;
"GOOD"
(DEF, 42, 5,55,"X",A16)
(DEF, 38, 5,60,E71,6,A16)
(DEF, 43, 6,55,"Y",A16)
(DEF, 39, 6,60,E72,6,A16)
(DEF, 44, 7,55,"R",A16)
(DEF, 40, 7,60,E73,6,A16)
(DEF, 45, 8,55,"dX",A16)
(DEF, 46, 8,60,E90,6,A16)
(DEF, 47, 9,55,"dY",A16)
(DEF, 48, 9,60,E91,6,A16)
(DEF, 49, 10,55,"dR",A16)
(DEF, 50, 10,60,E92,6,A16)
(DEF,110,13,10,"Для продолжения нажмите ПУСК    ",A12)
                                            ;
E99=0
"Xc"
(BLT,E44,E100,ERRX)
"Yc"
(BLT,E45,E101,ERRY)
"Rp"
(BGT,E92,E46, ERrP)
"Rm"
(BLT,E92,E47, ERrM)
                                            ;
(BEQ,E99,1,NOGOOD)
(DEF,109,12,10,"Все размеры отверстия в допуске ",A12)
"NOGOOD"
                                            ;
#(OUT)
                                            ;
(BNC,En)
                                            ;
                                            ;
"ERrP"
E99=1
(DEF,100,10,20,"Радиус отверстия > допустимого  ",A12)
(DEF,104,12,10,"                                ",A12)
#(OUT)
(BEQ,E1,0,ERR8)
E2=1
"ERR8"
(BNC,Rm)
                                            ;
"ERrM"
E99=1
(DEF,101,10,20,"Радиус отверстия < допустимого  ",A12)
(DEF,105,12,10,"                                ",A12)
#(OUT)
                                            ;
(BEQ,E1,0,ERR9)
E2=1
"ERR9"
(BNC,En)
                                            ;
"ERRX"
E99=1
(DEF,102, 8,20,"Центр отверстия смещен по X     ",A12)
(DEF,106,12,10,"                                ",A12)
#(OUT)
                                            ;
(BEQ,E1,0,ERR10)
E2=1
"ERR10"
(BNC,Yc)
                                            ;
"ERRY"
E99=1
(DEF,103, 9,20,"Центр отверстия смещен по Y     ",A12)
(DEF,107,12,10,"                                ",A12)
#(OUT)
                                            ;
(BEQ,E1,0,ERR11)
E2=1
"ERR11"
(BNC,Rp)
                                            ;
"En"
                                            ;
M0
(SCR,OFF)
                                            ;
"END1"
                                            ;
(BNE,E2,1,GOOD3)
                                            ;
                                            ;===
"HOLD"
M0
(BNE,SK(E18),1,HOLD)
(BNC,END1)
                                            ;
"GOOD3"
                                            ;
;======Сохранение результата в переменных===
                                            ;
PR1031=E71
PR1032=E72
PR1040=E73
PR1051=E90
PR1052=E91
PR1060=E92
                                            ;
                                            ;
(BNC,END)
                 ;====обработка ошибок====== 
                                            ; 
"ERR1"
                                            ;
(SCR,ON)
(DEF, 1, 1,20,"ВНИМАНИЕ! Ошибка конфигурации ос")
(DEF, 2, 1,52,"ей")
(DEF, 5, 3, 5,"Абсцисса, ордината и ось шпинде-")
(DEF,10, 4, 5,"ля должны иметь разные имена.   ")
(DEF,15, 7, 5,"Для продолжения цикла нажать 1 и",A1)
(DEF,20, 7,37," клавишу ENTER ",A1)
(DEF,25, 7,53,E5,2)
(DEF,30, 9, 5,"Для прекращения программы выполн",A12)
(DEF,31, 9,37,"ить 'ОБЩИЙ СБРОС'.",A12)
                                            ;
(BNC,ENDERR)
                                            ;
                                            ;
"ERR3"
                                            ;
(SCR,ON)
(DEF, 1, 1,20,"ВНИМАНИЕ! ошибка ввода данных ци")
(DEF, 2, 1,52,"кла")
(DEF, 5, 3, 5,"Дистанция между точками измерени")
(DEF, 6, 3,37,"я")
(DEF,10, 4, 5,"вдоль оси X должна быть > 0.    ")
(DEF,15, 7, 5,"Для продолжения цикла нажать 1 и",A1)
(DEF,20, 7,37," клавишу ENTER ",A1)
(DEF,25, 7,53,E5,2)
(DEF,30, 9, 5,"Для прекращения программы выполн",A12)
(DEF,31, 9,37,"ить 'ОБЩИЙ СБРОС'.",A12)
                                            ;
(BNC,ENDERR)
                                            ;
                                            ;
"ERR4"
                                            ;
(SCR,ON)
(DEF, 1, 1,20,"ВНИМАНИЕ! ошибка ввода данных ци")
(DEF, 2, 1,52,"кла")
(DEF, 5, 3, 5,"Дистанция между точками измерени")
(DEF, 6, 3,37,"я")
(DEF,10, 4, 5,"вдоль оси Y должна быть > 0.    ")
(DEF,15, 7, 5,"Для продолжения цикла нажать 1 и",A1)
(DEF,20, 7,37," клавишу ENTER ",A1)
(DEF,25, 7,53,E5,2)
(DEF,30, 9, 5,"Для прекращения программы выполн",A12)
(DEF,31, 9,37,"ить 'ОБЩИЙ СБРОС'.",A12)
                                            ;
(BNC,ENDERR)
                                            ;
                                            ;
"ERR5"
                                            ;
(SCR,ON)
(DEF, 1, 1,20,"ВНИМАНИЕ! ошибка ввода данных ци")
(DEF, 2, 1,52,"кла")
(DEF, 4, 3, 5,"D отверстия - D щупа - (D безопа")
(DEF, 5, 3,37,"сности + DPMA) < 1 мм           ")
(DEF, 6, 4, 5,"Начальная координата щупа в плос")
(DEF, 7, 4,37,"кости XY                        ")
(DEF, 8, 5, 5,"задана за границей отверстия    ")
(DEF,15, 7, 5,"Для продолжения цикла нажать 1 и",A1)
(DEF,20, 7,37," клавишу ENTER ",A1)
(DEF,25, 7,53,E5,2)
(DEF,30, 9, 5,"Для прекращения программы выполн",A12)
(DEF,31, 9,37,"ить 'ОБЩИЙ СБРОС'.",A12)
                                            ;
(BNC,ENDERR)
                                            ;
"ERR6"
                                            ;
(SCR,ON)
(DEF, 1, 1,20,"ВНИМАНИЕ! ошибка ввода данных ци")
(DEF, 2, 1,52,"кла")
(DEF, 5, 3, 5,"D щупа в корректоре должен быть ")
(DEF, 6, 3,37,"> 0")
(DEF,15, 7, 5,"Для продолжения цикла нажать 1 и",A1)
(DEF,20, 7,37," клавишу ENTER ",A1)
(DEF,25, 7,53,E5,2)
(DEF,30, 9, 5,"Для прекращения программы выполн",A12)
(DEF,31, 9,37,"ить 'ОБЩИЙ СБРОС'.",A12)
                                            ;
(BNC,ENDERR)
                                            ;
"ENDERR"
                                            ;
                                            ;
                 ;Запрос вывода ошибки на
                 ;видеостраницу #8 ASSET с
                 ;предложением выхода из
                 ;программы
E5=0
(DLY,0.1)
(OUT)
                                            ;
"ERR"
(INP," ",E5,25)
(BEQ,E5,0,ERR)
(SCR,OFF)
                                            ;
"END"
                 ;активация схемы движения
                 ;ДК, заданной в DPM
    ;DPMA,DPMS,DPMF
(DPT,E199,E200,E25)
                                            ;
;===
(BEQ,PR1230,1,IZPL19)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPL19"
       ;======Конец цикла======