plcforum.uz.ua

International PLC Forum
It is currently Fri Jul 28, 2017 7:55 pm

All times are UTC + 3 hours




Post new topic Reply to topic  [ 6 posts ] 
Author Message
PostPosted: Thu Dec 08, 2016 3:34 pm 

Joined: Thu Dec 08, 2016 3:30 pm
Posts: 2
Добрый день.

Необходимо написать программу. Задание такое:


Верхняя кнопка отвечает за увеличение по единице, если значение выхода достигает 255, то выход обнуляется и продолжается с нуля.
Нижняя кнопка отвечает за увеличение по десятке, если значение выхода достигает 255, то выход обнуляется и продолжается с нуля.
Средняя кнопка сбрасывает число в 0.
При длительном удержании, через 2 секунды должно начать автоматически увеличиваться выход, если удерживается верхняя, то по единице, если нижняя, то по десятке, с периодом полсекунды.

Пример:
Допустим нам надо ввести число 33
Вводится следующим образом: нажимаем верхнюю кнопку, вводится число 1, если будем удерживать больше 2 секунд должно выводиться 2, 3, 4... и т. д. до 33 или кратковременными нажатиями (33 раза) на верхнюю кнопку, или 3 раза на нижнюю и 3 раза на верхнюю.

Желательно с использованием R_Trig, F_Trig, TON и TOF.

Заранее большое спасибо.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 08, 2016 7:27 pm 
Site Admin

Joined: Wed Sep 06, 2006 3:03 pm
Posts: 1089
Location: CIS
Так в чем проблема? Что именно не получается?


Top
 Profile  
 
 Post subject: Re:
PostPosted: Fri Dec 09, 2016 4:45 pm 

Joined: Thu Dec 08, 2016 3:30 pm
Posts: 2
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;

Тут не хватает задержки, и я даже не знаю, как ее оформить(


Top
 Profile  
 
PostPosted: Wed Mar 15, 2017 7:21 pm 

Joined: Wed Oct 13, 2010 11:44 am
Posts: 145
Location: Russian Federation
Конечно неправильно. Ведь условие
Code:
i:=i+10;
if (i=255) then

Выполнится только в том случае, если 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 промотают быстрее чем глазом моргнёте.
А в целом - программка будет простой, пара-тройка нетворков.


Top
 Profile  
 
PostPosted: Thu Mar 16, 2017 7:30 am 

Joined: Mon Mar 31, 2008 2:29 pm
Posts: 398
Location: Ryazan, Russia
Rex2701 wrote:
Конечно неправильно. Ведь условие
Code:
i:=i+10;
if (i=255) then

Выполнится только в том случае, если i изначально делилось на 10 с остатком 5.
...и было не больше 245.


Top
 Profile  
 
PostPosted: Thu Mar 16, 2017 6:20 pm 

Joined: Wed Oct 13, 2010 11:44 am
Posts: 145
Location: Russian Federation
На STEP-7 будет как-то так:
Image
Image
Проверить в симуляторе не было времени, так что возможны глюки.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: Yahoo [Bot] and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by International PLCforum® Forum Software © PLCforum
Mobile version