Вызов независимой подпрограммы

Типовые задачи  Предыдущий  Следующий

Общие сведения

Наименование: 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 = ...

См. также

Описание логической программы.