Autor Thema: Wago /SPS über Modbus(TCP/IP) in FHEM steuern  (Gelesen 207583 mal)

Offline ChrisD

  • Sr. Member
  • ****
  • Beiträge: 966
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #555 am: 29 Mai 2021, 21:41:20 »
Hallo,

Es gab vor Kurzem Änderungen am IODev-System in FHEM. Dies hat bereits bei diversen anderen Modulen zu Problemen geführt. Ich muss mir auf einem Testrechner ansehen wieso es nicht mehr richtig funktioniert.

Grüße,

ChrisD

Offline sukram

  • New Member
  • *
  • Beiträge: 26
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #556 am: 24 August 2021, 20:54:07 »
Hallo Chris,

ich bin gerade über meine eigene Blindheit gestolpert  ::)  Würde es dir etwas ausmachen, in die "Device Specific Help" für ModbusRegister einen kurzen, dicken, fetten, Satz reinzuschreiben, dass die "wago XY123" Notation nur funktioniert, wenn der Server auch auf "Servertype Wago" steht?

Ich habe gerade einige Zeit damit verbracht, bis ich dann die verschiedenen Instanzen mal Attributweise verglichen habe  ;D

Die auf der vorhergehenden Seite genannten Timeouts habe ich auch gelegentlich, habe das aber bisher auf mein massiv untermotorisiertes Modbus TCP-RTU Gateway (AVR Netio mit Ethersex Firmware) geschoben.

Offline ChrisD

  • Sr. Member
  • ****
  • Beiträge: 966
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #557 am: 24 August 2021, 21:06:27 »
Hallo,

Vielen Dank für den Hinweis, ich werde dies zur Dokumentation hinzufügen.

Grüße, ChrisD

Offline der-Lolo

  • Hero Member
  • *****
  • Beiträge: 1852
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #558 am: 10 Juni 2022, 20:19:24 »
Boah, hier ist es still geworden ;)
Zeugt davon das alles bestens funktioniert!

Ich bin leider wieder, nach ein paar ruhigen Monaten,  Opfer des memory-leaks geworden. Mein Haupt-FHEM muss ich mittlerweile alle 6-8 Stunden neu starten.

Ich bereite derzeit einen "umzug" vor - neuer Host wird mein alter 2010er iMac mit Debian11.

In wie weit kann ich zwei FHEM Instanzen parallel benutzen? Ich habe so viele I/Os das ich den Umzug nicht am einem Tag bewältigen kann, zumal ich alles sauberer definieren möchte. Wie harmoniert das ganze wenn ein zweiter Wago Controller ( 750-842 ) hinzukommt?
Die zweite Wago einheit läuft derzeit an einem Pi als separiertes FHEM. Die FHEM-Instanz wird zwar auch für anderes ( I2C - Messungen, OneWire ) gebraucht, kann mir aber vorstellen das die I/Os ins Haupt-FHEM umziehen.

Wie würdet ihr vorgehen?

Offline der-Lolo

  • Hero Member
  • *****
  • Beiträge: 1852
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #559 am: 26 Juni 2022, 20:12:51 »
Ich nutze gerne ein "set on-for-timer" - gibt es eine möglichkeit die Restlaufzeit im Device darzustellen?

Offline ChrisD

  • Sr. Member
  • ****
  • Beiträge: 966
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #560 am: 27 Juni 2022, 22:10:32 »
Hallo,

Du kannst versuchen ein userReading dafür zu verwenden, z.B.:

attr mx_1_0 userReadings oftRest {if(defined($defs{mx_1_0}{TIMED_OnOff})) {$defs{mx_1_0}{TIMED_OnOff}{START}+$defs{mx_1_0}{TIMED_OnOff}{DURATION}-time()} else {'-'}}
Wenn on-for-timer aktiv ist ist der Startpunkt und die Dauer im Hash des Gerätes unter {TIMED_OnOff} abgelegt.

Grüße,

ChrisD

Offline der-Lolo

  • Hero Member
  • *****
  • Beiträge: 1852
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #561 am: 01 Juli 2022, 18:40:40 »
Wow, cool ChrisD - Danke das klappt auf anhieb!

Mir fällt nur auf das doch recht viele events erzeugt werden - ich brauch das auch nicht sekundengenau, minuten würden ausreichen, ich glaube ich muss mich dringend mal mit der "macht" der userReadings auseinandersetzen.
« Letzte Änderung: 01 Juli 2022, 18:45:15 von der-Lolo »

Offline der-Lolo

  • Hero Member
  • *****
  • Beiträge: 1852
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #562 am: 03 Juli 2022, 23:18:40 »
Ok - event-min-interval ist mein freund ;) Das hat ganz gut geholfen...
Wenn ich jetzt mit on-for-timer starte und via set off schalte läuft der Timer weiter ;) - kann man da was optimieren?

