Odvozené typy jsou deklarovány pomocí textové konstrukce TYPE ... END_TYPE. Jména odvozených datových typů, jejich datové typy a jejich inicializační hodnoty jsou uvedeny v rámci této konstrukce. Odvozené datové typy se mohou používat spolu s elementárními datovými typy v deklaracích proměnných. Definice odvozeného datového typu je globální, tj. může být použita v kterékoliv části programu. Odvozený datový typ dědí vlastnosti typu, ze kterého byl odvozen.
Deklarace výčtového typu dat určuje, že hodnota každého datového prvku tohoto typu použije pouze jednu z hodnot uvedených v příslušném seznamu identifikátorů. Výčtový seznam definuje tříděnou sadu vyjmenovaných hodnot, počínaje prvním identifikátorem v seznamu a konče posledním.
Příklad:
TYPE
Traffic_light: (Red, Yellow, Green);
Painting_color: (Red, Yellow, Green, Blue) := Blue;
END_TYPE
Souvisí s jednoduchým výčtovým datovým typem, kde hodnoty výčtu identifikátorů nejsou známy uživatelem; tento typ má určené hodnoty prvků výčtu.
Chcete-li povolit jedinečnou identifikaci při použití v určitém kontextu, mohou být pojmenované hodnoty kvalifikovány předponou skládající se z jejich přidruženého jména dat a hash znaku "#", podobně jako zadané literály.
Příklad:
TYPE
Traffic_light: (Red, Yellow, Green);
Painting_color: (Red, Yellow, Green, Blue) := Blue;
END_TYPE
VAR
My_Traffic_light: Traffic_light;
END_VAR
IF My_Traffic_light = Traffic_light#Red THEN ...
Deklarace podintervalu určuje, že hodnota každého datového prvku tohoto typu může nabývat pouze hodnoty mezi a včetně specifikované horní a dolní mezí.
Příklad:
TYPE
ANALOG_DATA: INT(-4095 .. 4095):= 0;
END_TYPE
Pole je soubor datových prvků stejného datového typu. Základní a uživatelem definované datové typy, typy funkčních bloků a třídy mohou být použity jako typ prvku pole.
Příklad:
TYPE
TArray1: ARRAY[0..9] OF INT := [1,2,3,4,5,6,7,8,9,10];
TArray2: ARRAY[1..2, 1..2] OF USINT := [11,12,21,22];
END_TYPE
Deklarace typu struktura (STRUCT) uvádí, že tento typ dat bude obsahovat kolekci dílčích prvků uvedených typů, které mohou být přístupné pomocí uvedených jmen. Prvek strukturovaného datového typu musí být zastoupen dvěma nebo více identifikátory nebo polem odděleným '.'. První identifikátor představuje název strukturovaného prvku, následné identifikátory představují sekvence názvů prvků pro přístup k určitému datovému prvku ve struktuře dat. Základní a uživatelem definované datové typy, typy funkčních bloků a třídy mohou být použity jako typ prvku struktury.
Struktury a pole lze libovolně kombinovat.
Příklad:
TYPE
ANALOG_SIGNAL_RANGE: (BIPOLAR_10V, UNIPOLAR_10V);
ANALOG_DATA: INT (-4095 .. 4095);
ANALOG_CHANNEL_CONFIGURATION:
STRUCT
RANGE: ANALOG_SIGNAL_RANGE;
MIN_SCALE: ANALOG_DATA;
MAX_SCALE: ANALOG_DATA;
END_STRUCT
END_TYPE
VAR
MODULE_CONFIG: ANALOG_CHANNEL_CONFIGURATION;
MODULE_8_CONF: ARRAY [1..8] OF ANALOG_CHANNEL_CONFIGURATION;
END_VAR
MODULE_CONFIG.MIN_SCALE:= -2047;
MODULE_8_CONF[5].RANGE:= BIPOLAR_10V;