Чтение срезов (архивов) запись куда ?

Стартовая страница Форумы Разработка и интеграция Чтение срезов (архивов) запись куда ?

Просмотр 13 сообщений - с 16 по 28 (из 28 всего)
  • Автор
    Сообщения
  • #15961
    manjey73
    Участник

    По идее можно в счетчике указать период интеграции 60 минут, или объединить в драйвере.
    Нет, БД Scada должна работать как есть, либо с минутным сохранением, либо с меньшим.
    Я говорил вообще для Михаила, что с появлением новых БД для архивов надо будет делать различные варианты.
    В одном случае это кольцевые базы, точнее по принципу стека, задали например хранение год с месячным интервалом на 3 года, и идет вытеснение самых старых и добавление новых.
    И таких БД надо несколько. То есть
    1. Годовые по месячно на Х лет. например 3 года это 36 ячеек на канал
    2. Суточные на Х лет, на те же 3 года это 31*12*3=1116 ячеек на канал.
    Ну и т.д. Кроме разделения хранения данных в обычной БД, чтобы одни каналы сохранялись раз в минуту, а выбранные раз в 10 сек например.
    + возможность хранить текст не в пределах 8 байт… в общем много нюансов, которые непонятно как реализовывать. Только идеи блин….

    #15964
    Mikhail
    Модератор

    CommLineSvc.FlushArcData обеспечивает гарантированную отправку среза на Сервер.

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

    Т.к. тема длинная, что мог упустить какой-либо вопрос ко мне.

    #15966
    Mikhail
    Модератор

    Работа с архивами будет дополняться в 6-м поколении Rapid SCADA, т.к. требует серьёзных изменений.

    #15968
    manjey73
    Участник

    Сейчас то что делать ? 🙂

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

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

    А вот Срезы средних мощностей ? Например так же. создаем каналы для A+, R+, R- (A- не трогаем, так как всегда ноль, но имеем ввиду, тут просто не делать привязку к серверу и все, если понадобится, привяжем).

    Могу прочитать срез например по времени, если период интеграции в счетчике 30 минут, то проверяем время и как 30 мин прошло, вычитываем и сохраняем в указанное время в БД так же как и остальные каналы.
    00:30, 01:00, 01:30, 02:00 и так далее и распихиваем по каналам именно в то же время, которое указано в счетчике.

    То есть каналы срезов будут формироваться так же, как и обычные данные.

    Тут интересует вопрос, что в БД будет в промежутках ? — — — или то же значение что и в точке записи ? Отмечать как архивные данные. Если то же значение, как сделать — — -. Как при этом будет происходить построение графика ? точками полагаю, как добиться нормального графика в данном случае ?

    • Этот ответ был изменен 3 года, 10 месяцев назад от manjey73.
    #15970
    manjey73
    Участник

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

    Например подключили прибор, драйвер определил что есть архив за год и он может их передать, Сервер сообщает какими порциями можно (или через настройку шаблона указывать, что порции будут такими-то) и периодически драйвер будет вычитывать и передавать, а модуль их добавлять в БД.

    #15971
    Romiros
    Участник

    Я думаю все на самом деле проще. Создайте отдельный канал для архива. Запишите туда значение на 0:00. Если нужно отображать эти данные в минутном графике, то отправляем это же значение в текущий срез. Будет прямая линия в течении 30 минут. На 0:30 таким же образом записываем новое значение. Понятно если архив запрашивается за прошлое то минутный график не получится. Но здесь я думаю более правильно отображать минутные срезы в минутном графике, часовые в часовом, суточные в суточном и т.д. Вопрос больше к отображению информации, к плагину графиков в частности, база то просто хранит нужное значение в нужный момент времени.
    Кстати сейчас по идее можно использовать ту же Grafana для отображения канала с архивом, в котором будут записи раз в пол часа. Настроить чтобы график рисовался без разрывов и все.

    #15972
    Romiros
    Участник

    Если это потребуется, то могу разработать утилиту.

    Это в смысле, она будет пересобирать архивные файлы заново и добавлять в старые файлы каналы из последнего среза? А после этого можно будет запускать драйвер и закачивать архив за далекое прошлое?

    #15973
    manjey73
    Участник

    На счет Графана интересная мысль, надо будет потом попробовать. Собственно хотелось бы хранить как есть, то есть точка в полчаса, никаких повторений.
    В будущем это позволит в новых БД хранить меньше информации, не будет раздуваться база, хотелось бы, чтобы не раздувалась. Но при этом чтобы график строился по точкам, какие есть, а не все минутно…

    Вот и хотелось бы, чтобы был механизм, позволяющий закачивать архивы за далекое прошлое… если можно так выразиться.

    #15993
    Mikhail
    Модератор

    Это в смысле, она будет пересобирать архивные файлы заново и добавлять в старые файлы каналы из последнего среза? А после этого можно будет запускать драйвер и закачивать архив за далекое прошлое?

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

    #15994
    Mikhail
    Модератор

    Например подключили прибор, драйвер определил что есть архив за год и он может их передать, Сервер сообщает какими порциями можно (или через настройку шаблона указывать, что порции будут такими-то) и периодически драйвер будет вычитывать и передавать, а модуль их добавлять в БД.

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

    Из существующих драйверов, работающих с архивами, это драйвер теплосчётчика ВКТ-7. В нём для часовых и суточных архивных данных создаются отдельные теги КП (и нужны соответствующие каналы). По объёму данных в архиве получается не оптимально, но зато есть разделение суточных и часовых архивов.

    #15997
    Mikhail
    Модератор

    Как вариант, заранее завести активные входные каналы под несколько будущих приборов.

    #16006
    manjey73
    Участник

    Ну если прибор новый, то создать каналы не вопрос. Сейчас так и пытаюсь сделать. Пока для теста передаю при помощи SetCurData, но надо поменять, чтобы данные записались строго в точку времени. В моем случае это каждые полчаса.

    я про «на будущее». общий модуль такой бы не помешал для всех драйверов, который бы получив данные за Х времени пересоздал бы архивы и записал бы в них данные.
    Ну и если появится, описание работы с этим механизмом из драйвера. Пусть это будет с некоторыми ограничениями, например обязательно создать каналы, куда помещать данные (что в принципе нормально).

    #16021
    Mikhail
    Модератор

    Если пересоздавать архивы утилитой, то нужно остановить Сервер, чтобы избежать возможной некорректной работы. Поэтому модуль не сможет пересоздать архивы на лету.

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

Просмотр 13 сообщений - с 16 по 28 (из 28 всего)
  • Вы должны авторизироваться для ответа в этой теме.