Просмотр полной версии : Модуль энкодера ПЛК110 смещение нуля
Добрый день.
Есть проект для ПЛК110.
Объект такой - самодельный станок загибает арматуру. Оборудование - приспособление для закладки заготовок, редуктор, двигатель с электромагнитным тормозом, преобразователь частоты, ПЛК, энкодер 1000 имп./об на валу редуктора, педаль с НО контактом, автомат защиты+контактор+кнопки ВКЛ, ОТКЛ.
Цикл такой: нажимаем педаль - тормоз отпускается - приспособа с заготовкой поворачивается на заданный угол - двигатель останавливается и становится на тормоз на заданное время - тормоз отпускается - приспособа с согнутой заготовкой возвращается в исходное положение. Сейчас частота вращения энкодера не более 25 угл.град. в секунду.
Вопрос в том, что исходное положение физически смещается. Проверили показания модуля энкодера. Модуль энкодера выдает одинаковое значение в физически смещенном положении.
Кто с похожим случаем сталкивался?
lara197a
31.01.2018, 12:01
Сделайте возврат в нулевую точку.
К примеру обнуление в момент начала движения или остановки по концевику или датчику.
Записать значение в модуль энкодера можно по указателю.
На установку датчика/концевика пока никто не соглашается.
С записью значения в модуль энкодера по указателю не знаком. Где почитать?
Дмитрий Артюховский
31.01.2018, 12:24
при старт-стопных режимах большинство неприятностей создает дребезг (дрожжание вала) при остановке - разгоне. Пишите свой алгоритм с защитой от этого явления, ну или да, коррекция по физической метке.
По мере износа тормоза и в зависимости от заготовки настройки алгоритма защиты от дребезга прийдется постоянно менять.
Попробую фильтр в готовом модуле энкодера.
Владимир Ситников
31.01.2018, 12:45
Вопрос в том, что исходное положение физически смещается. Проверили показания модуля энкодера. Модуль энкодера выдает одинаковое значение в физически смещенном положении.
Кто с похожим случаем сталкивался?
У вас фильтрация точно в 0 выставлена? (time of filtration на fastencoder'е)
Насколько я понял, у вас двигатель движется туда-сюда, и при каждом таком действии финальное положение оси оказывается разным, хотя по энкодеру показание одно и то же. Верно?
Тогда "записывать 0 в энкодер" вам не поможет, т.к. проблема не в том, чтобы "начать отсчёт с нуля", а в том, что импульсы теряются.
Тут 2 классических ошибки:
1) Пропуск импульсов из-за слишком большого времени фильтрации. У вас 25 угл град/сек == 25/360*1000 == 65 имп/сек. Казалось, бы мелочи, но кто знает
2) Неправильная обработка показаний энкодера в прикладном коде. Результатом работы энкодера является WORD, и как только инженеры осознают, что этот WORD может "переполняться", они зачастую такого понапишут, что сами себе портят показания энкодера. Покажете код как обрабатываете показания энкодера?
3) Ходят слухи, что модуль энкодера впринципе нерабочий. Ну или, как говорит Дмитрий, "лучше написать свой, про который хотя бы понятно как он работает".
Фильтрация выставлена в 0.
"Насколько я понял, у вас двигатель движется туда-сюда, и при каждом таком действии финальное положение оси оказывается разным, хотя по энкодеру показание одно и то же. Верно?"
Да, верно. Обнуление интересует на тот случай, когда согласятся с датчиком.
Пользовательский алгоритм здесь не применял. Есть интересный, взятый из широко распространенного примера с прерыванием. Не хочу связываться с прерыванием, а без прерывания не вижу преимуществ.
Как раз фильтрацию в готовом модуле хочу попробовать. Частота импульсов не высокая. Может получиться.
lara197a
31.01.2018, 14:20
На установку датчика/концевика пока никто не соглашается.
С записью значения в модуль энкодера по указателю не знаком. Где почитать?
примерно как-то так:
pt:=ADR(z);
pt^:=SEL(xm,pt^,0);
почитать в справке КДС.
Кстати до 5кГц проблем с пропуском быть не должно.
Проверено.
(З.Ы,Я бы сделал такое простое решение на ПЧ со встроенным контроллером. К примеру веспер е2-8300, без внешнего ПЛК)
enyuzer
В вашем случае можно вообще обойтись без энкодера, но потребуются два датчика.
Один на исходное положение (т. н. "машинный ноль"), другой будет смотреть в "ушастую" бобышку, которую необходимо разместить на валу двигателя.
Алгоритм такой -
1. машинка в исходном, датчик исходного активен
2. По команде "пуск" сбрасываем счетчик, считаем импульсы со второго датчика.
3. По достижении нужного значения выключаем двигатель, активируем тормоз на заданное время, реверсируем двигатель до датчика исходного положения, стоп.
Чем выше коэффициент редукции, тем точнее измерения.
lara197a
Если я правильно понял насчет доступа к модулю энкодера, требуется порыться в материалах по CoDeSys. Спасибо.
Насчет 5 кГц могу согласиться для движений без вибраций, пиковых ускорений и т.д. В режимах перекладки с электромагнитным тормозом с частотой не все однозначно. К сожалению, записать осциллограмму пока не могу. Ее можно обсудить однозначно и то, если нет возражений к модели осциллографа.
Насчет конфигурации оборудования согласен с тем, что решений этой задаче есть немало. В том числе и ПЧ со встроенным контроллером.
Sulfur
Спасибо за комментарий.
От одного из других проектов остался энкодер 100 имп./оборот. Посмотрели смещение с ним. Настройками скорости, разгонов, торможений удается останавливаться без смещений. Получается, иных причин, кроме дискретности сигнала нет, если их сам не "добавишь".
Все решилось. Ставим датчик начального положения. Для подсчета импульсов энкодера используем готовый счетчик из примеров программ полезности. Только счетчик не вызываем по таймеру прерываний. Частота следования импульсов позволяют ему работать в циклической задаче.
Еще раз спасибо всем за комментарии и рекомендации.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot