Подключение инкрементного энкодера к ПЛК

В статье разъясняется принцип подключения инкрементного энкодера к ПЛК на примере Siemens S7-1200 и среды программирования TIA Portal. Для обработки сигналов с энкодера использованы блоки высокоскоростных счётчиков, позволяющих вести подсчёт импульсов от энкодера с высокой выходной частотой (1000 импульсов за оборот и более). Обобщены данные о типах выходного сигнала энкодера, способах его обработки, подсчёте измеряемой частоты вращения.

Аль-Тибби Висам, Поздняков Александр

905
В ЗАКЛАДКИ

Постановка проблемы

Задача измерения скорости вращения исполнительных механизмов (или их позиционирования относительно начального положения) путём определения углового положения вала двигателя (или оси вращения) является одной из самых распространённых в области автоматизации.
Энкодер, или датчик угла поворота – это электромеханическое устройство, предназначенное для решения указанной задачи, то есть преобразования углового положения вала в электрический сигнал. Энкодеры могут быть оптическими, резистивными, магнитными и др. [1, 2]. По принципу определения углового положения объекта энкодеры разделяют на инкрементные (накапливающие) и абсолютные (позиционные). Абсолютные энкодеры позволяют определять текущее положение оси поворота в любой момент времени, в том числе и после отключения питания. В качестве выходного сигнала абсолютных энкодеров может использоваться обычный двоичный код или код Грея [2]. Для передачи полученных данных и конфигурирования энкодера используют протоколы PROFIBUS, CAN, DeviceNet и др. Абсолютные энкодеры являются более функциональными, но и более дорогими устройствами. Поэтому на практике большее распространение получили инкрементные энкодеры. Инкрементный энкодер формирует за один полный оборот вала определённое количество импульсов. Если вращение вала прекращается, то прекращается и формирование импульсов. Величину угла поворота определяют путём подсчёта числа импульсов от начальной позиции до требуемой. Скорость вращения вала определяется как число импульсов за единицу времени (обороты в минуту). Как правило, выходной сигнал инкрементного энкодера имеет два канала (рис. 1), в которых две идентичные последовательности импульсов (A и B) сдвинуты на 90° относительно друг друга (парафазные импульсы), что позволяет определять направление вращения.
Имеется также третий выход нулевой (референтной) метки (Z), который позволяет определить абсолютное положение вала, поскольку сразу же после включения положение вала неизвестно.
Для формирования импульсов инкрементный энкодер имеет установленный на валу диск с делениями, которые определяют положение вала, и устройство для считывания этого положения. Считывание можно производить механическими, оптическими или магнитными датчиками. Положение диска (угол поворота) кодируется путём чередования двух типов областей на диске, которые идентифицируются при помощи датчиков (например, для оптического датчика это прозрачные и непрозрачные области). Для определения направления вращения используют второй датчик, который смещён относительно первого на половину ширины штриха диска или промежутка между штрихами. Для определения начального положения диска на него наносится отдельная шкала референтной метки [1].
На рис. 1 приведён пример изменения сигналов энкодера во времени при вращении против часовой стрелки. В момент прихода переднего фронта сигнала A сигнал B находится в состоянии 0 (при вращении по часовой стрелке сигнал B находится в состоянии 1). При проведении программной обработки сигнала для первого случая значение счётчика увеличивается, во втором случае уменьшается. Такой способ подсчёта применим, когда требования к точности определения значения счётчика и к положению исполнительного устройства невысоки. Погрешность измерения в данном случае вызвана тем, что в реальных условиях при изменении состояния сигнала датчика может происходить дребезг (несколько последовательных ложных срабатываний).
При дребезге (рис. 2) изменение зна­чения счётчика будет происходить несколько раз, что и вызывает ошибку в процессе подсчёта.
Для борьбы с дребезгом используются аппаратные и программные методы: фильтр низких частот на высокоскоростном входе, введение некоторой задержки на регистрацию изменения сигнала, в течение которой дребезг прекратится, и т.д. При регистрации значения счётчика импульсов могут возникнуть и другие распространённые проблемы (остановка диска энкодера в промежуточном положении, колебания диска и пр.).
Для повышения точности измерений можно проводить дополнительную обработку данных: при подсчёте регистрировать изменения сигнала A как по переднему, так и по заднему фронту, вести подсчёт по фронтам обоих сигналов A и B без выделения ведущего сигнала и т.д. Такие готовые процедуры могу­­­­т выполнять как блоки высокоскоростных счётчиков ПЛК, так и программа пользователя.

Типы выходных сигналов энкодеров

На основе анализа технической документации производителей энкодеров, в частности [3], можно предложить следующую классификацию инкрементных энкодеров по типам выходных каскадов.
  1. Выход по напряжению (Voltage Out­put). Выходной сигнал с уровнем напряжения, определяемого величиной напряжения питания энкодера, можно напрямую подавать на измерительную схему (рис. 3).

  2. Ток нагрузки в данном случае составляет не более десятка миллиампер. При подключении сигнала энкодера к нескольким устройствам одновременно (например, к ПЛК и частотному преобразователю) нельзя превышать допустимую нагрузочную способность выходного каскада. Недостатком этого типа выхода является большое выходное сопротивление в закрытом состоянии транзистора VT1, определяемое сопротивлением в цепи коллектора, составляющим порядка тысяч Ом. Как следствие, ток, отдаваемый в нагрузку, уменьшается, и увеличивается время заряда ёмкости нагрузки, что снижает общее быстродействие.
  3. Выход с открытым коллектором (Open Collector). Такой тип выхода позволяет получить сигнал с уровнем напряжения, определяемым не величиной напряжения питания энкодера, а величиной напряжения дополнительного источника питания. Для этого необходимо между цепями питания (Uпит) и выходом подключить внешний резистор, величина сопротивления которого определяется значением напряжения дополнительного источника питания (рис. 4).

    Конкретные величины сопротивления внешних резисторов приведены в табл. 1.

    Также возможно включение нагрузки между выходом энкодера и дополнительным источником питания (рис. 5).

    Ток нагрузки (Iок) в этом случае составляет не более 30…50 мА. Тип выхода с открытым коллектором позволяет также подключать при необходимости несколько энкодеров к одному счётному входу.
  4. Двухтактный (каскадный, комплементарный) выход (Push–Pull, Totem Pole). Этот тип выхода (рис. 6) построен на транзисторах различной (n-p-n и p-n-p) проводимости и имеет малое выходное сопротивление (как в состоянии логического нуля, так и в состоянии логической единицы), что позволяет увеличить ток, отдаваемый в нагрузку.

    Таким образом повышается нагрузочная способность и ускоряются процессы заряда и разряда ёмкости нагрузки, а следовательно, растёт быстродействие.
  5. Дифференциальный выход (Line Driver, RS-422). В данном случае помимо основного добавляется второй выход, осуществляющий инверсию выходного сигнала. Для обработки двух сигналов необходимо иметь соответствующий приёмник в измерительной схеме (рис. 7).

    Такой тип выхода используется в условиях, для которых высока вероятность возникновения помехи и можно ожидать наводок на сигнальные провода, или при очень длинных соединительных проводах.
Значение уровня выходных сигналов для некоторых типов выходов инкрементных энкодеров может также обозначаться как TTL (соответствует напряжению питания 5 В) или HTL (соответствует напряжению питания в дипазоне от 10 до 24 В). Обычно для подачи сигналов на дискретные входы ПЛК используются сигналы с напряжением 24 В.

Подключение энкодера к ПЛК

В случае непосредственного управления исполнительным механизмом без использования интеллектуального уст­ройства типа частотного или сервопреобразователя вполне оправданно подключение энкодера напрямую к ПЛК.
В данном случае обработкой сигнала с энкодера занимается само интеллектуальное устройство.
Поскольку в рассматриваемом далее примере сигнал на выходах энкодера имеет импульсную форму, то энкодер подключается к дискретным входам ПЛК. Схема подключения энкодера для случая использования выходного сигнала типа «открытый коллектор» приведена на рис. 8.

Основная проблема при подключении к ПЛК – это согласование частоты выдачи импульсов энкодером (f1) и частоты опроса входов контроллером (f2). Естественно, что f2 должна быть больше f1 и достаточной для того, чтобы корректно произвести подсчёт импульсов. Значение частоты f2, по сути, ограничено длительностью рабочего цикла ПЛК, который состоит из фаз чтения входов, исполнения программы пользователя и записи значений выходов [4]. Если время чтения входов и записи выходов можно считать фиксированным и зависящим от типа входов и характеристик контроллера, то время исполнения программы пользователя зависит от содержимого самой программы и вносит наибольший вклад в общее время рабочего цикла ПЛК. Если не брать в расчёт специализированные энкодеры с повышенной точностью, то частота импульсов, выдаваемых наиболее распространёнными фотоэлектрическими инкрементными энкодерами за один оборот, может варьироваться от 100 до 2500 импульсов и более (стандартные значения 100, 200, 300, 360, 500, 600, 1000, 1024, 2500). Кратность частоты 1024 (2n) позволяет легко перевести полученное значение в двоичный код, кратность частоты 360 – перевести текущее значение в угол поворота. При подсчёте скорости вращения электродвигателя максимальное количество оборотов в минуту может находиться в пределах 750–3000 об./мин (12,5–50 об./с). Таким образом, необходимо подсчитывать несколько десятков тысяч оборотов в секунду (частота порядка десятков кГц). Типичное время рабочего цикла ПЛК измеряется десятками миллисекунд (частота порядка кГц), что гораздо больше интервала между импульсами энкодера. Поэтому подсчёт импульсов от энкодера при помощи стандартных [5] функциональных блоков счётчиков (CTU, CTD, CTUD) внутри программы пользователя затруднителен или приводит к нарушению рабочего цикла ПЛК. Самый логичный вариант решения этой проблемы – заставить счётчик работать независимо от основной программы, контролируя его выходное значение при помощи специальной подпрограммы обработки прерываний. Указанную возможность предоставляют, например, блоки высокоскоростных счётчиков (HSC), используемые при программировании ПЛК Siemens [6]. ПЛК Siemens S7-1200 позволяют использовать до 6 таких счётчиков. Для управления работой счётчиков в среде программирования TIA Portal используется специальный функциональный блок CTRL_HSC, вызываемый из меню Instructions > Technology > Coun­ting. Максимальная частота входных импульсов может составлять 100 кГц для однофазных (одноканальных) счётчиков и 80 кГц для квадратурных счётчиков [6]. Параметры блока CTRL_HSC обеспечивают программное управление процессом счёта (табл. 2).

HSC может загружаться с одним неизменным или несколькими последовательными предустановленными значениями (уставками), а подсчёт импульсов активизируется в течение заданного интервала времени, до тех пор пока текущее значение счётчика меньше значения уставки. При совпадении текущего значения счётчика с уставкой HSC вызывает прерывание. Также прерывание может вызываться при сбросе счётчика и при смене направления счёта.
Для чтения значения счётчика достаточно провести первичное конфигурирование дискретного входа ПЛК, связанного с данным счётчиком. Конфигурирование происходит в меню настроек дискретных входов контроллера (например, Device&networks > PLC_1 (CPU 1214C DC/DC/DC) > Properties > Gene­ral). Для использования счётчика необходимо установить пункт Enable this high speed counter. Назначение дискретных входов для ПЛК S7-1200 жёстко задано (табл. 3).
Назначение каналов счётчика может изменяться в зависимости от типа счётчика (табл. 4).

Имеются несколько основных типов быстрых счётчиков:
  • однофазный с управлением направлением (Single Phase) – направление счёта выбирается программно или для этого используется один из дискретных входов контроллера;
  • двухфазный (реверсивный) с двумя счётными входами (Two-phase) – входы счёта в прямом и обратном направлении;
  • квадратурный счётчик (AB Counter) – используются два импульсных сигнала, сдвинутых относительно друг друга на 90°, возможно подключения третьего входа для референтной метки;
  • квадратурный счётчик с учетверённой точностью (AB Counter Fourfold) – значение счётчика изменяется 4 раза за период (передний фронт сигнала A, передний фронт сигнала B, задний фронт сигнала A, задний фронт сигнала B), возможно подключение третьего входа для референтной метки.
Счётчики всех указанных типов можно использовать с внешним входом сброса (референтной метки) или без него. При подсчёте частоты возможны три различных интервала, определяющих периодичность определения значения частоты: 0,01; 0,1 и 1 секунда. Значение частоты определяется как среднее за указанный интервал времени и измеряется в Гц.
ПЛК сохраняет текущее значение счётчика по адресу области входов, указанному в табл. 5.
Тип данных DInt говорит о том, что под значение счётчика в памяти выделяется двойное слово (4 байта).
Данные значения можно изменять по своему усмотрению в конфигурации конкретного HSC (в настройках дискретных входов). Для чтения значения счётчика достаточно произвести прямое чтение соответствующей ячейки памяти в любом программном блоке. Тем не менее частота опроса программных блоков ограничена длительностью рабочего цикла ПЛК. Поэтому для чтения значения счётчика в программный блок аппаратных прерываний, исполняемый при запуске аппаратного прерывания, связанного со счётчиком (при сбросе счётчика или при смене направления счёта), обычно помещают функциональный блок CTRL_HSC. Кроме того, поскольку при отключении питания или после перезапуска ПЛК инкрементный энкодер не сохраняет текущую позицию (в отличие от абсолютного), то логичным будет использовать энергонезависимую память ПЛК для хранения текущего значения высокоскоростного счётчика. Примеры работы со счётчиками HSC можно найти на сайте технической поддержки Siemens Industry Online Support.
Рассмотрим пример подключения и конфигурирования инкрементного энкодера, имеющего три выходных канала (фаза A, фаза B и фаза Z):
  1. Зададим для счётчика HSC_1 конфигурацию в соответствии с рис. 9.

    Для управления работой высокоскоростного счётчика, а также чтения его выходного значения можно использовать не только определённые в конфигурации счётчика события (рис. 10), но и, например, периодически активирующуюся подпрограмму обработки аппаратного прерывания (Cyclic Interrupt).

    В любом случае необходима подпрограмма, которая будет производить обработку прерывания для определённых в конфигурации счётчиков событий (ссылка на эту программу указывается в пункте Hardware Interrupt).
  2. Прежде чем описывать подпрограмму обработки прерываний, создадим глобальный блок данных и назовём его, например, DB HSC retain. Зададим внутри этого блока переменную HSC_1 с типом данных DInt (рис. 11).

    Значение счётчика будем заносить в эту переменную, так как переменная энергонезависимая (установлен пункт Re­tain), значение будет сохраняться и после отключения питания.
  3. В качестве примера создадим подпрограмму обработки прерывания (Cyclic Interrupt) со временем вызова 10 мс на языке LAD (рис. 12).

    Имя программного блока в среде TIA Portal можно задать по своему усмотрению в разрешённом диапазоне (например, OB30). Такая программа будет выполняться циклически с указанным временем цикла независимо от выполнения основной программы и рабочего цикла ПЛК. Добавим в разделе объявления символьных переменных памяти ПЛК (PLC Tags > Show all tags) переменную для чтения текущего значения высокоскоростного счётчика (рис. 13), по умолчанию адрес данной переменной в области входов равен 1000 (табл. 5).

    Таким образом, значение счётчика будет заноситься в энергонезависимую переменную HSC_1 глобального блока данных каждые 10 мс.
  4. Создадим программный (рис. 14) блок типа Startup (с именем OB­100 на языке FBD), который будет выполняться каждый раз при старте ПЛК.

    В данном блоке будем производить копирование последнего сохранённого (после отключения питания или сброса ПЛК) в энергонезависимой памяти значения счётчика в специально созданную переменную NEW_CV (типа DInt в области свободно адресуемой памяти – M). В дальнейшем будем её использовать для конфигурирования высокоскоростного счётчика при помощи входа NEW_CV блока CTRL_HSC. При этом счётчик будет вести счёт уже не с нуля, а начиная с последнего сохранённого значения. Для того чтобы активировать новое значение счётчика, создадим дополнительно переменную CV типа Bool (рис. 13) и будем производить установку этой переменной при активации программного блока.
  5. Наконец, создадим основную программу (OB1), которая будет работать в цикле ПЛК и задавать параметры блока управления высокоскоростным счётчиком (рис. 15).

    Также необходимо осуществить сброс переменной CV после установки нового значения счётчика для того, чтобы иметь возможность установки следующего сохранённого значения после очередного сброса ПЛК. При необходимости использования других возможностей блока CTRL_HSC (табл. 2) в таблице тегов проекта необходимо добавить соответствующие переменные (рис. 13).

Выводы

Рассмотренные данные о типах выходного сигнала энкодеров, способах его обработки и подсчёте измеряемой частоты вращения должны помочь техническим специалистам сделать правильный выбор. Но при выборе энкодера также следует учесть и другие параметры [7]:
  • тип выходного сигнала, напряжение питания энкодера;
  • количество импульсов на оборот (количество бит данных у абсолютных энкодеров), значение данного параметра прямо пропорционально точности измерений;
  • диаметр вала энкодера, необходимость дополнительной муфты или монтажного фланца, от этого зависит, как будет передаваться вращение от исполнительного механизма;
  • длина кабеля и тип выходного разъёма;
  • степень защиты от проникновения пыли и влаги (IP).
Описанный пример подключения инкрементного энкодера к ПЛК Siemens S7-1200 в среде программирования TIA Portal показал, что этот процесс в современных системах автоматизации максимально упрощён и сводится к заданию параметров функциональных блоков высокоскоростных счётчиков. Такие блоки легко обеспечивают подсчёт импульсов от энкодеров, в том числе с высокой выходной частотой (1000 импульсов за оборот и более).
Среди основных российских производителей энкодеров можно отметить ЗАО «Сенсор» (г. Екатеринбург), НПП «Уралметаллургавтоматика», ЗАО «Уралчер­метавтоматика» (г. Челябинск), СКБ ИС (г. Санкт-Петербург), ЗАО «МЕАНДР» (г. Санкт-Петербург), ООО ПКФ «СТРАУС» (г. Тольятти), ЗАО «МЕГА-К» (г. Калуга). Из зарубежных производителей наиболее известны: Delta Electronics (Тайвань), Omron (Япония), Autonics (Корея), Pepperl+Fuchs (Германия), Siemens (Германия), SICK AG (Германия). ●

Литература

  1. Вульвет Дж. Датчики в цифровых системах. – М. : Энергоиздат, 1981.
  2. Уолт Кестер. Методы практического конструирования при нормировании сигналов с датчиков : пер. с англ. Горш­ков Б.Л. – СПб. : АВТЭКС, 1999.
  3. В.И. Поляков. Выходные сигналы инкрементных преобразователей [Электронный ресурс] // СКБ ИС. – Режим доступа : http://www.skbis.ru/index.php?p=20.
  4. И.В. Петров. Программируемые контроллеры: стандартные языки и приёмы прикладного проектирования. – М. : Солон-Пресс, 2008.
  5. International Standard IEC 61131-3 2013. – Brussels: International Electrotechnical Com­mision, 2012.
  6. Программируемый контроллер Siemens S7-1200 : Системное руководство. – Нюрнберг : Siemens AG, 2009.
  7. Принцип работы инкрементного и абсолютного энкодера [Электронный ресурс] // Режим доступа : http://www.devicesearch.ru/ article/enkodery.
E-mail: nb1979@mail.ru


ПОДПИСАТЬСЯ НА НОВОСТИ

Будьте всегда в курсе самых свежих новостей
и узнавайте первыми о содержании нового номера

Подписка на новости

РЕКОМЕНДУЕМ