neues Modul: SIEMENS Anbindung / S7 / Siemens Logo

Begonnen von charlie71, 12 August 2014, 15:33:23

Vorheriges Thema - Nächstes Thema

charlie71

Hallo,

vielen Dank fürs Bier.
Es währe schön, wenn ihr eure config für die S300 zusammenfasst und einen Eintrag ins Wiki schreibt.

lG
Charlie71

charlie71

Hallo Leute,

hier kommt die V2.2 mit folgenden fixes und features:

* Fix: for Multi DB configurations
* Fix: FHEM does not chrash if PLC is not available
* New Feature for Logo 8: Now NI and NQ for simply config method is supported

Neue Version kann wie immer auf der ersten Seite herunter geladen werden.

lG
Charlie71

fu_zhou

Hallo Charlie71,

ich hätte da noch eine Idee...
Wäre eine DRead/ DWrite und ARead/ AWrite Kombination machbar?

Also ich würde gerne das Icon, auf das ich zum TRIGGER (DWrite) auslösen klicke, dynamisch in Abhängigkeit vom Zustand der Rückmeldung (0 oder 1, DRead) tauschen. Im Moment brauche ich zwei "Zeilen" auf der FHEM Web-Oberfläche: Eine zeigt die Rückmeldung mit einem dynamischen Icon an, eine löst TRIGGER aus mit einem statischen Icon.

Bei ARead/ AWrite wäre es ähnlich: Lässt sich neben einem gelesenen Wert (ARead) der dazugehörige Sollwert (AWrite) in einer Zeile darstellen? Im Moment sind das ja auch mindestens 2 Zeilen.

Gruß, fu_zhou
FHEM auf RasPi 2, S7-300 mit ET200S über ProfiNet

charlie71

Hallo fu_zhou,

... du willst mich also wirklich beschäftigen  ;)
aber Scherz beiseite, im AWrite und DWrite ist der aktuelle Zustand/Wert im Status verfügbar. Dieser kann natürlich zur Anzeige genutzt und ausgewertet werden.

können damit deine Anforderungen erfüllt werden?

Wenn nicht ist mir noch nicht klar was man am Modul für deine Anforderung Anpassen muss.
Gibt es vielleicht ein anderes Modul das dieses Problem gelöst hat, dann kann ich mir die Lösung ja dort anschauen.

lG
Charlie71

fu_zhou

#274
Hallo Charlie71,

anstatt des internen Status von DWrite möchte ich den Status "extern" beschreiben mit dem Wert aus einem DRead. Beispiel: Ich schalte eine Heizungspumpe über FHEM ein. Dieser Befehl geht per DWrite an die S7, die wiederum einen Digitalausgang setzt. Damit wird ein Schütz betätigt (ich verwende keine Relaisbaugruppe). Der Schütz hat einen Hilfskontakt (Digitaleingang auf der S7), der anzeigt, ob der Schütz wirklich angezogen hat. Das heißt natürlich noch nicht unbedingt, dass die Pumpe läuft (Strömungswächter wäre besser), aber man weiß zumindest, dass der Digitalausgang gesetzt wurde und die Rückmeldung funktioniert. Diese Rückmeldung vom Schütz (Digitaleingang auf der S7) würde ich jetzt gerne verwenden, um das Icon zu tauschen, da alleine der Befehl über DWrite an die S7 eigentlich nicht ausreicht, um zu wissen, dass die Pumpe läuft bzw. das Schütz angezogen hat. Vielleicht noch ein zweites Bit für die Störung, das dann auch von der S7 kommt. Die Idee wäre:
Ich schalte in FHEM, das Icon bleibt dunkel. Jetzt kommt die Rückmeldung aus der S7 über DRead und bei "1" wechselt das Icon dann zu hell. Falls die S7 eine Pumpenstörung erkennt, kann diese mit einem weiteren DRead gelesen werden und wenn das Bit sitzt wird das Icon rot.
Damit hätten wir dann Schalten, Betriebsmeldung, Störmeldung in einer "Zeile" (ein define) in FHEM und bräuchten nicht 3 Zeilen für eine Pumpe: Schalten (DWrite), Betrieb (DRead), Störung (DRead).

Pumpe ist nur ein Beispiel, für Licht gilt das selbe. Hier ist die Rückmeldung zwar sichtbar, wenn ich von unterwegs aber schauen möchte, ob meine Anwesenheitsimulation funktioniert, hätte ich damit ein besseres Gefühl.

Bei AWrite wäre das im Prinzip Ist-Wert (aus der S7) und Sollwert (FHEM) in einer Zeile (mit einem define).

Ist meine Idee jetzt etwas klarer geworden?

Danke und Gruß!

fu_zhou
FHEM auf RasPi 2, S7-300 mit ET200S über ProfiNet

alfonsmoeller

#275
Hallo Charlie71,
Zitat
Hallo Charlie
Wir geben Dir ein Bier aus! Wie wo wann! Ich bin totally happy!
darf ich mich denen anschließen, habe gerade eine RTX integriert.
Erster Kontakt funktioniert schon mal.
m.f.G. Alfons

charlie71

Hallo fu_zhou,

ich denke, dass ich deine Anforderungen verstehe.
Ich bin mir nur nicht sicher ob die Anforderungen innerhalb dieses Moduls gelöst werden sollte.
Es gibt viele Beispiele wo sich mehrere Eingänge und Ausgänge zu einem "Objekt" kombinieren lassen sollten.

Ich denke dass dieses Problem über alle Module hinweg existiert, oder vielleicht gibt es hier schon eine Lösung?

lG
Karl

Porsti

Halli Charlie,

habe gerade das Modul mit der V2.2 in Betrieb genommen wollte mal die vereinfachte Config für Netzwerk Eingänge ausprobieren. Ich wollte auf den NI1 schreiben und bekomme beim Speichen die Fehlermeldung das die Syntax nicht stimme und nur I, Q, M zugelassen sind. Da wird wohl noch eine Sperre aktiv sein.

Gruß Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-SEC-SCo
MQTT,Shelly,  KNX (Merten, MDT, Siemens, ABB)
Erneuerbare: SMA + Mennekes

fu_zhou

Hallo Charlie,

du hast recht, man solltes das in einem "eigenen Modul" lösen, das im Hintergrund 2x DRead und 1x DWrite nutzt. Ich habe von PERL und der komplexeren FHEM Syntax nur überhaupt keine Ahnung, ich werde mal veruchen, was hinzubekommen...

Grüße, fu_zhou
FHEM auf RasPi 2, S7-300 mit ET200S über ProfiNet

charlie71

Hallo fu_zhou,

ich denke dieses Problem hat sich auch schon bei anderen Modulen gestellt und wenn wir Glück haben dann auch schon gelöst, wenn nicht dann sollten wir einen neuen Thread öffnen und die Anforderungen diskutieren.

lG
Charlie71

juramezker@gmail.com

Hallo alle zusammen,
ich interessiere mich für diese Projekt sehr und verfolge es schon eine Weile. Ich habe mir eine Logo8 zugelegt und versuche diese zu konfigurieren, jedoch bislang mit nur mittelmäßigem Erfolg.
Ich habe auch den fhem Server erfolgreich installiert und konfiguriert und kann auch meine Logo ansatzweise auslesen (einen Ausgang bislang).

define myLogo S7 LOGO8 192.168.178.50
attr myLogo ReadDB-Config 1 0 1 1
attr myLogo ReadOutputs-Config 1 0 1 1
attr myLogo WriteDB-Config 1 0 1

Die Werte für ReadDB und ReadOutputs werden im Event monitor erfolgreich ausgeben, jedoch habe ich Probleme einen Schalter zu definieren.
Wenn ich in die Commandline:

define s0 S7_DWrite 1 1.1

eingebe, dann erhalte ich als Fehlermeldung:
Cannot load module S7_DWrite
Hat jemand eine Idee, woran dies liegen kann? Ich habe auf meiner Logo eine Testschaltung laufen. Ich habe diese an den Anhang angehangen. Wie würde für diese die Konfiguration aussehen?
Ich bedanke mich schon im voraus.

Grüße


fu_zhou

Hallo,

deine WriteDB-Config schreibt in den DB 1 ab Adresse 0.0 1 Byte (=0.0 bis 0.7).

Dein s0 soll in den DB 1 Adresse 1.1 geschrieben werden. 1.1 ist aber das zweite Bit im zweiten Byte (1.0 bis 1.7).

Und: So weit ich hier mitgekriegt habe, gibt es bei der Logo nur den DB 0.

Vielleicht hilft das, Grüße!

fu_zhou



FHEM auf RasPi 2, S7-300 mit ET200S über ProfiNet

juramezker@gmail.com

Hallo fu_zhou,

danke für deine schnelle Antwort. Das hilft mir schon etwas weiter. Ich teste das ganze so aus mal schauen was passiert.

Grüße

PS: Top Arbeit an alle die das realisiert haben.






John

#283
Hallo Charlie71,

einige konstruktive Anmerkungen/Fragen von meiner Seite in der Hoffnung,
daß ich irgendwann auf meine nicht native Lösung verzichten kann.

Leseblöcke
Ergeben sich diese Blöcke nicht automatisch aufgrund aller vom Anwender definierten Datenpunkte ?
Der Anwender muss bei einem neuen Datenpunkt darauf achten auch den Leseblock nachzuführen, was fehleranfällig ist.


Schreibblöcke
laut Wiki:
Zitatund anschliessend der gesamte Speicherblock zur SPS geschoben.
Damit gehst du von einem Mono-Mastersystem aus, in dem es keine Schreibzugriffe von einem anderen System geben darf.
Ansonsten musst du mit dem "dirty write" Problem leben, das Änderungen anderer Clients ignoriert.
Schreibzugriffe sollten atomar sein und nur das betroffene Objekt behandeln.
Aber damit entfällt die Existenzberechtigung von Schreibblöcken schlechthin.

Was bliebe wäre ein System, in dem vom Anwender nur noch die Datenpunkte zu definieren sind.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

charlie71

Hallo juramezker,

willkommen im Forum.
Für die Logo (zumindest für die Logo7 kann ich dass mit Sicherheit bestätigen) ist es egal welche DB du nimmst.
Die logo hat nur einen DB der immer ausgewählt wird, egal welche DB Nummer du angibst.
Alle Daten (Eingänge, Ausgänge, Merker, ...)befinden sich in diesem DB, dh du benötigst kein  ReadOutputs-Config.

PS: Hast Du schon die simple Config Methode für die Logo getestet.

lG
Charlie71