Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: ПЛК 210-02, энкодер AB и переполнение DINT

  1. #1
    Пользователь
    Регистрация
    21.07.2018
    Адрес
    Краснодар
    Сообщений
    22

    По умолчанию ПЛК 210-02, энкодер AB и переполнение DINT

    AB энкодер.png
    Codesys - типы данных.png
    Добрый день!
    Прошу разъяснить.
    У меня ПЛК 210-02 и энкодер ABZ. Я подключаю его к ПЛК и конфигурирую как AB энкодер. Привязываю переменную в конфигурации к соответствующему каналу для считывания импульсов энкодера. На скрине все видно. Да и сам вопрос на скрине есть. У меня цепь вращается вперед, как я понял счет будет идти "бесконечно" и в какой-то момент времени все равно произойдет переполнение этого канала и переменной типа DINT. Какое значение покажет тут энкодер при этом и как его сбрасывать? Мне бы хотелось сбрасывать значение энкодера по датчику, у меня при вращении метка на цепи проходит мимо датчика, он как раз и должен определять 0 положение цепи, начальная точка, вот по нему я и хотел обнулять энкодер. Подскажите, возможно ли это и как мне лучше поступить, дайте совет? Может кто из своего опыта что подскажет?

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,342

    По умолчанию

    Добрый день.

    Какое значение покажет тут энкодер при этом
    0

    как его сбрасывать? Мне бы хотелось сбрасывать значение энкодера по датчику, у меня при вращении метка на цепи проходит мимо датчика, он как раз и должен определять 0 положение цепи, начальная точка, вот по нему я и хотел обнулять энкодер
    Сделайте по аналогии с примером:
    https://ftp.owen.ru/CoDeSys3/21_Exam...projectarchive

  3. #3
    Пользователь
    Регистрация
    21.07.2018
    Адрес
    Краснодар
    Сообщений
    22

    По умолчанию

    Вы пишите, что покажет энкодер 0 при переполнении DINT и потом снова начнет отсчет с 0? Но судя по Codesys - типы данных.png этой картинке должен уйти в отрицательные значения, или для энкодера в данном случае работает не так?
    Да, и вот еще подумал, а если начать с 0 и крутить в обратную стороны, что будет со значением энкодера, уйдет в минусовые значения?
    Последний раз редактировалось roskmv; 20.04.2025 в 00:33.

  4. #4
    Пользователь
    Регистрация
    21.07.2018
    Адрес
    Краснодар
    Сообщений
    22

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.



    0



    Сделайте по аналогии с примером:
    https://ftp.owen.ru/CoDeSys3/21_Exam...projectarchive
    Но в этом примере используется ПЛК 210-11, а у меня 210-02. У моего нет отдельно сброса значения счетчика поканально, есть только сброс при загрузке проекта, а это не то что мне надо.

  5. #5
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,342

    По умолчанию

    или для энкодера в данном случае работает не так?
    Не так.

    Да, и вот еще подумал, а если начать с 0 и крутить в обратную стороны, что будет со значением энкодера, уйдет в минусовые значения?
    Да.

    Но в этом примере используется ПЛК 210-11, а у меня 210-02. У моего нет отдельно сброса значения счетчика поканально, есть только сброс при загрузке проекта, а это не то что мне надо
    В рамках примера - вы можете "cбросить" счетчик путем изменения значения udiOffset_Di01.
    Мы в ближайшие дни отредактируем пример, чтобы сделать его более универсальным.

  6. #6
    Пользователь
    Регистрация
    21.07.2018
    Адрес
    Краснодар
    Сообщений
    22

    По умолчанию

    по поводу "крутить в обратную сторону от 0" и значение уйдет в минус... Вот это тоже беспокоит, как с этим быть, а именно с переходом через 0 в обратную сторону? В моем механизме обратное движение тоже допускается

  7. #7
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,342

    По умолчанию

    Вот это тоже беспокоит, как с этим быть, а именно с переходом через 0 в обратную сторону?
    В чем причина беспокойства и почему с этим надо "как-то быть"?

  8. #8
    Пользователь
    Регистрация
    21.07.2018
    Адрес
    Краснодар
    Сообщений
    22

    По умолчанию

    просто не понятно как работать с этим отрицательным значением?
    вот мой код, для обработки и накопления значения с энкодера

    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 вверху или внизу диапазона все нарушается. Пока не пойму как мне сделать?!

  9. #9
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,342

    По умолчанию

    ChainEnc_Imp - это переменная энкодера
    ...счетчика импульсов энкодера

    Поэтому

    мой код, для обработки и накопления
    вот эта задумка мне не очень понятна.

    Я могу только ещё раз посоветовать изучить устройство примера по ссылке выше.

  10. #10
    Пользователь
    Регистрация
    21.07.2018
    Адрес
    Краснодар
    Сообщений
    22

    По умолчанию

    Хорошо, еще подумаю над примером, но все равно пока мне не понятно, как реализовать счет, если вращение в обратную сторону и происходит переход через 0 и потом в "таргетовом счетчике" появляются отрицательные значения...

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 3
    Последнее сообщение: 21.04.2025, 12:41
  2. 2 WORD В DINT
    от А1дар в разделе СПК1xx (архив)
    Ответов: 5
    Последнее сообщение: 19.02.2021, 10:56
  3. Переполнение DINT
    от lazy в разделе ПЛК1хх
    Ответов: 19
    Последнее сообщение: 14.10.2016, 21:53
  4. Переполнение диапазона
    от Boris_K в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 15.12.2014, 17:28
  5. Modbus DINT
    от olegsv в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 25.01.2012, 08:01

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •