Al igual que los bloques de funciones, las estructuras se pueden ampliar. La estructura obtiene entonces las variables de la estructura básica además de sus propias variables.
Crear una estructura que extienda a otra Estructura:
TYPEST_Sub2EXTENDSST_Sub1:STRUCTbBool2:BOOL;// No se podria llamar la variable bBool1 porque la tenemos declarada en la estructura ST_Base1END_STRUCTEND_TYPE
1 2 3 4 5 6 7 8 910111213141516171819
PROGRAMMAINVARstestructura1:ST_Sub1;stestructura2:ST_Sub2;END_VAR//Extensión de Estructura:stestructura1.bBool1;stestructura1.iINT;stestructura1.rReal;stestructura1.ttime;stestructura1.tton(in:=TRUE,pt:=T#1S);stestructura2.bBool1;stestructura2.iINT;stestructura2.rReal;stestructura2.ttime;stestructura2.tton(in:=TRUE,pt:=T#1S);stestructura2.bBool2;
De esta forma de extender una Estructura por Herencia no se pueden repetir el mismo nombre de variable declarada con las estructuras extendidas.
Tambien sin usar EXTENDS para la Estructura podriamos realizarlo de la siguiente forma:
PROGRAMMAINVARstestructura11:ST_1;END_VARstestructura11.sstring;stestructura11.sStruct.bBool;//el resultado es que queda mas anidado
De esta forma si que se pueden declarar el mismo nombre de la variable en diferentes Estructuras, ya que al estar anidadas no existe el problema anterior.
No se permite la herencia múltiple de la siguiente forma: