Verständnisfrage zum auslesen eines BHKW per Modbus

Rosi10

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine Verstädnisfrage bzgl. des Auslesens eines KW Energie BR06 BHKWs mittels Modbus über die Java Bibliothek JaMod. Ich bin bereits so weit, dass ich über mein Java Programm meinen ModbusServer-Simulator auslesen kann. Ich habe mir nun die Adress-Registerliste zu dem genannten BHKW angeschaut, unter MODBUS RTU (ich lese über TCP aus, die Werte sind aber laut Support die gleichen) steht bei z.B. Zähler - BHKW - Wärmemenge nur "DW75". Leider weiss ich nicht genau, wie ich das zu interpretieren haben. Der Zähler wird ja ein HoldingRegister sein, diesen lese ich mit der Java Bibliothek über
Code:
holdingRegisterRequest = new ReadMultipleRegistersRequest(ref,count);   //ref = offset, count = Anzahl
aus und danach das Request einfach execute. Ich frage mich aber nun, wie mich "DW75" zu meinem benötigten Offset führt?

LG

Rosi
 
Naja, "DW75" klingt so nach Datenwort 75 und könnte - ja nachdem ob die Zählung mit 0 oder 1 beginnt - Register 74/75 (beides Wortlänge) sein.
Je nachdem wie wie deine Java-Funktion die Übergabe des Starting-Register erwartet kannst du ja mal mit (74, 75, 40074 bzw. 40075) probieren.

Anstatt deinen Code direkt auf das BHKW loszulassen würde ich es lieber mal mit einen PC-Modbus-Client-Programm versuchen.
Da fallen dann eventuelle Probleme in deinem Code nicht ins Gewicht. Die Frage ist auch ob die Daten in nem Halte- oder in nem Input-Register (Code 03) liegen.

Wenn die Tabelle vom BHKW nicht mehr Infos gibt ist das ein Ratespiel...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja, "DW75" klingt so nach Datenwort 75 und könnte - ja nachdem ob die Zählung mit 0 oder 1 beginnt - Register 74/75 (beides Wortlänge) sein.
Je nachdem wie wie deine Java-Funktion die Übergabe des Starting-Register erwartet kannst du ja mal mit (74, 75, 40074 bzw. 40075) probieren.

Anstatt deinen Code direkt auf das BHKW loszulassen würde ich es lieber mal mit einen PC-Modbus-Client-Programm versuchen.
Da fallen dann eventuelle Probleme in deinem Code nicht ins Gewicht. Die Frage ist auch ob die Daten in nem Halte- oder in nem Input-Register (Code 03) liegen.

Wenn die Tabelle vom BHKW nicht mehr Infos gibt ist das ein Ratespiel...

Danke für deine Anwort.
Die Adress-Registerliste zählt die DW's einfach hoch, also beginnend mit einer "Störmeldung 001" mit DW0 Bit0 bis hin zu "Handshake-Zähler" mit "DW 119". Was mich verwundert ist, dass diese so einfach aufsteigend sind. Normalerweise sollten hier doch Adressen nach den Tables gehen, also 1, 10001, 30001 und 40001. So wären ja dann theoretisch bei den HoldingRegister 40001-40074/75 alle leer. Kann das sein, bzw. ist diese Vorgehensweise/Adressvergabe bei anderen Herstellern auch üblich?

Gruß,

Rosi

Edit: Hier ein Teil der Adress-Registerliste als Beispiel:
bsp.jpg
 
Zuletzt bearbeitet:
Was mich verwundert ist, dass diese so einfach aufsteigend sind. Normalerweise sollten hier doch Adressen nach den Tables gehen, also 1, 10001, 30001 und 40001.
Naja, es hängt halt davon ab was man angibt.
Ich nehme eben an dass in deiner Tabelle nicht die Register-Nummer sondern die Daten-Adresse aus dem Modbus-Telegramm steht.
Wenn der Master die Register-Nr. 40001 haben will, dann schickt er ein Telegramm mit Function-Code 3 und Data-Address 0 raus.
Eine Erklärung für den Unterschied zwischen Register-Nummer und Daten-Adresse findest du im folgenden unter "How is data stored in Standard Modbus?"
http://www.simplymodbus.ca/faq.htm

Als Angabe würde das Ausreichen wenn der Function-Code dabei stehen würde, kann aber nur 3 oder 4 sein.
Ob du deiner Funktion dann eine Daten-Adresse oder Register-Nr übergeben musst hängt von der Funktion ab.

So wären ja dann theoretisch bei den HoldingRegister 40001-40074/75 alle leer.
Der Schlussfolgerung komme ich nicht nach.
Wenn wir annehmen dass die DWs Daten-Adressen sind und von DW0 bis DW119 gehen dann wären das die Register-Adressen 30001-30200 oder 40001-40200.
 
Zuletzt bearbeitet:
Zurück
Oben