;ЦИКЛ: С24 Измерение прямоугольного острова=
;==========
SYVAR185.15CH=" Версия    1.02"
;результат измерения в переменной:
;PR1031 -измеренная координата центра
;        острова вдоль X 
;PR1032 -измеренная координата центра
;        острова вдоль Y
;PR1041 -измеренная длина стороны
;        острова вдоль X
;PR1042 -измеренная длина стороны
;        острова вдоль Y 
;PR1051 -отклонение координаты центра
;        острова вдоль X 
;PR1052 -отклонение координаты центра
;        острова вдоль Y
;PR1061 -отклонение длины стороны
;        острова вдоль X 
;PR1062 -отклонение длины стороны
;        острова вдоль Y
                                            ;
;Особенности ЦИКЛА.
                                            ;
;Датчик касания (ДК) в шпинделе.
                                            ;
;Номер канала измерения в цикле не определяе
;тся: по умолчанию канал №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
         ;L
E41=PL3
         ;W
E42=PL4
         ;Z0
E30=PL5
         ;Z7
E37=PL6
         ;D
E40=PL7+DPMA
         ;dX
E43=PL8
         ;dY
E44=PL9
         ;dL+
E45=PL10
         ;dL-
E46=-PL11
         ;dW+
E47=PL12
         ;dW-
E48=-PL13
         ;F
E25=DPMF
         ;B
E8=PL14
         ;R
E9=PL15
         ;T
E3=PL16
         ;S
E1=PL17
                 ;скорость быстрого
                 ;перемещения к точке начала
                 ;измерения
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
         ; измеренная длина стороны
         ; острова вдоль X
PR1041=0
         ; измеренная длина стороны
         ; острова вдоль Y 
PR1042=0
         ; отклонение координаты центра
         ; острова вдоль X 
PR1051=0
         ; отклонение координаты центра
         ; острова вдоль Y
PR1052=0
         ; отклонение длины стороны
         ; острова вдоль X 
PR1061=0
         ; отклонение длины стороны
         ; острова вдоль Y
PR1062=0
                 ;расчет координат точки
                 ;начала измерения с учетом
                 ;D и DPMA
                 ;X-
E51=E31-E41/2-E40
                 ;Y-
E52=E32-E42/2-E40
                 ;X+
E53=E31+E41/2+E40
                 ;Y+
E54=E32+E42/2+E40
                                            ;
                 ;расчет координат точки
                 ;касания ДК с поверхностью
                 ;X-
E55=E31-E41/2
                 ;Y-
E56=E32-E42/2
                 ;X+
E57=E31+E41/2
                 ;Y+
E58=E32+E42/2
;============================================
;СОХРАНЕНИЕ ПАРАМЕТРОВ, ЗАДАННЫХ В ИНСТРУКЦИИ
;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 E32
                 ;-по оси шпинделя
                 ; на высоту измерения
$PS3 E37
                                            ;
(BEQ,PR1230,1,IZPLC3)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC3"
                                            ;
;====измерение 1-ой точки X- =====
E61=0
E62=0
(BEQ,E9,1,DDD11)
(BEQ,E9,2,DDD12)
                                            ;
G72 $PS1 E55 $PS2 E32 RE200 E59
E61=E59
E62=E60
"DDD12"
G72 $PS1 E55 $PS2 E32 RE200 E59
E61=(E61+E59)/(E9-1)
E62=(E62+E60)/(E9-1)
"DDD11"
G72 $PS1 E55 $PS2 E32 E59
E61=(E61*(E9-1)+E59)/E9
E62=(E62*(E9-1)+E60)/E9
                                            ;
(BEQ,PR1230,1,IZPLC4)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC4"
                                            ;
                 ;-отход в плоскости
                 ; обработки
$PS1 E51 $PS2 E32
                                            ;
                 ;переход к точке начала
                 ;измерения №2
(BEQ,E8,0,w1)
                                            ;
                 ;-отход по оси шпинделя
                 ; на безопасную высоту
G0 $PS3 E30
                                            ;
(BNC,q1)
                                            ;
"w1"
$PS2 E52
"q1"
                                            ;
                 ;-выход к точке начала
                 ; измерения №2 в плоскости
                 ; обработки
$PS1 E31 $PS2 E52
                 ;-выход оси шпинделя
                 ; на высоту измерения
$PS3 E37
                                            ;
                                            ;
(BEQ,PR1230,1,IZPLC5)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC5"
                                            ;
                 ;==измерение 2-ой точки Y-=
E63=0
E64=0
(BEQ,E9,1,DDD21)
(BEQ,E9,2,DDD22)
G72 $PS1 E31 $PS2 E56 RE200 E59
E63=E59
E64=E60
"DDD22"
G72 $PS1 E31 $PS2 E56 RE200 E59
E63=(E63+E59)/(E9-1)
E64=(E64+E60)/(E9-1)
"DDD21"
G72 $PS1 E31 $PS2 E56 E59
E63=(E63*(E9-1)+E59)/E9
E64=(E64*(E9-1)+E60)/E9
                                            ;
(BEQ,PR1230,1,IZPLC6)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC6"
                                            ;
                 ;-отход в плоскости
                 ; обработки
$PS1 E31 $PS2 E52
                                            ;
(BEQ,E8,0,w2)
                 ;-отход по оси шпинделя на
                 ; безопасную высоту
$PS3 E30
(BNC,q2)
"w2"
$PS1 E53
"q2"    
                 ;-подход по осям в
                 ; плоскости обработки
$PS1 E53 $PS2 E32
                 ;-по оси шпинделя на высоту
                 ; измерения
$PS3 E37
                                            ;
(BEQ,PR1230,1,IZPLC7)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC7"
                                            ;
                 ;=измерение 3-ей точки X+ =
E65=0
E66=0
(BEQ,E9,1,DDD31)
(BEQ,E9,2,DDD32)
G72 $PS1 E57 $PS2 E32  RE200 E59
E65=E59
E66=E60
"DDD32"
G72 $PS1 E57 $PS2 E32  RE200 E59
E65=(E65+E59)/(E9-1)
E66=(E66+E60)/(E9-1)
"DDD31"
G72 $PS1 E57 $PS2 E32  E59
E65=(E65*(E9-1)+E59)/E9
E66=(E66*(E9-1)+E60)/E9
                                            ;
(BEQ,PR1230,1,IZPLC8)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC8"
                                            ;
                 ;-отвод по осям в плоскости
                 ; обработки
$PS1 E53 $PS2 E32
                                            ;
                 ;переход к точке начала
                 ;измерения на высоте
                 ;измерения
(BEQ,E8,0,w3)
                 ;-отход по оси шпинделя
                 ; на безопасную высоту
$PS3 E30
(BNC,q3)
"w3"
 $PS2 E54
"q3"
                 ;-выход к точке начала
                 ; измерения в плоскости
                 ; обработки
$PS1 E31 $PS2 E54
                 ;-выход оси шпинделя
                 ; на высоту измерения
$PS3 E37
                                            ;
                                            ;
(BEQ,PR1230,1,IZPLC9)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC9"
                                            ;
                 ;=измерение 4-ой точки Y+ =
E67=0
E68=0
(BEQ,E9,1,DDD41)
(BEQ,E9,2,DDD42)
G72 $PS1 E31 $PS2 E58 RE200 E59
E67=E59
E68=E60
"DDD42"
G72 $PS1 E31 $PS2 E58 RE200 E59
E67=(E67+E59)/(E9-1)
E68=(E68+E60)/(E9-1)
"DDD41"
G72 $PS1 E31 $PS2 E58  E59
E67=(E67*(E9-1)+E59)/E9
E68=(E68*(E9-1)+E60)/E9
                                            ;
                                            ;
(BEQ,PR1230,1,IZPL10)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPL10"
                 ;-отвод по осям в плоскости
                 ; обработки
$PS1 E31 $PS2 E54
                                            ;
                 ;-отход по оси шпинделя
                 ; на безопасную высоту
$PS3 E30
                                            ;
                                            ;
$PS1 E31 $PS2 E32
;===========================================
;Обработка результатов измерения
;===========================================
E71=E61+(E65-E61)/2
E72=E64+(E68-E64)/2
                                            ;
E73=(E65-E61)
E74=(E68-E64)
                                            ;
E75=ABS(E71-E31)
E76=ABS(E72-E32)
                                            ;
E77=E73-E41
E78=E74-E42
                                            ;
                 ;Обработка отклонений
(BGT,E77,E45,ERRLP0)
(BLT,E77,E46,ERRLM0)
(BLT,E43,E75,ERRX0)
                                            ;
(BGT,E78,E47,ERRWP0)
(BLT,E78,E48,ERRWM0)
(BLT,E44,E76,ERRY0)
(BNC,en)
                                ;===
"ERRLP0"
(DIS,"Превышение L")
                                            ;
(BEQ,E1,0,ERR71)
E2=1
"ERR71"
(BNC,en)
                                ;===
"ERRLM0"
(DIS,"Низкий L")
                                            ;
(BEQ,E1,0,ERR81)
E2=1
"ERR81"
(BNC,en)
                                ;===
"ERRX0"
(DIS,"Смещен X")
                                            ;
(BEQ,E1,0,ERR91)
E2=1
"ERR91"
(BNC,en)
                                ;===
"ERRWP0"
(DIS,"Превышение W")
                                            ;
(BEQ,E1,0,ERR101)
E2=1
"ERR101"
(BNC,en)
                                ;===
"ERRWM0"
(DIS,"Низкий W")
                                            ;
(BEQ,E1,0,ERR111)
E2=1
"ERR111"
(BNC,en)
                                ;===
"ERRY0"
(DIS,"Смещен Y")
(BEQ,E1,0,ERR121)
E2=1
"ERR121"
                                            ;
"en"
                                            ;
                                            ;
(BEQ,E3,0,END1)
(BEQ,E3,2,SQRT)
                                            ;
         ;структура файла-отчета PRC24/MP3
(DER,2,SYVAR.32CH,SYVAR32.7CH,E350,SYVAR39.3CH,E351)
ERR=1
(CRE,2,PRC24/MP3,28)
(BNE,IOSTA,5,OK)
(CAN,PRC24/MP3)
(CRE,2,PRC24/MP3,28)
                                            ;
"OK"
(OPN,1,PRC24/MP3,W)
SYVAR39.3CH="   "
E351=0
E350=0
SYVAR32.7CH="       "
SYVAR.32CH="Измерение прямоугольного острова"
(WRT,1,2,1)
SYVAR32.7CH="       "
E351=E43
SYVAR39.3CH="+/-"
                                            ;
SYVAR.32CH="Центр острова по оси X          "
E350=E31
(WRT,1,2,2)
                                            ;
SYVAR32.7CH="       "
E351=E44
SYVAR39.3CH="+/-"
                                            ;
SYVAR.32CH="Центр острова по оси Y          "
E350=E32
(WRT,1,2,3)
                                            ;
SYVAR39.3CH="   "
E351=0
SYVAR32.7CH="       "
SYVAR.32CH="Номинал. длина стороны по оси X "
E350=E41
(WRT,1,2,4)
                                            ;
SYVAR.32CH="Относит. макс. допуск  по оси X "
E350=E45
(WRT,1,2,5)
                                            ;
SYVAR.32CH="Относит.  мин. допуск  по оси X "
E350=-E46
(WRT,1,2,6)
                                            ;
SYVAR.32CH="Номинал. длина стороны по оси Y "
E350=E42
(WRT,1,2,7)
                                            ;
SYVAR.32CH="Относит. макс. допуск  по оси Y "
E350=E47
(WRT,1,2,8)
                                            ;
SYVAR.32CH="Относит. мин.  допуск  по оси Y "
E350=-E48
(WRT,1,2,9)
                                            ;
SYVAR.32CH="Безопасная высота               "
E350=E30
(WRT,1,2,10)
                                            ;
SYVAR.32CH="Высота измерения по оси щупа    "
E350=E37
(WRT,1,2,11)
                                            ;
SYVAR.32CH="Безопасное расстояние           "
E350=E40
(WRT,1,2,12)
                                            ;
SYVAR.32CH="Скорость измерения              "
E350=E25
(WRT,1,2,13)
                                            ;
SYVAR32.7CH="PR1031="
SYVAR.32CH="Координата центра острова ось X "
E350=E71
(WRT,1,2,14)
                                            ;
SYVAR32.7CH="PR1032="
SYVAR.32CH="Координата центра острова ось Y "
E350=E72
(WRT,1,2,15)
                                            ;
SYVAR32.7CH="PR1041="
SYVAR.32CH="Размер стороны острова по оси X "
E350=E73
(WRT,1,2,16)
                                            ;
SYVAR32.7CH="PR1042="
SYVAR.32CH="Размер стороны острова по оси Y "
E350=E74
(WRT,1,2,17)
                                            ;
SYVAR32.7CH="PR1051="
SYVAR.32CH="Отклонение центра острова ось X "
E350=E75
(WRT,1,2,18)
                                            ;
SYVAR32.7CH="PR1052="
SYVAR.32CH="Отклонение центра острова ось Y "
E350=E76
(WRT,1,2,19)
                                            ;
SYVAR32.7CH="PR1061="
SYVAR.32CH="Отклонение длины острова  ось X "
E350=E77
(WRT,1,2,20)
                                            ;
SYVAR32.7CH="PR1062="
SYVAR.32CH="Отклонение длины острова  ось Y "
E350=E78
(WRT,1,2,21)
                                            ;
                                ;Проверка размеров для записи в файл
SYVAR32.7CH="       "
E98=0
                                            ;
(BLT,E43,E75,ERRX1)
"XLP1"
(BGT,E77,E45,ERRLP1)
"XLM1"
(BLT,E77,E46,ERRLM1)

"Y1"
(BLT,E44,E76,ERRY1)
"YWP1"
(BGT,E78,E47,ERRWP1)
"YWM1"
(BLT,E78,E48,ERRWM1)

"ENDFIL"
                                            ;
(BEQ,E98,1,NOGOOF)
SYVAR.32CH="!!!Все размеры острова в допуске"
E350=0
(WRT,1,2,23)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,28)
(CLO,1)


                                            ;
"NOGOOF"
SYVAR.32CH="!!!Размеры острова не в допуске:"
E350=0
(WRT,1,2,23)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,28)
(CLO,1)
                                            ;
"POS"
                                            ;
(BLE,E3,1,END1)
(BGE,E3,2,SQRT)
                                            ;
                                ;===
"ERRLP1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Длина стороны вдоль X > допуска "
E350=0
(BEQ,E1,0,ERRXG)
E2=1
"ERRXG"
(WRT,1,2,24)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,28)
(BNC,Y1)
                                ;===
"ERRLM1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Длина стороны вдоль X < допуска "
E350=0
(BEQ,E1,0,ERRXL)
E2=1
"ERRXL"
(WRT,1,2,24)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,28)
(BNC,Y1)
                                ;===
"ERRX1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Центр  кармана  смещен  вдоль  X"
E350=0
(BEQ,E1,0,ERRXO)
E2=1
"ERRXO"
(WRT,1,2,26)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,28)
(BNC,XLP1)
                                ;===
"ERRWP1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Длина стороны вдоль Y > допуска "
E350=0
(BEQ,E1,0,ERRYG)
E2=1
"ERRYG"
(WRT,1,2,25)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,28)
(BNC,ENDFIL)
                                ;===
"ERRWM1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Длина стороны вдоль Y < допуска "
E350=0
(BEQ,E1,0,ERRYL)
E2=1
"ERRYL"
(WRT,1,2,25)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,28)
(BNC,ENDFIL)
                                ;===
"ERRY1"
E98=1
SYVAR32.7CH="       "
SYVAR.32CH="Центр  острова  смещен  вдоль  Y"
E350=0
(BEQ,E1,0,ERRYO)
E2=1
"ERRYO"
(WRT,1,2,27)
SYVAR.32CH=SYVAR185.15CH
(WRT,1,2,28)
;(BLE,E3,1,END1)
(BNC,YWP1)
                                            ;
"SQRT"
                                            ;
(SCR,ON)
(DEF,  1, 2, 1," Цикл измерения детали          ",A16)
(DEF,  2, 2,32,"Измерение прямоугольного острова",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,E43,6)
                                            ;
(DEF, 12, 6, 3,$PS2)
(DEF, 13, 6, 16,"+/-")
(DEF, 14, 6, 5,E32,6)
(DEF, 15, 6, 20,E44,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, 55,8,3,"+dl")
(DEF, 24,9,3,"L")
(DEF, 56,10,3,"-dl")
                                            ;
E46=-E46
(DEF, 25,8,7,E45)
(DEF, 26,9,5,E41)
(DEF, 27,10,7,E46)
E46=-E46
                                            ;
(DEF, 57,8,14,"+dw")
(DEF, 28,9,14,"W")
(DEF, 58,10,14,"-dw")
                                            ;
E48=-E48
(DEF, 29,8,18,E47)
(DEF, 30,9,16,E42)
(DEF, 31,10,18,E48)
E48=-E48
                                            ;
(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)
(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,"L",A16)
(DEF, 40, 7,60,E73,6,A16)
                                            ;
(DEF, 45, 8,55,"W",A16)
(DEF, 41, 8,60,E74,6,A16)
                                            ;
(DEF, 47, 9,55,"dX",A16)
(DEF, 48, 9,60,E75,6,A16)
                                            ;
(DEF, 49, 10,55,"dY",A16)
(DEF, 50, 10,60,E76,6,A16)
                                            ;
(DEF, 51, 11,55,"dL",A16)
(DEF, 52, 11,60,E77,6,A16)
                                            ;
(DEF, 53, 12,55,"dW",A16)
(DEF, 54, 12,60,E78,6,A16)
(DEF,110,14,10,"Для продолжения нажмите ПУСК    ",A12)
                                            ;
E99=0
(BGT,E77,E45,ERRLP)
(BLT,E77,E46,ERRLM)
"Xc"
(BLT,E43,E75,ERRX)
"YL"
(BGT,E78,E47,ERRWP)
(BLT,E78,E48,ERRWM)
"Yc"
(BLT,E44,E76,ERRY)
                                            ;
(BEQ,E99,1,NOGOOD)
(DEF,109,13,10,"Все размеры острова в допуске   ",A12)
"NOGOOD"
                                            ;
#(OUT)
                                            ;
(BNC,En)
                                            ;
                                            ;
"ERRLP"
E99=1
(DEF,100,11,22,"Длина стороны вдоль X > допуска ",A12)
(DEF,105,13,10,"                                ",A12)
#(OUT)
(BEQ,E1,0,ERR7)
E2=1
"ERR7"
(BNC,Xc)
                                            ;
"ERRLM"
E99=1
(DEF,101,11,22,"Длина стороны вдоль X < допуска ",A12)
(DEF,106,13,10,"                                ",A12)
#(OUT)
(BEQ,E1,0,ERR8)
E2=1
"ERR8"
(BNC,Xc)
                                            ;
"ERRX"
E99=1
(DEF,102, 9,22,"Центр  острова  смещен  вдоль  X",A12)
(DEF,107,13,10,"                                ",A12)
#(OUT)
                                            ;
(BEQ,E1,0,ERR9)
E2=1
"ERR9"
(BNC,YL)
                                            ;
"ERRWP"
E99=1
(DEF,103,12,22,"Длина стороны вдоль Y > допуска ",A12)
(DEF,108,13,10,"                                ",A12)
#(OUT)
                                            ;
(BEQ,E1,0,ERR10)
E2=1
"ERR10"
(BNC,Yc)
                                            ;
"ERRWM"
E99=1
(DEF,104,12,22,"Длина стороны вдоль Y < допуска ",A12)
(DEF,112,13,10,"                                ",A12)
#(OUT)
                                            ;
(BEQ,E1,0,ERR11)
E2=1
"ERR11"
(BNC,Yc)
                                            ;
"ERRY"
E99=1
(DEF,113,10,22,"Центр  острова  смещен  вдоль  Y",A12)
(DEF,111,13,10,"                                ",A12)
(BEQ,E1,0,ERR12)
E2=1
"ERR12"
(BNC,En)
                                            ;
"En"
                                            ;
M0
(SCR,OFF)
                                            ;
"END1"
                                            ;
(BNE,E2,1,GOOD3)
                                            ;
                                            ;===
"HOLD"
M0
(BNE,SK(E18),1,HOLD)
(BNC,END1)
                                            ;
"GOOD3"
                                            ;
;======Сохранение результата в переменных===
                                            ;
PR1031=E71
PR1032=E72
PR1041=E73
PR1042=E74
PR1051=E75
PR1052=E76
PR1061=E77
PR1062=E78
                                            ;
(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"
       ;======Конец цикла======