Счетчик — это инструкция ПЛК, которая либо увеличивает (считает вверх), либо уменьшает (считает вниз) значение целого числа при появлении запроса на переход бита от 0 к 1 («ложь» на «истина»).
Инструкции счетчика бывают трех основных типов:
- счетчики вверх,
- счетчики вниз и
- счетчики вверх/вниз.
Команды счетчиков «вверх» и «вниз» имеют одиночные входы для запуска счетчиков, тогда как счетчики «вверх/вниз» имеют два триггерных входа: один для увеличения счетчика, а другой для уменьшения счетчика.
Инструкции счетчика ПЛК
Чтобы проиллюстрировать использование команды счетчика, мы проанализируем систему на базе ПЛК, предназначенную для подсчета объектов, проходящих по конвейерной ленте:
В этой системе непрерывный (непрерывный) световой луч заставляет датчик освещенности замыкать выходной контакт, подавая питание на дискретный канал IN4.
Когда объект на конвейерной ленте прерывает световой луч от источника к датчику, контакт датчика размыкается, прерывая подачу питания на вход IN4.
Кнопочный переключатель, подключенный для активации дискретного входа IN5, при нажатии будет служить ручным «обнулением» значения счета.
Индикаторная лампа, подключенная к одному из каналов дискретного вывода, будет служить индикатором превышения значения счетчика объектов некоторого заданного предела.
Теперь мы проанализируем простую программу лестничной диаграммы, предназначенную для увеличения команды счетчика каждый раз, когда световой луч прерывается:
Эта конкретная команда счетчика (CTU) является инкрементным счетчиком, что означает, что она ведет счет «вверх» при каждом переходе из выключенного состояния во включенное на свой вход «CU».
Нормально закрытый виртуальный контакт (объект датчика IN) обычно удерживается в «разомкнутом» состоянии, когда световой луч непрерывен, поскольку датчик удерживает этот дискретный входной канал под напряжением, пока луч непрерывен.
Когда луч прерывается проходящим по конвейерной ленте объектом, входной канал обесточивается, в результате чего объект датчика виртуального контакта IN «замыкается» и отправляет виртуальную мощность на вход «CU» инструкции счетчика.
Это увеличивает счетчик так же, как передний край объекта разрывает луч. Второй вход блока инструкций счетчика («R») является входом сброса, на который поступает виртуальная энергия от контакта IN, переключателя сброса при каждом нажатии кнопки сброса. Если этот вход активирован, счетчик немедленно сбрасывает свое текущее значение (CV) на ноль.
Индикация состояния отображается в этой программе лестничной диаграммы, при этом заданное значение счетчика (PV) 25 и текущее значение счетчика (CV) 0 показаны синим цветом.
Заданное значение — это то, что запрограммировано в инструкции счетчика перед вводом системы в эксплуатацию, и оно служит порогом для активации выхода счетчика (Q), который в этом случае включает индикаторную лампу счета (катушка OUT отсчетов достигла).
Согласно стандарту программирования IEC 61131-3, этот выход счетчика должен активироваться всякий раз, когда текущее значение равно или превышает заданное значение (Q активен, если CV ≥ PV).
Это состояние той же программы после прохождения тридцати объектов мимо датчика на конвейере.
Как видите, текущее значение счетчика увеличилось до 30, превысив заданное значение и активировав дискретный выход:
В конце концов, мы не заботились о поддержании точного общего количества объектов после 25, а просто хотели, чтобы программа указывала, когда мимо прошло 25 объектов.
мы также могли бы использовать команду обратного счетчика, предварительно установленную на значение 25, которая включает выходную катушку, когда счетчик достигает нуля:
Здесь вход «нагрузка» приводит к тому, что текущее значение счетчика становится равным заданному значению (25) при активации.
С каждым полученным импульсом датчика инструкция счетчика уменьшается. Когда он достигает нуля, активируется выход Q.
Потенциальная проблема в любой версии этой системы подсчета объектов заключается в том, что ПЛК не может различать движение вперед и назад на конвейерной ленте.
Если, например, конвейерная лента когда-либо поменяет направление, датчик продолжит считать объекты, которые уже прошли мимо (в прямом направлении), когда эти объекты отступят на ленту.
Это будет проблемой, поскольку система будет «думать», что по ленте прошло больше объектов (что указывает на большую производительность), чем на самом деле.
Одним из решений этой проблемы является использование реверсивного счетчика, способного как увеличивать (подсчитывать в сторону увеличения), так и уменьшать (отсчитывать в обратном направлении), и оснастить этот счетчик двумя датчиками светового луча, способными определять направление движения.
Если два световых луча ориентированы параллельно друг другу, ближе ширины самого узкого объекта, проходящего по конвейерной ленте, у нас будет достаточно информации, чтобы определить направление движения объекта:
Это называется синхронизацией квадратурного сигнала, поскольку два импульсных сигнала находятся на расстоянии примерно 90 градусов (одна четверть периода) друг от друга по фазе.
Мы можем использовать эти два сдвинутых по фазе сигнала для увеличения или уменьшения команды реверсивного счетчика, в зависимости от того, какой импульс опережает, а какой отстает.
Здесь показана программа ПЛК Ladder Diagram, предназначенная для интерпретации квадратурных импульсных сигналов, в которой используются контакты с отрицательным переходом, а также стандартные контакты:
Счетчик будет увеличиваться (отсчитывать вверх), когда датчик B обесточивается, только если датчик A уже находится в обесточенном состоянии (т. е. световой луч A прерывается раньше B).
Счетчик будет уменьшаться (обратный отсчет) при обесточивании датчика A только в том случае, если датчик B уже находится в обесточенном состоянии (т. е. световой луч B прерывается раньше A).
Обратите внимание, что реверсивный счетчик имеет как вход «сброс» (R), так и вход «загрузка» («LD») для форсирования текущего значения.
Активация входа сброса приводит к обнулению текущего значения счетчика (CV), как мы видели в случае с инструкцией счетчика «вверх».
Затем активация входа нагрузки переводит текущее значение счетчика в заданное значение (PV), как мы видели в случае с инструкцией счетчика «вниз».
В случае реверсивного счетчика имеется два выхода Q: QU (выход вверх), чтобы указать, когда текущее значение равно или больше заданного значения, и QD (выход вниз), чтобы указать, когда текущее значение значение равно или меньше нуля.
Обратите внимание, как текущее значение (CV) каждого отображаемого счетчика связано с собственным именем тега, в данном случае подсчитываются части.
Целое число текущего значения счетчика (CV) является переменной в памяти ПЛК, точно так же, как логические значения, такие как входной датчик A и сброс переключателя IN, и может быть точно так же связано с именем тега или символическим адресом.
Это позволяет другим инструкциям в программе ПЛК считывать (а иногда и записывать!) значения из этой ячейки памяти и в нее.