ФБ работы со временем и счётчики

ФБ №23 «Системное время в UNIX-формате»

ФБ выдаёт на выход «Время (UNIX)» системное время контроллера, которое он берёт из микросхемы часов реального времени. Формат UNIX – uint32 число равное количеству секунд, прошедшему с 1 января 1970 года.

Также ФБ имеет битовый выход «Время синхронизировано», «0» на котором означает что с момента включения контроллера, его системное время ещё ни разу не было синхронизировано командами от ПО верхнего уровня либо ФБ «Синхронизатор времени».

Вх/Вых Имя Тип Назначение
Выход Время (UNIX) uint32 Секунды с 01.01.1970
Выход Время синхронизировано bit «0» — время ни разу не синхронизировалось

ФБ №44 «Синхронизатор времени»

ФБ нужен для синхронизации системного времени контроллера через адресное пространство ОЗУ ФБ. Для синхронизации необходимо подать на вход «Время (UNIX)» текущее время, предварительно время в не UNIX формате может быть сконвертировано ФБ-конвертером времени. Далее следует на битовый вход «Синхронизировать» подать положительный импульс. ФБ инициирует запись в микросхему часов реального времени и установит системный флаг «время синхронизировано».

Вх/Вых Имя Тип Назначение
Вход Синхронизировать bit Положительный импульс
Вход Время (UNIX) uint32

ФБ №45 «Конвертер времени из UNIX-формата» и ФБ №46 «Конвертер времени в UNIX-формат»

ФБ необходимы для конвертирования времени между 2 представлениями (UNIX и отдельными значениями текущего дня, месяца, года (год отсчитывается от 1980 г.), часа, минуты и секунды).

Вх/Вых Имя Тип Назначение
Вход Время (UNIX) uint32
Выход Секунд, Минут, Часов, День, Месяц, Год uint8 Год — от 1980 г.

ФБ №58 «Первая секунда исполнения конфигурации»

ФБ имеет 1 битовый выход, который = «1» в первую секунду исполнения конфигурации, далее = «0».


ФБ №59 «Секунд с начала исполнения конфигурации»

ФБ имеет 1 time32/uint32 выход, на который выдаёт количество секунд, прошедших с момента начала исполнения конфигурации.


ФБ №37 «Счётчик»

На вход «Value» ФБ «Счётчик» может быть подано любое увеличивающееся значение вещественного или целочисленного типа. Например, текущее время в формате UNIX, различные внешние или внутренние программные счётчики.

Счёт ведётся пока вход «Enable» = «1». Когда «Enable» = «0», счёт приостанавливается. Вход «Reset» сбрасывает значение счётчика.

Переменные «Enable_Old» и «Value_Old» используются для запоминания прошлых значений входов «Enable» и «Value».

Вх/Вых Имя Тип Назначение
Вход Enable bit Счёт при «1»
Вход Reset bit Сброс
Вход Value uint8/uint16/uint32/float32 Увеличивающееся значение
Внутр. Enable_Old/Value_Old bit / как Value
Выход Счётчик как Value Накопленное приращение

ФБ №28 «Длительность импульса (в тактах)»

Требования к типам входов и выходов и их количеству:


ФБ № 89 «Счетчик входных импульсов»

ФБ инкрементирует счетчик по каждому возрастающему фронту сигнала на входе Input и выводит на регистр выхода Output.

Блок-схема ФБ «Счетчик входных импульсов»:

Вх/Вых Имя Тип Назначение
Вход Enable bit Разрешение тактирования
Вход Reset bit Обнуление счётчика
Вход Input bit Тактовый сигнал
Выход Output uint8/16/32 Счётчик фронтов

ФБ №81 «Весовой импульс с счетчика»

Вх/Вых Имя Тип Назначение
Вход Enable bit Разрешение счёта
Вход Reset bit Обнуление
Вход Value int8/16/32/float32 Увеличивающееся значение
Вход MaxIncrement как Value Уставка макс. изменения за такт; 0 — контроль отключён
Внутр. Enable_Old, Value_Old bit / как Value
Выход Counter как Value Накопленный счётчик

ФБ №61 «Первое исполнение ФБ логики»

Выход Out – признак первого такта исполнения ФБ.


ФБ №24 «Системное время: секунд от начала минуты»

ФБ подает на выход число секунд от начала минуты.


ФБ №26 «Системное время: секунд от начала суток»

ФБ подает на выход число секунд от начала суток.


ФБ №25 «Системное время: Секунд от начала часа»

ФБ подает на выход число секунд от начала часа.


ФБ №78 «Счетчик с ограничением по максимальному приращению»

На вход «Value» может быть подано любое увеличивающееся значение вещественного или целочисленного типа. Например, текущее время в формате UNIX, различные внешние или внутренние программные счётчики.

Счёт ведётся пока вход «Enable» = «1», а значение выхода «Counter» меньше либо равно значению входа «Maxincrement». Когда «Enable» = «0» либо значение выхода «Counter» достигло значения входа «Maxincrement», счёт приостанавливается. Вход «Reset» сбрасывает значение счётчика.

Вх/Вых Имя Тип Назначение
Вход Enable, Reset bit
Вход Value uint8/16/32/float32 Увеличивающееся значение
Вход Maxincrement как Value Предел приращения
Выход Counter как Value Счёт приращений, счёт останавливается при достижении Maxincrement

ФБ №27 «Таймер: секунд от начала периода»

Если на вход Reset подается 1, на выход PeriodTime выводится 0. Как только на вход Reset подается 0, на выход PeriodTime выводится количество секунд до того как на вход Reset поступит 1.