Постановка проблемы
Задача измерения скорости вращения исполнительных механизмов (или их позиционирования относительно начального положения) путём определения углового положения вала двигателя (или оси вращения) является одной из самых распространённых в области автоматизации.
На рис. 1 приведён пример изменения сигналов энкодера во времени при вращении против часовой стрелки. В момент прихода переднего фронта сигнала A сигнал B находится в состоянии 0 (при вращении по часовой стрелке сигнал B находится в состоянии 1). При проведении программной обработки сигнала для первого случая значение счётчика увеличивается, во втором случае уменьшается. Такой способ подсчёта применим, когда требования к точности определения значения счётчика и к положению исполнительного устройства невысоки. Погрешность измерения в данном случае вызвана тем, что в реальных условиях при изменении состояния сигнала датчика может происходить дребезг (несколько последовательных ложных срабатываний).

Типы выходных сигналов энкодеров
На основе анализа технической документации производителей энкодеров, в частности [3], можно предложить следующую классификацию инкрементных энкодеров по типам выходных каскадов.- Выход по напряжению (Voltage Output). Выходной сигнал с уровнем напряжения, определяемого величиной напряжения питания энкодера, можно напрямую подавать на измерительную схему (рис. 3).
- Ток нагрузки в данном случае составляет не более десятка миллиампер. При подключении сигнала энкодера к нескольким устройствам одновременно (например, к ПЛК и частотному преобразователю) нельзя превышать допустимую нагрузочную способность выходного каскада. Недостатком этого типа выхода является большое выходное сопротивление в закрытом состоянии транзистора VT1, определяемое сопротивлением в цепи коллектора, составляющим порядка тысяч Ом. Как следствие, ток, отдаваемый в нагрузку, уменьшается, и увеличивается время заряда ёмкости нагрузки, что снижает общее быстродействие.
- Выход с открытым коллектором (Open Collector). Такой тип выхода позволяет получить сигнал с уровнем напряжения, определяемым не величиной напряжения питания энкодера, а величиной напряжения дополнительного источника питания. Для этого необходимо между цепями питания (Uпит) и выходом подключить внешний резистор, величина сопротивления которого определяется значением напряжения дополнительного источника питания (рис. 4).
Конкретные величины сопротивления внешних резисторов приведены в табл. 1.
Также возможно включение нагрузки между выходом энкодера и дополнительным источником питания (рис. 5).
Ток нагрузки (Iок) в этом случае составляет не более 30…50 мА. Тип выхода с открытым коллектором позволяет также подключать при необходимости несколько энкодеров к одному счётному входу. - Двухтактный (каскадный, комплементарный) выход (Push–Pull, Totem Pole). Этот тип выхода (рис. 6) построен на транзисторах различной (n-p-n и p-n-p) проводимости и имеет малое выходное сопротивление (как в состоянии логического нуля, так и в состоянии логической единицы), что позволяет увеличить ток, отдаваемый в нагрузку.
Таким образом повышается нагрузочная способность и ускоряются процессы заряда и разряда ёмкости нагрузки, а следовательно, растёт быстродействие. - Дифференциальный выход (Line Driver, RS-422). В данном случае помимо основного добавляется второй выход, осуществляющий инверсию выходного сигнала. Для обработки двух сигналов необходимо иметь соответствующий приёмник в измерительной схеме (рис. 7).
Такой тип выхода используется в условиях, для которых высока вероятность возникновения помехи и можно ожидать наводок на сигнальные провода, или при очень длинных соединительных проводах.
Подключение энкодера к ПЛК
В случае непосредственного управления исполнительным механизмом без использования интеллектуального устройства типа частотного или сервопреобразователя вполне оправданно подключение энкодера напрямую к ПЛК.В данном случае обработкой сигнала с энкодера занимается само интеллектуальное устройство.




- однофазный с управлением направлением (Single Phase) – направление счёта выбирается программно или для этого используется один из дискретных входов контроллера;
- двухфазный (реверсивный) с двумя счётными входами (Two-phase) – входы счёта в прямом и обратном направлении;
- квадратурный счётчик (AB Counter) – используются два импульсных сигнала, сдвинутых относительно друг друга на 90°, возможно подключения третьего входа для референтной метки;
- квадратурный счётчик с учетверённой точностью (AB Counter Fourfold) – значение счётчика изменяется 4 раза за период (передний фронт сигнала A, передний фронт сигнала B, задний фронт сигнала A, задний фронт сигнала B), возможно подключение третьего входа для референтной метки.

Рассмотрим пример подключения и конфигурирования инкрементного энкодера, имеющего три выходных канала (фаза A, фаза B и фаза Z):
- Зададим для счётчика HSC_1 конфигурацию в соответствии с рис. 9.
Для управления работой высокоскоростного счётчика, а также чтения его выходного значения можно использовать не только определённые в конфигурации счётчика события (рис. 10), но и, например, периодически активирующуюся подпрограмму обработки аппаратного прерывания (Cyclic Interrupt).
В любом случае необходима подпрограмма, которая будет производить обработку прерывания для определённых в конфигурации счётчиков событий (ссылка на эту программу указывается в пункте Hardware Interrupt). - Прежде чем описывать подпрограмму обработки прерываний, создадим глобальный блок данных и назовём его, например, DB HSC retain. Зададим внутри этого блока переменную HSC_1 с типом данных DInt (рис. 11).
Значение счётчика будем заносить в эту переменную, так как переменная энергонезависимая (установлен пункт Retain), значение будет сохраняться и после отключения питания. - В качестве примера создадим подпрограмму обработки прерывания (Cyclic Interrupt) со временем вызова 10 мс на языке LAD (рис. 12).
Имя программного блока в среде TIA Portal можно задать по своему усмотрению в разрешённом диапазоне (например, OB30). Такая программа будет выполняться циклически с указанным временем цикла независимо от выполнения основной программы и рабочего цикла ПЛК. Добавим в разделе объявления символьных переменных памяти ПЛК (PLC Tags > Show all tags) переменную для чтения текущего значения высокоскоростного счётчика (рис. 13), по умолчанию адрес данной переменной в области входов равен 1000 (табл. 5).
Таким образом, значение счётчика будет заноситься в энергонезависимую переменную HSC_1 глобального блока данных каждые 10 мс. - Создадим программный (рис. 14) блок типа Startup (с именем OB100 на языке FBD), который будет выполняться каждый раз при старте ПЛК.
В данном блоке будем производить копирование последнего сохранённого (после отключения питания или сброса ПЛК) в энергонезависимой памяти значения счётчика в специально созданную переменную NEW_CV (типа DInt в области свободно адресуемой памяти – M). В дальнейшем будем её использовать для конфигурирования высокоскоростного счётчика при помощи входа NEW_CV блока CTRL_HSC. При этом счётчик будет вести счёт уже не с нуля, а начиная с последнего сохранённого значения. Для того чтобы активировать новое значение счётчика, создадим дополнительно переменную CV типа Bool (рис. 13) и будем производить установку этой переменной при активации программного блока. - Наконец, создадим основную программу (OB1), которая будет работать в цикле ПЛК и задавать параметры блока управления высокоскоростным счётчиком (рис. 15).
Также необходимо осуществить сброс переменной CV после установки нового значения счётчика для того, чтобы иметь возможность установки следующего сохранённого значения после очередного сброса ПЛК. При необходимости использования других возможностей блока CTRL_HSC (табл. 2) в таблице тегов проекта необходимо добавить соответствующие переменные (рис. 13).
Выводы
Рассмотренные данные о типах выходного сигнала энкодеров, способах его обработки и подсчёте измеряемой частоты вращения должны помочь техническим специалистам сделать правильный выбор. Но при выборе энкодера также следует учесть и другие параметры [7]:- тип выходного сигнала, напряжение питания энкодера;
- количество импульсов на оборот (количество бит данных у абсолютных энкодеров), значение данного параметра прямо пропорционально точности измерений;
- диаметр вала энкодера, необходимость дополнительной муфты или монтажного фланца, от этого зависит, как будет передаваться вращение от исполнительного механизма;
- длина кабеля и тип выходного разъёма;
- степень защиты от проникновения пыли и влаги (IP).
Среди основных российских производителей энкодеров можно отметить ЗАО «Сенсор» (г. Екатеринбург), НПП «Уралметаллургавтоматика», ЗАО «Уралчерметавтоматика» (г. Челябинск), СКБ ИС (г. Санкт-Петербург), ЗАО «МЕАНДР» (г. Санкт-Петербург), ООО ПКФ «СТРАУС» (г. Тольятти), ЗАО «МЕГА-К» (г. Калуга). Из зарубежных производителей наиболее известны: Delta Electronics (Тайвань), Omron (Япония), Autonics (Корея), Pepperl+Fuchs (Германия), Siemens (Германия), SICK AG (Германия). ●
Литература
- Вульвет Дж. Датчики в цифровых системах. – М. : Энергоиздат, 1981.
- Уолт Кестер. Методы практического конструирования при нормировании сигналов с датчиков : пер. с англ. Горшков Б.Л. – СПб. : АВТЭКС, 1999.
- В.И. Поляков. Выходные сигналы инкрементных преобразователей [Электронный ресурс] // СКБ ИС. – Режим доступа : http://www.skbis.ru/index.php?p=20.
- И.В. Петров. Программируемые контроллеры: стандартные языки и приёмы прикладного проектирования. – М. : Солон-Пресс, 2008.
- International Standard IEC 61131-3 2013. – Brussels: International Electrotechnical Commision, 2012.
- Программируемый контроллер Siemens S7-1200 : Системное руководство. – Нюрнберг : Siemens AG, 2009.
- Принцип работы инкрементного и абсолютного энкодера [Электронный ресурс] // Режим доступа : http://www.devicesearch.ru/ article/enkodery.
Если вам понравился материал, кликните значок - вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал - не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!