# Types de données

Il existe deux types de variables.

- Variables de base
  Une variable qui stocke une valeur.
- Variables de type de données d'utilisateur
  Une variable qui peut stocker plusieurs valeurs (plusieurs variables traitées comme une seule variable).

Remarque :

- Pour un fonctionnement lorsque la valeur (valeur entrée) stockée dans la variable est en dehors de la plage des entrées (valeur minimum/maximum), consultez :
  Fonctionnement lorsque la valeur d'entrée est en dehors de la plage des entrées

## Variables de base

Voici une liste des types de variables de base.

Type de données | Description
BOOL | Cette variable stocke 0 ou 1.
SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, BYTE | Ces variables stockent des valeurs intégrales. Le traitement est plus rapide comparativement aux variables de type de point flottant.
WORD, DWORD, LWORD | Ces variables stockent des valeurs de type mot.
STRING, WSTRING | Ces variables stockent des chaînes de texte.
REAL, LREAL | Ces variables stockent des valeurs de point flottant. Les variables REAL peuvent stocker des valeurs plus élevées (comme les calculs et les constantes) que les variables de type entier.
TIME, DATE, TIME_OF_DAY, DATE_AND_TIME | Ces variables stockent des valeurs d'heure et de date.

### SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, BYTE

Type de données | Signé | Longueur des données | Plage de données
SINT | Complément à 2 | 8 bits | -128...127
USINT | - | 8 bits | 0...255
INT | Complément à 2 | 16 bits | -32768...32767
UINT | - | 16 bits | 0...65535
DINT | Complément à 2 | 32 bits | -2147483648...2147483647
UDINT | - | 32 bits | 0...4294967295
LINT | Complément à 2 | 64 bits | -9223372036854775808...9223372036854775807
ULINT | - | 64 bits | 0...18446744073709551615
BYTE | - | 8 bits | 0...255

### WORD, DWORD, LWORD

Type de données | Longueur des données | Plage de données
WORD | 16 bits | 0...65535
DWORD | 32 bits | 0...4294967295
LWORD | 64 bits | 0...18446744073709551615

### STRING, WSTRING

Type de données | Description
STRING | Stocke jusqu'à 512 octets de texte. Lorsqu'on utilise une variable externe, l'encodage des chaînes est défini par la propriété [Encodage de chaîne] de la variable. Les valeurs d'encodage de chaîne disponibles sont : UTF8, UTF16, ShiftJIS, CodePage850, GB2312, BIG5, KSC5601, CodePage1251, CodePage874 et CodePage1252. Remarque : Vous pouvez également configurer l'encodage de chaîne dans les propriétés de l'équipement. Le réglage de la propriété variable a la priorité sur la propriété de l'équipement. Dans la propriété [Encodage de chaîne] de la variable, sélectionnez [Type de paramètre d'équipement] pour appliquer le paramètre d'encodage de chaîne de l'équipement. La propriété [Encodage de chaîne] s'affiche uniquement lorsque le pilote prend en charge l'encodage de chaîne.
WSTRING | Stocke jusqu'à 512 mots de texte double octet. Vous pouvez utiliser le type de données WSTRING uniquement avec les variables externes. L'encodage de chaîne est fixé à UTF16. Vous ne pouvez pas modifier le paramètre [Encodage de chaîne] dans les propriétés de la variable, et l'encodage dans les propriétés de l'équipement est ignoré.

Remarque :

- Vous pouvez définir le nombre d'octets ou de mots que la variable peut stocker dans la propriété [Nombre d'octets ou de mots].

- Reconnaît la fin de la chaîne de texte par NULL (0x00) ou [Nombre d'octets].

- Pour une variable ou un pilote sélectionné, si vous utilisez un texte dont le code de caractère ne peut pas être converti par un [Encodage de chaîne], la fin de la chaîne est reconnue par le code de caractère.

- La relation de l'ordre haut/bas pour les données de mot dépend du [Mode chaîne] dans le pilote sélectionné.

### REAL, LREAL

Type de données | Longueur des données | Plage de données
REAL | 32 bits | +/-3,402823E38 ... +/-1,1754944E-38
LREAL | 64 bits | +/-4,19E-307 ... +/-1,67E308

Remarque :

- La précision des variables REAL est limitée à sept chiffres. Si la précision données est requise (comme les opérations de comparaison), utilisez une variable de type entier.
  Exemples
  Exemple 1 : Pour la valeur 1.2345678, la valeur résultant est approximative car le huitième chiffre est supprimée (après 1.234567).
  Exemple 2 : La valeur 0.1 stockée dans une variable REAL pourrait produire 0.1000000014901161.

- Si vous utilisez des variables REAL externes, vérifiez que le paramètre Ordre de mot double dans Configuration de l'équipement correspond au paramètre de l'équipement. Si les paramètres ne correspondent pas, les valeurs des variables REAL externes ne s'afficheront pas correctement.

- Utilisez le point (.) pour le point décimal de la valeur de la variable. La virgule (,) n'est pas prise en charge pour les points décimaux.
  Même si la virgule (,) est utilisée pour le point décimal de la valeur de la variable dans le logiciel d'édition d'écran ou l'afficheur, des résultats inattendus, comme cette erreur, sont affichés, la virgule est ignorée, etc.

### TIME, DATE, TIME_OF_DAY, DATE_AND_TIME

Type de données | Description | Plage de données
TIME | Stocke le temps écoulé en jours et en heures. | - 24 d 20 h 31 m 23 s 648 ms ... 24 d 20 h 31 m 23 s 647 ms Remarque : Lorsqu'une valeur négative est définie pour les propriétés [Valeur initiale] et [Plage de saisies] dans une variable TIME, le signe négatif s'affiche pour chaque unité de temps. (Exemple : -24d -20:-31:-23.-648)
DATE | Stocke la date. | Lors de l'utilisation d'un équipement Série SP5000 Open Box (modèle Windows 10 IoT Enterprise), Série IPC ou PC/AT. 1970/01/01 ... 2106/02/07 Modèles autres que ceux indiqués ci-dessus 1970/01/01 ... 2038/01/19
TIME_OF_DAY | Stocke l'heure. | 00:00:00 ... 23:59:59
DATE_AND_TIME | Combine DATE et TIME_OF_DAY. | Lors de l'utilisation d'un équipement Série SP5000 Open Box (modèle Windows 10 IoT Enterprise), Série IPC ou PC/AT. 1970/01/01 00:00:00 UTC ... 2106/02/07 06:28:15 UTC Modèles autres que ceux indiqués ci-dessus 1970/01/01 00:00:00 UTC ... 2038/01/19 03:14:07 UTC

Remarque :

- Lors de l'utilisation de ces variables, faites correspondre les types de données sur l'équipement externe et la valeur des données stockées.
  Si vous avez saisi une valeur qui n'est pas comprise dans la valeur de l'adresse d'équipement externe, la valeur saisie s'affiche à l'écran mais n'est pas définie dans l'adresse d'équipement externe.

- Lorsque vous associez des variables avec différents types de données, parfois la valeur de la variable source est remplacée par une valeur commune.

  Par exemple, convertissement une variable Real en une variable Integer : Définissez 123.4 sur une variable REAL, puis écrivez la valeur vers une variable INT est le résultat est 123. La valeur de la variable REAL est également mise à jour à 123.

- Lorsqu'une valeur entière est introduite dans la variable DATE_AND_TIME à partir d'un périphérique externe, la valeur enregistrée est décalée en fonction du fuseau horaire de l'afficheur. Par conséquent, pour l'entrée d'une valeur entière, la date et l'heure affichées par un afficheur de date et d'heure diffèrent en fonction du fuseau horaire.

SP5000 Series Open Box (modèle Windows 10 IoT Enterprise), IPC Series ou PC/AT

Valeur entière entrée depuis un périphérique externe | UTC+0 (Plage : 1970/01/01 00:00:00 ... 2106/02/07 06:28:15) | UTC+9 (Plage : 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

Modèles autres que ceux indiqués ci-dessus

Valeur entière entrée depuis un périphérique externe | UTC+0 (Plage : 1970/01/01 00:00:00 ... 2038/01/19 03:14:07) | UTC+9 (Plage : 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

## Variables de type de données d'utilisateur

Voici les types de variables de type de données d'utilisateur :

- Variables de tableau
  Utilisez une seule variable pour traiter plusieurs variables du même type de données.
- Variables de structure
  Utilisez une seule variable pour traiter plusieurs variables de divers types de données.

Remarque : Les contenants de tableau et les contenants de structure sont également considérés comme des variables.

### Variables de tableau

Un tableau est un ensemble de variables ayant le même type de données. Dans un tableau, chaque variable est appelée élément.

Pour comprendre le fonctionnement d'une variable de type tableau, imaginez que la variable est une boîte. Dans le diagramme ci-dessous, la variable Numéro est une boîte simple contenant une valeur.

Imaginez qu'un tableau est une série de boîtes portant chacune un numéro. Dans le schéma suivant, la variable de tableau Numéro contient 5 éléments (0 à 4). Les valeurs de variable sont stockées dans chacune des 5 boîtes.

Pour spécifier chaque variable d'un tableau, indiquez le nom de la variable suivi du numéro de l'élément entre crochets [ ].

(Exemple) Tableau à 5 éléments

Le nombre d'éléments commence généralement par 0, mais peut également commencer par une valeur positive ou négative.

(Exemple) Tableau commençant par le numéro d'élément -1 avec 5 éléments

Un tableau multidimensionnel est un tableau qui contient d'autres tableaux. Par exemple, un tableau contenant deux tableaux DINT est un tableau à deux dimensions.

#### Nombre d'éléments dans chaque dimension et paramètres de dimension

Dans la fenêtre [Explorateur de projets], sous [Variables] → [Tous les types de données utilisateur] → [Tableaux], dans la colonne [Dimension], définissez la dimension du tableau et le nombre d'éléments.

Pour connaître les étapes de la conception d'un réseau, reportez-vous à ce qui suit.

Étapes à concevoir (variables, tableau, structure)

Pour un tableau à une dimension, ne spécifiez que les éléments du tableau.

(Exemple) Pour un tableau à une dimension avec un nombre d'éléments = 3, saisissez '3'.

Pour un tableau multidimensionnel, dans le champ [Dimension], indiquez le nombre d'éléments dans chaque dimension, séparés par une virgule (,).

(Exemple) Pour un tableau à deux dimensions dont la première dimension comporte 3 éléments (numéro de départ = 0) et la deuxième dimension comporte 4 éléments (numéro de départ = 0), saisissez '3,4'.

Cette définition de tableau est utilisée pour créer la variable de tableau Var1, illustrée ci-dessous.

Remarque : Pour fixer le numéro de départ d'un élément à une valeur différente de 0, au lieu du nombre d'éléments, saisissez le numéro de départ et le dernier numéro d'élément séparés par deux points (..) et le champ [Nombre d'éléments] calcule le nombre total d'éléments.

(Exemple) Pour créer un tableau à deux dimensions dont la première dimension comporte 3 éléments à partir de l'élément 0 et la deuxième dimension comporte 4 éléments à partir de l'élément 3, saisissez '3,3..6'.

Après la saisie, '3..6' est converti en 4 éléments, et la dimension du tableau commence à partir de l'élément numéro 3.

Ce tableau crée la variable Var1, illustrée ci-dessous.

#### Adressage indirect d'un tableau

L'adressage indirect est la façon la plus rapide d'accéder à une valeur de variable dans la plage de valeurs consécutives d'un tableau, ainsi que de mettre à jour la valeur en quelques millisecondes, et il permet de réduire la consommation de mémoire.

Pour l'adressage indirect des tableaux, spécifiez le numéro de l'élément du tableau par le biais d'une valeur de variable ou de la valeur de propriété d'un objet pour spécifier l'élément d'un tableau de manière dynamique.

- Pour spécifier indirectement une valeur de variable :
  Saisissez '(Nom de la variable).Value' entre les crochets [] qui spécifient le numéro d'élément du tableau.
  (Exemple) Var2[Var1.Value].Value : Il s'agit de la valeur de la variable Var2 du tableau dont le numéro d'élément est spécifié indirectement à l'aide de la valeur de la variable Var1.
- Pour spécifier indirectement la valeur de la propriété d'un objet :
  Saisissez '$GraphicalObject' suivi de '(Nom de l'objet).(Nom de la propriété)' entre les crochets [] qui spécifient le numéro d'élément du tableau.
  (Exemple) Var2[$GraphicalObject.NumericDisplay1.CurrentValue].Value : Il s'agit de la valeur de la variable de tableau Var2 dont la valeur du numéro d'élément du tableau est spécifiée indirectement en utilisant la valeur courante d'un objet d'affichage numérique, Numeric Display1.

Remarque :

Lorsque vous spécifiez un numéro d'élément de tableau indirectement avec la valeur de la propriété d'un objet, saisissez '$GraphicalObject' avant le nom de l'objet.
Selon la fonction d'assistance à la saisie, après avoir tapé '$' dans le champ de saisie ou de propriété source, vous pouvez sélectionner '$GraphicalObject' dans la liste des options pour saisir facilement la chaîne de caractères.

L'adressage indirect d'un tableau prend en charge :

- Vous pouvez l'utiliser dans le convertisseur [Expression].
  (Exemple : Array11[DINT1.value+2], Array21[Int2[Int3[Int1+1]]], Array31[Int1*4-(Int2+Int4/4)])

- Au maximum 5 niveaux d'imbrication sont pris en charge pour tous les types de données variables.
  (Exemple : Array11[Array22[DINT1.value],DINT02.value])

### Variables de structure

Une structure est une variable qui contient plusieurs autres variables. Chaque variable d'une structure est appelée élément. Un élément peut être de n'importe quel type de données.

Vous pouvez créer une structure imbriquée en ajoutant une autre structure ou un tableau en tant qu'élément.

Imaginez qu'une structure est une série de boîtes portant chacune un élément.

Dans le schéma suivant, la variable de structure DATA contient 3 éléments. Les valeurs de variable sont stockées dans chacune des 3 boîtes.

## Fonctionnement lorsque la valeur d'entrée est en dehors de la plage des entrées

Lorsque la valeur à stocker dans la variable n'est pas comprise dans la plage (valeur minimum/maximum), la valeur est traitée comme suit :

- Lorsque la valeur est dépassée sur l'équipement externe
- Lorsque la valeur est dépassée avec une opération Changement de valeur [Loop]
- Lorsque la valeur est dépassée avec une opération Changement de valeur [Stop]
- Lorsque la valeur est dépassée avec une opération Changement de valeur [Set], une valeur spécifiée indirectement ou une opération Convertisseur d'expression
- Lorsque la valeur est dépassée avec une recette

Remarque :

- Pour plus d'informations sur les opérations Changement de valeur, consultez Changement de valeur.

### Lorsque la valeur est dépassée sur l'équipement externe

Type de données | Description
STRING, WSTRING | Stocke les caractères qui peuvent s'ajuster.
Autre que ceux ci-dessus | La valeur de la partie qui dépasse la plage d'entrées est comptée à nouveau à partir du bas de la plage d'entrées et stockée. Exemple) : Variable 8 bits non signée (plage de valeurs : 0...255) Exemple 1 : Si vous tentez de stocker 256, 0 est stocké dans la variable. (Puisque la limite supérieure est dépassée par 1, la valeur de la limite inférieure de 0 est stockée.) Exemple 2 : Si vous tentez de stocker 257, 1 est stocké dans la variable. (Puisque la limite supérieure est dépassée par 2, la deuxième valeur à partir de la limite inférieure de 1 est stockée.)

