Всем здравствуйте!
Вопрос уже был задан пользователем Виталий_khv на стр. 101, но обсуждения не было.
Подскажите, пож-та, как следует (или как правильно, как лучше) сделать алгоритм, который я назвал "Блокировка по кнопкам".
У меня есть экраны "Главное меню" и "Нагреватель". В схеме есть блок "Блокировка по кнопкам".
Перехожу в экран "Нагреватель". ОК, пока ничего не происходит. Таймер при этом может быть включен (логическая 1 поступает на выход ТАЙМЕРА) или выключен. Если нажимаю кнопку ESC, перехожу на экран "Главное меню". Таймер при этом остается в том состоянии, в котором и был. На выходе блока "Блокировка по кнопкам" лог. 0.
Теперь другая ситуация. Перехожу в экран "Нагреватель". Пока ничего не происходит. Таймер при этом может быть включен (логическая 1 поступает на выход ТАЙМЕРА) или выключен. Но теперь я нажимаю на другие кнопки (ESC не трогаю), изменяя уставки таймера. В этот момент должна включиться "Блокировка по кнопкам" и на выходе блока появляется лог. 1. (Что мы делаем с таймером - не важно. Можем гонять уставки туда-сюда, таймер включается и выключается, нас это не волнует. Лог. 1 на выходе блока "Блокировка по кнопкам" блокирует сигнал с выхода таймера на исполнительный элемент, катушку реле или контактора.) В момент включения "Блокировки" запускается счетчик времени, например, на 5 минут (в моей тестовой программе пока 10 секунд).
Каждый раз, если нажимаем на любую кнопку, кроме ESC в течение 5 минут, счетчик сбрасывается в 0 и начинает отсчет 5 мин с нуля. На катушку реле или контактора сигнал от таймера (не важно, включен в данный момент таймер или выключен) не поступает, т. к. на выходе блока "Блокировка по кнопкам" висит лог. 1.
Если в течение 5 мин ни на какие кнопки не нажимали,на выходе блока "Блокировка по кнопкам" появляется лог. 0. Блокировка сбрасывается.
Если в течение 5 мин нажали ESC (уставки поменяли и хотим сразу включить нагреватель), блокировка сбрасывается. На выходе блока "Блокировка по кнопкам" появляется лог. 0. И при этом переходим в экран "Главное меню".
Счетчик я написал на ST.
111124_fig1_таймер.PNG
111124_fig2_таймер.PNG
Испытал, вставил в программу. Вроде, эта ступень блокировки работает правильно, проблем не выявил.
Смысл этой ступени блокировки в том, чтобы во время настройки уставок таймера нагревателя сигнал с выхода таймера (0 там или лог. 1 - не важно! Можем играть уставками, чудить, тупо раз за разом включая и выключая таймер.) не поступал на исполнительный элемент.
И снова возник вопрос.
Правильно ли подошел к решению задачи? Если нет, как правильно? Может, подобная задача решается принципиально иначе? Можно ли сделать проще? Может, счетчик времени проще на FBD сделать?
Честно говоря, не могу отделаться от ощущения, что снова изобрел велосипед.Колеса квадратные и седло на метр выше руля.
Извините, если написал сумбурно или же излишне подробно.





Колеса квадратные и седло на метр выше руля.
Ответить с цитированием