Здравствуйте уважаемые форумчане, прошу подтолкнуть в сторону решения следующей задачи:
есть три булевые переменные vent1,vent2,vent3. Все они включаюся по тамеру, который определяет время работы(true) и время паузы(false) у каждой переменной отдельно, как организоавать цикл для проверки следующего условия:
Если таймер переменной подошел к запуску то проверить, что другие(другая) перменные уже работают более 3 секунд или до их остановки более 3 секунд, то запуститься сразу иначе отложить запуск переменой на 5 секунд.
Под запуском понимается переход в true.
Pause_Time1 и Run_Time1 переменные для задачи времениКод:vent1(ENABLE:=stop_vent1, TIMELOW:=Pause_Time1 , TIMEHIGH:=Run_Time1 , OUT=> ); Timer_Run1(IN:=vent1.OUT, PT:=Run_Time1 , Q=> , ET=> ); Timer_Pause1(IN:=NOT vent1.OUT, PT:=Pause_Time1 , Q=> , ET=> );
Stop_Vent1 булевая переменная аварийной остановки
Timer_Run1 и Timer_Pause1 таймеры для вывод информации о текущем времени работы и паузы
out1, out2, out3 непосредственно дискретные выходы плк
вот творчество пока на этом зависло...Код:IF vent2.OUT THEN IF (Vent1.out AND Timer_Run1.ET < T#3s) OR (Stop_Vent1 AND (NOT out1 AND (Pause_Time1-Timer_Pause1.ET < T#3s))) THEN out2_ton(in:=TRUE, pt:=T#5s); out2:=out2_ton.Q; ostalos2:=(Run_Time2-Timer_Run2.ET); ELSE out2:=TRUE; ostalos2:=(Run_Time2-Timer_Run2.ET); END_IF ELSE out2:=FALSE; out2_ton(in:=FALSE, pt:=T#0s); ostalos2:=(Pause_Time2-Timer_Pause2.ET); END_IF




Ответить с цитированием