Просмотр полной версии : Язык ST. Временная задержка.
Здравствуйте! Срочно нужна Ваша помощь...
Подскажите пожалуйста как сделать временную задержку на языке ST.
Условие:если вход 1 труе, то выход 3 труе и через 3 сек выход 5 тоже становится труе.
IF iblnInPut1 THEN
qblnOutPut3:=TRUE;
TP1(IN:=TRUE, PT:=t#3s);
qblnOutPut5:=TRUE;
ELSE
qblnOutPut3:=FALSE;
qblnOutPut5:=FALSE;
END_IF
VAR
TP1:TON;
end_var
qblnOutPut3:= iblnInPut1;
TP1(IN:=iblnInPut1, PT:=t#3s);
qblnOutPut5:=TP1.Q;
Что-то типа этого...
Какой то странный код... Это точно ST?
А если ещё через секунду выходы 7,8 подключить? Так будет выглядеть:
qblnOutPut3:= iblnInPut1;
TP1(IN:=iblnInPut1, PT:=t#3s);
qblnOutPut5:=TP1.Q;
TP2(IN:=iblnInPut1, PT:=t#1s);
qblnOutPut5:=TP7.Q;
qblnOutPut5:=TP8.Q;
И ещё вопрос. Допустим мы получили условие (в данном случае вход 1 труе). В зависимости от этого условия выполняется программа: загорается 3 выход, через 3 секунды 5 выход, ещё через секунду 7 и 8 выходы. Так вот сам вопрос. Если вход 1 становиться фалзе, т.е. условие не действует, программа продолжается?
Николаев Андрей
18.03.2011, 10:43
Программа продолжается не зависимо от состояния переменных.
Будет ли работать таймер - Вы это хотели узнать.
Работа с таймерами в CoDeSys - вещь постоянная - рекомендую один раз сесть и разобраться с этим вопросом.
Графическое отображение работы таймеров приведено в мануале и хелпе.
НУ и если вся задача такая дискретная - гляньте на на язык LD
Хорошо, тогда я расскажу применительно к своему станку. Допустим выходы отвечают за движение пневмоцилиндров. Нужна кнопка сброса (грибок) которая возвращает все цилиндры в исходное положение. Т.е. на выходах (независимо от того окончилась программа или нет) должно установится фалзе.
P.S. форум для того и нужен что бы задавать вопросы...
Николаев Андрей
18.03.2011, 10:55
Так никто и не против - задавайте.
А еще форум очень помогает находить ответы на свои вопросы ;)
Например тут, в одной из самых верхних тем:
http://www.owen.ru/forum/showpost.php?p=10458&postcount=14
Спасибо, Андрей! Посмотрю...
Подскажите подскажите ещё. Вот пример из архива:
(*задержка включения: если вход 3 true, то через 5 секунд выход 3 true*)
tim1(IN := in3, PT := T#5s);
out3:=tim1.Q;
А если нужно условие от нескольких входов? Как будет?
(*задержка включения: если вход 3 true и вход 4 true , то через 5 секунд выход 3 true и через 7 секунд выход 4 true*)
Заранее спасибо!
tim1(in:=in3 and in4, pt:=t#5s);
out3:=tim1.q;
tim2(in:=in3 and in4, pt:=t#7s);
out4:=tim2.q;
dmitry90
26.03.2011, 01:15
Если в программе нужно вычислять множество всяких задержек, да и вообще логика достаточно сложная, лучше использовать конечные автоматы. Пример на ST есть здесь: http://robot-develop.org/archives/1440.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot