|
| Conversion décimal en réel |
| Iniciado por Freedavys, 22,abr. 2020 10:53 - 5 respuestas |
| |
| | | |
|
| |
Miembro registrado 100 mensajes |
|
| Publicado el 22,abril 2020 - 10:53 |
Bonjour,
je récupére une valeur de mon automate (en mode OPC) en texte dans un champ saisie en affichage seulement. La valeur dans mon automate est un réel : il a comme valeur 3.0 Dans windev, la valeur dans mon champ de saisie est 107 793 6128. Je souhaiterais l'afficher en format réel comme dans mon automate. j'ai trouvé la fonction val pour convertir mon texte en numérique et la fonction entiervers hexa pour transformer en Hexa mais je ne trouve pas par exemple entier vers réel. Pouvez-vous m'aider ? Merci par avance, Cordialement
-- DB |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.362 mensajes |
|
| Publicado el 22,abril 2020 - 11:36 |
Bonjour, Ton automate utilise la représentation IEEE 354 pour représenter un numérique à valeur flottante. Une petite aparté : c'est pour cela qu'il est préférable d'utiliser le type numérique ou monétaire au type réel. Un ordi ne sait utiliser que les 0 et les 1, pour un entier c'est relativement simple à coder, pour un réel (au sens mathématique du terme,) cest plus complexe. On code le nombre sur 32 bit (entier sans signe sur 4 octet, ou double-mot) -le signe est représenté par un seul bit, le bit de poids fort (celui le plus à gauche) -l'exposant est codé sur les 8 bits consécutifs au signe -la mantisse (les bits situés après la virgule) sur les 23 bits restants Ainsi le codage se fait sous la forme suivante, les 2 "-" sont là pour faciliter la lecture :
s-eeeeeeee-mmmmmmmmmmmmmmmmmmmmmmm
le s représente le bit relatif au signe (0 pour un nb positif, 1 pour un négatif) les e représentent les bits relatifs à l'exposant les m représentent les bits relatifs à la mantisse.
Jusque là tout va bien. On a 3 contraintes supplémentaires : l'exposant 00000000 est interdit l'exposant 11111111 est interdit. On s'en sert toutefois pour signaler des erreurs, on appelle alors cette configuration du nombre NaN, ce qui signifie Not A Number Il faut rajouter 127 (01111111) à l'exposant pour une conversion de décimal vers un nombre réel binaire. Les exposants peuvent ainsi aller de -254 à 255
La formule de conversion d'un réel vers un binaire est la suivante :
(-1)^S * 2^( E - 127 ) * ( 1 + F )
Où -S est le signe -E l'exposant -F la partie flottante
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 100 mensajes |
|
| Publicado el 22,abril 2020 - 11:44 |
Merci pour votre réponse mais étant un peu novice , comment cela se traduit en code windev 
-- DB |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 356 mensajes |
|
| Publicado el 22,abril 2020 - 11:47 |
Bonjour,
Essaye un truc du genre (l'affectation de "i=" est juste pour le test bien sur)
i est un entier sur 4 = 1077936128 x est un réel sur 4
Transfert(&x,&i,4) Trace(x)
-- Francis MOREL http://www.SoftProtect.fr |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 100 mensajes |
|
| Publicado el 22,abril 2020 - 12:10 |
Super !! Merci beaucoup cela fonctionne parfaitement 
-- DB |
| |
| |
| | | |
|
| | |
| |
| Publicado el 27,abril 2020 - 12:22 |
Bonjour,
J'essaie de faire une comme OPC UA à partir de l'exemple Windev. Pour la connexion OK.
Mais je ne connais pas les instructions pour lire / récupérer les noms & valeurs / écrire les variables de l'automate connecté.
Pouvez-vous m'éclairer ? |
| |
| |
| | | |
|
| | | | |
| | |
|