PDA

Просмотр полной версии : Привязка экрана к переменной



LEX2030
26.10.2016, 18:10
Доброго времени суток.

Как привязать переменную к изменению экрана в ПР-200?

Ревака Юрий
27.10.2016, 08:59
Доброго времени суток.

Как привязать переменную к изменению экрана в ПР-200?

Добрый день!

Вы хотите с помощью переменной управлять экраном или меняя экран изменять переменную, если второе то не получится. А с первым вводите битовую переменную и выбираете ее в свойствах экрана в менеджере экранов.

melky
27.10.2016, 09:30
А планируется сделать нумерацию экранов в системную переменную и когда, если планируется ?

Не хватает сего действия, как и системной переменной с кодами клавиш ПР

Ревака Юрий
27.10.2016, 11:12
А планируется сделать нумерацию экранов в системную переменную и когда, если планируется ?

Не хватает сего действия, как и системной переменной с кодами клавиш ПР

На эти вопросы у меня пока нет ответов.

Сергей0308
27.10.2016, 19:08
По-моему эту тему с полгода, а может и больше назад обсуждали, и вроде бы как успешно разрешили, но видимо это не так или не все или не до всех ещё дошло, как-то так:

27309

alexfromnn
27.10.2016, 23:50
Вопрос, что называется "вдогонку" к вышесказанному. Как должна измениться переменная для перехода на другой экран? Судя по картинке в сообщении #5 это все-таки положительный фронт ("0" --> "1")

Ревака Юрий
28.10.2016, 11:30
Вопрос, что называется "вдогонку" к вышесказанному. Как должна измениться переменная для перехода на другой экран? Судя по картинке в сообщении #5 это все-таки положительный фронт ("0" --> "1")

Да именно по фронту, иначе может получиться так, что экран будет "проскакивать". Этот эффект может проявиться если одна переменная будет использоваться для перелистывания нескольких экранов.

melky
28.10.2016, 11:50
Сергей0308 абсолютно не дошло. Имеем "Главный экран", переключаемся кнопками Вверх, Вниз по экранам - КАК программа узнает что я переключился на экран скажем 5 ?

Выложите пример вашего варианта, чтобы более предметно объяснить поведение, которого необходимо добиться.

Собственно необходимо использовать клавиши ПР (не переменные или физические входы) и понимать, на каком экране мы остановились...

Владимир Ситников
28.10.2016, 11:58
По-моему эту тему с полгода, а может и больше назад обсуждали, и вроде бы как успешно разрешили, но видимо это не так или не все или не до всех ещё дошло, как-то так:

27309

Я правильно понял, что невозможно сделать, чтобы "номер экрана" задавался значением переменной?
Интересно, команда ОВЕН слышала про https://facebook.github.io/react/ и https://facebook.github.io/react-native/ ?
Похоже, не слышали.

Если сделать управление экранами и элементами в духе React JS, то разработка интерфейса станет на порядок проще.

Ревака Юрий
28.10.2016, 12:01
Сергей0308 абсолютно не дошло. Имеем "Главный экран", переключаемся кнопками Вверх, Вниз по экранам - КАК программа узнает что я переключился на экран скажем 5 ?

Выложите пример вашего варианта, чтобы более предметно объяснить поведение, которого необходимо добиться.

Собственно необходимо использовать клавиши ПР (не переменные или физические входы) и понимать, на каком экране мы остановились...

На сколько понял я, сообщение было адресовано автору темы, хотя сейчас подумав, если добавить в схему счетчик, то возможно получится хранить в переменной текущее состояние экрана, но только если структура переходов будет линейная.

игорь68
28.10.2016, 12:03
Пока не будет макроса кнопок не будет нормального меню пользователя.

melky
28.10.2016, 12:05
В том то и дело, что линейность не предполагается.

Например вход в один список экранов настройки по Alt+UP, вход в другой список по ALT+Down, в третий ALT+OK и так далее.

Поэтому сделать системную переменную для экранов, а экранам присваивать номера это ОПТИМАЛЬНЫЙ выход.

Ну и системную переменную для клавиш сделать как для управления экранами так и других задач., например ввод пароля и т.д.

Сергей0308
28.10.2016, 17:45
Сергей0308 абсолютно не дошло. Имеем "Главный экран", переключаемся кнопками Вверх, Вниз по экранам - КАК программа узнает что я переключился на экран скажем 5 ?

Выложите пример вашего варианта, чтобы более предметно объяснить поведение, которого необходимо добиться.

Собственно необходимо использовать клавиши ПР (не переменные или физические входы) и понимать, на каком экране мы остановились...

Значение переменной "Экраны" будет соответствовать одному из экранов, если Вы хотите чтобы программа знала на каком экране Вы находитесь, переходите на них по значению переменной, собственно для этого она и создавалась!

melky
28.10.2016, 21:12
А значение переменной создать на главном экране и там выбирать ? типа динамический текст Меню - Экран1 - Экран2 и т.д.

Возникает простой вопрос - КНОПКИ у ПР для чего ? Да и на каждом экране делать такой динамический текст просто глупо, HD о двух строках дает о себе знать...

Сергей0308
28.10.2016, 21:21
До 10 экранов, достаточно 1 разряда целочисленной переменной!

игорь68
28.10.2016, 22:16
По поводу экрана 2 строки маловато будет. Но как говорится чем богаты)))) А если привязать жестко экранные переменные к кнопкам. UP-от 100 до 199; DoWN -от 200 до 299. И так далее. Я думаю что 99 экранов делать не будут. Тогда для того что бы попасть в экран UP10 нужно будет нажать 10 раз в верх(((

melky
28.10.2016, 23:55
Сергей0308, то, что вы предлагаете простите тоже через Опу...

Владимир Ситников
29.10.2016, 00:05
https://www.google-analytics.com/collect?v=1&tid=UA-62628294-2&t=event&cid=screens&cn=screens&cs=owen&ec=blogpost&ea=screens
Сергей0308, то, что вы предлагаете простите тоже через Опу...

Если я правильно понял, то Сергей предлагает, что:
1) В программе должна быть переменная, которая означает номер экрана, который сейчас должен быть отображён
2) Саму переменную меняем в программе нужным образом

Выглядит весьма здраво, и именно так, например, работает React JS.

Сергей0308
29.10.2016, 00:07
Сергей0308, то, что вы предлагаете простите тоже через Опу...

Вы предлагаете ждать, может кто-то когда-то что-то сделает? Если Вы сделаете альтернативное решение, буду рад посмотреть!
Вот мой проект, из программы осуществляется переход на нужный экран!
Если хотите кнопками переход делать и чтобы программа это "видела", я уже писал, добавите переменную "Экраны" на экран и вводите соответствующие значения для перехода! Честно не могу представить пока, как Вы можете сделать лучше на данном этапе развития ОЛ???

melky
29.10.2016, 11:24
так в том и дело, что переход из программы не проблема, это и так реализовано в ПР.
Проблема в том, что при переходах клавишами программа не знает какой сейчас экран включен.

Использование для перехода дискретного входа типа крутить по кругу - занять вход
Использование переменной на каждом экране это занять место на экране и так каличном.

Оба костыля требуют циклической организации экранов, но не разветвленной, можно конечно изе..вернуться, но зачем ????

Оба решения это костыли, коих быть не должно, ИМХО.
Понятно, что сейчас при необходимости мы их используем, так же как и активация Modbus переменных нужным значением при старте ПР.

Вот и хочется, чтобы разработчики эти моменты допилили в первую очередь.

alexfromnn
29.10.2016, 12:34
Короче, голосуем за то, чтобы Овен доработал ОЛ в плане наличия "системных" булевых переменных, привязанных к нажатию кнопок. Нажал соответствующую кнопочку - получи "1", отпустил - держи "0". И будет всем нам счастье

Сергей0308
30.10.2016, 02:07
Возникает простой вопрос - КНОПКИ у ПР для чего ?

Учитывая, что нет ПР щитового исполнения?! Производители наверно хотели кому-то угодить, но Вам это только навредило, если хотите большой экран, берите СПК или лучше промышленный компьютер, а не как не ПР200 и потом плакать, что экран маленький, как-то нелогично на мой взгляд!

melky
30.10.2016, 23:44
Нелогично делать устройство с клавишами, которым практически нельзя пользоваться.
Имеется ввиду из программы.

Устал я уже разрабов отправлять посмотреть конкурентов. Прежде чем что-то делать хоть иногда надо смотреть как сделано у других.

rovki
31.10.2016, 00:16
Пр200 по сравнению с Пр114 и 110 большой шаг .Но не возлагайте больших надежд (возможностей) на экран Пр200.Понятно ,что долго ждали ,но не следует доходить до абсурда -используйте HMI панели (простые или сенсорные) .Тем более что правильно сказали -ПР200 стоит внутри щита ....Когда был Пр114 не хватало возможностей сменить уставки ,вывести какое то значение на экран итд.Эти задачи и были решены на ПР200 .А вы предьявляете уже требования к 2 строчному экрану со служебными кнопками как к полноценной панели .Надо смотреть на конкурентов ,но не копировать их ,а делать 2 шага вперед ,там где они делают 1 шаг ...Можно бросить все силы на то что бы сделать из экрана ПР200 ,что то типа половины ИП320 (без графики) ,а можно сделать следующий ПР с нормальной сенсорной панелью по типу Nextion или выносная панель ,тогда можно иметь даже модификацию ПР200 без встроенного экрана (но дешевле) + выносная панель (модульный принцип) для хорошей визуализации .Кому нужна попроше то ПР200 с экраном встроенным,как сейчас .Пусть не обижаются разработчики ИП120 ,но покупать за 4000р такую же панель ,что стоит уже в Пр200 нет большого желания .Если эта панель для других устройств ,то я даже и не знаю для каких .Если как выносной экран для ПР200 ,то сильно дорого .Если бы была модификация ПР200 без экрана(дешевле на 2000р) ,то еще можно подумать ...

melky
31.10.2016, 09:42
rovki это да, на ИП120 панелька должна быть с псевдографикой за такие деньги. Чтобы можно было нарисовать битмаповскую картинку и залить, например рисунок насоса, 3-х ходового и т.д. + линии связи между ними.

На счет ПР200, да все, что нужно:
системная переменная с номером экрана, номер назначать в свойствах экрана
Системная переменная кода клавиш.

Этого вполне было бы достаточно.

guravlev-2
17.11.2016, 18:37
Добрый день. Наблюдается постоянный проскок экрана . Есть три экрана с 5-тью строками каждый(выводят значения переменных). На каждый экран для перехода задана своя переменная с использованием переднего фронта. При работе, два раза переключится с экрана на экран, один раз нет. Если при включении прибора подождать 2 минуты, то экран переключиться, если тут же будет команда на переход к другому экрану, может не переключиться, может переключиться... Пришлось отказаться от идеи переключения между экранами по переменной и назначить кнопки прибора для переключения экранов. Такое ощущение, что прибор не "успевает" за скоростью изменения переменной в программе(по переднему фронту). Как решить эту проблему? Спасибо за ответ.

Павел Братковский
18.11.2016, 06:39
Такое ощущение, что прибор не "успевает" за скоростью изменения переменной в программе(по переднему фронту). Как решить эту проблему? Спасибо за ответ.

если так часто идет смена экранов, то я бы сделал фиксатор событий и приоритет экранов.....

_neo_19
30.01.2017, 13:47
Задам вопрос иначе есть 9 экранов:
Экран №1 Скорость 15%
Экран №2 Скорость 25%
Экран №3 Скорость 35%
Экран №4 Скорость 45%
Экран №5 Скорость 55%
Экран №6 Скорость 65%
Экран №7 Скорость 75%
Экран №8 Скорость 85%
Экран №9 Скорость 95%
Так вот мой вопрос как в зависимости от экрана присвоить значение переменой "Скорость"? то есть экран 1 пер.=15
или как сделать по другому. просто обратился в службу поддержки за правильным выбором
посоветовали ПР200 и дали макрос на управление ПЧВ с ним разобрался всё гуд но сталкулся
с такой проблемой. а вот то что мне требовалось для ясности 29018

Сергей0308
30.01.2017, 14:01
Задам вопрос иначе есть 9 экранов:
Экран №1 Скорость 15%
Экран №2 Скорость 25%
Экран №3 Скорость 35%
Экран №4 Скорость 45%
Экран №5 Скорость 55%
Экран №6 Скорость 65%
Экран №7 Скорость 75%
Экран №8 Скорость 85%
Экран №9 Скорость 95%
Так вот мой вопрос как в зависимости от экрана присвоить значение переменой "Скорость"? то есть экран 1 пер.=15
или как сделать по другому. просто обратился в службу поддержки за правильным выбором
посоветовали ПР200 и дали макрос на управление ПЧВ с ним разобрался всё гуд но сталкулся
с такой проблемой. а вот то что мне требовалось для ясности 29018

Выше обсуждалось, переходите на экраны из программы, или по значению переменной "экраны", иначе никак, надеюсь пока!

Ревака Юрий
30.01.2017, 14:40
Задам вопрос иначе есть 9 экранов:
Экран №1 Скорость 15%
Экран №2 Скорость 25%
Экран №3 Скорость 35%
Экран №4 Скорость 45%
Экран №5 Скорость 55%
Экран №6 Скорость 65%
Экран №7 Скорость 75%
Экран №8 Скорость 85%
Экран №9 Скорость 95%
Так вот мой вопрос как в зависимости от экрана присвоить значение переменой "Скорость"? то есть экран 1 пер.=15
или как сделать по другому. просто обратился в службу поддержки за правильным выбором
посоветовали ПР200 и дали макрос на управление ПЧВ с ним разобрался всё гуд но сталкулся
с такой проблемой. а вот то что мне требовалось для ясности 29018

Добрый день! А экран вы сами выбираете, если да то проще иметь 4 экрана по которым переходим по кольцу, по нажатию, допустим ALT, на каждом экране ComboBox на 9 строк выбирается нужная строка, а в алгоритме в зависимости от значения переменной комбобокса от 0 до 9 устанавливается нужная частота.

Сергей0308
30.01.2017, 14:47
Мне не совсем понятно зачем менять экраны, если меняется частота, т. е. значения параметров?

melky
30.01.2017, 14:51
Просто комбобокс со скоростями на экране "Скорость"

Василий Кашуба
30.01.2017, 16:03
Если у вас двенадцать разных программ, то это не значит, что нужно создавать двенадцать экранов. Можно и на одном экране выбрать одну из двенадцати программ.

_neo_19
31.01.2017, 04:44
Василий а эта хорошая идея попробую

_neo_19
01.02.2017, 13:16
так подскажите пожалуйста я всё правильно понял ComboBox пролистывается стрелками верх вниз меняется значение переменой. например
строка 4 переменая = 3. просто благодаря такому свойству и функций сравнений сделал то что нужно. Спасибо Василий Кашуба за идею.
теперь новая задача но это наверное не сюда. с кем можно об этом поговорить и кто может подсказать кому не жалко своего времени буду благодарен.

melky
01.02.2017, 15:09
Так вы задачу опишите, есть общие темы по ОЛ или по ПР200.

Netmas
02.07.2017, 12:36
так в том и дело, что переход из программы не проблема, это и так реализовано в ПР.
Проблема в том, что при переходах клавишами программа не знает какой сейчас экран включен.

Использование для перехода дискретного входа типа крутить по кругу - занять вход
Использование переменной на каждом экране это занять место на экране и так каличном.

Оба костыля требуют циклической организации экранов, но не разветвленной, можно конечно изе..вернуться, но зачем ????

Оба решения это костыли, коих быть не должно, ИМХО.
Понятно, что сейчас при необходимости мы их используем, так же как и активация Modbus переменных нужным значением при старте ПР.

Вот и хочется, чтобы разработчики эти моменты допилили в первую очередь.

Вот я заметил то что мне тоже нужно!!! Мне нужно 17 экранов и сделать при переходе с экрана на экран с помощью кнопок вверх вниз лиц.панели ПР200 чтобы можно присвоить каждый экран в основной программе для реализации выходных реле! например нужен 1 экран сразу выход 1 реле, нужен второй экран выход реле 2 и т.д. если нужен 17 экран то выходы реле реализовать в двоичном коде для управления!

Netmas
02.07.2017, 12:39
Короче, голосуем за то, чтобы Овен доработал ОЛ в плане наличия "системных" булевых переменных, привязанных к нажатию кнопок. Нажал соответствующую кнопочку - получи "1", отпустил - держи "0". И будет всем нам счастье

И это по этот вопрос тоже у меня был, хорошо вообще занести эти кнопки на холст как входные сигналы!

Netmas
02.07.2017, 12:43
Учитывая, что нет ПР щитового исполнения?! Производители наверно хотели кому-то угодить, но Вам это только навредило, если хотите большой экран, берите СПК или лучше промышленный компьютер, а не как не ПР200 и потом плакать, что экран маленький, как-то нелогично на мой взгляд!

Для пультов с индикацией вывода чем будем управлять само то! Такие пульты у нас хорошо применяются и связаны с ПЛК! Например нужно управлять механизмом, а там например 30 операций, поехать впередили назад, опустить блокировкой или поднять , сместить толкатель вперед или назад и т.д. так вот в двоичном коде это минимум кнопок и наглядно видим чем управляем!

Netmas
02.07.2017, 12:52
Короче, голосуем за то, чтобы Овен доработал ОЛ в плане наличия "системных" булевых переменных, привязанных к нажатию кнопок. Нажал соответствующую кнопочку - получи "1", отпустил - держи "0". И будет всем нам счастье

Это однозначно нужно, если доделают я применю эти реле в 20 местах и переведу старые пульты на ПР200! а это не мало! Да и ещё сделать нужно переменные экранов которые были видны в программе как булевый сигнал, создал экран присвоил переменную а1, эта переменная в основной программе будет видна как дискретная 1, так сейчас можно на экран из программы заводить для отображения инфы на экране, а вот наоборот этого нет!

Netmas
02.07.2017, 12:59
если так часто идет смена экранов, то я бы сделал фиксатор событий и приоритет экранов.....

Вот из-за этого прийдется искать другое , чтобы выполняло то что хотел melky ! А мне сейчас это нужно срочно эти функции!

Рак
05.07.2017, 21:49
Всем привет.
Обзавелся ПР200 и начал работу по замене механического кулачкового реле времени.
Вопрос вот в чем, у меня есть 6 каналов выходов, нужно, что бы при установке каждого канала в 1 на дисплее обновлялась информация о текущем этапе производственного процесса.
Я попробовал сделать экраны и привязать их к изменению переменной (для каждого канала своя переменная), но тогда сообщение выводится и когда соответствующий канал отключается.
Второй вариант - использовать динамический текст, но тут проблема с формированием переменной.
Подскажите как выкрутится?

Василий Кашуба
05.07.2017, 23:59
Всем привет.
Обзавелся ПР200 и начал работу по замене механического кулачкового реле времени.
Вопрос вот в чем, у меня есть 6 каналов выходов, нужно, что бы при установке каждого канала в 1 на дисплее обновлялась информация о текущем этапе производственного процесса.
Я попробовал сделать экраны и привязать их к изменению переменной (для каждого канала своя переменная), но тогда сообщение выводится и когда соответствующий канал отключается.
Второй вариант - использовать динамический текст, но тут проблема с формированием переменной.
Подскажите как выкрутится?
Попробуйте этот пример.

Рак
06.07.2017, 13:25
Попробуйте этот пример.
Спасибо за ответ. Задача немного другая.
По аналогии с кулачковым реле времени, при срабатывании соответсвующего "кулачка" нужно вывести сообщение.
Например, при срабатывании первого канала вывести надпись "Закрывание вентиля", при срабатывании другого "Включение насоса" и т.д. Но при отключении первого канала должна оставаться та надпись, которая была последней на экране.
Пока писал родилась идея поставить на каждый канал дополнительный блок сравнения уставки включения канала и текущего времени цикла. Таким образом при каждом срабатывании будет появляться кратковременная единичка, к которой будет привязан соответствующий экран.

Василий Кашуба
06.07.2017, 14:09
Спасибо за ответ. Задача немного другая.
По аналогии с кулачковым реле времени, при срабатывании соответсвующего "кулачка" нужно вывести сообщение.
Например, при срабатывании первого канала вывести надпись "Закрывание вентиля", при срабатывании другого "Включение насоса" и т.д. Но при отключении первого канала должна оставаться та надпись, которая была последней на экране.
Пока писал родилась идея поставить на каждый канал дополнительный блок сравнения уставки включения канала и текущего времени цикла. Таким образом при каждом срабатывании будет появляться кратковременная единичка, к которой будет привязан соответствующий экран.
Я показал как выводить сообщения на экран, так как понял сама программа уже есть, переменные подключаете к нужным выходам и на экране читаете сообщения. А если нужна программа, заменяющая кулачковый механизм, то вот смотрите, правда она написана для ПР110, поэтому нужно будет копипастить на новую платформу в пустой проект.

Netmas
07.07.2017, 07:23
Изменять переменную меняя экран у меня получилось, только программно, но не задача в том что получилось только применяя кнопки не с лицевой панели,а с входов прибора! Потом мне попалась не приятная вещь, при смене экранов программным способом, нет включения подсветки дисплея, вернее нет переменной для этого дела, а вот с лицевой панели с кнопок то подсветка включается, не удобно, надо в пожелание по доработке ОЛ или ПР200 чтобы и эту мелочь сделали!

melky
07.07.2017, 08:46
BitMask сделайте без сброса, вывод на экран старшего значения.

Netmas
07.07.2017, 18:19
А значение переменной создать на главном экране и там выбирать ? типа динамический текст Меню - Экран1 - Экран2 и т.д.

Возникает простой вопрос - КНОПКИ у ПР для чего ? Да и на каждом экране делать такой динамический текст просто глупо, HD о двух строках дает о себе знать...

Вот я солидарен с melky! Я тоже задавался вопросами нафига эти кнопки на лиц. панеле, если они только нужны для системных дел, нужны чтобы они работали на программирующих реле ONI там это реализовано отлично, теперь как регулировать подсветку на экране, если на системных кнопках подсветка работает , а вот если на входах реализовать то как?? короче вопросы на вопросах!А так реализовал я управление как хотелось нам всем, только вот программа пользователя стала огромная и ресурсов кушает, так как если как мы хотели при выборе экрана были переменные выходные и привязывать в программе, то тут приходиться создавать регистры сдвига и применять универсальный счетчик и т.д. и присваивать переменные выходные из программы для вывода экрана, короче не удобно,но решаемо! Хочу чтобы быстрее программисты сделали доступ к кнопкам и переменные к экранам чтобы можно их присваивать к входам в пользовательской программе! Управление подсветкой тоже переменная была из пользовательской программы и вот ещё переходы по экранам дело хорошо что реализовано и кнопками системными и по переменным, а вот как бы сделать не переход, а присвоение основных экранов к переменной, например в основном экране сделать подэкраны с динамическим текстом и т.д. там можно реализовать присвоение к выводимому тексту, а вот к основным экранам нет!

Netmas
09.07.2017, 08:03
Учитывая, что нет ПР щитового исполнения?! Производители наверно хотели кому-то угодить, но Вам это только навредило, если хотите большой экран, берите СПК или лучше промышленный компьютер, а не как не ПР200 и потом плакать, что экран маленький, как-то нелогично на мой взгляд!

Как раз Пр200 хорошо размещается в щитовом лицевой панели шкафа, вырезаем окно под реле чтобы только 1 выступ входил в вырезанное окно,далее берем динрейку ставим релюшку на неё и крепим дин рейку 2-я длинными винтами или болтами к лиц.панели щита, с регулировкой гайками для не перетягивания корпуса ПР200 чтобы не треснул))) Здорово красиво, все части где подводяться входы и выходы у ПР200 за щитовой панели , программируй ПРку так как доступ к интерфейсу спереди! Поэтому такое крепление лучше чем такие как у приборов ТРМхх.

