conversion 2 INT en REAL

Forum traitant des automates industriels de marque Siemens.
Avatar du membre
geronimo
Forcené des structures
Forcené des structures
Messages : 169
Enregistré le : 20 oct. 2015, 08:46

conversion 2 INT en REAL

Message par geronimo »

Bonjour,
Je cherche une fonction Siemens pour Step 7 pour faire un real avec 2 INT

Depuis un API Schneider j'envoi un real dans 2 INT sauf que dans le siemens je ne sais pas comment reconstituer mon REAL
RealSchneider = 65 000
INT1 Siemens = -6144
INT2 Siemens = 18301

Merci pour votre aide
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: conversion 2 INT en REAL

Message par itasoft »

slts,
comment tu ferais ça si c’était sur un Schneider à la place du Siemens ?
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
bipcoyote
Codeur fou
Codeur fou
Messages : 203
Enregistré le : 16 janv. 2018, 13:19
Localisation : Dunkerque

Re: conversion 2 INT en REAL

Message par bipcoyote »

bonjour,

Comprends pas ta question ?, tu lis simplement le real MF. ou dans les DBs, DBx.DBDy avec en déclaration REAL
Ou cela proviens d'une communication ?

En attente,++
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: conversion 2 INT en REAL

Message par itasoft »

slts,
je modifie la question.
Depuis un API Schneider (A) j'envoi un real dans 2 INT vers un autre automate Schneider (B) , comment reconstituer mon REAL dans l'automate (B)

tu sais comment ?
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
bipcoyote
Codeur fou
Codeur fou
Messages : 203
Enregistré le : 16 janv. 2018, 13:19
Localisation : Dunkerque

Re: conversion 2 INT en REAL

Message par bipcoyote »

slt,

Pas pour toi itasoft mais pour geronimo la question.

++
Avatar du membre
Ulairi
Expert de l'héxadécimal
Expert de l'héxadécimal
Messages : 366
Enregistré le : 20 oct. 2015, 06:22

Re: conversion 2 INT en REAL

Message par Ulairi »

Bonjour,

Par exemple
- tu stockes l'entier le poids fort à l'emplacement MW10 (octet 10 + octet 11)
- tu stockes l'entier de poids faible à l'emplacement MW12 (octet 12 + octet 13)
- tu déclares une variable de type REAL à l'adresse MD10 (octet 10 + octet 11 + octet 12 + octet 13)

Aucune fonction à utiliser.

Image
Enseignant en BTS électrotechnique (Pas taper sur l'intru !)
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: conversion 2 INT en REAL

Message par itasoft »

slts,
coté Unity on ne peut le faire que par l'adressage absolu , reste à savoir si sur Siemens existe l'adressage absolu
sur unity:
nom=REAL000 type=REAL adresse=%MW10
et envoi %MW10 et %MW11 au Siemens
sur le Siemens on peut reconstituer le REAL que par un adressage absolu. ceci dit il faudrait tester ton exemple.
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
geronimo
Forcené des structures
Forcené des structures
Messages : 169
Enregistré le : 20 oct. 2015, 08:46

Re: conversion 2 INT en REAL

Message par geronimo »

Merci pour vos réponses. Comme l'a dit Itasoft c'est ça mais l'automate B est en Siemens.
itasoft a écrit : 27 mars 2018, 18:52 slts,
je modifie la question.
Depuis un API Schneider (A) j'envoi un real dans 2 INT vers un autre automate Schneider (B) , comment reconstituer mon REAL dans l'automate (B)

tu sais comment ?
En fait dans mon DB de Com venant de l'automate Schneider je n'ai que des INT ( j'ai pas le droit de la modifier).
Du coup en Schneider j'ai envoyer 65000 dans ma variable REAL à l'adresse %MW600, coté Siemens je reçois dans la variable db6.DBW250 = -6144 et dans la variable Db6.DBW252 = 18301.
J'ai essayer en prenant la variable Db6.DBD250 mais je n'ai rien de cohérant.
Je voudrais récupérer ma valeur 65000 coté Siemens.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: conversion 2 INT en REAL

Message par itasoft »

slts,
l'exemple à Ulairi doit marcher car apparemment ça ne travaille que sur des adresses absolues
(ceci dit, je suis pas spécialiste Siemens et espère ne pas le devenir, lol)
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Ulairi
Expert de l'héxadécimal
Expert de l'héxadécimal
Messages : 366
Enregistré le : 20 oct. 2015, 06:22

Re: conversion 2 INT en REAL

Message par Ulairi »

Il faut inverser les valeurs, ton entier de poids fort (comprenant l'exposant et le début de la mantisse) est celui dont la valeur est 18301 ; ton entier de poids faible (comprenant la fin de la mantisse) est celui dont la valeur est -6144.

Autrement dit, tu ne peux utiliser la variable Db6.DBD250 que si tu as rangé tes deux entiers dans le db6 de manière à avoir db6.DBW250 = 18301 et Db6.DBW252 = -6144.

D'abord l'entier de poids fort, puis ensuite l'entier de poids faible.
Modifié en dernier par Ulairi le 28 mars 2018, 22:16, modifié 1 fois.
Enseignant en BTS électrotechnique (Pas taper sur l'intru !)
Répondre