Ad
Energibutiken.se smarta varor på nätet, leverans till dörren
Besök oss idag
Annonsera i Värmepumpsforum, klicka här för att ställa e-postfråga och få mer info.
140x140vpforum-11.gif
kontakta oss för pris!

Skriv svar

Varning: Det har inte skrivits nya inlägg i detta ämne på 50 dagar.
Om du inte är säker på att du faktiskt vill svara i det här ämnet, så bör du överväga att istället starta ett nytt ämne.
Namn:
E-post:
Ämne:
Inläggsikon:

Verifiering:
This box must be left blank:

Skriv in bokstäverna som syns på bilden
Lyssna på bokstäverna muntligt / Begär en ny bild

Skriv in bokstäverna som syns på bilden:
Skriv in de tre sista bokstäverna i alfabetet:
Hur många var de älva dragspelarna (siffror):

För att slippa svara på kontrollfrågor, registrera dig här!


Ämnessammanfattning

Skrivet av: ThingWizard
« skrivet: 25 september 2019, 15:54:38 »

Glömde svara men det är NodeRed

Vad är det för utvecklingsmiljö?

Normalt fixas ju sånt här automatiskt om alla variabler och accessfunktioner är korrekt deklarerade.
Skrivet av: tipo874
« skrivet: 12 november 2018, 16:51:19 »

Skrivet av: 944_Driver
« skrivet: 12 november 2018, 07:14:34 »

Ser ut att vara ett vanligt 2-komplement tal. Det borde som sagt utvecklingsmiljön kunna hantera bara den vet hur många bitar talet innehåller.
en.m.wikipedia.org/wiki/Two%27s_complement

// Magnus
Skrivet av: tipo874
« skrivet: 11 november 2018, 19:48:54 »

Vad är det för utvecklingsmiljö?

Normalt fixas ju sånt här automatiskt om alla variabler och accessfunktioner är korrekt deklarerade.
Skrivet av: mysman
« skrivet: 10 november 2018, 15:46:57 »

Okey, då är det signed 16-bit med 15 bitars värde där 16:e är tecknet dvs. minus.
Det innebär att alla värden över 32767 är negativa och det är det värdet du skall sätta där, r>32767.

Men då bör det väl bli:
gm = ( -r + 32768 )/ 10
Skrivet av: ThingWizard
« skrivet: 10 november 2018, 15:00:02 »

Tror jag svarar på det själv. Får väl bara göra en if-sats och bara ta bort 65535 om värdet är väldans stort, säg över 30000

var r = msg.payload; //Värdet från modbus
if (r > 30000){ //Om galet stort värde
    r=(r-65535); // Förutsätt att det är pga unsigned int-problemet och dra bort 65535
    msg.payload = r; //Uppdatera payloaden
    }
return msg;

Kanske dumt kodat, men verkar funka iallafall. Nu är GM -115 enlig modbus och -113 i uplink så det verkar stämma. (Uplink laggar efter lite)
Skrivet av: ThingWizard
« skrivet: 10 november 2018, 14:48:56 »

Hmm... tack, det var min första tanke också men det verkar inte vara så enkelt.

Om gradminuter är positivt så är värdet ok. men så fort värdet går under 0, alltså blir negativt så får jag ett galet värde på +6500 (Efter division med 10)
Om ni ser i grafen jag bifogar, när gm > 0 så är värdena mer korrekta, men <0 så blir det galet.

Har försökt läsa på om signed och unsigned konvertering, men det mest konstiga är som sagt att denna variabel ska ges som s16 men jag får ut den som u16 av nån anledning. Har försökt titta i modbus-noden i node-red också men har inte kommit på hur jag kan bestämma tolkning unsigned kontra signed int. Ska rota vidare.

Mera ideer mottages tacksamt.
Skrivet av: mysman
« skrivet: 09 november 2018, 23:45:49 »

Jag skulle prova att dra ifrån -32768 och sedan dela med 10 då sista pos. är en decimal.

Citera
Degree minutes, 16bit value (-32768 < x < 32767). Values outside valid values are rounded to the closest valid value.
Skrivet av: ThingWizard
« skrivet: 09 november 2018, 22:57:56 »

Hej donar med node red och modbus 40. Enligt parameterlistan ska gradminuter 43005 ges som en signed int16, men jag får ut en unsigned int16. Finns det nån annan som har modbus40 här som vet hur man ska konvertera det värdet 0-65000 nånting för att kunna utläsa gradminuter?

Annonser

Right Block

Vibrationsdämpare
Besök vår webshop, klicka här!
Energioffert.se
Energibutiken.se smarta varor på nätet, leverans till dörren
luftvärmepumpar, tillbehör, installationsmaterial, vi har allt!
Annonspriser
Ad
Energibutiken.se smarta varor på nätet, leverans till dörren
Besök oss idag
Annonsera i Värmepumpsforum, klicka här för att ställa e-postfråga och få mer info.
140x140vpforum-11.gif
kontakta oss för pris!