Modbus Aktoren deaktivieren

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • FiCastle
    Extension Master
    • 11.01.2019
    • 144

    #1

    Modbus Aktoren deaktivieren

    Hallo Zusammen

    gibt es eine Möglichkeit, wie Modbus TCP Aktoren mittels Logik aktiviert und deaktiviert werden können?

    Der Hintergrund ist folgender:
    Ich habe eine WP bei einem Kunden, welche grundsätzlich nicht mit Loxone geregelt wird. Die Regelung der WP wird dem WP Regler überlassen (der macht das ganz gut ).
    In einigen Fällen möchte ich aber mit Loxone über Modbus gewisse Werte in der WP übersteuern. Zum Beispiel die Absenkung der Heizkurve und der Soll-Temperatur des Brauchwarmwasserspeichers bei Ferienabwesenheit.

    Ich habe die Logik so gebaut, dass beim aktivieren der Ferienabwesenheit die entsprechenden Werte einmalig über den Modbus Aktor an die WP gesendet werden. Das funktioniert prima. Wenn die Ferienabwesenheit beendet wird, werden ebenfalls einmalig die "Standard-Werte" für Anwesenheit an die WP gesendet, damit das Haus wieder auf normale Werte erwärmt wird. 4-8 Stunden später greift dann wieder der WP Regler selbst und folgt den darin enthaltenen Szenen und Werten. Damit ist die komplette Heiz- und Brauchwarmwasserregelung wieder dem WP-Regler übergeben und der Miniserver ist raus. Auch das klappt.

    Das Problem zeigt sich, sobald ich den Miniserver neu starte, bez. die Config in den Miniserver speichere. Dann werden alle Modbus Aktoren einmalig aktiv und senden die zuletzt an die Modbus Aktoren angelegten Wert erneut an die WP. Das ist ungünstig, da damit jedes mal in das Regelverhalten der WP eingegriffen wird und es wieder 4-8 Stunden dauert, bis sich die WP wieder autonom selbst regelt.

    Ein "Disable" Eingang haben die Aktoren leider nicht. 0 an die Modbus Aktoren anzulegen ist keine Option, da auch das ein Wert ist und dieser von der WP verarbeitet wird. Es müsste einen Wert geben, mit dem man den Aktor selbst aktivieren und deaktivieren könnte. So dass er gar keine Wert sendet.

    Weiss da jemand Rat?

    Vielen Dank und schöne Grüsse
    Roger
    Zuletzt geändert von FiCastle; 29.12.2024, 20:48.
  • Noschvie
    MS Profi
    • 24.09.2018
    • 518

    #2
    Verstehe ich nicht….
    steuere die WRL über Modbus TCP und mir ist noch nicht aufgefallen, dass beim Reboot oder Konfigurieren eine Schalthandlung ausgelöst wird.
    Das muss an deiner Config liegen. Was ist daran besonders?

    Kommentar

    • Jan W.
      Lox Guru
      • 30.08.2015
      • 1394

      #3
      Nein, das Senden von Aktoren beim Neustart kann man meines Wissens nicht verhindern.

      Du kannst Deine Schaltung aber so erweitern, dass der aktuelle Status ständig aus der WP ausgelesen, in Loxone angezeigt und geändert werden kann. Damit kannst Du Dein Problem lösen. Ich habe so eine bidirektionale Kommunikation für viele Parameter in meiner WP eingerichtet. Das nachfolgende Bsp. ist für Warmwasser, weil es einfacher war, dafür den Screenshot zu erstellen:

      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Bildschirmfoto 2024-12-30 um 14.09.13.png Ansichten: 0 Größe: 23,1 KB ID: 450729

      AI ist ein Modbus Sensor, AQ ein entsprechender Aktor. In der App kann ich die Werte mit + und - ändern und z.B. im Webinterface der WP selbst sehe ich sofort die Änderungen. Das funktioniert ziemlich gut und kann auch für Heizkurve, etc. verwendet werden. Remanence sollte beim Baustein aktiviert werden.

      Der Vorteil so einer Anbindung ist der, dass stets der aktuelle Status und die tatsächlichen Werte in der Loxone App sichtbar sind und in den Statistiken korrekt verarbeitet werden.
      Zuletzt geändert von Jan W.; 30.12.2024, 13:24.
      Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
      Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
      Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
      Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
      Node-RED: IKEA Tradfri

      Kommentar


      • Noschvie
        Noschvie kommentierte
        Kommentar bearbeiten
        Erfolgt bei einem Neustart des MS ein Schreiben des Wertes ?
    • Jan W.
      Lox Guru
      • 30.08.2015
      • 1394

      #4
      Noschvie: Die Antwort für Deine Frage aus #3.1, da ich im Kommentar kein Screenshot anfügen kann: Ich hatte das angenommen, aber war mir nicht 100%ig sicher. Da ich heute sowieso eine Config Änderung auf dem MS durchgeführt habe, war es kein Problem, das Verhalten des MS zu überprüfen:

      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Modbus Register 1509 - WW für Stiebel Eltron WP.png Ansichten: 0 Größe: 1,11 MB ID: 450825

      Ich habe Wireshark vor dem Neustart des Miniservers gestartet und konnte so alle tatsächlich erfolgten Schreib- und Lesezugriffe mitschneiden. Mit einem Filter auf die IP-Adresse der WP und Filter auf das Register 1509, welches meine WP für die o.a. Komforttemperatur für WW verwendet, kann man in dem Mitschitt gut erkennen, dass es nach dem Neustart des MS (roter Balken) genau einen Schreibzugriff gibt, also Deine Frage mit "Ja" beantwortet werden kann. Das passt zur Beobachtung und Frage des Erstellers dieses Beitrages.

      Die Frage nach einem "Warum?" kann wohl nur Loxone beantworten. Der Lesezugriff auf das Register 1509 erfolgt über den entsprechenden Sensor alle 60s. Der Wert 430 entspricht 43,0 °C, da die Werte als Integer empfangen bzw. gesendet werden. Der MS erkennt natürlich nicht, dass der Sensor mit dem Aktor zusammenhängt, aber der Baustein hat bei mir "Remanence" aktiviert, so dass ein Schreibzugriff eigentlich nicht erfolgen müsste, weil der Wert am Ausgang des Bausteins "2 Auswahltasten" sich seit Neustart nie verändert hat. Auffällig ist, dass vor dem Schreibzugriff zwei Lesezugriffe erfolgen und der Takt von 60s erst mit dem 2. Lesezugriff erfolgt.
      Zuletzt geändert von Jan W.; 31.12.2024, 17:55.
      Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
      Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
      Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
      Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
      Node-RED: IKEA Tradfri

      Kommentar

      • FiCastle
        Extension Master
        • 11.01.2019
        • 144

        #5
        Vielen Dank für Eure Feedbacks und auch den Test auf Netzwerkebene. Damit ist nun auch noch der "wissenschaftliche Beleg" meiner Erfahrung erbracht.

        Dein Vorschlag, Jan W. funktioniert ja tatsächlich problemlos und ich verwende diese Art der Config selbst bei Anlagen, welche über die GLT, also über Loxone, durchgängig gesteuert werden.

        Im vorliegenden Fall geht es aber, wie schon beschrieben darum, dass die WP komplett autonom laufen können soll und mit Loxone nur in dedizierten Usecases per Modbus übersteuert wird.

        Das hat primär den Hintergrund, dass bei Netzwerkunterbrüchen oder einem Ausfall des Miniservers, die WP reibungslos weiterläuft. Ausserdem entfallen damit die Ping-Pong Schuldzuweisungen zwischen den Lieferanten, wenn die WP mal nicht laufen sollte, wie sie müsste.

        Deshalb bräuchte es eben die Möglichkeit, Modbus Aktoren komplett aktivieren und deaktiviert zu können.

        Sinnvoll wäre auch, wenn ein Wert per Trigger an den Aktor gesendet werden könnte. Zum heutigen Zeitpunkt scheint dieser Trigger ausnahmslos eine Wertveränderung am Eingang des Aktors zu sein.
        Zuletzt geändert von FiCastle; 01.01.2025, 10:35.

        Kommentar

        • Noschvie
          MS Profi
          • 24.09.2018
          • 518

          #6
          Zitat von Jan W.
          ...so dass ein Schreibzugriff eigentlich nicht erfolgen müsste, weil der Wert am Ausgang des Bausteins "2 Auswahltasten" sich seit Neustart nie verändert hat. Auffällig ist, dass vor dem Schreibzugriff zwei Lesezugriffe erfolgen und der Takt von 60s erst mit dem 2. Lesezugriff erfolgt.
          Die Veränderung besteht vermutlich darin, dass sich der Wert von 0 oder null auf den Wert des ersten Lesezugriffs ändert und dadurch das Schreiben eben dieses Wertes getriggert wird. Dies scheint ein Problem von diesem Baustein zu sein, dies hier nicht unterscheiden zu können.

          Kommentar

          • Jan W.
            Lox Guru
            • 30.08.2015
            • 1394

            #7
            Im vorliegenden Fall geht es aber, wie schon beschrieben darum, dass die WP komplett autonom laufen können soll und mit Loxone nur in dedizierten Usecases per Modbus übersteuert wird.
            Komplett autonom und Nutzung von APIs, wie Modbus TCP, schließen sich gegenseitig aus. Ich verstehe aber die Absicht, dass Du die WP nicht komplett über Loxone steuern möchtest, sondern diese möglichst autark arbeiten und die Eingriffe über Loxone auf Optimierungen bzw. Komfort-Funktionen begrenzt werden sollen. Das ist auch das Ziel bei meiner WP, allerdings lese ich die Werte auch aus, um sie in Statistiken zu speichern.

            Ausserdem entfallen damit die Ping-Pong Schuldzuweisungen zwischen den Lieferanten, wenn die WP mal nicht laufen sollte, wie sie müsste.
            Das ist bei der Nutzung von Low-Level APIs schwierig, insbesondere wenn die WP kein Protokoll führt, welche Ereignisse wann und woher erfolgt sind. Bei Loxone gäbe es noch einen Tracker, aber ob der das o.a. Schreiben des Startwertes protokolliert hätte, ist aus meiner Sicht zweifelhaft.

            Sinnvoll wäre auch, wenn ein Wert per Trigger an den Aktor gesendet werden könnte. Zum heutigen Zeitpunkt scheint dieser Trigger ausnahmslos eine Wertveränderung am Eingang des Aktors zu sein.
            Solche Wünsche solltest Du direkt an den Loxone Support adressieren, als hier im unabhängigen Forum. Derzeit gibt es leider keinen "Disable" Eingang bei Aktoren. Der müsste dann von Loxone so implementiert werden, dass beim Neustart des MS vor dem Schreiben des Wertes zunächst die gesamte vorgeschaltete Logik ausgewertet wird.

            Die Veränderung besteht vermutlich darin, dass sich der Wert von 0 oder null auf den Wert des ersten Lesezugriffs ändert und dadurch das Schreiben eben dieses Wertes getriggert wird. Dies scheint ein Problem von diesem Baustein zu sein, dies hier nicht unterscheiden zu können.
            Eigentlich sollte die Option "Remanenz" genau dies verhindern, aber ich denke auch, dass beim Aktor (der keine Remanenz kennt) eine Änderung vom Initialzustand immer eine Schreibaktion auslöst.

            Da die Neustarts des MS sehr selten sind, zumindest wenn Du Deine Config nicht erweiterst, musst Du entweder mit dem beschriebenen Verhalten nach Neustarts des MS leben oder alternativ regelmäßig den Status über einen Modbus Sensor einlesen, um dann beim Neustart den gleichen, also "richtigen" Wert zu schreiben. Technisch werden dann bei Änderungen des Sensors zusätzliche Schreibvorgänge beim zugeordneten Aktor ausgelöst, die aber keine Auswirkungen haben sollten, weil der gleiche Wert geschrieben wird. Du könntest wahrscheinlich auch den Sensor direkt mit dem Aktor verbinden, denn im Wireshark Trace sieht es so aus, dass zunächst die Werte gelesen werden und die Schreibaktion nach Neustarts verzögert erfolgt.

            Alternativ kannst Du natürlich auch ein Ticket bei Loxone öffnen und versuchen, eine Änderung im Verhalten des Aktors bzw. eine Erweiterung um einen "Disable" Eingang zu erreichen.
            Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
            Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
            Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
            Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
            Node-RED: IKEA Tradfri

            Kommentar

            • kriga
              Smart Home'r
              • 11.11.2016
              • 50

              #8
              Bei meiner WP (Alpha Inotec Luxtronik 2)
              habe ich bei jedem Register ein klar definierten Wertbereich. Schreibe ich einen Wert ausserhalb übernimmt die WP. So handhabe ich dies auch mit Werten die ich nur gelegentlich überschreiben möchte

              Kommentar

              • SPS-Guru
                Smart Home'r
                • 27.12.2022
                • 83

                #9
                Damit die Register nur dann geschrieben werden wenn der Wert nicht passt, habe ich das bei
                meiner Batteriesteuerung so gelöst. Bei mir werden nach einem Neustart die jeweiligen Register
                nicht geschrieben.

                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 85
Größe: 5,2 KB
ID: 450887

                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 95
Größe: 60,6 KB
ID: 450886

                Kommentar

                • Jan W.
                  Lox Guru
                  • 30.08.2015
                  • 1394

                  #10
                  Die Wartezeit nach Start beim Modbusserver hat bei mir nur Auswirkungen auf das Lesen gehabt (wie in der Online-Hilfe beschrieben). Der Analogspeicher hat aber verhindert, dass der Wert des Aktors nach Neustart des MS geschrieben wurde.
                  Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
                  Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
                  Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
                  Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
                  Node-RED: IKEA Tradfri

                  Kommentar


                  • SPS-Guru
                    SPS-Guru kommentierte
                    Kommentar bearbeiten
                    Das ist schon klar das der Analogspeicher das schreiben nach Neustart verhindert.
                    Ich habe nur meine Lösung dargestellt welche eben auch einen Delay nach Neustart beinhaltet.

                  • Jan W.
                    Jan W. kommentierte
                    Kommentar bearbeiten
                    Und welchen Zweck hat das Delay?

                  • SPS-Guru
                    SPS-Guru kommentierte
                    Kommentar bearbeiten
                    Das Delay muss nicht unbedingt sein.
                    Ich mach das nur damit sich die vorgeschaltete Logik aufgebaut hat.
                    Es kann ja sein das da mal etwas programmiert wird welches nach einem Neustart
                    mehrere Zyklen braucht bis der Wert stimmt.
                    Und ganz allgemein muss ja so eine Kommunikationsroutine nicht unbedingt als erstes
                    gestartet werden.
                    Die wichtigen Sachen sind in der Logik darunter wie nur schreiben wenn <> und automatisches
                    wiederholen wenn der Wert nach x-Sekunden nicht übernommen wurde.
                • FiCastle
                  Extension Master
                  • 11.01.2019
                  • 144

                  #11
                  Erneut meinen herzlichen Dank an Euch für das Fortführen der Diskussion.

                  Eine kleine Anmerkung noch zu folgender Feststellung:

                  Komplett autonom und Nutzung von APIs, wie Modbus TCP, schließen sich gegenseitig aus.
                  Das ist natürlich richtig, dass jede Intervention eine Abweichung der kompletten Autonomie bedeutet. Dennoch, wenn keine Intervention stattfindet - und das kann 3-4 Monate lange der Fall sein, da keine Ferienabwesenheit besteht, soll die WP eben tatsächlich komplett autonom arbeiten. Das schliesst auch den Fall ein, wenn ich zwischenzeitlich Erweiterungen in der Konfiguration vornehme, diese im Miniserver speichere oder einen Neustart des Miniservers durchführe.

                  Als Konklusionen entnehme ich den Aussagen nun abschliessend, dass bisher kein Weg bekannt ist, das Schreibverhalten der Modbus-Aktoren mittels Enable / Disable tatsächlich kontrollieren zu können.

                  Damit komme ich weiter und werde das Thema nun bei Loxone als Feature-Request einreichen. Natürlich in der Hoffnung, dass man sich dem Thema annimmt.

                  Schöne Grüsse und ein frohes und erfolgreiches neues Jahr
                  Roger
                  Zuletzt geändert von FiCastle; 01.01.2025, 23:33.

                  Kommentar

                  • Jan W.
                    Lox Guru
                    • 30.08.2015
                    • 1394

                    #12
                    Als Konklusionen entnehme ich den Aussagen nun abschliessend, dass bisher kein Weg bekannt ist, das Schreibverhalten der Modbus-Aktoren mittels Enable / Disable tatsächlich kontrollieren zu können.
                    Doch, mit dem von SPS-Guru verwendeten Baustein Analogspeicher geht das! Für Deine Schaltung kann wahrscheinlich ein fester Wert für Ferienabwesenheit an den Eingang "V" und ein Trigger aus Deiner Logik (ansteigende Flanke) an "Set". Nur mit steigender Flanke von "Set" wird der dann an "V" anliegende Wert an den Modbus Sensor "AQ" übernommen. Bei einem Neustart findet keine Schreiboperation statt, sofern "Set" auf "0" bleibt. Der AI, Vergleich und Impulsgeber entfallen bei Dir, weil Du den Status nicht lesen möchtest.

                    Eine Frage hätte ich noch an SPS-Guru: die Idee mit dem Wiederholen durch den Impulsgeber, falls der Wert beim ersten Mal nicht geschrieben wurde, finde ich gut. Das Delay von 30 sek. beim Start des Modbus-Servers sorgt nach meiner Ansicht dafür, dass AI keinen Wert liest und der Input für die ersten 30 sek nach Neustart "0" ist bzw. bleibt. Direkt nach dem Start, wenn Deine Logik noch nicht verarbeitet wurde, ist dieser Wert noch "0", also gleich dem AI vom Modbus Sensor und der Wert wird nicht über den Modbus Aktor geschrieben. Da Deine Logik zwar ein paar Zyklen benötigt, aber nicht 30 sek., müsste der Vergleicher nach wenigen Zyklen ein "Ungleich" liefern und damit den Impulsgeber freigeben. Daher würde ich erwarten, dass der Ausgang kurz nach dem Start doch geschrieben wird. Da die Logik dann bereits den richtigen Zielwert geschrieben hat, dürfte der Schreibvorgang wahrscheinlich keine Auswirkungen haben. Um das zu verhindern, müsste der Impulsgeber durch den "Startimpuls" des MS mindestens für die Timeout-Zeit des Modbus Servers unterdrückt werden. Hattest Du z.B. mit Wireshark überprüft, ob es Schreiboperationen nach Neustart gibt?
                    Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
                    Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
                    Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
                    Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
                    Node-RED: IKEA Tradfri

                    Kommentar


                    • SPS-Guru
                      SPS-Guru kommentierte
                      Kommentar bearbeiten
                      Meine Logik braucht nicht mehrere Zyklen beim Start. Ich habe lediglich geschrieben
                      das der Delay dafür sorgen würde wenn dies mal der Fall wäre.
                      Da wird in den ersten 30 Sekunden nach dem Start nichts geschrieben weil der AI immer noch den letzten
                      ​​​​​​​gelesenen Wert hat und somit mit dem Sollwert übereinstimmt.
                      Aber ja klar man könnte da noch ein Start-MS Delay dazwischen schalten aber das brauche ich nicht bei
                      meiner Anwendung da ist es wichtiger dass der Schreibbefehl wiederholt wird sofern es nicht geklappt hat.
                  Lädt...