Вход

Просмотр полной версии : Увеличение значение по нажатию кнопки на клавиатуре ПЛК 73



Serega_80
05.07.2016, 11:27
Доброго времени суток всем! Недавно начал осваивать ПЛК. Конкретно - ПЛК 73. Знаком с программированием микроконтроллеров на Си. При освоении столкнулся с небольшой проблемкой. Необходимо вывести на экран ПЛК значение переменной и по нажатию одной кнопки (например, F2) увеличивать это значение, а по нажатию другой (например, F3) это значение уменьшать. Суть вопроса:
Сейчас у меня получается, что при нажатии на кнопку F2, значение переменной увеличивается очень быстро, этого не замечаешь и это не отображается на экране. При программировании на Си я просто добавляю задержку между нажатием кнопки и увеличением значения. А тут я делаю задержку, программа отрабатывает ее после нажатия кнопки, а потом все равно увеличивает значение до максимума без задержки. Пока не понимаю, как сделать так, чтобы нажал кнопку - увеличилось значение на 1, нажал второй раз - значение увеличилось еще на 1 (стало 2), и т.д. И, соответственно, таким же образом работало уменьшение значения. Подскажите, пожалуйста, решение. Или толкните в правильном направлении. Прикрепляю скриншот и саму программу.

lara197a
05.07.2016, 12:33
по фронту нажатия (через R_TRIG)

Serega_80
05.07.2016, 12:45
Если бы Вы посмотрели прикрепленные мной файлы, Вы бы увидели, что нажатие на кнопку обрабатывается как раз через этот триггер R_TRIG. Программа видит одиночное нажатие, а увеличивает значение сразу до максимального.

lara197a
05.07.2016, 12:56
в 4 строке не рабочая инструкция.
пытаетесь сделать задержку включения от переменной активной 1 цикл плк

lara197a
05.07.2016, 13:01
во 2 и 9 строках используете одну и туже функцию с разными условиями.
так нельзя.
объявите к примеру
front1 и front2

Serega_80
05.07.2016, 14:37
1. Если переменная активна один цикл, значит после одного цикла она снова сбрасывается? Или же надо принудительно ее сбросить после прибавления 1 к нужной переменной?
Я делаю по аналогии с микроконтроллерами. Вот так:
а) Проверяем кнопку. Кнопка нажата?
б) Да.
в) Ждем какое-то время (например, 10 мс) для защиты от дребезга.
г) Снова проверяем нажата ли кнопка. Если да, то обрабатываем нажатие. Если нет, то считаем это дребезгом и игнорируем.
2. Про разные условия понял, спасибо, попробую разные переменные.

Serega_80
05.07.2016, 14:49
Сделал разные переменные для обработки кнопок. Вроде получилось) Пока в эмуляции, под рукой нет ПЛК. Посмотрите, пожалуйста, правильно ли я понял: Даже наверно задержку включения TON можно убрать

lara197a
05.07.2016, 16:25
в ПЛК не нужно проверять кнопку.
Дребезг настраивается в конфигураторе.
можно сразу написать к примеру так
front1(cIk:=klava=64);

Serega_80
05.07.2016, 16:34
Это я понял. Просто сначала у меня при нажатии на кнопку в переменной появлялись какие-то случайные значения. Я подумал, что это от того, что за одно нажатие кнопки переменная увеличивается сразу до 40, до 57, проходит максимум (задан 100) и начинает с нуля. Поэтому я решил, что надо сделать задержку обработки нажатия. А теперь понял, что на самом деле получалось, что при нажатии кнопки значение то увеличивалось, то уменьшалось. Спасибо!
PS: Проверил на ПЛК - все работает, только еще ошибка была в выводе переменной на экран. Надо в формате вывода написать f вместо d. В общем, поправил, работает, благодарю за быструю помощь!