Библиотека profiLoggerLight

Запись архивов на диск контроллера организуется с помощью блоков из библиотеки profiLoggerLight.

Добавление библиотеки в проект описано в разделе.

Файловый архив данных (FileDpLogger)

Блок FileDpLogger предназначен для архивирования значений выбранных входов/выходов в текстовых файлах.

Раздел библиотеки: Архивы.

Назначение входов и выходов FileDpLogger
ЭлементОписание
Входы

file_path

Абсолютный путь к директории, где будут храниться архивные файлы. При сохранении данных на внешнем накопителе следует использовать путь, указанный на выходе usbpath блока 210-SD-USB (константный)

enb

Разрешена работа блока:

0 – блок не работает;

1 – блок пишет данные в буфер

wr

Разрешена запись на диск:

0 – нет;

1 – да

loc

Использовать локальное время для смены файлов (константный):

0 – нет (использовать мировое время);

1 – да

grp

Группировка данных по файлам (константный):

NO_GROUP – каждое данное в отдельном файле;

GROUP_ALLINONE – все данные в одном файле

frmt

Формат записей в файлах (константный):

TAB_and_COMM – формат записи с разделителем табуляция «→», в числах с плавающей точкой используется запятая «,»;

COMM_and_DOT – формат записи с разделителем запятая «,», в числах с плавающей точкой используется точка «.». Использование запятой в комментарии приведет к некорректному формату файла;

TO_MSD200 – формат записи с разделителем точка с запятой «;», в числах с плавающей точкой используется запятая «,»

meth

Метод записи данных в файл (константный):

TIMESTAMP – запись с временными метками с заполнением пустых;

INTERVAL – запись с заданным интервалом (период архивирования по умолчанию 1 с)

intr

Интервал записи, мс. Устанавливает период архивирования. В файл записывается последнее значение входа/выхода, полученное в этом периоде. Используется только в методе INTERVAL (константный)

qqlen

Размер буфера на каждое данное: минимальное значение 10, максимальное зависит от характеристик контроллера и объема оперативной памяти, которую при работе проекта допускается выделить для хранения буфера данных. Для расчета максимального размера очереди нужно учитывать количество данных, которое планируется записывать (см. пример ниже) (константный)

prt

Приоритет потока записи из буфера на диск, по умолчанию 25 (константный)

rst

Сброс ошибок записи: изменение с 0 на 1 сбрасывает бит iserr, обнуляет err и lost

Выходы

lg

Указатель на блок базового типа CBaseLogger, инициализируется указателем на базовый класс блока. Не используется в программе контроллера

ok

Количество удачно записанных строк, значение инициализации 0

lost

Количество потерянных данных из-за заполненности очередей, значение инициализации 0

iserr

Была ошибка записи, значение инициализации 0

err

Количество ошибок записи, значение инициализации 0

Данные в архив записываются по изменению с учетом свойства Зона нечувствительности. Формат, группировка и метод записи в файл выбираются на входах блока.

Входы/выходы в проекте, которые необходимо архивировать, добавляются в раздел Данные внутри блока.

Для того, чтобы блок начал запись на диск, следует установить значение 1 на входах enb и wr.

Внимание
Рекомендуется записывать данные на внешний накопитель, чтобы избежать изнашивания внутреннего диска контроллера.

Каждый день запись производится в новый файл. На входе loc блока можно выбрать, какое время использовать для смены файлов (мировое или локальное). Дата записи данных отображается в имени файла.

Имена файлов зависят от заданных на входе блока значений:

  • для формата TO_MSD200;

  • Logs_ALLINONE_ГГГГ_ММ_ДД.txt – для форматов TAB_and_COMM и COMM_and_DOT с группировкой всех данных в одном файле GROUP_ALLINONE

    ;
  • Logs_<алиас данного>_ГГГГ_ММ_ДД.txt – для форматов TAB_and_COMM и COMM_and_DOT без группировки NO_GROUP (каждое данное в отдельном файле).

В заголовок таблицы по умолчанию попадают свойства входов/выходов Полный алиас и Комментарий.

Внимание
Комментарий отображается при условии, что у модуля добавлено свойство Трансляция: включить свойства входов/выходов, равное Только из разделов.

Если необходимо, чтобы комментарий не отображался, следует удалить свойство Трансляция: комментарии отдельно у раздела Данные.

Если во время начала записи файл на диске с таким именем существует, то к имени существующего файла добавляется метка времени и создается новый файл. Название нового файла определяется по правилам выше.

Внимание
При изменении числа параметров в разделе Данные создается новый файл архива.
Внимание

Использование запятой в комментарии приведет к некорректному чтению файла трендом, в случае использования формата COMM_and_DOT.

Внимание

Для корректного отображения сохраненных данных в программах просмотра графиков необходимо, чтобы у входов/выходов, добавленных в раздел, было добавлено свойство Полный алиас. Алиасы должны быть уникальными в пределах раздела Данные, чтобы обеспечить уникальность имен файлов. Уникальность алиаса должна обеспечиваться без учета регистра. Если алиас отсутствует, или не уникален, то данное не будет архивироваться.

Внимание

Если блок устанавливается в таймере, то порядок выполнения всех блоков, входы/выходы которых добавлены в архив, имеет смысл выставлять либо выше, либо ниже, чем у блока архива. Так как метка времени блоков, порядок которых ниже, запишется с меткой времени текущего таймерного цикла, а те, которые выше – с меткой времени следующего цикла.

