INT64 d'un MTZ vers M340
INT64 d'un MTZ vers M340
Bonjour
J'ai mis en place une liaison MODBUS entre un MTZ et un M340, j'utilise la fonction READ_VAR.
La communication fonction, je dois récupérer une mesure d’énergie qui est codé sur 64bits soit 4 INT.
Extrait doc MTZ : Avec le bloc INT_AS_DINT je récupère par le infos des deux premiers mot ensemble et les deux dernier ensembles, mais cela ne me fait pas la valeurs complète.
La valeur doit être affichée en supervision (Panorama E2), je pense convertir la résultat en STRING pour afficher la valeur dans E2.
Avez vous une idée de comment gérer un INT64 ?
Merci de votre aide
Nico Las
J'ai mis en place une liaison MODBUS entre un MTZ et un M340, j'utilise la fonction READ_VAR.
La communication fonction, je dois récupérer une mesure d’énergie qui est codé sur 64bits soit 4 INT.
Extrait doc MTZ : Avec le bloc INT_AS_DINT je récupère par le infos des deux premiers mot ensemble et les deux dernier ensembles, mais cela ne me fait pas la valeurs complète.
La valeur doit être affichée en supervision (Panorama E2), je pense convertir la résultat en STRING pour afficher la valeur dans E2.
Avez vous une idée de comment gérer un INT64 ?
Merci de votre aide
Nico Las
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: INT64 d'un MTZ vers M340
slts,
ya pas de variables 64 bits sur Unity, si c'est des Wh avec les 32 premiers bits ça te fera 4 milliards de Wh , ça ne te suffit pas ?
ya pas de variables 64 bits sur Unity, si c'est des Wh avec les 32 premiers bits ça te fera 4 milliards de Wh , ça ne te suffit pas ?
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: INT64 d'un MTZ vers M340
Je me suis arrêté à la V10. Est-ce qu' Unity sait maintenant gérer les INT64?
Sinon, il faut passer par des réels.
https://www.se.com/ww/en/faqs/FA311202/
Comme déjà discuté sur ce forum, je ne voie pas l’intérêt d'afficher une valeur en milliardième de milliardième... Attention à choisir des unités pertinentes à afficher. Est-ce que ça apporterait quelque chose d'avoir un compteur de vitesse en m/h? Monsieur, l'agent, je roulais à 80498 m/h, je vous jure.
Sinon, il faut passer par des réels.
https://www.se.com/ww/en/faqs/FA311202/
Comme déjà discuté sur ce forum, je ne voie pas l’intérêt d'afficher une valeur en milliardième de milliardième... Attention à choisir des unités pertinentes à afficher. Est-ce que ça apporterait quelque chose d'avoir un compteur de vitesse en m/h? Monsieur, l'agent, je roulais à 80498 m/h, je vous jure.
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: INT64 d'un MTZ vers M340
pas de INT64
la solution donnée sur le lien est débile, le REAL est codé sur 32 bits exposant+mantisse ça donnera jamais la valeur maxi de
18 446 744 073 709 551 616.00
comme tu dis il faut si c'est possible augmenter l'unité de mesure ex: des kWh à la place des Wh
la solution donnée sur le lien est débile, le REAL est codé sur 32 bits exposant+mantisse ça donnera jamais la valeur maxi de
18 446 744 073 709 551 616.00
comme tu dis il faut si c'est possible augmenter l'unité de mesure ex: des kWh à la place des Wh
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: INT64 d'un MTZ vers M340
Je l'affiche en kW.
Le MTZ est en service depuis 4 mois est il est déjà a 272 000 000 watt.
Le compteur sera au max dans 5 ans ce qui est limite pour du matériel neuf.
Je suis parti du principe qu'il était a zéro lors de l'installation par Schneider, peut être qu'ils ont mis un offset par rapport a l'ancien Diris.
Merci pour le lien, je vais essayer ça.
Même si le calcul est bizarre.
Nico Las
Le MTZ est en service depuis 4 mois est il est déjà a 272 000 000 watt.
Le compteur sera au max dans 5 ans ce qui est limite pour du matériel neuf.
Je suis parti du principe qu'il était a zéro lors de l'installation par Schneider, peut être qu'ils ont mis un offset par rapport a l'ancien Diris.
Merci pour le lien, je vais essayer ça.
Même si le calcul est bizarre.
Nico Las
Re: INT64 d'un MTZ vers M340
Le calcul est bon.
Poids fort multiplier par 4294967295 + le poids faible
avec un max à 18 446 744 073 709 551 615
Poids fort multiplier par 4294967295 + le poids faible
avec un max à 18 446 744 073 709 551 615
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: INT64 d'un MTZ vers M340
-----------------
j'ai pas essayé , je vais regarder comment c'est codé sur les 32 bits du REAL
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: INT64 d'un MTZ vers M340
Je viens d'essayer, dans la théorie ça fonctionne mais on perd forcément en précision au bout d'un moment. On peut pas faire rentrer 64 bits dans 32 sans dommages.
- pach30
- Générateur de blocs fonctions

- Messages : 116
- Enregistré le : 26 mars 2019, 14:20
- Localisation : ben le Sud de ?
Re: INT64 d'un MTZ vers M340
Pourquoi vouloir passer en 64 bits "virtuels" dans l'API ? Si c'est pour afficher sur Panorama , autant lui remonter les 2 DINT et faire le passage en 64 bits directement dans Pano , non ?
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: INT64 d'un MTZ vers M340
slts,
disons que ça marche avec le source de type UDINT, le REAL ne traite pas le débordement, tant que ça rentre c'est bon.
(*Source tous les bits à 1*)
UDINT_low:=16#FFFFFFFF;
UDINT_High:=16#FFFFFFFF;
REAL_low:=UDINT_TO_REAL(UDINT_low);
REAL_High:=UDINT_TO_REAL(UDINT_High);
REAL_RESULT:=(REAL_High*4294967295.0)+REAL_low;
----- avec le source de type DINT ça peut pas marcher----------
(*Source tous les bits à 1*)
DINT_low:=16#FFFFFFFF;
DINT_High:=16#FFFFFFFF;
REAL_low:=DINT_TO_REAL(DINT_low);
REAL_High:=DINT_TO_REAL(DINT_High);
REAL_RESULT:=(REAL_High*4294967295.0)+REAL_low;
disons que ça marche avec le source de type UDINT, le REAL ne traite pas le débordement, tant que ça rentre c'est bon.
(*Source tous les bits à 1*)
UDINT_low:=16#FFFFFFFF;
UDINT_High:=16#FFFFFFFF;
REAL_low:=UDINT_TO_REAL(UDINT_low);
REAL_High:=UDINT_TO_REAL(UDINT_High);
REAL_RESULT:=(REAL_High*4294967295.0)+REAL_low;
----- avec le source de type DINT ça peut pas marcher----------
(*Source tous les bits à 1*)
DINT_low:=16#FFFFFFFF;
DINT_High:=16#FFFFFFFF;
REAL_low:=DINT_TO_REAL(DINT_low);
REAL_High:=DINT_TO_REAL(DINT_High);
REAL_RESULT:=(REAL_High*4294967295.0)+REAL_low;
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr

