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

Тема: Расчет подключаемого энкодера

Древовидный режим

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

    По умолчанию

    Цитата Сообщение от AlekseyK Посмотреть сообщение
    Кажется нашел решение своей проблемы. При объявлении скоростных входов как "Fast encoder" позиция энкодера не теряется.

    С моим разрешением энкодера (2000 имп/об) можно делать до 32 оборотов в одном направлении, не переполняя регистр энкодера. Если в одну сторону крутить его максимально быстро, а в обратную медленно, то в первом случае (при объявлении быстрых входов как "direct control") появлялась ошибка, так как в прямом направлении происходила потеря импульсов. И при сведении метки на валу подсчитанное положение отличалось от нуля.

    Если же мы берем объявление как "Fast encoder", то импульсы не теряются. Но появляются две другие проблемы. На 33-м обороте будет переполнение регистра энкодера и как следствие потеря позиции объекта. То есть необходимо увеличить разрядность регистра энкодера до 32бит.

    Для этого выполняем следующий код:
    Код:
    IF ((Old_enc-Enc) > 25000) OR ((Enc-Old_Enc) > 25000) THEN (*Резкое изменение значение регистра означает переполнение в плюс или минус*)
    	IF (Enc < Old_Enc) THEN                                                 (*Enc - значение регистра "Fast Encoder"*)
    		Kol_Oborotov:=Kol_Oborotov+1;
    	ELSE
    		Kol_Oborotov:=Kol_Oborotov-1;
    	END_IF;
    END_IF;
    
    Enc32:=Kol_Oborotov*65535+Enc;                                     (*Enc32 - положение энкодера в DWORD*)
    Old_Enc:=Enc;
    Вторая проблема в том, что нельзя задать разрешение подключенного энкодера (в старом ПЛК110 это опция присутствовала), в новом счет идет жестко от 0 до 65535. Но она опять же решается, если по переменной Enc32 сделать операцию MOD 2000 - получим угловую позицию энкодера 2000 имп/об без ограничения на 32 оборота.

    Код можно размещать в основном цикле программы, так как сравниваются значения регистра энкодера на предыдущем цикле и на текущем. Все промежуточные значения всё равно не могут быть обработаны из-за длины цикла программы. Если хотим чтобы ПЛК максимально часто "присматривался" к позиции энкодера, то размещаем код в прерывание 20 мкс. Анализировать позицию (и реагировать на нее) быстрее чем там, всё равно не получится.

    Думаю что добавлю к этому коду еще инициализацию на нулевую точку и оформлю всё в виде функционального блока, чтобы обработка была целостной.
    Если кому интересно - результат выложу в данной теме.

    Остается только одно непонятно. Зачем ОВЕН в своем онлайн-курсе предлагает реализовывать обработку энкодера через "direct control"? Ведь даже видео-пример про это сняли. Или есть какие-то нюансы, которые я упускаю?

    Ну и вопрос к документации. Вот открываем Руководство пользователя, которое хоть на веб-страничке нового ПЛК110, хоть на диске, который вместе с ним приходит, и видим на странице 71 описание модуля Fast Encoder. А в нем описание параметра "Range of encoder 1" и нигде ни слова о том, что данный параметр актуален только для старого ПЛК. В результате вместо спокойной работы с документацией начинаются недоумения "а куда пропал параметр? А не кривой-ли у меня таргет? А может на моем ПЛК прошивка старая?" и изучение постов форума. Деталь, мелочь, но думаю многие заходят на форум с вопросами как раз из-за таких деталей.
    А вы пост #55 из этой темы читали: http://www.owen.ru/forum/showthread.php?t=23600&page=6

    Читать состояние регистра энкодера из прерывания по таймеру 20 мкс бесполезно.

    При частоте следования импульсов 10 кГц получается 10 импульсов за 1 мс. Это не много. При длительности цикла основной программы ПЛК 2 мс абсолютная погрешность будет не больше 20 импульсов на интервал измерения длины.
    Последний раз редактировалось Newcomer; 20.03.2016 в 12:38.

Похожие темы

  1. Расчет в отчете.
    от VVS_123 в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 12.10.2015, 16:24
  2. Расчет радиатора и нагревателя
    от rovki в разделе Трёп (Курилка)
    Ответов: 48
    Последнее сообщение: 11.11.2014, 10:10
  3. Расчет охладителя для ТТР Кипприбор
    от Iroha Uta в разделе Твердотельное реле
    Ответов: 12
    Последнее сообщение: 24.01.2014, 18:58
  4. ФБ расчет и long
    от LordN в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 07.03.2012, 07:07
  5. Master SCADA расчет
    от kanava в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 27.08.2008, 11:12

Ваши права

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