Présentation de la conversion de type de données
Introduction
Si vous combinez plusieurs opérandes dans une instruction, vous devez tenir compte de la
compatibilité de leur type de données. Il en va de même pour les affectations ou pour la
fourniture de valeurs à des paramètres de bloc. Si les opérandes sont de types différents, il
faut les convertir.
Il existe deux possibilités de conversion :
Conversion implicite
La conversion implicite est prise en charge par les langages de programmation CONT, LOG, SCL
et GRAPH. La conversion implicite n'est pas possible dans le langage de programmation LIST.
Conversion explicite
Vous utilisez une instruction de conversion explicite avant d'exécuter l'instruction proprement dite.
Remarque
Conversion de chaînes de bits en SCL
Toutes les chaînes de bits (BYTE, WORD, DWORD et LWORD) sont traitées dans des
expressions telles que les nombres entiers correspondants sans signe (USINT, UINT, UDINT
et ULINT). La conversion implicite de DWORD en REAL, par exemple, est donc exécutée
comme une conversion de UDINT en REAL.
Conversion implicite
Une conversion implicite est exécutée automatiquement lorsque les types de données des
opérandes sont compatibles. Le contrôle de compatibilité peut s'effectuer sur la base de
critères plus ou moins stricts :
Avec contrôle CEI (par défaut)
Si un contrôle CEI est paramétré, on applique les règles suivantes :
La conversion implicite de BOOL en d'autres types de données n'est pas possible.
Seuls les types de données REAL, BYTE, WORD, DWORD, DINT, INT, SINT, UDINT, UINT,
USINT, TIME, LDT, DTL, DT, TOD, WCHAR et CHAR peuvent être convertis implicitement.
La longueur de bits du type de données source ne doit pas dépasser la longueur de bits du
type de données cible. Il n'est par exemple pas possible de spécifier un opérande du type de
données WORD à un paramètre qui exige le type de données BYTE.
Sans contrôle CEI
Si aucun contrôle CEI n'est paramétré, on applique les règles suivantes :
La conversion implicite de BOOL en d'autres types de données n'est pas possible.
STEP 7 Professional V13 SP1
Présentation de la conversion de type de données
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=74495465995&Language=fr-FR&TopicId=58427923211 16/04/2017
Seuls les types de données REAL, LREAL, BYTE, WORD, DWORD, LWORD, SINT, INT,
DINT, LINT, USINT, UINT, UDINT, ULINT, TIME, LTIME, S5TIME, LDT, DTL, TOD, LTOD,
DATE, STRING, WSTRING, WCHAR et CHAR peuvent être convertis implicitement.
La longueur de bits du type de données source ne doit pas dépasser la longueur de bits du
type de données cible. Il n'est par exemple pas possible de spécifier un opérande du type de
données DWORD à un paramètre qui exige le type de données WORD.
Pour les paramètres d'entrée/sortie (InOut), la longueur de bits d'un opérande spécifié à un
paramètre doit correspondre à la longueur de bits programmée du paramètre respectif.
Remarque
Conversion implicite sans contrôle CEI
L'éditeur de programmation repère les opérandes convertis implicitement à l'aide d'un
rectangle gris. Un rectangle gris foncé signale qu'une conversion implicite sans perte
de précision est possible, p. ex. lorsque le type de données INT est converti en type
DINT. Un rectangle gris clair signale qu'une conversion implicite est possible, mais
que des erreurs peuvent apparaître pendant l'exécution. Si vous convertissez p. ex.
le type de données LINT en type DINT et qu'un débordement se produit, la sortie de
validation ENO est mise à "0".
Vous trouverez également des informations supplémentaires concernant le réglage du contrôle
CEI et la conversion implicite sous "Voir aussi".
Conversion explicite
Si les opérandes ne sont pas compatibles et qu'une conversion implicite n'est donc pas
possible, vous pouvez procéder à une conversion explicite. Vous pouvez à cet effet soit utiliser
les instructions de conversion de la Task Card "Instructions", soit insérer manuellement la
conversion dans le programme. Pour plus d'informations sur la syntaxe des fonctions de
conversion explicite, référez-vous à la section "Voir aussi".
Un dépassement éventuel est affiché au niveau de la sortie de validation ENO. Un
dépassement se produit lorsque p. ex. la valeur du type de données source dépasse celle du
type de données cible.
Pour plus d'informations sur la conversion explicite, référez-vous à "Voir aussi".
La figure suivante montre un exemple de conversion explicite de type de données :
Le bloc fonctionnel "Block" attend une variable de type "INT" au paramètre d'entrée "IN_INT".
La valeur de la variable "IN_DINT" doit donc d'abord être convertie de DINT en INT. Si la valeur
de la variable "IN_DINT" se trouve dans la plage de valeurs admissible du type de données
INT, une conversion a lieu. Dans le cas contraire, un dépassement est signalé. Cependant,
STEP 7 Professional V13 SP1
Présentation de la conversion de type de données
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=74495465995&Language=fr-FR&TopicId=58427923211 16/04/2017
même en cas de dépassement, une conversion se produit, mais les valeurs sont coupées et
la sortie de validation ENO est mise à "0".
Voir aussi
Conversion implicite
Conversion explicite
STEP 7 Professional V13 SP1
Présentation de la conversion de type de données
This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims
all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete
documentation can be found at:
/dokumentation/default.aspx?DocVersionId=74495465995&Language=fr-FR&TopicId=58427923211 16/04/2017
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !