Types de données et variables de STEP 7
Signification de types de données et variables Les types de données caractérisent les propriétés fondamentales de données zone continue: p.ex. vitesse_réelle propriété "oui/non": p.ex. défaut Le type de données détermine: la plage des valeurs admissible (INT: -32 768 ... +32 767, etc.) les opérations admissibles (opérations arithmétiques : +, -, etc.) abstraction de la représentation de base des bits dans la mémoire
vitesse _réelle: REAL consigne_vitesse : REAL défaut: BOOL libération: BOOL
Propriétés et déclaration de variables Par la déclaration d'une variable, les propriétés suivantes sont déterminées: nom symbolique type de données plage de validité Variables peuvent être déclarées: dans la liste globale des symboles (type de données élémentaire) dans la partie déclarative d'un bloc de données globales (tous les types de données) dans la partie déclarative d'un bloc logique (OB, FB et FC)
point_mesure: ARRAY[1..10] point_mesure[1]: Real point_mesure[2]: Real point_mesure[3]: Real
point_mesure[10]: Real
Aperçu des types de données dans STEP 7
• Types de données bit (BOOL, BYTE, WORD, DWORD, CHAR) CHAR) •
Types de données élémentaires (jusqu'à 32 bits)
• Types de temporisations (S5TIME, TIME, DATE, DATE, TIME_OF_DAY) TIME_OF_DAY) • Types de données arithmétiques (INT, DINT, DINT, REAL)
• Types de date et heure (DATE_AND_TIME) (DATE_AND_TIME) Types de données complexes (supérieur à 32 bits)
• Tableau able ablea au u (ARRAY) (ARR AY) • Structure (STRUCT) • Chaîne de caractères (STRING)
Types de données utilisateur (supérieur à 32 bits)
Type de données UDT (User Defined Type)
Types de données élémentaires dans STEP 7
Mot-clé
Largeur (en bits) Exemple d'une constante de ce type
BOOL BYTE WORD DWORD CHAR
1 8 16 32 8
1 ou 0 B#16#A9 W#16#12AF DW#16#ADAC1EF5 CHAR
S5TIME
16
S5T#5s_200ms
INT DINT REAL
16 32 32
123 65539 ou L#-1 REAL
TIME DATE TIME-OF-DAY
32 16 32
T#2D_1H_3M_45S_12MS D#200-07-21 TOD#12:23:45.12
Signification de types de données complexes Moteur: STRUCT
Permet de structurer les données: adaptée à l'énoncé avec type de données "correct"
consigne_vitesse: vitesse_réelle:
REAL
libération:
BOOL
défaut:
BOOL
END_STRUCT
Forme compacte de la transmission de données lors de l'appel d'un bloc: "beaucoup" de données peuvent être transmises dans un paramètre permet la programmation structurée les blocs "communiquent" uniquement par la structure des paramètres bloc réutilisable
in entrainement out ...
UDT1 ... in moteur UDT1 out ... ...
. . CALL "régulateur" 5 moteur:= #entrainement . .
. . U #moteur.libération . .
REAL
Types de données complexes dans STEP 7
Mot-clé DATE_AND_TIME (date et heure) STRING (chaîne de caractères avec max. 254 caractères) ARRAY (tableau, groupe de composantes du même type de données) STRUCT (structure, groupe de composantes de différent type de données) UDT (User Defined data Type = type de données utilisateur, "modèle" de type de données élémentaires ou complexes)
Largeur (en bits) Exemple 64 8 * (nombre des caractères +2)
DT#00-07-22-12:14:55.0 'Ceci est n string' 'SIEMENS'
défini par l'utilisateur
Valeurs meurées: ARRAY[1..20] INT
défini par l'utilisateur
Moteur: STRUCT Vitesse de rotation: INT Courant: REAL END_STRUCT UDT comme bloc
défini par l'utilisateur
comme élément de tableau
STRUCT Vitesse de rotation: INT Entrainement: ARRAY[1..4] Courant: REAL UDT1 END_STRUCT
Types de paramètres dans STEP 7
Mot-clé
Largeur (en bits)
TIMER
16
Temps_contact: TIMER . SI #temps_contact
16
Nbre_pieces_finies: COUNTER . LC Nbre_pieces_finies
16
Retour: BLOCK_FB . UC #Retour
POINTER
48
Mesure: POINTER . L P##Mesure
ANY
80
Valeurs_mesurees: ANY . L P## Valeurs_mesurees
COUNTER BLOCK_FB BLOCK_FC BLOCK_DB BLOCK_SDB
Exemple
Zones de variables
Mémentos MIS
DBz
MIE
DBy DBx
Périphérie
Zones d'automate "classiques"
Pile des données locales
Blocs de données
.
.
.
Fonctionnement de la pile des données locales OB1
FB1
. . CALL FB1 . .
. . CALL FC5 . .
1
4
. . CALL FC10 . .
LD pour OB1
2
3
FC10
5
Occupation de la pile L pour OB1
FC5
5
6
LD pour OB1
LD pour OB1
LD pour OB1
LD pour FB1
LDpour LD pour FB1 FB1
LD pour FB1
LD pour OB1
LD pour OB1
LD pour OB1
LD pour FC10 LD pour FC5
libre
libre
libre libre
p.ex. 256 octets Début de cycle LD = données locales
1
2
libre
libre libre
3
4
5
6
Exemple: utilisation des données locales par l'éditeur CONT/LOG Ramification en CONT
Ramifications
Représentation en LIST
Variables Variables auxiliaires de la pile des données locales
Blocs de données (DB) Accès de tous les blocs OB1
Fonction FC10
Données globales DB20
Fonction FC20
DB d'instance pour FB1 Bloc de fonction FB1
Données d'instance DB5
Le type de données: ARRAY ARRAY (tableau): Groupe de composantes du même type de données
Point_mesure: ARRAY[1..10] ARRAY[1..10] Point_mesure[1]: Real Point_mesure[2]: Real Point_mesure[3]: Real . .
Déclaration:
Point_mesure[10]:Real Point_mesure[10]:Real • unidimensionnel: Nom de tableau : ARRAY[ min_index .. ..max_index ] OF type de données; • multidimensionnel: Nom de tableau : ARRAY[ min_index1..max_index1,min_index2 .. ..max_index2 ] OF type de données;
Exemples: Déclaration d'une variable: • unidimensionnel: • multidimensionnel:
valeur_mesuree : resultat :
ARRAY[ 1..10 ] OF REAL; ARRAY[ 1..5 ,2 .. ..8 ] OF INT;
Accès à une variable: • L #valeur_mesuree[5] • T #resultat[2,5]
// Charger le 5ième élément de l'ARRAY l'ARRAY valeur_mesuree dans l'ACCU1
Déclaration et initialisation de tableaux (ARRA (ARRAY) Y) DB5 "Vue de déclaration"
DB5 "Vue de données"
Sauvegarde de variables ARRAY dans la mémoire Tableaux unidimensionnel unidimen sionnels s
Tableaux multidimensionn multidi mensionnels els
Type de données BOOL 7
Octet n1)
6
5
4
3
2
1
0
8 7 6 5 4 3 2 1
Octet n+1 non affecté 12 11 11 10 9
Type de données BYTE, CHAR Octet m
Octet 1
Octet m+1
Octet 2
Octet m+2
Octet 3
. . .
Type de données WORD, DWORD,... Octet n1)
Octet n+2 1) n
= paire
Octet n1)
Octet 1.1.1
Octet n+1
Octet 1.1.2
Octet n+2
Octet 1.2.1
. .
.
Octet 1.2.2 Octet 1.3.1 Octet 1.3.2 Octet 2.1.1 Octet 2.1.2 Octet 2.2.1 Octet 2.2.2
Mot 1
Octet n+1 Octet n+2
Exemple. ARRAY[1..2,1..3,1..2] OF BYTE
Byte 3 Mot 2
. . .
Octet 2.3.1 Octet 2.3.2
Le type de données: STRUCT STRUCT (Structure): Groupe de composantes de différents types de données
MoteuCommande: STRUCT Consigne_Vitesse: REAL Vitesse_Reelle:
Déclaration: STRUCT NomStructure : NomComp1: type de données; NomComp2 : type de données; ... END_STRUCT
Exemple: Déclaration d'une variable: • MoteurCommande: Vitesse_Reelle Consigne_Vitesse Liberation ... Defaut • END_STRUCT;
STRUCT : REAL; : REAL; : BOOL; : BOOL;
Liberation:
BOOL
Defaut:
BOOL
END_STRUCT
Accès à la variable S #MoteurCommande.Liberation L #MoteurCommande.Vitesse_Réelle T #MoteurCommande.Consigne_Vitesse
REAL
Déclaration de STRUCTs Exemple: Déclaration de tableau - structure - tableau DB6 "Vue de déclaration"
DB6 "Vue de données"
Sauvegarde de variables STRUCT dans la mémoire Structure avec types de données élémentaires 7
6
5
4
3
Structure avec types de données complexes 2
6 5 4 3 2 1
Octet n+1
Octet perdu
Octet n+2
Octet 1
Octet n+3
Octet 2
Octet n+4
Octet 3
Octet n+5
Octet perdu
Octet n+6
6 5 4 3 2 1
Octet n+7
Octet perdu
. .
.
Mot 1
Composantes avec type de données élémentaire
Composantes avec type de données ARRAY ARRAY
Limite du mot Composantes avec type de données STRUCT
Mot 2
. .
Limite du mot
Limite du mot
Octet n+9
= paire
0
Octet n1)
Octet n+8
1) n
1
.
. .
.
Types de données utilisateur: UDT Types de données utilisateur UDT:
Création d'un modèle pour utilisation ultérieure lors de déclarations valable pour tous les blocs du programme
Exemple:
Définition d'un nouveau type de données (structure): UDT1 STRUCT Consigne_Vitesse : REAL; ... Vitesse_Réelle : REAL; UDT1: STRUCT Libération : BOOL; Défaut : BOOL; Consigne_Vitesse: END_STRUCT; Vitesse_Reelle: Déclaration de variables: Liberation: BOOL Moteur_1: UDT1; Defaut: BOOL Moteur_2: UDT1; END_STRUCT Accès aux variables: L #Moteur_1.Vitesse_Réelle
REAL REAL
Utilisation de UDTs UDT5
FC23
Le type de données: DATE_AND_TIME Constitution: Octet n1)
Année (90 ... 89)
Mois (01 ... 12)
Octet n+1
Octet n+2
Jour (01 ... 31)
Heure (00 ... 23)
Octet n+3
Octet n+4
Minute (00 ... 59)
Secondes (00 ... 59)
Octet n+5
Octet n+4
Millisecondes (000 ... 999)
Jour de semaine Pctet n+7 (1..7)
Toutes les valeurs sont s ont sauvegardées dans le format BCD
Préréglage des variables:
1=Dimanche 2=Lundi 3=Mardi 4=Mercredi 5=Jeudi 6=Vendredi 7=Samedi
DT#Année-Mois-Jour-Heures:Minutes:Secondes.[Millisecondes] Exemple: DT#2000-07-14-23:00:00:00 1) n
= paire
Traitement par des fonctions de la bibliothèque bibliothèqu e IEC
Fonctions pour le traitement de variables DT Bibliothèque IEC dans Standard Library
FC1 (AD_DT_TM): La fonction FC 1 additionne une durée (format TIME) et une date/heure (format DT) et fournit comme résultat une nouvelle date/heure (format DT).
FC34 (SB_DT_DT): La fonction FC 34 soustrait deux date/heure (l'une de l'autre) (format DT) et fournit comme résultat une durée (format TIME).
FC35 (SB_DT_TM): La fonction FC 35 soustrait une durée (format TIME) d'une date/heure (format DT) et fournit comme résultat une nouvelle date/heure (format DT).
FC3 (D_TOD_DT): La fonction FC 3 regroupe regroup e les formats de données DATE et TIME_OF_DAY TIME_OF_DAY (TOD) et les convertit dans le format de données DATE_AND_TIME DATE_AND_TIME (DT).
FC6 (DT_DA (D T_DATE): TE): La fonction FC 6 extrait le format de données DATE du format DATE_AND_TIME.
FC7 (DT_DAY): (DT_DAY): La fonction FC 7 extrait le jour de la semaine du format DATE_AND_TIME.
FC8 (DT_TOD): La fonction FC 8 extrait le format de données donnée s TIME_OF_DAY TIME_OF_DAY du format DATE_AND_TIME.
Fonctions de comparaison pour DT#variables: FC9 (EQ_DT), FC12 (GE_DT), FC14 (GT_DT), FC18 (LE_DT), FC23 (LT_DT), (LT_DT), FC28 (NE_DT)
Le type de données: STRING Variables du type STRING (chaîne de caractères):
Type de données STRING représente une chaîne de caractères comprenant jusqu'à 254 caractères Application: préparation de textes de messages Déclaration: 'texte d'initialisation' NomString: STRING[Nbremax]: (variable string jusqu'à Nbremax caractères, Nbremax : 0... 254) 'texte d'initialisation' NomString : STRING: (variable string jusqu'à 254 caractères)
Exemple:
Déclaration de variables: Message_defaut : STRING
Avertissement : STRING[50]
'Défaut du moteur_4'
''
Traitement: Accès élémentaires: L #message_defaut[5] (charge le 5ième caractère de message_defaut ) Traitement au moyen de FCs de la bibliothèque IEC
Sauvegarde de variables STRING dans la mémoire Exemple:
1) n
Déclaration avec initialisation 'TOTO' Prénom: STRING[8]: 'TOTO' Sauvegarde de la variable STRING "prénom"
Octet n1)
Longueur max = 8
Octet n+1
Longueur actuelle = 4
Octet n+2
1. caractère = 'T'
Octet n+3
2. caractère = 'O'
Octet n+4
3. caractère = 'T'
Octet n+5
4. caractère = 'O'
Octet n+6
B#16#00
Octet n+7
B#16#00
Octet n+8
B#16#00
Octet n+9
B#16#00
= paire
. . .
Indique le nombre max. de caractères pouvant être sauvegardés Indique le nombre de caractères effectifs
L'information sur le nombre max. de caractères pouvant être sauvegardés, ou sur la longueur actuelle est traitée par la fonction de bibliothèque IEC.
Fonctions pour le traitement de variables STRING Bibliothèque IEC dans Standard Library
FC2 (CONCA ( CONCAT): T): La fonction FC2 réunit deux variables STRING en une chaîne de caractères. FC4 (DELETE): La fonction FC4 efface dans une chaîne de caractères L caractères à partir du P-ième caractère. FC11 (FINF): La fonction FC11 recherche la position de la deuxième ch aîne de caractères incluse dans la première. FC17 (INSERT): La fonction FC17 insère la chaîne de caractères au paramètre IN2 dans la chaîne de caractères au paramètre IN1 derrière le P-ième caractère. FC20 (LEFT): La fonction FC20 fournit les premiers L caractères d'une chaîne de caractères. FC21 (LEN): La fonction FC21 émet la longueur actuelle d'une chaîne de caractères (nombre de caractères valables). FC26 (MID): La fonction FC26 fournit la partie centrale d'une chaîne de caractères. FC31 (REPLACE): La fonction FC31 remplace L caractères de la première chaîne de caractères (IN1) à partir du P-ième caractère (inclus) par la deuxième chaîne de caractères (IN2). FC32 (RIGHT): La fonction FC32 fournit les derniers L caractères d'une chaîne de caractères. Fonctions de comparaison pour variables STRING: FC10 (EQ_STRING), FC13 (GE_STRING), FC15 (GT_STRING), FC19 (LE_STRING), FC24 (LT_STRING), (LT_STRING), FC29 (NE_STRING)
Exercice 5.1: Utilisation de types de données complexes UDT99 "Moteur"
DB51 "Rouleaux_Moteurs" "Rouleaux_Moteurs"
...
Exercice 5.2: Accès à des types de données complexes
Exercice optionnel 5.3: Lecture de l'heure avec SFC1 (READ_CLK)
SFC1 EN
ENO RET_VAL
??.?
CDT
??.?