### Lorsque la valeur est dépassée avec une opération Changement de valeur [Loop]

La valeur de la partie qui dépasse la plage d'entrées est comptée à nouveau à partir du bas de la plage d'entrées et stockée.

(Exemple) : Variable 8 bits non signée (plage de valeurs : 0...255)

Exemple 1 : Si vous tentez de stocker 256, 0 est stocké dans la variable. (Puisque la limite supérieure est dépassée par 1, la valeur de la limite inférieure de 0 est stockée.)

Exemple 2 : Si vous tentez de stocker 257, 1 est stocké dans la variable. (Puisque la limite supérieure est dépassée par 2, la deuxième valeur à partir de la limite inférieure de 1 est stockée.)

### Lorsque la valeur est dépassée avec une opération Changement de valeur [Stop]

Type de données | Description
STRING, WSTRING | Stocke les caractères qui peuvent s'ajuster.
Autre que ceux ci-dessus | Les valeurs suivantes sont arrondies à la valeur supérieure ou inférieure : BOOL 1/0 SINT 127/-128 USINT, BYTE 255/0 INT 32767/-32768 UINT, WORD 65535/0 DINT 2147483647/-2147483648 UDINT, DWORD 4294967295/0 LINT 9223372036854775807/-9223372036854775808 ULINT, LWORD 18446744073709551615/0 REAL, LREAL Diffère selon le paramètre de propriété. TIME 2147483647/-2147483648 DATE/TIME_OF_DAY, DATE_AND_TIME 4294967295/0

### Lorsque la valeur est dépassée avec une opération Changement de valeur [Set], une valeur spécifiée indirectement ou une opération Convertisseur d'expression

La valeur n'est pas stockée.

### Lorsque la valeur est dépassée avec une recette

Type de données | Description
BOOL, REAL, LREAL | La valeur n'est pas stockée.
LINT, ULINT, LWORD | Les valeurs suivantes sont arrondies à la valeur supérieure ou inférieure : LINT 9223372036854775807/-9223372036854775808 ULINT, LWORD 18446744073709551615/0
STRING, WSTRING | Stocke les caractères qui peuvent s'ajuster.
Autre que ceux ci-dessus | La valeur de la partie qui dépasse la plage d'entrées est comptée à nouveau à partir du bas de la plage d'entrées et stockée. (Exemple) : Variable 8 bits non signée (plage de valeurs : 0...255) Exemple 1 : Si vous tentez de stocker 256, 0 est stocké dans la variable. (Puisque la limite supérieure est dépassée par 1, la valeur de la limite inférieure de 0 est stockée.) Exemple 2 : Si vous tentez de stocker 257, 1 est stocké dans la variable. (Puisque la limite supérieure est dépassée par 2, la deuxième valeur à partir de la limite inférieure de 1 est stockée.)