Стартовая страница › Форумы › Разработка и интеграция › Чтение срезов (архивов) запись куда ?
- В этой теме 27 ответов, 3 участника, последнее обновление 3 года, 11 месяцев назад сделано Mikhail.
-
АвторСообщения
-
08.05.2020 в 21:45 #15942manjey73Участник
Добрый день. Разбираюсь тут с чтением срезов средних мощностей. Возникли вопросы.
Например я определил, что есть данные за месяц, прибор подключен первый раз, куда считать эти данные ? базы то еще нет за месяц ранее ? задним числом то нельзя создать БД с каналами ?
Каналы предположим будут созданы, но днем ранее и тем более позже их нет в БД.В общем не совсем ясно как их распихивать.
Например вот у меня есть счетчик, который уже работал. Я создаю 4 канала для A+, R+, R- для средних срезов с периодом 30 минут.
Можно записывать только с текущего момента ?
Как проверять, что каналы уже записаны если происходит перезапуск Коммуникатора ?
Допустим за неделю мы записали данные, потом перезапуск линии связи, как узнать, что не надо считывать по новой?
замечу нюанс, шаблон для однотипных приборов ОДИН, записывать в него данные не получится, да и не очень то хочется это хранить именно в шаблоне08.05.2020 в 22:16 #15943RomirosУчастникВ канал можно записать архив только если он уже существовал. То есть если канал создали сегодня, вчерашний архив не запишешь. Ну или убить все архивные файлы и тогда хоть на 10 лет назад.
При перезапуске коммуникатора можно считать архивы из базы и определить последнюю запись, чтобы не перечитывать заново.
09.05.2020 в 09:45 #15944manjey73УчастникА как определить где последняя запись ? например если она 0 или — недостоверная ?
Еще такой вопрос, срез средней мощности при интервале 30 минут выглядит так
00:30 — значение
01:00 — значение
01:30 — значениеА что в промежутках ? недостоверные данные получатся ? мне же надо именно в это время записать данные и не просто в мощность текущую, так как значения будут сильно разные.
Как-то существующие БД не сильно подходят.Вот к примеру счетчик установили, он отработал месяц, а то и год, а потом его подключили к Scada.
- Этот ответ был изменен 3 года, 11 месяцев назад от manjey73.
09.05.2020 в 10:19 #15946RomirosУчастникПри записи архива нужно устанавливать статус — архивный(2), ну или свой какой удобен. Дальше при старте линии в архиве БД скады ищется последняя запись с этим статусом.
Насчёт подключения прибора, которого раньше не было в скаде и загрузки его архива может Михаил подскажет каким путем идти. Может как-то напрямую работать с файлами dat.
А что в промежутках ?
Я пишу архивы в теме каналы, где и текущие значения. То есть в минутном срезе хранятся текущие, а в часовом архивы.- Этот ответ был изменен 3 года, 11 месяцев назад от Romiros.
09.05.2020 в 11:09 #15948manjey73УчастникПисать срезы мощностей в текущие НЕПРАВИЛЬНО, потому что это средняя мощность за период, а не просто архивные данные на этот момент времени
1. средняя мощность рассчитывается по формуле, соответственно текущая на момент часа может быть 23 кВт, а средняя может быть 15 кВт и получится фигня может я не прав ?
2. если у нас длительность интегрирования 30 минут, то на один час всего 2 записи, в начале часа и в серединеВот на будущее для новых БД.
1. создаем канал в отдельной БД архивов
2. если в приборе есть данные, а мы его только подключили к Scada то определение необходимого количества ячеек и создание сервером задним числом требуемых записей с меткой времени.09.05.2020 в 11:11 #15949manjey73УчастникПока я не понимаю, как поступать со срезами мощностей, как их и куда ?
и главное как прочитать все данные и распихать в БД, где еще не было записей этих данныхС мгновенными значениями все ясно, они есть только в один момент времени — СЕЙЧАС. по этому и пишутся в текущие данные а сервер сам их сохраняет по мере указанного времени 1 минута или 30 сек.
А вот со срезами не совсем понятно. Если бы срезы были просто сохранением на точку времени текущих значений, то да, просто ставим тег архивным, но тут блин расчет формулы.
- Этот ответ был изменен 3 года, 11 месяцев назад от manjey73.
09.05.2020 в 12:06 #15951RomirosУчастникЕсть возможности скады в плане ведения архивов и они неизменны. Даже если будет создано 15 отдельных архивных баз, их возможностей все-равно в какой-то момент не хватит. Понятно что скаду нужно развивать в плане архивирования, но пока нужно максимально подстраиваться под то что есть.
Мы имеем:
1. Текущий срез — просто мгновенное значение
Какой может быть архив? Это в основном — последнее значение, среднее, сумма, дельта, ну может максимальное — минимальное, мало ли какие задачи. Такая архивация справедлива и для минуты и для часа.Если значение создаваемое архивом как-то сильно нарушает логику канала с текущими значениями, то может лучше создать отдельный канал для архива и не писать туда текущие значения.
Я пишу архивы в текущие каналы, потому-что В МОЁМ СЛУЧАЕ это не противоречит логике. Например расход газа.
Текущий срез — мгновенное значение в текущий момент времени
Минутный срез — среднее значение из текущих за минуту
Часовой срез — среднее значение из минутных архивов за час
Из архива прибора я извлекаю расход за час (а это такой же средний расход построенный из текущих значений только самим прибором) и перезаписываю часовой срез сформированный скадой. В данном случае логика не нарушается.А если Вы вели в текущих значениях мощность, а потом в часовой архив хотите вписать разницу за месяц, может правильнее создать для такого архива отдельный канал, а в текущих у него будут прочерки.
09.05.2020 в 15:11 #15952manjey73УчастникРазве минутные и часовые данные в БД Scada это не значение текущего на момент записи в эту мину и час ? откуда там среднее ?
Я тоже склоняюсь к дополнительным каналам. Вопрос как их записать в БД на момент, когда данных еще не было ? Или создать каналы и только через сутки выполнить запись суточных ?, когда БД увеличится на месяц создать месячные и т.д. то есть только после подключения счетчика к Scada, так как задним числом из счетчика не получится из драйвера создать базы.
Ну почему не хватит возможностей ? если это часовые данные из архива прибора или получасовые, то в БД на канал достаточно выделить всего 12 или 24 ячейки на сутки а не 24*60 при минутной записи или 24*120 при 30 сек. записи.
в общем буду как-то пробовать. Сейчас еще надо разобраться как вычислять ячейку памяти среза по требуемой дате… тот еще квест у Меркурия…
- Этот ответ был изменен 3 года, 11 месяцев назад от manjey73.
09.05.2020 в 16:56 #15954RomirosУчастникоткуда там среднее ?
Галочка «усреднение» в свойствах канала.
09.05.2020 в 17:38 #15955manjey73УчастникПонятно, но это среднее за минуту, при чтении текущих данных например 3 раза в минуту.
За час что будет ? например 15 минут была нагрузка 10 кВт, а 45 минут была нагрузка 2 кВт.Что тут будет средним в каждые пол часа как выдает счетчик ?
09.05.2020 в 18:01 #15956RomirosУчастникНаверное так ((15*10)+(45*2))/60. Но скада конечно считает не так. Она просто складывает значение за каждую минуту и делит на количество минут, где значение не равно null.
09.05.2020 в 18:13 #15957manjey73УчастникА по формуле счетчика расчет такой
значение среднего в десятичном которое отдает счетчик 10500
10500*(60/30)/(2*1000) = 10,5 кВт
30 тут период интегрирования в минутах. а 1000 постоянная счетчика в имп/квт*ч
Если постоянная будет 500, то в итоге будет 21 кВт за полчаса среднее
А как он усредняет внутри самого счетчика фиг его знает.09.05.2020 в 18:21 #15958RomirosУчастникА какое это вообще имеет значение? Архив скачивается, чтобы получить готовую цифру и не важно, как она считается. Ставим период архивации раз в 30 минут. И отправляем скачанный архив в нужный срез.
09.05.2020 в 19:12 #15959manjey73УчастникПериод архивации чего ? БД Scada ? а как остальные каналы ? или о каком периоде архивации идет речь ?
Так готовую цифру надо еще через формулу прогнать, судя по документации счетчика.
В ответе передается время например в 02:30, Значение, Период (у меня 30 мин), и еще байт состояния, полный срез или нет и т.д. и это надо все в формулу, подставив Постоянную счетчика (у меня 500 имп/кВт*ч) и только тогда мы получаем среднее мощности за 30 минут. Почему они сразу туда не пишут значение после расчета я фиг его знает… Скорее всего экономили ячейки, так как Постоянная может быть и 25000 и 5000
непонятно зачем правда?09.05.2020 в 19:35 #15960RomirosУчастникРасчет по идее нужно в драйвере сделать, хотя Вам виднее, как там всё устроено, я с такими приборами не работал. А вот по поводу архива да, если нужен получасовой архив, то его нужно выставлять в скаде. Остальные каналы естественно тоже станут получасовым.
А 30 минут это только из-за этого типа счётчика? Весь проект не должен быть в таком срезе? А если другой прибор раз в 7 минут архивирует, то добавлять 7-ми минутный архив? Нельзя ли архив прибора привести к часу, объединив два получасовых? -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.