För andra som vill göra vad jag försöker göra kommer här en "guide".
Jag fick tips om ett bibliotek som heter libmodbus, som hanterar det svåra i frågeställningen.
Detta finns för flera systemtyper (Linux, MacOSX, Windows), mitt val föll på linux.
Efter att jag installerat libmodbus på Devuan (Linux distrbution), fick jag hjälp att skriva ihop kod som ställde frågorna och presenterade svaren på ett lämpligt sätt.
Nu ställer jag frågorna genom att exekvera en fil med argument (som är registerna) likt nedan:
./modbustest 62000 62007 62011 62015 62027 62037 62087 62097 62107 62117 62147 62167 62193 62275 62276 62279
62000: reg[0]=0 (0x0)
62007: reg[0]=261 (0x105)
62011: reg[0]=261 (0x105)
62015: reg[0]=233 (0xE9)
62027: reg[0]=233 (0xE9)
62037: reg[0]=261 (0x105)
62087: reg[0]=34 (0x22)
62097: reg[0]=4 (0x4)
62107: reg[0]=900 (0x384)
62117: reg[0]=432 (0x1B0)
62147: reg[0]=0 (0x0)
62167: reg[0]=65407 (0xFF7F)
62193: reg[0]=328 (0x148)
62275: reg[0]=530 (0x212)
62276: reg[0]=540 (0x21C)
62279: reg[0]=898 (0x382)
Man får sen skriva sin registerkarta så man vet vad de olika registervärden gäller och vilken faktor de har.
62087: reg[0]=34 (0x22) är tex Brinetemperatur IN och den håller +3,4C (faktor på 0,1).
62097: reg[0]=4 (0x4) är då Brine UT och den håller +0,4C (också en faktor på 0,1).
För just min värmepump, krävdes det ett tillbehör (CTC BMS/Internet) för att få ut informationen mha modbus. Värmepumpen hade inga kommunikationsgränssnitt som standard. Andra tillverkare och modeller kan ha det.
Hoppas någon får nytta av detta.
Jag fick tips om ett bibliotek som heter libmodbus, som hanterar det svåra i frågeställningen.
Detta finns för flera systemtyper (Linux, MacOSX, Windows), mitt val föll på linux.
Efter att jag installerat libmodbus på Devuan (Linux distrbution), fick jag hjälp att skriva ihop kod som ställde frågorna och presenterade svaren på ett lämpligt sätt.
Nu ställer jag frågorna genom att exekvera en fil med argument (som är registerna) likt nedan:
./modbustest 62000 62007 62011 62015 62027 62037 62087 62097 62107 62117 62147 62167 62193 62275 62276 62279
62000: reg[0]=0 (0x0)
62007: reg[0]=261 (0x105)
62011: reg[0]=261 (0x105)
62015: reg[0]=233 (0xE9)
62027: reg[0]=233 (0xE9)
62037: reg[0]=261 (0x105)
62087: reg[0]=34 (0x22)
62097: reg[0]=4 (0x4)
62107: reg[0]=900 (0x384)
62117: reg[0]=432 (0x1B0)
62147: reg[0]=0 (0x0)
62167: reg[0]=65407 (0xFF7F)
62193: reg[0]=328 (0x148)
62275: reg[0]=530 (0x212)
62276: reg[0]=540 (0x21C)
62279: reg[0]=898 (0x382)
Man får sen skriva sin registerkarta så man vet vad de olika registervärden gäller och vilken faktor de har.
62087: reg[0]=34 (0x22) är tex Brinetemperatur IN och den håller +3,4C (faktor på 0,1).
62097: reg[0]=4 (0x4) är då Brine UT och den håller +0,4C (också en faktor på 0,1).
För just min värmepump, krävdes det ett tillbehör (CTC BMS/Internet) för att få ut informationen mha modbus. Värmepumpen hade inga kommunikationsgränssnitt som standard. Andra tillverkare och modeller kan ha det.
Hoppas någon får nytta av detta.
Hobbyelektriker
· Stockholm
· 390 inlägg
Registren ligger nog ej över standard, finns många som köra höga startregister.
Problemet är att startregistret är definerat som en INT, hade det varit UINT så är det ej ett problem, om man då inte definear start över en UINT…
när det väl är så är enklast att byta till hex och kolla av siffror i kalkylatorn.
Problemet är att startregistret är definerat som en INT, hade det varit UINT så är det ej ett problem, om man då inte definear start över en UINT…
när det väl är så är enklast att byta till hex och kolla av siffror i kalkylatorn.
Klicka här för att svara