игорь68
15.07.2017, 09:13
Раз все больше вопросов возникает по кнопкам у ПР200 может компания OWEN поставит это вопрос в приоритете. Как я тут писал ( посту убрали почему то) у реле других производителе на более слабом процессоре (PIC18 ) есть и шина и кнопки (целых 4 штуки для работы как с выходами таки с экранами) и экран. А у ПР 200 нет кнопок. Хотя процессор ПР мощнее. Я не понимаю как пишут софт . Но думаю у OWEN есть специалисты которые могут посмотреть работу софта от других брендом.

Владимир Ситников
15.07.2017, 09:30
Но думаю у OWEN есть специалисты которые могут посмотреть работу софта от других брендом.
Посмотрят они, сделают похожим образом, а потом их засудят за нарушение каких-нибудь патентов.
Вы этого добиваетесь?

игорь68
15.07.2017, 22:10
Опрос кнопок кроме как читать вход и результат отправлять дальше. Кнопка не нажата 0 . Нажали стала 1. Как по другому. Первое реле что мне попало было меллер далеком 2000 году. Так там уже использовались кнопки. Какие могут быть патенты если как минимум у 3 производителей реле состав ФБ и сам среда программирования как под копирку. Все отличие в дизайне ФБ и названиях.
Как я понимаю кнопки читает один из регистров. Если в этом цикле кнопки не нажаты то на выходах регистра 0. Этот ноль пишем в переменную. Где перед записью происходит сравнение перед прошлым циклом. Если тоже ноль то и переменной присваиваем 0.
Если регистор прочитал 1 то и пишем 1. Но перед записью проверяем с прошлым циклом . Если прошлый ( старый) цикл был 0 а новый цикл 1 то пишем 1.