oftRest hätte ich gerne ohne komma un bin unsicher wo ich das bestimmen soll - kannst du nochmal helfen..?

Offline ChrisD

  • Sr. Member
  • ****
  • Beiträge: 966
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #563 am: 06 Juli 2022, 21:00:40 »
Hallo,

Dies
Zitat
oftRest hätte ich gerne ohne komma un bin unsicher wo ich das bestimmen soll - kannst du nochmal helfen..?
kannst du mit einem 'int' lösen:

attr mx_1_0 userReadings oftRest {if(defined($defs{mx_1_0}{TIMED_OnOff})) {int($defs{mx_1_0}{TIMED_OnOff}{START}+$defs{mx_1_0}{TIMED_OnOff}{DURATION}-time())} else {'-'}}
Das Ganze in Minuten (ohne Sekunden):
attr mx_1_0 userReadings oftRest {if(defined($defs{mx_1_0}{TIMED_OnOff})) {int(($defs{mx_1_0}{TIMED_OnOff}{START}+$defs{mx_1_0}{TIMED_OnOff}{DURATION}-time())/60)} else {'-'}}
Zitat
Wenn ich jetzt mit on-for-timer starte und via set off schalte läuft der Timer weiter ;) - kann man da was optimieren?
Der Timer läuft weiter, set off beendet ihn nicht. Nach der eingestellten Zeit wird der Befehl ausgeführt. Wenn bereits ausgeschaltet war bemerkst du es nur nicht.

Diese Variante blendet in dem Fall die Zeit aus:
attr mx_1_0 userReadings oftRest {if(defined($defs{mx_1_0}{TIMED_OnOff})){if($defs{mx_1_0}{TIMED_OnOff}{NEXTCMD} ne $defs{mx_1_0}{STATE}){int($defs{mx_1_0}{TIMED_OnOff}{START}+$defs{mx_1_0}{TIMED_OnOff}{DURATION}-time())} else {'-'}} else {'-'}}
Da das Ganze etwas groß und unhandlich wird wäre es sinnvoll den Code in eine externe Funktion auszulagern und diese im userReading aufzurufen.

Grüße,

ChrisD

Offline der-Lolo

  • Hero Member
  • *****
  • Beiträge: 1852
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #564 am: 31 Juli 2022, 11:17:29 »
Danke für Deine Hilfe beim on-for-timer "Restlaufzeit" auslesen - funktioniert wunderbar!
Nun hätte ich gerne noch eine "Fortschrittsanzeige", vielleicht hast Du eine Idee...
Ich habe im Bereich meiner Pool Steuerung "Belimo" 24V Stellantriebe, die drehen Kugelhähne in entsprechende stellungen ( SolarAN/SolarAus )
Die Laufzeit um den Kugelhahn um 90° zu drehen beträgt etwa 143 sekunden, diese Zeit habe ich fix im Wago Projekt hinterlegt.

Ich hatte mal im Netz gesucht und dieses Beispiel gefunden - siehe Anhang

Die entsprechende bilbliothek habe ich hinzugefügt - ich bekomme es aber leider nicht ans laufen.





Offline ChrisD

  • Sr. Member
  • ****
  • Beiträge: 966
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #565 am: 01 August 2022, 13:06:46 »
Hallo,

Das Beispiel sieht eigentlich gut aus.

Was genau funktioniert nicht ?

Lässt sich der Code nicht kompilieren ?

Grüße,

ChrisD

Offline der-Lolo

  • Hero Member
  • *****
  • Beiträge: 1852
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #566 am: 01 August 2022, 13:59:52 »
genau - vielleicht liegt es daran das ich die 0-100 ja dann in einem Register also als Byte Wert zu FHEM übertragen wollte. ( REAL to BYTE )

Gemeldet wurde jedenfalls beim compilieren ein Fehler - ich müsste es nochmal nachstellen um die genaue Meldung zu bekommen.

Offline sukram

  • New Member
  • *
  • Beiträge: 26
Antw:Wago /SPS über Modbus(TCP/IP) in FHEM steuern
« Antwort #567 am: 11 August 2022, 10:19:50 »
genau - vielleicht liegt es daran das ich die 0-100 ja dann in einem Register also als Byte Wert zu FHEM übertragen wollte. ( REAL to BYTE )

Ist denn das Ausgaberegister auch als Byte definiert? "Normalerweise" hat Modbus als Mindestgröße 16 Bit (=Word = Unsigned Int), du müsstest das Register also als Word beschreiben mit REAL_TO_WORD.