Seite 1 von 2
Modbus Abfrage
Verfasst: Mo Feb 06, 2023 4:41 pm
von PeSo
Hallo,
ich will meine Boiler-PV-Überschussheizung mit einer SPS ansteuern.
Dafür brauche ich aus der openWB die Leistungswerte.
Die will ich über Modbus auslesen.
Ich bekomme beim Register 400 (PV Leistung) aber nur die 65535 zurück. Wäre ja eine schöne Leistung, aber der tatsächliche Wert lag bei 10W.
Testhalber habe ich die Register 10104-6 (Spannung L1-L3 /100) ausgelesen: 23480, 23370, 23520. Da passt es also.
Hat jemand einen Tipp, was da schief läuft?
Danke!
Re: Modbus Abfrage
Verfasst: Mo Feb 06, 2023 6:18 pm
von PeSo
Ich habe als PV-Modul einen Shelly 3em. Wenn der jetzt eine andere Stromrichtung angibt als die WB erwartet, kann das die Ursache für den Wert am Modbus haben?
Also kann das evtl. am Vorzeichen liegen?
In der openWB wird PV zwar richtig angezeigt, aber die 65535 deutet ja auf einen Überlauf hin!?
Das Register 400 sollte ja als sint32 eigentlich von -2147483647 bis +2147483647 gehen.
usint16 ist max 65535, als sint wären das -32767. Kann das sein dass da etwas mit den Formaten nicht passt?
Re: Modbus Abfrage
Verfasst: Di Feb 07, 2023 10:07 am
von Gero
Du kennst den eingebauten modbustester unter
http://wallbox.fritz.box/openWB/web/too ... dtest.html ? Der ergibt bei mir auch die 0xFFFF
Mir sieht das nach falschem Register aus. Oder halt Bug. (Ich finde gerade den Beitrag mit den modbus-Registern nicht)
edit: Ah, gefunden:
https://openwb.de/main/wp-content/uploa ... openWB.pdf
Zum ausprobieren nehme ich immer den SoC der Hausbatterie, ein sInt16 bei 502, bei dem funktioniert's, es kommen schöne 44%. Bleibt halt nur die Frage nach dem sInt32 bei 400. Da müsste ich ja dann zwei Werte nehmen. Es kommt: 0xffff und 0xf6a8. Nun muss man aus den beiden eine Zahl machen. Aus 0xf6a8 wird 63144, die 0xffff ignoriere ich, weil das ja das Vorzeichen ist, denn PV-Leistung ist negativ. Also rechnen wir entsprechend von "oben" 65535 - 63144 und das ergibt 2391, was so ziemlich meiner aktuellen PV-Leistung entspricht.
Re: Modbus Abfrage
Verfasst: Di Feb 07, 2023 10:56 am
von PeSo
Danke Gero.
Ja den Modbustester kenne ich.
Da aber die Kommunikation mit meinem Client funktioniert, bis auf dieses eine Register, scheint die die Modbuskommunikation ja zu funktionieren. Zumal die Register 10104-6 richtig dargestellt werden.
Deshalb vermutete ich das Problem im Regeisterinhalt.
Die Auflistung ist hier:
https://openwb.de/main/wp-content/uploa ... openWB.pdf
Bin für Hinweise dankbar.
Re: Modbus Abfrage
Verfasst: Di Feb 07, 2023 11:29 am
von derNeueDet
Deine genannten Register sind alles sint16 Register, das 400 (+401) Register ist aber ein sint32.
Für mich klingt das was Gero schreibt passend.
Re: Modbus Abfrage
Verfasst: Di Feb 07, 2023 5:32 pm
von PeSo
Ja absolut. Geros edit in Bezug auf die zwei Register macht Sinn, klar sind ja alles jeweils nur 16bit. Danke!
Bleibt bei mir das Problem, dass in 401 eine 0 steht. Das wären dann ja FFFF 0000 als sint32 = -65536
Bei -10W müsste da aber FFF6 in 401 stehen meine ich.
Wenn das also bei Gero mit 2392W funktioniert, dann müsste das egal wie auch mit 10W funktionieren und ich müsste es in 401 sehen.
@Gero Auf welcher Firmware läuft deine WB?
Nur lesen, wen Binärzeugs interessiert:
F6A8 entspricht (als sint) bereits -2392
Die Rechnung Register 400 - 401 wäre (mMn) nicht nötig, da das als signed Variable deklariert ist.
Wenn du von FFFF deine Zahl abziehst, bildest du lediglich das Einerkompliment. D.h. Du hast eine signed als unsigned interpretiert und durch die Rechnung wird das dann wieder ausgeglichen. Fehlt glaube ich nur noch eine +1, weil es mMn das Zeierkompliment sein müsste.
Re: Modbus Abfrage
Verfasst: Di Feb 07, 2023 6:23 pm
von okaegi
Hallo Peso
Eine flexiblere Steuerung bringst du mit openwb als Modbus Master und dein sps als Modbus Server (Slave) hin.
Praktisch alle Modbus Anschlüsse im Smarthomebereich sind so in openwb realisiert. Der grosse Voteil von dieser Lösung ist, das Openwb immer noch Steuern kann, wenn du z.b. dein Auto zum Laden einsteckst oder du das Laden deiner Hausbatterie vor den Smarthomegeräten priorisieren willst. Als letztes haben wir hier mittels mdbus rtu über openwb Komponenten der technischen Alternative über Modbus Slave angesprochen. Am Anfang wollte das Ding überhaupt nicht mit uns reden...
viewtopic.php?t=6162
Oder was auch noch super easy ging war die Umwandlung vom Überschuss in ein 0 bis 10V Signal:
viewtopic.php?p=72446#p72446
Gruss Oliver
Re: Modbus Abfrage
Verfasst: Di Feb 07, 2023 6:51 pm
von Gero
Ob‘s nun auf die letzten paar Watt passend ist, konnte ich nicht rausfinden, dazu schwankt das zu stark.
Aber richtig, -1 müsste eigentlich ff ff ff fe sein, die 0 dann 00 00 00 00. Die 1 birgt keine überraschungen.
Olivers Einwand solltest Du mall kurz Revue passieren lassen, denn die Anwendung „schreit“ eigentlich nach einer Implemetierung im smarthome. Ich hatte das nicht erwähnt, weil Du explizit von einer Ansteuerung über SPS schriebst, und da ist sicherlich modbus das Protokoll der Wahl. Im smarthome müsstest Du dich nur um die Implementierung eines Geräts kümmern, die Schaltalgorithmen sind ja schon da.
Re: Modbus Abfrage
Verfasst: Di Feb 07, 2023 8:11 pm
von PeSo
Danke Oliver!
Danke Gero!
Oliver, dein Einwand wegen der Priorisierung trifft ins Schwarze. Das, was mit meiner Lösung gehen würde, wäre da sicher nicht vergleichbar.
Also werde ich mich nochmal mit dem Smarthome Bereich beschäftigen.
Das was du da mit dem CAN-EZ3 hinbekommen macht Spaß anzuschauen. Jetzt habe ich auch das neue wording bezüglich Master/Slave vs. Client/Server gelernt. Kannte ich noch nicht.
Die 0..10V-Geschichte hatte ich bereits gefunden. Aber wo die SPS nun schoneinmal im Netzwerk drinhängt, MUSS das doch auch eleganter gehen.
Leider habe ich erst am Freitag wieder Zugriff auf die WB, dann werde ich versuchen deine Empfehlung umzusetzen.
Sollte ich nicht klarkommen, würde ich euch gerne hier nochmal nerven.
Danke für eure Unterstützung!
Re: Modbus Abfrage
Verfasst: Mi Feb 08, 2023 3:22 pm
von Amok83
Gero hat geschrieben: ↑Di Feb 07, 2023 6:51 pm
Aber richtig, -1 müsste eigentlich ff ff ff fe sein, die 0 dann 00 00 00 00. Die 1 birgt keine überraschungen.
<klugscheiß>
0xFFFFFFFE ist -2. -1 ist 0xFFFFFFFF.
Der Wertebereich von einem SINT32 geht von -2147483648 bis 2147483647
</klugscheiß>