Просмотр полной версии : Прошу помощи ПР103 работа с энкодером
Анатолий Varianty
12.05.2025, 10:46
Доброго времени суток.
Прошу помощи
Делал проект с индуктивным датчиком который в процессе пришлось заменить на энкодер из-за набегающего смешения отрыва.
Проблема в том что делал только простенькие проекты и с энкодером ранее я не связывался и из-за отсутствия должной квалификации и знаний не могу понять как реализовать программу.
Суть логики такая при нажатии кнопки старт начинается движение вала на котором закреплен энкодер при первом нажатии кнопки отрыв происходит обнумение уставки при втором нажатии кнопки отрыв записывается уставка и станок начинает работу в цикле при нажатии кнопки стоп все сбрасывается.
Анатолий Varianty
В ПР не предусмотрена работа с энкодерами. Да, можно программно нарисовать, но это будет нестабильно, т. к. будет зависеть от программного цикла, и быстродействие будет на уровне 40-50 им\сек. Вы не указали частоту вращения и разрешение энкодера.
---
Кстати, непонятен смысл преобразования дискретных сигналов в булевый тип (блоки X>>B). Дискретные сигналы по определению булевы.
kondor3000
12.05.2025, 14:05
Анатолий Varianty
В ПР не предусмотрена работа с энкодерами. Да, можно программно нарисовать, но это будет нестабильно, т. к. будет зависеть от программного цикла, и быстродействие будет на уровне 40-50 им\сек. Вы не указали частоту вращения и разрешение энкодера.
---
Кстати, непонятен смысл преобразования дискретных сигналов в булевый тип (блоки X>>B). Дискретные сигналы по определению булевы.
Зачем писать фигню то? ПР103 поддерживает 4 быстрых входа, и Энкодеры и подсчёт импульсов, в том числе
Анатолий Varianty
12.05.2025, 14:21
Энкодер 2000 на оборот.
В ПР103 быстрые входы настраиваются на работу с энкодером.
Подщет импульсов ведется но не понимаю как это в цикл собрать, как заставить таймер СТ3 считать импульсы энкодера.
83721
Я всё понимаю, а вот ответить не могу. А если отвечу, то сам не пойму, что скажу!
Версия №1. Надо зафиксировать число шагов энкодера между двумя нажатиями на кнопку "Отрыв"?
Версия №2. Надо счетчик переделать в таймер? Или таймер в счетчик импульсов?
Версия №3. Надо сформировать на выходе сигнал длительностью задаваемой энкодером?
Версия №4. Надо разгадать алгоритм "Макрос31"?
Анатолий Varianty
12.05.2025, 14:51
Зафиксировать на счетчик как уставку и дальше этот же счетчик должен считать шаги экодера.83723
В итоге счетчик будет выдавать разницу между первым нажатием и текущим значением экодера?
83724
kondor3000
12.05.2025, 15:26
Не надо ничего запоминать в счётчик и обнулять не обязательно, запомнить надо при пуске и остановке и посчитать разницу. 83726
Пример энкодера ЛИР (1024 импульса на оборот) подсчёт оборотов каждую сек. и минуту
с эмулятором энкодера.
Анатолий Varianty
12.05.2025, 16:05
Спасибо.
Я видимо не могу правильно изложить.
Суть такая это цикл отрыва листа на ламинаторе они идут в притык друг за другом , скорость машины оператор может менять в ходе работы не однократно в ту или иную сторону она задается переменным резистором на ЧП по этому и нужна фиксированная длинна по шагам энкодера.
kondor3000
Зачем писать фигню то?
Согласен. Я как-то упустил момент, когда Овены включили поддержку энкодеров в ПРки.
Анатолий Varianty
как заставить таймер СТ3 считать импульсы энкодера.
А зачем? Импульсы уже подсчитаны в FDI1
Можно не заморачиваться с одной кнопкой, и поставить вторую. Первой будет выполняться сброс счетного регистра энкодера, второй - фиксация задания, например в переменную Задание. Далее делаем сброс энекодера, включаем транспорт, и сравниваем показания энкодера с переменной Задание. По достижению равенства включаем исполнительный механизм отрыва, одновременно сбрасываем энкодер. Далее в цикле.
Сбрасывать энкодер нужно обязательно, ибо его регистр хоть и 32-битный, но при непрерывной работе когда-нибудь он переполнится.
А вот если в момент физического выполнения операции отрыва требуется остановка транспорта листа, то задача усложняется в разы, ибо надо учитывать время торможения транспорта.
kondor3000
12.05.2025, 18:39
Спасибо.
Я видимо не могу правильно изложить.
Суть такая это цикл отрыва листа на ламинаторе они идут в притык друг за другом , скорость машины оператор может менять в ходе работы не однократно в ту или иную сторону она задается переменным резистором на ЧП по этому и нужна фиксированная длинна по шагам энкодера.
Можете запомнить начальную и прибавить фиксированную величину, как досчитало, включаете отрыв 83734
Посмотрите пример, как сделано там, каждый цикл, конечное становится начальным и считается по новой.
Примерно так
Т.е. формировать короткий импульс каждый раз когда энкодер отсчитает заданное количество шагов?
83736
Сергей0308
12.05.2025, 21:22
Т.е. формировать короткий импульс каждый раз когда энкодер отсчитает заданное количество шагов?
83736
В программе результаты будут обновляться каждый цикл программы, а энкодер может "считать" гораздо быстрее!
Да. Вы правы! Из-за того что программа может считать текущее значение энкодера, когда он уже проскочил позицию отрыва, то следующая метка должна отсчитываться от предыдущей метки, а не от текущей позиции энкодера.
83737
Но и здесь есть подводный камень. Если произойдет переполнение метки и её значение будет очень маленьким?
Например, равным 0. Тогда чтобы сформировался фронт на входе RTRIG1 программа должна зафиксировать его значение строго на 0.
И если при чтении энкодера программа, при каждом его переполнении, будет его проскакивать, то формирование импульсов прекратится.
Надо ловить переполнение метки, а также ловить переполнение энкодера и сравнивать их, только когда оба прошли переполнение.
83738
Спасибо за подсказки.
83739
Анатолий Varianty
24.05.2025, 08:58
Спасибо Всем за помощь!
Проект закончил все заработало добавил еще СП307 для внесения размера листа и общей работы ламинатора.
kondor3000
24.05.2025, 09:24
Из-за надписей, у вас уехали за рамки размеры поля программы.
А так же сравнение происходит на больше, а надо на больше или равно. Будет уходить размер листа.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot