Bool # Vrai / FauxByte # 8 bits non signéWord # 16 bits non signéDWord # 32 bits non signéInt # 16 bits signéDInt # 32 bits signéReal # Flottant 32 bitsTime # Durée (T#100ms, T#5s)String[20] # Chaîne de caractèresINT_TO_REAL(x) # Convertir entier → réelREAL_TO_INT(x) # Convertir réel → entierBOOL_TO_INT(x) # Bool → entierINT_TO_STRING(x) # Entier → texteTYPE UDT_Position : STRUCT X : Real; Y : Real; Z : Real;END_STRUCTPosActuelle.X := 10.5; # UtilisationPosActuelle.Y := 20.0;Array[0..9] of Int # Tableau de 10 entiersTableau[0] := 5; # AffectationTableau[5] := Tableau[0] + 10;TYPE UDT_Moteur : STRUCT Vitesse : Real; Couple : Real; EnMarche : Bool;END_STRUCTMoteur1.Vitesse := 1500.0;VAR compteur : Int; # Variable localeEND_VARDB_Global.Compteur := 10; # Accessible partoutFB_Moteur.EnMarche # Variable interne FBFB_Moteur.Vitesse # Stockée dans DB d’instanceVAR RETAIN CompteurCycles : DInt; # RemanentEND_VAR// Dans un DB : activer 'Retain' dans les propriétés// Utiliser la remanence pour :// - compteurs// - états machine// - valeurs de configuration// Ne jamais mettre trop de variables en remanence// Risque de ralentissement / surcharge mémoire// Accès symbolique :Moteur1.Vitesse := 1500.0;// Avantages :// - plus rapide// - plus sûr// - pas d’adresses absolues// Accès absolu :DB1.DBX0.0 := TRUE; # BitDB1.DBW2 := 100; # Word// À éviter sur S7‑1200/1500Capteur_Pression := I0.0; # MauvaisCapteurPression := DB_Sensors.Pressure; # Bon// Plus lisible// Plus sûr// Compatible avec l’accès optimisé// Indispensable pour les UDT// Toujours utiliser des UDT pour structurer les données// Ne jamais utiliser de variables globales inutiles// Préférer les FB avec mémoire interne// Utiliser des noms explicites : VitesseActuelle, PressionMax// Documenter les variables dans les propriétés TIA Portal// Activer l’accès optimisé pour tous les blocs