18. Функции блоков
Automating with STEP 7 in STL and SCL 18 - 13
Автоматизация посредством STEP 7
с использованием STL и SCL
Локальные экземпляры
При вызове функционального блока обычно для вызова назначается
также экземплярный блок. Функциональный блок со храняет свои
параметры и свои статические локальные данные в этом экземплярном
блоке.
Начиная с STEP 7 V2, Вы можете создавать "мультиэкземпляры", что
означает, что Вы можете вызывать одни функциональные блоки в других
функциональных блоках. Статические локальные данные (и параметры
блока) вызванного функционального блока являются подмножеством
статических локальных данны х вызывающего блока. Для этого требуется,
чтобы вызываемый и вызывающий функциональные блоки имели версию
2, чтобы они могли быть обработаны в режиме "мультиэкземпляра".
Таким путем можно организовывать вложение вызовов функциональных
блоков с глубиной вложения до 8 вызовов.
Пример (рис. 18.4 (внизу)): В статических локальных данны х
функционального блока "Evaluation" объявлена переменная Memory,
которая соответствует функциональному блоку "Totalizer" и имеет такую
же структуру. Теперь Вы можете вызывать функциональный блок
"Totalizer" посредством переменной Memory, без определения блока
данных, так как данные для Memory размещены внутриблочно ("block-
local") в статических локальных данных (Memory является "локальным
экземпляром" блока "Totalizer").
Доступ к статическим локальным данным Memory в программе
функционального блока "Evaluation" выполняется таким же способом, как
и к компонентам структуры с определением имени структуры (Memory) и
имени компонента (Total).
Экземплярный блок данных "EvaluationData", следовательно, содержит
переменные Memory.In и Memory.Total, к которым Вы можете также
обращаться как к глобальным переменным, например, следующим
образом: "EvaluationData".Memory.Total.
Вы можете найти пример использования локального экземпляра в
функциональных блоках FB 6, 7 и 8 в программе "Program Flow Control" на
прилагаемой дискете. Пример в разделе 19.5.3 "Пример установки"
содержит дополнительные варианты применения локальных экземпляров.
Абсолютная адресация статических локальных данных
Обычно адресация статических локальных данных производится с
использованием символьных имен, а абсолютная адресация используется
в исключительных случаях. Внутри функционального блока экземплярный
блок данных открывается посредством регистра DI. Идентификатором для
адресов в блоке данны х, для статических локальных данных также как
параметров блока является иденти фикатор DI. Биты адресуются
идентификатором DIX, байты - с помощью идентификатора DIB, слова - с
помощью идентификатора DIW, а двойные слова - с помощью
идентификатора DID.
Если Вы знакомы с тем, как хранятся данные блоке данных, Вы можете
выработать для себя способ адресации статических локальных данных.
Вы также можете посмотреть адреса в таблице объявления переменных в
скомпилированном блоке. Но будьте внимательны! Эти адреса связаны с
запуском экземпляра. Они действительны только в сл учае, если Вы
вызываете функциональный блок с блоком данных. Если Вы вызываете