Таймаут |
Типовые задачи Предыдущий Следующий |
Общие сведенияНаименование: TIMEOUT. Тип выхода: целый положительный. Количество входов: 1 или 3. Примечание по входам•порядок входов: «Задержка», «Условие», «Истинно»; •«Задержка» — целое положительное число, задаваемое в тактах Контроллера (1 такт = 100 мс); •«Условие» — логический сигнал; •«Истинно» — наименование алгоблока, на который будет осуществляться переход по условию; •одновременно второй («Истинно») и третий («Условие») аргумент можно не указывать — до полной отработки задержки переход не будет осуществляться (см. Функционирование). ФункционированиеКраткое описаниеДанный алгоблок используется в вызываемой независимой подпрограмме и задерживает ее исполнение на указанное в первом входе («Задержка») число тактов работы Контроллера. При этом на каждом такте задержки работа данной подпрограммы прекращается, управление передается вызывающей подпрограмме, а на следующем такте вызываемая независимая подпрограмма продолжает работу с данного алгоблока. Имеется возможность прекратить задержку и перейти на блок, указанный в третьем входе («Истинно»), если состояние второго входа («Условие») равно логической единице. Формальное описание•значение выхода алгоблока имеет неинициализированное состояние, если данный алгоблок еще ни разу не запускался; •значение выхода алгоблока равно нулю, если данный алгоблок не функционирует (на данном такте не прерывал работу вызываемой независимой подпрограммы); •значение выхода алгоблока на каждом такте увеличивается на 1, если алгоблок функционирует; •значение алгоблока равно от 1 до значения, указанного в первом входе («Задержка»), если он в настоящий момент функционирует (на данном такте прерывал работу вызываемой независимой подпрограммы и передавал управление вызывающей подпрограмме); •неинициализированное или недостоверное состояние второго входа («Условие») приравнивается к логическому нулю.
Пример использования// Пример // Вызываемая независимая подпрограмма START B1 = EXCEPTION_RUN(DO1.1) B2 = EXCEPTION_RUN(DO1.2) B3 = VALUE_FORCE(DO1.1; 1) B4 = VALUE_FORCE(DO1.2; 1) B5 = TIMEOUT(6000; DO2.1; B6) B6 = EXCEPTION_STOP(DO1.1) B7 = EXCEPTION_STOP(DO1.2)
// Основная подпрограмма (фрагмент) // Если DI1.1 становится равным 1, // то на 10 мин каналы DO1.1 и DO1.2 // становятся равными 1, // игнорируя работу по формуле. // Однако, если DO2.1 становится равным 1, // то исключение прекращает действовать B500 = ... B510 = DYN_CALL(START; DI1.1) B520 = ... См. также |