Modbus real64 schreiben scheint eine 0 zu senden (Siemens Sentron PAC)

Hallo liebe Kollegen,

Ich habe ein Siemens PAC3200 über Modbus TCP angeschlossen. Früher konnte ich den Zählerstand überschreiben um mit dem EV Zählerstand synchron zu sein.
Jetzt habe ich ein neues eingebaut, habe also die Funktion schon ewig nicht mehr gebraucht. Egal welchen Wert ich schreibe der Zähler im PAC wird immer auf 0 gesetzt.
Hat sich da seit v3.2 etwas geändert was das verursachen könnte? Ich bin auf dem neuesten release.

Gruß

Heinz

Sent from my SM-G935F using Tapatalk

Hi,

Ich hab mal einen Test gemacht und wenn ich einen Modbus write real 64 mache mit dem Wert 100.1 gehen als Nutzdaten raus: 0F E1 C1 40 00 00 00 00.
Kann mir jemand erklären wie das zusammen hängt und ob das stimmt? Das Sentron hat danach einen affig kleinen Wert im Zähler, 3.6E-235. Wenn man versucht den anzuzeigen stürzt es sogar ab.
MSB LSB tauschen geht nicht weil lesen tut’s alles richtig.

Gruß

Heinz

Sent from my SM-G935F using Tapatalk

Magst du bitte mal schauen welche Daten reinkommen? Evtl. haben wir dort ein paar Bytes verdreht?!

paresy

Glaub ich nicht, das was rein kommt passt ja. Stimmt auch mit dem Zähler display überein. Wenn ich allerdings schreibe dann springt der Zähler auf die 3.6E-235 in dem Beispiel und das wird dann auch wieder in IPS zurück gelesen.

Sent from my SM-G935F using Tapatalk

Ja. Deswegen. Magst du mir mal den Debug vom Empfang zeigen? Lesen und Schreiben sind zwei paar Schuhe :slight_smile:

paresy

Alles klar.
Ich habe das dump file von der Schnittstelle angehängt. Register offset ist 0x03 29, zeile 124 wird die 100.1 geschrieben.
Glaub in Zeile 76 wird davon gelesen.

Zeile 124 100.1 geschickt.txt (21.6 KB)

Hm. Ich denke den Fehler gefunden zu haben. Fix zur 4.2 RC2

paresy

Vielen Dank! :slight_smile:

Sent from my SM-G935F using Tapatalk

Hi Paresy,
Ich glaube beim Schreiben von einem DWord32 geht auch etwas schief. Die erste Adresse geht (0) aber wenn ich eine Instanz für die nächste Adresse (2) anlege und WriteRegister darauf ausführe, wird auf die Adresse 0 geschrieben. Auf der 2 kommt nichts an. Lesen funktioniert normal auf beiden Adressen.

Gruß

Heinz

Sent from my SM-G935F using Tapatalk

Magst du es noch mal mit einer ganz anderen Adresse testen? Ich glaube nicht, dass es hier einen Fehler gibt. Das wäre schon längst aufgefallen da dann alle FCs betroffen wären.

paresy

Das ist auf einem Raspi mit Codesys. Ich habe ein einzelnes Wort auf Adresse 50 belegt und das geht ganz normal. Ich kann mal etwas dazwischen legen. Wenn ich allerdings Lesen kann dann kann es doch nicht sein dass beim Schreiben der richtige Wert auf das falsche Register geschrieben wird? Als ob die Schreibadresse nicht beachtet und stattdessen 0 verwendet wird, die leseadresse aber richtig eingesetzt wird.

Sent from my SM-G935F using Tapatalk

Jetzt gehts. Ich hatte einen dreher drin.

Sent from my SM-G935F using Tapatalk