Каждый объект данных хранится в своем буфере, максимальная величина которого задается на входе блока qqlen. Максимальный размер очереди используется для ограничения количества оперативной памяти, которую может выделить блок для хранения буфера данных, т.к. на хранение каждого элемента очереди требуется 32 байта оперативной памяти.

Пример

Например, при qqlen = 1000, для хранения 64 различных показателей, потребуется 2,048 мегабайт оперативной памяти. Если нет возможности записать данные в файл, то эта очередь заполнится через 1000 секунд (при записи методом INTERVAL и показателе int = 1000 мс).

При возникновении ошибок записи (недостаточно памяти, память испорчена, извлечена Flash-карта и т.п.) блок установит значение 1 на выходе iserr (если была ошибка записи), и увеличит счетчик ошибок err. После двух ошибок блок прекратит запись на диск, пока ошибки не будут сброшены сигналом на входе rst.

Если запись остановлена (wr = 0 или err = 2), но при этом разрешена работа блока (enb = 1), то данные копятся в буфере, пока он не достигнет максимальной величины, заданной на входе qqlen.

Если за время отключения записи буфер заполнится, часть архивируемых данных будет утеряна. На выходе lost отобразится общее количество утерянных данных по всем входам/выходам. Количество потерянных данных сбрасывается при сбросе ошибок записи сигналом на входе rst.

Работа блока FileDpLogger осуществляется в отдельном потоке, приоритет которого задается на входе prt.

Примечание
Формат TO_MSD200 разрабатывался для визуализации в программе График ОВЕН МСД200.

В связи с особенностями работы программы График ОВЕН МСД200 существуют следующие ограничения для обеспечения совместимости:

  1. Ограничение группировки – только GROUP_ALLINONE, т. к. имя файла должно быть в формате ГГГГ_ММ_ДД.csv.

  2. Ограничение времени – только INTERVAL с интервалом не менее секунды (intr = 1000). Желательно, чтобы интервал был кратен секунде, т.к. программа использует время в формате ЧЧ:ММ:СС. Миллисекунды считаются за пределами диапазона: блок округляет точность времени до секунды в большую сторону. Если программа обнаружит несколько идентичных значений времени, то файл не откроется.

  3. Ограничение количества данных – максимум 64 канала. При использовании большего количества точек архивации программа не откроет файл.

Пример работы с блоком приведен в разделе.

Graphic
Файловый архив данных (FileDpLogger

Черный ящик (BlackBox)

Блок BlackBox совмещает в себе работу блоков RamFRLogger и ComtradeLogger из библиотеки profiLogger. Этот блок сохраняет значения выбранных параметров в файл в течение заданного времени «до» события и в течение заданного времени «после» события.

Раздел библиотеки: Архиваторы.

Блок BlackBox следует размещать только в Таймере.

Назначение входов и выходов BlackBox
ЭлементОписание
Входы

trigger

Фронт срабатывания. При подаче 1 на данный вход блок начинает работать

before

Время, в течение которого производится запись значений до срабатывания триггера

after

Время, в течение которого производится запись значений после срабатывания триггера

every

Кратность квантования. Например, если таймерный промежуток (свойство модуля Таймерный промежуток) установлен 20 мс и every = 5, запись будет производиться каждые 100 мс. Должно быть отлично от 0

enb

Разрешение записи на диск:

0 – выключена;

1 – включена

name

Путь и начало имени файла. При сохранении данных на внешнем накопителе следует использовать путь, указанный на выходе блока 210-SD-USB (константный)

priority

Приоритет потока ожидания выполнения команды

Выходы

logger_sts

Статус подготовки лога в ОЗУ:

0 – нет ошибок;

1 – идет подготовка лога;

-1 – неверное значение параметра every или отсутствует раздел Данные в блоке

me

Указатель на блок базового типа CBaseLogger, инициализируется указателем на базовый класс блока. Не используется в программе контроллера

fname

Абсолютный путь и начало имени результирующего файла *.dat, инициализируется 0

comtrade_sts

Статус подготовки файла, инициализируется 0:

0 – блок не работает над файлом или данные для файла еще накапливаются;

1 – файл успешно создан (взводится на один цикл работы блока);

-1 – внутренняя ошибка при работе с массивом данных (массив не содержит данных или меток времени);

-2 – проблема создания/открытия файла;

-3 – неподдерживаемый формат входных данных

pnum

Число накопленных значений в массиве для записи в ПЗУ, инициализируется 0

Входы/выходы в проекте, которые необходимо архивировать по событию, добавляются в раздел Данные внутри блока.

Блок сохраняет в ОЗУ текущие значения с фиксированной частотой дискретизации в течение установленного в before времени.

Если на вход trigger подано значение больше 0, отмечается время наступления события и пишутся значения в течение установленного в аfter времени.

Когда запись окончена, сформированный массив передается в фоновый поток записи массива данных в ПЗУ. Если в enb установлено значение 1, формируется следующие два файла: файл с расширением .dat – набор значений параметров, накопленных за временной отрезок, файл с расширением .cfg – служебная информация о событии.

Имена файлов определяются по входу name плюс метка времени (без учета часового пояса) начала записи параметров на диск в формате ГГГГ_ММ_ДД_ЧЧ_ММ_СС.

Примечание
Запись рекомендуется производить на внешний накопитель, чтобы избежать изнашивания внутреннего диска контроллера.

Пример работы с блоком приведен в разделе.

Graphic
Черный ящик (BlackBox)