PDA

Просмотр полной версии : DataLog средствами MasterSCADa



dimioks
03.03.2026, 14:48
Привет всем!

Задача: в базу нужно писать ОРС-теги с определённым периодом:
1. Значение
2. Время
3. Качество

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

К сожалению, я не могу разобраться, как сделать в MasterSCADa эту элементарную задачу.
Теги у меня пишутся 2 раза: при старте и останове Runtime. И всё...
Насколько я понял из доков, основное здесь - настройка шаблонов в "Система -> Архив -> Шаблоны".
Как только не перенастраивал я этот шаблон...
Что здесь не так?
88363
Какие настройки надо сделать, чтобы теги писались в БД каждые 5 сек, независимо ни от чего?
ЗЫ: Теги в симуляции OPC UA на второй машине, их значения не меняются.

SCADAMaster
03.03.2026, 14:52
Какие настройки надо сделать, чтобы теги писались в БД каждые 5 сек, независимо ни от чего?

Зачем писать одно и тоже значение в БД?

МихаилГл
03.03.2026, 15:03
Зачем писать одно и тоже значение в БД?

Ну например чтобы построить график уровня материала. Даже если он 3 часа не изменялся

PS В мс4д я это триггером просто делаю в самой базе mssql. Может и ТС так проще будет.

dimioks
03.03.2026, 15:04
Зачем писать одно и тоже значение в БД?

Надо. Для обучения нейронки на предприятии.

dimioks
03.03.2026, 15:11
Ну например чтобы построить график уровня материала. Даже если он 3 часа не изменялся

PS В мс4д я это триггером просто делаю в самой базе mssql. Может и ТС так проще будет.

Как вариант - да.
Но ведь лог данных - настолько простая задача, что это делается мимоходом, не заглядывая в документацию на очередную SCADa...
1. Соединение.
2. Список данных.
3. Триггер.
А тут...

SCADAMaster
03.03.2026, 15:48
Посмотрите вот эту страницу:
https://support.mps-soft.ru/MasterSCADAHelp/index.html?proekt_dokumenty_objektov_arhivy_archiv irovanie_dannih.html
Строго через определенное время сделать можно только если будет меняться метка времени значения.
Эффективнее на этапе получения данных во внешнюю систему, обработать ситуацию что если значение не меняется - то и считать его равным последнему, а не забивать базу данных миллионами одинаковых значений.

dimioks
03.03.2026, 16:20
Эффективнее на этапе получения данных во внешнюю систему, обработать ситуацию что если значение не меняется - то и считать его равным последнему, а не забивать базу данных миллионами одинаковых значений.
Нет. Для обучения нужен "срез по времени", в котором данные должны быть представлены в полном составе, включая неизменные, ошибочные и помехи. Нет смысла потом дополнять "прореженные" данные и создавать для этого ещё одну БД+СУБД.
Задача SCADa - формировать данные в БД для ВУ. Обработка данных, удаление ненужных записей, сжатие БД - задача ВУ. Так всегда было, есть и будет.


Посмотрите вот эту страницу:
https://support.mps-soft.ru/MasterSCADAHelp/index.html?proekt_dokumenty_objektov_arhivy_archiv irovanie_dannih.html
Строго через определенное время сделать можно только если будет меняться метка времени значения.
Читал уже. Как раз я и не могу настроить "Периодический" триггер... Метки времени от OPC - меняются.

SCADAMaster
03.03.2026, 16:52
Задача SCADa - формировать данные в БД для ВУ. Обработка данных, удаление ненужных записей, сжатие БД - задача ВУ. Так всегда было, есть и будет.

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



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

melky
03.03.2026, 20:59
Интересно, а как может не меняться метка времени? У нас чё, в природе время блин стоит на месте? :)

dimioks
03.03.2026, 21:52
Если метка времени меняется, то периодическая архивация будет работать.
Если же метка времени не меняется - то записываться в архив значение с этим интервалом не будет.
Выделите переменную и посмотрите на вкладке Данные - меняется ли метка времени с нужным интервалом

Выделил. Посмотрел. Не обновляется. Т.е. данные не читаются с периодическим опросом. При изменении, или открытии/закрытии Runtime - меняются метки времени. Но ещё более странно, что при некоторых настройках значение тега в MasterSCADa меняется, а в "Данные" не меняются и в БД не добавляются.
Появление дробного числа среди целочисленных при настройке "Среднее" меня просто убил... Усреднилось то, что в принципе не может подлежать усреднению в моём варианте)))

Короче... пока ничего хорошего не получается совсем. Ни создание массивов для нейронки, ни элементарного моментального снимка данных (например, в случае аварии или по нажатию кнопки оператором) - не получается, судя даже по документации.
С одним вариантом настроек - из-за "прореживания", с другой - из-за устреднения. И то и другое - абсолютно неадекватно относительно целочисленных и битовых значений.
Например, мой "Режим работы" - целочисленный, может иметь шесть строго определённых значений. Никаких "прореживаний", min/max, а тем более усреднений тут не может быть принципиально.
Второй вариант: битовый тег состояния аварийной кнопки. Которая может быть неизменна месяцами. И данные о последнем изменении могут быть давным давно удалены из БД. А моментальный снимок обязан содержать весь набор данных, независимо от последнего изменения.

imaex
04.03.2026, 07:47
Интересно, а как может не меняться метка времени? У нас чё, в природе время блин стоит на месте? :)

Время (текущее) и метка времени - это разные сущности и о разном. Откройте любой OPC-клиент, выберите с сервера теги, которые заведомо редко меняются и смотрите на метки времени. Вот почему они в МС в не пишутся, если указана периодичность - непонятно. Косяк явный, кмк.

А про среднее из целых - это ТС зря.

SCADAMaster
04.03.2026, 09:27
Интересно, а как может не меняться метка времени? У нас чё, в природе время блин стоит на месте? :)
Если опрос по изменению, значение не меняется, метка времени тоже меняться не будет.
И это правильно - изменилось значение, момент его изменения был зафиксирован и этот момент сохраняется пока значение снова не изменится.

melky
04.03.2026, 09:34
А, примерно понял. Есть период, его метку мы знаем, но когда запрашиваем переменную из ОРС, там метка последнего изменения переменной.

Тогда может какой-то скрипт, который заменит метку времени ОРС на метку времени опроса для записи в бд?

SCADAMaster
06.03.2026, 09:07
Самый правильный вариант тут - настроить экспорт в БД (отдельную). При экспорте вызываются хранимые процедуры
https://support.mps-soft.ru/MasterSCADAHelp/index.html?proekt_arhivy_ehksport_arhivov_v_sql_se rver.html
Можно переписать их, и сделать чтобы пропуски заполнялись предыдущими значениями

dimioks
11.03.2026, 17:41
А если, например, использовать скрипт в MasterSCADa? Допустимо, чтобы с помощью скрипта соединиться с БД и писать/читать данные?
В MasterSCADa это допустимо?

ЗЫ: У нас update хотелок Заказчика. Теперь надо не только DataLog для нейронки, но и внедрить управление от нейронки. + новые датчики, которые будут писать на PC CSV-файлы с данными, которые надо читать и много нехороших с данными вещей делать.
Получается, задача уже нетривиальная, так и так придётся скриптами решать?
Период выполнения всех этих действий (DataLog + CSV-файлы) одинаков, может проще это всё совместить в скрипте?
Что скажут специалисты?

melky
11.03.2026, 18:38
Интересно, какие "нехорошие" действия имеются ввиду?

Не рассматривается вариант промежуточного звена?

SCADAMaster
11.03.2026, 19:23
Как быть с данными - мы написали выше:
https://owen.ru/forum/showthread.php?t=42536&p=480788&viewfull=1#post480788

Что касается обратной передачи - есть разные способы: через хранимые процедуры, через скрипты, через UA сервер. Все режимы описаны в справке