Вы находитесь на странице: 1из 3

S7-Facility Class Counter 0.2.

FB22/DB22 ("Class Counter"/"DB Counter")


FB22/DB22 ("Class Counter"/"DB Counter") – Блоки, реализующие класс для
универсальной обработки счетчиков. FB22 реализует логику обработки, а DB22 –
хранение данных массива объектов.
Логика работы FB22 представлена на следующей диаграме:

Параметры, использующиеся в каждом объекте Counter:


Use Включить объект
Release Включить счетчик
Result Счетчик достиг уставки
Reset Обнулить счетчик
Pulse Входной мпус
Pulse_Old Память входного импульса
Release_Old Память включения
Error Флаг ошибки
Owner Объект, управляющий данным в текущий момент времени

1/3
S7-Facility Class Counter 0.2.0

In_Memory_Type Область памяти: 1=I, 2=M, 3=DB, 4=Q Memory


In_DB_No DB№, если чтение происходит из DB-Memory
In_Byte, In_Bit Адрес внутри выбраной области памяти
Counter_Type 0-Импульсный 1-Интегральный 2-Вычитающий+ 3-
Вычитающий-
Value Текущее значение счетчика
Default_Value Значение счетчика по умолчанию
Actual_Value Входное значение
Pulse_Increment Вес входного импульса
Started_Value Память начального значения для вычитающего счетчика
Factor Коэффициент усиления для интегрирующего счетчика
SP Уставка счетчика
Release_Mem_Type Тип памяти для получения значения Release
Release_DB_No Номер DB для получения значения Release
Release_Byte, Адрес внутри выбраной области памяти
Release_Bit
Reset_Mem_Type Тип памяти для получения значения Reset
Reset_DB_No Номер DB для получения значения Reset
Reset_Byte, Адрес внутри выбраной области памяти
Reset_Bit

Таким образом, установив Use в True, задав Release_Mem_Type, Release_Byte,


Release_Bit и, если необходимо, Release_DB_No, аналогично, параметры
Reset_Mem_Type, Reset_Byte, Reset_Bit, Reset_DB_No, In_Memory_Type, In_DB_No,
In_Byte и In_Bit, а, также, задав Counter_Type, Default_Value, Pulse_Increment и SP мы
сможем управлять счетчиком при помощи битов Release и Reset, а также, считывая
значения бита Result, отследить текущее состояние счетчика. Кроме того, из
переменной Value всегда можно узнать текущее значение счетчика.

Варианты типа счетчика (Counter_Type):


0. Импульсный
Сумматор импульсов. Задаются In_Memory_Type, In_DB_No, In_Byte и In_Bit.
Из указанного адреса получается значение флага Pulse. При его позитивном
фронте значение переменной Value инкрементируется на значение
переменной Pulse_Increment.
Пример — импульсный расходомер.

1. Интегральной
Интегратор аналогово значения. Задаются In_Memory_Type, In_DB_No и
In_Byte. Из указанного адреса получается значение переменной Actual_Value в
формате Real, интеграл которого с коэффициентом Factor сохраняется в
переменной Value.
Пример — аналоговый расходомер.

2. Вычитающий+
Разница между текущим и стартовым значениями переменной Actual_Value.
Задаются In_Memory_Type, In_DB_No и In_Byte. Из указанного адреса

2/3
S7-Facility Class Counter 0.2.0

получается значение переменной Actual_Value в формате Real. При


прохождении положительного фронта флага Release значение переменной
Actual_Value запоминается в переменной Started_Value. После этого значение
переменной Value вычитается как разница между Actual_Value и Started_Value.
Пример — наполнение емкости по уровню.

3. Вычитающий-
Разница между стартовым и текущим значениями переменной Actual_Value.
Задаются In_Memory_Type, In_DB_No и In_Byte. Из указанного адреса
получается значение переменной Actual_Value в формате Real. При
прохождении положительного фронта флага Release значение переменной
Actual_Value запоминается в переменной Started_Value. После этого значение
переменной Value вычитается как разница между Started_Value и
Actual_Value.
Пример — опустошение емкости по уровню.

Для загрузки из Loader'а необходимо установить следующие переменные внутри


блока DB1 “DB_Loader”:
• Class[..].DB_No = 22
• Class[..].Item_Lengh = 70
• Class[..].Items_Start = 0
• Class[..].Items_Quantity = количеству объектов в DB.
• Class[..].FB_1.FB_No = 22
• Class[..].FB_1.FB_Shift = 0
• Class[..].FB_1.MAX = TRUE

3/3

Вам также может понравиться