Fronius WR über Modbus-TCP an PFC100 (750-8100), Real oder Int?

passra

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

seit 2 Wochen teste ich eine Wago PFC 100, die demnächst meine S7-200 von 1997 in meinem Hausverteiler ersetzen soll. Diese steuert bisher nur das Licht, die neue Steuerung soll aber auch diverse Geräte abfragen (PV-WR, KWL, UVR1611), einen Webserver für die Bedienung und Erweiterungsmöglichkeiten für die Hausautomation bieten. Das Preis-Leistungsverhältnis und die vielfältigen Zusatzmodule (Can-Bus, KNX, 1-Wire, Dali, EnOcean) sprechen da sehr für die Wago.
Zum Programmieren benutze ich e!cockpit in der neuesten Version.
Zu mir noch schnell: Ich programmiere sein 1994 Siemens-Steuerungen, die letzten 10 Jahre aber fast ausschließlich nur noch PCS7.

Die Software für die Lichtsteuerung war kein Problem, sobald man sich im e!cockpit zurechtfindet.
Nun habe ich mich die letzten Tage mit der Anbindung des Fronius-Wechselrichters an die Steuerung beschäfigt. Der WR stellt seine Daten über Modbus-TCP bereit.
In der SPS läuft der Baustein "FbMbMasterTcp"Aufruf Modbus Master.png, die Kommunikation funktioniert soweit und es kommen auch sinnvolle Daten (als INT).

Der WR stellt seine Daten in 2 Formaten zur Verfügung: Entweder als Real (float)-Werte oder als Integer-Werte.
Register float.png Register int.jpg

Nun zum Problem dabei:

Hole ich die Daten als Int, kann der WR laut Handbuch Fronius den Scale-Factor nicht mit übertragen. In den entsprechenden Registern stehen nur Dummy-Werte. Und da z.B. heute abend eine aktuelle Leistung von 107 W als 10700 übertragen wurde, gehe ich davon aus, dass sich dieser Faktor mit der Höhe der Leistung (max 7000W) ändert und das eine böse Rechnerei geben wird.
Deshalb wären mir die Werte als Real eigentlich viel lieber, auch für die leichtere Weiterverarbeitung.

Problem dabei:
Die Antwortstruktur "typMbResponse"
typMbResponse.png
des Modbus-Bausteins speichert die zurückgelieferten Registerwerte in einem "Array of Word" ab. Schau ich mir die Struktur online an, sind in den Arrayfeldern, die Real-Werte enthalten sollten, nur Nullen zu sehen. Dort hätte ich als Bitinterpretation der Real-Zahlen zumindest "sinnlose" Zahlen erwartet.

Frage:
Wie schaffe ich es, die WR-Werte als Real-Werte einzulesen bzw. das Word-Array in ein Real-Array zu wandeln oder zumindest jeweils 2 Worte in einen Realwert zu pressen?

Hoffe, ihr könnt mir da weiterhelfen.

Danke.

Servus
Manfred
 
Hallo Manfred

Gratuliere da bist du ja schon um einiges weiter als ich, bei mir funktioniert mit meiner S7 1200 noch nichts.
Sie plaudert mit meinen Symo noch nicht richtig...
Zu deiner Frage:
Ich habe am Android eine App laufen wo ich alle Werte meines Symo vernünftig auslesen kann.
Momentan bekomm ich 207 Watt runter, das Register 40084 zeigt dann wie bei dir 20700 an. Das sunssf 40085 zeigt -2. Ich denkt das bedeutet dann die hinteren 2 Nullen weg.
Zumindest beim 40094 (livetime Energy) stimmt da,s bei mir bekomme ich den Wert 4021910(Watt) was auch stimmt, der zugehörige sunssf 40096 ist 0, also keine Stellen hinten weg.
So währe es ja eine leichte umrechnung für deinen Wert, (hoffe mal so).
Ich hoffe heut noch über 999 Watt zu kommen um dann den 40085 zu kontrollieren.
Vieleicht hast du ja noch einen Tipp für meine S7 1200.

LG. Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

manchmal sieht man echt den Integer vor lauter Word nicht :ROFLMAO: Ich habe als Skalierungsfaktor immer sowas wie 1, 10 oder 100 erwartet; auf -1 oder -2 wär ich nie gekommen. Und 65534 in Integer konvertiert ist halt -1, bzw. bei 65533 dann -2. Und schon funktioniert die Umrechnung und die Werte passen :D

Zur Verbindung: Der Fronius erwartet im Protokoll auch die Geräte-ID, der WR ist normalerweise 001 und das Smartmeter 240. Ohne geht es meines Wissens nicht. Ansonsten nur IP-Adresse und Port.

Servus
Manfred
 
