Ankündigung

Einklappen
Keine Ankündigung bisher.

Timing RGBW 4 Bytes auf DMX über WAGO

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

    Timing RGBW 4 Bytes auf DMX über WAGO

    Über eine WAGO 750-849 mit KNX-Klemmen steuere ich viele RGBW-DMX-Decoder mit 4 x 1-Byte 0-255 an. Die 4 Bytes kommen einzeln per KNX-Kommunikationsobjekte in die WAGO.

    Wenn ich also z.B. über die Visualisierung (HS QuadCilent Color-Picker) einen bestimmten Farbton auswähle, kommt die dafür benötigte Kombination der 4 Farben RGBW nacheinander in der WAGO an. Dies verursacht im schlimmsten Fall nacheinander 3 verschiedene Farben der LED-Leuchtmittel, bevor dann mit dem Eintreffen der 4. Farbe die gewünschte Farbe ansteht. Diese "Lichtorgel" ist natürlich nicht sehr ansehnlich.

    Um diesem Effekt entgegenzuwirken habe ich in der WAGO zu jedem DMX-Decoder einen Funktionsblock mit 4 x 1-Byte-Eingang + Time-Eingang und 4 x 1-Byte-Ausgang eingefügt (siehe Anhang). Der Funktionsblock überwacht die 4 Eingangsbytes auf Veränderung und sobald sich der Wert eines der 4 Bytes ändert, startet der Timer und die 4 Eingangsbytes werden erst nach Ablauf der am Time-Eingang vorgegebenen Zeit auf die 4 Ausgangsbytes gegeben und somit mehr oder weniger 'gleichzeitig' auf den DMX-Bus geschickt.

    Tests mit einer eingestellten Verzögerungszeit von 1 Sekunde sind bereits vielversprechend. Wenn allerdings auf dem KNX-Bus mal der Bär steppt, werde ich die Verzögerungszeit sicherlich nach oben anpassen müssen, was sich dann natürlich noch unangenehmer in der Verzögerung zwischen Farbanwahl und geänderter Farbe am Leuchtmittel bemerkbar machen wird.

    Meine Frage ist nun, ob jemand von Euch diese Problematik schon 'eleganter' gelöst hat.

    Gruß

    Peter

    4 Bytes Change Delay.jpg

    #2
    Hallo Peter,

    wieso verpackst Du die Werte im HS nicht einfach in ein DWord und entpacktst dieses in der WAGO wieder?
    Dann hättest Du anstelle von 4 Gruppenadressen nur eine die über den Bus geht.

    Gruß
    Frank
    Meine Installation: 11 Stück 1-Wire Sensoren, 3xWAGO750-849, 2 KNX Linien + 1 Linie über Siemens IP-Router, IP-SYMCON, Irtrans LAN, Anbindung WP über ModBus (WAGO), DMX4ALL LAN-DMX STAGE-PROFI für LED-Effektbeleuchtung.

    Kommentar


      #3
      Hallo Frank,

      vielen Dank für Deinen Tipp! So hatte ich das auch zu Anfang mal angedacht, denn so würde ich darüber hinaus noch an der Anzahl der benötigten KOs sparen. Das ist insofern nicht unwichtig, da ich pro WAGO-KNX-Klemme nur ca. 250 KOs zur Verfügung habe.

      Es gibt einen einfachen Grund, warum ich es nicht gemacht habe: Ich weiß nicht, wie das geht!
      (Also das Verpacken der 4 Bytes in ein DWord im HS und das Entpacken auf der WAGO-Seite)
      Die 4 entpackten Bytes sollten ja dann auf der WAGO-Seite die gleiche Reihenfolge haben, wie beim Packen.

      Kannst Du mir da evtl. behilflich sein?

      Kommentar


        #4
        Hallo,
        Wago-seitig ist das relativ einfach:
        Byte 0: die nicht gewünschten oberen 24 Bits ausmaskieren mit AND 255
        Byte 1: das dword um 8 Stellen nach rechts verschieben (mit SHR, 8) und dann die nicht gewünschten oberen 24 Bits ausmaskieren mit AND 255
        Byte 2: das dword um 16 Stellen nach rechts verschieben (mit SHR, 16) und dann die oberen 24 Bits ausmaskieren mit AND 255
        Byte 3: das dword um 24 Stellen nach rechts verschieben (mit SHR, 24) und dann die oberen 24 Bits ausmaskieren mit AND 255
        das Ergebnis jeweils in Byte konvertieren

        Obs für den HS einen Logikbaustein gibt der 4 Byte in ein dword packt, weiß ich nicht genau; evtl. hier im Download-Bereich

        Gruß
        Norbert
        Zuletzt geändert von Norbert Potthast; 18.07.2017, 14:15.

        Kommentar


          #5
          Danke Norbert,

          im Downloadbereich habe ich schon nach "dword" gesucht, aber da gibts nichts. :/

          Kommentar


            #6
            Das Verschieben der Stellen per SHR ist klar, aber wie die oberen 24 Bit per AND 255 ausmaskiert werden sollen, nicht. Dem kann ich nicht folgen.

            Kommentar


              #7
              Doch, ich komme der Sache näher...

              Kommentar


                #8
                eigentlich ganz einfach:

                byte_0:= DWORD_TO_BYTE(dWord_IN AND 255);
                byte_1:= DWORD_TO_BYTE(SHR(dWord_IN,8) AND 255);
                byte_2:= DWORD_TO_BYTE(SHR(dWord_IN,16) AND 255);
                byte_3:= DWORD_TO_BYTE(SHR(dWord_IN,24) AND 255);

                Kommentar


                  #9
                  Zitat von Norbert Potthast Beitrag anzeigen
                  das Ergebnis jeweils in Byte konvertieren
                  Wie mache ich das?

                  Kommentar


                    #10
                    ups, sorry, hatte Deinen letzten Post nicht gelesen...

                    Kommentar


                      #11
                      Müsste ja dann in CFC so aussehen, oder?

                      DWORD to BYTE.jpg

                      Kommentar


                        #12
                        ja, wobei in deiner Logik als Eingangssignal momentan gar kein DWord ist...
                        Auf das Ausmaskieren kannst du hier sogar verzichten, da von einem größeren (dword) in einen kleineren (byte) Datentyp konvertiert wird.
                        Da wird alles > 8 Bit sowieso abgeschnitten. Wichtig ist nur das Verschieben der Bits nach rechts.

                        Das Ausmaskieren benötigst du nur wenn das Ergebnis vom gleichen Datentyp ist wie der Eingang.

                        Wenn diese Funktion öfter gebraucht wird, würde ich das auch als separaten FB schreiben; dieser kann dann mehrfach instanziiert werden.
                        Das macht das Programm übersichtlicher...

                        Kommentar


                          #13
                          Da ich die RGBW-Bytes vom KNX-Bus als Statusrückmeldung gleich wieder zurück auf den KNX-Bus schicke, muss ich die 4 x 1 Byte ja wieder in ein DWORD zurückpacken. (Als Statusrückmeldung sollen später die direkten Rückmeldewerte aus dem DMX-Bus verwendet werden, aber das klappt noch nicht, daher die Werte VOM KNX-Bus gleich wieder zurück ZUM KNX-Bus).

                          Müsste dann ja so aussehen:

                          BYTE to DWORD.jpg
                          Angehängte Dateien

                          Kommentar


                            #14
                            Zitat von Norbert Potthast Beitrag anzeigen
                            ja, wobei in deiner Logik als Eingangssignal momentan gar kein DWord ist...
                            Ja, hab ich inzwischen angepasst.

                            Dann werd ich mich mal daran versuchen, das jeweils in einen eigenen FB zu bekommen.

                            Kommentar

                            Lädt...
                            X