Vous êtes sur la page 1sur 11

Blocs de données

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.1

Sommaire Page
Objectifs du chapitre ......................................................................................................................... 2
Blocs de données (DB) ..................................................................................................................... 3
Types de données dans STEP 7 ..................................................................................................... 4
Types de données élémentaires dans STEP 7 ................................................................................ 5
Types de données complexes .......................................................................................................... 6
Création d'un bloc de données ......................................................................................................... 7
Entrée, enregistrement, chargement et visualisation d'un bloc de données .................................... 8
Valeur initiale, valeur en cours, initialisation, rémanence ................................................................. 9
Adressage des éléments de données .............................................................................................. 10
Accès aux éléments de données ..................................................................................................... 11
Exercice 1 : Remplacer les variables de mémento par des variables de DB ................................... 12
Exercice 2 : Relier les variables WinCC flexible aux variables de DB ............................................. 13
Informations complémentaires ........................................................................................................ 14
Exemple de structure homogène (ARRAY) ...................................................................................... 15
Exemple de structure non homogène (STRUCT) ............................................................................ 16
Paramétrage de la priorité de l'opérande (mnémonique/valeur absolue) ........................................ 17

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 1 Blocs de données
Objectifs du chapitre

A l'issue du chapitre, vous allez...

... connaître l'utilité des blocs de données globaux

... connaître les types de données élémentaires et complexes

... savoir visualiser un bloc de données

... connaître les possibilités d'adressage de variables des


blocs de données

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.2

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 2 Blocs de données
Blocs de données (DB)

Tous les blocs


peuvent y accéder

Fonction
OB1
FC10
Données globales

DB20
Fonction
FC20

DB d'instance
associé à FB1

Bloc Données
fonctionnel d'instance
FB1 DB5

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.3

Généralités Les blocs de données servent à enregistrer des données utilisateur. Les blocs
de données occupent de l'espace dans la mémoire utilisateur de la CPU. Les
blocs de données contiennent des variables (par ex. des valeurs numériques)
nécessaires à l'exécution du programme utilisateur.
Le programme utilisateur peut accéder aux données d'un bloc de données par
des opérations sur bit, sur octet, sur mot ou sur double mot. L'accès peut se
faire en symbolique ou en absolu.

Domaine Selon leur contenu, les blocs de données peuvent être employés différemment
d'application par l'utilisateur. On distingue :
les blocs de données globaux : ils contiennent des informations auxquelles
on peut accéder à partir de tous les blocs de code du programme
utilisateur.
les les bloc de données d instance : ils sont toujours associés à un FB. Les
données de ce DB ne doivent être traitées que par le FB correspondant.
Les bloc de donnéesd'instance sont traités plus en détail au chapitre
"Fonctions et blocs fonctionnels".

Création de DB Les DB globaux sont créés soit via l'éditeur de programme, soit d'après un
"type de données utilisateur" défini au préalable.
Les blocs de données d'instance sont créés à l'appel du bloc fonctionnel.

Registres La CPU possède deux registres de blocs de données, les registres DB et DI,
permettant d'ouvrir deux blocs de données simultanément.

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 3 Blocs de données
Types de données dans STEP 7

Types de données binaires (BOOL, BYTE, WORD, DWORD,


Types de CHAR)
données
élémentaires Types de données arithmétiques (INT, DINT, REAL)
(jusqu'à 32 bits)
Types d'heure (S5TIME, TIME, DATE, TIME_OF_DAY)

Type d'heure (DATE_AND_TIME)


Types de données
complexes Tableau (ARRAY)
(pouvant dépasser 32 bits)
Structure (STRUCT)
Chaîne de caractères (STRING)

Types de données utilisateur Type de données UDT


(pouvant dépasser 32 bits) (User Defined DataType)

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.4

Généralités Les variables servent à enregistrer des données. Le type de données d'une
variable détermine la place mémoire qu'elle requiert, sa plage de valeurs
admissibles et la représentation de sa valeur dans l'éditeur. Le type de
données détermine également les opérations possibles pour traiter la variable.

Types de données Les types de données élémentaires sont définis selon CEI 61131-3. Ils ont
élémentaires toujours une longueur inférieure ou égale à 32 bits, ils peuvent être chargés
entièrement dans les accumulateurs du processeur S7 et traités par des
opérations STEP 7 élémentaires.

Types de données Les types de données complexes contiennent des structures de données
complexes qui peuvent être constituées de types de données élémentaires et/ou
complexes.
Les types de données complexes ne sont disponibles que pour déclarer des
variables dans des blocs de données globaux et des variables locales (TEMP,
STAT) ou des paramètres (IN, OUT et INOUT) dans des blocs.
Les opérations élémentaires (comme U, O, L, T, +I) ne permettent pas de
traiter entièrement les variables d'un type de données complexe, mais
seulement leurs différents composants de type élémentaire.
La bibliothèque standard STEP 7 contient une série de blocs CEI pour le
traitement des types de données complexes.

Types de données Les UDT sont des modèles servant à déclarer des variables de type de
utilisateur (UDT) données complexe ou des variables de structure. Les UDT sont créés avec
l'éditeur de blocs de données et contiennent une structure de données
constituée de types de données élémentaires et/ou complexes. Lors de la
déclaration d'une variable selon le type de données UDTx, une variable de
structure est créée dont la structure de données interne est définie par UDTx.
Les UDT peuvent servir à déclarer des variables dans les blocs de données
globaux et des variables locales (TEMP, STAT) ou des paramètres (IN, OUT et
INOUT) dans les blocs.

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 4 Blocs de données
Types de données élémentaires dans STEP 7

Type de données Taille (en bits) Constantes Variables

BOOL 1 0 ou 1 E1.0
BYTE 8 B#16#A9 MB70
WORD 16 W#16#12AF MW72
DWORD 32 DW#16#ADAC1EF5 AD40
CHAR 8 'w' DBB4

S5TIME 16 S5T#5s_200ms MW30

INT 16 123 #valeur


DINT 32 L#65539 MD80
REAL 32 1.2 ou 34.5E-12 DBD60

TIME 32 T#2D_1H_3M_45S_12MS AD44


DATE 16 D#1993-01-20 MW32
TIME_OF_DAY 32 TOD#12:23:45.12 #heure

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.5

BOOL, BYTE, WORD Les variables du type de données BOOL représentent un bit, les variables de type
DWORD, CHAR de données BYTE, WORD, DWORD sont des séquences binaires de 8, 16 ou
32 bits. Les bits ne sont pas évalués individuellement dans ces types de données.
Les nombres BCD et la valeur de comptage utilisée en association avec une
fonction de comptage ainsi que le type de données CHAR, qui représente un
caractère dans la représentation ASCII, sont des formes particulières de ces types
de données.

S5TIME Les variables du type de données S5TIME sont utilisées pour définir les valeurs de
temps dans les temporisateurs (temporisation de type S5). La durée est indiquée
en heures, minutes, secondes ou millisecondes. Les valeurs de temps peuvent
être entrées avec un caractère de soulignement (1h_4m) ou sans (1h4m).
Les fonctions FC33 et FC40 de la bibliothèque convertissent les formats S5TIME
en TIME ou TIME en S5TIME.

INT, DINT, REAL Les variables avec ces types de données représentent des nombres avec lesquels
il est possible d'effectuer des opérations arithmétiques.

TIME Une variable du type de données TIME (durée) occupe un double mot. Cette
variable est utilisée par exemple pour définir des valeurs de temps dans les
temporisations CEI. Le contenu d'une variable est interprété comme un nombre
DINT en millisecondes et peut ainsi être positif ou négatif
(par exemple : T#1s=L#1 000, T#24d20h31m23s647ms = L#2147486470).

DATE Une variable du type de données DATE (date) est stockée dans un mot comme un
nombre entier sans signe. Le contenu de la variable correspond au nombre de
jours écoulés depuis le 01.01.1990 (par exemple : D#2003-10-31 = W#16#13BB).

TIME_OF_DAY Une variable du type de données TIME_OF_DAY (heure du jour) occupe un


double mot qui contient le nombre de millisecondes écoulé depuis le début du jour
(0:00 h) sous forme de nombre entier sans signe (par exemple :
TOD#23:59:59.999 = DW#16#0526 5B77).

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 5 Blocs de données
Types de données complexes
Type de données Taille (en bits) Exemple
DATE_AND_TIME 64 DT#01-08-24-12:14:55:234-1
(date et heure)

STRING 8 * (nombre de 'Ceci est une chaîne'


(chaîne de caractères avec caractères +2) 'SIEMENS'
254 caractères maxi)

ARRAY définie par Valeurs de mesure : ARRAY[1..20]


(tableau, groupement de l'utilisateur INT
composants du même
type de données)

STRUCT définie par Moteur : STRUCT


(structure, groupement de l'utilisateur Vitesse : INT
composants de types Courant : REAL
de données différents) END_STRUCT

UDT UDT comme bloc UDT élément tableau


(User Defined Data Type = définie par
type de données utilisateur, l'utilisateur STRUCT Entraîn. : ARRAY[1..4]
"modèle" à partir de types Vitesse : INT UDT1
de données élémentaires Courant : REAL
ou complexes END_STRUCT

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.6

Types de données Les types de données complexes (tableaux et structures) sont créés en
complexes regroupant des types de données élémentaires ou complexes.
L'utilisateur a ainsi la possibilité de créer des types de données adaptés à ses
besoins avec lesquels il peut structurer et manipuler sous forme symbolique de
grandes quantités de données.
Les types de données complexes ne peuvent pas être traités directement dans
leur intégralité (taille supérieure à 32 bits) avec des opérations STEP 7, le
traitement ne peut se faire que composant par composant.
Certains types de données complexes sont prédéfinis : la longueur du type de
données DATE_AND_TIME étant égale à 64 bits. Par contre, la longueur des
types de données ARRAY (tableau), STRUCT (structure) et STRING (chaîne
de caractères) est définie par l'utilisateur.
Les variables ayant un type de données complexe ne peuvent être déclarées
qu'à l'intérieur de blocs de données globaux et comme paramètres ou variables
locales de blocs de code.

Type de données Le type de données UDT est une structure définie par l'utilisateur et mémorisée
utilisateur sous forme de bloc UDT (UDT1 à UDT65535) ; cette structure peut être utilisée
comme modèle pour créer des variables de même type.
Cette solution évite des opérations de frappe superflues, lors de la saisie d'un
bloc de données, lorsqu'une même structure est utilisée plusieurs fois.

Exemple Vous avez besoin de la même structure 10 fois dans un bloc de données.
Définissez d'abord la structure, puis enregistrez-la, par exemple en tant que
UDT 1.
Dans le DB, définissez une variable Adresses" sous forme de tableau avec
10 éléments du type UDT1 :
Adresses : array[1..10]
UDT 1
Vous avez ainsi créé 10 zones de données avec la structure définie dans l'UDT
1 sans avoir à les saisir manuellement.

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 6 Blocs de données
Création d'un bloc de données

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.7

Création d'un DB Vous pouvez insérer un nouveau bloc de données dans le SIMATIC Manager,
comme indiqué sur la figure, en sélectionnant tout d'abord le dossier Blocs
dans le programme S7, puis en choisissant les commandes de menu
indiquées.
Il est également possible de créer un nouveau bloc de données dans l'éditeur
CONT/LIST/LOG via les commandes de menu suivantes :
Fichier Nouveau définir projet et nom du projet sélectionner le dossier
Blocs du programme S7 nom de l'objet : DB 99

DB global Les blocs de données globaux servent à stocker les données globales, c'est-à-
dire les données générales auxquelles tout bloc de code (OB, FC, FB) doit
pouvoir accéder.
L'utilisateur doit éditer lui-même les blocs de données globaux, en y déclarant
les variables requises pour le stockage des données.

DB d'instance Les blocs de données d'instance sont les "mémoires personnelles" des blocs
fonctionnels (FB). Les paramètres et les variables statiques d'un FB sont
gérées dans son DB d'instance.
Par principe, les blocs de données d'instance ne sont pas édités par
l'utilisateur, mais générés par l'éditeur (voir chapitre "Fonctions et blocs
fonctionnels").

DB du type L'éditeur peut également générer des blocs de données d'un type défini par
l'utilisateur User Defined Typ (UDT). Le modèle en est l'UDT que l'utilisateur
doit éditer au préalable de la même façon qu'un bloc de données.
L'UDT peut servir de modèle pour créer d'autres blocs de données et / ou de
manière générale pour déclarer des variables et des paramètres de bloc.

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 7 Blocs de données
Entrée, enregistrement, chargement et visualisation d'un bloc de
données

Vue des déclarations

Vue des données

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.8

Vue des déclarations Les blocs de données sont édités ou déclarés dans la "Vue des déclarations".
(entrée des variables) L'utilisateur y déclare les variables requises pour mémoriser les données. Les
variables sont créées par ligne, elles-mêmes divisées en colonnes.

Colonnes Les colonnes possèdent la signification suivante :


Adresse : est inscrite par l'éditeur de programme et correspond à
l'adresse du premier octet occupé par la variable.
Nom : nom symbolique de la variable
Type : type de données (sélection avec le bouton droit de la souris :
INT, REAL, etc.)
Valeur initiale : valeur en cours affectée à la variable à la première édition.
Sans indication, l'éditeur affecte automatiquement la valeur 0.
Commentaire : description de la variable (facultatif).

Enregistrer L'icone de disquette permet d'enregistrer le bloc de données dans le projet S7.

Charger Tout comme les blocs de code, les blocs de données doivent être chargés dans
la CPU.

Vue des données Vous pouvez visualiser en ligne les valeurs courantes des variables dans le bloc
(visualiser DB) de données (valeurs des variables dans la CPU). Pour cela, vous devez d'abord
passer dans la "Vue des données" via le menu "Affichage", puis activer la fonction
au moyen de l'icône de lunettes.

Initialiser le DB Lorsqu'un bloc de données est initialisé, les valeurs en cours des variables sont
remplacées par les valeurs initiales. Ceci est également nécessaire lorsque des
valeurs initiales modifiées ultérieurement doivent être validées en tant que
valeurs en cours.
Commande de menu : Affichage Vue des données Edition Initialiser bloc
de données.

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 8 Blocs de données
Valeur initiale, valeur en cours, initialisation, rémanence

Mém. de chargement Mémoire de travail

DB CPU avec
DB
Valeurs initiales pro-
DB + val. en cours Valeurs
gramme
(avec types en cours
de données) STEP 7

Valeurs Charger
dans la PG
initiales

Initialiser le Le DB est rémanent


bloc de données jusqu'au prochain transfert
PG -> CPU
+ valeurs
en cours A chaque démarrage de la
CPU (c.-à-d. à chaque passage
de STOP en RUN), les
données du DB sont remises à
l'état au chargement

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.9

Valeur initiale Vous pouvez indiquer une valeur initiale lors de la première entrée d'un bloc de
données ; elle est validée au premier enregistrement du DB.
Si vous n'entrez pas de valeur initiale, la valeur 0 est entrée automatiquement.
Pour éditer la valeur initiale, vous devez activer la vue des déclarations.

Valeur en cours Il s'agit de la valeur actuelle dans le bloc de données. La valeur en cours peut
être modifiée hors ligne ou écrasée dans la CPU par le programme. Si vous
chargez un bloc de données de la CPU dans la console de programmation,
vous obtenez le bloc de données avec ses valeurs en cours.

Initialisation Cette fonction permet de remplacer les valeurs en cours par les valeurs
initiales indiquées à la création du bloc de données. Pour cela, activez la vue
des données et utilisez la commande Edition Initialiser bloc de données.

Rémanence Retain : Les valeurs mémorisées dans les blocs de données sont
conservées jusqu'au prochain effacement général.
Non-Retain : Cette option suppose que la CPU supporte la propriété Retain
des DB. Un bloc de données avec la propriété "Non - Retain"
n'est pas stocké dans la mémoire rémanente d'une telle CPU
(par ex. la CPU 317 V2.1) et il sera donc initialisé aux valeurs
de chargement après chaque mise hors sous tension ou
après chaque passage de STOP à RUN de la CPU.
Un DB possédant la propriété "Non-Retain" occupe certes la mémoire de
travail habituelle, mais n'occupe plus de mémoire rémanente. Lors d'un
démarrage à froid (CPU 318 / 319 ou S7-400), tous les blocs de données sont
remis à leurs valeurs initiales.

Remarque Pour plus d'informations sur les mémoires des CPU S7, reportez-vous au
chapitre "Documentation, sauvegarde et archivage".

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 9 Blocs de données
Adressage des éléments de données

8 bits
7 0
Octet de données 0 DBB 0
Octet de données 1 DBW 0
Octet de données 2
DBD 0
Octet de données 3
DBX 4.1

DBD 2000

DBW 2002
DBB 2003

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.10

Généralités L'adressage des éléments de données d'un bloc de données se fait octet par
octet, comme pour les mémentos.

Vous pouvez charger et transférer des octets de données, des mots de


données ou des doubles mots de données. Dans le cas des mots de données,
entrez la première adresse d'octet pour l'opération (par exemple L DBW 2),
2 octets sont ensuite chargés à partir de cette adresse.
Dans le cas des doubles mots, 4 octets sont chargés à partir de l'adresse
d'octet indiquée.

Nombre, longueur Le nombre de blocs de données dépend de la CPU utilisée.


Pour plus d'informations, consultez notre catalogue électronique CA 01.

Remarque En cas d'accès à des éléments de données ou à des blocs de données


inexistants, la CPU s'arrête si aucun OB d'erreur n'a été programmé.

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 10 Blocs de données
Accès aux éléments de données

DB 18 "Pieces" Accès Accès entièrement qualifié


classique
Adr. Nom Type absolu symbolique
0.0 Nbre_pieces INT AUF "Pieces" L "Pieces".Nbre_
ou L DB18.DBW0 ou
L DBW0 pieces
2.0 Memento_front BOOL
4.0 Nombre INT
AUF DB 18 U "Pieces".Memento_
ou U DB18.DBX2.0 ou
U DBX2.0 front
6.0 Poids[1] REAL
AUF "Pieces"
ou T DB18.DBW4 ou T "Pieces".Nombre
T DBW 4

AUF DB 18
10.0 Poids[2] REAL ou L DB18.DBD10 ou L "Pieces".Poids[2]
L DBD 10

SIMATIC S7 Date : 16.03.2010


SITRAIN Formation
Automatisation et entraînements
Siemens AG 2010. All rights reserved. Fichier : PRO1_11F.11

Accès Pour l'accès classique à un bloc de données (habituel dans le monde S5),
classique il faut ouvrir le bloc explicitement avant l'accès proprement dit. Cette ouverture,
sous forme absolue ou symbolique, se fait avec l'instruction AUFDB 18 ou
AUF "Pieces" (voir exemple). Le bloc de données ouvert jusque-là est
automatiquement refermé. Ensuite, il est possible d'accéder aux différents
éléments de données par bits (DBX...), octets (DBB...), mots (DBW...) ou
doubles mots (DBD...) sans être obligé de spécifier un bloc de données.
Inconvénients :
Avant d'accéder à des éléments de données, il faut s'assurer que le bloc de
données ouvert est le bon.
Seul l''accès absolu est possible, et par conséquent c'est le programmeur
qui doit "retrouver" la valeur requise dans le bloc de données. Si c'est
DBW5 qui est chargé dans l'exemple ci-dessus, la valeur chargée ne sera
dans ce cas ni Nombre, ni Poids[1], mais une valeur incorrecte.
Les accès absolus limitent considérablement les possibilités de correction
et la lisibilité du programme.

Accès entièrement L'accès entièrement qualifié comprend l'ouverture du bloc de données et


qualifié ... donc la fermeture de celui ouvert précédemment. Dans ce cas, l'accès peut
être absolu ou symbolique :

... absolu L'ouverture du bloc de données et l'accès à l'élément de données sont absolus
et combinés en une instruction. Les inconvénients sont les mêmes que ceux
déjà décrits pour l'accès classique.

symbolique Un accès symbolique à une variable dans un bloc de données n'est possible
que sous forme entièrement qualifiée et symbolique.

SITRAIN Formation ST-PRO1


Automatisation et entraînements Page 11 Blocs de données

Vous aimerez peut-être aussi