-
Реализация таймеров
Необходимо реализовать задержку выполнения программы - открыли клапан и ждём 30 с (никаких действий), открыли второй клапан и снова ждём 30 с, после чего начинается программа (регулятор). Возникает желание реализовать это через while , но при запуске программы срабатывает сторожевой таймер, пишет "слишком длинный цикл". Если делать через if , то всё что в теле if работает с нужной задержкой, но контроллер пробегает по всей программе, а это не нужно.
В общем если написать
timer(in:=1, pt:=t#30s);
if not (timer.q) then x:=x+1; end_if
timer(in:=0);
z:=z+1;
x будет увеличиваться на 1 каждые 30с, но z будет увеличиваться со скоростью работы процессора, что не подходит.
А если написать
timer(in:=1, pt:=t#30s);
while timer.q do;
x:=x+1;
timer(in:=0);
сработает сторожевой таймер, слишком длинный цикл.
Нельзя ли как нибудь обойти этот таймер?
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума