Доброго времени суток. Давно задавался таким же вопросом, чтобы вынести удаленные кнопки СТОП и ПУСК отдельно от планшета для операторов, чтобы лишний раз пульт не трогали своими грязными рученками. Да и хотелось бы сделать, когда на стaнке нажималась кнопка аварийного останова, на робота как раз приходил сигнал и он останавливался тоже, мало ли "товарищ" забудет его остановить.
Написал простенькую программу для тестирования.
Код:
|
DEF test_halt()
INTERRUPT DECL 1 WHEN $ IN[204]==TRUE DO TEST_HALT_IN()
INTERRUPT DECL 2 WHEN $ IN[205]==TRUE DO TEST_CONT_IN()
INI
INTERRUPT ON
PTP HOME Vel=100% DEFAULT
LOOP
PTP P1 Vel=100% PDAT1 Tool[3]:kemppi Base[0]
PTP P2 Vel=100% PDAT2 Tool[3]:kemppi Base[0]
PTP P3 Vel=100% PDAT3 Tool[3]:kemppi Base[0]
PTP P4 Vel=100% PDAT4 Tool[3]:kemppi Base[0]
ENDLOOP
PTP HOME Vel=100% DEFAULT
END |
Собственно в теории как только по входам 204 или 205 приходит сигнал, то срабатывает функция TEST_HALT_IN() или TEST_CONT_IN(), в которых выполняется команда HALT или CONTINUE. Но на деле не всё так, как хотелось бы.
HALT отрабатывается после появления сигнала, но только тогда когда выполнится весь цикл LOOP до своей перезагрузки. А вот после подачи сигнала на 205 вход никаких действий не происходит, потому что по сути выполнение остановилось внутри функции TEST_HALT_IN() и дальше не куда не прыгает.
Натолкните на мысль как лучше поступить чтобы эти прерывания остановки и запуска программно замутить. Смотрел ман выше, который скинули, не до конца понял что там куда.