Создание архива. Структура архива. Добавление пользовательских переменных. Расчет глубины архивации =================================================================================================== Архивы являются неотъемлемой частью большинства проектов. В Beremiz имеется возможность создания архивов с добавлением пользовательских переменных. Рассмотрим более подробно данный процесс. Для добавления в структуру проекта необходимо щелкнуть правой кнопкой мыши в область дерева проекта и нажать «Archive support». Далее необходимо подвести курсор к созданной ветке «archive», щелкнуть левой клавишей мыши и выбрать пункт «Add Arch», как показано ниже: .. figure:: img/g1.gif :align: center *Добавление модуля архива в проект* Рассмотрим более детально окно конфигурации модуля архива. .. figure:: img/1.png :width: 600 :align: center *Окно параметров архива* .. csv-table:: Описание archive_manage :header: "Имя", "Тип данных", "Описание" :widths: 10, 3, 20 "Arch_save_arc", "UINT", "Триггер для записи данных в архив: при изменении из 0 в 1 данные записываются" "Arch_arc_for_read", "UDINT", "Данные архива из буфера, представленные для чтения" "Arch_id_number", "UINT", "Уникальный идентификатор архива" "Arch_body_len", "UINT", "Размер архива с учетом заголовка и пользовательских данных" "Arch_unix_time_last_arc", "UDINT", "Время записи последних данных в архив в формате UNIX" "Arch_arcs_number", "UDINT", "Количество архивов, доступных для чтения" "Arch_last_readed", "UDINT", "Номер последнего прочитанного архива" "Arch_first_available", "UDINT", "Номер первого архива, доступного для чтения" Последующие данные являются структурой самого архива. .. csv-table:: Описание структуры archive_header_data :header: "Имя", "Тип данных", "Описание" :widths: 10, 3, 20 "Arch_id_number_data", "UINT", "Номер архива данных [0:6]" "Arch_header_len_data", "UINT", "Длина заголовка архива" "Arch_body_len_data", "UINT", "Длина всего архива (header_len + body_len)" "Arch_sec_data", "USINT", "Данные секунд часов реального времени" "Arch_min_data", "USINT", "Данные минут часов реального времени" "Arch_hour_data", "USINT", "Данные часов часов реального времени" "Arch_date_data", "USINT", "Данные дней часов реального времени" "Arch_month_data", "USINT", "Данные месяцев часов реального времени" "Arch_year_data", "USINT", "Данные годов часов реального времени" "Arch_date_data", "USINT", "Данные дней часов реального времени" "Arch_unix_time_data", "UDINT", "Время в формате UNIX" "Arch_flags_data", "UDINT", "Данные о выставленных флагах архива" "Arch_id_crc_data", "UDINT", "Данные об уникальном CRC архива" "Arch_number_data", "UDINT", "Данные о номере архива в списке" Пользовательские данные добавляются при нажатии кнопки |plus| в левом верхнем углу окна, удаляются с помощью кнопки |minus|. .. |plus| image:: img/pus.png .. |minus| image:: img/minus.png .. figure:: img/g2.gif :align: center :width: 600 *Добавление и удаление пользовательских данных в архив* .. attention:: Название и тип пользовательских данных должны совпадать с созданными данными программы архива Размер выделяемой памяти для одного архива обеспечивает минимальную глубину архивации в 1000 записей при максимальном размере пользовательских данных 256 байт. При уменьшении размера пользовательских данных, глубина архивации увеличивается. Точное значение глубины архивации можно вычислить по формуле: **arc_num = 284000 / (header_len + body_len)**, где header_len - длина заголовка (28 байт); body_len - длина пользовательских данных. Например, при записи в архив 2-х пользовательских данных типа REAL (по 4 байта) и 2-х данных типа UINT (по 2 байта), то глубина архивации будет составлять: arc_num = 284000 / (28 + (2 * 4 + 2 * 2)) = 284000 / 40 = 7100 записей. Допустим, что программа архивации данных записывает 1 раз в 10 минут, то есть 24 * (60 / 10) = 144 записей за сутки. Тогда глубину архивации можно выразить в виде: 7100 / 144 = 49,3 суток.