Jede Variable in der SPS bekommt automatisch den korrekten Datentyp. Die Umwandlung muss nur in der Schnittstelle eingestellt werden. In diesem Kapitel werden die einzelnen Typen von Antcas Control erklärt.
Dieser Typ kann nur zwei Zustände haben. Wahr oder falsch. In der Applikation kann anstelle einer Variable der Wert mit TRUE (wahr) oder FALSE (falsch) definiert werden.
Ausserdem wird der Sondertyp NULL verwendet. Dieser Zustand wird bei der Initialisierung einer Variable, also einer unbeschriebenen, gesetzt. Ausserdem sind mit NULL Sonderfunktionen möglich. Z.B. wenn kein Wert auf die Schnittstelle kommuniziert werden darf.
Ein Integer ist eine Ganzzahl, wie z.B. 0 oder 26. Zudem kann der Wert auch negativ sein. Antcas Control arbeitet mit einer 64-Bit SPS, welche die Berechnung sehr grosser Zahlen ermöglicht. Die grösste Zahl ist mit der Konstante INT_MAX (9223372036854775807) definiert. Die kleinste Zahl ist in INT_MIN oder INT_MAX+1, da das Vorzeichen ein Bit verwendet. Alle Zahlen ausserhalb des Bereichs, werden in einem Float mit einem Exponenten angewendet. Die Berechnung ist dann ungenau.
Ein Integer kann der Wert -0 erhalten, welcher nicht gleich FALSE ist. Jedoch ergibt die Prüfung mit der Funktion EQ(-0,0) TRUE aus. -0 Kann dabei nur als Zeichenkette '-0' definiert werden.
Es kann auch ein Hex-Wert direkt definiert werden. Dieser beginnt mit 0x oder 0X. So wird z.B. aus 0xFF dann 255.
Ein Float oder auch Real Wert ist eine Gleitkommazahl, wie z.B. 0.1 oder 22.005 (mit Punkt). Auch Exponenten werden unterstützt. Wie z.B. 10E2 für 1'000 oder 10e-2 für 0.1. Die Gross- und Kleinschreibung ist dabei egal. Es wird versucht die Zahl in einen Integer zu verwandeln, da die Berechnung einfacher für die SPS ist. Es kann vorkommen, dass die Berechnungen bei grossen Zahlen ungenau werden. Die maximale Anzahl der Nachkommastellen ist fix auf 14 beschränkt, um die Performance der SPS zu steigern.
Gleitkommazahlen haben eine begrenzte Präzision. Obgleich dies vom System abhängig ist, verwendet Antcas Control üblicherweise das IEEE 754 Double Precision Format, welches einen maximalen relativen Rundungsfehler in einer Grössenordnung 1.11e-16 ergibt. Nicht-Elementare arithmetische Operationen können jedoch grössere Fehler hervorgerufen und natürlich muss eine Fortpflanzung des Fehlers berücksichtigt werden, wenn mehrere Operationen zusammengesetzt werden.
Ausserdem gibt es rationale Zahlen die zur Basis 10 als Gleitkommazahlen exakt dargestellt werden können, beispielsweise 0.1 oder 0.7, für die es aber keine exakte Repräsentation als Gleitkommazahlen zur Basis 2 gibt, welche intern aber unabhängig von der Grösse der Mantisse verwendet wird. Daher können Sie nicht ohne einen geringen Präzisionsverlust in ihre intern binäre Darstellung umgewandelt werden. Dies kann zu verwirrenden Ergebnissen führen: FLOOR((0.1+0.7)*10) wird üblicherweise 7 ergeben statt des erwarteten Ergebnisses von 8, da die interne Repräsentation etwas ist wie 7.9999999999999991118.
Man sollte sich daher niemals bis zur letzten Nachkommastelle auf Fliesskommazahlen verlassen und Fliesskommazahlen niemals direkt auf Gleichheit prüfen.
Eine Zeichenkette oder auch String genannt, wird mit einem Hochkomma ' ' oder Doppelhochkomma " " definiert. Wie z.B. 'Text 1' oder "Test!". Mit dem Funktionsblock CONCAT können mehrere Zeichenketten zusammengeführt werden.
Ein Line Feed oder neue Zeile kann mit CTRL+Enter erstellt werden. Dies wird dann durch ein Pfeil ↵ dargestellt.
Ein Escape-Zeichen für die Angabe eines ' oder " in der Zeichenkette selbst ist nicht notwendig. Die Zeichenkette kann direkt mit "Da ist ein " Zeichen" angegeben werden.
Es ist möglich Sonderzeichen direkt zu deklarieren. Dazu wird innerhalb der Zeichenkette mit doppelten Anführungszeichen folgende Zeichenfolge angegeben:
| Escape-Sequenz | ASCII-Abkürzung |
|---|---|
| \\ | Escaped \ |
| \n | LF |
| \r | CR |
| \r\n | CRLF |
| \0 | NUL |
| \t | TAB |
| \e | ESC |
| \f | FORMFEED |
| \x## | Beliebiges Byte |
Um z.B. ein beliebiges Byte 126 bzw. 7E als Hex-Zahl zu deklarieren, wird der folgende Ausdruck verwendet: "\x7E". Diese Zeichenkette entspricht dann "~".
Dabei steht hier 7E als Platzhalterwert. Es können alle Werte innerhalb der Hex-Werte 00 bis FF angegeben werden. Beachten Sie dabei, dass das UTF-8 BOM "\xEF\xBB\xBF" von den meisten Browsern automatisch entfernt wird. Es ist möglich, die Zeichenfolge zu maskieren. Dazu wird ein führender Backslash verwendet: "\\x7E" dies entspricht dann '\x7E'.
Achtung: Alle Zeichenketten ausserhalb des UTF-8-Bereichs können nicht remanent gespeichert werden. In der Live-Ansicht werden diese dunkelviolett dargestellt.
Beachten Sie auch den Artikel Zeichenketten-Konvertierung in Zahlen.
Definiert ein Datum und eine Uhrzeit mit DT# z.B. DT#2016-03-25-22:12:00. Die Zeiten werden umgerechnet in einem Integer in ms ab dem Datum 01.01.1970 (Dieser Wert ist in der Zeitzone UTC/GMT).
Definiert ein Datum ab Mitternacht mit D# z.B. D#2016-03-25. Die Zeiten werden umgerechnet in einem Integer in ms ab dem Datum 01.01.1970 (Dieser Wert ist in der Zeitzone UTC/GMT).
Definiert eine Zeit in Millisekunden mit T# z.B. T#5d3h5m11s500ms. Die Zeiten werden umgerechnet in einem Integer in ms.
Ein Array kann nicht direkt definiert werden. Jedoch können Zuordnungen einer Variable mit einem Punkt gemacht werden. Siehe Variablen.
SEHR WICHTIG: Definieren Sie niemals einen Wert unterhalb in einem Array. Z.B. set und set.p - Die SPS wird hierbei abstürzen. Und daher nicht laufen. Ausserdem kann dies zu unerwarteten Fehlern führen.