Сохранение архивных данных

Стартовая страница Форумы Разработка и интеграция Сохранение архивных данных

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

    А разве их можно отправить пачкой ?

    TagSrez srez = new TagSrez(количество); — создается срез на нужное количество
    srez.DateTime = Указываем время куда записать (DateTime)
    srez.KPTags[индекс] = KPTags[Индекс]; — копируются данные какого именно тега перенос.
    srez.TagData[индекс] = new SrezTableLight.CnlData(значение, BaseValues.CnlStatuses.Archival); — собственно заносится значение

    AddArcSrez(srez); ну и создание среза

    Есть возможность сделать TagSrez многоуровневым ?, вроде нет возможности
    За раз можно перенести несколько переменных но в одну точку времени. Вроде по коду никак иначе.

    Долго, если большой период выбрать, я тут ошибся со временем, несколько секунд только одну переменную переносил. Думал зависло все, и так каждую из 3-х переменных 🙂

    • Этот ответ был изменен 3 года, 11 месяцев назад от manjey73.
    #16049
    Mikhail
    Модератор

    Как заполнить отрезок от точки времени фиксации среза в приборе, до точки времени в БД Scada на момент чтения архива ?

    В драйвере ВКТ-7 архив пишется на каждую минуту в промежутке. Не оптимально, но пока так.

    // дублирование часового среза для наглядности представления
    DateTime lastDT = hrReqDT.AddHours(1.0);
    for (DateTime arcDT = lastDT; arcDT > hrReqDT; arcDT = arcDT.AddMinutes(-hrArcStep))
        AddArcSrez(NewArcSrez("Часовой архив", arcDT, 37));

    NewArcSrez — создаёт архивный срез

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

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

    #16052
    manjey73
    Участник

    Ну вот механизмы записи архивов как-то улучшить. Хотя бы возможность порциями кидать.

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

    #16053
    manjey73
    Участник

    Михаил, я это делаю, чтобы как-то обойти рассинхронизацию часов счетчика и ПК. Чем меньше будет рассинхронизация, тем меньше будет отправляться повторных данных.

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

    Соответственно если я буду читать архив сразу после его создания, то меньше данных копировать.
    Сейчас у меня опрос КП, в котором идет проверка каждые 5 минут, соответственно на получасовой архив максимум два запроса, так как первый может произойти до появления нового архива, то на втором опросе он уже появится и я затру этот хвостик.
    Если чтение тех же профилей сделать в КП, который читается каждые 20 сек, то этот хвостик будет меньше. Должен быть меньше. При этом скорее всего запросов с проверкой наличия архива будет больше…

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

    Кстати еще один момент придумал, касается Графиков и Графиков Про, если бы можно было в свойствах канала указывать «Строить график по точкам» а не строго по минутным данным, то не пришлось бы весь этот огород и городить для красоты с заполнением всех полчаса теми же данными. Просто вычитывал бы данные на метки времени, указал бы в Администраторе на этих канала свойство «построение графика по точкам» и все.

    Все было бы прекрасно видно и понятно

    #16056
    Romiros
    Участник

    Михаил, я это делаю, чтобы как-то обойти рассинхронизацию часов счетчика и ПК. Чем меньше будет рассинхронизация, тем меньше будет отправляться повторных данных.
    Мне этот момент не понятен. По идее мы и так читаем текущие данные. В них получаем текущее время прибора. Определяем дельту со временем сервера и сохраняем её в переменную в драйвере. Далее отправляем запрос архивов из прибора при наступлении нужного времени с учетом этой дельты. В таком случае лишних запросов не будет. Я бы делал так. Или прибор не выдаёт время?

    Про отправку архивов пачкой, это я перепутал с FlushArcData() — отправка архивов сразу. Да пачкой нельзя, тут я подзабыл.

    #16057
    manjey73
    Участник

    Сейчас разность времени счетчика и ПК составляет около 4-х минут. Опрос КП каждые 5 минут стоит, но проверка наличия архива происходит каждые полчаса от времени среза в счетчике. По этому за полчаса конкретно на проверку архива уходит всего два опроса а не 6 раз за 30 минут.

    Корректировку времени на эти 4 минуты в драйвере не делаю. Не вижу смысла, так как время я чуть позже синхронизирую.
    Вот для другого прибора потребуется такая корректировка и мало того, надо быдет вычислять по разности, куда именно записать. То есть в приборе будет время архива 12:35, он отстает на 4 минуты, значит архив на самом деле имеет время 12:39
    Хотя особо то же не вижу надобности…
    Тут я чисто из-за красоты графика изголяюсь, потому что нельзя по точкам построить график.
    з.ы. Графану надо попробовать, что она умеет.

    #16058
    manjey73
    Участник

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

    Вот банально.
    1. Энергия Активная от сброса. мы прочитали ее из регистров прибора, самое последнее значение здесь и сейчас — это верно даже для атомных часов потому что здесь и сейчас
    2. Читаем эту же переменную из архива счетчика за вчера на 12:00 и оп-па, она не совпадет, потому что часы счетчика не бьют с часами, а мы ее взяли и записали как архивную

    Не помню, у меня какой-то прибор на 9 минут не бьет, производитель развел руками — нет у них синхронизации времени. А другой производитель — только паролем, а пароль не дадим…

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

    Кстати еще один момент придумал, касается Графиков и Графиков Про, если бы можно было в свойствах канала указывать «Строить график по точкам» а не строго по минутным данным, то не пришлось бы весь этот огород и городить для красоты с заполнением всех полчаса теми же данными.

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

    Как-то так: плагин графика получает информацию, с каким периодом записан архив и отображает его соответственно.

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

    Или прибор не выдаёт время?

    Зависит от прибора. Некоторые передают собственное время, некоторые нет.

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

    Не помню, у меня какой-то прибор на 9 минут не бьет, производитель развел руками — нет у них синхронизации времени. А другой производитель — только паролем, а пароль не дадим…

    Счётчики Энергомера позволяют 2 варианта:
    1. Установка времени по паролю
    2. Синхронизация секунд без пароля.

    А какие ещё приборы как себя ведут?

    #16065
    manjey73
    Участник

    Меркурий 23х
    1. установка времени с паролем администратора
    2 Корректировка времени в пределах 4 минут один раз в сутки, на вторую попытку отругался, что попытки кончились 🙂

    Я сейчас возможность команд прикручиваю к драйверу, уже скорректировал время на несколько минут под пользовательским паролем 🙂

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

    Теплосчетчик Wesser c M-Bus протоколом вообще не имеет возможности откорректировать время.

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