Группа "Триггеры, регистры и счетчики"

Top  Previous  Next

 

Триггеры (триггерные системы) - класс блоков, обладающих способностью длительно находиться в одном из двух устойчивых состояний и чередовать их под воздействием внешних сигналов. Каждое состояние триггера легко распознаётся по выходным сигналам.
 
 Отличительной особенностью двоичного триггера как функционального устройства является свойство запоминания двоичной информации. Под памятью триггера подразумевают способность оставаться в одном из двух состояний и после прекращения действия переключающего сигнала. Приняв одно из состояний за «1», а другое за «0», можно считать, что триггер хранит (помнит) один разряд числа, записанного в двоичном коде.
 
 Отличительной особенностью аналогового триггера (многоразрядного регистра) как функционального устройства является свойство запоминания аналоговой информации. Под памятью триггера подразумевают способность запоминать своё последнее состояние и после прекращения действия переключающего сигнала. Таким образом, можно считать, что триггер хранит (помнит) аналоговую величину.
 
 Все блоки триггеров НЕ являются энергонезависимыми! Это значит, что при выключении питания все блоки перейдут в исходное, нулевое, состояние!

 

RS

Описание. RS триггер. RS триггер - это триггер, который сохраняет своё предыдущее состояние при нулевых входах и меняет своё выходное состояние при подаче на один из его входов единицы. Вход сброса R имеет приоритет перед входом установки S. Выход ~Q является противоположностью выхода Q (инверсным выходом).

Таблица истинности:

S

R

Q

~Q

0

0

Q

~Q

0

1

0

1

1

0

1

0

1

1

0

1

 

Примеры применения:

Схема, запоминающая последнюю нажатую кнопку, ПУСК или СТОП. Схема имеет выходной сигнал, равный единице, если была нажата кнопка ПУСК и ноль, если была нажата кнопка СТОП. Исходное состояние схемы после включения питания контроллера - СТОП (нулевое):

 


D, REG (int), REG (long), REG (real)

Описание. Прозрачный D-триггер. D-триггеры также называют триггерами задержки (от англ. Delay).

D-триггер имеет два основных входа: C - вход синхронизации и D - вход данных. Вход R - обычный сброс триггера, имеет приоритет над всеми остальными входами. Выход ~Q является противоположностью выхода Q (инверсным выходом).

Прозрачные D-триггеры в основном используется для реализации защёлки. Например, для запоминания состояния дискретного или аналогового сигнала в определённый момент времени, в том числе и при возникновении аварийной ситуации.

Во время действия единичного сигнала на входе C триггер пропускает сигнал со входа D на свой выход без изменений. При переходе сигнала на входе C в ноль, состояние входа D запоминается и непрерывно отображается на выходе.

Таблица истинности:

С

R

D

Q

-

1

-

0

0

0

0

Q

0

0

1

Q

1

0

0

0

1

0

1

1


^D, ^REG (int), ^REG (long), ^REG (real)

Описание. Непрозрачный D-триггер. D-триггеры также называют триггерами задержки (от англ. Delay).

D-триггер имеет два основных входа: ^ - вход синхронизации и D - вход данных. Вход R - обычный сброс триггера, имеет приоритет над всеми остальными входами. Выход ~Q является противоположностью выхода Q (инверсным выходом).

Непрозрачные D-триггеры в основном используется для реализации схем переключения. Например, для преобразования последовательных нажатий кнопки в некоторый двустабильный сигнал: Пуск/Стоп, Ручной/Автоматический и так далее.

Во время появления единичного сигнала на входе ^ состояние входа D запоминается и непрерывно отображается на выходе триггера.

Таблица истинности:

^

R

D

Q

-

1

-

0

0

0

0

Q

0

0

1

Q

1

0

0

Q

1

0

1

Q

0

0

0

0

1

1

 

Примеры применения:

Схема, преобразующие последовательные нажатия единственной кнопки в однозначное состояние, единичное (Работа) или нулевое (Останов). Исходное состояние схемы после включения питания контроллера - Останов (нулевое):

 


Сдвиговый регистр - последовательное логическое устройство, используемое для хранения n-разрядных двоичных чисел и выполнения преобразований над ними.
 
 Регистр представляет собой упорядоченную последовательность триггеров, обычно D-триггеров, число которых соответствует числу разрядов в слове (пример внутренней схемы четырёхразрядного сдвигового регистра):
 
 
 
Типичными являются следующие операции:
 - приём слова в регистр
 - передача слова из регистра
 - сдвиг слова влево или вправо на заданное число разрядов
 - преобразование последовательного кода слова в параллельный и обратно
 - установка регистра в начальное состояние (сброс)
 
Типичными применениями регистров служат такие функции, как:
 - двоичное умножение или деление
 - кодирование, раскодирование и обработка (выделение) сигналов
 - расчёт двоичных функций (например, подсчёт CRC)
 - кольцевое перемещение двоичных слов (обычно для управления шаговыми двигателями)

 

Shift (16)

Описание. Универсальный 16-разрядный сдвиговый регистр.

Выполняемые операции: Сдвиг влево или вправо на произвольное число разрядов, преобразование последовательного кода в параллельный и обратно.

Работа регистра разрешается или запрещается путем подачи 1 или 0 на вход Enable.

Входы обрабатываются в следующем порядке приоритета:

Reset        - обнуление регистра
Load        - загрузка в регистр 16-разрядного кода со входа Din
Right        - направление сдвига 0 - влево, 1 - вправо
Shift        - количество сдвигаемых разрядов
Sin                - значение, "вдвигается" в освобождаемые разряды
Каждый сдвиг осуществляется по фронту сигнала на входе ^

16-разрядный результат сдвига подаётся на выход DOut

Значение последнего "выдвинутого" разряда отражается на выходе SOut


SHL (16), SHR (16)

Описание.

SHL(16) - Побитный сдвиг операнда in влево с дополнением нулями справа:

SHR(16) - Побитный сдвиг операнда in вправо с дополнением нулями слева:

Сдвиг осуществляется на количество разрядов, указанных на входе shift.

 

Примеры применения:

Одно из наиболее частых применений регистров сдвига - умножение или деление на степени двойки.  Т.е. сдвигом можно умножить и разделить любое число на 1, 2, 4, 8, 16, 32, 64 и так далее. Операция сдвига выполняется в сотни раз быстрее, чем обычное целочисленное деление или умножение, именно этот факт определяет популярность данного метода. Деление выполняется следующим образом: на вход in подают делимое, а на входе shift задают степень делителя (0 для 20, 1 для 21, два для 22 и так далее). Ниже приведен пример деления числа 4242 на восемь:

 

Умножение числа 42 на два:

 

Выделение старшего байта из слова (другими словами, деление на 256), младший байт выделяется блоком AND(16):

 


ROL (16), ROR (16)

Описание.

ROL(16) - Циклический сдвиг операнда in влево на shift бит:

ROR(16) - Циклический сдвиг операнда in вправо на shift бит:

Сдвиг осуществляется на количество разрядов, указанных на входе shift.


CTU (16)

Описание. Инкрементирующий 16-разрядный счетчик.

Временная диаграмма:

 

Обратите внимание на особенность работы CTU. Сигнал QU появился на следующий тик после достижения DO значения DI даже при отсутствии 1 на входе "+". Эта особенность отсутствует в CNTR (16)

Сигнал QU сбрасывается входом Reset, но не самостоятельно!

 

В SMLogix десятичные числа отображаются со знаком (в так называемом "дополнительном коде"). Т.е. числа отображаются в диапазоне от -32768 до 32767. Если ввести на вход DI число "64000", то в SMLogix будет отображено число "-1536". Тем не менее, счётчик всё равно будет считать от 0 до 64000, т.к. он не учитывает выводимый на экран знак. Если вам некомфортно наблюдать счёт отрицательных чисел, можно переключить отображение входа DI и выхода DO в режим отображения шеснадцатиричных чисел

 

Примеры применения:

Одно из наиболее частых применений счётчиков - выдержка времени. Для удобства задания выдержки существует блок TimeToTick: он выполняет преобразование интервала, заданного в секундах, во "внутреннее" время контроллера, которое счётчик затем и отсчитывает:

 


CTD (16)

Описание. Декрементирующий 16-разрядный счетчик.

 

Обратите внимание на особенность работы CTD. Сигнал QD появился на следующий тик после достижения DO значения 0 даже при отсутствии 1 на входе "-". Эта особенность отсутствует в CNTR (16)

Сигнал QD сбрасывается входом Load, но не самостоятельно!

 

В SMLogix десятичные числа отображаются со знаком (в так называемом "дополнительном коде"). Т.е. числа отображаются в диапазоне от -32768 до 32767. Если ввести на вход DI число "64000", то в SMLogix будет отображено число "-1536". Тем не менее, счётчик всё равно будет считать от 0 до 64000, т.к. он не учитывает выводимый на экран знак. Если вам некомфортно наблюдать счёт отрицательных чисел, можно переключить отображение входа DI и выхода DO в режим отображения шеснадцатиричных чисел


CTUD (16)

Описание. Счетчик, совмещающий возможности и особенности работы CTU (16) и CTD (16) одновременно. Вход Reset имеет приоритет перед входом Load.


CNTR (16)

Описание. Универсальный 16-разрядный счетчик с полным набором выходных состояний: флаги границ диапазона счёта, флаги переноса.

Временные диаграммы.

Работа с инкрементом.

Работа с декрементом.

 

Вход Reset имеет приоритет перед входом Load.

 

Примеры применения:

Иногда случается, что разрядности счётчика не хватает.  В этом случае используют каскадирование, т.е. последовательное приоритетное включение нескольких счётчиков.  Таким образом, если один счётчик считает до 32767, то пара уже будет считать до 32767+32767. Три счётчика в три раза больше, четыре в четыре и так далее. Границу счёта можно разделить между обоими счётчиками в любой пропорции. Если считать нужно до 50000, то всё равно, счётчикам заданы значения "32767 и 17233" или "25000 и 25000". Результат счёта будет идентичен.
 
Пример схемы каскадного счётчика, считающего до 20 (10+10):

 

 

 

Обратите внимание на особенность работы блоков счетчиков.  Флаги QU и QD сбрасываются входами Reset или Load, но не сами. Например, если DI=0, то QU=1, но если затем DI=1000  и '+'=1, то счетчик  пойдёт считать, держа при этом QU=1.