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