Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Scilab - Konwersja dwóch zmiennych int(16-bit) do float(32-bit)

brzoza900 27 Paź 2016 13:31 636 0
  • #1 27 Paź 2016 13:31
    brzoza900
    Poziom 14  

    Witam.

    Odczytuję programem Scilab dane ze sterownika PLC po protokole Modbus. Liczby zmiennoprzecinkowe są więc przedstawione w postaci dwóch rejestrów (dwóch zmiennych int: pierwsza na starszych bitach, druga na młodszych). Potrzebuje przekonwertować takie dwie zmienne int do jednej zmiennej float. Generalnie rzecz biorąc, z tego co wyczytałem w internecie, Scilab nie posiada mechanizmów przesuwania bitów.
    Moim pomysłem było zastosowanie funkcji dec2bin na każdej ze zmiennych 16-bit, w wyniku której otrzymuję dwa ciągi znaków (string). Mogę je wówczas łatwo połączyć, jednak w jaki sposób skonwertować to ze string -> float 32-bit (mam wówczas string w postaci powiedzmy '0010 1101 0010 1101', jak z tego zrobić zmienną zmiennoprzecinkową?)
    A może jeszcze jakieś inne pomysły związane z przesuwaniem bitów? Tylko wówczas również pojawia się pytanie w jaki sposób przekonwertować zmienną int(32-bit) na liczbę zmiennoprzecinkową?

    Dodano po 19 [minuty]:

    Znalazłem rozwiązanie.

    W bibliotece do Scilaba ATOMS - modbus01, służącej do łączenia się ze sterownikiem, jest od razu funkcja modbus_getFloat(). Temat zamykam

    0 0