Просмотр полной версии : И снова ПЛК 110-32 + энкодер
Доброго времени суток. Очень надеюсь на помощь или хотя бы свежую мысль.
Судя по поиску, эта тема уже весьма замылена, но решения своей проблемы я там так и не нашел.
Итак. Имеем связку: ПЛК 110-32, ПЧВ Дельта, мотор+редуктор (асинхронник на 1500 об/мин + понижающий редуктор 1/40), энкодер инкрементальный 360 имп/об (опять же от Дельты), который закреплен на валу редуктора через металлическую муфту.
Мотор-редуктор приводит в действие цепную передачу с "неким", жестко закрепленным на цепи, предметом.
При выполнении программы предмет опускается вниз (до датчика индуктивности "ноль"), обнуляется значение энкодера, задаются пределы движения "предмета" (верхняя и нижняя уставки, к примеру 500 и 100) и "предмет" начинает движение туда-обратно по этим уставкам.
Проблема. При 30-50 проходов туда-обратно фактический проход "предмета" осуществляется уже по значениям ~470 и 70. То есть уставки как будто "съехали" на одинаковую величину. Причем значения на входе модуля энкодера продолжают меняться в изначально заданных пределах.
Уже не знаю на что думать. Цепь натянута жестко, люфта практически нет, можно даже сказать, что совсем нет, но не буду так категоричен. В своей программе ошибки исключил, так как смотрел в первую очередь на показания, приходящие на вход модуля. Судя по заданным условиям не должно быть пропусков импульсов.
В общем-то задача состоит не в очень точном позиционировании конечного элемента, а поддержании заданных уставок с допустимой погрешностью (несколько миллиметров вполне сойдет) в течении нескольких десятков циклов прохода "туда-обратно" без повторного обнуления энкодера в процессе работы. (циклов через 60-70 обнулится уже будет можно).
Вот вроде бы и все. Заранее прошу прощения, если имеются ошибки в оформлении темы. Буду рад любым ответам.
С уважением, Александр.
lara197a
04.02.2014, 23:07
как импульсы считаете? как организована область входов?
Два быстрых входа заменены на модуль "Fast Encoder". Подсчет импульсов реализован программно через функциональный блок с обработкой прохода через 0.
Вот собственно код:
in_prev := in_now;
in_now := enc_in;
jump := enc_imp / 2;
delta := in_now - in_prev;
IF delta > 0 OR delta < 0 THEN
IF delta > -1 * jump AND delta < jump THEN
acc := acc + delta;
ELSE
IF delta > 0 THEN
acc := acc - enc_imp + delta;
ELSE
acc := acc + enc_imp + delta;
END_IF
END_IF
END_IF
IF reset THEN
acc := 0;
END_IF
enc_out := acc;
Реализовывал по примеру , выложенному на форуме.
В качестве "enc_in" служит %IW0.0
lara197a
04.02.2014, 23:34
я не понял, зачем Вам переход через 0?
поставьте к примеру не 0, а 100(или 1000)
и считайте только положительные значения, без всяких наворотов.
Вы же влазите в размер 0-65535.
если нет, то преобразуйте в Dword
программу напишите так:
C:dword;
оттуда, M:word;
C:=C + ((оттуда - M) and 65535);
M:=оттуда;
в программе работайте только с переменной С.
обнуление или присвоение какого либо др. значения этой переменной на значение в энкодере(оттуда) не влияет.
Sergey666
04.02.2014, 23:39
Что это :-"IF delta > -1 * jump AND delta < jump THEN" , зачем это ???
Код какой-то мутноватый , выкиньте лишнюю муру , вот типа это :-"jump := enc_imp / 2".
Примеры примерами но и свои мозги иметь надо .
Да, вполне себе влезаю в диапазон до 65535. Скорее всего так и буду делать. Данный пример использовал для теста работы. Но хотелось бы, перед критикой данной обработки, обратить внимание на следующий момент. Даже если уйти от всех программных подсчетов импульсов и работать сугубо с входом модуля энкодера(вводил отдельную переменную, в которую писал текущее значение энкодера при индексировании) имеем абсолютно идентичную картину. Для примера: уставки 100 и 200, значения на входе "Fast Encoder" примерно 98 и 203, "объект" физически перемещается +/- также 98-203. Проходит 30-50 циклов работы. Картина следующая: уставки 100-200 (разумеется не менялись), значения на входе "Fast Encoder" 98-203, "объект" физически катается ~65-175. Потому и задумался в первую очередь о люфте механики...
Скорее всего я что-то пропускаю, но люфт ведь, как правило, будет обоюдный. В обе стороны. А на деле постепенно смещаемся вниз, и все тут.
Sergey666
05.02.2014, 00:53
~65-175 откуда эти значения берете? Линейкой меряете ?
Обычно , когда вход энкодер пропускает имульсы , наоборот в большую сторону погрешность , а у вас все наоборот .
Что-то не то...
делал что то подобное но с использованием энкодера и счетчика СИ30.
http://www.owen.ru/forum/showthread.php?t=12261
Устранения описанной Вами проблеммы добился только уменьшением скорости механизма. Все таки ИМХО вопрос пропускания импульсов скорее всего при большой частоте.
По сути да. Ставил метки на металлической раме в концевых точках движения "объекта" (один импульс примерно равняется 1 миллиметру. 1 имп * 0.962 = 1 мм). Вот и думаю, что если даже и были бы пропуски импульсов, то опять же в обе стороны. И наблюдали бы мы своего рода рода "расширяющийся конус" в обрабатываемой зоне.
Расскажу сразу какие еще были наблюдения. 1) Пробовал плюсовать поправку к верхней уставке, которая при каждом подъеме инкрементируется. Картина интересная. Верхнее значение постепенно растет и в показаниях энкодера и в физическом плане, а вот нижнее значение оставалось абсолютно таким же ( те же 98 импульсов в нижней точке) и механизм доезжал ровно так же. И в принципе такое решение хоть и кривое, но устроило бы, если не одно "но". При изменении скорости движения механизма все летит к чертям (что было ожидаемо). 2) пробовал отказаться от рабочей программы, обрезав вообще все, что только можно и играть только с энкодером и двигателем. Механизм катался точно, но к сожалению проверял только на маленьком диапазоне (в пределах 100 импульсов). Так что сегодня опробую этот вариант, но с большим интервалом движения.
leonVL. Вот отказываюсь верить что в данном случае - слишком большая скорость движения. Даже по приблизительным расчетам, максимальная частота импульсов на вход ПЛК составляет около 200 Гц.
И еще момент, в моем случае механизм может двигаться с 5 заданными скоростями (через ПЧ), от 10 до 50 Гц. И на каждой эта ерунда имеет место быть в той или иной степени.
lara197a
05.02.2014, 10:06
пробуйте без пересчетов.
Модуль энкодера до 1000гц-1500Гц работает без пропусков.
Проверено.
У Вас частота совсем маленькая. Должно работать.
Спасибо. Попробую убрать все лишнее и отладить сугубо работу с энкодером. Вечером отпишусь о результатах.
Обнуление по индуктивному датчику может дать ощутимую погрешность. Советую использовать Z импульс.
И снова здравствуйте. Есть результаты. Причем весьма интересные. В итоге все свелось к радиальным биениям переходной муфты соединения вала редуктора и вала энкодера. Она была выточена из металла и, откровенно говоря, была кривоватой.
Заменили сие изделие на кусочек резинового шланга с нитяным армированием. Теперь работает идеально, правда с одним "но", которое пока не могу объяснить. Оборудование стоит в цехе, температура в котором примерно +5-7 град. При первом включении оборудования получается та же ошибка, которая была изначально (правда с гораздо меньшим приращением, т.е. примерно за 100 проходов туда-обратно, мы съехали вниз всего на 8 мм.), но спустя минут 5-10 работы и повторной инициализации счетчика ошибка мистическим образом исчезает и агрегат работает так как нужно на протяжении долгого периода (около 400 проходов, что полностью устраивает).
В общем-то такая ситуация. Вроде бы и проблему можно считать решенной, а вроде и осадок какой-то остался от непонимания такой картины. Всем спасибо за помощь.
Евгений_Томск
08.02.2014, 16:07
И снова здравствуйте. Есть результаты. Причем весьма интересные. В итоге все свелось к радиальным биениям переходной муфты соединения вала редуктора и вала энкодера. Она была выточена из металла и, откровенно говоря, была кривоватой.
Заменили сие изделие на кусочек резинового шланга с нитяным армированием. Теперь работает идеально, правда с одним "но", которое пока не могу объяснить. Оборудование стоит в цехе, температура в котором примерно +5-7 град. При первом включении оборудования получается та же ошибка, которая была изначально (правда с гораздо меньшим приращением, т.е. примерно за 100 проходов туда-обратно, мы съехали вниз всего на 8 мм.), но спустя минут 5-10 работы и повторной инициализации счетчика ошибка мистическим образом исчезает и агрегат работает так как нужно на протяжении долгого периода (около 400 проходов, что полностью устраивает).
В общем-то такая ситуация. Вроде бы и проблему можно считать решенной, а вроде и осадок какой-то остался от непонимания такой картины. Всем спасибо за помощь.Вам лучше конечно до конца разобраться с проблемой,а то будут потом "скребсти" сомнения. Попробую перечислить известные мне случаи,при которых может быть что-то подобное.
1.Энкодер расчитан на напряжение не 24Вольта (бывают на 5 и на 12).
2.Энкодерный выход синусоидальный,вместо прямоугольного.
3.Не соединены земли от блока питания энкодера и ПЛК.
4.Высокий уровень помех на провода,менее вероятно.
5.Какой нибудь дребезг выходов энкодера.
6.Брак энкодера (оптика),при нагрузке на ось - начинает врать.
7.Загрязнение,замасливание энкодера.
8.Не затянута клемма или провод вставлен мимо контакта.И искрит.
9.Потянут соединительный провод и есть внутренний надрыв(частичный контакт).
Можно попробовать подключить другой энкодер.Или подать сигнал энкодера на различные ПЛК
и сравнить результат.
Накидйте вкратце графическую механическую схемку узла и кусок программы обработки,марку энкодера и
электрическую схему подключения. Ребята быстрее увидят слабое место в системе,если оно есть.
Евгений, спасибо за совет. Обязательно опробую сегодня-завтра, потому что покоя так и не дает эта проблема :)
Постараюсь подготовить полезную информацию о проекте.
Алексей Дмитриев
12.02.2014, 15:42
Если считает нормально, то могут быть:
1. Банальные помехи от привода на счетные входа. (Delta этим знаменита.) Каким кабелем подключен двигатель и как кабели двигателя и энкодера проложены? Попробуйте для снижения помех понизить несущую частоту преобразователя частоты. Был случай, когда снижение с 4 до 2 кГц полностью снимало проблему.
2. Муфта на энкодере не затянута, то есть банально в какой-то момент валы редуктора и энкодера смещаются относительно друг-друга.
3. Неисправный энкодер. По нему достаточно несильно бабахнуть, чем часто слесаря грешат, и он начинает безбожно врать.
Newcomer
05.03.2016, 12:08
я не понял, зачем Вам переход через 0?
поставьте к примеру не 0, а 100(или 1000)
и считайте только положительные значения, без всяких наворотов.
Вы же влазите в размер 0-65535.
если нет, то преобразуйте в Dword
программу напишите так:
C:dword;
оттуда, M:word;
C:=C + ((оттуда - M) and 65535);
M:=оттуда;
в программе работайте только с переменной С.
обнуление или присвоение какого либо др. значения этой переменной на значение в энкодере(оттуда) не влияет.
Добрый день.
C:=C + ((оттуда - M) and 65535);
Это работает при вращении вала энкодера в направлении, когда оттуда увеличивается. Формула отлично переваривает переполнение оттуда. Если вал энкодера вращается в направлении, когда оттуда уменьшается, то это совсем не работает.
Кто и как решает этот вопрос ?
Пойдет ?
C:=C + (abs(word_to_int(оттуда - M)) mod 16#10000);
Newcomer
05.03.2016, 13:25
Пойдет ?
C:=C + (abs(word_to_int(оттуда - M)) mod 16#10000);
Работает в обе стороны. Валенок, ты голова.
Спасибо.
Вот проект эмулятора энкодера, любой может проверить.
Еще лучше проверить выражение Валенка на реальном железе.
добрый день всем!
имею задачу перемещать асинхронный двигатель и останавливать каждые 120 градусов с точностью 0.3 градуса
предполагаю использовать какой нибудь плк+ частотник(с пид- регулятором) и абсолютный энкодер.
-Подскажите- реально ли все реализовать и какой лучше взять плк +частотник и энкодер?
- как подключить и использовать абсолютный энкодер?
спасибо
g.alexsandr
11.03.2017, 22:55
Доброго всем здравия . Понадобилось поработать с энкодером ,попробовал в реальном железе работает не корректно куда-бы я не крутил энкодер значение в регистре С всегда
наростает не зависимо от направления вращения.
murdemon
11.03.2017, 23:05
Надо подключить энкодер к 1 - канал А и 2 - канал B, и в ПЛК выбрать Fast Encoder
29989
g.alexsandr
12.03.2017, 10:41
У меня так и сделано .В конфигураторе в модуле Fast Encoder назначено имя регистра E в нём значение меняется правильно а в регистре C только увеличивается.
murdemon
12.03.2017, 12:24
скинь проект. И посмотрим
g.alexsandr
12.03.2017, 17:48
Да проекта ещё толком нет я хотел начать с энкодера на нём пока всё и встало. Но у меня даже тот пример который здесь выложен работает точно также. Переменные Еи М уменьшаются а С увеличивается
проверял и в симуляторе и в железе. Правильно-ли я понял что переменная С это конечная переменная с которой я буду работать дальше а переменная Е это выход модуля Fast-Encoder ?
Здравствуйте. Сегодня столкнулся с точно такой же ерундой. В какую бы сторону ни крутил энкодер, значение регистра только увеличивается. ПЛК110-30м02, режим работы быстрых входов - Fast Encoder. Что может вызвать такое поведение у ПЛК?
Nixe
Напишите модуль энкодера самостоятельно. Я так и сделал, и ни разу не жалею.
Материалы по теме:
Ссылка 1. (http://www.owen.ru/forum/showthread.php?t=23600&p=234390&viewfull=1#post234390)
Ссылка 2. (https://hardella.com/)
g.alexsandr
31.03.2017, 13:53
Он и будет только увеличивать значение так-как операция ABS убирает знак минус при обратном вращении ,а операция MOD я даже не знаю зачем она здесь.
Я выкинул эти две операции и всё стало работать единственный нюанс это уменьшился диапазон в два раза из-за преобразования из WORD в INT но мне этого более чем достаточно.
Филоненко Владислав
31.03.2017, 16:32
лампочки при вращении мигают?
Спасибо за советы, в проблеме разобрались. Дело было в бракованном энкодере. При вращении лампочки мигали одновременно, т.е. сигналы А и В не были смещены относительно друг друга. Энкодер заменили, обработку его сингалов написали сами. Все прекрасно работает.
Александр8159
29.05.2018, 21:11
Здравствуйте, возможно, похожая проблема, как у Nixe, при вращении лампочки мигают хаотично, то вместе, то еще как, как то судорожно. Подсчет импульсов идет только в плюс, причем прокатываю метровую линейку под энкодером, она с каждым последующим измерением показывает меньшую длину, каждый раз сбрасываю. Т.Е.измерения выглядят примерно так: 125 см, 100, 88 ,82, 80. Энкодер E40S6-1000-3-T-24, колесо садится металлическое обрезиненное (самодельное)диаметром см 10. Контроллер ПЛК-110-32, выставлен fast encoder. Где начать копать?
Мастеренко Иван
30.05.2018, 14:30
Здравствуйте! Похоже энкодер неисправен, попробуйте заменить его.
Александр8159
05.06.2018, 11:47
Возможно. Не посоветуете, какой лучше брать ?. И ещё, для понимания процесса. Я выставляю fast encoder, в параметрах модуля указываю количество импульсов на оборот, debounce factor из какого расчета принимается? Программу писал, как начинающий, в CFC, там тоже пара вопросов есть, сюда задать можно ?
Александр8159
В фаст-энкодере от Овенов нет сброса показаний. В ПЛК110-32 только два быстрых входа, т.е. Z энкодера (нулевая метка) придется реализовывать как-то по другому. В ПЛК110-60 уже четыре быстрых входа, и там уже можно использовать модуль ABZ-энкодера. А вообще по поводу быстрых входов на ПЛК110[M2] - читайте про Hardella IDE. Это очень мощный инструмент для воплощения своих хотелок на быстрых входах именно для этих ПЛК.
По поводу качества этих энкодеров - за их цену грех жаловаться. Для проверки исправности можно поменять местами фазы А и В - энкодер должен считать в другую сторону. Либо подцепить его к Овен СИ-30, если такой прибор имеется.
krmts.ru
17.10.2018, 13:41
Доброго всем здравия . Понадобилось поработать с энкодером ,попробовал в реальном железе работает не корректно куда-бы я не крутил энкодер значение в регистре С всегда
наростает не зависимо от направления вращения.
Наступали на эти грабли. Причина была в некорректном подключении, клемма S/S контроллера не была соединена с нужной клеммой питания... (РЭ, стр. 63)
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot