Datentypen
Die IEC 61131-3-Datentypen werden nach Spezifikation des PLCopen-Mappings auf OPC UA-Datentypen gemappt. Die folgende Tabelle zeigt das spezifizierte Mapping.
SPS | OPC UA |
---|---|
BOOL | Boolean |
SINT | SByte |
INT | Int16 |
DINT | Int32 |
LINT | Int64 |
USINT | Byte |
UINT | UInt16 |
UDINT | UInt32 |
ULINT | UInt64 |
REAL | Float |
LREAL | Double |
TIME | Int64 |
LTIME | Int64 |
TIME/LTIME Bei den Datentypen TIME und LTIME gibt es bezüglich des Mappings zwischen SPS- und OPC UA-Datentyp Besonderheiten zu beachten, siehe nachfolgenden Abschnitt. |
TIME und LTIME
Im PLCopen-Mapping der IEC 61131-3 sind sowohl TIME als auch LTIME auf den Datentyp Int64 gemappt. Die Datenbereiche der IEC61131-3-Datentypen UDINT und ULINT entsprechen dagegen UInt32 und UInt64.
Datentyp | Untergrenze | Obergrenze | Abbildung in Zeit |
---|---|---|---|
TIME (UDINT) | 0 | 4294967295 | 49d17h2m47s295ms |
LTIME (ULINT) | 0 | 18446744073709551615 | 213503d23h34m33s709ms551us615ns |
Int64 | -9223372036854775808 | 9223372036854775807 | - |
Das Verhalten des Servers im Umgang mit diesen beiden Datentypen ist in der folgenden Auflistung erläutert:
TIME
- Der mögliche Wertebereich ist in der Tabelle abzulesen.
- Für alle anderen Werte (<0 und >4294967295) gibt der Server beim Schreiben durch einen OPC UA Client den Statuscode BadOutOfRange zurück.
LTIME
- Der mögliche Wertebereich ist ebenfalls in der Tabelle abzulesen.
- Für alle Werte <0 gibt der Server beim Schreiben durch einen OPC UA Client den Statuscode BadOutOfRange zurück.
- Werte >9223372036854775807 können mit dem Wertebereich von Int64 nicht abgebildet und damit auch nicht über OPC UA geschrieben werden. Sie können aber in der SPS geschrieben werden. In diesem Fall wird der Wert der betroffenen OPC UA Variablen im Server Null. Zusätzlich wird der StatusCode der Variablen auf BadOutOfRange gesetzt.