Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

CTU - счетчик вверх


 
Назначение.
Функциональный блок СTU представляет собой счетчик, значения которого увеличиваются на единицу в каждом цикле работы контроллера. Может использоваться совместно с функциональным блоком RF_TRIG для подсчета количества изменений булевского значения на противоположное: true → false или false → true.
 
Состав структурной переменной.
Переменная со структурным типом СTU будет добавлена в локальный словарь автоматически при добавлении блока в редактор.
Описание алгоритма.
На вход PV подается целое число (тип данных INTEGER), которое определяет максимальное значение счетчика. На выход CV выводится текущее значение счетчика. Если PV<0, на выход CV после запуска счетчика выводится значение 0.
Для сброса значения счетчика на вход RESET подается дискретный сигнал TRUE, при этом текущее значение счетчика CV=0. Пока RESET=TRUE, значение счетчика не изменяется, вход CU игнорируется, а выход СV=0. При RESET=FALSE, работой счетчика управляет вход CU.
Для запуска счетчика на вход CU подается дискретный сигнал TRUE. После чего в каждом цикле работы контроллера значение счетчика будет увеличиваться на единицу и передаваться на выход CV. При CU=FALSE, работа счетчика останавливается, а на выходе CV сохраняется его последнее значение.
Счетчик закончит работу, когда его текущее значение будет равно максимальному (CV=PV).
Выход Q=TRUE, если CV=PV (текущее значение равно максимальному) или PV<=0 (максимальное значение меньше или равно 0). В иных случаях выход Q=FALSE.
 
Пример синтаксиса на языке ST.
//вызов функционального блока СTU
Block.CTU(CU, RESET, PV);
//чтение текущего значения возрастающего счетчика,
//значение увеличивается на 1 в каждом цикле контроллера
CV := Block.CV;
//чтение признака завершения отсчета:
//Q=true, если CV=PV или PV<=0
//Q=false, в остальных случаях    
Q := Block.Q;  
 
Использование с блоком RF_TRIG.
Функциональный блок CTU не определяет передний и задний фронты входного дискретного сигнала CU. Поэтому, для создания импульсного счетчика на вход CU необходимо подавать сигнал с выхода блока RF_TRIG, который выделяет передний фронт дискретного сигнала.
На следующем изображении приведен пример соединения блоков, когда содержимое счетчика в блоке CTU будет увеличиваться на 1 по переднему фронту сигнала "Command" (FALSE → TRUE).
Если установить инверсию на входе CLK блока RF_TRIG, содержимое счетчика в блоке СTU будет увеличиваться по заднему фронту дискретного сигнала "Command" (TRUE → FALSE).