Ogni variabile nella PLC riceve automaticamente il tipo di dati corretto. La conversione deve essere impostata solo nell'interfaccia. In questo capitolo vengono spiegati i singoli tipi di Antcas Control.
Questo tipo può avere solo due stati. Vero o falso. Nell'applicazione, invece di una variabile, il valore può essere definito con TRUE (vero) o FALSE (falso).
Inoltre viene utilizzato il tipo speciale NULL. Questo stato viene impostato durante l'inizializzazione di una variabile, cioè di una non scritta. Inoltre, con NULL sono possibili funzioni speciali. Ad esempio, quando nessun valore deve essere comunicato all'interfaccia.
Un intero è un numero intero, come ad esempio 0 o 26. Inoltre, il valore può anche essere negativo. Antcas Control lavora con una PLC a 64 bit, che consente il calcolo di numeri molto grandi. Il numero più grande è definito dalla costante INT_MAX (9223372036854775807). Il numero più piccolo è in INT_MIN o INT_MAX+1, poiché il segno utilizza un bit. Tutti i numeri al di fuori dell'intervallo vengono applicati in un Float con un esponente. Il calcolo è quindi approssimativo.
Un intero può ricevere il valore -0, che non è uguale a FALSE. Tuttavia, la verifica con la funzione EQ(-0,0) restituisce TRUE. -0 può essere definito solo come stringa di caratteri '-0'.
È anche possibile definire direttamente un valore esadecimale. Questo inizia con 0x o 0X. Ad esempio, da 0xFF diventa poi 255.
Un Float o anche un valore Reale è un numero a virgola mobile, come ad esempio 0.1 o 22.005 (con punto). Vengono supportati anche gli esponenti. Ad esempio, 10E2 per 1'000 o 10e-2 per 0.1. La maiuscola e minuscola non importa. Si tenta di convertire il numero in un intero, poiché il calcolo è più semplice per la PLC. Può accadere che i calcoli con numeri grandi diventino approssimativi. Il numero massimo di decimali è fisso a 14 per migliorare le prestazioni della PLC.
I numeri a virgola mobile hanno una precisione limitata. Sebbene ciò dipenda dal sistema, Antcas Control utilizza solitamente il Formato Double Precision IEEE 754, che produce un errore di arrotondamento relativo massimo di circa 1.11e-16. Tuttavia, le operazioni aritmetiche non elementari possono causare errori più grandi e naturalmente deve essere considerata la propagazione dell'errore se vengono composte diverse operazioni.
Inoltre, ci sono numeri razionali che possono essere rappresentati esattamente come numeri a virgola mobile con base 10, ad esempio 0.1 o 0.7, per i quali non esiste una rappresentazione esatta come numeri a virgola mobile con base 2, che viene utilizzata internamente indipendentemente dalla dimensione della mantissa. Pertanto, non possono essere convertiti nella loro rappresentazione binaria interna senza un leggero perdita di precisione. Questo può portare a risultati confusi: FLOOR((0.1+0.7)*10) darà tipicamente 7 invece del risultato atteso di 8, poiché la rappresentazione interna è qualcosa come 7.9999999999999991118.
Non ci si dovrebbe mai affidare ai numeri a virgola mobile fino all'ultima cifra decimale e non si dovrebbero mai verificare direttamente i numeri a virgola mobile per l'uguaglianza.
Una stringa di caratteri o anche chiamata stringa, è definita con un apice ' ' o doppio apice " ". Ad esempio, 'Testo 1' o . Con il blocco funzionale CONCAT è possibile unire più stringhe di caratteri.
Un Line Feed o nuova riga può essere creato con CTRL+Invio. Questo viene poi rappresentato da una freccia ↵.
Non è necessario un carattere di escape per indicare un ' o " nella stringa stessa. La stringa può essere specificata direttamente con "C'è un \" carattere".
È possibile dichiarare caratteri speciali direttamente. A tal fine, all'interno della stringa di caratteri viene specificata la seguente sequenza tra doppi apici:
| Sequenza Di Escape | Abbreviazione ASCII |
|---|---|
| \\ | Escaped \ |
| \n | LF |
| \r | CR |
| \r\n | CRLF |
| \0 | NUL |
| \t | TAB |
| \e | ESC |
| \f | FORMFEED |
| \x## | Byte Arbitrario |
Ad esempio, per dichiarare un byte arbitrario 126 o 7E come numero esadecimale, viene utilizzato il seguente espressione: "\x7E". Questa stringa di caratteri corrisponde quindi a "~".
In questo caso, 7E funge da valore placeholder. È possibile specificare tutti i valori all'interno dei numeri esadecimali da 00 a FF. Si noti che il BOM UTF-8 "\xEF\xBB\xBF" viene automaticamente rimosso dalla maggior parte dei browser. È possibile mascherare la sequenza di caratteri. A tal fine, viene utilizzato un backslash iniziale: "\\x7E", che corrisponde quindi a '\x7E'.
Attenzione: Tutte le stringhe di caratteri al di fuori dell'intervallo UTF-8 non possono essere memorizzate in modo remanente. Nella vista live, queste vengono visualizzate in viola scuro.
Vedi anche l'articolo Conversione Di Stringhe Di Caratteri In Numeri.
Definisce una data e un'ora con DT#, ad esempio DT#2016-03-25-22:12:00. Le ore vengono convertite in un intero in ms a partire dalla data 01.01.1970 (questo valore è nella zona oraria UTC/GMT).
Definisce una data a partire da mezzanotte con D#, ad esempio D#2016-03-25. Le ore vengono convertite in un intero in ms a partire dalla data 01.01.1970 (questo valore è nella zona oraria UTC/GMT).
Definisce un tempo in millisecondi con T#, ad esempio T#5d3h5m11s500ms. Le ore vengono convertite in un intero in ms.
Un array non può essere definito direttamente. Tuttavia, è possibile fare assegnazioni di una variabile con un punto. Vedi Variabili.
MOLTO IMPORTANTE: Non definite mai un valore al di sotto in un array. Ad esempio, set e set.p - La PLC si bloccherà qui. E quindi non funzionerà. Inoltre, ciò può portare a errori imprevisti.