Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Andrey1883 от 05 Декабря 2023, 13:47:50

Название: Журнал действий оператора
Отправлено: Andrey1883 от 05 Декабря 2023, 13:47:50
Задумка интересная, ибо ловить оператора на неправильных действиях в процессе управлением техпроцессом важно и полезно, а то порой приходится слушать сказки о том, что это не трогали и это не включали!!

Собственно, вопрос может и глупый, но как это работает и как этот журнал вообще настроить? все настройки в проекте излазил и не понимаю как с этим работать, да и в руководстве ни слова не нашел! мне нужно чтобы я точно понимал, какие совершены действия (нажата кнопка аварийного останова или выполнен пуск насоса) а то сейчас это у меня через сообщения сделано, что мне не нравится...
Название: Re: Журнал действий оператора
Отправлено: Timothy Clement от 05 Декабря 2023, 16:14:29
Добрый день!
В журнале будут автоматически фиксироваться нажатия кнопок и ввод в поля значений (не работает в версиях Demo64 и Minimal). Настраивать ничего не надо, но если вы хотите понимать что именно нажато, нужно позаботиться о назначении имен кнопкам и полям. Потому что сообщения о Button1 и Field133 вам наверное не очень помогут.
Название: Re: Журнал действий оператора
Отправлено: Andrey1883 от 05 Декабря 2023, 16:53:54
А, вот оно как работает! а я думал, что сюда еще можно прикрутить внешние теги (физические кнопки)
спасибо за подсказку!
Название: Re: Журнал действий оператора
Отправлено: Simple Scada от 05 Декабря 2023, 17:17:43
Здравствуйте.

как это работает и как этот журнал вообще настроить? все настройки в проекте излазил и не понимаю как с этим работать, да и в руководстве ни слова не нашел! мне нужно чтобы я точно понимал, какие совершены действия (нажата кнопка аварийного останова или выполнен пуск насоса) а то сейчас это у меня через сообщения сделано, что мне не нравится...
В текст сообщения "Действия оператора" выводится имя объекта и переменной, для которых выполнено действие. Если у переменной указано описание (https://simple-scada.com/help/manual/varmain.html), то при условии, что используется система архивации v2 (https://simple-scada.com/help/manual/archsysv2.html), в текст сообщения выводится описание переменной, а не имя. Соответственно, чтобы получить подробный текст сообщения, всем объектам и переменным нужно давать понятные имена и описания. Также, начиная с версии 2.6.10.0 (https://simple-scada.com/forum/index.php?topic=178.msg12279#msg12279) (при использовании системы архивации v2 (https://simple-scada.com/help/manual/archsysv2.html)) в настройках проекта можно менять формат сообщений о действиях оператора (https://simple-scada.com/help/manual/messet.html?anchor=actionstext).

а я думал, что сюда еще можно прикрутить внешние теги (физические кнопки)
Если действия выполняются не из клиента Simple-Scada (https://simple-scada.com/help/manual/client.html), то сообщения для таких действий можно добавлять через скрипты, используя процедуру AddActionMessage (https://simple-scada.com/help/script/addactionmessage.html).

Название: Re: Журнал действий оператора
Отправлено: Andrey1883 от 06 Декабря 2023, 10:06:48
Спасибо огромное!!
Название: Re: Журнал действий оператора
Отправлено: Andrey1883 от 06 Декабря 2023, 14:35:18
Сделал скриптик
Код: (delphi)
begin
  AddActionMessage(Variable.Description + '! ' + ' Изменилась переменная: ' + Variable.Name + ' Стало: ' + Variable.AsStr
  + ' '+ Variable.Units, Variable.Address);
end.


Все работает как надо! пытался изначально описание переменной в объект засунуть - не вышло, точнее из-за узкой колонки "объект" не все описание влезает, так что остановился на адресе переменной!

(https://i.ibb.co/jwSL5SN/image.png) (https://ibb.co/T0sHTsf)

Пытался вытащить предыдущее значение переменной, чтобы получить как "в оригинале": Было:...  Стало:... ! но не вышло!
Использовать пытался PrevAsInt ... подскажите как правильно сделать и можно ли....
Название: Re: Журнал действий оператора
Отправлено: Simple Scada от 06 Декабря 2023, 15:49:45
Пытался вытащить предыдущее значение переменной, чтобы получить как "в оригинале": Было:...  Стало:... ! но не вышло!
Использовать пытался PrevAsInt ... подскажите как правильно сделать и можно ли....
Сообщение должно быть строкой, поэтому нужно использовать функцию "PrevAsStr (https://simple-scada.com/help/script/prevasstr.html)"(работает только в скриптах с типами событий "Изменились переменные (https://simple-scada.com/help/script/changed-the-variables.html)" и "Нарушена граница (https://simple-scada.com/help/script/borderviol.html)"). Также, чтобы исключить вывод сообщений при перезапусках проекта, можно использовать функцию "IsFirstChange (https://simple-scada.com/help/script/isfirstchange.html)":
Код: (delphi)
begin
  // пропускаем первое изменение, чтобы сообщения не выдавались при перезапусках проекта
  if IsFirstChange then Exit;
  // добавляем сообщение в список действий оператора
  AddActionMessage( 'Было: ' + PrevAsStr + ' Стало: ' + Variable.AsStr,'Кнопка М156');
end.
Название: Re: Журнал действий оператора
Отправлено: Andrey1883 от 06 Декабря 2023, 16:19:13
Спасибо!
мысль проскакивала попробовать "PrevAsStr", но что-то меня остановило :D
ну не программист ни разу и скрипты вызывают трудности порой :'(
Название: Re: Журнал действий оператора
Отправлено: karim от 07 Декабря 2023, 06:33:36
В журнале будут автоматически фиксироваться нажатия кнопок и ввод в поля значений (не работает в версиях Demo64 и Minimal). Настраивать ничего не надо, но если вы хотите понимать что именно нажато, нужно позаботиться о назначении имен кнопкам и полям. Потому что сообщения о Button1 и Field133 вам наверное не очень помогут.
как не придумывай, всё равно получается не фонтан, так как имена эти на англицком. Если бы сделать не имя, а ObjectNameOrCaption, то будет нормально и можно будет использовать. А так всё одно - думай, не думай над именами окон и полей...
Если в поле объект будут что-то типа: "Окно ввода уставки", это гораздо лучше чем wndUstavkaInput. При выводе Caption окна хотя бы понятно где оператор изменил значение, и вот в таком случае уже можно будет нормально пользоваться сообщениями для действий оператора.
PS: При всём при этом Caption нужно брать у родительского окна, то есть ParentWnd->Caption. Вот тогда будет огонь!

но что касается кнопки - то здесь может и не быть никакого родительского окна. Поэтому лучше всего в функцию AddActionMessage просто добавить параметр "инициирующий объект", а уже как дополнительным полем в сообщении указывать имя кнопки, поля и прочего.