Журнал событий ^^^^^^^^^^^^^^ Создавая блок :guilabel:`Журнал событий` мы резервируем место ПЗУ под запись событий и регламентируем способы записи, чтения или сброса в таблице некоторых событий. Счетчик событий фиксирует нумерацию событий и дату/время, когда они произошли. Чтобы добавить данный блок нужно в дереве :guilabel:`Обозреватель проекта` открыть ``Шаблонные FBD-блоки``, ПКМ по ``Журнал событий`` –> ``Добавить``. Откроется окно ``Журнал событий``, в котором можно редактировать события (добавлять/удалять, изменять названия событий): .. figure:: ../../zwb/lib/jurnal1.png :align: center .. figure:: ../../zwb/lib/jurnal2.png :align: center Событий может быть несколько (например: дверь открыли/закрыли, кондиционер включили/выключили и т.д.), каждое такое событие в журнале имеет свой **НОМЕР**. В течение некоторого времени эти события могли происходить десятки раз. Каждый раз блок записи делает запись совершенного события, порядковый номер которого – это **КОД** события. Блок :guilabel:`Журнал событий` вытаскиваем ЛКМ в "Панель контроллера": .. figure:: ../../zwb/lib/jurnal3.png :align: center В режиме чтения данный блок имеет один вход EVENT –. целый беззнак. 4-байт, на который подается код события (нумерация начинается с 0), на выходы FROM и TO устанавливаются начальное и конечное коды событий, записанных в данном блоке; выходы ВРЕМЯ (целый беззнак. 4-байт) и СОБЫТИЕ (целый беззнак. 1-байт) получают, соответственно, время, в которое данное событие произошло и НОМЕР события по журналу: .. figure:: ../../zwb/lib/jurnal4.png :align: center В режиме записи данный блок имеет входы EN (логический, по умолчанию 0) и СОБЫТИЕ (номер события по журналу). При получении на вход EN 1, происходит запись в журнал событий о том, что данное событие произошло в такое-то время. Номер, под которым сделана запись –КОД события. Выходы FROM и TO – это значения начального и конечного кодов записей в журнале событий. По этим выходам можно определять количество произошедших событий: .. figure:: ../../zwb/lib/jurnal5.png :align: center Блок Журнала событий в режиме сброса. При получении 1 на вход EN, происходит обнуление количества событий: .. figure:: ../../zwb/lib/jurnal6.png :align: center Теперь о переменных ПЗУ: в добавленном журнале событий есть строка **Стартовый адрес ПЗУ** и значение 0 по умолчанию. Так как для 100 событий потребуется 5 байт * 100 + 4 байта = 504 байта (1 байт на запись номера события, 4 байта – на время, +4 байта – на код последнего события), при создании переменных ПЗУ необходимо помнить, что первые 504 адреса (при условии, что событий будет записано не более 100) заняты под журнал событий. **Таблица переменных ПЗУ.** Увидеть, как происходит запись значений переменных ПЗУ в таблицу, можно только в режиме симуляции. Для этого выполним следующие действия: :guilabel:`Окна` –> ``Панель инструментов`` –> ``ПЗУ``: .. figure:: ../../zwb/lib/jurnal7.png :align: center **Пример:** Данный пример показывает, как происходит запись событий в журнал: .. figure:: ../../zwb/lib/jurnal8.png :align: center Переменная VAR3 имеет значение 3, VAR7 – значение 1. Данные значения являются номерами событий в Журнале событий. На вход EN (передний фронт) – таймер подает попеременно 0 и 1. Когда блок записи Журнала событий получает на вход EN 1 – происходит запись события, имеющего номер 3 или номер 1. Блок чтения Журнала событий, должен вывести Номер события – записанное под Кодом 12 на выход СОБЫТИЕ, и дату/время, в которое оно произошло.– на выход ВРЕМЯ. Так как выход ВРЕМЯ выводит упакованное время, то для прочтения подцепим блок распаковки времени. Чтобы выходы блока отображали значения, выделим их и нажимаем :guilabel:`F9`.