Wago /SPS über Modbus(TCP/IP) in FHEM steuern

Begonnen von lechez, 05 Mai 2013, 10:50:13

Vorheriges Thema - Nächstes Thema

lechez

Hallo,

besitze eine Wago SPS die momentan die Rolläden etc. steuert.
Würde gerne diese mit FHEM verbinden.
1. FHEM ggf. steuert SPS.
2. FHEM setzt und liest Werte in SPS.
3. FHEM visualisiert die Werte der SPS.

Am besten über Modbus TCP/IP.
Habe dazu nur "alte" beträge gefunden.
z.B. https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/npNHGLIO4Hs

Hat jemand über Modbus seine SPS an FHEM angeschlossen? Wenn ja wie?

Gruß
lechez

BennyRPI

Hallo lechez!

Ich bin selbst Programmierer in der Automationswelt, in meiner Firma nutzen wir ein sehr komplexes System.
Privat spiele ich gerne mit solchen Sachen rum....
Wago kenne ich gut, wir benutzen hauptsächlich den 750-352 mit denn benötigten Klemmen aus der 750er Serie.
Ich hätte auch großes interesse daran ob Fhem auch mit der Wago Hardware funktioniert.

Mopedpaul

Hallo,
auch ich bin an einer Modbus Anbindung sehr interessiert. Bei mir geht es nicht um die Wago Technik sondern um eine Solaranlage die über einen Solarlog visualisiert wird. Auch hier können Daten aus dem Solarlog direkt über MOdbus TCP/IP ausgelesen werden. Dieses Modbus Protokoll scheint ja sehr vielseitig zu sein - Warum ist es noch nicht in FHEM ?
System:FHEM 5.7 auf Intel NUC  mit 1xCUL(433) ,1xCUNO V2 (868)mit Onewire,2xNetIO mit Onewire , HMLAN
,Max Cube , Philips Hue, webViewControll, MiLight
Devices:FS20,Onewire (Cuno+NetIO),Intertechno ,Homematic (Keymatic & TC & SD) Max ,Solaranlage 7,3kWP mit Solarlog 200

oniT

Hallo Mopedpaul,

passt zwar jetzt nicht ganz zum Thema Wago, aber darf ich fragen welchen Solar-Log Du hast? Ich dachte da gibts es Modbus über RS485 und nicht Modbus TCP/IP.


Danke
TinoB
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

lechez

Hallo zusammen,

ich habe jetzt Modbus Anbindung hinbekommen.
@oniT: Es gibt Modbus über TCP und auch über RS485.
Zitat Wiki: Mittels Modbus können ein Master (z. B. ein PC) und mehrere Slaves (z. B. Mess- und Regelsysteme) verbunden werden. Es gibt zwei Versionen: Eine für die serielle Schnittstelle (EIA-232 und EIA-485) und eine für Ethernet.
Für die Anbindung an die Solaranlage, wenn der Logger nur einer RS485 hat bekommst du einen umsetzer aufs LAN.
Infos was man machen kann findest du unter anderem im Forum http://www.photovoltaikforum.com/solarview-f104/
Ich habe eine Netzwerkschnittstelle bei meinem Wechselrichter, über die ich auslese und in FHEM darstelle.

@BenyPRI:
Habe jetzt geschaft meine Homematic Türgriff erfolgreich mit der Wago SPS zu koppeln.
Ich habe in der Wago jetzt globale Variable definiert. Diese werden über ein Modbus Befehl von FHEM gesetzt oder von Wago SPS gesetzt.
Mein SPS Programm überprüft diese Variable. Wenn ich jetzt also im Garten bin, fährt meine SPS die Rollade von der Tür nicht mehr runter.
-Ich frage auch mein PERI Bewegungsmelder über die Helligkeit im Raum ab. Er steuert dann die Wago in die Beschattungsposition.
-Wago meldet auch die Position der Rolläden. Diese werden/sollen dann in FHEM angezeigt. (Muss ich noch machen).

Habe über das Projekt Modbus TCP mit Martin (NFC etc..) gesprochen. Ich soll ein Wiki und ein Modul schreiben. Bin gerade dran erstmal ein Modul zu schreiben, dass benutzt werden kann. Bis jetzt ist viel hardcoded. Dann folgt was Wiki.

Modbus habe ich natürlich nicht neu erfunden  siehe https://github.com/sourceperl/MBclient
Habe dazu ein FHEM Modul geschrieben, dass die Funktionen mit den richtigen Adressen aufruft bzw abfragt.

Vielleicht konnte es weiter helfen.

Gruß
lechez


oniT

Hallo lechez,

ich möchte das Thema Wago jetzt nicht zerstören, aber weil gerade das Thema Modbus hier enthalten ist, das mit Modbus TCP kenne ich. Mich hat es nur gewundert das Solar-Log eine Modbus TCP Anbindung hat. Somit habe ich das nur falsch verstanden uns es geht um einen extra Konverter.

Ok, sollte man nicht zum Thema PV ein eigene Rubrik eröffnen? Ich finde dies ist sehr interessant. Ich werde dies mal im "FHEM Forum" anfragen.

Gruß
TinoB
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Mopedpaul

Hallo Timo,
ich habe den Solarlog 200. Aber das können alle Solarlog und hat nichts mit der Anbindung der Wechselrichter zu tun. Das ist ein TCP/IP Zugriff über Port 502 der Solarlog Netzwerkschnittstelle.

Im Anhang die Beschreibung zun Solarlog Modbus. Wird wohl nicht groß auf der Solarlog Seite darüber berichtet, ist halt nur was für Leute, die die Solarlog Daten für weitere Anwendungen auswerten wollen - so wie wir halt. Habe diese Infos auch erst auf spezieller Nachfrage per Mail erhalten.

Es gibt verschiedene Versionen bezüglich des Umfangs der Infos (abrufbare Register) über dem Modbus. In der Modbus Free Version sind zumindest die Wichtigsten Parameter enthalten - Power AC+DC, Spannung AC+DC, Ertrag gestern,Tag,Mon,Jahr, (Verbrauch Momentan-am Tag-gestern - nur mit S0 Zähler für den Verbrauch im Haus).
Vor allem Interessant für die intelligente Schaltung von Verbrauchern die Parameter P-AC momentane AC Leistung und ggf aktueller Verbrauch. Vor allem bei weicher 70 % Regelung. Da kann man ggf Verbraucher zuschalten, wenn der Wechselrichter andernfalls in die 70% Begrenzung geht, und somit die volle Leistung der Anlage nutzen.

Wer mehr braucht (MPP Tracker, Temperaturen usw. muss dann eine Lizenz für den erweiterten Zugriff erwerben (Siehe PI_ModbusTCP_Interface_de.

Ich habe bereits erfolgreich die Daten von Adresse 3500 bis 3528 ausgelesen (das hier beschriebene Script vom Modbus (2010) mit den entsprechenden Netzwerk und Registeradressen. Allerdings nicht unter FHEM sondern direkt als Perl Script vom PC aus.
Komme jetzt aber nicht weiter bei der Einbindung in 99_myutils. Habe die 99_myutils mal angehängt. Vielleicht kann ja jemand weiter helfen. So wie es jetzt ist, hängt sich FHEM auf wenn die Sub Solarlog aufgerufen wird.

Ich stelle mir das so vor
Die Subroutine Solarlog in 99_myutils einbinden, dann über define die Routine aufrufen, hier die Registernummer übergeben und als Rückantwort den Registerinhalt zurück. Solarlog Adresse, Port (fest-502),Werte für Lesen (04), Schreiben (06).. usw können ja fest unter 99_myutils eingetragen werden.

FHEM
define SolarTimer at +*00:02:00 {Solarlog(Register,Wert)}
attr SolarTimer group Workflow
attr SolarTimer room Solaranlage
   

MfG Uwe
System:FHEM 5.7 auf Intel NUC  mit 1xCUL(433) ,1xCUNO V2 (868)mit Onewire,2xNetIO mit Onewire , HMLAN
,Max Cube , Philips Hue, webViewControll, MiLight
Devices:FS20,Onewire (Cuno+NetIO),Intertechno ,Homematic (Keymatic & TC & SD) Max ,Solaranlage 7,3kWP mit Solarlog 200

Puschel74

Hallo,

ich hab grad eine Wago 750-880 (die mit den 2 Ethernet-Ports) hier "rumliegen" und wollte mal fragen ob es jemand geschafft hat per TCP/IP eine Wago-SPS in fhem ein zu binden.
Wäre genial wenn das ginge da ich auch ein Dali-Modul dafür hab und dann evtl. sogar Dali-Geräte ansteuern könnte (Digital-In/Out, Analog-In/Out versteht sich selbst ;-) ).

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

mcbain2k

Hallo,
 ich schließe mich an, seit dem Umstieg auf fhem langweilt sich meine WagoSPS auch zu tode.

MFG
 McBain


lechez

Hallo,

habe es erstmal quick and dirty implementiert:

Erst in Wago globale Variable definiert. Diese ist erreichbar als Modbusadresse 12288

VAR_GLOBAL
   SPS_Bit1_IPS_Adresse_12288  AT %MX0.0:BOOL;   
END_VAR

in /opt/fhem/FHEM

mbclient.pm (Hab ich im Internet gefundeng)
99_modbus.pm hier ist eine Funktion, die die Modbusadresse den Wert setzt.

Ich schreibe hier die Stellung vom Türgriff:
define tuer_griff_open_close notify CUL_HM_HM_SEC_RHS_1F135D { if (Value("CUL_HM_HM_SEC_RHS_1F135D") eq "closed") {write_modbus("0")} else {write_modbus("1")} }

In der Wago wird dann dieser Wert abgefragt, so dass mir die Rolladen an der Terrassentür nicht runterfährt wenn ich draussen bin.

Wir irgendwann auch mal erweitert.
Vielleicht hilft das jemand

Gruß
lechez





Puschel74

Hallo,

wow, es geht also doch was.
Genial.
Zum Glück hab ich bald 2 1/2 Wochen frei - da werd ich meine Wago-SPS mal ans Netz hängen.

Aber in der 99_modbus.pm müsste doch diese Zeile
Zitat$m->host("192.168.2.5");
angepasst werden oder täusch ich mich da?
Das sollte doch die IP der Wago sein oder nicht?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

lechez

Hallo,

ja die IP muss angepasst werden.

auch ggf die Modbus Adresse muss angepasst werden.

Hier mal alle Adressen in der Wago die ich gesetzt habe.

VAR_GLOBAL
   SPS_Bit1_IPS_Adresse_12288  AT %MX0.0:BOOL;   (*Modbusadresse 12288*)
        SPS_Bit17_IPS_Adresse_12304  AT %MX1.0:BOOL;   (*Modbusadresse 12304*)
   SPS_Bit33_IPS_Adresse_12320  AT %MX2.0:BOOL;   (*Modbusadresse 12320*)
   SPS_Bit49_IPS_Adresse_12336  AT %MX3.0:BOOL;   (*Modbusadresse 12336*)
   SPS_BYTE101_IPS_Adresse_12338 AT %MB101 :BYTE;   (*Modbusadresse 12338*)
   SPS_Word100_IPS_Adresse_12388 AT %MW100 :WORD;   (*Modbusadresse 12388*)
   SPS_INT200_IPS_Adresse_12488 AT %MW200 :INT;   (*Modbusadresse 12488*)
   SPS_SINT400_IPS_Adresse_12688 AT %MW400 :SINT;   (*Modbusadresse 12688*)
   SPS_SINT416_IPS_Adresse_12704 AT %MW416 :SINT;   (*Modbusadresse 12704*)
   SPS_REAL500_IPS_Adresse_13288 AT %MD500 :REAL;   (*Modbusadresse 13288*)
END_VAR

Gruß

ParkerLouis

Hallo Leute,

das ist mein erster Post hier im Forum. Ich bin zu FHEM gekommen wie die Jungfrau zum Kind, als ich festgestellt habe, dass es da "sowas" für die neue FritzBox gibt.

Ich steuere unser Haus komplett mit einer Wago. Alle Taster im Haus laufen zu einer zentralen Wago. Von da aus wird alles über Relais angesteuert. Das ganze System läuft super. Einzig das Einstellen der Jalousiezeiten über die JAVA-Visu ist recht bescheiden und läuft auch nicht auf mobilen Geräten.

Jetzt bin ich über diesen Thread gestolpert, weil ich die Wago gerne über Modbus an Fhem ankoppeln will.

Ich bin einfach mal der "Anleitung" gefolgt und habe versucht, die angehängten Module auf die FritzBox zu laden.

Die Verzeichnisstruktur auf meiner FB sieht allerdings etwas anders aus. Sämtliche Dateien scheinen in /fhem/usr/share/fhem/FHEM zu liegen. Dort habe ich 99_Modbus.pm und MBClient.pm abgelegt.

Kann mit jemand helfen, wie ich eine Modbusadresse nun auslesen und darstellen kann?

Vielen Dank!

lechez

Hallo ParkerLouis,

Ich habe ein Update der Datei 99_modbus vorgenommen. Anbei die neue Datei

1. MBclient und 99_modbus.pm in das Verzeichnis ..FHEM/ kopieren.
2. In MBClient die IP-Adresse deine Wago eintragen. $m->host("192.168.2.5");


3. in Wago globale Variable eintragen. Und laden.
z.B.
SPS_Bit_IPS_Adresse_12288  AT %MX0.0:BOOL;   (*Modbusadresse 12288 Tuergruff*)
SPS_INT212_IPS_Adresse_12500 AT %MW212 :INT;   (*Modbusadresse 12500*)

3. FHEM neu starten.

4.Hier ein Beispiel wie ich die Stellung des Türgriffs (Homematic) an die Wago weiterleite, so dass die Rolladen nicht runter fahren, wenn die Tür nicht geschlossen ist. in fhem.cfg:
 define tuer_griff_open_close notify CUL_HM_HM_SEC_RHS_1F135D { if (Value("CUL_HM_HM_SEC_RHS_1F135D") eq "closed") {write_modbus(12288,0)} else {write_modbus(12288,1)} }

5. Ich habe auch den Impulausgang S0 meines Stromzählers (Vom EVU geliefert ITZR) auf Eingänge der Wago gelegt.
Da ich ein Zweirichtungszähler, Solarzähler habe super Sache.
Ich habe mal Qick and Dirty ein Modul dafür gemacht. Wird aber noch schöner. Habe mir mal erlaubt von einem Modul für KOSTAL.pm abzuleiten. Muss das Modbul noch variabler gestalten aber das kommt noch...

in fhem.cfg
define S0_Zaehler S0
attr S0_Zaehler delay 60
attr S0_Zaehler delayCounter 4
attr S0_Zaehler loglevel 6
attr S0_Zaehler room Hausanschlussraum
define log_S0_Zaehler FileLog ./log/S0_Zaehler-%Y-%m.log S0_Zaehler:(Zaehler-EVU|Zaehler-Solar|Zaehler-Solar-Einspeisung|Zaehler-Solar-Eigenverbrauch).*
attr log_S0_Zaehler room Hausanschlussraum
define wl_log_S0_Zaehler_1 weblink fileplot log_S0_Zaehler:wl_log_S0_Zaehler_1:CURRENT
attr wl_log_S0_Zaehler_1 room Hausanschlussraum

Ich hoffe ich konnte dir weiter helfen.

Gruß

lechez