Simple-Scada forum
Simple-Scada 2 => Ваши вопросы => Тема начата: Eugene_ от 30 Июля 2024, 15:41:52
-
Добрый день!
SimpleScada сохраняет данные своим внутренним механизмом в свою базу не в хронологическом порядке, не в порядке увеличения timestamp. Так ли это ?
Может ли быть так (время упрощенно):
имя/время/значение
Тег1 - 18:00 - 0
Тег1 - 18:10 - 2
Тег1 - 18:05 - 1
Тег1 - 18:20 - 3
Суть вопроса в чем - как можно забрать (скопировать) эти данные, значения Тега1 во внешнюю базу influxDB, чтобы там они были в хронологическом порядке ? чтобы на influxDB уже прикручивать внешние графики/системы. Если "в лоб" брать последнюю запись, то во внешней базе данные будут неверные, тег1 не будет нарастать 0-1-2-3 и график будет неверный.
-
Здравствуйте.
SimpleScada сохраняет данные своим внутренним механизмом в свою базу не в хронологическом порядке, не в порядке увеличения timestamp. Так ли это ?
Данные архивируются в БД в хронологическом порядке. Обратите внимание, что при выборке трендов из стандартных таблиц (https://simple-scada.com/help/manual/tablestruct.html) нужно обязательно указывать слой, из которого требуется получить данные. 0 – основной слой, который содержит все данные тренда. Остальные слои содержат прореженные данные. Дополнительно, при выборке данных из БД можно выполнять сортировку по нужному столбцу – см. пример для MySQL (https://dev.mysql.com/doc/refman/8.4/en/sorting-rows.html).
Если "в лоб" брать последнюю запись, то во внешней базе данные будут неверные
При выборке данных из БД следует учитывать, что данные изначально накапливаются в оперативной памяти и периодически сбрасываются в БД. Чем реже меняется переменная, тем реже данные попадают в БД. Поэтому получить текущие значения переменных из БД будет невозможно. Если требуется получать из БД текущие значения переменных, то см. статью по ссылке (https://simple-scada.com/help/script/passval.html).
-
Требуется передать во внешнюю базу данные по факту их наличия в базе SCADA, то есть не текущее значение. В SCADA версия архивации v1.
То есть такое выражение (пример) - будет верно ? Но при условии, что выборка из базы SCADA (такой запрос) делается чаще, чем она успевает записать более 1й записи. При этом очевидная проблема, что если выборка из SS делается чаще, чем она сохраняет в свою базу - то будет дублирование записей во внешней базе, где и timestamp и value будут повторяющимися.
SELECT * FROM basename.trends_data ORDER BY timestamp DESC LIMIT 1;
-
Здравствуйте.
То есть такое выражение (пример) - будет верно ? Но при условии, что выборка из базы SCADA (такой запрос) делается чаще, чем она успевает записать более 1й записи.
Такой способ нормально работать не будет, т.к. данные могут записаться в БД мгновенно (в пределах одной миллисекунды). Единственный надежный способ решения описанной задачи, это передача текущих значений через свою таблицу БД (https://simple-scada.com/help/script/passval.html) и их последующая архивация в сторонней БД. Другие возможные варианты обмена данными со сторонним ПО рассмотрены по ссылке (https://simple-scada.com/help/manual/faq-other.html?anchor=q10).