PDA

Просмотр полной версии : Энкодер и пр200



farikpwnz
02.12.2019, 14:15
Народ приветствую, помогите реализовать проект.
У меня есть пр-200 и энкодер инкрементальный ,мне нужно например что бы режущий нож на 100 ИМП по команде уехал вперёд ,и так же по команде вернулся на ноль
Заранее спасибо!!!

Василий Кашуба
02.12.2019, 15:20
Народ приветствую, помогите реализовать проект.
У меня есть пр-200 и энкодер инкрементальный ,мне нужно например что бы режущий нож на 100 ИМП по команде уехал вперёд ,и так же по команде вернулся на ноль
Заранее спасибо!!!
Попробуйте такую схему. 45913

farikpwnz
03.12.2019, 10:15
Попробуйте такую схему. 45913

движение к нулю считает а вот от нуля только один импульс и стоит и ничего не происходит
заранее спасибо!45925

dan75
03.12.2019, 11:03
Так правильно. На блоках GT не 0/1 должны быть, а количество импульсов, на которое надобно переместить исполнительный механизм. Я вообще сначала понял, что энкодер стоит не на ноже, а на каком-то конвейере, на котором нужно нарезать некий материал с шагом в 100 импульсов.

farikpwnz
03.12.2019, 11:59
Чуть непонятно, это как реализовать?
Спасибо

dan75
03.12.2019, 12:59
Что нужно-то? Чтобы на каждом сотом импульсе энкодера нож делал "туда-сюда", или ещё что?

Василий Кашуба
03.12.2019, 14:51
Чуть непонятно, это как реализовать?
Спасибо
Вот так надо.45938 Будет считать пока до сотни не дойдёт.

Василий Кашуба
03.12.2019, 14:54
Потом зададите 0 и будет отсчёт от 100 до 0.

farikpwnz
03.12.2019, 16:13
Потом зададите 0 и будет отсчёт от 100 до 0.

с этим понятно что если задаем 100 то будет вперед,если задаем 0 то будет назад.
а как осуществить просто дискретно?сигнал на 100 и сигнал на 0
Заранее спасибо!

Василий Кашуба
03.12.2019, 17:36
с этим понятно что если задаем 100 то будет вперед,если задаем 0 то будет назад.
а как осуществить просто дискретно?сигнал на 100 и сигнал на 0
Заранее спасибо!
Совершенно верно. Я ещё в первом своём сообщении сказал, что нужно задавать координату перемещения.

farikpwnz
03.12.2019, 22:14
Всем Спасибо большое за подсказку,все получилось !!!

dekart
04.12.2019, 08:45
Извините пожалуйста что не совсем в тему , вижу что темка живая , возникла не необходимость считать перемещения вала по шагу резьбы с помощью индуктивных датчиков , вал не крутиться а двигается вертикально верх в низ , как же мне построить схему на пр 200 что бы он считал перемещения вала верх в низ с помощью индуктивных датчиков , хотелось бы что бы они были оба активных . Конечно нет проблемы сделать так что бы при движение вала верх был отключён один из датчиков а при движение в низ другой датчик . Но хотелось бы что бы оба датчика были активный нечего в голову не приходит . Может у кого есть мысли ?
45975

bayk
04.12.2019, 09:42
Блин! столько писал с телефона, а оно не сохранилось.... идея в следующем. посмотрите стандартную реализацию обработки энкодера с выходами A/B и посмотрите как эти два сигнала преобразуются в счет/направление. потом загоните этот счет на счетчик, выбирая сигналом "направление счета" вход U или D. поставить датчики так, чтобы конструктивно они повторяли энкодер (один датчик должен стоять на зубу, в то время как второй - между).Вот тут (http://mypractic.ru/urok-55-rabota-s-inkrementalnym-enkoderom-v-arduino-biblioteka-encod_er-h.html) в центре текста описано вполне понятно, вас только принцип интересует. код вам ни к чему.

farikpwnz
05.12.2019, 01:30
Народ подскажите пожалуйста толкните на путь истеный, есть ещё вопрос,есть ли три входа дискретных, мне нужно переменные задание например 100 ИМП, 200 ИМП, 300 ИМП что бы она передала на одну переменную каторую я выбрал, подобие рецепта.
Заранее спасибо!

Сергей0308
05.12.2019, 01:51
Народ подскажите пожалуйста толкните на путь истеный, есть ещё вопрос,есть ли три входа дискретных, мне нужно переменные задание например 100 ИМП, 200 ИМП, 300 ИМП что бы она передала на одну переменную каторую я выбрал, подобие рецепта.
Заранее спасибо!

Наверно, как-то так:

45987

45988

farikpwnz
05.12.2019, 08:20
Наверно, как-то так:

45987

45988

Спасибо большое!

dekart
05.12.2019, 09:37
а если винт остановиться не симметрично что оба датчика начнут передавать сигнал , если бы вал останавливался симметрично сохранял бы начальную установку датчика то было бы здорово но он может остановиться на промежуточном положении . Или что то я не догоняю , подскажите пожалуйста
45992

dan75
05.12.2019, 10:31
dekart, да и хорошо, что в промежуточном. Насколь понимаю, ежели установить один датчик точно по зубу, а второй -- точно между зубьями, то направление определить будет невозможно, ибо датчики всегда будут в противофазе. Знать бы ещё, что у датчика на выходе: аналоговый сигнал или какой-то пороговый сигнал.

dan75
05.12.2019, 10:48
Наверно, как-то так:

45987

45988

Смотрю на схему Василия из поста #7 и думаю, что на входе 1го SEL должно быть не задание, а 0.

dekart
05.12.2019, 10:51
dan75 , дискретный сигнал, по зубу

dan75
05.12.2019, 11:47
У энкодера на обоих выходах меандр, сдвиг составляет 1/4 периода, что видно из ссылки bayk. Как этого добиться двумя датчиками, тоже не догоняю.Вопрос ещё в том, насколько точно мы можем позиционировать датчик относительно резьбы.

dekart
05.12.2019, 15:08
точность на глаз не известно с какими параметрами придёт резьба . Я кое к чему пришёл , образно говоря при движение верх датчик номер 1 будет выдавать комбинацию 1.0.1 как датчик номер 2 в этот момент будет выдавать 0.1.0 , а при движение в низ датчик номер 2 будет выдавать 1.0.1 а датчик номер 1- 0.1.0 сейчас попробую это в программке реализовать что бы логическая функция это распознавала как движение верх или вниз ,но про промежуточное положения когда оба датчика будут выдавать сигнал 0 или сигнал 1 надо подумать ну выход должен быть с потерей точности измерения перемещения

dan75
05.12.2019, 15:20
точность на глаз не известно с какими параметрами придёт резьба .
Боюсь, в этом случае направление вообще никак не определить.

dekart
05.12.2019, 15:28
думаю должно работать индуктивный датчик номер один поставить на расстоянии 2мм от зуба в этом сучили точность будет гарантирована что датчик установят на расстоянии 2мм от зуба

Василий Кашуба
06.12.2019, 01:01
Смотрю на схему Василия из поста #7 и думаю, что на входе 1го SEL должно быть не задание, а 0.
Добавьте ещё один SEL с константой 0.

Сергей0308
06.12.2019, 02:04
Если просто по команде нужно проехаться ножом туда-сюда, без контроля времени перемещения(возможной неисправности), вроде как первоначально затевалось, то можно как-то так:

46007

46008

Или так, попроще:

46009

farikpwnz
10.12.2019, 17:50
Приветствую, есть ещё вопрос как контролируют энкодер, если он повернулся или вообще сломался у меня стоит два концевые выключатель, но большая инерционная может выломать что нить . Как осуществить контроль энкодера в проекте.
Заранее спасибо!!!

Василий Кашуба
10.12.2019, 19:17
Приветствую, есть ещё вопрос как контролируют энкодер, если он повернулся или вообще сломался у меня стоит два концевые выключатель, но большая инерционная может выломать что нить . Как осуществить контроль энкодера в проекте.
Заранее спасибо!!!
Если управляемый орган перемещается то исправен, если стоит, когда есть задание двигаться , то неисправен.
Такая должна стоять защита в программе.

farikpwnz
10.12.2019, 21:44
Если управляемый орган перемещается то исправен, если стоит, когда есть задание двигаться , то неисправен.
Такая должна стоять защита в программе.

Ну вот смотрите дали задание приводу на 200 imp,включился привод. А если энкодер не считает соответственно он будет работать,до 200 imp которых нет. Как можно это осуществить защиту и контроль энкодера.
Заранее спасибо!

Василий Кашуба
11.12.2019, 00:06
Ну вот смотрите дали задание приводу на 200 imp,включился привод. А если энкодер не считает соответственно он будет работать,до 200 imp которых нет. Как можно это осуществить защиту и контроль энкодера.
Заранее спасибо!
Если питание на привод подали, а импульсов от энкодера нет, СТОП, АВАРИЯ!

farikpwnz
11.12.2019, 07:36
Если просто по команде нужно проехаться ножом туда-сюда, без контроля времени перемещения(возможной неисправности), вроде как первоначально затевалось, то можно как-то так:

46007

46008

Или так, попроще:

46009

Таймер когда закончился, на выходе логический 0,и константа переходит на 0, вот как осуществить таймер ожидание импульса т.е если на вход 1 не пришла, то выход пропал.
Спасибо! Что то не могу сообразить.

Сергей0308
11.12.2019, 08:53
Таймер когда закончился, на выходе логический 0,и константа переходит на 0, вот как осуществить таймер ожидание импульса т.е если на вход 1 не пришла, то выход пропал.
Спасибо! Что то не могу сообразить.

Не очень понятно, что Вы хотите, я так подозреваю сигнал аварии хотите сформировать?
Тогда можно так сделать: объединяете два дискретных выхода(ход вперед-назад) по "или" и если сигнал длится более максимального времени хода(ставите ТОN), то срабатывает триггер аварии(ставите RS-триггер) блокирую дальнейшую работу!

farikpwnz
11.12.2019, 09:54
Не очень понятно, что Вы хотите, я так подозреваю сигнал аварии хотите сформировать?
Тогда можно так сделать: объединяете два дискретных выхода(ход вперед-назад) по "или" и если сигнал длится более максимального времени хода(ставите ТОN), то срабатывает триггер аварии(ставите RS-триггер) блокирую дальнейшую работу!
Немного по другому, т.е подаётся импульс на вход, идёт отсчёт времени, на выход Q у нас 1,если за период времени на вход импульс не подался то на Q у нас становится 0, а если подался импульс то отсчёт начался сначала.
Не могу сообразить как это реализовать. Спасибо

dan75
11.12.2019, 10:08
Не очень понятно, что Вы хотите, я так подозреваю сигнал аварии хотите сформировать?
Тогда можно так сделать: объединяете два дискретных выхода(ход вперед-назад) по "или" и если сигнал длится более максимального времени хода(ставите ТОN), то срабатывает триггер аварии(ставите RS-триггер) блокирую дальнейшую работу!

Да тут не с максимальным временем хода сравнивать надобно. Когда сигнал на любом из выходов есть, а энкодер не шевелится -- это уже авария. Понятно, что TON там всё равно нужен, чтобы учесть, ткак сказать, время люфта.

Сергей0308
11.12.2019, 10:27
Да тут не с максимальным временем хода сравнивать надобно. Когда сигнал на любом из выходов есть, а энкодер не шевелится -- это уже авария. Понятно, что TON там всё равно нужен, чтобы учесть, ткак сказать, время люфта.

Тогда подайте на TON импульсы с энкодера, а уставку максимальное время между импульсами, это принципиально логику не меняет!
И защита двигателя так и так должна присутствовать, так что секундой раньше или позже сработает авария, особой разницы не будет!

Примерно как-то так:

46118

И, случаи бывают разные, можно и так:

46119

46120

farikpwnz
11.12.2019, 12:35
Тогда подайте на TON импульсы с энкодера, а уставку максимальное время между импульсами, это принципиально логику не меняет!
И защита двигателя так и так должна присутствовать, так что секундой раньше или позже сработает авария, особой разницы не будет!

Примерно как-то так:

46118

И, случаи бывают разные, можно и так:

46119

46120

Переменная "положение" это выход с счётчика импульса? Спасибо

farikpwnz
11.12.2019, 12:39
https://owen.ru/forum/attachment.php?attachmentid=45913&d=1575289206 я делал во по этому принципу счетчик, т.е дал задание 100, вот включился привод вперед, дал задание 0 поехал назад. А если энкодер крутится не будет то привод будет работать.

Сергей0308
11.12.2019, 13:38
https://owen.ru/forum/attachment.php?attachmentid=45913&d=1575289206 я делал во по этому принципу счетчик, т.е дал задание 100, вот включился привод вперед, дал задание 0 поехал назад. А если энкодер крутится не будет то привод будет работать.

Мне кажется два "2и" непосредственно перед счётчиком надо убрать, иначе может сбиваться положение!
И схема очень неудачная, надо серьёзно её переработать!

Сергей0308
11.12.2019, 14:08
https://owen.ru/forum/attachment.php?attachmentid=45913&d=1575289206 я делал во по этому принципу счетчик, т.е дал задание 100, вот включился привод вперед, дал задание 0 поехал назад. А если энкодер крутится не будет то привод будет работать.

Если добавите, что я намалевал, то загорится авария и привод встанет, пока аварию не сбросят!
А Вы как хотели?

farikpwnz
11.12.2019, 16:37
Если добавите, что я намалевал, то загорится авария и привод встанет, пока аварию не сбросят!
А Вы как хотели?

Спасибо большое , это я ясность вношу как у меня работает)))

Сергей0308
11.12.2019, 16:50
Спасибо большое , это я ясность вношу как у меня работает)))

Не знаю Вы мою мысль поняли, лучше повторю: по той схеме если по инерции механизм будет вращаться то положение собьётся, так как счётчик после выключения импульсы уже не будет считать, короче, надо серьёзно переработать, надеюсь теперь понятней объяснил?!

farikpwnz
11.12.2019, 17:28
Не знаю Вы мою мысль поняли, лучше повторю: по той схеме если по инерции механизм будет вращаться то положение собьётся, так как счётчик после выключения импульсы уже не будет считать, короче, надо серьёзно переработать, надеюсь теперь понятней объяснил?!
Мне надо убрать 2И перед счётчиком? Спасибо большое!

Сергей0308
11.12.2019, 18:09
Мне надо убрать 2И перед счётчиком? Спасибо большое!

Не только это! Но и сделать так, чтобы счётчик не переполнялся, например начинать отсчёт не с ноля а с 1000, короче, с числа больше чем по инерции проезжает, тогда переполнятся не будет!
И это, я так думаю, для Вас самое простое решение, но могут быть и другие!

Другой вариант я вижу как-то примерно так:

46130

46131

И ещё хотел сказать, что я не уверен, что предложенная Вами(Вам) схема правильно работает с энкодером, короче, проверьте на всякий случай и в какой-то теме "petera" выкладывал схему работы с энкодером!

farikpwnz
11.12.2019, 21:29
Не только это! Но и сделать так, чтобы счётчик не переполнялся, например начинать отсчёт не с ноля а с 1000, короче, с числа больше чем по инерции проезжает, тогда переполнятся не будет!
И это, я так думаю, для Вас самое простое решение, но могут быть и другие!

Другой вариант я вижу как-то примерно так:

46130

46131

И ещё хотел сказать, что я не уверен, что предложенная Вами(Вам) схема правильно работает с энкодером, короче, проверьте на всякий случай и в какой-то теме "petera" выкладывал схему работы с энкодером!
Спасибо большое. Буду пробовать

Сергей0308
11.12.2019, 21:36
Спасибо большое. Буду пробовать

Вот нашёл схему работы с энкодером:

46132

46133

Тоже заменить не забудьте!
И проще и понятней сделать по первому варианту, короче с не нулевой начальной позицией, уже повторяюсь, так как в ОЛ нет целочисленных отрицательных значений(INT, DINT), они под INT(DINT) понимают UINT(UDINT)!

farikpwnz
11.12.2019, 21:42
Вот нашёл схему работы с энкодером:

46132

46133

Тоже заменить не забудьте!

Я правильно понял? Надо с 1000 нижнее положение, потому что инерция при торможении может переехать станет не 0 а 65000, да?
Спасибо.

Сергей0308
11.12.2019, 21:47
Я правильно понял? Надо с 1000 нижнее положение, потому что инерция при торможении может переехать станет не 0 а 65000, да?
Спасибо.

Да, в принципе правильно поняли!

Вот поправил схему работы с энкодером:

46134

46135

У Вас, я так понимаю, как-то так должно получится:

46136

46140

И с экрана можно задавать требуемую глубину реза, а если пересчитать импульсы в миллиметры(сантиметры) наверно ещё удобнее будет!

Я как-то так это вижу:

46142

46143

Импульсы в миллиметры надеюсь сможете сами перевести!

farikpwnz
11.12.2019, 23:24
Да, в принципе правильно поняли!

Вот поправил схему работы с энкодером:

46134

46135

У Вас, я так понимаю, как-то так должно получится:

46136

46139

И с экрана можно задавать требуемую глубину реза, а если пересчитать импульсы в миллиметры(сантиметры) наверно ещё удобнее будет!
Спасибо большое за помощь, даже не думал что так могут помочь , я понял вас! С работай счётчика моего.

Сергей0308
14.12.2019, 19:19
Спасибо большое за помощь, даже не думал что так могут помочь , я понял вас! С работай счётчика моего.

Особо пока не за что, пытался делать всё в общем виде, если конкретно по вашему случаю считаю, что схема позиционирования что Вы нашли вам плохо подходит, по команде нож должен доезжать до установленного значения перемещения и останавливаться, переедет по инерции, не переедет - до лампочки, при команде назад, возвращается в исходное положение, всё! Короче примерно как-то так:

46179

46180

Даже так, попроще:

46181

46183

Игорь Владимирович
24.12.2019, 08:24
Ребята, вот у вас все про энкодеры на пр200, это хорошо, но, какую скорость на входах максимум удалось получить ? 20, 30, 50 Гц?

farikpwnz
25.12.2019, 18:29
Ребята, вот у вас все про энкодеры на пр200, это хорошо, но, какую скорость на входах максимум удалось получить ? 20, 30, 50 Гц?

100 Гц справляется,мне для моих задач хватает вполне.это же не чпу.

игорь68
25.12.2019, 19:49
Марку энкодера можно узнать?

farikpwnz
26.12.2019, 06:38
100 Гц справляется,мне для моих задач хватает вполне.это же не чпу.

wachendorff wdg 58h-10-100-ab-g24-k3

Андрей Посохов
26.12.2019, 11:39
Добрый день.

Стоит понимать, что оперировать лишь частотой нельзя.
Юрий снял очень хорошее видео по этому поводу:

https://www.youtube.com/watch?v=qC5uuBg-eBc&t=831s

https://www.youtube.com/watch?v=qC5uuBg-eBc

Евгений Вершинин
30.12.2019, 12:16
Здравствуйте. Есть 2 Инкрементальных энкодера el40a500s5/28p6x6pr1.5 с разрешением ппр 500. Один стоит на оси Y (вертикально) другой на оси X (горизонтально), также стоят 2 привода на X и Y управляемые частотником. Раньше стоял ПЛК итальянский и управлял всем. Можно ли написать логику на ОВЕН? Какой ПЛК подайдет мне? Если мне нужно задавать расстояние оси X и Y, менять частоту привода Y, задавать границы движения оси Y от ...мм и до ...мм . Уставку шага привода X. 0 считается от пнп датчика по оси X