ГОСТ Р МЭК 61131-3—2016
LIGHT- TRUE;
END_METHOD
END_CLASS
FUNCTION_BLOCKROOM_CTRL
// Интерфейс ROOMкактип переменной
VARJNPUT
RM: ROOM;
END_VAR
// Гповальное определение времени
VAR_EXTERNAL
Actual_TOD: TOD;
END_VAR
// ВАЖНО: проверить действительность ссылки!
IF (RM =NULL)
THENRETURN:
ENDJF;
IF Actual_TOD >= TOD*20:15 OR
Actual_TOD <= TOD«06:00
THENRM.NIGHTTIMEO;
// Вызвать метод RM(динамическое связывание с
//либо LIGHTROOM.NIGHTTIME
И либо LIGHT2ROOM.NIGHTTIME)
ELSERM.DAYTIMEO;
ENDJF;
END_FUNCTION_BLOCK
//Применяет ключевое слово SUPERдля вызова метода базового класса
// си. выше
CLASS LIGHT2ROOMEXTENDS UGHTROOM
VARLIGHT2: BOOL: END_VAR
//логическая переменная light
//Вызов метода в LIGHTROOM
METHODPUBLIC OVERRIDEDAYTIME
SUPER.DAYTIMEO;
LIGHT2 = TRUE;
END_METHOD
И Вызов метода в LIGHTROOM
METHOD PUBLIC OVERRIDENIGHTTIME
SUPER.NIGHTTIMEf)
UGHT2:= FALSE;
END_METHOD
END_CLASS
// Использование полиморфизма и динамическое связывание
PROGRAMС VAR
ИСм. выше
// См. выше
// См. выше
Му Room1: LIGHTROOM;
MyRoom2: LIGHT2ROOM;
My_Room_Ctrl: ROOM_CTRL;
END_VAR
// Вызовы в My_Room_Ctrl вызывают методы LIGHTROOM
// Вызовы в My_Room_Ctrl вызывают методы LIGHT2ROOM
My_Room_Ctrl(RM:=MyRooml);
My_Room_Ctrl(RM:=MyRoom2);
END_PROGRAM
124