Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 21 mar 2026, o 11:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
 Tytuł: Modbus problem
PostNapisane: 21 mar 2015, o 17:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 wrz 2013
Posty: 58
Zbananowany użytkownik

Pomógł: 10

Witam

Buduję urządzenie które będzie pracować jako master w protokole modbus RTU. Komunikację mam opanowaną pozostaje tylko problem z konwersją wartości rejestrów.
Problem to zamiana wartości rejestru na zmienną typu float lub double a najlepiej na 2 inty części całkowitej i ułamkowej.

Wyciągam z odebranej ramki 4 bajty i zapisuję je w tablicy char

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Proszę o podpowiedz jak zamienić to na float.

W c# używałem do tego gotowej funkcji

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ale w c nie mogę nic znaleść



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 mar 2015, o 19:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Można użyć unii:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ewentualnie:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 mar 2015, o 19:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 wrz 2013
Posty: 58
Zbananowany użytkownik

Pomógł: 10

Dzięki za odpowiedz

Wcześniej używałem takiego kodu i co prawda działało ale ostrzeżenie wyświetlało

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 mar 2015, o 16:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 wrz 2013
Posty: 58
Zbananowany użytkownik

Pomógł: 10

Może mi ktoś wyjaśnić dlaczego unia nie wszystkie wartości mi właściwie konwertuje?

Oto przykład poprawny:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Otrzymuję poprawną wartość w:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

czyli 273.15


Natomiast:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


zwraca wartość -29747 a poprawną wartością jest 101325.
Sprawdzałem również na kalkulatorze online że unia zwraca błędną wartość.

Proszę o podpowiedz


---------------------------------------------------------------------------------------------

Problem rozwiązany, okazało się że źle konwertowałem float na ASCII

---------------------------------------------------------------------------------------------



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO