Стартовая страница › Форумы › Понять, как работает ПО › Графики и Графики Про V6
- В этой теме 57 ответов, 5 участников, последнее обновление 1 год, 7 месяцев назад сделано Mikhail.
-
АвторСообщения
-
21.05.2022 в 14:47 #23634manjey73Участник
Вопрос, обычные Графики и Графики Про на 6-й версии умеют строить график по точкам, если в БД будут записываться единичные значения а не каждую минуту ?
з.ы. важно, так как переделываю драйвер для счетчиков Меркурий 23х и надо понять как записывать в архив данные, по тому же принципу, как делал для 5-й версии или просто можно записать значение на точку времени и не париться ?
22.05.2022 в 14:19 #23636MikhailМодераторСоединять 2 точки линией или не соединять, зависит от параметра GapBetweenPoints. Так было и раньше.
Для базовых графиков этот параметр общий на экземпляр.
Для Графиков Про добавлено понятие профиль графика, который содержит настройки отображения, архив, из которого брать данные, и расстояние между точками. Профиль можно выбрать https://ibb.co/FwWnrwv или прописать в параметрах ссылки.Ещё для Графиков Про добавлена возможность сделать представления с графиком. То есть прописать одну строчку в таблице Представления, чтобы в дереве появился узел, при выборе которого отображается заранее настроенный график.
Думаю, заполнять промежуточные точки в архиве не нужно. Если требуется интерполяция или столбчатые графики, то можно Grafana встроить в WebPageView.
- Этот ответ был изменен 1 год, 11 месяцев назад от Mikhail.
22.05.2022 в 18:34 #23638manjey73УчастникНе вижу в ссылке для скачивания Графиков Про, только готовится к выпуску с очередной Beta ?
Хотелось бы проверить работу графиков с построением по точкам и удалить из драйвера наконец колхоз, с этим связанный.
23.05.2022 в 15:55 #23648manjey73Участник<Option name="GapBetweenPoints" value="90" />
— что здесь означает 90 и что необходимо для соединения по точкам ?- Этот ответ был изменен 1 год, 11 месяцев назад от Mikhail.
23.05.2022 в 16:24 #23650MikhailМодераторГрафики Про ещё в разработке. Вероятно, плагин будет выпущен одновременно со следующем бета-релизом.
90 — это количество секунд. То есть точки будут соединены, если их время различается на 90 секунд или менее.
23.05.2022 в 16:46 #23653manjey73УчастникКривая настройка какая-то, запись раз в 30 минут и это только для нескольких каналов, фактически использовать данный параметр для всего и вся нельзя…
Еще момент, так понимаю нельзя настроить соединение точек только нескольким каналам из драйвера по умолчанию, даже при использовании Графиков Про ?
Такая настройка нужна именно для отдельно взятых каналов…
23.05.2022 в 17:04 #23654manjey73УчастникСмысл настройки понятен, но это к сожалению не то, что хотелось бы видеть.
В идеале из драйвера указать, что такой-то такой-то канал на любых графиках соединять точки…
Если это будет хотя бы в Графиках Про, уже легче.
Идея в том, чтобы не создавать каких-то специальных отображений под Графики Про или тем более штатные Графики под строго типизированные отдельные каналы в каждом устройстве, а чтобы это работало из коробки и сразу после добавления каналов.К сожалению это не данные какого-то другого канала, канал сам по себе…
24.05.2022 в 09:32 #23660manjey73УчастникМихаил, попробую объяснить. Профили средних мощностей из счетчика это уникальные каналы, являются расчетными непосредственно счетчиком. На графике это должно быть точками с периодом 30 минут (данный период настраивается в счетчике).
Так как время между счетчиком и ПК может быть не синхронизировано на 100% а так же что опрос занимает какое-то время то данные считываются чуть позже наступления времени расчета.
На графике должны быть ТОЛЬКО точки, согласно периоду (каждые 30 минут в данном случае) соединенные между собой линией графиков без каких-то разрывов.
Ну и второй момент, как избавиться от промежуточно записанных в БД значений между точками (подчеркнул зеленым) из драйвера ?Запись данных параметров происходит при помощи DeviceData.EnqueueSlice и никак иначе, то есть для этих каналов отсутствует в прямом смысле постоянной записи в DeviceData.Set только при формировании среза.
DateTime sliceDT = TimeZoneInfo.ConvertTimeToUtc(writeDt); DeviceSlice slice = new DeviceSlice(sliceDT, profile.Count, profile.Count); for (int pf = 0; pf < profile.Count; pf++) { // считаем среднее мощности согласно формуле раздела 2.4 double prof = (double)BitConverter.ToUInt16(inBuf, znx + profile[pf].offset) * (60 / inBuf[7]) / (2 * prop.Aconst); int cnlStat = halfSrez ? halfArch : 2; slice.DeviceTags[pf] = DeviceTags[profile[pf].code]; slice.CnlData[pf] = new CnlData(prof * profile[pf].range, cnlStat); DeviceData.Set(DeviceTags[profile[pf].code].DataIndex, prof * profile[pf].range, cnlStat); // TEST оставляем только одну запись } slice.Descr = "Запись средних мощностей " + nowDt.ToString(); DeviceData.EnqueueSlice(slice);
Какое может быть решение ?
24.05.2022 в 11:11 #23663a80808УчастникТак как время между счетчиком и ПК может быть не синхронизировано на 100% а так же что опрос занимает какое-то время то данные считываются чуть позже наступления времени расчета.
Во всех АИИСКУЭ и им подобных никогда не берется время ПК, всегда используется время снятия показаний из счетчика. Вопрос как заставить рисовать график не по точкам времени ПК а по точкам, полученным из счетчика…24.05.2022 в 11:29 #23664manjey73Участник@a80808 синхронизировать время ПК и счетчик не проблема, у меня это выполняется.
Речь идет о том, что запросы медленные и когда запрос заканчивается, то это уже другое время, при этом в счетчики на данные параметры есть метка времени, я в нее и пишу данные. Вопрос как записать только в эту точку времени, чтобы после нее не было значений?Все эти теги держать всегда в Invalidate ? тупой расход БД как ни крути, хоть сохраняй как делал раньше, хоть держи их не валидными.
Вот об этом раньше и писал, что БД в том виде в каком они есть ВРЕДНЫ…А пока по 6-й версии не вижу изменений по крайней мере в базовом варианте БД. А новые как-то не написаны…
24.05.2022 в 14:23 #23684MikhailМодераторКоммуникатор отвечает за получение и передачу данных. Отображение должно настраиваться на другом уровне системы.
Было бы логично для профилей средних мощностей создать отдельный архив в базе конфигурации и настройках Сервера. В настройках драйвера указать, что профили пишутся в этот архив. Тогда промежуточных точек не будет.
На графике должны быть ТОЛЬКО точки, согласно периоду (каждые 30 минут в данном случае) соединенные между собой линией графиков без каких-то разрывов.
Если в архиве период будет стоять 30 минут, то так и получится.
Параметры отображения, в том числе архив и разрыв между точками, задаются в профиле графика.То есть возникает вопрос, как автоматически выбрать профиль графика в зависимости от того, график какого канала открыли. Самое примитивное решение — по номеру канала. Но этот вариант не масштабируется. Может быть есть ещё какие-то удобные критерии выбора профиля графика в зависимости от канала?
24.05.2022 в 14:25 #23685MikhailМодераторУ класса DeviceSlice есть свойство ArchiveMask, которое определяет, в какой архив запишется срез.
Его можно не задавать, тогда архив выбирается на основе свойств каналов.24.05.2022 в 14:30 #23686MikhailМодераторРежим архива «по требованию» позволяет писать только по явной передаче данных из Коммуникатора.
24.05.2022 в 14:53 #23687manjey73УчастникБыло бы логично для профилей средних мощностей создать отдельный архив в базе конфигурации и настройках Сервера. В настройках драйвера указать, что профили пишутся в этот архив. Тогда промежуточных точек не будет.
Михаил, не создавая новое Устройство возможно в 6-й версии указывать определенную БД из драйвера ? Например создаем архив с 30 мин периодом, даем ему имя. В настройках Драйвера указываем имя архива для требуемых переменных.
В общем если это возможно, опишите процедуру как это сделать правильно.
Попробую перенаправить в 30 минутный. Просто хотелось бы, чтобы такие вещи происходили автоматически при создании каналов из подключенного драйвера\
Непонятно только ситуация с текущими данными, так как при ошибке связи все каналы переводятся в не валидное состояние и потом стоят прочерки в Коммуникаторе до следующего чтения параметров. Нет механизма исключения тегов каналов для общей команды Invalidate
- Этот ответ был изменен 1 год, 11 месяцев назад от manjey73.
24.05.2022 в 15:15 #23689manjey73УчастникЕсли бы еще объяснили какой из архивов «По требованию» ?
Events (События) ?В некоторых местах по английски осталось…
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.