Графики и Графики Про V6

Просмотр 15 сообщений - с 1 по 15 (из 56 всего)
  • Автор
    Сообщения
  • #23634
    manjey73
    Участник

    Вопрос, обычные Графики и Графики Про на 6-й версии умеют строить график по точкам, если в БД будут записываться единичные значения а не каждую минуту ?

    з.ы. важно, так как переделываю драйвер для счетчиков Меркурий 23х и надо понять как записывать в архив данные, по тому же принципу, как делал для 5-й версии или просто можно записать значение на точку времени и не париться ?

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

    Соединять 2 точки линией или не соединять, зависит от параметра GapBetweenPoints. Так было и раньше.

    Для базовых графиков этот параметр общий на экземпляр.
    Для Графиков Про добавлено понятие профиль графика, который содержит настройки отображения, архив, из которого брать данные, и расстояние между точками. Профиль можно выбрать https://ibb.co/FwWnrwv или прописать в параметрах ссылки.

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

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

    • Этот ответ был изменен 1 месяц, 1 неделя назад от Mikhail.
    #23638
    manjey73
    Участник

    Не вижу в ссылке для скачивания Графиков Про, только готовится к выпуску с очередной Beta ?

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

    #23648
    manjey73
    Участник

    <Option name="GapBetweenPoints" value="90" /> — что здесь означает 90 и что необходимо для соединения по точкам ?

    • Этот ответ был изменен 1 месяц, 1 неделя назад от Mikhail.
    #23650
    Mikhail
    Модератор

    Графики Про ещё в разработке. Вероятно, плагин будет выпущен одновременно со следующем бета-релизом.

    90 — это количество секунд. То есть точки будут соединены, если их время различается на 90 секунд или менее.

    #23653
    manjey73
    Участник

    Кривая настройка какая-то, запись раз в 30 минут и это только для нескольких каналов, фактически использовать данный параметр для всего и вся нельзя…

    Еще момент, так понимаю нельзя настроить соединение точек только нескольким каналам из драйвера по умолчанию, даже при использовании Графиков Про ?

    Такая настройка нужна именно для отдельно взятых каналов…

    #23654
    manjey73
    Участник

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

    В идеале из драйвера указать, что такой-то такой-то канал на любых графиках соединять точки…
    Если это будет хотя бы в Графиках Про, уже легче.
    Идея в том, чтобы не создавать каких-то специальных отображений под Графики Про или тем более штатные Графики под строго типизированные отдельные каналы в каждом устройстве, а чтобы это работало из коробки и сразу после добавления каналов.

    К сожалению это не данные какого-то другого канала, канал сам по себе…

    #23660
    manjey73
    Участник

    Channel

    Михаил, попробую объяснить. Профили средних мощностей из счетчика это уникальные каналы, являются расчетными непосредственно счетчиком. На графике это должно быть точками с периодом 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);
    

    Какое может быть решение ?

    • Этот ответ был изменен 1 месяц, 1 неделя назад от manjey73.
    • Этот ответ был изменен 1 месяц, 1 неделя назад от manjey73.
    #23663
    a80808
    Участник

    Так как время между счетчиком и ПК может быть не синхронизировано на 100% а так же что опрос занимает какое-то время то данные считываются чуть позже наступления времени расчета.
    Во всех АИИСКУЭ и им подобных никогда не берется время ПК, всегда используется время снятия показаний из счетчика. Вопрос как заставить рисовать график не по точкам времени ПК а по точкам, полученным из счетчика…

    #23664
    manjey73
    Участник

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

    Все эти теги держать всегда в Invalidate ? тупой расход БД как ни крути, хоть сохраняй как делал раньше, хоть держи их не валидными.
    Вот об этом раньше и писал, что БД в том виде в каком они есть ВРЕДНЫ…

    А пока по 6-й версии не вижу изменений по крайней мере в базовом варианте БД. А новые как-то не написаны…

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

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

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

    На графике должны быть ТОЛЬКО точки, согласно периоду (каждые 30 минут в данном случае) соединенные между собой линией графиков без каких-то разрывов.

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

    То есть возникает вопрос, как автоматически выбрать профиль графика в зависимости от того, график какого канала открыли. Самое примитивное решение — по номеру канала. Но этот вариант не масштабируется. Может быть есть ещё какие-то удобные критерии выбора профиля графика в зависимости от канала?

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

    У класса DeviceSlice есть свойство ArchiveMask, которое определяет, в какой архив запишется срез.
    Его можно не задавать, тогда архив выбирается на основе свойств каналов.

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

    Режим архива «по требованию» позволяет писать только по явной передаче данных из Коммуникатора.

    #23687
    manjey73
    Участник

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

    Михаил, не создавая новое Устройство возможно в 6-й версии указывать определенную БД из драйвера ? Например создаем архив с 30 мин периодом, даем ему имя. В настройках Драйвера указываем имя архива для требуемых переменных.

    В общем если это возможно, опишите процедуру как это сделать правильно.

    Попробую перенаправить в 30 минутный. Просто хотелось бы, чтобы такие вещи происходили автоматически при создании каналов из подключенного драйвера\

    Непонятно только ситуация с текущими данными, так как при ошибке связи все каналы переводятся в не валидное состояние и потом стоят прочерки в Коммуникаторе до следующего чтения параметров. Нет механизма исключения тегов каналов для общей команды Invalidate

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

    Если бы еще объяснили какой из архивов «По требованию» ?
    Events (События) ?

    В некоторых местах по английски осталось…

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