DINT_TO_2WORD et inversement

Forum traitant des automates industriels de marque Schneider - Telemecanique
dpo
Dieu du process
Dieu du process
Messages : 819
Enregistré le : 27 nov. 2015, 20:03

DINT_TO_2WORD et inversement

Message par dpo »

Question curiosité
via la com on échange souvent des mots WORD
la donnée à traiter peut être un DINT
Quand tout était localisé c'était simple : le DINT chevauchait les 2 WORD, il suffisait d'utiliser la même adresse que le premier %MW avec %MD.
Maintenant que les données sont de plus en plus nommées, il n'y a plus forcément cette notion d'adresse
sous control expert comme unity, je me suis fait mon (tout petit) bloc qui concatène ou extrait, ça fonctionne pas de soucis
mais je n'ai pas fouillé s'il y avait déjà une fonction sur ces soft pour faire ça ?
hein ? quoi ? je dois chercher ? pffffff, j'ai mon rapport de stage à terminer pour demain
Avatar du membre
Bruce33
Dieu du process
Dieu du process
Messages : 932
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: DINT_TO_2WORD et inversement

Message par Bruce33 »

DINT_AS_WORD
WORD_AS_DINT
;)
dpo
Dieu du process
Dieu du process
Messages : 819
Enregistré le : 27 nov. 2015, 20:03

Re: DINT_TO_2WORD et inversement

Message par dpo »

oui mais...
DINT AS WORD doit prendre que le mot de poids faible du DINT pour le mettre dans WORD
WORD AS DINT ne doit coller WORD que dans le mot de poids faible de DINT

quand tu dois extraire les 2 word d'un DINT
DINT est constitué de WORD2,WORD1

je me suis fait les blocs
2WORD_TO_DINT
et
DINT_TO_2WORD
Avatar du membre
Bruce33
Dieu du process
Dieu du process
Messages : 932
Enregistré le : 28 oct. 2015, 06:54
Localisation : Pas-de-Calais

Re: DINT_TO_2WORD et inversement

Message par Bruce33 »

Tu n'as peut-être pas le temps de chercher mais prends au moins le temps de vérifier. ;)

Le différence est dans le "AS" au lieu du "TO" : DINT_AS_WORD n'est pas DINT_TO_WORD.

Représentration en ST :
DINT_AS_WORD (DINT_variable, LowWord, HighWord);
DINT_variable := WORD_AS_DINT (WORD_variable1, WORD_variable2) ;
dpo
Dieu du process
Dieu du process
Messages : 819
Enregistré le : 27 nov. 2015, 20:03

Re: DINT_TO_2WORD et inversement

Message par dpo »

oups,
je me sens aussi misérable que le petit scarabée au début de l'apprentissage, alors que je suis le premier à dire qu'il faut chercher
merci pour l'info
j'ai bêtement pensé que le "AS" venait d'une habitude d'un autre soft et correspondait au TO.

Par contre par cette conversion n'est pas proposée par défaut dans somachine,
Modifié en dernier par dpo le 19 oct. 2020, 13:23, modifié 1 fois.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: DINT_TO_2WORD et inversement

Message par philou77 »

Salut !

+1 avec Bruce33

DINT_TO_WORD : Prend le Poids faible du Dint vers 1 Word
WORD_TO_DINT : Prend 1 Word vers le poids faible du Dint (Poids fort mis à zéro)

WORD_AS_DINT : Prend 2 Word vers 1 Dint
DINT_AS_WORD : Prend 1 Dint vers 2 Word

As et TO ne font pas pareil !

TO est un transfert simple.. AS est une conversion de type

;-)
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: DINT_TO_2WORD et inversement

Message par itasoft »

Slts, sur Unity
par la COM on ne reçois que des mots %MW, il faut juste déclarer une variable localisé du type que l’on désire et ça converti tout seul.
Ex : Je reçois dans ma table de réception deux mots %MW100 et %MW101
Je déclare une variable du type désiré à l’adresse absolue %MW100
Ex : VITESSE type=UDINT adresse=%MW100
Ex : VITESSE type=DWORD adresse=%MW100
Ex : VITESSE type=DINT adresse=%MW100
Ex : TOTO type=STRING adresse=%MW100
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: DINT_TO_2WORD et inversement

Message par philou77 »

+1 Itasoft,

Mais lui il veut pas localiser ses variables.. :(
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: DINT_TO_2WORD et inversement

Message par itasoft »

philou77 a écrit : 19 oct. 2020, 14:58 +1 Itasoft,
Mais lui il veut pas localiser ses variables.. :(
-------
OK, c'est pas sur Unity alors ?
Automaticien privé (de tout)
itasoft@free.fr
dpo
Dieu du process
Dieu du process
Messages : 819
Enregistré le : 27 nov. 2015, 20:03

Re: DINT_TO_2WORD et inversement

Message par dpo »

Pour le coup la question était générale mais dans la pratique, c'est sous somachine
quand on fait une com, on déclare un tableau et il le range bien dans des %IW
mais je préfère travailler avec les cases d'un tableau, si l'adresse de départ des IW change, je n'aurai rien à faire dans la mise en forme des mes données
le tableau fait une centaine de mots mais je n'ai qu'une dizaine de données à bricoler, je garde mon bloc maison puisque somachine ne semble pas connaitre les conversions en "AS".
Merci pour vos lumières, j'aurai découvert une fonction que je me codais bêtement à la main sous unity.

Sous unity, j'utilisais aussi l'astuce de localiser à la même adresse des variables de format différent, mais je me suis déjà fait avoir
en insérant de nouvelles com pour des variateurs ce qui peut provoquer des décalages d'adresses si on utilise Modbus TCP et Ethernet/IP sur un même coupleur, maintenant j'utilise les variables qui sont nommées automatiquement et je les convertit si besoin.
Modifié en dernier par dpo le 19 oct. 2020, 15:13, modifié 1 fois.
Répondre