Datové typy

Každá proměnná v PLC automaticky dostane správný datový typ. Převod musí být nastaven pouze ve rozhraní. V tomto kapitole jsou vysvětleny jednotlivé typy Antcas Control.

Booleovská hodnota BOOL

Tento typ může mít pouze dva stavy. Pravda nebo nepravda. V aplikaci lze místo proměnné definovat hodnotu s TRUE (pravda) nebo FALSE (nepravda).

Dále se používá zvláštní typ NULL. Tento stav je při inicializaci proměnné, tedy nepopisované, nastaven. Dále jsou s NULL možné zvláštní funkce. Například pokud nesmí být hodnota komunikována na rozhraní.

Celá čísla INT (Integer)

Integer je celé číslo, jako například 0 nebo 26. Navíc může být hodnota také záporná. Antcas Control pracuje s 64bitovou PLC, která umožňuje výpočet velmi velkých čísel. Největší číslo je definováno konstantou INT_MAX (9223372036854775807). Nejmenší číslo je v INT_MIN nebo INT_MAX+1, protože znaménko používá 1 bit. Všechny čísla mimo rozsah se aplikují v Float s exponentem. Výpočet je pak nepřesný.

Integer může dostat hodnotu -0, která není rovna FALSE. Nicméně funkce EQ(-0,0) vyhodnocuje TRUE. -0 může být definován pouze jako řetězec znaků '-0'.

Může být také definována hexadecimální hodnota přímo. Začíná s 0x nebo 0X. Například z 0xFF se stane 255.

Desetinná čísla REAL (Float)

Float nebo také Real hodnota je desetinné číslo, jako například 0.1 nebo 22.005 (s tečkou). Podporovány jsou také exponenty. Například 10E2 pro 1'000 nebo 10e-2 pro 0.1. Velikost písmen je zde bez významu. Snaží se převést číslo na Integer, protože výpočet je jednodušší pro PLC. Může se stát, že při velkých číslech budou výpočty nepřesné. Maximální počet desetinných míst je pevně omezeno na 14, aby se zvýšila výkonnost PLC.

Desetinná čísla mají omezenou přesnost. I když to závisí na systému, Antcas Control obvykle používá IEEE 754 Double Precision Format, který dává maximální relativní zaokrouhlovací chybu v řádu velikosti 1.11e-16. Neelementární aritmetické operace mohou však způsobit větší chyby a samozřejmě musí být zohledněna propagace chyby, pokud jsou složeny více operací.

Dále existují racionální čísla, která lze na základě 10 přesně zobrazit jako desetinná čísla, například 0.1 nebo 0.7, pro které však neexistuje přesná reprezentace jako desetinná čísla na základě 2, která se používá interně nezávisle na velikosti mantisy. Proto nelze převést do jejich interní binární reprezentace bez malé ztráty přesnosti. To může vést k matoucím výsledkům: FLOOR((0.1+0.7)*10) obvykle vyjde 7 namísto očekávaného výsledku 8, protože interní reprezentace je něco jako 7.9999999999999991118.

Nevěřujte tedy nikdy desetinným číslům až na poslední desetinné místo a nikdy nezkoušejte rovnost desetinných čísel přímo.

Řetězec znaků STRING

Řetězec znaků nebo také String se definuje s jednoduchým uvozovníkem ' ' nebo dvojitým uvozovníkem " ". Například 'Text 1' nebo "Test!". S blokem funkce CONCAT lze spojit několik řetězců znaků.

Nový řádek nebo Line Feed lze vytvořit pomocí CTRL+Enter. Toto se pak zobrazí jako šipka ↵.

Escape znak pro zadání ' nebo " v samotném řetězci není nutný. Řetězec může být přímo uveden s "Zde je znak "" ".

Je možné deklarovat speciální znaky přímo. K tomu se uvnitř řetězce s dvojitými uvozovkami zadá následující posloupnost:

Escape sekvence Zkratka ASCII
\\ Escaped \
\n LF
\r CR
\r\n CRLF
\0 NUL
\t TAB
\e ESC
\f FORMFEED
\x## Libovolný byte

Například pro deklaraci libovolného bytu 126 nebo 7E jako hexadecimální číslo se používá následující výraz: "\x7E". Tento řetězec pak odpovídá "~".

Zde 7E slouží jako zástupná hodnota. Můžou být zadány všechny hodnoty v rozsahu hexadecimálních čísel 00 až FF. Pozor, že UTF-8 BOM "\xEF\xBB\xBF" je většinou prohlížeči automaticky odstraněn. Je možné zakrýt řetězec. K tomu se používá předchozí backslash: "\\x7E", což pak odpovídá '\x7E'.

Pozor: Všechny řetězce mimo rozsah UTF-8 nelze uložit trvale. V živém zobrazení se tyto zobrazují tmavě fialově.

Viz také článek Konverze řetězců na čísla.

Datum a čas DT (Date and Time)

Definuje datum a čas s DT#, například DT#2016-03-25-22:12:00. Časy se převádějí na Integer v milisekundách od data 01.01.1970 (tato hodnota je v časovém pásmu UTC/GMT).

Datum D (Date)

Definuje datum od půlnoci s D#, například D#2016-03-25. Časy se převádějí na Integer v milisekundách od data 01.01.1970 (tato hodnota je v časovém pásmu UTC/GMT).

Čas T (Time)

Definuje čas v milisekundách s T#, například T#5d3h5m11s500ms. Časy se převádějí na Integer v milisekundách.

Pole

Pole nelze definovat přímo. Nicméně lze přiřadit proměnné s tečkou. Viz Proměnné.

VELMI DŮLEŽITÉ: Nikdy nedefinujte hodnotu níže v poli. Například set a set.p - PLC se zde zasekne. A proto nebude běžet. Navíc může to vést k neočekávaným chybám.