Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Отчет. Тип обработки Разница и вывод наработки  (Прочитано 700 раз)

bacchus1

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Добрый день!
Пытаюсь в отчет добавить данные с типом обработки Разница. Но почему-то там всегда нулевые значения. Создал тестовый отчет, в нем значения одной переменной выводятся с типом обработки: первое значение, последнее значения и разница. Причем крайние значения выводят правильные числа, а разница всегда 0. Сейчас разницу вывожу через выражение, но хотелось бы стандартными методами. Как это исправить?
У меня суточные отчеты и если на начало или конец периода вдруг не будет связи с объектом и переменная будет иметь плохое качество, то какое значение выведется в отчет: 0 или последнее хорошее?

Делаю в отчете суммарные прости за сутки, как в примере. Работаю с внешней переменной, 0 - выключено, 1 - включено. Возникает вопрос: если нет связи с ОРС,  серверном, то переменная становится 0 и время отсутствия связи записывается в простой. Есть ли какой-то стандартный способ исключить из расчета переменную с плохим качеством?
Или лучше сделать внутреннюю переменную, которая будет учитывать качество тега?
« Изменён: 12 Декабря 2021, 23:30:36 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1165
    • Просмотр профиля
Re: Отчет. Данные с типом обработки Разница
« Ответ #1 : 12 Декабря 2021, 23:29:03 »
Здравствуйте.

Цитировать
Пытаюсь в отчет добавить данные с типом обработки Разница. Но почему-то там всегда нулевые значения.
Протестировали, тип обработки "Разница" работает корректно. Пришлите на support@simple-scada.com текущую версию Вашего проекта, укажите отчет, который нужно проверить и приложите скриншот построенного отчета, в котором разница считается неверно.

Цитировать
У меня суточные отчеты и если на начало или конец периода вдруг не будет связи с объектом и переменная будет иметь плохое качество, то какое значение выведется в отчет: 0 или последнее хорошее? Делаю в отчете суммарные прости за сутки, как в примере. Работаю с внешней переменной, 0 - выключено, 1 - включено. Возникает вопрос: если нет связи с ОРС,  серверном, то переменная становится 0 и время отсутствия связи записывается в простой. Есть ли какой-то стандартный способ исключить из расчета переменную с плохим качеством?
Есть несколько ситуаций:
1. Потеря связи с OPC-UA сервером (или выключение OPC-UA сервера вручную). В этом случае качество тегов не меняется, скада перестаёт получать новые данные от OPC-сервера (включая новые значения и отметки качества). Поэтому сервер скады сформирует разрыв в трендах (и отображает иконки с восклицательным знаком) и при расчетах данный разрыв не будет учитываться, он будет исключен из вычислений. Важно отметить, что разрывы при отключениях формируются только для UA-серверов. Для OPC-DA серверов при отключениях из-за особенностей DA-протокола разрыв не формируется, вместо него меняется только качество тегов на плохое.
2. Смена качества тегов на плохое. Качество тегов скада получает от OPC-серверов. OPC-сервер в разных ситуациях может выставлять переменным разное качество. Например, он может выставить плохое качество переменной если не смог считать её значение с конечного устройства (или по каким-то другим причинам, зависит от OPC-сервера). Такие значения попадут в расчеты и чтобы их исключить можно воспользоваться способами перечисленными ниже. В будущем постараемся добавить в источники данных дополнительную опцию, чтобы исключить данные с плохим качеством из расчетов.

Сейчас, для исключения данных с плохим качеством из расчетов можно:
1. Создать внутренние переменные, в которые будут записываться значения внешних переменных с учетом качества. В скрипте "Изменились переменные" записывать значения внешних переменных во внутренние с учетом качества (используя свойство "IsGoodQuality"). Отключить архивацию у исходных переменных, включить архивацию у внутренних переменных-копий и в отчетах работать с ними.
2. Если Вы используете периодический отчет, то можно применить следующий способ: создать дополнительную внутреннюю переменную для контроля качества, затем создать скрипт с типом события "Изменились переменные", добавить в него целевую переменную(по которой будет проверяться качество) как это описано здесь и в данном скрипте записывать в созданную ранее внутреннюю переменную 0, когда нужно отметить плохое качество и 1, когда качество хорошее. Чтобы отметки времени у внешней и внутренней переменной точно совпадали нужно в настройках OPC-сервера в опции "Метка времени" выбрать "Компьютер". Далее, можно в периодическом отчете на шаге добавления источника данных в опции "Тип фильтра"(описание можно найти по ссылке) выбрать "по переменной" и указать нашу переменную для контроля качества. Таким образом, в источник данных попадут только те архивные данные, в которых переменная-фильтр была не равна нулю, т.е. в нашем случае только данные с хорошим качеством.

bacchus1

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Теперь задумался о том, чтобы показывать статус/качество переменной в отчетах. Хочу делать это через SQL запросы, т.к. в таблице присутствует поле Качество.
Подскажите какие значения пишутся в базу данных и что они означают.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1165
    • Просмотр профиля
Здравствуйте.

Структуру БД можно просмотреть через MySQL Workbench. Колонка "Quality " - это качество тега. 1 - хорошее, 0 - плохое, 2 - начальное значение (при запуске проекта), 3 - конечное значение(при остановке проекта). Качество 2 и 3 нужно для того, чтобы корректно отображать разрывы при прорисовке трендов. Если не помечать места разрывов, то их не будет видно. Плохое качество будет у переменной, когда у данной переменной на OPC-сервере качество Bad(плохое) или если будет потеряна связь с OPC-сервером.

ART63

  • Постоялец
  • ***
  • Сообщений: 148
    • Просмотр профиля
Добрый день!

Цитировать
Качество 2 и 3 нужно для того, чтобы корректно отображать разрывы при прорисовке трендов. Если не помечать места разрывов, то их не будет видно.

По этой ситуации есть два вопроса:
1. Если произошло аварийное закрытие сервера SS, сформируется ли качество 2?
2. Если нет, то как в трендах будет отображаться переход 1-3?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1165
    • Просмотр профиля
Здравствуйте.

Для нормальной работы системы архивации и архивных функций нельзя принудительно завершать работу сервера скады. При штатном завершении работы разрывы всегда будут отображаться корректно. Если принудительно завершить работу сервера скады, то в большинстве случаев разрыв в трендах также будет отображаться корректно, т.к. при последующем запуске проекта сформируется точка с качеством 2(начальное значение) и скада сможет определить место разрыва. В редких случаях аварийного завершения работы(зависящих от множества условий) определить место разрыва невозможно и в таком случае разрыв отображен не будет.