ГОСТ Р МЭК 61131-3—2016
6.5.2.2 Область действия объявлений
Область действия (диапазон применимости) деклараций, содержащихся в разделе деклараций,
является локальной для программных компонент, в которых данный раздел деклараций содержится. То
есть объявленные переменные не будут доступны для других программных компонентов, за исклю
чением явных параметров, передаваемых через переменные, которые объявлены как входы и выходы
этих компонент.
Исключением из данного правила являются переменные, объявленные как глобальные. Такие
переменные доступны для программных компонент только через объявление VAR_EXTERNAL. Тип
переменных, объявленных в блоке VAR_EXTERNAL. должен быть согласован с типом, объявленным в
блоке VAR_GLOBAL. связанных программ, конфигурации и ресурсе.
Ошибка возникает, если:
- какая-либо программная компонента пытается изменить значение поременной. которая была
объявлена с квалификатором CONSTANT или в секции VARJNPUT;
- переменная, объявленная как VAR_GLOBAL CONSTANT, в элементе конфигурации или про
граммном компоненте («содержащем элементе») используется в объявлении VAR_EXTERNAL (без ква
лификатора CONSTANT) любого элемента, содержащегося в пределах охватывающего элемента, как
показано ниже.
Максимальное число переменных, допустимых в блоке объявления переменных, определяется
разработчиком.
6.5.3 Переменные типа ARRAY переменной длины
Массивы переменной длины могут использоваться только как:
- входные, выходные или входные-выходные переменные функций и методов;
- входные-выходные переменные функциональных блоков.
Число размерностей массива и фактических и формальных параметров должны быть одинако
выми. Они определяются, используя символ звездочки как спецификацию неопределенного диапазона
для границ индекса.
Массивы переменной длины предоставляют программам, функциям, функциональным блокам и
методам средства использовать массивы с различными диапазонами индекса.
Для работы с массивами переменной длины предоставляются следующие стандартные функции
(см. таблицу 15).
Таблица 15— Переменные типаARRAYпеременнойдлины
Номер
Описание
Примеры
1Декларация с использованием *
VAR_IN_OUT
ARRAY[*. *___] OF тип данных A:ARRAY [’. *] OF INT:
END_VAR;
Стандартные функции LOWER_BOUND и UPPER_BOUND
2аГрафическое представлениеПолучитьнижнюю границумассива:
+-----------------------+
!
LOWER BOUND
!
A R R A Y --------! ARR!
-----
ANY INT
ANY_INT —
!
DIM 1
---------------4
Получитьверхнююграницу массива:
♦-----------------------+
!
UPPER_BOUND
!
A R R A Y
------
!
ARR
!
-----
ANY INT
ANY_INT
-----!
DIM
!
+-----------------------+
2ЬТекстовое представлениеПолучить нижнюю границу2-го измерения массиваА:
low2:= LOWER_BOUND (А. 2);
Получить верхнююграницу 2-го измерения массиваА
ир2:= UPPER_BOUND (А 2);
39