PDA

Просмотр полной версии : Блокировать кнопку на какое-то время



Abr
19.02.2024, 16:15
Всем ку!
Задача: есть кнопка на мнемосхеме, с фиксацией. Она же - дискретный тег в OPC. Ну, фиг знает, пусть это будет дискретный выход непосредственно в "железе". Кнопка на мнемосхеме, соответственно, этот дискретный выход включает и выключает.
Надо сделать так, чтобы в течение, условно, 5 секунд после нажатия/отжатия кнопки на неё нельзя было повторно нажать.

На примере, и зачем это надо: операторы SCADA на непосредственном объекте - люди, скажем так, сильно старой закалки и специфического менталитета; они, если не видят мгновенного срабатывания, начинают остервенело тыкать в кнопку повторно, и объяснять им что-либо - бесполезно.

Так-то я понимаю, что надо к кнопке таймер прикручивать, но не совсем сообразил, как на время работы таймера кнопку заблокировать, чтоб она ни нажималась, ни отжималась.

МихаилГл
19.02.2024, 16:24
Всем ку!
Задача: есть кнопка на мнемосхеме, с фиксацией. Она же - дискретный тег в OPC. Ну, фиг знает, пусть это будет дискретный выход непосредственно в "железе". Кнопка на мнемосхеме, соответственно, этот дискретный выход включает и выключает.
Надо сделать так, чтобы в течение, условно, 5 секунд после нажатия/отжатия кнопки на неё нельзя было повторно нажать.

На примере, и зачем это надо: операторы SCADA на непосредственном объекте - люди, скажем так, сильно старой закалки и специфического менталитета; они, если не видят мгновенного срабатывания, начинают остервенело тыкать в кнопку повторно, и объяснять им что-либо - бесполезно.

Так-то я понимаю, что надо к кнопке таймер прикручивать, но не совсем сообразил, как на время работы таймера кнопку заблокировать, чтоб она ни нажималась, ни отжималась.

При нажатии скрывай кнопку и оставляй на её месте не активную надпись. А инвертирование этого тэга этой же кнопкой лучше исключить.

SCADAMaster
19.02.2024, 19:19
Так-то я понимаю, что надо к кнопке таймер прикручивать, но не совсем сообразил, как на время работы таймера кнопку заблокировать, чтоб она ни нажималась, ни отжималась.
Через вход динамизации "Заблокирован"

Abr
14.03.2024, 10:24
То ли лыжи не едут, то ли одно из двух...

Делаю следующим образом:

Функциональный блок "команда" с типом данных "дискретный". Она вытащена на Окно управления в виде кнопки с фиксацией.

Функциональный блок "Выдержка времени". У него на входе "секунды" задана константа 5. Вход "Сброс" этого же функционального блока принудительно находится в состоянии "Вкл" через константу. Выход этого функционального блока заведён на вход динамизации "Заблокирован" кнопки.

В итоге - при запуске проекта на исполнение я вижу заблокированную кнопку, которая через 5 секунд разблокируется, и её можно нажимать/отжимать уже с любой периодичностью.


Нужна же другая логика:
- когда проект запускается на исполнение - кнопки по обратной связи получают состояние "нажата"/"отжата" в зависимости от состояния дискретных выходов модулей ввода/вывода на объекте через соответствующие теги OPC;
- кнопки при этом должны быть заблокированы на 3-5 секунд, чтобы их не могли начать сразу туда-сюда тыкать;
- затем кнопки разблокируются. Как это сделать - я, вроде, разобрался, в начале сообщения это описано;
- необходимо, чтобы при КАЖДОМ нажатии/отжатии кнопка блокировалась на 5 секунд.

Объясню: кнопки "рулят" контакторами насосов по 30-50 кВт. Помимо кнопок запуска/останова насосов, на окне управления рядом с каждой кнопкой есть индикация работы насоса. Она берётся из бинарной маски входов модуля ввода/вывода. Т.е. если дискретный вход на модуле ввода/вывода замкнулся - на форме зажигается зелёный индикатор. Если обратная связь с промежуточного реле почему-то не пришла - индикатор при нажатой кнопке остаётся красным, и это сигнализирует об аварии. В обратную сторону то же самое: при отжатии кнопки - насос отключается, обратная связь с промежуточного реле перестаёт приходить, флаг в бинарной маске обнуляется, индикатор на мнемосхеме из зелёного становится красным, оператор понимает, что насос встал.
Поскольку все переключения происходят не мгновенно, а за несколько тактов (пока нажалась кнопка, ушла команда, она "пролезла" через все преобразователи интерфейсов и репитеры, включился дискретный выход модуля ввода/вывода, пришла обратная связь с промежуточного реле, замкнулся вход модуля/вывода, выставился соответствующий тег в OPC, распаковалась бинарная маска, сменился цвет индикатора на мнемосхеме), то между нажатием кнопки и изменением цвета индикатора проходит 2-4 секунды. Персонал специфический, и довольно "тугой". Если не произошло моментальной реакции - значит надо бегом-бегом попробовать ещё раз отжать и нажать кнопку, и что-то объяснять вообще бесполезно. SCADA, естественно, это всё нормально отрабатывает, и на объекте начинает туда-сюда включаться/выключаться немаленький насос. Вот чтобы оператор гарантировано дождался реакции системы на запуск - и надо, чтобы у него отсутствовала возможность тыкать кнопку повторно в течение 3-4-5 тактов системы.
Посмотрел старые ролики, раньше был функциональный блок "Кнопка", со свойством "время фиксации". Вот нужно, по сути, воспроизвести это свойство, только для обоих положений: нажал кнопку, 5 секунд она не отожмётся. Отжал кнопку - аналогично, 5 секунд хоть утыкайся - реакции не будет.

SCADAMaster
14.03.2024, 10:39
Посмотрите пример в приложении

Abr
14.03.2024, 11:10
Принято, спасибо.