Datatyper

Varje variabel i SPS får automatiskt den korrekta datatypen. Omvandlingen måste bara ställas in i gränssnittet. I detta kapitel förklaras de olika typerna av Antcas Control.

Boolsk värde BOOL

Denna typ kan endast ha två tillstånd. Sant eller falskt. I applikationen kan en variabel ersättas med värdet TRUE (sant) eller FALSE (falskt).

Förutom detta används den specialtyp NULL. Detta tillstånd sätts vid initialiseringen av en variabel, det vill säga en obeskriven. Dessutom är det möjligt med NULL specialfunktioner. Till exempel när inget värde får kommuniceras till gränssnittet.

Heltal INT (Integer)

En Integer är ett heltal, som t.ex. 0 eller 26. Dessutom kan värdet också vara negativt. Antcas Control arbetar med en 64-bitars SPS, vilket möjliggör beräkning av mycket stora tal. Det största talet är definierat med konstanten INT_MAX (9223372036854775807). Det minsta talet finns i INT_MIN eller INT_MAX+1, eftersom tecknet använder ett bit. Alla tal utanför intervallet tillämpas i en Float med en exponent. Beräkningen är då oexakt.

En Integer kan få värdet -0, vilket inte är lika med FALSE. Dock resulterar kontrollen med funktionen EQ(-0,0) i TRUE. -0 Kan endast definieras som en sträng '-0'.

Det går också att direkt definiera ett hex-värde. Detta börjar med 0x eller 0X. Till exempel blir det av 0xFF sedan 255.

Flyttal REAL (Float)

Ett Flyttal eller även Real-värde är ett flyttal, som t.ex. 0.1 eller 22.005 (med punkt). Exponenter stöds också. Till exempel 10E2 för 1'000 eller 10e-2 för 0.1. Stor- och små bokstäver är här irrelevant. Det försöker omvandla talet till en Integer, eftersom beräkningen är enklare för SPS:n. Det kan hända att beräkningarna blir oexakta vid stora tal. Antalet decimaler är fast begränsat till 14 för att öka prestandan hos SPS:n.

Flyttal har en begränsad precision. Även om detta beror på systemet, använder Antcas Control vanligtvis IEEE 754 Double Precision Format, vilket ger ett maximalt relativt avrundningsfel i storleksordningen 1.11e-16. Icke-elementära aritmetiska operationer kan dock orsaka större fel och naturligtvis måste en spridning av felet beaktas när flera operationer sammanställs.

Förutom detta finns det rationella tal som kan representeras exakt som flyttal med bas 10, till exempel 0.1 eller 0.7, men det finns ingen exakt representation som flyttal med bas 2, vilket används internt oberoende av storleken på mantissan. Därför kan de inte omvandlas till sin interna binära representation utan en viss förlust av precision. Detta kan leda till förvirrande resultat: FLOOR((0.1+0.7)*10) kommer vanligtvis att resultera i 7 istället för det förväntade resultatet av 8, eftersom den interna representationen är något som 7.9999999999999991118.

Man bör därför aldrig lita på flyttal till den sista decimalen och aldrig kontrollera flyttal direkt för likhet.

Sträng STRING

En sträng eller också kallad String definieras med ett enkelt citattecken ' ' eller dubbelt citattecken " ". Till exempel 'Text 1' eller . Med funktionsblocket CONCAT kan flera strängar förenas.

En radbrytning eller ny rad kan skapas med CTRL+Enter. Detta representeras sedan av en pil ↵.

Ett escape-tecken för att ange ett ' eller " i strängen själv är inte nödvändigt. Strängen kan anges direkt med "Det finns ett " tecken".

Det är möjligt att deklarera specialtecken direkt. För detta anges följande sekvens inom strängen med dubbla citattecken:

Escape-sekvens ASCII-förkortning
\\ Escaped \
\n LF
\r CR
\r\n CRLF
\0 NUL
\t TAB
\e ESC
\f FORMFEED
\x## Godtyckligt byte

För att till exempel deklarera ett godtyckligt byte 126 respektive 7E som hex-tal används följande uttryck: "\x7E". Denna sträng motsvarar sedan "~".

Här står 7E som platshållarvärde. Alla värden inom hex-värdena 00 till FF kan anges. Observera att UTF-8 BOM "\xEF\xBB\xBF" automatiskt tas bort av de flesta webbläsare. Det är möjligt att maskera strängen. För detta används ett ledande backslash: "\\x7E" vilket då motsvarar '\x7E'.

Observera: Alla strängar utanför UTF-8-intervallet kan inte sparas remanent. I live-vyn visas dessa i mörklila.

Se även artikeln Konvertering av strängar till tal.

Datum och tid DT (Date and Time)

Definierar ett datum och en tid med DT# t.ex. DT#2016-03-25-22:12:00. Tiderna omvandlas till ett heltal i ms från datumet 01.01.1970 (detta värde är i tidszonen UTC/GMT).

Datum D (Date)

Definierar ett datum från midnatt med D# t.ex. D#2016-03-25. Tiderna omvandlas till ett heltal i ms från datumet 01.01.1970 (detta värde är i tidszonen UTC/GMT).

Tid T (Time)

Definierar en tid i millisekunder med T# t.ex. T#5d3h5m11s500ms. Tiderna omvandlas till ett heltal i ms.

Array

Ett Array kan inte definieras direkt. Däremot kan tilldelningar av en variabel göras med en punkt. Se Variabler.

MYCKET VIKTIGT: Definiera aldrig ett värde nedanför i ett Array. Till exempel set och set.p - SPS:n kommer då att krascha. Och därmed inte fungera. Dessutom kan detta leda till oväntade fel.