Создание логических блоков
Программирование с помощью STEP 7 версии 5.0
C79000-G7076-C562-02
9-27
Сохранение правильных данных
Содержимое регистра DB может вызвать критические ситуации, если вы
обращаетесь к абсолютным адресам данных, используя сокращенный
формат. Например, если вы подразумеваете, что открыт DB20 (и что его
номер сохранен в регистре DB), то вы можете указать DBX0.2 для обращения
к данным в бите 2 байта 0 блока данных, адрес которого введен в регистр DB
(иными словами, DB20). Если, однако, регистр DB содержит номер другого
блока данных, то вы обратитесь к неверным данным.
Вы можете избежать ошибок при обращении к данным регистра DB,
используя следующие методы адресации данных:
• Используйте символический адрес
• Используйте полный абсолютный адрес (например, DB20.DBX0.2)
Если вы используете эти методы адресации, то STEP 7 автоматически
открывает правильный DB. Если вы используете регистр AR1 для косвенной
адресации, то вы всегда должны загружать в AR1 правильный адрес.
Ситуации, в которых регистры изменяются
Манипулирование адресными регистрами для косвенной адресации имеет
смысл только в AWL. Другие языки не поддерживают косвенный доступ к
адресным регистрам.
Адаптация регистра DB компилятором должна приниматься в расчет во всех
языках программирования, чтобы обеспечить корректную передачу
параметров при вызове блоков.
Содержимое адресного регистра AR1 и регистра DB вызывающего блока
переписывается в следующих ситуациях:
Ситуация Описание
С фактическими
параметрами из DB
Как только вы назначили фактический параметр блоку из DB
(например, DB20.DBX0.2) STEP 7 открывает этот DB (DB20) и
адаптирует содержимое регистра DB. Затем программа после
вызова блока работает с адаптированным DB.
При вызове блоков вместе
с данными сложных типов
После того как блок был вызван из FC, передающей вызываемому
блоку компоненты формального параметра, относящегося к
сложному типу данных (строка, массив, структура или UDT),
содержимое регистров AR1 и DB вызывающего блока изменяется.
То же относится и к вызову из FB, если параметр находится в области
VAR_IN_OUT вызывающего блока.
При обращении к
компонентам сложных
типов данных
Когда FB обращается к компоненте формального параметра,
относящегося к сложному типу данных, в области VAR_IN_OUT
(строка, массив, структура или UDT), STEP 7 использует адресный
регистр AR1 и регистр DB. Это значит, что содержимое обоих
регистров изменяется.
Когда FC обращается к компоненте формального параметра,
относящегося к сложному типу данных, в области VAR_IN_OUT
(строка, массив, структура или UDT), STEP 7 использует адресный
регистр AR1 и регистр DB. Это значит, что содержимое обоих
регистров изменяется.