Тестовая программа. Несанкционированный доступ

Напишем простую программу контроля доступа. В данном уроке мы используем модуль архива, но подход к нему будет немного другим. Основную программу напишем на языке ST для более удобного включения записей в архив.

Итак, для начала добавим модуль архива 1.х: archive_0 и в нем подмодуль 1.0.х: Arch_0. Основную программу назовем test_enter. Создаем переменную Door_alarm, которая будет представлять собой включение/выключение системы контроля доступа. Добавим переменные Door1, Door2, Door3, Door4. Состояние переменной Door_status будет результатом логического «ИЛИ» всех дверей.

Далее создаём функциональный блок на языке ST и назовем его archivator.

Примечание

Для создания функционального блока необходимо левой клавишой мыши нажать в облась проекта и выбрать из списка «Function block». Название блока пишется в «POU Name», в «Language» выбирается язык программирования. Для добавления функционального блока в программу необходимо зажать левой клавишей мыши в область наименования и перетащить в редактируемую область программы, задать название для него.

В данный функциональный блок добавим регистр Arch_0_save_arc с типом данных UINT. Также туда добавим уже созданные переменные Door1, Door2, Door3, Door4. Для каждого статуса дверей создаем переменную для записи в архив - Door1_arc, Door2_arc, Door3_arc, Door4_arc.

Осталось решить с какой цикличностью будет происходить запись в архив. В нашем случае выберем цикл в 2 секунды, то есть если система контроля доступа включена, начинается запись в архив данных о статусе дверей с периодичностью в 2 секунды. Для этого в программе test_enter добавим функциональный блок STRUCT_REAL_TIME и выберем оттуда только SEC_TIME. Даем наименование функциональному блоку - real_time и добавим переменную seconds в формате USINT. Далее с помощью функционального блока MOD вычисляем кратность переменной seconds к 2 и переписываем его. Функциональный блок archivator добавим в основную программу и даем название arch. Реализация программы представлена на рисунках ниже.

../_images/22.png

Основная программа test_enter

../_images/23.png

Функциональный блок archivator

../_images/24.png

Окно регистров архива

Проверка программы: включаем систему контроля с помощью DOOR_ALARM, стартует запись в архив с цикличностью 2 секунды. «Открываем» и «закрываем» любые двери, информация о статусе дверей записывается в архив.

../_images/gif9.gif

Реализация программы

Результат открытия/закрытия дверей по времени можно увидеть на графике архивов.

../_images/25.png

Графики архива