Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik: "benutzerdefinierte" Werte bedingungsabhängig senden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS Logik: "benutzerdefinierte" Werte bedingungsabhängig senden

    Hallo zusammen,

    nachdem ich jetzt schon ein paar Logiken und den Großteil meiner Ajax-Quad-Visu (nochmal Danke für die Vorlage an der Stelle, echt genial!) fertig habe, beschäftige ich mich momentan mit etwas komplexeren Logikenn.

    Bei der Unmsetzung stoße ich leider häufig auf ein Problem, für das ich bisher keine "smarte" Lösung finde: Wie sende ich aus dem Logikeditor heraus einen beliebigen Wert an eine KO?

    Einfaches Beispiel:
    Die Jalousien sollen runter und auf 75 % Lamellenstellung gehen, wenn die Innentemperatur > 25 Grad und Sonneneinstrahlung von Süden.
    Ob die Bedingung erfüllt ist, lässt sich ja einfach mit einer UND-Verknüpfung abfragen.
    Der Ausgang liefert mir aber nur eine "1", ich muss ja aber auch die 75 % Lamellenstellung an die entsprechende Positionierungs-GA senden.
    Bisher fällt mir nur ein, über die Befehle die entsprechenden GAs zu setzen.

    Hab aber das Gefühl, dass dies nicht der geschickteste Weg ist.
    Wisst ihr da ne bessere Lösung?

    Edit: Konnte leider bisher nichts in der Doku finden, wie die Funktionsweise ist, wenn ich in der Ausgangsbox nur Befehle (keine KOs) habe. Werden die Befehle bei jedem in der Ausgangsbox eingehenden Telegramm ausgeführt? Oder nur bei 1? Oder...?
    Edit2: Antwort doch gefunden: "Die Befehle werden nur ausgeführt, wenn über den zugehörigen Ausgang ein Telegramm mit dem Wert ungleich Null gesendet wird."


    Grüße
    Christian

    #2
    Hallo zusammen,

    da keine Antwort kam, geh ich mal davon aus, dass die Methode mit den Befehlen nicht die Schlechteste ist.

    Ich hab mir jetzt eine Logik gebastelt, die die Jalousien herunterfahren soll, wenn:
    -Raumtemperatur über 25.5 Grad
    -Grenzwert Sonnenschutz (von WS) überschritten
    -Türen geschlossen (nur bei Jalousie 2 und 3)

    Problem:
    Beim Neustart des HS fahren Jalousien 2 und 3.
    Ich hab euch die Logik angehängt, die "tmp_..." iKOs hab ich mir zum "debuggen" angelegt
    Wie man am angehängten Auszug des Eibmon erkennen kann, werden tmp_jalousie2 und tmp_jalousie3 tatsächlich auf 1 gesetzt -> Jalousien fahren.

    Ich verstehe aber nicht warum. Eine Eingangsbedingung für das UND "Türe geschlossen" ist das 4er UND "Wenn Automatik...". Der Ausgabewert des 4er UND wird in tmp_jalousie1 gespeichert. Laut Eibmon wird der aber nie 1! Wie kann dann das darauffolgende UND eine 1 ausgeben?

    Relevant im Eibmon sind die Einträge um 19:41:xx

    Ich hoffe, das war verständlich. Ansonsten gerne fragen.
    Wäre sehr dankbar für eure Hilfe!

    Grüße
    Christian
    Angehängte Dateien

    Kommentar


      #3
      Zitat von xcalibur Beitrag anzeigen
      Wie kann dann das darauffolgende UND eine 1 ausgeben?
      Weil das vorhergehende UND wahr wird, da alle Eingänge mit "1" initialisiert werden. Dein 2. UND wird wahr, weil E1 = 0 und invertiert wird. Somit schaltet dein 2. UND Baustein.

      Kommentar


        #4
        Hallo Vento,

        danke für deine schnelle Antwort.
        Werden alle Eingänge beim Starten mit 1 initialisiert?
        Denn bspw. Grenzwert Sonnenschutz beim HS-Start abgefragt wird und einen Wert von 0 hat. (siehe Anhang) Dann dürfte das 4er UND doch nicht 1 ergeben?

        Übrigens passt der Screenshot von der Logik nicht ganz, ich hab dort testweise einen Eingan im 2er UND mit 0 fix belegt. Damit funktionierts.

        Grüße
        Christian
        Angehängte Dateien

        Kommentar


          #5
          Hallo zusammen,

          Könnte mir bitte jemand erklären, wie der HS hier tickt?
          Passiert beim Start irgendeine Initbelegung und die wirklichen Werte werden ignoriert?

          danke, grüsse
          Christian

          Kommentar


            #6
            Die Logiken werden mit den Werten initialisiert die eingetragen sind, Die Werte vom Bus werden erst später geladen.

            Kommentar


              #7
              Also ich würde an die Ausgänge deiner Logik, bevor du in den Ausgangsbox gehst einen "Binärauslöser" setzen und mit den Bedingungen "E1<>0 und E1=0" arbeiten. Damit kannst du das Startverhalten mit den Initwerten abfangen.

              lg. Martin

              Kommentar


                #8
                Hallo,

                danke für die Antworten.
                Hab zusätzlich noch etwas in der HS Doku gefunden und denke, ich hab jetzt verstanden, wo das Problem liegt. Die Eingänge des UND-Bausteins werden mit 1 vorbelegt und durch "Neuberechnen bei Start" wir auf dem Ausgang eine 1 gesendet.

                Den Vorschlag mit Binär-Auslöser habe ich versucht, leider ändert sich dadurch nichts (Baustein sitzt zwischen 2er UND und Ausgangs-Box).
                Ich vermute, das liegt daran, dass der Binär-Auslöser nicht beim Start neu berechnet wird, also nicht mit den Initwerten.
                Er wird das erste Mal berechnet, nachdem die 1 vom 2er Und kommt -> gleiches Verhalten.

                Langsam nervt mich diese Logik etwas.
                Es muss doch irgendeine Möglichkeit geben, zu verhindern, dass beim Start automatisch 1en durch die Gegend geschoben werden?

                Grüße
                Christian

                Kommentar


                  #9
                  Hallo,

                  nimm mal den Ausgang 3 (sbc) in den UND-Bausteinen, zumindest im ersten. Der sollte bei Neustart nicht senden.

                  Gruß

                  Kommentar


                    #10
                    Hallo,

                    die Idee mit send by change hatte ich zunächst auch, allerdings hätte das evtl zu Problemen geführt: Bei der Initialisierung sendet der Baustein ja eine 1, die nächste (erwünschte) 1 würde nicht gesendet, da keine Statusänderung vorliegt.

                    Nach einigen weiteren Stunden, hoffe ich, dass ich die Lösung gefunden habe. (siehe Anhang)
                    Und zwar setze ich den Eingang des 2er UND, der mit dem 4er UND verbunden ist (nicht den zum KO!), fix auf 0.
                    Konsequenz: Bei der Initialisierung wird eine 0 gesendet, spätere Berechnungen liefern (bei richtigen Vorraussetzungen) eine 1.
                    Genau so wie es sein sollte :-))

                    Grüße
                    Christian
                    Angehängte Dateien

                    Kommentar

                    Lädt...
                    X