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

CTD - счетчик вниз


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