Forum de automatizare

Forum de automatizare, ajutor reciproc și partajarea PLC-urilor industriale.

real

Convertiți REAL în 2 numere întregi

Convertiți REAL în 2 numere întregi

Mesaj de Nicat »28 martie 2019, 12:59

Am o întrebare rapidă despre convertirea unei variabile REAL în două numere întregi pentru vizualizare pe un afișaj

Un exemplu: Pentru a afișa 123456 (zecimal) pe ecran (fie 1 1110 0010 0100 0000 în binar), trebuie să pun la dispoziție 2 cuvinte:
-1: 1 (zecimal) sau 1 în binar.
-2: 57920 sau 1110 0010 0100 000 în binar

Aceste 2 numere întregi sunt apoi asamblate pentru a forma un singur DINT, cu primul cuvânt ca fiind cel mai semnificativ


Întrebarea mea este, cum să convertesc una dintre variabilele mele REALE în 2 numere întregi pentru a le putea afișa pe ecran ?
(Aș dori să afișez 312.1 de exemplu)
M-am gândit să convertesc la DINT apoi să descompun acest DINT în 2 numere întregi, dar nu funcționează așa cum vreau.

Ai o mică idee ?

Re: convertiți REAL la 2 numere întregi

Mesaj de philou77 »28 martie 2019, 13:20

O reală este o mantisă și un exponent, nu are nimic de-a face cu numerele întregi, fie că sunt simple sau duble.

trebuie să treci printr-o funcție reală -> Dint, dar fii atent, capacitățile de numărare sunt diferite. dacă realul este prea mare, pierderea valorii !

Re: convertiți REAL la 2 numere întregi

Mesaj de Bruce33 »28 martie 2019, 13:28

Explicațiile sunt confuze.
Ce este acest afișaj care nu poate afișa nici un cuvânt plutitor, nici un cuvânt întreg de 32 de biți ?

Pentru a afișa un număr cu virgulă dintr-o variabilă întreagă, trebuie să definiți un număr constant de cifre după virgulă.
De exemplu. variabila întreagă conține 3121, dar afișăm 312.1

În ceea ce privește conversiile de tip variabil, presupunând că programați cu Unity Pro (numit acum EcoStruxure Control Expert):

  • Funcția REAL_TO_DINT convertește valoarea reală într-o valoare întreagă. Va trebui să multiplicați valoarea reală dacă doriți să păstrați cifre după punctul zecimal.
  • Funcția DINT_AS_WORD vă permite să împărțiți valoarea întregă pe 32 de biți în două cuvinte pe 16 biți.
De asemenea, este necesar să știm dacă valoarea poate fi negativă.