PDA

Просмотр полной версии : Дублирование в Тренде данных архива



maw
02.07.2023, 09:46
Мастерскада 3.12. Файловый архив заполняется только в С#-скрипте. Просмотр архива реализован через объект Тренд в формате "таблица значений".
Замечено, что при добавлении в архив через скрит новых значений введенные в данном сеансе RT значения появляются в Тренде в двух экземплярах.
Это продолжается пока не завершим RT. В DT на вкладке "Данные" архивируемых величин всё нормально - присутствует только один экземпляр.
Т.е. файловый архив заполняется нормально. При повторном запуске RT данные введенные в предыдущем сеансе отображаются корректно.
Похоже что-то с Трендом. Есть подозрение, что он отображает помимо данных из Файлового архива также данные из архива в оперативной памяти.
Может быть данные попадающие в файловый архив из С#-скрипта попадают туда через архив ОП. Что-то невнятное в документации есть.
Вопрос как победить проблему дублирования данных в Тренде (таблица-значений).

SCADAMaster
02.07.2023, 20:10
Что значит в "двух экземплярах"? Приведите несколько скриншотов.
Хотим также отметить, что если вы ведете заполнение архива из скрипта, то обязательно у переменных в которые пишите из скрипта, поставьте периодическую архивацию в шагом в 0.

maw
02.07.2023, 21:26
"в двух экземплярах" это значит полностью идентичные строки в таблице значений. Метки времени также абсолютно идентичные. Сколько бы значений не добавлялось в архив в данном сеансе RT, новые строки появляются дважды. Но что интересно сначала выводятся в тренде (таблице) все строки из файлового архива в нужном порядке (согласно метке времени) включая и строки из текущего RunTime, а после последней из них все строки-дубликаты из текущего сеанса RT. Такое впечатление, что дубликаты из временного архива взяты. После выхода из сеанса RT, и запуска нового RT в таблице-значений все нормально (дубликаты исчезают), пока не начнем добавлять в архив из скрипта новые значения. Периодическая архивация стоит с шагом 0. Более того я сделал конфигурацию на базе примера из блога InSat про скрипты (где генерация архива из CSV-файла). Изменил там скрипт, добавил тренд в виде таблицы и получил вышеописанный результат. Картинки завтра получу на работе и пришлю сюда.

maw
03.07.2023, 06:51
Высылаю скрины. 1. До запуска RT - 68572
2. В RT после добавления трех записей - 68573
3. После выхода из RT - 68574

4. Конфигурация со скриптом и трендом - 68575

SCADAMaster
03.07.2023, 14:05
Проблема не проявляется.
Попробуйте проверить на текущей Бета версии (лежит на том же FTP, где и Демо)

maw
04.07.2023, 07:56
Для проявления проблемы отключить автопрокрутку таблицы-значений, выставить верхнюю границу на подальше от текущей даты и нажать "обновить" на тулбаре.
У меня планируется месячная таблица. Накопленные данные с расходомера архивироваться будут один раз в сутки при старте RT (Все последующие Пуски RT в данных сутках архивировать не надо), а также данные, полученные в 12:00 и 00:00 каждых суток (если будет круглосуточная работа).
Конечно есть вариант после окончания месяца выйти из RT, а затем заново его запустив получить корректную таблицу-значений за прошлый месяц, но это уже больше похоже на костыли.
В Бета-версии проблема не исчезает.
Да, и при автопрокрутке все же значение архивируемое при старте RT (здесь = 15) попадает в таблицу 2 раза.

SCADAMaster
04.07.2023, 08:44
Вы можете записать видео для вашего тестового проекта с последовательностью действий?
Для записи можно использовать:
https://www.flashbackrecorder.com/ru/

maw
04.07.2023, 11:48
К сожалению возможности записи видео в настоящее время нет.
Пришлось просто поправить проект добавив выбор периода и отключив автопрокрутку на тренде.
После запуска проекта сразу появляется двойная запись в таблице-значений.
И далее в таблице работать только иконкой "Обновить".
68618

maw
04.07.2023, 19:59
Записал видео для конфигурации из предыдущего сообщения. Вопрос: куда его выслать?

SCADAMaster
04.07.2023, 20:10
Можете сюда выложить или на файлообменник и ссылку.
Также приложите проект на котором воспроизводили.

maw
04.07.2023, 20:35
Ссылка на Видео https://dropmefiles.com/T1QCf
Проект 68635

maw
10.07.2023, 06:13
К сожалению ответ на поставленный в сабже вопрос так и не получен. Но вопрос всё ещё актуален.

SCADAMaster
10.07.2023, 09:35
Проблема проявилась. Мы посмотрим что можно сделать.

SCADAMaster
11.07.2023, 18:22
При записи в архив нужно писать время в формате UTC, т.е.:
DateTime dt = DateTime.UtcNow;
А не
DateTime dt = DateTime.Now;
Если будет какое то свое время, то преобразуйте его методом ToUniversalTime()

maw
12.07.2023, 06:33
Все получилось. Не думал, что может быть такая зависимость. Большое спасибо.