Просмотр полной версии : ПЛК 210-02, энкодер AB и переполнение DINT
83280
83281
Добрый день!
Прошу разъяснить.
У меня ПЛК 210-02 и энкодер ABZ. Я подключаю его к ПЛК и конфигурирую как AB энкодер. Привязываю переменную в конфигурации к соответствующему каналу для считывания импульсов энкодера. На скрине все видно. Да и сам вопрос на скрине есть. У меня цепь вращается вперед, как я понял счет будет идти "бесконечно" и в какой-то момент времени все равно произойдет переполнение этого канала и переменной типа DINT. Какое значение покажет тут энкодер при этом и как его сбрасывать? Мне бы хотелось сбрасывать значение энкодера по датчику, у меня при вращении метка на цепи проходит мимо датчика, он как раз и должен определять 0 положение цепи, начальная точка, вот по нему я и хотел обнулять энкодер. Подскажите, возможно ли это и как мне лучше поступить, дайте совет? Может кто из своего опыта что подскажет?
Евгений Кислов
19.04.2025, 18:33
Добрый день.
Какое значение покажет тут энкодер при этом
0
как его сбрасывать? Мне бы хотелось сбрасывать значение энкодера по датчику, у меня при вращении метка на цепи проходит мимо датчика, он как раз и должен определять 0 положение цепи, начальная точка, вот по нему я и хотел обнулять энкодер
Сделайте по аналогии с примером:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/11_Other/Example_Plc21xx_RetainCountersWithReset_3517v1.pro jectarchive
Вы пишите, что покажет энкодер 0 при переполнении DINT и потом снова начнет отсчет с 0? Но судя по 83286 этой картинке должен уйти в отрицательные значения, или для энкодера в данном случае работает не так?
Да, и вот еще подумал, а если начать с 0 и крутить в обратную стороны, что будет со значением энкодера, уйдет в минусовые значения?
Добрый день.
0
Сделайте по аналогии с примером:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/11_Other/Example_Plc21xx_RetainCountersWithReset_3517v1.pro jectarchive
Но в этом примере используется ПЛК 210-11, а у меня 210-02. У моего нет отдельно сброса значения счетчика поканально, есть только сброс при загрузке проекта, а это не то что мне надо.
Евгений Кислов
20.04.2025, 07:36
или для энкодера в данном случае работает не так?
Не так.
Да, и вот еще подумал, а если начать с 0 и крутить в обратную стороны, что будет со значением энкодера, уйдет в минусовые значения?
Да.
Но в этом примере используется ПЛК 210-11, а у меня 210-02. У моего нет отдельно сброса значения счетчика поканально, есть только сброс при загрузке проекта, а это не то что мне надо
В рамках примера - вы можете "cбросить" счетчик путем изменения значения udiOffset_Di01.
Мы в ближайшие дни отредактируем пример, чтобы сделать его более универсальным.
по поводу "крутить в обратную сторону от 0" и значение уйдет в минус... Вот это тоже беспокоит, как с этим быть, а именно с переходом через 0 в обратную сторону? В моем механизме обратное движение тоже допускается
Евгений Кислов
20.04.2025, 09:39
Вот это тоже беспокоит, как с этим быть, а именно с переходом через 0 в обратную сторону?
В чем причина беспокойства и почему с этим надо "как-то быть"?
просто не понятно как работать с этим отрицательным значением?
вот мой код, для обработки и накопления значения с энкодера
IF ChainEnc_Imp > old_enc THEN (* Движение вперед *)
ChainEnc := ChainEnc + (ChainEnc_Imp - old_enc);
ELSIF idChainEnc_Imp < old_enc THEN (* Движение назад *)
ChainEnc := ChainEnc - (old_enc - ChainEnc_Imp);
END_IF
ChainEnc_Imp - это переменная энкодера
old_enc - значение энкодера с предыдущего цикла ПЛК
ChainEnc - сохраняемое Retain переменная для положения цепи (ну, я его потом преобразую в мм.)
и вот тут мне не нравится, что если обратный счет, то при переходе через 0 может быть такая ситуация, когда old_enc еще положительное, а ChainEnc_Imp тут уже отрицательное число, и вот в этот момент все нарушается. То есть если в пределах диапазона DINT , то код должен работать нормально, а вот при переполнениях DINT вверху или внизу диапазона все нарушается. Пока не пойму как мне сделать?!
Евгений Кислов
20.04.2025, 14:33
ChainEnc_Imp - это переменная энкодера
...счетчика импульсов энкодера
Поэтому
мой код, для обработки и накопления
вот эта задумка мне не очень понятна.
Я могу только ещё раз посоветовать изучить устройство примера по ссылке выше.
Хорошо, еще подумаю над примером, но все равно пока мне не понятно, как реализовать счет, если вращение в обратную сторону и происходит переход через 0 и потом в "таргетовом счетчике" появляются отрицательные значения...
Не так.
В рамках примера - вы можете "cбросить" счетчик путем изменения значения udiOffset_Di01.
Мы в ближайшие дни отредактируем пример, чтобы сделать его более универсальным.
вот тут еще не понял о сбросе какого счетчика речь? Вы имеете ввиду "программный" счетчик, т.к. как я понял "таргетовый" сбросить не возможно (ну только при перезагрузке проекта). Кстати, а "таргетовый счетчик " может быть сброшен при перезагрузке ПЛК, или только при перезаливке проекта?
Евгений Кислов
20.04.2025, 18:17
Вы имеете ввиду "программный" счетчик,
Да, его.
Кстати, а "таргетовый счетчик " может быть сброшен при перезагрузке ПЛК,
Да, он сбросится после перезагрузки ПЛК.
А вот еще такой вопрос есть. Если использовать ABZ энкодер и в конфигурации активировать именно как ABZ энкодер, но при этом вместо фазы Z подключить на соответствующий вход ПЛК нужный мне сигнал (например, датчик 0 начального положения цепи). И в определенный момент, как датчик сработает значение счетчика энкодера обнулится или счетчик числа оборотов увеличится на 1 ?
Евгений Кислов
21.04.2025, 06:18
Cчетчик числа оборотов должен увеличиться на 1.
Хорошо, еще подумаю над примером, но все равно пока мне не понятно, как реализовать счет, если вращение в обратную сторону и происходит переход через 0 и потом в "таргетовом счетчике" появляются отрицательные значения...
Евгений, вы вот это сообщение пропустили, не ответили. Можете пояснить, подсказать ?
Евгений Кислов
21.04.2025, 09:21
Евгений, вы вот это сообщение пропустили, не ответили. Можете пояснить, подсказать ?
Давайте продолжим общение в рамках вашего запроса на support@owen.ru, который вы недавно отправили.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot