Показано с 1 по 10 из 10

Тема: ПЛК110-60 и "ручной" энкодер

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Алексей Геннадьевич Посмотреть сообщение
    Средний - к +24в
    остальные к DI1, DI2 с подтяжкой к 0 (резистор 1-1,5ком) Желательно ещё RC цепочку на входа замутить, т.к. энкодер механический-дребезжать будет.
    Этот вариант заработал!
    RC цепочку энкодеру не нужна - дребезг обычно решается на программном уровне. Возможно в этом контроллере и на аппаратном уровне.

    Если уменьшаю показания, то после 0 появляется число 65535. А есть какая-нибудь настройка, чтобы с 0 не перескакивала в 65535, а при уменьшении всегда был 0?
    А как изменить шаг приращения значения энкодера? А то у меня он изменяет на 4 единицы
    А как задать начальное значение энкодеру? Пробовал напрямую и через указатель - не работает:
    Код:
    pI :POINTER TO INT;
    ....
    
    encod := 10; <- не меняет
    
    pI := ADR(encod);
    pI^ :=20; <- не меняет
    Последний раз редактировалось -=Vovka=-; 23.10.2018 в 14:33.

  2. #2

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    Этот вариант заработал!
    RC цепочку энкодеру не нужна - дребезг обычно решается на программном уровне. Возможно в этом контроллере и на аппаратном уровне.

    Если уменьшаю показания, то после 0 появляется число 65535. А есть какая-нибудь настройка, чтобы с 0 не перескакивала в 65535, а при уменьшении всегда был 0?
    А как изменить шаг приращения значения энкодера? А то у меня он изменяет на 4 единицы
    А как задать начальное значение энкодеру? Пробовал напрямую и через указатель - не работает:
    Код:
    pI :POINTER TO INT;
    ....
    
    encod := 10; <- не меняет
    
    pI := ADR(encod);
    pI^ :=20; <- не меняет
    Если уменьшаю показания, то после 0 появляется число 65535 - потому, что 65535 это дополнительный код числа (-1)
    VAR
    count: INT;
    END_VAR
    count:= WORD_TO_INT(MyEnc);
    Где MyEnc - имя для энкодера в конфигурации
    Захват-1.png

    чтобы с 0 не перескакивала в 65535, а при уменьшении всегда был 0
    отрицательные значения обрежет оператор MAX(0, count)
    count:= MAX(0, WORD_TO_INT(MyEnc));

  3. #3

    По умолчанию

    Цитата Сообщение от Мимоход Посмотреть сообщение
    чтобы с 0 не перескакивала в 65535, а при уменьшении всегда был 0
    отрицательные значения обрежет оператор MAX(0, count)
    count:= MAX(0, WORD_TO_INT(MyEnc));
    В итоге что имеем: допустим крутанул я энкодер на уменьшение до 65000. переменная count равна 0 - замечательно!
    Кручу на увеличение, а count все равно 0!!! И будет 0, пока не "выкручу" больше 65535
    Как обнулить энкодер?

Похожие темы

  1. Ответов: 6
    Последнее сообщение: 01.12.2017, 13:35
  2. Ответов: 16
    Последнее сообщение: 15.02.2017, 11:39
  3. Ответов: 7
    Последнее сообщение: 25.09.2016, 07:45
  4. Ответов: 49
    Последнее сообщение: 06.08.2015, 14:38
  5. Ответов: 20
    Последнее сообщение: 15.04.2015, 11:02

Ваши права

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