ГОСТ Р МЭК 61131-3—2016
Пример 1
TYPE
туАггауТуре:
myRefArrType:
myA rrOfRefType:
ENDJTYPE
VAR
myArrayl:
myRefArrl:
myArrOfRef:
END_VAR
ARRAY[0..999] OFINT;
REFJTO туАггауТуре;// определение указателя
ARRAY[0..12] OFmyRefArrType; // определение массива ссылок
туАггауТуре:
myRefArrType;
// определение указателя
myArrOfRefType:
// определение массива указателей
Ссылка должна ссылаться только на переменные указанного ссылочного типа данных. Указатели
на прямо порождаемые типы данных обрабатываются как псевдонимы указателей на базовый тип дан
ных. Прямое порождение может применяться несколько раз.
Пример 2
TYPE
myArrTypel:ARRAY[0..999] OFINT;
myArrType2: myArrTypel;
myRefTypel: REFJTOmyArrTypel;
myRefType2: REFJTOmyArrType2;
ENDJTYPE
myRefTypel и myRefType2 могут ссылаться на переменные типа ARRAY[0..999] OF INT и производных
типов данных.
Ссылочный тил данных указателя может также являться типом функционального блока или клас
сом. Указатель базового типа может также ссылаться на экземпляры, порожденные из этого типа дан
ных.
Пример 3
CLASS F1...END_CLASS;
CLASS F2EXTENDS F I...END_CLASS;
TYPE
REF_TO FI;
REF_TO F2;
myRefFI:
myRefF2:
ENDJTYPE
Указатели типа myRefFI могут ссылаться на экземпляры классов F1. F2 и на производные от них
классы. Однако указатели типа myRefF2 не могут ссылаться на экземпляры класса F1, а могут ссылать ся
только на экземпляры класса F2 и производные от него, так как класс F1 может не поддерживать
методы и переменные расширенного класса F2.
6.4.4.10.2 Инициализация указателей
Указатели могут инициализироваться значением NULL (неявно) или адресом уже объявленных
переменных, экземпляров функционального блока или класса.
Пример —
FUNCTION_BLOCKF1... END_FUNCTION_BLOCK:
INT;
VAR
mylnt:
myRefint:
REF_TO INT:= REF(mylnt);
myFI: FI;
myRefFI;REF_TO F1:=REF(myF1);
ENDJ/AR
32