Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Telegrammverzögerung

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

    HS/FS - √ - Telegrammverzögerung

    Hallo zusammen,

    der HS-Baustein Telegrammverzögerung hat leider diese blöde Eigenschaft, dass ein invertiertes Telegramm die Ausgabe des ersten Impulses zuruecksetzt.

    Beispiel mit Verzoegerung 30 Sekunden:
    Zu T=0 wird E2 auf 1 gesetzt, Zu T=40 geht E2=0, bei T30 geht A1 auf 1, bei T70 A1=0. Alles bestens, jetzt aber:

    Zu T=0 wird E2 auf 1 gesetzt, Zu T=10 bereits wieder E2=0, jetzt geht bei T30 nix an.

    Will heissen, wenn die Verweildauer des High-Signals geringer als die Verzoegerung ist, dann wird das High-Signal nicht weitergeleitet! (Ich nehme an selbiges passiert beim Low-Signal, wichtig ist nur die Verweildauer)

    Wie wuerdet Ihr das Problem lösen?

    mfg
    2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

    #2
    Die Frage ist: "Was" lösen?

    Oft ist der Watchdog die bessere Wahl.
    Gruß Matthias
    EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
    - PN nur für PERSÖNLICHES!

    Kommentar


      #3
      Hallo Mathias,

      ich dachte es wäre verständlich formuliert: Ein KO ist im Normzustand auf Null, wird im Eventfall für eine Zeit x auf Eins gesetzt und danach zurueck auf 0. Jetzt soll die Auswertung allerdings um Zeit y verzoegert erfolgen. Ist jedoch x < y, dann wird der Ausgang des integrierten Bausteins "Telegrammverzoegerung" nie 1!

      Im Anhang die Quick-and-Dirty-Variante, wie ich das erstmal geloest habe (Aufteilung der An/Aus Signale über Flankendetektor, jeweils nur Verzoegerung des An bzw. Aus-Signales über eigene Verzoegerung, danach muss das Aus-Signal wieder invertiert werden, deswegen das Oder, dann wieder vereinigen am Ausgang)

      mfg
      Angehängte Dateien
      2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

      Kommentar


        #4
        Hallo zusammen,

        meine schoene Bastelkonstruktion hat doch nicht hingehauen. Beim Flankenwechsel 0->1 wird die obere Signalverzoegerung gestartet, der Timer läuft ab. Wenn jetzt das Eingangssignal in der Abluafzeit nach 0 fällt und wieder auf 1 geht, wird der obere Timer erneut gestartet und so weiter und so fort. Ergo sorgt ein häufiger Flankenwechsel immer für einen Neustart des Timers, das Ein-Signal (in diesem Fall ein Alarm) wird nicht verarbeitet. *frust*

        Ich habe mich gerade mal an einem Baustein "Signalverzoegerung ohne Neustart" versucht, bevor ich damit was bastele erbitte ich kurz Eure Meinung. Es geht darum, den Neustart des Timers zu verhinden und den ersten Flankenwechsel auf jeden Fall darzustellen. Derzeit liegt meine Quote bei ca. 3mal hochladen, bevor ein Baustein gscheit funktioniert.....

        Alternativ koennte man das wohl auch ueber Sequenzen regeln, bei denen ein Neustart verhindert wird....

        Hier erstmal der Code. Any Comments?

        mfg

        #5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n.
        #5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start
        #5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch
        #5003|Speicher|Initwert|Remanent
        #5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch
        #5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang

        5000|"SG\Signalverz_ohne_Neustart"|0|2|"E1 Signal"|"E2 Verzogerung(sek)"|2|"A1 Signal"|"A2 Debug"

        5001|2|2|2|3|0

        #Eingänge
        5002|1|0|0 # Signal
        5002|2|0|0 # Verzoegerung

        #Speicherwerte
        5003|1|0|0 # Lokale Kopie des Eingangssignal zum Entdecken des Flankenwechsels
        5003|2|0|0 # Sperrobjekt für Timer 1 An
        5003|2|0|0 # Sperrobjekt für Timer 2 Aus

        #Ausgänge
        5004|1|0|0|2|0 #Signal
        5004|2|0|0|1|1 #Debug

        #Funktionen
        #Wenn Signaleingang auf E1, E1=1, SN1=0 (Flankenwechsel), Sperre Ein nicht gesetzt, dann Zeitspeicher 1 starten
        5012|0|"EC[1] and EN[1]==1 and SN[1]==0 and SN[2]==0"|""|"EN[2]"|0|1|0|0
        #Sperrobjekt setzen
        5012|0|"EC[1] and EN[1]==1 and SN[1]==0 and SN[2]==0"|"1"|""|0|0|2|0
        #Wert abspeichern und Berechnung beenden
        5012|1|"EC[1] and EN[1]==1 and SN[1]==0"|"EN[1]"|""|0|0|1|0

        #Wenn Signaleingang auf E1, E1=0, SN1=1 (Flankenwechsel), Sperre Aus nicht gesetzt, dann Zeitspeicher 2 starten
        5012|0|"EC[1] and EN[1]==0 and SN[1]==1 and SN[3]==0"|""|"EN[2]"|0|2|0|0
        #Sperrobjekt setzen
        5012|0|"EC[1] and EN[1]==0 and SN[1]==1 and SN[3]==0"|"1"|""|0|0|3|0
        #Wert abspeichern und Berechnung beenden
        5012|1|"EC[1] and EN[1]==0 and SN[1]==1"|"EN[1]"|""|0|0|1|0

        #Bei Ablauf von Timer 1 Ausgang auf 1 setzen
        5012|0|"OC[1]"|"1"|""|1|0|0|0
        #Sperrobjekt 1 aufheben und beenden
        5012|1|"OC[1]"|"0"|""|0|0|2|0

        #Bei Ablauf von Timer 2 Ausgang auf 0 setzen
        5012|0|"OC[2]"|"0"|""|1|0|0|0
        #Sperrobjekt 2 aufheben und beenden
        5012|1|"OC[2]"|"0"|""|0|0|3|0
        2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

        Kommentar


          #5
          Ich peils irgendwie immer noch nicht.

          Also du willst das wenn eine 1 an Eingang 1 ankommt, das die erst nach der an Eingang 2 eingestellten Verzögerung am Ausgang ankommt.

          Danach soll der Timer gesperrt sein, bis der die Verzögerung eintritt (also wenn jemand auf nen Taster drückt, startet die Verzögerung und ein weiteres drücken des Tasters wird ignoriert, bis die Verzögerung abgelaufen ist)

          Wenn jetzt die Verzögerung abgelaufen ist, soll auf das gleiche mit einer 0 am eingang reagiert werden um verzögert auszuschalten. ???
          Nils

          aktuelle Bausteine:
          BusAufsicht - ServiceCheck - Pushover - HS-Insight

          Kommentar


            #6
            Korrekt, Nils. Mit dem jetzigen Verzoegerungsbaustein kannst Du ja mal nen Testaufbau machen. Ist das Fluktuationsintervall (Wechsel zwischen Null und eins) am Eingang kleiner als die Verzoegerung, kommt am Ausgang GAR NIX an!
            In meinem Anwendungsfall gehts darum, dass zumindest die erste eins durchkommt.

            mfg
            2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

            Kommentar


              #7
              Was hällst du denn sonst davon.


              Code:
              #Wenn Signaleingang auf E1<>SN[1] (Flankenwechsel), EN[1] auf SN[1] und ON[1] nach ablauf schreiben
              5012|0|"EC[1] and EN[1]<>SN[1]"|"EN[1]"|"EN[2]"|0|1|1|0
              ## Wenn Timer abgelaufen schreibe ON[1] auf Ausgang
              5012|0|"OC[1]"|"ON[1]"|""|1|0|0|0
              Dann würde bei 30sec verz.

              1. EN[1]=1
              2. >10Sec erneut EN[1]=1 (ignoriert)
              3. 30sec Ausgang geht auf 1
              4. jetzt EN[1]=0
              5. >15sec eneut EN[1]=0 (ignoriert)
              6 30sec Ausgang geht auf 0

              Wenn jetzt allerdings zwischen 1 und 3 EN[1]=0 ist dann würde der Ausgang auch nie auf 1 geschaltet werden.
              Nils

              aktuelle Bausteine:
              BusAufsicht - ServiceCheck - Pushover - HS-Insight

              Kommentar


                #8
                oder er so?

                Code:
                #Funktionen
                #Wenn Signaleingang auf E1, E1=1, SN1=0 (Flankenwechsel), Sperre Ein nicht gesetzt, dann Zeitspeicher 1 starten
                ## Nur wenn SN[2]==1 ist
                5012|0|"EC[1] and EN[1]<>SN[1] and SN[2]==0"|"EN[1]"|"EN[2]"|0|1|1|0
                ## Sperre 
                5012|1|"SC[1]"|"1"|""|0|0|2|0
                ## jetzt auf Ausgang
                5012|0|"OC[1]"|"ON[1]"|""|1|0|0|0
                ## Sperre wieder aufheben
                5012|0|"OC[1]"|"0"|""|0|2|0|0
                Nils

                aktuelle Bausteine:
                BusAufsicht - ServiceCheck - Pushover - HS-Insight

                Kommentar


                  #9
                  Hallo Nils,

                  jetzt hab ich grad ne Ladehemmung: Was ist denn in dem ON? Ich dachte beim Aufruf des Zeitspeichers wird da nur die Zeit in Sekunden reingeschrieben. Hab ich da noch ein Speicherobjekt?

                  Zu Deinem ersten Beispiel: Im Idealfalle stelle ich mir das so vor:

                  Eingangsverhalten:
                  T0 An, T10Aus, T20An, T35Aus, T60An, T100 aus
                  Ausgang (bei 30Sek):
                  T30 An, T40 Aus, T90 An, T130 aus.

                  Will heissen alle Änderungen während der Timer abläuft werden ignoriert, dennoch wird bei "Beruhigung" des Eingangs am Ende der Verzögerung immer das letzte Telegramm gesendet.

                  Daher meine ich dass man mit zwei Sperren agieren muss (fuer ein und fuer aus). Man wär das in ner normalen Thread-basierten Umgebung einfach, diese Eventsteuerung am HS gibt mir graue Haare....

                  mfg
                  2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

                  Kommentar


                    #10
                    Der fällt mir jetzt sonst noch ein.

                    Code:
                    ##Nur beim Wechsel
                    ## bei an
                    5012|0|"EC[1] and EN[1]<>SN[1]==1 and SN[2]==0"|"EN[1]"|"EN[2]"|0|1|1|0
                    ## bei aus
                    5012|0|"EC[1] and EN[1]<>SN[1]==0 and SN[3]==0"|"EN[1]"|"EN[2]"|0|2|1|0
                    
                    ##Sperre für an SN[2]
                    5012|1|"SC[1] and EN[1]==1"|"1"|""|0|0|2|0
                    ##Sperre für aus SN[3]
                    5012|1|"SC[1] and EN[1]==1"|"1"|""|0|0|3|0
                    
                    ## jetzt auf Ausgang
                    # Timer an
                    5012|0|"OC[1]"|"1"|""|1|0|0|0
                    ## Sperre wieder aufheben SN[2]
                    5012|0|"OC[1]"|"0"|""|0|2|0|0
                    
                    # Timer aus
                    5012|0|"OC[2]"|"0"|""|1|0|0|0
                    ## Sperre wieder aufheben SN[3]
                    5012|0|"OC[2]"|"0"|""|0|3|0|0
                    EDIT: ON[1]..2 gegen 1 und 0 getauscht

                    ON enthällt den Wert der Berechnung in der der Timer gesetzt wird.
                    Nils

                    aktuelle Bausteine:
                    BusAufsicht - ServiceCheck - Pushover - HS-Insight

                    Kommentar


                      #11
                      Hallo Nils,

                      3 Uploads später siehts jetzt so aus:

                      Code:
                      ##Nur beim Wechsel
                      ## bei an
                      5012|0|"EC[1] and EN[1]<>SN[1]==1 and SN[2]==0"|"EN[1]"|"EN[2]"|0|1|1|0
                      ## bei aus
                      5012|0|"EC[1] and EN[1]<>SN[1]==0 and SN[3]==0"|"EN[1]"|"EN[2]"|0|2|1|0
                      
                      ##Sperre für an SN[2]
                      5012|1|"SC[1] and EN[1]==1"|"1"|""|0|0|2|0
                      ##Sperre für aus SN[3]
                      5012|1|"SC[1] and EN[1]==0"|"1"|""|0|0|3|0
                      
                      ## jetzt auf Ausgang
                      # Timer an
                      5012|0|"OC[1]"|"1"|""|1|0|0|0
                      ## Sperre wieder aufheben SN[2]
                      5012|0|"OC[1]"|"0"|""|0|0|2|0
                      
                      # Timer aus
                      5012|0|"OC[2]"|"0"|""|1|0|0|0
                      ## Sperre wieder aufheben SN[3]
                      5012|0|"OC[2]"|"0"|""|0|0|3|0
                      et funktioniert aber nich.... Ausgang wird nicht auf eins gesetzt. Dein letzter Vorschlag hat zumindest den Ausgang aktiviert, aber nicht wieder zurueckgesetzt ;(
                      Wie ist denn der Mehrfachvergleich genormt? A<>B==C ist identisch zu A<>B und A==C oder ist der andersrum A<>B und B==C?

                      Hatte ich schonmal ne Debug-Umgebung für Bausteine erwähnt?

                      mfg
                      2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

                      Kommentar


                        #12
                        Hab gerade gesehen du hast nochmal editiert. Beide Codes sehen sich ganz ähnlich...

                        Zitat von NilsS Beitrag anzeigen
                        ## Sperre wieder aufheben SN[2]
                        5012|0|"OC[1]"|"0"|""|0|2|0|0
                        Da schreibts Du allerdings in den Timer rein und nicht in die Speichervariable. Sicher? Dasselbe bei SN[3]

                        mfg
                        2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

                        Kommentar


                          #13
                          Zitat von NilsS Beitrag anzeigen
                          ON enthällt den Wert der Berechnung in der der Timer gesetzt wird.
                          Aha. Der numerische Wert aus der Funktionszeile, 3tes Argument, als der Timer kreiert wurde, wird also mitgeschleift. Prima, da kann man was mit anfangen.

                          Jetzt muss ich aber mal hetzen: Die DACOM-Anleitung sagt:
                          ON
                          Array
                          Enthält den in den Zeitspeicher geschriebenen Wert, sobald der Zeitspeicher abgelaufen ist.

                          Das ist ja wohl daneben. Weiter vorn in der Tabelle zu Pin-Zeitspeicher ist es besser erklärt:
                          Das Ergebnis aus „Formel“ wird, bei einer durch den Zeitspeicher ausgelösten Berechnung, in die Variable ON[Index] geschrieben. Die Variable OC[Index] hat während der ausgelösten Berechnung den Wert 1.

                          mfg
                          2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

                          Kommentar


                            #14
                            So, Baustein funktioniert jetzt. Fuer die Forensuchenden im Anhang (Endung umbenennen in .HSL). Ich habe die Doppelbedingungen doch wieder aufgeteilt, jetzt schluckt der HS es scheinbar.

                            Code:
                            ## bei an
                            5012|0|"EC[1] and EN[1]<>SN[1] and EN[1]==1 and SN[2]==0"|"EN[1]"|"EN[2]"|0|1|1|0
                            ## bei aus
                            5012|0|"EC[1] and EN[1]<>SN[1] and EN[1]==0 and SN[3]==0"|"EN[1]"|"EN[2]"|0|2|1|0
                            Unterschied zur Original-Telegrammverzoegerung von DACOM:
                            Ein eingehendes Signal startet die Verzoegerung, wenn sie bereits laeuft, nicht erneut, so dass auf jeden Fall die erste Flanke durchkommt (Thema Alarmierungen etc.).

                            mfg

                            PS an die Admins: .HSL ist derzeit in Anhängen nicht erlaubt
                            Angehängte Dateien
                            2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

                            Kommentar


                              #15
                              Hallo Swenga,
                              Dein Beitrag ist zwar schon etwas älter. Aber trotzdem hat mir genau der Baustein gefehlt. Der Standard-Baustein von Gira verspricht genau das, was der von Gira nicht macht:


                              Beschreibung

                              Empfängt der Eingang ein beliebiges Telegramm, wird am Ausgang auch eines gesendet. Welches Telegramm gesendet wird, ist abhängig von der Telegrammfolge am Eingang. Es gilt: Eingang = EIN => Ausgang = EIN, Eingang = AUS => Ausgang = AUS. Unabhängig vom Wert des Eingangstelegramms wird die Ausgabe verzögert.


                              Ist scheinbar in 6 Jahren noch nie jemandem aufgefallen...

                              DANKE!

                              Kommentar

                              Lädt...
                              X