Enums

Aufzählungen in OPC UA haben immer den Datentyp Int32. Die Norm IEC 61131-3 ermöglicht jedoch die Definition größerer Datentypen als Int32. Damit diese Aufzählungen ordnungsgemäß behandelt werden, bietet der TwinCAT OPC UA Server die Konfigurationsoption <ImportBigEnumsNumeric>, die in seiner Konfigurationsdatei Data Access aktiviert werden kann.

Diese Option ist standardmäßig auf FALSE gesetzt. Das bedeutet, dass eine Statuscode-Ausnahme BadOutOfRange ausgelöst wird, wenn der Aufzählungswert außerhalb des Int32-Bereichs liegt.

Wenn die Option auf TRUE gesetzt wird, werden Aufzählungen mit größeren Datentypen als Int32 als reguläre Variablen mit diesem bestimmten Datentyp behandelt.

Angenommen, wir haben die folgenden Aufzählungsdefinitionen in unserem SPS-Code:

TYPE E_Enum_Normal :
(
  enum_member_0 := 0,
  enum_member_1 := 1,
  enum_member_2 := 2
);
END_TYPE

TYPE E_Enum_NotSoBig :
(
  enum_member_0 := 0,
  enum_member_1 := 1,
  enum_member_2 := 2
) UINT;
END_TYPE

TYPE E_Enum_VeryBig :
(
  enum_member_0 := 0,
  enum_member_1 := 1,
  enum_member_2 := 2
) LINT;
END_TYPE

Bei Aktivierung der vorstehenden Konfigurationsoption werden Instanzen von E_Enum_VeryBig als reguläre Variable vom Datentyp Int64 im Namensraum des Servers behandelt, während Instanzen von E_Enum_Normal und E_Enum_NotSoBig als OPC-UA-Aufzählung (mit dem Datentyp Int32) behandelt werden:

Enums 1: