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

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

Автор Тема: Вопрос по отчётам  (Прочитано 2347 раз)

Djakov

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Вопрос по отчётам
« : 03 Октября 2019, 08:59:16 »
Здравствуйте!
Стоит система PLC - OPC - SCADA связь по Modbus TCP/IP.
Для формирования отчета времени включения-выключения насоса написан код:
Код: (delphi)
begin
  if run_fc.AsBool = false then
     vrOff.Value := Now   //время выключения насоса
  else
     vrOn.Value := Now;  //время включения насоса     
end. 
Пока связь устойчивая отчет формируется отлично:
Код
Начало       Конец
08:40:21     10:47:41
11:30:02     15:20:00
15:40:36     19:24:05
но когда связь пропадает, а потом появляется (при этом насос отключен), то в отчете появляются лишние строки (время включения остается неизменным, время выключения меняется):
Код
Начало       Конец
08:40:21     10:47:41
11:30:02     15:20:00
15:40:36     19:24:05
15:40:36     19:24:24
15:40:36     19:26:18
15:40:36     19:26:28
Подскажите пожалуйста, как можно избавиться от этого эффекта? Может какой триггер прописать?
« Изменён: 04 Октября 2019, 09:36:20 от Simple-Scada »

pan2000

  • Постоялец
  • ***
  • Сообщений: 225
    • Просмотр профиля
Re: Вопрос по отчётам
« Ответ #1 : 04 Октября 2019, 00:52:24 »
    Здравствуйте!
Скорее всего, лишние строки появляются в исходных данных из-за неопределенных (нет связи) состояний внешнего тега run_fc.
Исключить ложные переходы для тега run_fc (нет связи -> 0, нет связи -> 1) можно сохраняя его значения во внутренней переменной run_fc_1.

Скрипт по изменению внешнего тега:
Код: (delphi)
begin
  run_fc_1.Value := run_fc.Value;     // присвоить текущее состояние насоса внутренней переменной
end.
Скрипт по изменению внутренней переменной:
Код: (delphi)
begin
  if run_fc_1.AsBool then vrOn.Value  := Now   // время включения насоса
                     else vrOff.Value := Now;  // время выключения насоса
end.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3210
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по отчётам
« Ответ #2 : 04 Октября 2019, 09:48:08 »
Здравствуйте.

При разрыве связи с устройством качество тега меняется на плохое и происходит добавление записи с новым качеством в архив (даже если значение не изменилось). При восстановлении связи качество меняется на хорошее и добавляется ещё одна запись в архив. Если мы правильно поняли, эти архивные данные затем и попадают отчёт (предполагаем что Вы используете источник данных "по-изменению"). Какой либо опцией исключить значения с новым качеством нельзя и если качество изменилось, то скада обязательно сделает отдельную запись в архиве.
Для решения задачи можно в отчёте добавить фильтр, который будет сравнивать значение в текущей строке со значением в пред. строке и если они одинаковы, то не добавлять строку. Если есть желание, то можете выслать текущую версию проекта на support@simple-scada.com, мы опишем как сделать фильтр для отчёта.

Djakov

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопрос по отчётам
« Ответ #3 : 04 Октября 2019, 10:25:57 »
Здравствуйте!
pan2000 спасибо за предложение, но этот вариант был испытан одним из первых. НЕ помогло.
Simple-Scada спасибо. Про сравнение строк хорошая идея (почему то сразу не пришла). Попробую сам разобраться.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3210
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по отчётам
« Ответ #4 : 04 Октября 2019, 10:53:59 »
Djakov, решение должно быть примерно такое:
1. Дважды кликнуть бэнд данных по заголовку;
2. В открывшемся окне на вкладке "Фильтры" добавить новый фильтр. В списке фильтра выбрать "Выражение";
3. Код выражения должен быть таким:
Код: (c#)
PreviousIsNull(Данные, "Value") ? true : ((double)Previous(Данные, "Value") != (double)Данные.Value)
, где Данные - имя источника данных. Value - колонка в источнике данных в которой нужно исключить повторяющиеся значения.

Djakov

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопрос по отчётам
« Ответ #5 : 04 Октября 2019, 11:40:33 »
Simple-Scada ОГРОМНОЕ спасибо.
Все отлично работает.