# Вызов независимой подпрограммы | Типовые задачи Предыдущий Следующий

## Общие сведения Наименование: DYN_CALL. Тип выхода: логический. Количество аргументов: от 1 до 3. ## Примечание по входам •порядок: «Подпрограмма», «Запускающий сигнал», «Останавливающий сигнал»; •типы входов: «Подпрограмма» — наименование вызываемой независимой подпрограммы; «Запускающий сигнал», «Останавливающий сигнал» — логический; •признак инверсии первого входа («Подпрограмма») игнорируется; •входы 3 и 2 («Останавливающий сигнал» и «Запускающий сигнал») можно не указывать (начиная с последнего); вход 3 по умолчанию равен нулю, а вход 2 — единице; •если значение входов 3 и 2 («Останавливающий сигнал» и «Запускающий сигнал») равны единице, то вход 3 имеет приоритет. ## Функционирование •если второй аргумент («Запускающий сигнал») равен логической единице и («Останавливающий сигнал») равен логичекому нулю, то запускается вызываемая независимая подпрограмма, наименование которой указано в первом аргументе («Подпрограмма»); результат алгоблока будет равен логической единице Примечание: если вызываемая независимая подпрограмма уже была запущена, то повторный вызов не производится, подпрограмма продолжит свою работу с места прерывания на предыдущем такте работы Контроллера, а результат работы алгоблока останется равным логической единице •если третий аргумент («Останавливающий сигнал») равен логической единице, то останавливается выполнение вызываемой независимой подпрограммы, наименование которой указано в первом аргументе («Подпрограмма»); результат алгоблока будет равен логическому нулю.
Не допускается использование данного алгоблока в вызываемых подпрограммах.
Функционирование различных видов подпрограмм приведено в Приложении Б, подраздел Описание логической программы. ## Пример использования // Пример // Вызываемая независимая подпрограмма 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, // то исключение прекращает действовать см. TIMEOUT. B500 = ... B510 = DYN_CALL(START; DI1.1) B520 = ... ## См. также Описание логической программы.