Не совсем понял работу блока "Таймаут".
Когда на вход "считать" подаётся "1" - начинается отсчёт. В чём вопрос:
если с входа "считать" пропадает "1" - блок работает до того, как "осталось"<=0 или он становится неактивным (и "осталось" сбрасывается на значение установленного периода)?
Блок "Таймаут"
-
- Администратор
- Сообщения: 118
- Зарегистрирован: 29 май 2009, 13:45
- Откуда: Компания ДЭП
- Контактная информация:
Описание на Разработчик:
В момент перехода входа Считать 0->1 начинается отсчет времени.
Выход Таймаут остается = 0.
Как только остаток времени = Период - счетчик времени стал <= 0,
выход Таймаут = 1.
Как только Считать 1->0, выход Таймаут = 0.
По поводу предыдущего фрагмента кода. Строку
можно упростиь до
т.к. выход таймаут может быть 1, только когда cs_In == 1.
А вот если какое-либо действие надо выполнять пока отсчитывается таймаут, можно
Блок отсчитывает момент наступления таймаута. Отсчитываемое время задается по входу Период и может динамически изменяться.
Отсчет начинается с такта, в котором вход Считать становится активным.
На такте, когда остаток времени (выход Осталось) станет меньше или равен нулю, выход Таймаут активизируется и удерживается таким до тех пор, пока вход Считать активен.
При входе Считать = FALSE, выход Таймаут = FALSE и выход Осталось = 0.
В момент перехода входа Считать 0->1 начинается отсчет времени.
Выход Таймаут остается = 0.
Как только остаток времени = Период - счетчик времени стал <= 0,
выход Таймаут = 1.
Как только Считать 1->0, выход Таймаут = 0.
По поводу предыдущего фрагмента кода. Строку
Код: Выделить всё
cs_Out = (DBlock0_out.IsTO)&&(cs_In);
можно упростиь до
Код: Выделить всё
cs_Out = (DBlock0_out.IsTO);
т.к. выход таймаут может быть 1, только когда cs_In == 1.
А вот если какое-либо действие надо выполнять пока отсчитывается таймаут, можно
Код: Выделить всё
cs_Out = (!DBlock0_out.IsTO)&&(cs_In);