Просмотр полной версии : Блокировать кнопку на какое-то время
Всем ку!
Задача: есть кнопка на мнемосхеме, с фиксацией. Она же - дискретный тег в OPC. Ну, фиг знает, пусть это будет дискретный выход непосредственно в "железе". Кнопка на мнемосхеме, соответственно, этот дискретный выход включает и выключает.
Надо сделать так, чтобы в течение, условно, 5 секунд после нажатия/отжатия кнопки на неё нельзя было повторно нажать.
На примере, и зачем это надо: операторы SCADA на непосредственном объекте - люди, скажем так, сильно старой закалки и специфического менталитета; они, если не видят мгновенного срабатывания, начинают остервенело тыкать в кнопку повторно, и объяснять им что-либо - бесполезно.
Так-то я понимаю, что надо к кнопке таймер прикручивать, но не совсем сообразил, как на время работы таймера кнопку заблокировать, чтоб она ни нажималась, ни отжималась.
МихаилГл
19.02.2024, 16:24
Всем ку!
Задача: есть кнопка на мнемосхеме, с фиксацией. Она же - дискретный тег в OPC. Ну, фиг знает, пусть это будет дискретный выход непосредственно в "железе". Кнопка на мнемосхеме, соответственно, этот дискретный выход включает и выключает.
Надо сделать так, чтобы в течение, условно, 5 секунд после нажатия/отжатия кнопки на неё нельзя было повторно нажать.
На примере, и зачем это надо: операторы SCADA на непосредственном объекте - люди, скажем так, сильно старой закалки и специфического менталитета; они, если не видят мгновенного срабатывания, начинают остервенело тыкать в кнопку повторно, и объяснять им что-либо - бесполезно.
Так-то я понимаю, что надо к кнопке таймер прикручивать, но не совсем сообразил, как на время работы таймера кнопку заблокировать, чтоб она ни нажималась, ни отжималась.
При нажатии скрывай кнопку и оставляй на её месте не активную надпись. А инвертирование этого тэга этой же кнопкой лучше исключить.
SCADAMaster
19.02.2024, 19:19
Так-то я понимаю, что надо к кнопке таймер прикручивать, но не совсем сообразил, как на время работы таймера кнопку заблокировать, чтоб она ни нажималась, ни отжималась.
Через вход динамизации "Заблокирован"
То ли лыжи не едут, то ли одно из двух...
Делаю следующим образом:
Функциональный блок "команда" с типом данных "дискретный". Она вытащена на Окно управления в виде кнопки с фиксацией.
Функциональный блок "Выдержка времени". У него на входе "секунды" задана константа 5. Вход "Сброс" этого же функционального блока принудительно находится в состоянии "Вкл" через константу. Выход этого функционального блока заведён на вход динамизации "Заблокирован" кнопки.
В итоге - при запуске проекта на исполнение я вижу заблокированную кнопку, которая через 5 секунд разблокируется, и её можно нажимать/отжимать уже с любой периодичностью.
Нужна же другая логика:
- когда проект запускается на исполнение - кнопки по обратной связи получают состояние "нажата"/"отжата" в зависимости от состояния дискретных выходов модулей ввода/вывода на объекте через соответствующие теги OPC;
- кнопки при этом должны быть заблокированы на 3-5 секунд, чтобы их не могли начать сразу туда-сюда тыкать;
- затем кнопки разблокируются. Как это сделать - я, вроде, разобрался, в начале сообщения это описано;
- необходимо, чтобы при КАЖДОМ нажатии/отжатии кнопка блокировалась на 5 секунд.
Объясню: кнопки "рулят" контакторами насосов по 30-50 кВт. Помимо кнопок запуска/останова насосов, на окне управления рядом с каждой кнопкой есть индикация работы насоса. Она берётся из бинарной маски входов модуля ввода/вывода. Т.е. если дискретный вход на модуле ввода/вывода замкнулся - на форме зажигается зелёный индикатор. Если обратная связь с промежуточного реле почему-то не пришла - индикатор при нажатой кнопке остаётся красным, и это сигнализирует об аварии. В обратную сторону то же самое: при отжатии кнопки - насос отключается, обратная связь с промежуточного реле перестаёт приходить, флаг в бинарной маске обнуляется, индикатор на мнемосхеме из зелёного становится красным, оператор понимает, что насос встал.
Поскольку все переключения происходят не мгновенно, а за несколько тактов (пока нажалась кнопка, ушла команда, она "пролезла" через все преобразователи интерфейсов и репитеры, включился дискретный выход модуля ввода/вывода, пришла обратная связь с промежуточного реле, замкнулся вход модуля/вывода, выставился соответствующий тег в OPC, распаковалась бинарная маска, сменился цвет индикатора на мнемосхеме), то между нажатием кнопки и изменением цвета индикатора проходит 2-4 секунды. Персонал специфический, и довольно "тугой". Если не произошло моментальной реакции - значит надо бегом-бегом попробовать ещё раз отжать и нажать кнопку, и что-то объяснять вообще бесполезно. SCADA, естественно, это всё нормально отрабатывает, и на объекте начинает туда-сюда включаться/выключаться немаленький насос. Вот чтобы оператор гарантировано дождался реакции системы на запуск - и надо, чтобы у него отсутствовала возможность тыкать кнопку повторно в течение 3-4-5 тактов системы.
Посмотрел старые ролики, раньше был функциональный блок "Кнопка", со свойством "время фиксации". Вот нужно, по сути, воспроизвести это свойство, только для обоих положений: нажал кнопку, 5 секунд она не отожмётся. Отжал кнопку - аналогично, 5 секунд хоть утыкайся - реакции не будет.
SCADAMaster
14.03.2024, 10:39
Посмотрите пример в приложении
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot