Codesys : Types de données

Types de données standards

 

Les types de données utilisables dans Codesys V3.5 sont les suivants. Attention aux tailles mémoires utilisées pour certains type de données

BOOL

Le type de données "BOOL" sera utilisé pour toute information booléenne. 

 

ENTIERS et assimilés :

Les types entiers utilisent plusieurs bits pour stocker les informations. Il comprennent, par exemple, les types BYTE, WORD, DINT...

 

REAL / LREAL

Ce sont des types de données permettant de stocker des information de type IEEE754 (format virgule flottante) en simple et double précision

 

STRING / WSTRING

Le type de données STRING est utilisé pour stocker un caractère ASCII (taille 1 BYTE). La taille mémoire occupée par un STRING est de n*caractères*8 + 8 bits.

Le type de données WSTRING est utilisé pour stocker un caractère UNICODE (taille 1WORD mini). La taille mémoire occupée par un WSTRING est de n*code_caractère*16 + 16 bits

 

TIME / DATE

Ces types de données permettent de stocker des informations de temps ( TIME, DATE...).

Le type de données LTIME permet d'avoir une résolution de l'heure en nanosecondes

 

Types de données étendus de la norme IEC61131-3

BIT

Le type de donnée BIT est utilisé pour une valeur booléenne 0 /1. Il ne peut être utilisé que dans les blocs fonctionnels ou les structures de données mais n'occupe, contrairement à un BOOL, qu'un bit en mémoire.

 

Tableaux

Les tableaux de données permettent de stocker un nombre défini de variables du même type de données. le symbole d'un tableau est ARRAY.

 

DUT

Un DUT est une structure de données crée par l'utilisateur. Cette structure devient un nouveau type de données qui peut comprendre tous les autres types de données utilisables (BOOL, TIME, ARRAY, DUT...)

 

 

Résumé des principaux types de données

Type de donnée Valeurs mini Valeur maxi Occupation mémoire
BOOL FALSE(0) TRUE(1) 8 bit
BYTE 0 255 8 bit
WORD 0 65535 16 bit
DWORD 0 4294967295 32 bit
LWORD 0 264-1 64 bit
SINT -128 127 8 bit
USINT 0 255 8 bit
INT -32768 32767 16 bit
UINT 0 65535 16 bit
DINT -2147483648 2147483647 32 bit
UDINT 0 4294967295 32 bit
LINT -263 263-1 64 bit
ULINT 0 264-1 64 bit
REAL -3.402823e+38 3.402823e+38 32 bit
LREAL -1.7976931348623158e+308 1.7976931348623158e+308 64 bit
STRING   512  
WSTRING      
TIME 0 4294967295 (ms) 32 bit
TIME_OF_DAY (TOD) 0 (00:00:00:000) 4294967295 (23:59:59:999) 32 bit
DATE 0 (1970-01-01) 4294967295 (2106-02-07) 32 bit
DATE_AND_TIME (DT) 0 (1970-01-01, 00:00:00) 4294967295 (2106-02-07,06:28:15) 32 bit
LTIME 0 213503d23h34m33s709ms551us615ns 64 bit
       
       
BIT FALSE(0) TRUE(1) 1 bit

 

Exemples de déclaration de variables

VAR
i : INT;
xstart : BOOL;
dtLocalTime : DT;
axIN : ARRAY[1..100]of BOOL;
wTest : WORD;
END_VAR

 

Astuces pour le nommage des variables

Par convention, on essaye d'utiliser une adaptation de la "Notation Hongroise systems" afin de simplifier la lisibilité du programme. Codesys n'étant pas "Case Sensitive", c'est à dire qu'il ne fait pas de différence entre les majuscules et les minuscules dans les noms des variables, cette typographie peut être aussi utilisée.

Type de donnée Prefixe exemple
BOOL x xStart, xInput
BYTE b bCode, bType
WORD w wIN, wTest
DWORD dw dwIN, dwCode
LWORD lw lwValeurs, lwParametre
SINT si siTest, siValeur
USINT usi usiDonnee1
INT i iValeur, iSeuil
UINT ui uiIndex, uiStep
DINT di diValeur, diDivision
UDINT udi udiSeuil, udiResultat
LINT li liValeur, liCalculTempsTravail
ULINT uli uliMaxTravail, uliTempsMaintenance
REAL r rValeurMesure, rSeuilAlarme
LREAL lr lrDistanceTerreLune, lrDeplacement
STRING s sData, sNomFichierParametres
WSTRING ws wsNomUtilisateur
TIME t tStart, tStop
TIME_OF_DAY tod todDemarrage, todArretCycle
DATE d tNow, tDemain
DATE_AND_TIME dt dtLocalTime, dtUTC
LTIME lt ltCycleProcesseur
ARRAY a* (* : préfixe type dans le tableau) axIN, asDATA, awValeurAnalogiques
     
Programme plc PLC_PRG, PLC_REGU
Bloc fonctionnel fb fbSeuil, fbMoteur
fonction fc/ fu fuMaE, fuAlarme
DUT dut / typ dutMesure, dutMoteur

 

Les exemples proposés ne sont que des exemples et les prefixes utilisés ne le sont qu'à titre indicatifs. Rien ne vous oblige à suivre cette méthode.