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.
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.
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.
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.
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.
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.
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.