Hallo
Schön das es passt,
Das mit der Geräte-ID ist mir klar, nur kann ich die ab der Bausteinversion 4.0 nicht eingeben??? S7 1200
Irgendwie bin ich da auf dem Holzweg.
lg.
 
Hallo
Schön das es passt,
Das mit der Geräte-ID ist mir klar, nur kann ich die ab der Bausteinversion 4.0 nicht eingeben??? S7 1200
Irgendwie bin ich da auf dem Holzweg.
lg.
Es gibt im Instanz-DB des Client Bausteins einen Parameter (Stat-Var) "Byte" MB_Unit_ID, dieser dürfte dem gesuchten entsprechen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Hätte schon fast gedacht es funktioniert da ich im Status 7000 sah, leider hatte ich am Disconnect eine 1 und dann kam kein Error.
Jetzt steht am Status 8383
8383
02
Fehler beim Lesen oder Schreiben der Daten oder Zugriff außerhalb des Adressbereichs von MB_DATA_PTR.
Der Fehler kann sowohl lokal als auch bei der Anweisung "MB_SERVER" auftreten


und habe schon alles versucht und geht nicht!!!
Hat da einer eine Idee?

Lg
Stefan
 
Zuletzt bearbeitet:
Hallo
Hätte schon fast gedacht es funktioniert da ich im Status 7000 sah, leider hatte ich am Disconnect eine 1 und dann kam kein Error.
Jetzt steht am Status 8383
838302Fehler beim Lesen oder Schreiben der Daten oder Zugriff außerhalb des Adressbereichs von MB_DATA_PTR.
Der Fehler kann sowohl lokal als auch bei der Anweisung "MB_SERVER" auftreten

und habe schon alles versucht und geht nicht!!!
Hat da einer eine Idee?

Lg
Stefan
Da müsstest du jetzt schon deutlich präziser werden ... wie rufst du den Baustein mit welchen Parametern auf?
 
Und vielleicht das Problem im Siemensbereich neu eröffnen ;) dort werden sich doch mehr Siemensprogrammierer wie hier im Wagobereich tummeln
 
Zuletzt bearbeitet:
Hallo Manfred,

habe das ganze auch schon in ähnlicher Konstellation (PFC200 & Fronius Symo) versucht, habe aber bisher keine sinnvollen Werte bekommen...
Werde es dann auch mal mit deiner Lösung über den FbMbMasterTcp Baustein versuchen, vielleicht habe ich damit mehr Glück.
Warum verwendest du nicht die integrierte MODBUS Funktionalität von e!Cockpit ?

Gruß
Eloee
 
Du meinst, in der Gerätestruktur MODBUS-Variablen anlegen?

Wenn man das macht und dann online geht und mit der Maus über die Steuerung fährt, sieht man, dass die Modbusfunktion nicht aktiv ist. Dies geschieht erst, wenn der Masterbaustein läuft.
Nach längerer Suche bin ich dann darauf gekommen, dass diese Variablen nur als Slavedefinition fungieren, es braucht dann also einen externen Modbusmaster, der die Werte aus der PFC ausliest.

Soll die PFC Master sein, geht das meines Erachtens nur über den Masterbaustein.
PFC online.png

Parameter zum Baustein (für das Smartmeter ist die ID dann 240 und nicht 1):

Modbus Parameter.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau das meinte ich,
also ich habe z.B. einen Siemens PAC3200 Energiezähler sowie einen Arduino als Modbus Slaves über diese Gerätestruktur angebunden, das heißt grundsätzlich funktioniert es schon ohne den Modbusmaster Baustein.
Blos hat es beim Fronius WR jetzt eben gehakt, werde aber auch nochmal versuchen die Werte als INT abzurufen, hatte das damals glaube mit den Float Werten versucht und das ging bei dir ja auch nicht...
Falls das immernoch nicht klappt, werde ich auch mal deine Lösung versuchen, wobei ich dann nicht weiß ob das Probleme gibt wenn ich das über die Gerätestruktur und den Baustein mache.

Liebe Grüße
Eloee
 
hat schon wer geschafft einen Fronius per Modbus TCP auszulesen? Habt ihr da einen fertigen Baustein oder Anleitung? Ich finde das Gerät nicht im Modbus(Port ist offen aber Scanner finden nichts)!
Oder hat es wer geschafft diesen per API einzubinden?
 
Habe es über ein Hanyapp problemlos auslesen können, aber heute schläft der WR schon. Kann dir aber morgen Mal in den Einstellungen reinschauen, wenn's noch hell ist damit er online ist!
 
Moin, es geht übrigens auch mit dem e!C Modbus Konfigurator, was einfacher und schneller ist, als mit dem FB. Allerdings muss man dann die Zeiten für Timeout und Retrasmission hoch setzen, da der WR nur einmal pro Sekunde antwortet.
 
Zurück
Oben