Sono disponibili due tipi di variabili.
Quanto segue è un elenco di tipi di variabili di base.
Tipo di dati |
Descrizione |
| BOOL | La variabile BOOL memorizza 0 o 1. |
| SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, BYTE | Tali variabili memorizzano valori interi. L’elaborazione è più veloce in confronto alle variabili di tipo virgola mobile. |
| Tali variabili memorizzano valori di tipo word. | |
| Tali variabili memorizzano stringhe di testo. | |
| Tali variabili memorizzano valori in virgola mobile. Le variabili REAL possono memorizzare valori maggiori (come per es. i calcoli e le costanti) delle variabili di tipo intero. | |
| Tali variabili memorizzano i valori di giorno e ora. |
Tipo di dati |
Con segno |
Lunghezza dati |
Intervallo dati |
SINT |
Complemento a 2 |
8 bit |
-128...127 |
USINT |
- |
8 bit |
0...255 |
INT |
Complemento a 2 |
16 bit |
-32768...32767 |
UINT |
- |
16 bit |
0...65535 |
DINT |
Complemento a 2 |
32 bit |
-2147483648...2147483647 |
UDINT |
- |
32 bit |
0...4294967295 |
LINT |
Complemento a 2 |
64 bit |
-9223372036854775808...9223372036854775807 |
ULINT |
- |
64 bit |
0...18446744073709551615 |
BYTE |
- |
8 bit |
0...255 |
| Tipo di dati | Lunghezza dati | Intervallo dati |
WORD |
16 bit |
0...65535 |
DWORD |
32 bit |
0...4294967295 |
LWORD |
64 bit |
0...18446744073709551615 |
| Tipo di dati | Descrizione |
STRING |
Memorizza fino a 512 byte di testo. Se si usano variabili esterne, la codifica delle stringhe è definita dalla proprietà [Codifica stringa] della variabile. I valori di codifica delle stringhe disponibili sono: UTF8, UTF16, ShiftJIS, CodePage850, GB2312, BIG5, KSC5601, CodePage1251, CodePage874 e CodePage1252.
|
WSTRING |
Memorizza fino a 512 word di testo a doppio byte. Con le variabili esterne si può usare solo il tipo dati WSTRING. La codifica delle stringhe è fissata come UTF16. Nelle proprietà delle variabili non si può cambiare l'impostazione [Codifica stringa] e la codifica nelle proprietà dell'apparecchiatura viene ignorata. |
È possibile definire il numero di byte o word memorizzabili dalla variabile nella proprietà [Numero di byte/Word].
Riconosce la fine della stringa di testo da NULL (0x00) o da [Numero di Byte].
Con la variabile selezionata o con il driver, se si usa un testo il cui codice carattere non può essere convertito con [Codifica stringa], la fine della stringa viene riconosciuta con il codice carattere.
La relazione di ordine alto/basso dei dati word dipende dalla [Modalità stringa] nel driver selezionato.
| Tipo di dati | Lunghezza dati | Intervallo dati |
| REAL | 32 bit |
+/-3.402823E38 ... +/-1.1754944E-38 |
| LREAL | 64 bit |
+/-4.19E-307 ... +/-1.67E308 |
La precisione delle variabili REAL è limitata a solo sette cifre. Se occorre maggiore precisione dei dati (per es. nelle operazioni di confronto), usare le variabili intere.
Esempi
Esempio 1: Nel valore 1.2345678, il valore risultante è approssimato all’ottava cifra (dopo 1.234567).
Esempio 2: Il valore 0.1 memorizzato con una variabile REAL potrebbe dar luogo a 0.1000000014901161.
Quando si usano le variabili REAL, verificare che l'impostazione Ordine word doppia nella finestra di dialogo Configurazione del dispositivo corrisponda all'impostazione del dispositivo. Se le impostazioni non corrispondono, i valori delle variabili REAL esterne non saranno visualizzati correttamente.
Usare il punto (.) al posto della virgola decimale del valore della variabile. La virgola (,) non è supportata per i punti decimali.
Anche se si usa la virgola (,) al posto del punto decimale del valore della variabile nel software di modifica delle schermate o nel visualizzatore, si ottengono risultati inaspettati, per esempio viene mostrato l'errore, la virgola è ignorata, o altro.
| Tipo di dati | Descrizione | Intervallo dati |
TIME |
Memorizza la durata del tempo trascorso in giorni e ore. | - 24 d 20 h 31 m 23 s 648 ms ... 24 d 20 h 31 m 23 s 647 ms Quando si imposta un valore negativo per le proprietà [Valore iniziale] e [Intervallo di immissione] in una variabile TIME, il segno negativo verrà visualizzato per ogni unità di tempo. (Esempio: -24d -20:-31:-23.-648) |
| DATE | Memorizza il giorno. | Quando si usa la serie SP5000 Open Box (Windows 10 IoT Enterprise Model), la serie IPC o PC/AT 1970/01/01 ... 2106/02/07 Modelli diversi da quelli precedenti 1970/01/01 ... 2038/01/19 |
| TIME_OF_DAY | Memorizza l’ora. | 00:00:00 ... 23:59:59 |
DATE_AND_TIME |
Combina DATE e TIME_OF_DAY. | Quando si usa la serie SP5000 Open Box (Windows 10 IoT Enterprise Model), la serie IPC o PC/AT Modelli diversi da quelli precedenti |
Se si usano queste variabili, far corrispondere i tipi di dati del dispositivo esterno ai valori dei dati memorizzati.
Se è stato immesso un valore non contenuto nell’intervallo dell’indirizzo del dispositivo esterno, il valore immesso compare sulla schermata ma non viene impostato nell’indirizzo del dispositivo esterno.
Quando si associano variabili con tipo di dati differenti, spesso il valore della variabile sorgente viene sovrascritto con un valore del risultato in comune.
Per esempio, convertire una variabile reale su una variabile intera: impostare 123.4 su una variabile intera, quindi scrivere il valore su una variabile INT e il risultato è 123. Anche il valore della variabile REAL viene aggiornato a 123.
Se nella variabile DATE_AND_TIME viene immesso un valore intero da un dispositivo esterno, il valore memorizzato viene sfalsato del fuso orario del visualizzatore. Pertanto, per l'immissione di valori interi, la data e l'ora visualizzate dal display giorno/ora variano a seconda del fuso orario.
Serie SP5000 Open Box (Windows 10 IoT Enterprise Model), serie IPC o PC/AT
| Valore intero in ingresso da dispositivo esterno | UTC+0 (ntervallo: 1970/01/01 00:00:00 ... 2106/02/07 06:28:15) | UTC+9 (ntervallo: 1970/01/01 09:00:00 ... 2106/02/07 15:28:15) |
| 0 | 1970/01/01 00:00:00 | 2106/02/07 06:28:16 |
| 1 | 1970/01/01 00:00:01 | 2106/02/07 06:28:17 |
| : | : | : |
| 32399 | 1970/01/01 08:59:59 | 2106/02/07 15:28:15 |
| 32400 | 1970/01/01 09:00:00 | 1970/01/01 09:00:00 |
| : | : | : |
| 4294967295 | 2106/02/07 06:28:15 | 2106/02/07 06:28:15 |
Modelli diversi da quelli precedenti
| Valore intero in ingresso da dispositivo esterno | UTC+0 (ntervallo: 1970/01/01 00:00:00 ... 2038/01/19 03:14:07) | UTC+9 (ntervallo: 1970/01/01 09:00:00 ... 2038/01/19 12:14:07) |
| 0 | 1970/01/01 00:00:00 | 2038/01/19 03:14:08 |
| 1 | 1970/01/01 00:00:01 | 2038/01/19 03:14:09 |
| : | : | : |
| 32399 | 1970/01/01 08:59:59 | 2038/01/19 12:14:07 |
| 32400 | 1970/01/01 09:00:00 | 1970/01/01 09:00:00 |
| : | : | : |
| 2147483647 | 2038/01/19 03:14:07 | 2038/01/19 03:14:07 |
Quanto segue è un elenco di tipi di variabili di tipo dati utente.
Anche i contenitori di array e di struttura sono considerati variabili.
Un array è una raccolta di variabili con lo stesso tipo di dati. Ciascuna variabile in un array si chiama elemento.
Per comprendere come funziona una variabile array, immaginare la variabile come una scatola. Come indicato nello schema seguente, la variabile Numero è una scatola singola contenente un valore.

L'array è simile a una fila di scatole, a ognuna delle quali è stato associato un numero. Nello schema seguente, la variabile array NUMERO contiene 5 elementi da 0 a 4. I valori della variabile vengono salvati in ciascuna delle 5 scatole.

Per specificare ogni variabile dell'array, specificare il nome della variabile seguito dal numero dell'elemento racchiuso tra parentesi quadre [ ].
(Esempio) Array con 5 elementi

Il numero dell'elemento inizia solitamente con 0, ma può anche iniziare con valori positivi o negativi.
(Esempio) Array che inizia con numero dell'elemento -1 con 5 elementi

Un array multidimensionale è un array che contiene altri array. Ad esempio, l'array che contiene due array DINT è un array bidimensionale.
Nella finestra [Esplora progetti], da [Variabili] → [Tutti i tipi di dati utente] → [Array], nella colonna [Dimensione], impostare sia la dimensione dell'array che il numero di elementi.
Per le fasi di progettazione degli array, fare riferimento a quanto segue.
Procedura per il progetto (Variabili, Array, Struttura)
Per l'array a 1 dimensione, specificare solo gli elementi dell'array.
(Esempio) Per l'array a 1 dimensione con numero di elementi = 3, immettere "3".

Per gli array multidimensionali, nel campo [Dimensione] specificare il numero di elementi di ciascuna dimensione, separati dalla virgola (,).
(Esempio) Per l'array bidimensionale in cui la prima dimensione ha 3 elementi (numero iniziale = 0) e la seconda dimensione ha 4 elementi (numero iniziale = 0), immettere "3,4".

Questa definizione di array si utilizza per creare la variabile array Var1, mostrata di seguito.

