18. Функции блоков
Automating with STEP 7 in STL and SCL 18 - 3
Автоматизация посредством STEP 7
с использованием STL и SCL
управление операционной системе.
Информация, которая требуется CPU для возврата в вызывающий блок,
сохраняется в стеке блоков (B-стек [B stack]). При каждом вызове блока в
B-стеке генерируется новый элемент стека, который содержит адрес
возврата, содержимое регистра данных и адрес стека локальных данных
вызывающего блока. Если CPU переходить в состояние STOP в
результате ошибки, Вы можете использовать программатор для того,
чтобы увидеть в B-стеке информацию о том, какие блоки обрабатывались
до момента возникновения ошибки.
Параметры блока являются интерфейсом данных для вызываемого
блока. Рекомендуется избегать передачи данных посредством внутренних
регистров (например, посредством аккумуляторов , адресных регистров,
RLO), так как содержимое этих регистров может быть изменено при смене
текущего блока (в результате "скрытых" операторов, инициированных
редактором).
18.1.2 Оператор вызова блока CALL
С помощью оператора вызова блока CALL Вы можете вызывать
функциональные блоки FB, функции FC, системные функциональные
блоки SFB, системные функции SFC. Оператор вызова блока CALL
является безусловным вызовом, что означает, что заданный блок всегда
вызывается и обрабатывается, несмотря ни на какие условия. (Вы не
можете вызывать организационные блоки; организационные блоки
вызываются операционной системой, в зависимости от события).
Вызов функциональных блоков
Вы можете вызывать функциональные блоки FB, задав идентификатор
блока после оператора CALL, и отделенный запятой идентификатор
экземплярного блока данных, связанного с этим вызовом. Вы можете
адресовать оба блока или абсолютным способом, или символьным.
Назначение абсолютного адреса символьному адресу выполняется в
таблице символов (Symbol Table) для экземплярного блока данных,
имеющего связанный функциональный блок как тип данных.
В инструкции вызова может быть список параметров блока. При вводе
исходного текста программы список параметров блока помещается
между круг лыми скобками; в списке параметры блока должны быть
разделены запятыми.
При вызове функционального блока нет необходимости
инициализировать все параметры вызываемого блока.
Неинициализированные параметры блока сохраняют свои текущие
значения. Если Вы не задаете никаких параметров, то скобки также не
вводятся при вводе ис ходного текста программы.
Если Вы создаете функциональные блоки с атрибутом
"мультиэкземплярные" ("multi-instance-capable"), Вы можете также
вызывать эти блоки, как локальные экземпляры внутри других
"мультиэкземплярных" функциональных блоков. Имеется в виду, что
вызванный функциональный блок использует экземплярный блок данных
вызывающего функционального блока для со хранения своих собственных
локальных данных.