Здравствуйте.
Задача №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 и пишем такой код:
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 - как можно вывести в столбце отчета имя пользователя (он же оператор)? Эта необходимость обусловлена тем, что оператор может поменяться в процессе сушки.
Уточните, в процессе сушки оператор может измениться несколько раз, верно? Т.е. в отчете нужно отобразить все авторизации всех пользователей за период работы сушки?
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)
Теперь для каждого цикла будут выводиться все строки с авторизацией пользователей за период работы цикла. Но у такого способа есть существенный недостаток. Если за время работы цикла ни один пользователь не авторизовался, то для этого цикла ничего не выведется. Поэтому в ближайшем обновлении мы внесем несколько изменений в скаду, которые позволят обойти это ограничение. Также мы дополним статью отчета по циклам и добавим вывод сообщений с авторизацией пользователей для каждого цикла.