;ЦИКЛ: СC1=
;==========
SYVAR185.15CH=" Версия    1.02"
;
;Особенности ЦИКЛА.
                                            ;
;Датчик касания (ДК) в шпинделе.
                                            ;
;Номер канала измерения в цикле не определяется:
;по умолчанию канал №0: BPI=0 активирует ДК, конфигурированный в TAS или TAS0 (*5 PGCFIL)
;                       BPI=1 активирует ДК, конфигурированный в TAS1 (*5 PGCFIL)
                                            ;
;В файле PGCFIL в секции *2 для процесса записать 2 инструкции:
;  SIM=E,,1000,,,         - количество E не более 65565
;  SIM=NEW,PR,2000,6,62,3 - новыя переменная (исключительно для параметрирования циклов)
; Сокращение
; SB - стандартный блок
                                            ;
;PR1020-результат измерения
        ;по оси измерения 
;PR1021-результат измерения
        ;по 2-ой оси(не используется в цикле)
;PR1022-результат измерения
        ;по 3-ой оси(не используется в цикле)
;PR1023-координата начала
        ;измерения по 1-ой оси
;PR1024-координата начала
        ;измерения по 2-ой оси
;PR1025-координата начала
        ;измерения по 3-ей оси
;======
;внешние переменные
;PR1200-максимальная длина перемещения ДК
;PR1226-скорость грубого измерения
;PR1227-скорость точного измерения
                                            ;
;=======================Текст цикла:========================================
                                            ;запрос выхода из цикла после
                                            ;анализа ошибки экране ASSET
E5=0
                                            ;
;= Проверка: переменные 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"
                                            ;
                 ;=====Входные данные=======
         ;присвоение переменной $PS10 имени
         ;оси измерения 
$PS10=$PS1
         ;угол движения ДК при измерении
         ;($PS2="a")
E134=PL2
         ;координата начала измерения X
E137=PL3
         ;координата начала измерения Y
E138=PL4
         ;координата начала измерения Z
E139=PL5
                                ;
;== определение осей на плоскости обработки ==SB
                 ;имя оси абсцисс
$PS1=$INAX1
                 ;имя оси ординат
$PS2=$INAX2
                 ;имя оси шпинделя
$PS3=$INAX3
                                            ;
                                            ;===============================
                                            ;СОХРАНЕНИЕ ПАРАМЕТРОВ, ЗАДАННЫХ
                                            ;В ИНСТРУКЦИИ DPM (DPM0).
                                            ;===============================
                                            ;DPMA-дистанция установки
                                            ;     рабочей скорости измерения
                                            ;Дистанция откладывается от
                                            ;предполагаемой точки касания DK
                                            ;с поверхностью в направлении к
                                            ;начальной точке цикла.
E199=DPMA
                                            ;DPMS-дистанция безопасности DK.
                                            ;Откладывается от предполагаемой
                                            ;точки касания щупа с
                                            ;поверхностью в направлении
                                            ;измерения. 
E200=DPMS
                                            ;DPMF-рабочая скорость измерения
                                            ;Действует на отрезке DPMA+DPMS
E25=DPMF
                                            ;===============================
                                            ;локальная скорость измерения
                                            ;===============================
                                            ;скорость грубого измерения
E26=DPMF
(BEQ,PR1226,0,F1)
E26=PR1226
"F1"
                                            ;скорость точного измерения
E27=DPMF
(BEQ,PR1227,0,F)
E27=PR1227
"F"
                                            ;===============================
                                            ;определение параметров в цикле
                                            ;G72 для грубого измерения
                                            ;
                                            ;длина измерения PR1200
E135=PR1200
                                            ;дистанция установки рабочей
                                            ;скорости измерения.
E136=ABS(E135)
                                            ;дистанция отхода от точки
                                            ;касания после грубого измерения
E141=5
                                            ;активация локальной схемы
                                            ;движения ДК в цикле грубого
                                            ;измерения
(DPT,E136,E200,E26)
                                            ;
                                            ;инициализация переменной для
                                            ;записи результата измерения
E131=0
E132=0
                                            ;
(BEQ,PR1230,1,IZPLC2)
;защиту включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC2"
                                            ;
                 ;перемещение в точку
                 ;начала измерения
G0 G90 $PS1 E137 $PS2 E138 $PS3 E139
                 ;читать координаты точки
                 ;начала измерения
(GTA,$PS1,1,E151)
(GTA,$PS2,1,E152)
(GTA,$PS3,1,E153)
                 ;запомнить начальные
                 ;координаты измерения
PR1023=E151
PR1024=E152
PR1025=E153
                                            ;
(BEQ,PR1230,1,IZPLC3)
                 ;защиту ДК выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC3"
                                            ;
(BEQ,$PS10,$PS1,XXX)
(BEQ,$PS10,$PS2,YYY)
(BEQ,$PS10,$PS3,ERR6)
                                            ;
                                            ;
                                            ;ОШИБКА
(BNC,ERR5)
                                            ;
                                            ;
                                            ;
"XXX"
                 ;==========================
                 ;ось измерения X
                 ;==========================
                                            ;грубое измерение G90 с отходом
                                            ;от измеренной точки на величину
                                            ;RE14

E143=E135*COS(E134)
E144=E135*SIN(E134)
G90 G72 $PS1 E143 $PS2 E144 RE141 E131
                                            ;точное измерение G90
                                            ;активация локальной схемы
                                            ;движения ДК в цикле точного
                                            ;измерения
(DPT,E136,E200,E27)
                                            ;
;E143=(E135-E141)*COS(E134)
;E144=(E135-E141)*SIN(E134)
G90 G72 $PS1 E143 $PS2 E144 E131
                                            ;переход на обработку измерения                                ;
(BNC,ENDG72)
                                            ;
                                            ;
                                            ;
"YYY"
                 ;==========================
                 ;ось измерения Y
                 ;==========================
                                            ;грубое измерение G90 с отходом
                                            ;от измеренной точки на величину
                                            ;RE141

E143=E135*SIN(360-E134)
E144=E135*COS(360-E134)
G90 G72 $PS1 E143 $PS2 E144 RE141 E131
                                            ;
                                            ;точное измерение G90
                                            ;активация локальной схемы
                                            ;движения ДК в цикле точного
                                            ;измерения
(DPT,E136,E200,E27)
                                            ;
G90 G72 $PS1 E143 $PS2 E144 E131
                                            ;переход на обработку измерения
(BNC,ENDG72)
                                            ;
                                            ;
                                            ;
"ZZZ"
                 ;==========================
                 ;ось измерения Z
                 ;==========================
                 ;решение не существует
                 ;==========================
                                            ;
                                            ;
                                            ;
"ENDG72"
                                            ;
(BEQ,PR1230,1,IZPLC4)
                 ;защиту ДК включить
SN(E16).BL=1
(DLY,0.2)
"IZPLC4"
                                            ;
                                            ;
                 ;конечные координаты цикла
G0 G90 $PS1 E137 $PS2 E138 $PS3 E139
                                            ;
(BEQ,PR1230,1,IZPLC5)
                 ;защиту выключить
SN(E16).BL=0
(DLY,0.2)
"IZPLC5"
                                            ;
                                            ;активация схемы движения ДК,
                                            ;заданной в DPM
(DPT,E199,E200,E25)
                                            ;
                                            ;==Сохранение результата
                                            ;  в переменных         ===
PR1020=E131
PR1021=E132
(DIS,$PS1,PR1020," ",$PS2,PR1021)
                                            ;
                                            ;
                                            ;
(BNC,END)
                                            ;
                 ;=====обработка ошибок=====
"ERR1"
                                            ;
(SCR,ON)
(DEF, 1, 1,20,"ВНИМАНИЕ! Ошибка конфигурации ос")
(DEF, 2, 1,52,"ей")
(DEF, 5, 3, 5,"Абсцисса, ордината и ось шпиндел")
(DEF,10, 3,37,"я должны иметь разные имена.")
(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, 5, 3, 5,"Имя оси измерения не является ос")
(DEF, 6, 3,37,"ью абсцисс, ординат или осью шпи")
(DEF,10, 3,69,"нделя.")
(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,"Ось Z не может быть определена о")
(DEF, 6, 3,37,"сью измерения")
(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"

