Ankündigung

Einklappen
Keine Ankündigung bisher.

Hysterese Zähler 19001152

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

    #16
    Ja perfekt. Das hat geklappt. Vielen Dank.

    Jetzt muss ich nur noch die Ausgänge bei Systemstart setzen. Gibt es hier einen Trick, ohne das ich einen Zähler verändere?

    Kommentar


      #17
      Warum willst Du das machen? Mach doch deine IKO die an den Ausgangsboxen hängen remanent.

      Kommentar


        #18
        Das wäre auch eine Möglichkeit. Ich wollte halt bei Systemstart gleich die Ausgänge schreiben, damit z.B.die Heizung weiß, was zu tun ist und ich es direkt sehe in der Logik...

        Kommentar


          #19
          Der Reset funktioniert noch nicht. Da scheint noch etwas vergraben zu sein.

          Aktuell sieht es so aus:

          PHP-Code:
          ###[DEF]###
          [name =Hysterese Zähler remanent ]

          [e#1 TRIGGER=Addition #init=0 ]
          [e#2 TRIGGER=Subtraktion #init=0 ]
          [e#3 =Additionswert für A1 #init=1 ]
          [e#4 =Subtraktionswert für A1 #init=1 ]
          [e#5 =Grenzwert oben #init=10 ]
          [e#6 =Grenzwert unten #init=0 ]
          [e#7 =Reset Baustein #init=0 ]
          [e#8 =Trigger Ausgänge ]


          [a#1 =Zähler Hysterese ]
          [a#2 =Hysterese 0/1 ]
          [a#3 =Hysterese negiert 1/0 ]
          [a#4 =Zähler unbegrenzt ]
          [a#5 =Zähler Summe Addition ]
          [a#6 =Zähler Summe Subtraktion ]



          [v#1 remanent= ]
          [v#2 remanent= ]
          [v#3 remanent= ]
          [v#4 remanent= ]
          [v#5 remanent= ]
          [v#6 remanent= ]


          ###[/DEF]###


          ###[HELP]###
          Dieser Baustein zählt mit jedem neuen Telegramm an E1 vorwärts und an E2 rückwärts.
          Die Schrittweite wird durch die Multiplikatoren an E3 und E4 für den Ausgang A1 bestimmt,
          d.h. der Wert an E3 wird addiert und der Wert an E4 wird subtrahiert.
          Damit kann eine Gewichtung der Zählrichtung für die Hysterese definiert werden.
          An A4 wird stets 1 addiert oder 1 subtrahiert.
          An A5 und A6 wird stehts 1 addiert und gibt daher die Anzahl Subtraktionen und Additionen aus.

          Hinweis:
          Auch negative Zählerstände sind an A4 möglich!


          E1: Triggereingang Addition
          E2: Triggereingang Subtraktion
          E3: Wert für Addition (nur für A1)
          E4: Wert für Subtraktion (nur für A1)
          E5: Hysteresegrenzwert oben --> A1 <= E5
          E6: Hysteresegrenzwert unten --> A1 >= E6
          E7: Reset
          E8: Trigger Ausgänge

          A1: E5 >= A1 >= E6
          A2: A1 = E5 --> A2=1, Rücknahme bei A1 = E6 --> A2=0
          A3: A1 = E5 --> A3=0, Rücknahme bei A1 = E6 --> A3=1
          A4: Zähler ohne Grenzwerte
          A5: Zähler Summe Additionen
          A6: Zähler Summe Subtraktionen


          ###[/HELP]###


          ###[LBS]###
          <?
          function LB_LBSID($id) {

          if ($E=logic_getInputs($id)) {

          if($E[7]['refresh']==1 && $E[7]['value'] == 1){

          LB_LBSID_reset;
          }




          if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
          $v1=logic_getVar($id,1)+$E[3]['value'];
          $v2=logic_getVar($id,2)+1;
          $v3=logic_getVar($id,3)+1;
          if ($v1>=$E[5]['value']){
          $v1=$E[5]['value'];
          $hyst = 1;
          $hystneg = 0;

          $v5 = $hyst;
          $v6 = $hystneg;

          setLogicLinkAusgang($id,2,$hyst);
          setLogicLinkAusgang($id,3,$hystneg);
          }
          logic_setVar($id,1,$v1);
          logic_setOutput($id,1,$v1);
          logic_setVar($id,2,$v2);
          logic_setOutput($id,4,$v2);

          logic_setVar($id,3,$v3);
          logic_setOutput($id,5,$v3);

          logic_setVar($id,5,$v5);

          logic_setVar($id,6,$v3);

          }

          if ($E[2]['value']!=0 && $E[2]['refresh']==1) {
          $v1=logic_getVar($id,1)-$E[4]['value'];
          $v2=logic_getVar($id,2)-1;
          $v4=logic_getVar($id,4)+1;
          if ($v1<=$E[6]['value']){
          $v1=$E[6]['value'];
          $hyst = 0;
          $hystneg = 1;

          $v5 = $hyst;
          $v6 = $hystneg;

          setLogicLinkAusgang($id,2,$hyst);
          setLogicLinkAusgang($id,3,$hystneg);
          }
          logic_setVar($id,1,$v1);
          logic_setOutput($id,1,$v1);
          logic_setVar($id,2,$v2);
          logic_setOutput($id,4,$v2);

          logic_setVar($id,4,$v4);
          logic_setOutput($id,6,$v4);

          logic_setVar($id,5,$v5);

          logic_setVar($id,6,$v3);

          }
          }


          }

          function LB_LBSID_reset(){
          logic_setVar($id,1,0);
          logic_setVar($id,2,0);
          logic_setVar($id,3,0);
          logic_setVar($id,4,0);
          logic_setVar($id,5,0);
          logic_setVar($id,6,0);
          logic_setOutput($id,1,0);
          logic_setOutput($id,2,0);
          logic_setOutput($id,3,0);
          logic_setOutput($id,4,0);
          logic_setOutput($id,5,0);
          logic_setOutput($id,6,0);
          }


          ?>
          ###[/LBS]###


          ###[EXEC]###
          <?

          ?>
          ###[/EXEC]###

          Kommentar


            #20
            Du musst die id mit übergeben:

            PHP-Code:
            LB_LBSID_reset($id); 
            PHP-Code:
            function LB_LBSID_reset($id){ 

            Kommentar


              #21
              Danke für die Info. Habe es anders gelöst. Habe den Funktionsaufruf herausgenommen und den Code direkt statt dem Funktionsaufruf eingetragen. Das klappt.Oder ist die Variante mit Funktionsaufruf besser?

              Kommentar


                #22
                Ist völlig egal....

                Kommentar


                  #23
                  Vielen Dank für die Unterstützung.

                  Der neue Baustein wird in den nächsten Minuten hochgeladen.

                  Kommentar

                  Lädt...
                  X