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

BLINK - мультивибратор


 
 
Назначение.
Функциональный блок BLINC формирует последовательность одинаковых импульсов с заданной длительностью и периодом повторения. Может применяться для периодического включения оборудования (двигателя, нагревателя, обеспечения мигающей сигнализации и т.п.).
 
Входные параметры.
Название
Тип данных
Описание
RUN
BOOLEAN
  • RUN=TRUE - запуск блока на выполнение;
  • RUN=FALSE - остановить выполнение, при этом импульс сбрасывается (Q=FALSE), время на выходах P и T обнуляется.
Тpls
INTEGER
Период времени в миллисекундах, в течение которого выводится импульс (выход Q=TRUE).
Тprd
INTEGER
Период времени в миллисекундах, по истечении которого работа блока будет перезапущена.
 Фактическая длительность импульсов, также как и период повторения кратны циклу контроллера. Если Тpls<=0, то Q=FALSE. Если Tprd < Tpls или Tprd <= цикла контроллера, то Q всегда равен TRUE.
 
Выходные параметры.
Название
Тип данных
Описание
Q
BOOLEAN
Выход импульса
P
INTEGER
Текущее время импульса - количество миллисекунд с момента запуска импульса. Когда P=Tpls, импульс сбрасывается (Q=FALSE), текущее время импульса обнуляется (P=0), а на выход T продолжает выводиться текущее время периода.
T
INTEGER
Текущее время периода - количество миллисекунд с момента запуска импульса. Когда T=Tprd, работа блока перезапускается.
 
Пример работы блока.
Добавьте в редактор FBD/LD функциональный блок PSET, укажите входные параметры и запустите его на выполнение. На следующем изображении приведен пример, когда время вывода импульса истекло, но время периода не достигло заданного значения.
 
 
 
Процесс изменения выходного сигнала Q представлен в виде графика на следующем изображении.
 
 
Пример синтаксиса на языке ST.
//вызов функционального блока BLINK
Block.BLINK(true, 2000, 3000);
//чтение времени с начала импульса
P := Block.P; 
//выходной импульс Q=true, пока P < 2000
Q := Block.Q; 
//чтение времени периода с начала импульса, если T = 3000, блок перезапускается
T1 := Block.T;