Les variables directement représentées (DRV) dans les langages IEC61131-3 incluent dans leurs "adresses" un spécificateur de largeur de données: X
pour 1 bit, B
pour byte, W
pour word, D
pour dword, etc.IEC61131-3 variables directement représentées: largeur de données et type de données
En outre, lorsqu'un DRV est déclaré, un type de données CEI est spécifié, comme toute variable (BYTE, WORD, INT, REAL ...).
Je ne suis pas sûr de la façon dont ces choses sont liées. Sont-ils orthogonaux ou non? Peut-on définir une variable REAL avec une adresse W
(octet)? Quel serait le résultat attendu?
Un livre dit:
Attribution d'un type de données à un drapeau ou l'adresse E/S permet au système de programmation pour vérifier si la variable est en cours d'accès correctement. Pour par exemple, une variable déclarée par
AT %QD3 : DINT;
ne peut pas être accédée par inadvertance avecUINT
ouREAL
.
ce qui ne rend pas les choses plus claires pour moi. Prenons l'exemple de ce fragment (rappelons que W
signifie mot, à savoir 16 bits - et les deux DINT
et REAL
correspondent à 32 bits)
X AT %MW3 : DINT;
Y AT %MD4.1 : DINT;
Z AT %MD4.1 : REAL;
La première ligne mappe un IEC var 32-bits à un emplacement 16 bits . Est-ce légal? L'écriture/lecture serait-elle équivalente à une «distribution» ou quoi?
Les autres lignes déclarent deux variables CEI de 32 bits de type différent qui pointent vers la même adresse (je suppose que cela devrait être légal). Quel est le résultat attendu en lecture ou en écriture?