Добрый день.
Необходимо написать программу. Задание такое:
Верхняя кнопка отвечает за увеличение по единице, если значение выхода достигает 255, то выход обнуляется и продолжается с нуля.
Нижняя кнопка отвечает за увеличение по десятке, если значение выхода достигает 255, то выход обнуляется и продолжается с нуля.
Средняя кнопка сбрасывает число в 0.
При длительном удержании, через 2 секунды должно начать автоматически увеличиваться выход, если удерживается верхняя, то по единице, если нижняя, то по десятке, с периодом полсекунды.
Пример:
Допустим нам надо ввести число 33
Вводится следующим образом: нажимаем верхнюю кнопку, вводится число 1, если будем удерживать больше 2 секунд должно выводиться 2, 3, 4... и т. д. до 33 или кратковременными нажатиями (33 раза) на верхнюю кнопку, или 3 раза на нижнюю и 3 раза на верхнюю.
Желательно с использованием R_Trig, F_Trig, TON и TOF.
Заранее большое спасибо.
Увеличение числа
-
- Posts: 2
- Joined: Thu Dec 08, 2016 12:30 pm
Re:
Schtiel wrote:Так в чем проблема? Что именно не получается?
В том то и дело. Я не имею представления, как написать такую программу, ибо материала давалось очень немного.
Та программа, что есть, работает не совсем правильно. Извиняюсь, что сразу ее не записала.
IF (In_1) THEN
i:=i+1;
if (i=255) then
Out_1:=Value;
i:=0;
end_if;
END_IF;
IF (In_3) THEN
i:=i+10;
if (i=255) then
Out_1:=Value;
i:=0;
end_if;
END_IF;
IF (In_2) THEN
i:=0;
Value:=0;
Out_1:=0;
end_if;
Тут не хватает задержки, и я даже не знаю, как ее оформить(
-
- Posts: 374
- Joined: Wed Oct 13, 2010 8:44 am
- Location: Russian Federation
Re: Увеличение числа
Конечно неправильно. Ведь условие
Выполнится только в том случае, если i изначально делилось на 10 с остатком 5. В остальных 9-ти из 10-ти случаев - условие не сработает.
И еще 3 вопроса:
1. Из условия задачи непонятно: 255 является валидным значением или после 254 сразу должен идти 0?
2. В случае счёта по 10, что должно быть в счётчике при превышении 255? Если счёт был таким: 202, 212, 222, 232, 242, 252... Следующим должен быть обязательно 0 или 262-255=7?
3. Кнопки уменьшения не предусмотрены? В случае промаха человек должен каждый раз проматывать счётчик выше 255? Юзабилити как-то не очень.
И ещё надо подумать над тем, что счёт по 10 должен выполняться с некоторой паузой, иначе современные контроллеры с временами цикла 1 мс и менее, эти ваши 255 промотают быстрее чем глазом моргнёте.
А в целом - программка будет простой, пара-тройка нетворков.
Code: Select all
i:=i+10;
if (i=255) then
И еще 3 вопроса:
1. Из условия задачи непонятно: 255 является валидным значением или после 254 сразу должен идти 0?
2. В случае счёта по 10, что должно быть в счётчике при превышении 255? Если счёт был таким: 202, 212, 222, 232, 242, 252... Следующим должен быть обязательно 0 или 262-255=7?
3. Кнопки уменьшения не предусмотрены? В случае промаха человек должен каждый раз проматывать счётчик выше 255? Юзабилити как-то не очень.
И ещё надо подумать над тем, что счёт по 10 должен выполняться с некоторой паузой, иначе современные контроллеры с временами цикла 1 мс и менее, эти ваши 255 промотают быстрее чем глазом моргнёте.
А в целом - программка будет простой, пара-тройка нетворков.
-
- Posts: 406
- Joined: Mon Mar 31, 2008 11:29 am
- Location: Ryazan, Russia
Re: Увеличение числа
...и было не больше 245.Rex2701 wrote:Конечно неправильно. Ведь условиеВыполнится только в том случае, если i изначально делилось на 10 с остатком 5.Code: Select all
i:=i+10; if (i=255) then
-
- Posts: 374
- Joined: Wed Oct 13, 2010 8:44 am
- Location: Russian Federation