Просмотр полной версии : DataLog средствами MasterSCADa
Привет всем!
Задача: в базу нужно писать ОРС-теги с определённым периодом:
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. Может и ТС так проще будет.
Зачем писать одно и тоже значение в БД?
Надо. Для обучения нейронки на предприятии.
Ну например чтобы построить график уровня материала. Даже если он 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
Строго через определенное время сделать можно только если будет меняться метка времени значения.
Эффективнее на этапе получения данных во внешнюю систему, обработать ситуацию что если значение не меняется - то и считать его равным последнему, а не забивать базу данных миллионами одинаковых значений.
Эффективнее на этапе получения данных во внешнюю систему, обработать ситуацию что если значение не меняется - то и считать его равным последнему, а не забивать базу данных миллионами одинаковых значений.
Нет. Для обучения нужен "срез по времени", в котором данные должны быть представлены в полном составе, включая неизменные, ошибочные и помехи. Нет смысла потом дополнять "прореженные" данные и создавать для этого ещё одну БД+СУБД.
Задача 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 - меняются.
Если метка времени меняется, то периодическая архивация будет работать.
Если же метка времени не меняется - то записываться в архив значение с этим интервалом не будет.
Выделите переменную и посмотрите на вкладке Данные - меняется ли метка времени с нужным интервалом
Интересно, а как может не меняться метка времени? У нас чё, в природе время блин стоит на месте? :)
Если метка времени меняется, то периодическая архивация будет работать.
Если же метка времени не меняется - то записываться в архив значение с этим интервалом не будет.
Выделите переменную и посмотрите на вкладке Данные - меняется ли метка времени с нужным интервалом
Выделил. Посмотрел. Не обновляется. Т.е. данные не читаются с периодическим опросом. При изменении, или открытии/закрытии Runtime - меняются метки времени. Но ещё более странно, что при некоторых настройках значение тега в MasterSCADa меняется, а в "Данные" не меняются и в БД не добавляются.
Появление дробного числа среди целочисленных при настройке "Среднее" меня просто убил... Усреднилось то, что в принципе не может подлежать усреднению в моём варианте)))
Короче... пока ничего хорошего не получается совсем. Ни создание массивов для нейронки, ни элементарного моментального снимка данных (например, в случае аварии или по нажатию кнопки оператором) - не получается, судя даже по документации.
С одним вариантом настроек - из-за "прореживания", с другой - из-за устреднения. И то и другое - абсолютно неадекватно относительно целочисленных и битовых значений.
Например, мой "Режим работы" - целочисленный, может иметь шесть строго определённых значений. Никаких "прореживаний", min/max, а тем более усреднений тут не может быть принципиально.
Второй вариант: битовый тег состояния аварийной кнопки. Которая может быть неизменна месяцами. И данные о последнем изменении могут быть давным давно удалены из БД. А моментальный снимок обязан содержать весь набор данных, независимо от последнего изменения.
Интересно, а как может не меняться метка времени? У нас чё, в природе время блин стоит на месте? :)
Время (текущее) и метка времени - это разные сущности и о разном. Откройте любой OPC-клиент, выберите с сервера теги, которые заведомо редко меняются и смотрите на метки времени. Вот почему они в МС в не пишутся, если указана периодичность - непонятно. Косяк явный, кмк.
А про среднее из целых - это ТС зря.
SCADAMaster
04.03.2026, 09:27
Интересно, а как может не меняться метка времени? У нас чё, в природе время блин стоит на месте? :)
Если опрос по изменению, значение не меняется, метка времени тоже меняться не будет.
И это правильно - изменилось значение, момент его изменения был зафиксирован и этот момент сохраняется пока значение снова не изменится.
А, примерно понял. Есть период, его метку мы знаем, но когда запрашиваем переменную из ОРС, там метка последнего изменения переменной.
Тогда может какой-то скрипт, который заменит метку времени ОРС на метку времени опроса для записи в бд?
SCADAMaster
06.03.2026, 09:07
Самый правильный вариант тут - настроить экспорт в БД (отдельную). При экспорте вызываются хранимые процедуры
https://support.mps-soft.ru/MasterSCADAHelp/index.html?proekt_arhivy_ehksport_arhivov_v_sql_se rver.html
Можно переписать их, и сделать чтобы пропуски заполнялись предыдущими значениями
А если, например, использовать скрипт в MasterSCADa? Допустимо, чтобы с помощью скрипта соединиться с БД и писать/читать данные?
В MasterSCADa это допустимо?
ЗЫ: У нас update хотелок Заказчика. Теперь надо не только DataLog для нейронки, но и внедрить управление от нейронки. + новые датчики, которые будут писать на PC CSV-файлы с данными, которые надо читать и много нехороших с данными вещей делать.
Получается, задача уже нетривиальная, так и так придётся скриптами решать?
Период выполнения всех этих действий (DataLog + CSV-файлы) одинаков, может проще это всё совместить в скрипте?
Что скажут специалисты?
Интересно, какие "нехорошие" действия имеются ввиду?
Не рассматривается вариант промежуточного звена?
SCADAMaster
11.03.2026, 19:23
Как быть с данными - мы написали выше:
https://owen.ru/forum/showthread.php?t=42536&p=480788&viewfull=1#post480788
Что касается обратной передачи - есть разные способы: через хранимые процедуры, через скрипты, через UA сервер. Все режимы описаны в справке
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot