Применение инструкций для вызова и завершения блоков

Инструкции для вызова и завершения обработки блоков принадлежат к функциям обработки кодовых блоков.

Кодовые блоки вызываются оператором CALL. При вызове функционального блока открывается экземплярный блок данных, с помощью которого можно передавать данные в вызываемый блок или получать данные от вызываемого блока. Если кодовые блоки не имеют параметров, то их можно вызвать с помощью операторов UC или CC. Обработка блока прекращается с помощью оператора конца блока. Оператор BEC завершает обработку программы в блоке в зависимости от состояния RLO, а операторы BEU и BE заканчивают блок независимо от условий.

Функции для кодовых блоков приведены в таблице 2.12.

Программа блока обрабатывается, пока не встретится оператор окончания блока. По окончании вызванного блока CPU возвращается к выполнению программы в блоке, который сделал вызов. Выполнение этой программы продолжается от оператора, который следует за оператором вызова блока. Если выполнение программы организационного блока завершается, CPU передает управление операционной системе.

Таблица 2.12

Вызов функционального блока
С блоком данных и параметрами Как локальный экземпляр с параметрами Вызов безусловный и по условию
CALL FB1, DB1 ( In1: =Num1; In2: =Num2; In3: =Num3); CALL name ( In1: =Num1; In2: =Num2; In3: =Num3); UC FB 5 CC FB 5
Вызов функции
Со значением функции и с параметрами блока Без значения функции, с параметрами блока Вызов безусловный и по условию
CALL FB1 ( In1: =Num1; In2: =Num2; Ret_Val: = Num3); CALL FB1 ( In1: =Num1; In2: =Num2; Out: = Num3); UC FB 5 CC FB 5
Операторы завершения блока
Условное завершение блока Безусловное завершение блока Конец блока
BEC BEU BE

Информация о том, что нужно CPU для возвращения в вызывающий блок, хранится в B-стеке блоков. При каждом вызове блока в B-стеке генерируется новый элемент, который содержит адрес возвращения, содержимое регистра данных и адреса локальных данных блока, который сделал вызов.

В инструкции вызова может быть список параметров блока. При введении исходного текста программы список параметров блока находится между круглыми скобками. Параметры блока, приведенные в списке, должны быть разделены запятыми. При вызове функционального блока нет необходимости инициализировать все параметры вызываемого блока.

Функции FC вызываются путем задания идентификатора функции абсолютным или символьным образом после оператора CALL. При вызове функции нужно инициализировать все параметры. Вызываемые функции с функциональным значением имеют точно такую же форму, как и функции без функционального значения. Единый исходный параметр, который отвечает функциональному значению, имеет имя RET_VAL.

Системные функциональные блоки можно вызвать таким же образом, как и блоки, созданные пользователем. Системные блоки доступны только в операционной системе CPU. При вызове системных блоков во время программирования в автономном (offline) режиме, редактору нужно описание интерфейса вызова для того, чтобы инициализировать параметры.

Описание интерфейса расположено в стандартной библиотеке Standard library в системных функциональных блоках System Function Blocks. Отсюда редактор копирует описание интерфейса в папку (раздел) автономного режима "Blocks", когда вызывается системный блок. После этого скопированное описание интерфейса вызова появляется как "нормальный" объект блока.