Stromzähler mit RS485

Anbei die Kommunikationsseite des Handbuchs. Alles andere sind nur die Werte, die man durch Drücken der SET-Taste nacheinander am Zähler angezeigt bekommt. Wie gesagt, so richtig kann ich daraus nichts entnehmen, was die Kommunikation angeht.

Da ich keinen Beitrag im Forum zu diesem Zähler gefunden habe, gibt es vielleicht jemanden, der mal die grundsätzliche Kommunikation erklären könnte. Mit dem Hex-Geraffel kenne ich mich ncht wirklich aus.

Aus anderen Scripten habe ich mal folgendes entnommen: Es wird sicherlich so sein, dass man dem Zähler etwas senden muss (Anfragen an Register), damit er die entsprechenden Werte zurückschickt. Dazu kommen noch Steuerzeichen, oder?

hex.zip (632 KB)

Schau mal in den Thread von dem SDM630 rein, das ist ziemlich weit hinten ein Script zum umrechnen der Hex Werte drin. Vielleicht kannst du damit was anfangen.

Gesendet von meinem Nexus 4 mit Tapatalk

Beim 630 ist es wohl das Low-Byte in dezimal, also für L1 Power 0C -> 12. Oder die exportierte Energie 4A -> 74. Die 12 bzw. 74 muss dann wohl als Leseadresse in die ModBus-Instanz. Im Moment kann ich es mangels installiertem Zähler noch nicht testen. Also vorerst nur Theorie. Eine richtige?

Woher bekomme ich denn die Modbus-Adressen für den DRS210C? Oder kann ich mir die berechnen? Das gibt es am Beiblatt (Anhang von hier) keine Angaben zum Low-Byte. Dennoch soll ModBus unterstützt werden.

@mws:

Schau mal in den Thread von dem SDM630 rein, das ist ziemlich weit hinten ein Script zum umrechnen der Hex Werte drin. Vielleicht kannst du damit was anfangen.

Welchen Beitrag meinst du genau?

Die Adressen müssen im Manual stehen und deren Bedeutung. Wenn das so wie bei dem SDM630 funktioniert bekommt man die Fload Werte als 16 Bit Hex zurück welche Exponent und Mantisse repräsentieren.

Hier ist das Script dazu: http://www.ip-symcon.de/forum/threads/24128-3-Phasen-Stromz%C3%A4hler-SDM630M-DC-alle-Werte-auslesen-!!!-Installationssript-!?p=223214#post223214

Habe mich bei B+G um eine lesbare Anleitung beworben und wurde angenommen:)

Im Anhang das Beiblatt als pdf. Als Com-Parameter sind 1200/8/1/even zu benutzen.
Habe das Beispiel mit der Seriennummer probiert. Zumindest kommt etwas zurück.

00 03 10 00 00 08 41 1D

<?

$id_regvar = 12597 /*[Serial Port - Zähler PV-Anlage (RS485)\Register Variable]*/  ;
$id_comport = 38258 /*[Serial Port - Zähler PV-Anlage (RS485)]*/ ;              //Serial Port
$sleep=400;

//********************************************** SN auslesen ****************************************

// Inhalt von RegVar löschen
RegVar_SetBuffer($id_regvar, "");

// Hexwerte senden
$cmd = chr(0x00).chr(0x03).chr(0x10).chr(0x00).chr(0x00).chr(0x08).chr(0x41).chr(0x1D); // SN
COMPort_SendText($id_comport, $cmd);

// Warten
ips_sleep($sleep);

// Inhalt von RegVar löschen
RegVar_SetBuffer($id_regvar, ""); 

?>

Nun wollte ich die Spannung auslesen:

00 ID
03 Function code
20 Register (1)
00 Register (2)
00 ??
01 Länge:2
?? CRC?
?? CRC?

Was muss ich da noch ergänzen? Die CRC berechnet sich doch irgendwie aus den vorangegangenen Werten. Aber wie? Ich komme auch mit Online-Rechnern nicht im oberen Beispiel auf 41 1D.

DRS-428DE modbus address table.pdf (296 KB)

Ist Das nicht Modbus RTU? Da brauchst Du nur das Ergebniss entsprechend umrechnen, nix mit CRC…

Also Splitterinstance (Modbus RTU) auf eine serielle Schnittstelle (RS232 Boudrate 1200 o RS485) und die default Adresse laut PDF „1“
Dann mal eine Modbus lese instance auf Das was Du lesen willst. zB Adr 02000 Dword --> Spannung.

Oder sehe ich da was falsch…?..?

Gruß Helmut

