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

Назначение.
Функциональный блок BLINC формирует последовательность одинаковых импульсов с заданной длительностью и периодом повторения. Может применяться для периодического включения оборудования (двигателя, нагревателя, обеспечения мигающей сигнализации и т.п.).
Входные параметры.
|
Название
|
Тип данных
|
Описание
|
|
RUN
|
BOOLEAN
|
|
|
Т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;
|
