Datatyper

Hver variabel i PLC'en får automatisk den korrekte datatype. Omgivningen skal kun indstilles til konvertering. I dette kapitel forklares de enkelte typer fra Antcas Control.

Boolsk Værdi BOOL

Denne type kan kun have to tilstande. Sand eller falsk. I anvendelsen kan der i stedet for en variabel defineres værdien med TRUE (sand) eller FALSE (falsk).

Derudover anvendes den særlige type NULL. Denne tilstand indstilles ved initialisering af en variabel, altså en ubeskrevet. Derudover er der med NULL særlige funktioner mulige. Fx hvis ingen værdi må kommunikeres på grænsefladen.

Heltal INT (Integer)

Et integer er et heltal, fx 0 eller 26. Derudover kan værdien også være negativ. Antcas Control arbejder med en 64-bit PLC, hvilket gør beregningen af meget store tal mulig. Den største værdi er defineret med konstanten INT_MAX (9223372036854775807). Den mindste værdi er i INT_MIN eller INT_MAX+1, da tegnet bruger et bit. Alle tal uden for området anvendes som en float med en eksponent. Beregningen er således unøjagtig.

Et integer kan få værdien -0, hvilket ikke er lig med FALSE. Dog giver testen med funktionen EQ(-0,0) TRUE. -0 kan kun defineres som en streng '-0'.

Der kan også defineres et hex-værdi direkte. Denne starter med 0x eller 0X. Så bliver fx 0xFF til 255.

Flydende Tal REAL (Float)

Et float eller også et real-værdi er et flydende tal, fx 0.1 eller 22.005 (med punktum). Der understøttes også eksponenter. Fx 10E2 for 1'000 eller 10e-2 for 0.1. Stor og lille bogstavsindstilling er ligegyldig. Der forsøges at omdanne tallet til et integer, da beregningen er nemmere for PLC'en. Det kan ske, at beregningerne bliver unøjagtige ved store tal. Antallet af decimaler er fast begrænset til 14 for at øge PLC'ens ydeevne.

Flydende tal har en begrænset præcision. Selvom dette afhænger af systemet, bruger Antcas Control normalt IEEE 754 Double Precision Format, hvilket giver en maksimal relativ afrundingsfejl på størrelsesordenen 1.11e-16. Ikke-elementære aritmetiske operationer kan dog give større fejl, og naturligvis skal der tages højde for en fejlpropagering, hvis flere operationer kombineres.

Derudover findes rationelle tal, som til basis 10 kan præsenteres nøjagtigt som flydende tal, fx 0.1 eller 0.7, men der findes ingen nøjagtig repræsentation som flydende tal til basis 2, hvilket intern anvendes uafhængigt af størrelsen på mantissen. Derfor kan de ikke omdannes til deres interne binære repræsentation uden en lille præcisionstab. Dette kan føre til forvirrende resultater: FLOOR((0.1+0.7)*10) vil normalt give 7 i stedet for det forventede resultat af 8, da den interne repræsentation er noget som 7.9999999999999991118.

Man bør aldrig stole på flydende tal til den sidste decimal, og man bør aldrig teste flydende tal direkte for lighed.

Tekststreng STRING

En tekststreng eller også kaldet en streng defineres med et anførselstegn ' ' eller dobbeltanførselstegn " ". Fx 'Tekst 1' eller "Test!". Med funktionsblokken CONCAT kan flere tekststrenge kombineres.

Et linjeskift eller ny linje kan oprettes med CTRL+Enter. Dette vises så som en pil ↵.

Der kræves ikke et escape-tegn til angivelse af ' eller " i tekststrengen selv. Tekststrengen kan direkte angives med "Der er et " tegn".

Det er muligt at deklarere specielle tegn direkte. Dette gøres ved at angive følgende sekvens inden for tekststrengen med dobbeltanførselstegn:

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

For at fx deklarere et vilkårligt byte 126 eller 7E som en hex-værdi, anvendes følgende udtryk: "\x7E". Denne tekststreng svarer så til "~".

Her står 7E som en pladsholderværdi. Der kan angives alle værdier inden for hex-værdierne 00 til FF. Bemærk, at UTF-8 BOM "\xEF\xBB\xBF" normalt fjernes automatisk af de fleste browsere. Det er muligt at maskere tekststrengen. Dette gøres ved at anvende et førende backslash: "\\x7E", hvilket så svarer til '\x7E'.

Advarsel: Alle tekststrenge uden for UTF-8-området kan ikke gemmes permanent. I live-visningen vises disse i mørk lilla.

Se også artiklen Konvertering af Tekststreng til Tal.

Dato og Tid DT (Date and Time)

Definerer en dato og tid med DT#, fx DT#2016-03-25-22:12:00. Tiderne omregnes til et integer i ms fra datoen 01.01.1970 (denne værdi er i tidszonen UTC/GMT).

Dato D (Date)

Definerer en dato fra midnat med D#, fx D#2016-03-25. Tiderne omregnes til et integer i ms fra datoen 01.01.1970 (denne værdi er i tidszonen UTC/GMT).

Tid T (Time)

Definerer en tid i millisekunder med T#, fx T#5d3h5m11s500ms. Tiderne omregnes til et integer i ms.

Array

Et array kan ikke defineres direkte. Derimod kan der laves tilordninger af en variabel med et punktum. Se Variable.

MEGET VIGTIGT: Definér aldrig en værdi under i et array. Fx set og set.p - PLC'en vil så afbryde. Og derfor ikke køre. Derudover kan dette føre til uventede fejl.