Odvozené (uživatelské) datové typy

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;
  • © Energocentrum Plus, s.r.o. 2017 - 2024