PC-styrning av Bergvärmepump
Lyckas du med att läsa och disassemblera styrprogrammet borde det ge mest information, men det kan vara knepigt, speciellt om programmet är skrivet i C från början. Med en bra återskapad källkod borde det även vara möjligt att tillföra en del för dig passande förändringar.
Det borde ju gå att läsa ett flashminne med en relativt enkel konstruktion på parallellporten. För egen del känns dock sådana tilltag lite osäkra. Det känns som det var tryggare på gamla hederliga E-prom som är lite svårare att radera.
Hur som helst är jag väldigt nyfiken på resultatet.
Jag har själv en värmepump från Nibe installerad 2002 vilken förmodligen har samma typ av styrkort som det som visades i tråden.
Till detta finns en dröm om installation av solfångare samt komfortkyla.
Efter att ha läst tråden och fått lite inspiration funderar jag nu på en lösning med tre enheter förbundna med CAN.
En modifierad VP-styrning (eller om det går att patcha det som finns i flash-kretsen). En centralenhet varifrån alla parametrar i systemet kan sättas, läsas och loggas. Samt en enhet för styrning av shuntventiler och pumpar samt inmätning av olika temperaturer placerad på ett strategiskt ställe på vinden.
Nu ska jag bara bli klar med allt annat som ska göras först, ventilation ,tilläggsisolering, lister, bastu.......
Det borde ju gå att läsa ett flashminne med en relativt enkel konstruktion på parallellporten. För egen del känns dock sådana tilltag lite osäkra. Det känns som det var tryggare på gamla hederliga E-prom som är lite svårare att radera.
Hur som helst är jag väldigt nyfiken på resultatet.
Jag har själv en värmepump från Nibe installerad 2002 vilken förmodligen har samma typ av styrkort som det som visades i tråden.
Till detta finns en dröm om installation av solfångare samt komfortkyla.
Efter att ha läst tråden och fått lite inspiration funderar jag nu på en lösning med tre enheter förbundna med CAN.
En modifierad VP-styrning (eller om det går att patcha det som finns i flash-kretsen). En centralenhet varifrån alla parametrar i systemet kan sättas, läsas och loggas. Samt en enhet för styrning av shuntventiler och pumpar samt inmätning av olika temperaturer placerad på ett strategiskt ställe på vinden.
Nu ska jag bara bli klar med allt annat som ska göras först, ventilation ,tilläggsisolering, lister, bastu.......
-
- Inlägg: 19
- Blev medlem: 9 januari 2007, 21:24:41
-
- Inlägg: 19
- Blev medlem: 9 januari 2007, 21:24:41

Nu har jag loggat lite trafik. Jag har provat mig fram med baudrate och tror att 19200 är det som körs (8N1). Det känns som det är den hastighet som datat flyter på bäst. Det sitter en lysdiod (Röd) på kortet som verkar vara tänd då det finns trafik på bussen.
Jag kör med ett litet utvecklingskort med en ATmega128 som har lagt in en liten kodsnutt i som kör RS485->RS232 konvertering.
Detta är vad jag får in in min PC:
0x6E 0xCA 0x7E 0x7E 0x7E 0x7E 0x2A 0x3A 0x4E 0x2A 0x3E 0xC9 0xF3 0xE7 0xE7 0xA6
0xCD 0x6E 0xF2 0xFE 0x5E 0xF9
0x6E 0xF6 0xDE 0x12
0xEE 0xF2 0xEA 0xDA 0xDE
0x6E 0xCA 0x7E 0x7E 0x7E 0x7E 0x2A 0x3A 0x4E 0x2A 0x3E 0xC9 0xF3 0xE7 0xE7 0xA6
0xCD 0x6E 0xF2 0xFE 0x5E 0xF9
0x6E 0xF6 0xDE 0x12
0x6E 0xF2 0xEA 0xD6 0xD2
0x6E 0xCA 0x7E 0x7E 0x7E 0x7E 0x2A 0x3A 0x4E 0x2A 0x3E 0xC9 0xF3 0xE7 0xE7 0xA6
0xCD 0x6E 0xF2 0xFE 0x5E 0xF9
0xF4 0xF4 0x31 0xE4 0x80 0x6E 0xF6 0xDE 0x12
0x6E 0xF2 0xEA 0xD2 0xD6
Så fortsätter det. Med lite annan data när det händer saker i pannan. Det ser ut som om det sker trafik en gång per sekund. I datat ovan har jag gjort två blankrader då det är tyst på bussen under en längre tid och en blankrad då det är tyst en lite kortare stund. Datat ovan kommer från 3s loggning.
Vid en första anblick ser det inte så vidare värst lättlöst/lättläst ut

Är det någon som har någon idé?

BTW, Om jag kör på 9600 får jag följande:
0xF7 0xDC 0xD7 0xD7 0xD7 0xD7
0xF7 0x5F 0xDE 0x9F
0x17 0x5F 0xDF
0x17 0x5F 0x1E
0x37 0x5F 0xDC 0xD7 0xD7 0xD7 0xD7
0x37 0x5F 0xDE 0x9F
0xF7 0x5F 0xDF
0x17 0x5F 0x1E
0x27 0x5F 0xDC 0xD7 0xD7 0xD7 0xD7
0x37 0x5F 0xDE 0x9F
0xF7 0x5F 0xDF
0x74 0x1F
0x17 0x5F 0x1E
Bra jobbat FredRovers. Nu börjar vi ta oss någon stans.
Det jag tänkte kolla var att se vad som händer när man ändrar eller gör saker på panelen till att börja med för att se vad den skickar och vad den får tillbaka.
vfr's, tips e bra att skippa "0x" så blir det lättare och läsa och att ev översätta till ASCII.
Kör lite längre och tryck lite på knapparna för att se om du får någon ren text i ASCII. Känns som att den kanske hämtar menyer mm från EEPROMen som ligger på en annan node. Dvs texten måste transporteras.
Panelen är kanske bara en dummy som hämtar info och ändrar info i EEPROMen som sedan styrsystemen läser av sedan.
Det jag tänkte kolla var att se vad som händer när man ändrar eller gör saker på panelen till att börja med för att se vad den skickar och vad den får tillbaka.
vfr's, tips e bra att skippa "0x" så blir det lättare och läsa och att ev översätta till ASCII.
Kör lite längre och tryck lite på knapparna för att se om du får någon ren text i ASCII. Känns som att den kanske hämtar menyer mm från EEPROMen som ligger på en annan node. Dvs texten måste transporteras.
Panelen är kanske bara en dummy som hämtar info och ändrar info i EEPROMen som sedan styrsystemen läser av sedan.
-
- Inlägg: 19
- Blev medlem: 9 januari 2007, 21:24:41
Jag noterade också att det blir lättare att läsa utan '0x' så det tog jag bort i en senare version. Tidigare provade jag att konvertera tecken >=20 (Hex) till ASCII men det var ju rena rappakaljan så det tog jag bort. Jag har provat att trycka på knappar på panelen och det händer ju saker men inget som man kan läsa ut i klartext. Jag provade att koppla ur RS485 kabeln mellan panelkortet och processorkortet men då startade panelkortet om, eller om det var processorkortet. Det stod iaf likadant på displayen som när man startar pannan (då jag stoppade tillbaka RS485).
Jag ska väl logga lite mer för att se vad jag kan få fram. Det vore ändå trevligt om någon mer kunde få igång loggning så att vi kan jämföra lite resultat.
Jag ska väl logga lite mer för att se vad jag kan få fram. Det vore ändå trevligt om någon mer kunde få igång loggning så att vi kan jämföra lite resultat.
Skulle kanske kunna börja logga om jag bara får ihop delarna.
Har du kopplat Pump <--> Utvecklingskort <---> PC eller hur har du gjort. Förstog inte riktigt din koppling.
Har skaffat mig RS485 <---> RS232 krets och sedan en MAX232 för att kunna koppla till datorn direkt. Har dock ännu inte satt ihop det hela. Har precis fått hem en motorstyrd garageport som jag tänkte börja leka med.
Har du kopplat Pump <--> Utvecklingskort <---> PC eller hur har du gjort. Förstog inte riktigt din koppling.
Har skaffat mig RS485 <---> RS232 krets och sedan en MAX232 för att kunna koppla till datorn direkt. Har dock ännu inte satt ihop det hela. Har precis fått hem en motorstyrd garageport som jag tänkte börja leka med.
-
- Inlägg: 19
- Blev medlem: 9 januari 2007, 21:24:41
Jag har jackat in en nätverkskabel på kortet som du lade ut en bild på tidigare i tråden... http://www.pici.se/pictures/WuI5Ic.jpg ...och kopplat nätverkskabeln till mitt utvecklingskort som har en RS485-port. I utvecklingskortet läser jag av RS485-porten och skickar ut det på en RS232-port och in i min PC. Dvs utvecklingskortet omvandlar enbart från RS485 till RS232 och lägger till lite tidsinformation på mottaget data.
De två RJ45 portarna sitter parallellt det har jag kollat på undersidan av PCBn. RJ45 porten ser ut enligt nedan:
1 - D-
2 - D+
3 - +12V
4 - +12V
5 - +5V
6 - +5V
7 - GND
8 - GND
Jag ser ju inte vilken riktning som datat har (till eller från panelkortet). Man kan ju alltid koppla in ett skåp på Rx och Tx direkt på processorkortet för att få reda på det.
Det tråkiga är ju att det verkar vara svårt att tyda datat, men skam den som ger sig...[/url]
De två RJ45 portarna sitter parallellt det har jag kollat på undersidan av PCBn. RJ45 porten ser ut enligt nedan:
1 - D-
2 - D+
3 - +12V
4 - +12V
5 - +5V
6 - +5V
7 - GND
8 - GND
Jag ser ju inte vilken riktning som datat har (till eller från panelkortet). Man kan ju alltid koppla in ett skåp på Rx och Tx direkt på processorkortet för att få reda på det.
Det tråkiga är ju att det verkar vara svårt att tyda datat, men skam den som ger sig...[/url]
-
- Inlägg: 19
- Blev medlem: 9 januari 2007, 21:24:41
En känsla som jag får är att NIBE använder sig av "Modbus over serial line"...
http://www.modbus.org
Är det någon på forumet som känner till något om Modbus? Annars får man läsa på lite, det ser ju ut att funnas en hel del på deras hemsida.
http://www.modbus.org
Är det någon på forumet som känner till något om Modbus? Annars får man läsa på lite, det ser ju ut att funnas en hel del på deras hemsida.
-
- Inlägg: 19
- Blev medlem: 9 januari 2007, 21:24:41
Nej, det är inte modbus...
Exempel på logg:
6E C6 7E 7E 7E 2A 3A 46 3A 3E C9 F3 E7 E7 E7 E7 32
Inverterat och >> 2 ger följande (om man omvandlar till ASCII om data >= 0x20):
'$'x0E' '' '' ''5''1''.''1''0'x0Dx03x06x06x06x06'3'
51.1 är det som hamnar på displayen.
Är det någon som känner till något system som inverterar och skiftar två steg. Kanske är detta helt egetutvecklat av NIBE???
Förslag på vad de två bitarna som man skiftar bort ska användas till?
Exempel på logg:
6E C6 7E 7E 7E 2A 3A 46 3A 3E C9 F3 E7 E7 E7 E7 32
Inverterat och >> 2 ger följande (om man omvandlar till ASCII om data >= 0x20):
'$'x0E' '' '' ''5''1''.''1''0'x0Dx03x06x06x06x06'3'
51.1 är det som hamnar på displayen.
Är det någon som känner till något system som inverterar och skiftar två steg. Kanske är detta helt egetutvecklat av NIBE???
Förslag på vad de två bitarna som man skiftar bort ska användas till?
Lite mer dataanalys:FredRovers skrev:Nej, det är inte modbus...
Exempel på logg:
6E C6 7E 7E 7E 2A 3A 46 3A 3E C9 F3 E7 E7 E7 E7 32
Inverterat och >> 2 ger följande (om man omvandlar till ASCII om data >= 0x20):
'$'x0E' '' '' ''5''1''.''1''0'x0Dx03x06x06x06x06'3'
51.1 är det som hamnar på displayen.
Är det någon som känner till något system som inverterar och skiftar två steg. Kanske är detta helt egetutvecklat av NIBE???
Förslag på vad de två bitarna som man skiftar bort ska användas till?
Om vi anveänder oss av en vanlig ascii-tabell för att tolka styrkoderna får vi:
x0E - Shift out <SO>
x0D - Carriage return <CR>
x03 - End of text <ETX>
x06 - Acknowledgement <ACK>
x20 - space <SP> (Jag vet, det är ett gränsfall)
Med andra ord skulle texten bli $ <SO SP SP SP> 51.10 <CR ETX ACK ACK ACK ACK> 3
Läggs de utskiftade bitarna till fås följande:
slutbitar "01" : $ <SO SP SP SP> 51.10
slutbitar "10" : <CR>
slutbitar "00" : <ETX ACK ACK ACK ACK>
slutbitar "01" : 3
Slutbitarna skulle kunna vara avsändare eller avsedd mottagare, men då skulle jag gärna haft <CR> och <ETX> med slutbitarna 01.
Fast mitt antagande bygger ju på att ASCII-standard används. Det kan ju vara så att styrkoderna är helt egna.
Hopppas att det bidrar till något
Hälsningar
/Björn L.
-
- Inlägg: 19
- Blev medlem: 9 januari 2007, 21:24:41
Alla idéer är välkomna.
Jag håller med, det stämmer bara nästan att de två LSB-erna skuller vara avsändare/mottagare.
Frågan som jag inte riktigt klurat ut är hur de skickar klockuppdateringar på displayen följande data skickas precis då klocakn uppdateras på displayen. Klocak står inte på samma rad som temperaturen i exemplet tidigare.
21:33 <- Visas på displayen
C4 E6 F6 C4 7C 24 FC F2 3C 98 E4 (Data som skickas)
x0Ex06x02x0Ex20x36x00x03x30x19x06 (!Data>>2)
21:34
C4 E4 FC E2 74 2C FE E4 04 98 E4
x0Ex06x00x07x22x34x00x06x3Ex19x06 (!Data>>2)
21:35
C4 E6 F4 C4 74 2A FC F2 0C 98 E4
x0Ex06x02x0Ex22x35x00x03x3Cx19x06 (!Data>>2)
21:38
C4 E6 F6 C4 7C 1C FC 90 24 98 E4
x0Ex06x02x0Ex20x38x00x1Bx36x19x06 (!Data>>2)
21:39
C4 E4 F6 10 74 1A FC F4 2C 98 E4
x0Ex06x02x3Bx22x39x00x02x34x19x06 (!Data>>2)
Här ser det inte ut att vara rätt att invertera och skifta två steg åt höger.
Det jag efterlyser nu är någon som har en RCU-10 och som kan ställa upp att logga trafiken då RCU:n är aktiverad. Det är ju egentligen endast den trafiken som är av intresse. Jag skulle kunna låna ut RS-485<->RS-232 konverterare om det är det som saknas. Hör då av er genom ett PM!
Jag håller med, det stämmer bara nästan att de två LSB-erna skuller vara avsändare/mottagare.
Frågan som jag inte riktigt klurat ut är hur de skickar klockuppdateringar på displayen följande data skickas precis då klocakn uppdateras på displayen. Klocak står inte på samma rad som temperaturen i exemplet tidigare.
21:33 <- Visas på displayen
C4 E6 F6 C4 7C 24 FC F2 3C 98 E4 (Data som skickas)
x0Ex06x02x0Ex20x36x00x03x30x19x06 (!Data>>2)
21:34
C4 E4 FC E2 74 2C FE E4 04 98 E4
x0Ex06x00x07x22x34x00x06x3Ex19x06 (!Data>>2)
21:35
C4 E6 F4 C4 74 2A FC F2 0C 98 E4
x0Ex06x02x0Ex22x35x00x03x3Cx19x06 (!Data>>2)
21:38
C4 E6 F6 C4 7C 1C FC 90 24 98 E4
x0Ex06x02x0Ex20x38x00x1Bx36x19x06 (!Data>>2)
21:39
C4 E4 F6 10 74 1A FC F4 2C 98 E4
x0Ex06x02x3Bx22x39x00x02x34x19x06 (!Data>>2)
Här ser det inte ut att vara rätt att invertera och skifta två steg åt höger.

Det jag efterlyser nu är någon som har en RCU-10 och som kan ställa upp att logga trafiken då RCU:n är aktiverad. Det är ju egentligen endast den trafiken som är av intresse. Jag skulle kunna låna ut RS-485<->RS-232 konverterare om det är det som saknas. Hör då av er genom ett PM!