Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Izergill от 16 Ноября 2017, 07:47:36

Название: Архивация по условию и отчеты с текстовыми полями
Отправлено: Izergill от 16 Ноября 2017, 07:47:36
Добрый день!
Подскажите как решить задачи, не знаю с какой стороны зайти. Существует необходимость архивирования параметров процесса сушки зерна и вывод отчета по форме аналогичного журналу сушильщика. Образовалось 2 задачи.
Задача №1 - какие настройки выполнить чтобы переменные архивировались только когда запущен процесс сушки. Потенциально сервер SimpleScada будет работать постоянно, а вот сушка будет осуществляться периодически. В процессе сушки необходимо архивировать технологические параметры с заданным интервалом. Есть переменная - признак работы сушилки.
Задача №2 - как можно вывести в столбце отчета имя пользователя (он же оператор)? Эта необходимость обусловлена тем, что оператор может поменяться в процессе сушки.
Название: Re: Архивация по условию и отчеты с текстовыми полями
Отправлено: Simple-Scada от 16 Ноября 2017, 23:06:46
Здравствуйте.

Цитировать
Задача №1 - какие настройки выполнить чтобы переменные архивировались только когда запущен процесс сушки. Потенциально сервер SimpleScada будет работать постоянно, а вот сушка будет осуществляться периодически. В процессе сушки необходимо архивировать технологические параметры с заданным интервалом. Есть переменная - признак работы сушилки.
Если Вы хотите вывести данные за период работы сушки в отчет, то нет необходимости прерывать процесс архивации. Обычно архивация переменных включена во время работы проекта, а в отчет делаются выборки за нужный период времени (в Вашем случае выборка за период работы сушилки). Недавно мы опубликовали пример реализации отчета по циклам (https://simple-scada.com/help/report/cycles-rep.html) который возможно подойдёт Вам. В примере процесс также запускается периодически (архивация тех. параметров при этом постоянная), но в отчет выводятся только данные за время процесса.

Если архивация по-условию требуется для каких-то других целей, то можно предложить следующее решение: пусть у нас есть переменные vrA, vrB, vrProcess (у всех архивация выключена). Нужно, чтобы переменные vrA и vrB архивировались только когда vrProcess = True. Тогда можно создать две внутренние переменные vrA1, vrB1 и включить у них архивацию по-изменению. Далее переходим в меню скриптов и создаём новый скрипт с типом события "Изменились переменные" (https://simple-scada.com/help/script/changemulvar.html). В список переменных этого скрипта вносим переменные vrA и vrB и пишем такой код:

Код: (delphi)
begin
  if vrProcess.AsBool = False then Exit;  // прерываем выполнение, если vrProcess равна False
 
  if Variable = vrA then           // если изменилась переменная vrA
    vrA1.Value := Variable.Value;  // копируем значение vrA в vrA1

  if Variable = vrB then           // если изменилась переменная vrB
    vrB1.Value := Variable.Value;  // копируем значение vrB в vrB1
end.

В результате получается, что значения из vrA и vrB копируются в vrA1 и vrB1 только когда переменная процесса (vrProcess) включена. В то же время скада архивирует vrA1 и vrB1, т.к. у них включена архивация по-изменению.

Цитировать
Задача №2 - как можно вывести в столбце отчета имя пользователя (он же оператор)? Эта необходимость обусловлена тем, что оператор может поменяться в процессе сушки.
Уточните, в процессе сушки оператор может измениться несколько раз, верно? Т.е. в отчете нужно отобразить все авторизации всех пользователей за период работы сушки?
Название: Re: Архивация по условию и отчеты с текстовыми полями
Отправлено: Izergill от 17 Ноября 2017, 06:41:21
Да, верно, оператор может смениться несколько раз.
Название: Re: Архивация по условию и отчеты с текстовыми полями
Отправлено: Simple-Scada от 20 Ноября 2017, 09:05:54
Izergill, сейчас авторизация пользователей попадает только в таблицу сообщений (messages_data) и помечается кодом равным 4 (Kind = 4). Поэтому в отчете можно создать новый пользовательский источник данных с именем, например "Users" (о добавлении пользовательских источников данных можно прочесть здесь (https://simple-scada.com/help/report/rep-user-data.html)) с таким кодом запроса:

Код
SELECT `timestamp`, `text` FROM `my_db`.messages_data 
WHERE (`kind`=4) AND (`timestamp` >= @vrFrom) AND (`timestamp` <= @vrTo);

Такой источник будет содержать все строки с авторизацией пользователей за весь период отчета. Если у Вас отчет по циклам как в этой статье (https://simple-scada.com/help/report/cycles-rep.html), то новый источник нужно перетянуть на страницу, кликнуть его ПКМ и выбрать пункт "Редактировать", затем на вкладке "Master компонент" выбрать мастером бэнд "DataЦиклы", а на вкладке "Фильтры" создать новый фильтр с таким выражением:

Код
(Users.timestamp >= Циклы.vrCycleStart) && (Users.timestamp <= Циклы.vrCycleEnd)

Теперь для каждого цикла будут выводиться все строки с авторизацией пользователей за период работы цикла. Но у такого способа есть существенный недостаток. Если за время работы цикла ни один пользователь не авторизовался, то для этого цикла ничего не выведется. Поэтому в ближайшем обновлении мы внесем несколько изменений в скаду, которые позволят обойти это ограничение. Также мы дополним статью отчета по циклам и добавим вывод сообщений с авторизацией пользователей для каждого цикла.
Название: Re: Архивация по условию и отчеты с текстовыми полями
Отправлено: Izergill от 20 Ноября 2017, 14:05:03
Спасибо, понял.
Когда можно будет ожидать обновление с добавленным функционалом?
Название: Re: Архивация по условию и отчеты с текстовыми полями
Отправлено: Simple-Scada от 20 Ноября 2017, 21:59:00
В ближайшем обновлении появится такая возможность. Точную дату сейчас трудно назвать, постараемся по возможности быстрее сделать сборку и опубликовать.
Название: Re: Архивация по условию и отчеты с текстовыми полями
Отправлено: Izergill от 23 Марта 2018, 10:28:50
Добрый день!
Вопрос о добавлении в отчет имени пользователя актуален. В новых обновлениях удалось решить обозначенную выше проблему?
Название: Re: Архивация по условию и отчеты с текстовыми полями
Отправлено: Simple-Scada от 26 Марта 2018, 21:26:19
Здравствуйте.

Цитировать
Вопрос о добавлении в отчет имени пользователя актуален. В новых обновлениях удалось решить обозначенную выше проблему?
Извиняемся за задержку с ответом. Да, начиная с версии 2.2.7.0 мы добавили в скрипты с типом события "Авторизация пользователя" параметр "auLogin" (логин под которым авторизовался пользователь). Благодаря этому можно реализовать архивацию любого успешного входа в систему и затем использовать эти данные в отчете с источником данных "по-изменению". Можете выслать нам текущую версию проекта на support@simple-scada.com с указанием отчета в который нужно добавить авторизации пользователей? Мы могли бы описать процесс реализации под Ваш проект.