2015-11-16 1 views
0

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 avec UINT ou REAL.

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?

Répondre

2

Comme tout dans le monde de l'automate, c'est tous les fournisseurs et modèles spécifiques, malheureusement.

Le compilateur Siemens ne vous permettait pas de déclarer l'adresse réelle avec un composant binaire comme MD4.1, il ne permettait que MD4 et la longueur de données devait être double mot, MB4 n'était pas autorisé.

La lecture ne serait pas équivalente à la distribution. Par exemple, vous déclarez MW2 comme entier et copiez une valeur à cet endroit. PLC stocke des entiers comme, disons dans un format complémentaire à deux. Plus tard dans le programme, vous lisez MD2 comme réel. Le PLC n'essaie pas de convertir un entier en real, il lit simplement les octets et le traite comme réel, indépendamment de ce qui y a été enregistré ou de ce qui y a été déclaré. Il n'y avait pas de casting automatique.

Voici comment les choses se sont passées dans Siemens S7 plc-s. Mais vous devez être très prudent car chaque vendeur fait les choses à sa manière.