1-RU-134367-1.1

Руководство пользователя

Используемые термины и сокращения

ОС – операционная система.

ПК – персональный компьютер.

ПЛК – программируемый логический контроллер.

FTP (File Transfer Protocol) — протокол прикладного уровня для передачи файлов по сети.

OPC UA (Open Platform Communications, Unified Architecture) – протокол для обмена данными с ПЛК и для управления ими.

SQL (Structured Query Language) – язык программирования для хранения и обработки информации в реляционной базе данных.

Введение

Настоящее руководство описывает настройку архивации и сохранения уставок для контроллеров ОВЕН, программируемых в среде Полигон. Подразумевается, что читатель обладает базовыми навыками работы с Полигон, поэтому общие вопросы (например, создание и загрузка проектов) в данном документе не рассматриваются – они подробно описаны в документах Руководство по программированию. Библиотека paCore и Быстрый старт.

Настройка архивации и сохранения уставок на диск контроллера или внешние накопители в среде Полигон осуществляется с помощью функциональных блоков из библиотеки paCore (раздел Сохранение данных), а также с помощью библиотек profiLogger и profiLoggerLight.

Примеры в документе актуальны для версии среды Полигон1917, версий библиотек paCore979, profiLogger62, profiLoggerLight69 и выше.

Основные сведения по работе с файловой системой контроллера

Память контроллеров

Контроллеры ОВЕН имеют следующие независимые области памяти:

  • энергонезависимая память (Flash);

  • оперативная память (RAM);

  • Retain-память (MRAM).

Программы, созданные в среде Полигон, задействуют две из них – Flash и RAM-память, а также позволяют работать с внешними накопителями USB-Flash/MicroSD.

Работа с файлами в большинстве случаев подразумевает работу с Flash-памятью. Flash-память имеет значительный, но ограниченный ресурс перезаписи – поэтому для архивации данных в большинстве случаев рекомендуется использовать внешние накопители (USB-Flash/MicroSD). Ресурс перезаписи внешних накопителей также ограничен, но их выход из строя не повлияет на работоспособность контроллера и накопители можно оперативно заменить. Информация об общем доступном объеме памяти приведена в руководстве по эксплуатации на соответствующий контроллер.

Информация о количестве свободной/занятой памяти доступна в web-конфигураторе контроллера в разделе Система/Точки монтирования.

Требования к подключаемым накопителям (USB-Flash/MicroSD)

Поддерживаемый тип разделов – MBR (GPT не поддерживается). Методика определения стиля разделов доступна по ссылке.

Рекомендуется использовать накопители с одним разделом – тогда гарантируется монтирование по путям, указанным в разделе.

Поддерживаемые файловые системы накопителей – FAT16/FAT32 и ext4.

Перед началом работы рекомендуется отформатировать накопитель с помощью HP USB Disk Storage Format Tool (для ОС Windows) или любой другой утилитой для форматирования накопителей.

Пути к файлам и накопителям, работа с накопителями (210-SD-USB)

Пути в файловой системе контроллера к рабочей директории Полигон и пути монтирования внешних накопителей выглядят следующим образом:

Пути к директориям ПЛК210

Директория

Путь

Рабочая директория

/home/root

USB-Flash-накопитель

/mnt/ufs/media/sda1 (ссылка /sda1)

MicroSD-накопитель

/mnt/ufs/media/mmcblk1p1 (ссылка /mmcblk1p1)

Директория FTP-сервера

/mnt/ufs/home/ftp/in

При работе с виртуальным контроллером рабочая директория находится в папке на ПК, где расположен проект, имя папки – build_имя модуля_ОС.

Для работы с внешними накопителями в среде Полигон предназначен блок 210-SD-USB из библиотеки paOwenIO.

Graphic
Внешние накопители (210-SD-USB)

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

Данный блок можно разместить только в Фоне.

Логические входы блока реагируют при изменении значения с 0 на 1.

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

mntSD

Монтировать MicroSD-карту

umntSD

Размонтировать MicroSD-карту

mntUSB

Монтировать USB-накопитель

umntUSB

Размонтировать USB-накопитель

rfrsh

Обновление информации о статусах накопителей

Выходы

sdmntd

Статус MicroSD-карты:

0 – карта отключена;

1 – карта подключена

sdpath

Путь к файлам MicroSD-карты:

Пустая строка – накопитель отключен;

/mmcblk1p1 – ссылка на директорию монтирования накопителя

usbmntd

Статус USB-накопителя:

0 – накопитель отключен;

1 – накопитель подключен

usbpath

Путь к файлам USB-накопителя:

Пустая строка – накопитель отключен;

/sda1 – ссылка на директорию монтирования накопителя

К входам блока 210-SD-USB можно подключить сигналы от внешних кнопок или от панели оператора. Выходы статуса накопителя можно подключать к входам сброса ошибок блоков сохранения данных.

Примечание
Информацию о размере свободной/занятой памяти на накопителе можно получить в программе пользователя с помощью блока DriveInfo из библиотеки paCore.

Ограничения на имена файлов и каталогов в ОС Linux

Максимальная длина – 255 символов.

Символы кириллицы и символ / не поддерживаются.

Не рекомендуется использовать в названиях следующие символы: ! @ # $ & ~ % * ( ) [ ] { } ' " \ : ; > < ` пробел

Регистр букв имеет значение: Test.txt и test.txt – это два разных файла.

Подключение к файловой системе контроллера

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

При работе на ПК с ОС Windows для этих целей рекомендуется использовать утилиту WinSCP. Утилита распространяется бесплатно и может быть загружена с сайта https://winscp.net/eng/download.php.

После запуска утилиты следует настроить соединение по протоколу SFTP, указав IP-адрес контроллера, имя пользователя – root и пароль (по умолчанию – owen, можно изменить в web-конфигураторе). Чтобы подключиться к контроллеру, следует нажать Войти.

Graphic
Настройки подключения в WinSCP

При работе на ПК с ОС Linux можно воспользоваться утилитой Double Commander или любым другим файловым менеджером.

FTP-сервер контроллера

Контроллер может использоваться в режиме FTP-сервера. По умолчанию FTP-сервер контроллера запущен. Логин для доступа: ftp, пароль по умолчанию: ftp (может быть изменен в web-конфигураторе).

См. более подробную информацию в руководстве Краткое описание основных функций Web-интерфейса управления контроллеров.

Рабочая директория FTP-сервера по умолчанию (можно изменить в web-конфигураторе контроллера): /mnt/ufs/home/ftp/in.

Раздел Сохранение данных библиотеки paCore

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

Для добавления библиотеки в проект следует:

  1. Перейти в меню Окна/Проекты. В появившемся окне отобразится текущий проект и добавленные библиотеки.

    Graphic
    Добавление библиотеки в проект
  2. Для добавления библиотеки следует нажать кнопку Открыть и перейти в папку с файлами библиотеки, которую необходимо добавить. Затем в выпадающем списке выбрать тип файла Библиотека Полигон 2 (*.ll2).

    Graphic
    Добавление библиотеки в проект
  3. В окне появится файл библиотеки с расширением .ll2. Следует выбрать его и нажать Открыть.

    Graphic
    Добавление библиотеки в проект

Добавленная библиотека отобразится в окне Проекты.

Хранение параметров на диске (SaverEx)

Блок SaverEx обеспечивает хранение данных в архиве на диске контроллера в виде бинарного файла.

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

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

rst

Сброс ошибок записи

fnm

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

wr

Запись на диск

in

Значение параметра (циклический)

typ

Тип параметра (циклический, константный):

DI – 8-ми битный регистр;

AI – вещественное значение;

II – 16-ти битный регистр

ini

Значение для инициализации (циклический, константный)

Выходы

next

Имя следующего файла

enb

Запись разрешена

sts

Статус:

0 – после сброса;

1 – записан;

2 – прочитан;

<0 – ошибка

good

Количество удачных записей

bad

Количество ошибок записи

rej

Количество отклоненных записей

o

Текущее значение параметров (циклический)

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

Данные организуются в виде переменных in с жестко заданным типом typ.

Поскольку входы in имеют тип any, следует строго соблюдать правила преобразования типов при проведении связей.

Если файла не существует на диске – входы инициализируются с помощью значений ini, происходит запись в файл.

Если файл существует на диске, выходы инициализируются сохраненными значениями. Запись в файл осуществляется только при изменении значений на входах in.

Запись на диск можно осуществить принудительно, подав команду wr.

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

При чтении содержимое файла контролируется с помощью контрольной суммы и выдается на выходы только при ее корректности. Поэтому если, например, добавить в файл новую переменную, то записанные значения для выходов сбросятся на инициализирующие ini.

Если при записи файла на диск происходит однократная ошибка, блок пытается переименовать текущий файл и снова произвести запись. Если повторная запись оказывается удачной, то продолжается работа в обычном режиме, а выход bad инкрементируется. Следует принять меры по диагностике или замене носителя, поскольку сбои при записи могут быть следствием скорого выхода его из строя. Файл, на котором произошел сбой, остается на диске под тем же именем с добавленным к нему суффиксом равным метке времени сбоя (в мс от 1 января 1970 г). Не рекомендуется его удалять, чтобы повторно не использовать потенциально сбойный сектор.

Если происходит повторный сбой записи, то блок блокируется (выход enb = 0) и больше не производит попыток переименований файлов и записи до тех пор, пока ошибки не будут сброшены фронтом на входе rst.

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

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

Graphic
Хранение параметров на диске (SaverEx)

Буфер чтения/записи уставок (BufSupEx)

Блок BufSupEx представляет собой двунаправленный буфер данных интерфейса и данные сохраняются в бинарном файле на диске контроллера. Блок сохраняет все значения на диске контроллера аналогично блоку SaverEx.

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

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

inter

Cвязь от интерфейса, к которому принадлежит данный буфер

group

Номер группы (константный)

fnm

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

mask

Не используется

rst

Сброс ошибок записи

wr

Запись на диск

dan

Значение, которое записывается в буфер при czap = 1 (циклический)

czap

Запись значения dan (циклический)

typ

Тип параметра (циклический, константный):

DI, DO – 8-ми битный регистр;

AI, AO – вещественное значение;

II, IO – 16-ти битный регистр

adr

Адрес параметра (циклический, константный)

ini

Значение для инициализации (циклический, константный)

min

Минимум. Если принятое значение меньше min, то оно игнорируется (циклический)

max

Максимум. Если принятое значение больше max, то оно игнорируется (циклический)

Выходы

pkt

Подключение к блокам OpcUAClient, UABufSups из библиотеки paOpcUA

next

Имя следующего файла

enb

Запись разрешена

sts

Статус:

0 – после сброса;

1 – записан;

2 – прочитан;

<0 – ошибка

good

Количество удачных записей

bad

Количество ошибок записи

rej

Количество отклоненных записей

dan

Значение параметра, полученное по интерфейсу или на вход dan (после проверки на min и max)

chn

Признак изменения, выставляется в 1 на один цикл выполнения программы, если значение dan изменилось

zap

Признак записи, выставляется в 1 на один цикл выполнения программы, если значение с входа dan было записано

Номер группы group используется в качестве Slave ID при подключении к блоку интерфейса Modbus Slave.

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

Адрес переменной adr зависит от интерфейса, к которому подключен буфер, например, адрес регистра Modbus.

Поскольку входы dan имеют тип any, следует строго соблюдать правила преобразования типов при проведении связей.

Если файл существует на диске, выходы инициализируются сохраненными значениями. Если файла не существует – выходы инициализируются значениями инициализации ini.

Запись в файл осуществляется при изменении значений на входах dan или по интерфейсу. Если файла на диске не существует и выходы dan приняли значения ini, то можно записать их на диск принудительно, подав команду wr.

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

При чтении содержимое файла контролируется с помощью контрольной суммы и выдается на выходы только при ее корректности. Поэтому если, например, добавить в файл новую переменную, то записанные значения для выходов сбросятся на инициализирующие ini.

Если при записи файла на диск происходит однократная ошибка, блок пытается переименовать текущий файл и снова произвести запись. Если повторная запись оказывается удачной, то продолжается работа в обычном режиме, а выход bad инкрементируется. Следует принять меры по диагностике или замене носителя, поскольку сбои при записи могут быть следствием скорого выхода его из строя. Файл, на котором произошел сбой, остается на диске под тем же именем с добавленным к нему суффиксом равным метке времени сбоя (в мс от 1 января 1970 г). Не рекомендуется его удалять, чтобы повторно не использовать потенциально сбойный сектор.

Если происходит повторный сбой записи, то блок блокируется (выход enb = 0) и больше не производит попыток переименований файлов и записи до тех пор, пока ошибки не будут сброшены фронтом на входе rst.

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

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

Graphic
Буфер чтения/записи уставок (BufSupEx)

Счетчик времени наработки (CounterMEx)

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

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

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

rst

Сброс ошибок записи

fn

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

ask

Запись на диск

slv

Используется для изменения значений счетчиков, если slv = 1, то cnt = mas, cfrn = mcfrn

enbl

Работа устройства (циклический): пока enbl = 1, увеличивается время наработки cfrn, при изменении enbl с 0 на 1 число включений cnt увеличивается на 1

rst

Сброс времени наработки cnt (циклический)

frm

Формат отображения для времени наработки. Не используется

rfr

Сброс числа включений cfrn (циклический)

mas

Балансировка времени наработки cnt (циклический), если slv = 1, то cnt = mas

mcfrn

Балансировка числа включений cfrn (циклический), если slv = 1, то cfrn = mcfrn
Выходы

next

Имя следующего файла

enb

Запись разрешена

good

Количество удачных записей

bad

Количество ошибок записи

cnt

Время наработки в секундах (циклический)

hour

Время наработки в формате часы (циклический)

min

Время наработки в формате минуты (циклический)

sec

Время наработки в формате секунды (циклический)

day

Текущий день (циклический)

mnth

Текущий месяц (циклический)

year

Текущий год (циклический)

cfrn

Число включений (циклический)

Блок анализирует входы enbl.

На выходе cfrn отображается число включений устройства (количество изменений enbl c 0 на 1), на выходе cnt отображается время наработки устройства (сколько секунд enbl был равен 1).

Блок может сохранять число включений и время наработки в файл по фронту на входе ask. Сохраненные значения считываются из файла при инициализации.

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

Для изменения числа включений и времени наработки следует подать 1 на вход slv, тогда cnt = mas, cfrn = mcfrn. Это может быть полезно для синхронизации в дублированных системах.

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

При чтении содержимое файла контролируется с помощью контрольной суммы и выдается на выходы только при ее корректности. Поэтому если, например, добавить в файл новую переменную, то записанные значения для выходов сбросятся на инициализирующие ini.

Если при записи файла на диск происходит однократная ошибка, блок пытается переименовать текущий файл и снова произвести запись. Если повторная запись оказывается удачной, то продолжается работа в обычном режиме, а выход bad инкрементируется. Следует принять меры по диагностике или замене носителя, поскольку сбои при записи могут быть следствием скорого выхода его из строя. Файл, на котором произошел сбой, остается на диске под тем же именем с добавленным к нему суффиксом равным метке времени сбоя (в мс от 1 января 1970 г). Не рекомендуется его удалять, чтобы повторно не использовать потенциально сбойный сектор.

Если происходит повторный сбой записи, то блок блокируется до тех пор, пока ошибки не будут сброшены фронтом на входе rst.

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

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

Graphic
Счетчик времени наработки (CounterMEx)

Библиотека profiLogger

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

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

Массив значений параметров по событию (RamFRLogger)

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

Блок RamFRLogger формирует массив значений параметров для последующей записи на диск.

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

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

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

trigger

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

befor

Время в секундах «до» события

after

Время в секундах «после» события

every

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

Выходы

me

Не используется

array

Массив накопленных значений – для соединения с блоком ComtradeLogger

ttime

Время срабатывания – для соединения с блоком ComtradeLogger

cnt

Счетчик точек

pnum

Количество точек для записи

sts

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

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

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

-1 – ошибка

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

Для начала формирования массива значений следует установить 1 на входе trigger.

Работа блоков RamFRLogger и ComtradeLogger объединена в блоке «черный ящик» BlackBox. Пример работы с блоком BlackBox в разделе.

Graphic
Массив значений параметров по событию (RamFRLogger

Сохранение значений параметров на диск по событию (ComtradeLogger)

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

Блок ComtradeLogger сохраняет значения параметров в файл на диск.

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

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

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

enb

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

1 – включен;

0 – выключен

name

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

array

Массив накопленных значений – для соединения с блоком RamFRLogger

ttime

Время срабатывания – для соединения с блоком RamFRLogger

Выходы

me

Не используется

fname

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

sts

Статус подготовки файла:

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

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

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

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

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

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

По окончании записи формируются два файла: файл с расширением .dat – набор значений параметров, накопленных за временной отрезок, файл с расширением .cfg – служебная информация о событии.

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

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

Работа блоков RamFRLogger и ComtradeLogger объединена в блоке «черный ящик» BlackBox. Пример работы с блоком BlackBox приведен в разделе.

Graphic
Сохранение значений параметров на диск по событию (ComtradeLogger

Библиотека 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)

Сохранение уставок

Сохранение уставок на диск контроллера или внешний накопитель организуется с помощью блоков SaverEx и BufSupEx из библиотеки paCore, а также с помощью блока BufSupFltEx из библиотеки paModbus.

Сохранение уставок из программы контроллера (SaverEx)

Сохранение уставок из программы контроллера организуется с помощью блока SaverEx.

Для надежной сохранности данных одновременно на диске находятся два файла, соответствующие одному архиву. Файлы для сохранения чередуются.

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

На входах блока typ задаются типы данных сохраняемых параметров:

  • DI – 8-ми битный регистр;

  • AI – вещественное значение;

  • II – 16-ти битный регистр.

На входах ini задаются значения инициализации параметров.

Graphic
Конфигурация SaverEx для сохранения уставок на MicroSD-накопитель в файлах saver.da1 и saver.da2

Если файла на диске не существует, при запуске программы входы in и выходы o примут значения, заданные на входах ini. На диске сохранится файл с расширением .da1. Выход good блока инкрементируется.

Graphic
Сохранение уставок на MicroSD-накопитель. Первый запуск программы

Далее запись на диск будет производится только по изменению значений на входах in.

Graphic
Сохранение уставок на MicroSD-накопитель. Изменение уставок из программы

Если файл на диске существует, при перезапуске программы входы in и выходы o примут значения, сохраненные на диске.

Graphic
Сохранение уставок на MicroSD-накопитель. Перезапуск программы

Файлы, в которые производится запись уставок – бинарные, просмотреть их содержимое нельзя.

Graphic
Сохранение уставок на MicroSD-накопитель. Файлы на диске

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

При сохранении данных на внешний накопитель на вход rst можно завести выход флага монтирования накопителя блока 210-SD-USB. Сброс ошибок rst выполняется по фронту перехода из 0 в 1.

Примечание
При изменении числа входов блока SaverEx файлы на диске перезаписываются.

Сохранение уставок с использованием OPC UA/Modbus (BufSupEx)

Для записи уставок с удаленного OPC UA-клиента и/или по протоколу Modbus используются блоки BufSupEx.

Работа блока BufSupEx аналогична работе блока SaverEx и описана в разделе.

Запись уставок с удаленного OPC UA-клиента

Для записи уставок в блоки BufSupEx с удаленного OPC UA-клиента используется блок UABufSups из библиотеки paOpcUA.

Настройка OPC UA-сервера подробно описана в документе Обмен с верхним уровнем. Библиотека paOpcUA.

Блоки BufSupEx в проекте контроллера-сервера подключаются выходами pkt к входам buf блока UABufSups.

Вход inter блока BufSupEx можно при необходимости подключить к другому блоку протокола (например, к блокам Modbus Slave из библиотеки paModbus, см. пример в разделе).

Graphic
Запись уставок с OPC UA-клиента

При отключении блока UABufSups (или при его отсутствии) для записи уставки с OPC UA-клиента потребуется подать импульс на входы czap.

Параметры на диске сохраняются в бинарных файлах .da1 и .da2.

Примечание
При изменении числа входов блока BufSupEx файлы на диске перезаписываются.

Поведение блока BufSupEx при ошибках записи описано в разделе.

Синхронизация записи уставок между контроллерами по OPC UA

Для синхронизации записи уставок блоков BufSupEx между двумя контроллерами по протоколу OPC UA требуется дублировать во второй контроллер программу (или целиком место работы), в которой добавлен блок BufSupEx.

Для этого следует перетащить на модуль второго контроллера (оба модуля должны быть в одном проекте) требуемую программу, в выпадающем меню выбрать Добавить.

Обе программы подсветятся желтым. Теперь все изменения на страницах данной программы будут одинаково применены в обоих модулях.

Настройка работы по протоколу OPC UA подробно описана в документе Обмен с верхним уровнем. Библиотека paOpcUA.

Graphic
Дублированные программы

Блоки BufSupEx в данной программе следует соединить выходами pkt с входами buf блока OpcUAClient из библиотеки paOpcUA.

Входы OpcUAClient, которые отвечают за настройку обмена (IP-адреса и порты), следует задавать с помощью SQL-запросов к соответствующим свойствам модулей.

Запрос IP адреса (prop_ip):

"<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_ip"</sql>"

Запрос номера порта (prop_debug_port):

<sql>SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_debug_port"</sql>

Запрос пользовательского свойства Пользовательское свойство 00 (prop_0):

<sql> SELECT value FROM blocks_prop WHERE indx=:module AND type="prop_0"</sql>

(обычно используется на входах rip и rprt).

Graphic
Подключение BufSupEx к OpcUAClient

После запуска программ на обоих контроллерах, один из них следует назначить «ведущим» – отключить OpcUAClient (enb = 0), а второй «ведомым» – включить OpcUAClient (enb = 1).

Теперь при изменении уставок ведущего контроллера изменения будут дублироваться в ведомый с помощью OPC UA-клиента.

При попытке изменить уставки ведомого контроллера изменения в ведущем контроллере не применятся.

Graphic
Изменение уставки с ведущего контроллера
Graphic
Ведомый контроллер

Параметры на диске сохраняются в бинарных файлах с расширениями .da1 и .da2.

Примечание
При изменении числа входов блока BufSupEx файлы на диске перезаписываются.

Поведение блока BufSupEx при ошибках записи описано в разделе.

Запись целочисленных уставок по протоколу Modbus

Для записи уставок по протоколу Modbus вход inter блока BufSupEx подключается к выходу блока протокола Modbus TCP Slave или Modbus RTU Slave из библиотеки paModbus.

Мастер в сети Modbus может читать и записывать данные на диск. Для чтения блок BufSupEx реализует функцию 0х03, для записи – 0х06 и 0х10.

Вход group определяет Slave ID устройства (ID = 1 соответствует значению входа 0x100).

Входы dan используются для записи уставок из программы контроллера. Для того, чтобы значение записалось на диск из программы, и его прочитал мастер сети Modbus, следует также подать импульс на соответствующий вход czap.

Входы typ определяют тип данных dan, при работе по Modbus могут принимать только значения II, IO (16-ти битный регистр), так как Modbus работает с целочисленными регистрами.

Сохранение по протоколу Modbus уставок с плавающей точкой рассмотрено в разделе.

Входы adr определяют адреса выделяемых регистров Modbus.

Входы min и max задают минимальное и максимальное возможное значение dan, при изменении значения из программы или мастером сети оно проверяется на условие соответствия этому диапазону. Значение, выходящее за этот диапазон, записано не будет.

Выходы dan отображают текущие значения уставок, сохраненных на диск.

Параметры на диске сохраняются в бинарных файлах с расширениями .da1 и .da2.

Примечание
При изменении числа входов блока BufSupEx файлы на диске перезаписываются.

Поведение блока BufSupEx при ошибках записи описано в разделе.

Подробно настройка обмена по протоколу Modbus описана в документе Обмен по протоколу Modbus. Библиотека paModbus.

Graphic
Подключение BufSupEx к
Graphic
Запись уставки мастером сети Modbus
Graphic
Запись уставки из программы контроллера

Запись уставок с плавающей точкой по протоколу Modbus (BufSupFltEx)

Для записи уставок с плавающей точкой по протоколу Modbus используются блоки BufSupFltEx из библиотеки paModbus.

Вход inter блока BufSupFltEx подключается к выходу блока протокола Modbus TCP Slave или Modbus RTU Slave из библиотеки paModbus.

Мастер в сети Modbus может читать и записывать данные на диск. Для чтения блок BufSupFltEx реализует функцию 0х03, для записи – 0х10.

Вход group определяет Slave ID устройства (ID = 1 соответствует значение входа 0x100).

Входы dan используются для записи уставок из программы контроллера. Для того, чтобы значение записалось на диск из программы, и его прочитал мастер сети Modbus, следует также подать импульс на соответствующий вход czap.

Входы typ определяют тип данных dan, могут принимать только значения AI, AO (вещественное число).

Входы adr определяют адреса выделяемых регистров Modbus. Для опроса каждого значения dan выделяется 2 регистра Modbus.

Входы min и max задают минимальное и максимальное возможное значение dan, при изменении значения из программы или мастером сети оно проверяется на условие соответствия этому диапазону. Значение, выходящее за этот диапазон, записано не будет.

Выходы dan отображают текущие значения уставок, сохраненные на диск.

Параметры на диске сохраняются в бинарных файлах с расширениями .da1 и .da2.

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

Поведение блока BufSupFltEx аналогично блоку BufSupEx и описано в разделе.

Подробно настройка обмена по протоколу Modbus описана в документе Обмен по протоколу Modbus. Библиотека paModbus.

Graphic
Подключение
Graphic
Запись уставки мастером сети Modbus
Graphic
Запись уставки из программы контроллера

Работа с счетчиком времени наработки (CounterMEx)

Для сохранения времени наработки устройств используется блок CounterMEx.

Для надежной сохранности данных одновременно на диске находятся два файла, соответствующие одному архиву. Файлы для сохранения чередуются.

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

Для начала отсчета времени наработки механизма следует подать 1 на вход enbl. Время наработки выводится на выход cnt в секундах. Число включений выводится на выход cfrn.

Чтобы записать текущее значение счетчика в файл, следует подать 1 на вход ask.

Если файл на диске существует, при перезапуске программы выходы cnt и cfrn инициализируются сохраненными значениями.

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

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

При сохранении данных на внешний накопитель на вход rst можно завести выход флага монтирования накопителя блока 210-SD-USB. Сброс ошибок rst выполняется по фронту перехода из 0 в 1.

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

Архивирование параметров на диск (FileDpLogger)

Для архивации параметров на диск контроллера используется блок FileDpLogger.

На вход блока file_path подается абсолютный путь, куда будет осуществляться сохранение файла.

Формат сохранения файла определяется входами блока grp, frmt, meth. Подробнее см. в разделе.

Для сохранения параметров на диск периодически в формате .csv следует установить следующие значения входов grp = GROUP_ALLINONE, frmt = TO_MSD200, meth = INTERVAL.

Период архивации задается на входе intr в миллисекундах.

Graphic
Сохранение архива параметров на MicroSD-накопитель

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

Добавить параметр в раздел можно одним из следующих способов:

  1. Открыть на одной странице блок FileDpLogger, на другой странице блок с входом/выходом, который необходимо добавить. Выделить вход/выход и с нажатым Ctrl перетащить его на блок FileDpLogger. Отпустить, выбрать команду Добавить.

  2. Открыть блок FileDpLogger в дереве (со страницы это проще всего сделать командой Показать в дереве), раскрыть его. Вход/выход перетащить в раздел Данные, выбрать команду Добавить.

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

Graphic
Свойство Полный алиас параметров для архивации
Graphic
FileDpLogger в дереве проекта

Для запуска архивации следует подать 1 на входы enb и wr блока FileDpLogger. Количество удачных записей выводится на выходе блока ok.

Каждый день создается новый файл архива.

Graphic
Сохранение архива параметров на MicroSD-накопитель

Просмотреть полученный архив параметров в формате .csv можно через программу MS Excel. В первом столбце находится метка времени сохранения параметров, в следующих – сохраненные значения параметров.

Graphic
Просмотр архива параметров в MS Excel

При описанной настройке блока FileDpLogger архивы параметров можно отобразить и сохранить в виде графиков в программе График ОВЕН МСД200.

Graphic
Отображение архива параметров в программе График ОВЕН МСД200

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

При сохранении данных на внешний накопитель на вход rst можно завести выход флага монтирования накопителя блока 210-SD-USB. Сброс ошибок rst выполняется по фронту перехода из 0 в 1.

Работа с «черным ящиком» (BlackBox)

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

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

Входы блока before и after определяют отрезок времени, в течение которого блок сохраняет значения параметров соответственно «до» и «после» события.

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

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

Добавить параметр в раздел можно одним из следующих способов:

  1. Открыть на одной странице блок BlackBox, на другой странице блок с входом/выходом, который необходимо добавить. Выделить вход/выход и с нажатым Ctrl перетащить его на блок BlackBox. Отпустить, выбрать команду Добавить.

  2. Открыть блок BlackBox в дереве (со страницы это проще всего сделать командой Показать в дереве), раскрыть его. Вход/выход перетащить в раздел Данные, выбрать команду Добавить.

Количество точек для сохранения рассчитывается на выходе блока pnum.

Graphic
Сохранение параметров на MicroSD-накопитель по событию
Graphic
BlackBox в дереве проекта

По сигналу 1 на входе trigger происходит сохранение массива значений параметров в ОЗУ.

Начало записи параметров на диск происходит при условии, что enb = 1.

На время подготовки лога к записи на диск на выходе logger_sts должно быть значение 1.

Graphic
Сохранение параметров на MicroSD-накопитель по событию. Подготовка лога

По окончании записи блок задает на выходе logger_sts значение 0. На выходе fname отображается имя файла, сохраненного на диск, на выходе comtrade_sts на один цикл работы блока задается 1.

Graphic
Сохранение параметров на MicroSD-накопитель по событию. Запись параметров на диск

По окончании записи на диске контроллера формируются два файла:

  • *.dat – набор значений параметров, накопленных за временной отрезок;

  • *.cfg – служебная информация о событии.

Graphic
Файлы на диске контроллера

Просмотреть файлы можно в текстовом редакторе или с помощью программы Notepad++.

В файле *.dat сохраняются: номер точки, метка времени в микросекундах от момента сохранения параметров «до» события, значения параметров.

В файле *.cfg можно посмотреть точное время возникновения сигнала на входе trigger (без учета часового пояса).

Graphic
Файл с данными *.dat
Graphic
Файл со служебной информацией *.cfg