Hi ich werde auch nicht schlau aus den Paar Infos :frowning:

Versuche mal folgendes:

  1. Lege eine Modbus Instanz an und verbinde dir mit dem Comport.

  2. Als Typ wählst du String aus.

  3. Haken bei nur Lesen, und als Adresse gibst du mal 4096 ein.

  4. Auslesen kannst du auf 5000ms lassen.

Jetzt kannst du mal schauen ob was in Value Variable geschrieben wird :wink:

Ich hoffe es klappt.

Ihr habt recht - ich habe keine Ahnung. Deshalb frag euch ja.

Modbus ist ein Weg, da bekomme ich keine Werte. Ihr schaut euch das pdf an und wisst , worum es geht. Ich nicht. Daher würde ich gern den Zusammenhang wissen.

Nach viel Herumprobieren bekomme ich mit Leseadresse 4096 keine Werte. Typ bzw. Einheit String gibt bei mir nicht. Alle Einheiten durchgegangen. Auch habe ich in der Splitter-Instanz ID 0 und 1 wowie LSW/MSW-Werte vertauschen an-/abgehakt. Nichts.

Also du legst eine Modus Spliter Instance an:

Verbindest Sie mit dem Comport.

Jetzt Legst du ein Modus Gerät an:

Ich hoffe das Hilft dir weiter…

Nerf mal B+G, das Sie dir die Modbusadressen geben :wink:

Boudrate ist laut PDF 1200 (default), bei Dir auch?

Laut Tread-Überschrift ist es RS485, stimmt es?

Gruß Helmut

Wie kommst du auf 4096? Etwa 0x1000 hex als dez?

Genau :wink: So ist es beim 630 jedenfalls zu rechnen :wink:

Mit den Modbus-Einistellungen und 4096 bekomme ich 5,87747245476075E-39 als Ergebnis, was die Seriennummer darstellen soll. Mit 12288 (0x300 für die total active energy) bekomme ich diesen Wert 1098184131. Also etwas scheint zu funktionieren. Ich gehe mal davon aus, das man mit total active energy den Gesamtzählerstand meint.

@helmut: ja, 1200 / 8 / 1 / even

YES !!!

Dann vergiss das mit dem Senden an den Comport mit dem Script, dann basteln wir morgen das Auslese script :wink:

Bitte lese mal die Volt aus und poste den Wert :wink:

Und jag das mal durch das Skript, dass ich weiter oben gepostet habe.
Wobei im hinteren Teil steht als Übergabe Value „Float“ vielleicht muss gar nichts umgerechnet werden.

Leider bekomme ich nur einen Wert für die Leseadresse 12288. Wer weiß, was ich damit auslese. Wahrscheinlich hat das gar nichts mit total active energy zu tun. Bei anderen Leseadresse = INT(hexadresse) kommt immer 0.

Ich werde mal auf die angeforderten Modbus-Adressen von B+G warten.

Aber mal auf den Anfang des Threads zurück. Wenn ich das ein wenig anpasse, sehe ich im Debug-Fenster der RegisterVar auch was ankommen. Wie kann man das in lesebare Zeichen wandeln? Kann man sich das anderweitig (echo, array, …) anschauen, damit ich das umrechnen kann?

Hat einer die Bedienungsanleitung vom DRS210C ?

Schau hier. Das ist das File von B+G. Auch wenn es anders heißt, ist es für den DRS210C passend. Ist aber für mich bisher nicht viel versprechend.

Modbus-Adressen habe ich nicht bekommen. Hatte eine Mail geschrieben, aber keine befriedigende Antwort bekommen. Die vertreiben die Geräte nur und haben vom Fabrikanten sehr wenig Infos. Hatte neulich ein dann doch sehr freundliches Telefonat ohne ebenfalls weitere Angaben zu bekommen. Alle Infos, die die geben, sind größtenteils selbst herausgefunden. Daher nur sehr dürftig erscheinender Support.

Mein ToDo (wenn mal mehr Zeit dafür bleibt):

[ul]
[li]Auslesen bzw. Abfrage nach drapple’s Prinzip. [/li][li]Die Schnittstellenparameter sind vorerst fix, sollen durch Schreibbefehle jedoch änderbar sein. Das ist für mich wichtig, da ich den SDM630M auf dem gleichen Bus betreiben möchte. Der wiederum lässt nur 2,4 - 38,4kbaud zu.[/li][li]Dann noch die Modbus-Adressen erforschen. Beim 630er sind diese Registeradresse - 1. Vielleicht ist es hier ähnlich.[/li][/ul]