Стартовая страница › Форумы › Разработка и интеграция › Сохранение архивных данных
- В этой теме 27 ответов, 3 участника, последнее обновление 3 года, 11 месяцев назад сделано manjey73.
-
АвторСообщения
-
14.05.2020 в 19:26 #16048manjey73Участник
А разве их можно отправить пачкой ?
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.
14.05.2020 в 19:28 #16049MikhailМодераторКак заполнить отрезок от точки времени фиксации среза в приборе, до точки времени в БД Scada на момент чтения архива ?
В драйвере ВКТ-7 архив пишется на каждую минуту в промежутке. Не оптимально, но пока так.
// дублирование часового среза для наглядности представления DateTime lastDT = hrReqDT.AddHours(1.0); for (DateTime arcDT = lastDT; arcDT > hrReqDT; arcDT = arcDT.AddMinutes(-hrArcStep)) AddArcSrez(NewArcSrez("Часовой архив", arcDT, 37));
NewArcSrez — создаёт архивный срез
14.05.2020 в 19:30 #16051MikhailМодераторВообще, не оптимально передавать на Сервер дублирующие значения на каждую минуту. Надо что-то придумать в приложении, чтобы не передавать их.
14.05.2020 в 19:47 #16052manjey73УчастникНу вот механизмы записи архивов как-то улучшить. Хотя бы возможность порциями кидать.
В идеале, чтобы Коммуникатор при этом открывал бы дополнительный поток, не затормаживающий опрос устройств на линии. То есть подготовка архива, в какой-то из опросов команда на отправку и идем дальше. Потом получили флаг состояния, что все отправлено и можно новую порцию вычитывать…
14.05.2020 в 19:49 #16053manjey73УчастникМихаил, я это делаю, чтобы как-то обойти рассинхронизацию часов счетчика и ПК. Чем меньше будет рассинхронизация, тем меньше будет отправляться повторных данных.
Ну и само по себе возможность отправлять архив не в одну точку времени а в период с определенной точки времени, такое то количество и с таким то шагом (как у нас БД пишется) было бы не лишним.
Соответственно если я буду читать архив сразу после его создания, то меньше данных копировать.
Сейчас у меня опрос КП, в котором идет проверка каждые 5 минут, соответственно на получасовой архив максимум два запроса, так как первый может произойти до появления нового архива, то на втором опросе он уже появится и я затру этот хвостик.
Если чтение тех же профилей сделать в КП, который читается каждые 20 сек, то этот хвостик будет меньше. Должен быть меньше. При этом скорее всего запросов с проверкой наличия архива будет больше…- Этот ответ был изменен 3 года, 11 месяцев назад от manjey73.
14.05.2020 в 20:24 #16055manjey73УчастникКстати еще один момент придумал, касается Графиков и Графиков Про, если бы можно было в свойствах канала указывать «Строить график по точкам» а не строго по минутным данным, то не пришлось бы весь этот огород и городить для красоты с заполнением всех полчаса теми же данными. Просто вычитывал бы данные на метки времени, указал бы в Администраторе на этих канала свойство «построение графика по точкам» и все.
Все было бы прекрасно видно и понятно
14.05.2020 в 20:25 #16056RomirosУчастникМихаил, я это делаю, чтобы как-то обойти рассинхронизацию часов счетчика и ПК. Чем меньше будет рассинхронизация, тем меньше будет отправляться повторных данных.
Мне этот момент не понятен. По идее мы и так читаем текущие данные. В них получаем текущее время прибора. Определяем дельту со временем сервера и сохраняем её в переменную в драйвере. Далее отправляем запрос архивов из прибора при наступлении нужного времени с учетом этой дельты. В таком случае лишних запросов не будет. Я бы делал так. Или прибор не выдаёт время?Про отправку архивов пачкой, это я перепутал с FlushArcData() — отправка архивов сразу. Да пачкой нельзя, тут я подзабыл.
14.05.2020 в 20:31 #16057manjey73УчастникСейчас разность времени счетчика и ПК составляет около 4-х минут. Опрос КП каждые 5 минут стоит, но проверка наличия архива происходит каждые полчаса от времени среза в счетчике. По этому за полчаса конкретно на проверку архива уходит всего два опроса а не 6 раз за 30 минут.
Корректировку времени на эти 4 минуты в драйвере не делаю. Не вижу смысла, так как время я чуть позже синхронизирую.
Вот для другого прибора потребуется такая корректировка и мало того, надо быдет вычислять по разности, куда именно записать. То есть в приборе будет время архива 12:35, он отстает на 4 минуты, значит архив на самом деле имеет время 12:39
Хотя особо то же не вижу надобности…
Тут я чисто из-за красоты графика изголяюсь, потому что нельзя по точкам построить график.
з.ы. Графану надо попробовать, что она умеет.14.05.2020 в 20:36 #16058manjey73УчастникТак мгновенным данным фиолетово, какое там время на часах счетчика, тут достаточно, что ПК синхронизирован с сервером… Речь про архивы разные, они то метку времени получают от прибора… от тут и есть некоторое вранье.
Вот банально.
1. Энергия Активная от сброса. мы прочитали ее из регистров прибора, самое последнее значение здесь и сейчас — это верно даже для атомных часов потому что здесь и сейчас
2. Читаем эту же переменную из архива счетчика за вчера на 12:00 и оп-па, она не совпадет, потому что часы счетчика не бьют с часами, а мы ее взяли и записали как архивнуюНе помню, у меня какой-то прибор на 9 минут не бьет, производитель развел руками — нет у них синхронизации времени. А другой производитель — только паролем, а пароль не дадим…
15.05.2020 в 20:42 #16061MikhailМодераторКстати еще один момент придумал, касается Графиков и Графиков Про, если бы можно было в свойствах канала указывать «Строить график по точкам» а не строго по минутным данным, то не пришлось бы весь этот огород и городить для красоты с заполнением всех полчаса теми же данными.
Пришёл к точно такому же выводу. Если архив за час, то не нужно заполнять минутные данные. Нужно просто его корректно отобразить на графике.
Как-то так: плагин графика получает информацию, с каким периодом записан архив и отображает его соответственно.
15.05.2020 в 20:43 #16062MikhailМодераторИли прибор не выдаёт время?
Зависит от прибора. Некоторые передают собственное время, некоторые нет.
15.05.2020 в 20:45 #16063MikhailМодераторНе помню, у меня какой-то прибор на 9 минут не бьет, производитель развел руками — нет у них синхронизации времени. А другой производитель — только паролем, а пароль не дадим…
Счётчики Энергомера позволяют 2 варианта:
1. Установка времени по паролю
2. Синхронизация секунд без пароля.А какие ещё приборы как себя ведут?
15.05.2020 в 20:54 #16065manjey73УчастникМеркурий 23х
1. установка времени с паролем администратора
2 Корректировка времени в пределах 4 минут один раз в сутки, на вторую попытку отругался, что попытки кончились 🙂Я сейчас возможность команд прикручиваю к драйверу, уже скорректировал время на несколько минут под пользовательским паролем 🙂
Приборы Пульсар, корректировка времени только через пароль, каким-то образом вычисляется из серийного номера со слов производителя. Через пароль, потому что при корректировке сбрасываются биты, отвечающие за состояние магнитных электронных пломб или чего то там еще в счетчике
Теплосчетчик Wesser c M-Bus протоколом вообще не имеет возможности откорректировать время.
- Этот ответ был изменен 3 года, 11 месяцев назад от manjey73.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.