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

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

Автор Тема: Добавление сообщений/алармов в отчет  (Прочитано 4680 раз)

bacchus1

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Добрый день!
Хотелось бы добавить в отчет алармы. Кроме того требуется фильтровать алармы, т.е. добавить алармы, например по типу (авария, предупреждение) и по ID. каким образом это можно сделать? Только добавлением в отчет данных из внешний источников. Если да, то можно ли получить описание БД хранения сообщений.
Попутный вопрос: можно ли фильтровать алармы в списке сообщений? Есть много однотипных объектов и хотелось бы для каждого отображать свои сообщения на текущей мнемосхеме.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Re: Добавление сообщений/алармов в отчет
« Ответ #1 : 23 Мая 2019, 09:43:46 »
Здравствуйте.

Да, для вывода списка сообщений нужно использовать внешний источник. Т.е. всё нужно делать как описано в этой статье, только работать нужно с таблицей "messages_data". Эта таблица состоит из следующих колонок:
  • Timestamp: время сообщения;
  • GroupID: идентификатор группы сообщения;
  • MessageID: идентификатор сообщения;
  • Kind: тип сообщения (0 - аварийное, 1 - предупредительное, 2 - обычное, 4 - авторизация пользователей);
  • Text: текст сообщения;
В данный момент в редакторе скады можно выделить любую группу сообщений и в списке свойств увидеть ID-группы и на его основе сделать выборку всех сообщений группы. Но ID-сообщений сейчас не выводится в редакторе, поэтому по конкретному сообщению выборку будет сделать проблемно. Мы добавим вывод ID-сообщений в ближайшем обновлении.

bacchus1

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Добавление сообщений/алармов в отчет
« Ответ #2 : 23 Мая 2019, 18:36:27 »
Видимо не совсем точно сформулировал вопрос. В редакторе я вижу ID группы. Я хочу вставить на мнемосхему элемент Список сообщений и в его параметрах указать какую группу сообщений он должен показывать. Сейчас возможно вывести сообщения: Все, Неподтвержденные, Активные. А хотелось бы, чтобы в этом списке присутствовали другие, созданные мною группы.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Re: Добавление сообщений/алармов в отчет
« Ответ #3 : 24 Мая 2019, 11:19:35 »
Сейчас компонент сообщений может работать только с группами Все, Неподтвержденные, Активные. Возможность выбора остальных групп появится в будущих обновлениях.

bacchus1

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Добавление сообщений/алармов в отчет
« Ответ #4 : 28 Мая 2019, 10:03:50 »
Есть еще одно пожелание. Когда я создаю самостоятельно сообщения, то я разделяют сообщения по группам самостоятельно. Когда для аналоговых сигналов в редакторе я задаю пределы для формирования сообщений, то нет возможности их привязать к нужной группе сообщений. Сейчас в редакторе сообщений можно вручную числом задать предел формирования сообщения, что неудобно, т.к. под это у переменной есть "границы".
Хотелось бы, чтобы всем сообщениям можно было задать группу.

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Добавление сообщений/алармов в отчет
« Ответ #5 : 12 Июня 2019, 13:17:20 »
Что-то не могу понять, как добавлять свои сообщения. При клике на панель сообщений внизу страницы не открывается редактор сообщений. Что я делаю не так?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Re: Добавление сообщений/алармов в отчет
« Ответ #6 : 13 Июня 2019, 09:51:02 »
alan54, в любое меню можно перейти через меню "Проект". К сообщениям: "Проект -> Сообщения". По нажатию на панель сообщения тоже должен выполняться переход в меню сообщений. Может быть панель сообщений перекрыта каким-то объектом (например объектом с прозрачностью и поэтому он незаметен). Можете сказать какое разрешение имеет Ваш проект?

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Добавление сообщений/алармов в отчет
« Ответ #7 : 13 Июня 2019, 11:09:01 »
alan54, в любое меню можно перейти через меню "Проект". К сообщениям: "Проект -> Сообщения". По нажатию на панель сообщения тоже должен выполняться переход в меню сообщений. Может быть панель сообщений перекрыта каким-то объектом (например объектом с прозрачностью и поэтому он незаметен). Можете сказать какое разрешение имеет Ваш проект?
Через меню Проект -> Сообщения редактор открывается, а при клике на панель открывается на весь экран панель сообщений. Как туда вводить сообщения с клавиатуры? Мне нужно, чтобы оператор записывал сообщения о причинах простоев оборудования непосредственно из клиента. Может, это реализуется как-то по-другому?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Re: Добавление сообщений/алармов в отчет
« Ответ #8 : 13 Июня 2019, 21:17:29 »
В меню "Сообщения" на клиентах только отображаются сообщения которые были выданы ранее, либо выдаются сейчас. Функций редактирования и полей ввода нет в этом меню. Но можно организовать добавление новых произвольных сообщений через поля ввода и процедуры AddMessage и AddMessageToGroup. Для этого cоздайте в меню "Переменные - Редактировать" новую внутреннюю переменную с типом данных "String" и именем vrUserMessage. Затем разместите на мнемосхеме компонент Поле и привяжите его к переменной vrUserMessage. Добавьте на мнемосхему компонент Кнопка и на событие OnClick напишите следующий код:
Код: (delphi)
begin
  { добавляем введённый текст в список сообщений (группа "Все сообщения"), не
    отображая его в неподтверждённых сообщениях }
  AddMessage(Now, mkMessage, fldUserMessage.AsStr, FALSE, FALSE);
end.
, где fldUserMessage - это имя Поля в которое осуществляется ввод.
Теперь оператор сможет вводить любое сообщение в поле и по нажатию на кнопку отправлять его в список сообщений. А используя процедуру AddMessageToGroup можно реализовать добавление сообщений в какую-то конкретную группу сообщений. Таким образом можно реализовать отдельный журнал произвольных сообщений.
« Изменён: 13 Июня 2019, 21:19:15 от Simple-Scada »

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Добавление сообщений/алармов в отчет
« Ответ #9 : 13 Июня 2019, 21:52:34 »
Все получилось, спасибо большое!
P.S. Правда, пока не получается вывести это поле в отчет - ругается: "Не удалось получить данные для колонки vrUserMessage... Вероятно, у данной переменной не включена архивация". Хотя архивация "По изменению" включена. Подскажите, плиз, что еще надо сделать! Может, не городить огород с добавлением в сообщения, а просто сохранять сообщение как строковую переменную в архиве? Сейчас, как я понял, запись оператора уходит в сообщения, но не архивируется.
« Изменён: 14 Июня 2019, 18:04:58 от alan54 »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Re: Добавление сообщений/алармов в отчет
« Ответ #10 : 14 Июня 2019, 21:22:06 »
Архивация массивов и переменных типа string (это тоже массив (символов)) невозможна. Кроме того, если вы добавляете сообщения через AddMessage, то они будут автоматически архивироваться в БД, в таблицу сообщений с именем "messages_data". Все сообщения добавленные через процедуры AddMessage и AddMessageToGroup помечаются MessageID в диапазоне от 999967 до 999999. Чтобы вывести их в отчет, нужно использовать отдельный источник данных, как в этой статье. Только не нужно создавать свою таблицу как описано в статье, можно сразу добавить источник данных MySQL и брать данные из таблицы "messages_data". А запрос на выборку нужно изменить добавив выборку только тех сообщений у которых MessageID >= 999967, вот так:
Код: (sql)
select * from messages_data
where (timestamp >= @vrTimeBegin) and (timestamp <= @vrTimeEnd)
and (MessageID >= 999967)
в результате источник данных будет содержать список сообщений добавленных через процедуры AddMessage и AddMessageToGroup за период от vrTimeBegin до vrTimeEnd.

Второй вариант, создать отдельную пустую группу сообщений и добавлять сообщения пользователей конкретно в эту группу, через AddMessageToGroup, а затем брать данные также, как описано выше, только выборку осуществлять по колонке "GroupID":
Код: (sql)
select * from messages_data
where (timestamp >= @vrTimeBegin) and (timestamp <= @vrTimeEnd)
and (GroupID = 77)
, где 77 - это ID группы в которую добавляются пользовательские сообщения.

Третий вариант, создать в БД отдельную таблицу с какой угодно структурой и добавлять в неё новые записи через пользовательские SQL-запросы (процедура RunSQL). Как создать свою таблицу и как вывести её в отчет также описано в этой статье.
« Изменён: 14 Июня 2019, 21:23:27 от Simple-Scada »

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Добавление сообщений/алармов в отчет
« Ответ #11 : 14 Июня 2019, 22:03:49 »
Спасибо за очень подробный и толковый ответ. Правда, в его ожидании я время не терял и догадался создать источник данных MySQL с таблицей messages_data. Но до фильтров по ID я не допер, так что еще раз спасибо.

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Добавление сообщений/алармов в отчет
« Ответ #12 : 21 Июня 2019, 20:33:56 »
Еще такой вопрос - как удалить пользовательские сообщения? Во время тестирования я натыкал кучу сообщений, а как их удалить средствами редактора?
P.S. Ответа не дождался, удалил средствами MySQL Workbench. Видимо, по-другому нельзя.
« Изменён: 23 Июня 2019, 11:35:54 от alan54 »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3193
    • Просмотр профиля
    • Simple-Scada
Re: Добавление сообщений/алармов в отчет
« Ответ #13 : 24 Июня 2019, 23:24:55 »
Все верно, удалить можно средствами MySQL Workbench отправив запрос на удаление с выборкой по времени и ID. То же самое можно сделать из проекта через RunSQL. В целом работа с данными в БД ведётся только через SQL-запросы.

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Добавление сообщений/алармов в отчет
« Ответ #14 : 31 Июля 2019, 16:41:39 »
Еще один вопрос - как связать данные из таблиц trends_data и messages_data и вывести их в один отчет? Например, из trends_data в отчет выводится простой линии более 10 мин., а из messages_data в эту строку надо вывести записанную оператором причину простоя.