ГОСТ Р МЭК 61131-3—2016
VARJEXTERNAL
Actual_TOD: TOD; //Глобальное определение времени
END_VAR
IF (RM =NULL)И ВАЖНО: проверить законность ссылки!
THENRETURN;
ENDJF;
IF Actual_TOD >= TODU20:15ORActual_TOD <= TODM.OO
THENRM.NIGHTTIMEQ;И вызов метода из RM
ELSERM.DAYTIMEO;
ENDJF;
END_FUNCTION_BLOCK
//Применяет ключевое слово THIS для назначения собственного экземпляра
CLASS DARKROOMIMPLEMENTSROOM// См. объявление ROOM ebtiueVAR_EXTERNAL
Ext_Room_Ctrl: ROOM_CTRL;
H
См. объявление ROOM_CTRL выше END VAR
METHOD PUBLICDAYTIME;END_METHODMETHODPUBLIC NIGHTTIME;END_METHOD
METHOD PUBLICEXTJ
Ext_Room_Ctrl(RM:= THIS);//Вызвать Ext_Room_Ctrl с собственным экземпляром
END_METHOD
END_CLASS
6.6.5.7.3 Ключевое слово SUPER
Ключевое слово SUPER обеспечивает доступ к методам реализации базового класса.
С ключевым словом SUPER можно вызвать метод, который действителен в экземпляре базового
(родительского) класса. Таким образом, имеет место статическое связывание.
Ключевое слово SUPER не может использоваться с экземплярами других программных элемен
тов. например, выражение my- Room.SUPER.DAYTIMEQ не разрешено.
Ключевое слово SUPER не может использоваться для доступа к старшим предкам порожденных
методов, например, выражение SUPER.SUPER.aMethod не разрешено.
Пример — Использование ключевого слова SUPERи полиморфизм
LIGHT2ROOM с использованием SUPER как альтернативная реализация приведенного выше при
мера.Для удобства сюда скопированы некоторые предыдущие примеры.
INTERFACEROOM
METHOD DAYTIMEEND_METHOD ИВызывается в дневное время
METHODNIGHTTIME END_METHOD И Вызывается в ночное время
ENDJNTERFACE
CLASS LIGHTROOMIMPLEMENTSROOM
VARLIGHT: BOOL; ENDJ/AR
METHOD PUBLIC DAYTIME
LIGHT- FALSE;
END_METHOD
METHOD PUBLICNIGHTTIME
123