PDA

Просмотр полной версии : Опрос состояния кнопок в программе на ST



Newcomer
18.03.2022, 10:59
Добрый день.

У ПЛК73 на лицевой панели есть 9 тактильных кнопок. В РЭ и РП нигде не описано как можно опросить их состояние в программе ПЛК. Также на лицевой панели есть 6 светодиодных индикаторов. Как ими можно управлять из программы ПЛК ?

kondor3000
18.03.2022, 15:46
Примеры для ПЛК63/73 https://owen.ru/product/codesys_v2/example_program

Newcomer
18.03.2022, 16:24
Примеры для ПЛК63/73 https://owen.ru/product/codesys_v2/example_program

Можно опросить любую из девяти кнопок ?

Newcomer
19.03.2022, 12:01
С опросом кнопок разобрался, но возникла другая проблема. Опрашиваю кнопки F1...F3 в программе на ST, тут проблем нет. Но с кнопками Вверх и Вниз проблема. В программе их опросить можно, но при нажатии этих кнопок начинается перебор строк экрана, а это мне не надо. Можно ли запретить штатное назначение этих кнопок.

ASo
19.03.2022, 13:30
Можно, перейдите в монопольный режим экрана.

Newcomer
19.03.2022, 14:54
Можно, перейдите в монопольный режим экрана.

Спасибо, это то что надо.

Newcomer
20.03.2022, 11:21
При переходе в монопольный режим кнопки становятся свободно программируемыми, а как управлять экраном непонятно.

ASo
20.03.2022, 11:51
Естественно, ручками.
У вас нет нескольких экранов. Стерли и заполнили заново другой информацией.

Newcomer
20.03.2022, 12:00
Что значит ручками т?

ASo
20.03.2022, 12:02
В прямом смысле. Обработкой нажатий в программе.

Newcomer
20.03.2022, 12:17
В прямом смысле. Обработкой нажатий в программе.

С обработкой нажатия кнопок понятно. Непонятно как осуществлять вывод на дисплей.

ShowDint(0, 0, 1, '%d', ABC); - такое возможно в монопольном режиме использовать ?

ASo
20.03.2022, 12:24
Естественно, нет.
Только WriteDisplay

rebelucho
21.03.2022, 02:48
С обработкой нажатия кнопок понятно. Непонятно как осуществлять вывод на дисплей.

ShowDint(0, 0, 1, '%d', ABC); - такое возможно в монопольном режиме использовать ?

Формировать строку и выводить её на экран придется, так как в монопольном режиме можно выводить только строковые параметры.
В описании библиотеки есть вполне рабочий пример.

Для ограничения пользователя от необдуманных действий отличный вариант :)

Но работать с индикаций во время работы все таки удобнее в рабочем режиме.

rebelucho
21.03.2022, 10:28
ну так я и работаю, а клиентам отдаю вариант с монопольным режимом.

IVM
21.03.2022, 10:37
ну так я и работаю, а клиентам отдаю вариант с монопольным режимом.

А почему отдаете клиентам вариант с монопольным режимом ?

Филоненко Владислав
22.03.2022, 19:00
Что значит ручками т?

У Вас есть 2 руки, правая и левая. Используйте их для написания кода!

Филоненко Владислав
22.03.2022, 19:03
С обработкой нажатия кнопок понятно. Непонятно как осуществлять вывод на дисплей.

ShowDint(0, 0, 1, '%d', ABC); - такое возможно в монопольном режиме использовать ?

Важно! Документацию никто не читает, поэтому напомню, что операции с экраном не рекомендуется вызывать чаще чем раз в 100мс. И это не значит что можно обновлять экран 500-ми вызовами функции Write() раз в 100 мс, а значит что нужно вызывать Write() не чаще чем раз в 100мс. 1 штука раз в 100мс!
Поэтому пишем сколько угодно раз в промежуточный буфер на 32/64 символа, а потом по таймеру его отсылаем целиком на экран!

rebelucho
23.03.2022, 01:55
А почему отдаете клиентам вариант с монопольным режимом ?

Считаю, что нечего им делать в меню настройки ПЛК, всю необходимую индикацию для клиента вывожу в монопольном режиме.