Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - (Hilfe) eigenen Logikbaustein erstellen

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

    HS/FS - √ - (Hilfe) eigenen Logikbaustein erstellen

    Hallo,

    Ich bräuchte einen Logikbaustein, der mir 2 Stellgrößen miteinander vergleicht, und am Ausgang einen Bytewert liefert, mit dem ich ein Icon steuern kann.

    Folgende bedingung sollte ausgewertet werden:

    E1=0 & E2=0 =0
    E1 > E2 = 1
    E1 < E2 = 2

    Ich hab mir folgende Formel erstellt, aber es will nicht klappen.
    Ich bekomme immer 0 wenn alle ausgänge 0 sind, und eine 1, egal ob
    e1>e2 oder e2>e1. was mache ich falsch ?

    Logikbaustein:
    #############################################
    ### Bytevergleicher ###
    #############################################
    5000|"Eigene Erweiterungen\Vergleicher-1Byte"|0|2|"E1"|"E2"|1|"A0"
    5001|2|1|0|0|1
    5002|1|0|0 #Heizen
    5002|2|0|0 #Kühlen
    5004|1|0|1|1|0 #Ausgang

    ### Vergleicher (>)
    5012|0|"(EN[1]>EN[2])"|"1"|""|1|0|0|0

    ### Vergleicher (=0)
    5012|0|"(EN[1]==0) and (EN[2]==0)"|"0"|""|1|0|0|0

    ### Vergleicher (<)
    5012|0|"(EN[1]<EN[2])"|"2"|""|1|0|0|0

    ### End
    Gruß Mike01

    #2
    Schau mal da:

    HowTo: Logikbaustein erstellen - HS/FS - Lexikon - KNX-User-Forum

    Dacom rundet in seinen Bausteinen. Das wird einen Grund haben, denke ich.
    Gruß Matthias
    EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
    - PN nur für PERSÖNLICHES!

    Kommentar


      #3
      Andere Frage: Richtiger Datentyp am Ausgang?
      Gruß Matthias
      EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
      - PN nur für PERSÖNLICHES!

      Kommentar


        #4
        Hallo Matthias,

        Danke für deine Antwort,

        Der Datentyp am Ausgang stimmt, an den hatte ich anfangs auch gleich gedacht, aber der steht auf 8-Bit 0-255.

        Das mit dem Runden in den Dacom Bausteinen hab ich mir auch angesehen, nur war mir das dann ehrlichgesagt wieder etwas zu hoch. Denn es gibt ja bei der berechnung nur 1 und 0 aus. weshalb ich dann nicht weiter wußte, wie ich das definieren sollte.

        denn wenn ich die Formel wie folgt definieren will, kommt im Experten immer die Meldung "die Definitionsdatei für den Baustein ist fehlerhaft."

        ### Vergleicher (>)
        5012|0|""|""(round(EN[1]*1000000) > round(EN[2]*1000000))=1"|""|1|0|0|0

        ### Vergleicher (=0)
        5012|0|"(EN[1]==0) and (EN[2]==0)"|"0"|""|1|0|0|0

        ### Vergleicher (<)
        5012|0|""|"(round(EN[1]*1000000) >= round(EN[2]*1000000))=2"|""|1|0|0|0
        mfg Mike01

        Kommentar


          #5
          Die Zeilen sind ja auch sehr merkwürdig: Schau'
          mal genau hin :-)
          Gruß Matthias
          EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
          - PN nur für PERSÖNLICHES!

          Kommentar


            #6
            Zitat von MatthiasS Beitrag anzeigen
            Die Zeilen sind ja auch sehr merkwürdig: Schau'
            mal genau hin :-)
            AAAAAAHHHHH,
            Mensch wer lesen kann ist klar im vorteil ;-)

            Hatte das HowTo zuerst nur oberflächlich angesehen, und bei der hälfte des Artikels schon wieder meine eigenen überlegungen verfolgt, dabei steht die Lösung ja eh so schön am ende der Seite.

            5012|0|"round(EN[1]*1000000) > round(EN[2]*1000000)"|"1"|""|4|0|0|0
            5012|0|"round(EN[1]*1000000) < round(EN[2]*1000000)"|"2"|""|4|0|0|0
            5012|0|"round(EN[1]*1000000) == round(EN[2]*1000000)"|"3"|""|4|0|0|0
            Vielen Dank, jetzt klappt die Logik auch.
            Manchmal sieht man echt den Wald vor lauter Bäumen nicht.

            Gruß, Mike01

            Kommentar


              #7
              Mike,
              Dein Wert ist 0-255, also immer >1 und kein Bruchteil, deshalb ist das Multiplizieren unnötig und das Round auch.

              Runden Tut Dein wenn die 3.Stelle = Ausgang!

              #immer auf gleich stellen
              5012|0|""|"3"|""|4|0|0|0
              #kleiner -> überschreibt
              5012|0|"EN[1] > EN[2] "|"1"|""|4|0|0|0
              #größer -> überschreibt
              5012|0|"EN[1] < ÉN[2] "|"2"|""|4|0|0|0


              versuchs mal so, geht auch und ist in ein paar jahren leichter zu verstehen.
              never fummel a running system...

              Kommentar

              Lädt...
              X