Журнал событий

Создавая блок Журнал событий мы резервируем место ПЗУ под запись событий и регламентируем способы записи, чтения или сброса в таблице некоторых событий. Счетчик событий фиксирует нумерацию событий и дату/время, когда они произошли.

Чтобы добавить данный блок нужно в дереве Обозреватель проекта открыть Шаблонные FBD-блоки, ПКМ по Журнал событий –> Добавить. Откроется окно Журнал событий, в котором можно редактировать события (добавлять/удалять, изменять названия событий):

_images/jurnal1.png
_images/jurnal2.png

Событий может быть несколько (например: дверь открыли/закрыли, кондиционер включили/выключили и т.д.), каждое такое событие в журнале имеет свой НОМЕР. В течение некоторого времени эти события могли происходить десятки раз. Каждый раз блок записи делает запись совершенного события, порядковый номер которого – это КОД события.

Блок Журнал событий вытаскиваем ЛКМ в “Панель контроллера”:

_images/jurnal3.png

В режиме чтения данный блок имеет один вход EVENT –. целый беззнак. 4-байт, на который подается код события (нумерация начинается с 0), на выходы FROM и TO устанавливаются начальное и конечное коды событий, записанных в данном блоке; выходы ВРЕМЯ (целый беззнак. 4-байт) и СОБЫТИЕ (целый беззнак. 1-байт) получают, соответственно, время, в которое данное событие произошло и НОМЕР события по журналу:

_images/jurnal4.png

В режиме записи данный блок имеет входы EN (логический, по умолчанию 0) и СОБЫТИЕ (номер события по журналу). При получении на вход EN 1, происходит запись в журнал событий о том, что данное событие произошло в такое-то время. Номер, под которым сделана запись –КОД события. Выходы FROM и TO – это значения начального и конечного кодов записей в журнале событий. По этим выходам можно определять количество произошедших событий:

_images/jurnal5.png

Блок Журнала событий в режиме сброса. При получении 1 на вход EN, происходит обнуление количества событий:

_images/jurnal6.png

Теперь о переменных ПЗУ: в добавленном журнале событий есть строка Стартовый адрес ПЗУ и значение 0 по умолчанию. Так как для 100 событий потребуется 5 байт * 100 + 4 байта = 504 байта (1 байт на запись номера события, 4 байта – на время, +4 байта – на код последнего события), при создании переменных ПЗУ необходимо помнить, что первые 504 адреса (при условии, что событий будет записано не более 100) заняты под журнал событий.

Таблица переменных ПЗУ.

Увидеть, как происходит запись значений переменных ПЗУ в таблицу, можно только в режиме симуляции. Для этого выполним следующие действия: Окна –> Панель инструментов –> ПЗУ:

_images/jurnal7.png

Пример: Данный пример показывает, как происходит запись событий в журнал:

_images/jurnal8.png

Переменная VAR3 имеет значение 3, VAR7 – значение 1. Данные значения являются номерами событий в Журнале событий. На вход EN (передний фронт) – таймер подает попеременно 0 и 1. Когда блок записи Журнала событий получает на вход EN 1 – происходит запись события, имеющего номер 3 или номер 1. Блок чтения Журнала событий, должен вывести Номер события – записанное под Кодом 12 на выход СОБЫТИЕ, и дату/время, в которое оно произошло.– на выход ВРЕМЯ. Так как выход ВРЕМЯ выводит упакованное время, то для прочтения подцепим блок распаковки времени. Чтобы выходы блока отображали значения, выделим их и нажимаем F9.