Page 1 sur 2
DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 09:59
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
Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 10:30
par Bruce33
DINT_AS_WORD
WORD_AS_DINT

Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 12:06
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
Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 13:07
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) ;
Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 13:16
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,
Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 13:22
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

Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 14:49
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
Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 14:58
par philou77
+1 Itasoft,
Mais lui il veut pas localiser ses variables..

Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 15:06
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 ?
Re: DINT_TO_2WORD et inversement
Posté : 19 oct. 2020, 15:10
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.