Стартовая страница › Форумы › Разработка и интеграция › Чтение срезов (архивов) запись куда ?
- В этой теме 27 ответов, 3 участника, последнее обновление 3 года, 10 месяцев назад сделано Mikhail.
-
АвторСообщения
-
09.05.2020 в 22:01 #15961manjey73Участник
По идее можно в счетчике указать период интеграции 60 минут, или объединить в драйвере.
Нет, БД Scada должна работать как есть, либо с минутным сохранением, либо с меньшим.
Я говорил вообще для Михаила, что с появлением новых БД для архивов надо будет делать различные варианты.
В одном случае это кольцевые базы, точнее по принципу стека, задали например хранение год с месячным интервалом на 3 года, и идет вытеснение самых старых и добавление новых.
И таких БД надо несколько. То есть
1. Годовые по месячно на Х лет. например 3 года это 36 ячеек на канал
2. Суточные на Х лет, на те же 3 года это 31*12*3=1116 ячеек на канал.
Ну и т.д. Кроме разделения хранения данных в обычной БД, чтобы одни каналы сохранялись раз в минуту, а выбранные раз в 10 сек например.
+ возможность хранить текст не в пределах 8 байт… в общем много нюансов, которые непонятно как реализовывать. Только идеи блин….10.05.2020 в 11:03 #15964MikhailМодераторCommLineSvc.FlushArcData обеспечивает гарантированную отправку среза на Сервер.
Если нужно закачать архив за тот период, когда входных каналов ещё не было в файлах срезов, то эти файлы срезов нужно пересоздать с учётом всех каналов в базе конфигурации. Если это потребуется, то могу разработать утилиту.
Т.к. тема длинная, что мог упустить какой-либо вопрос ко мне.
10.05.2020 в 11:05 #15966MikhailМодераторРабота с архивами будет дополняться в 6-м поколении Rapid SCADA, т.к. требует серьёзных изменений.
10.05.2020 в 14:09 #15968manjey73УчастникСейчас то что делать ? 🙂
Просто не понимаю, по какому пути пойти. До плагинов и взаимосвязью их с драйвером мне очень далеко в плане программирования. Этот вариант пока не рассматриваю.
Что имеем. Создаем каналы для счетчика — мгновенные значения (мощность, напряжение, ток, косинус и т.д.) с этим проблем нет, это просто текущие данные, Сервером будут записывать раз в минуту по умолчанию.
А вот Срезы средних мощностей ? Например так же. создаем каналы для A+, R+, R- (A- не трогаем, так как всегда ноль, но имеем ввиду, тут просто не делать привязку к серверу и все, если понадобится, привяжем).
Могу прочитать срез например по времени, если период интеграции в счетчике 30 минут, то проверяем время и как 30 мин прошло, вычитываем и сохраняем в указанное время в БД так же как и остальные каналы.
00:30, 01:00, 01:30, 02:00 и так далее и распихиваем по каналам именно в то же время, которое указано в счетчике.То есть каналы срезов будут формироваться так же, как и обычные данные.
Тут интересует вопрос, что в БД будет в промежутках ? — — — или то же значение что и в точке записи ? Отмечать как архивные данные. Если то же значение, как сделать — — -. Как при этом будет происходить построение графика ? точками полагаю, как добиться нормального графика в данном случае ?
- Этот ответ был изменен 3 года, 10 месяцев назад от manjey73.
10.05.2020 в 16:29 #15970manjey73УчастникВообще между сервером и коммуникатором должны быть механизмы передачи архивных данных не для отдельно взятого устройства а вообще. И какой-то модуль сервера, который бы распихивал эти данные по БД, с возможностью их пересоздания, добавления каналов, если их ранее не существовало и т.д. в фоновом режиме. И какой-то признак, что все данные переданы и записаны для тех же мнемосхем например. Возможность выполнять обработку частями.
Например подключили прибор, драйвер определил что есть архив за год и он может их передать, Сервер сообщает какими порциями можно (или через настройку шаблона указывать, что порции будут такими-то) и периодически драйвер будет вычитывать и передавать, а модуль их добавлять в БД.
10.05.2020 в 16:53 #15971RomirosУчастникЯ думаю все на самом деле проще. Создайте отдельный канал для архива. Запишите туда значение на 0:00. Если нужно отображать эти данные в минутном графике, то отправляем это же значение в текущий срез. Будет прямая линия в течении 30 минут. На 0:30 таким же образом записываем новое значение. Понятно если архив запрашивается за прошлое то минутный график не получится. Но здесь я думаю более правильно отображать минутные срезы в минутном графике, часовые в часовом, суточные в суточном и т.д. Вопрос больше к отображению информации, к плагину графиков в частности, база то просто хранит нужное значение в нужный момент времени.
Кстати сейчас по идее можно использовать ту же Grafana для отображения канала с архивом, в котором будут записи раз в пол часа. Настроить чтобы график рисовался без разрывов и все.10.05.2020 в 17:05 #15972RomirosУчастникЕсли это потребуется, то могу разработать утилиту.
Это в смысле, она будет пересобирать архивные файлы заново и добавлять в старые файлы каналы из последнего среза? А после этого можно будет запускать драйвер и закачивать архив за далекое прошлое?
10.05.2020 в 19:50 #15973manjey73УчастникНа счет Графана интересная мысль, надо будет потом попробовать. Собственно хотелось бы хранить как есть, то есть точка в полчаса, никаких повторений.
В будущем это позволит в новых БД хранить меньше информации, не будет раздуваться база, хотелось бы, чтобы не раздувалась. Но при этом чтобы график строился по точкам, какие есть, а не все минутно…Вот и хотелось бы, чтобы был механизм, позволяющий закачивать архивы за далекое прошлое… если можно так выразиться.
12.05.2020 в 09:43 #15993MikhailМодераторЭто в смысле, она будет пересобирать архивные файлы заново и добавлять в старые файлы каналы из последнего среза? А после этого можно будет запускать драйвер и закачивать архив за далекое прошлое?
Да, идея именно такая. Пересобрать архивные файлы на основе актуальной таблицы входных каналов и скопировать в них имеющиеся данные.
12.05.2020 в 09:47 #15994MikhailМодераторНапример подключили прибор, драйвер определил что есть архив за год и он может их передать, Сервер сообщает какими порциями можно (или через настройку шаблона указывать, что порции будут такими-то) и периодически драйвер будет вычитывать и передавать, а модуль их добавлять в БД.
Основная проблема здесь именно в том, что в старые файлы архива не будут добавляться новые каналы. То есть файлы потребуется пересоздать.
Из существующих драйверов, работающих с архивами, это драйвер теплосчётчика ВКТ-7. В нём для часовых и суточных архивных данных создаются отдельные теги КП (и нужны соответствующие каналы). По объёму данных в архиве получается не оптимально, но зато есть разделение суточных и часовых архивов.
12.05.2020 в 09:54 #15997MikhailМодераторКак вариант, заранее завести активные входные каналы под несколько будущих приборов.
13.05.2020 в 08:57 #16006manjey73УчастникНу если прибор новый, то создать каналы не вопрос. Сейчас так и пытаюсь сделать. Пока для теста передаю при помощи SetCurData, но надо поменять, чтобы данные записались строго в точку времени. В моем случае это каждые полчаса.
я про «на будущее». общий модуль такой бы не помешал для всех драйверов, который бы получив данные за Х времени пересоздал бы архивы и записал бы в них данные.
Ну и если появится, описание работы с этим механизмом из драйвера. Пусть это будет с некоторыми ограничениями, например обязательно создать каналы, куда помещать данные (что в принципе нормально).13.05.2020 в 18:44 #16021MikhailМодераторЕсли пересоздавать архивы утилитой, то нужно остановить Сервер, чтобы избежать возможной некорректной работы. Поэтому модуль не сможет пересоздать архивы на лету.
На будущее надо подумать, возможно ли сделать такой формат таблиц срезов, чтобы можно было добавить новые каналы, дописав их к существующим архивным файлам без пересоздания. Весьма своевременно подняли этот вопрос.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.