Per impostare il numero iniziale degli elementi su qualcosa diverso da 0, al posto del numero di elementi immettere i numeri iniziale e finale separati da due punti (..) e il campo [Numero di elementi] calcola il numero totale di elementi.
(Esempio) Per impostare un array bidimensionale in cui la prima dimensione ha 3 elementi a partire dall'elemento 0 e la seconda dimensione ha 4 elementi a partire dall'elemento 3, immettere "3,3..6".

Dopo l'immissione, "3..6" viene convertito in 4 elementi e la sua dimensione di array inizia dal numero dell'elemento 3.

Questa array crea la variabile array Var1, mostrata di seguito.

L'indirizzamento indiretto è il modo più rapido per accedere a un valore di variabile nell'intervallo di valori consecutivi in un array, per ridurre il consumo di memoria e aggiornare il valore in pochi millisecondi.
Per l'indirizzamento indiretto degli array, specificare il numero di elementi dell'array attraverso il valore della variabile o il valore della proprietà di un oggetto, per specificare dinamicamente l'elemento dell'array.
Quando si specifica indirettamente il numero di elementi dell'array con il valore della proprietà dell'oggetto, immettere "$GraphicalObject" prima del nome dell'oggetto.
A seconda della funzione di assistenza all'immissione, dopo aver digitato "$" nel campo della proprietà di input o di origine, dall'elenco delle opzioni è possibile selezionare "$GraphicalObject" per immettere facilmente la stringa.
L'indirizzamento indiretto dell'array è supportato quando:
È possibile utilizzare nel convertitore [Espressione].
(Esempio: Array11[DINT1.value+2], Array21[Int2[Int3[Int1+1]]], Array31[Int1*4-(Int2+Int4/4)])
È supportato un massimo di 5 livelli di annidamento per tutti i tipi di dati delle variabili.
(Esempio: Array11[Array22[DINT1.value],DINT02.value])
Una struttura è una variabile che contiene una raccolta di altre variabili. Ogni variabile in un array si chiama elemento. Un elemento può essere formato da qualsiasi tipo di dati.
Si può creare una struttura annidata aggiungendo un'altra struttura o un array come elemento.
La struttura è simile a una fila di scatole, a ognuna delle quali è stato associato un elemento.
Nello schema seguente, la variabile struttura DATA contiene 3 elementi. I valori della variabile vengono salvati in ciascuna delle tre scatole.

Nelle operazioni in cui il valore memorizzato nella variabile è fuori dall’intervallo di ingresso (valore minimo e massimo), il valore viene trattato come segue.
| Tipo di dati | Descrizione |
STRING, WSTRING |
Memorizza i dati che possono adattarsi. |
| Diversi dai precedenti | Il valore della porzione che supra l’intervallo di immissione viene contato di nuovo dal fondo dell’intervallo di immissione e memorizzato. Esempio) Variabile a 8 bit senza segno (intervallo valore: 0...255) Esempio 1: Se si cerca di memorizzare 256, nella variabile si memorizza 0. (Poiché il limite superiore è superato da 1, viene memorizzato il valore del limite inferiore 0) Esempio 2: Se si cerca di memorizzare 257, nella variabile si memorizza 1. (Poiché il limite superiore è superato da 2, viene memorizzato il secondo valore dal limite inferiore 1) |
Il valore della porzione che supra l’intervallo di immissione viene contato di nuovo dal fondo dell’intervallo di immissione e memorizzato.
(Esempio): Variabile a 8 bit senza segno (intervallo valore: 0...255)
Esempio 1: Se si cerca di memorizzare 256, nella variabile si memorizza 0. (Poiché il limite superiore è superato da 1, viene memorizzato il valore del limite inferiore 0)
Esempio 2: Se si cerca di memorizzare 257, nella variabile si memorizza 1. (Poiché il limite superiore è superato da 2, viene memorizzato il secondo valore dal limite inferiore 1)
| Tipo di dati | Descrizione |
STRING, WSTRING |
Memorizza i dati che possono adattarsi. |
| Diversi dai precedenti | Quelli che seguono sono i valori arrotondati al valore superiore o inferiore.
|
Il valore non viene memorizzato.
| Tipo di dati | Descrizione |
BOOL, REAL, LREAL |
Il valore non viene memorizzato. |
LINT, ULINT, LWORD |
Quelli che seguono sono i valori arrotondati al valore superiore o inferiore.
|
STRING, WSTRING |
Memorizza i dati che possono adattarsi. |
| Diversi dai precedenti | Il valore della porzione che supra l’intervallo di immissione viene contato di nuovo dal fondo dell’intervallo di immissione e memorizzato. (Esempio): Variabile a 8 bit senza segno (intervallo valore: 0...255) Esempio 1: Se si cerca di memorizzare 256, nella variabile si memorizza 0. (Poiché il limite superiore è superato da 1, viene memorizzato il valore del limite inferiore 0) Esempio 2: Se si cerca di memorizzare 257, nella variabile si memorizza 1. (Poiché il limite superiore è superato da 2, viene memorizzato il secondo valore dal limite inferiore 1) |