Ankündigung

Einklappen
Keine Ankündigung bisher.

Lichtschranke - Historie

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

    Lichtschranke - Historie

    Moin!
    Im Grunde ganz einfach - aber irgendwie will es nicht ganz klappen:
    Im Hof ist eine Lichtschranke. Und jedesmal wenn diese Unterbrochen wird dann soll in der Visu (weboutput) ein neuer Zeileneintrag erstellt werden.

    So in etwa:
    Letze Unterbrechung:
    1. Mo, 17.45:23
    2. Mo, 16.26:22
    etc.
    Das ganze ist dann auf 5 Zeilen limitiert.

    Folgender Quelltext dazu:
    Code:
    if (LS_aktiv) then LS1_txt=convert(settime(),$$) endif
    
    if change(LS4_txt) then LS5_txt=LS4_txt endif
    if change(LS3_txt) then LS4_txt=LS3_txt endif
    if change(LS2_txt) then LS3_txt=LS2_txt endif
    if change(LS1_txt) then LS2_txt=LS1_txt endif
    
    if change(LS_aktiv) and (LS_aktiv==EIN) then weboutput(LSpass,$Letzte LS Unterbrechungen:<br>1. $+ LS1_txt+$<br>2. $+ LS2_txt+$<br>3. $+ LS3_txt+$<br>4. $+ LS4_txt+$<br>5. $+ LS5_txt) endif
    Was passiert ist folgendes: Wenn die LS unterbrochen ist dann werden alle 5 Zeileneinträge direkt auf die gleiche Uhrzeit gesetzt.

    auch
    Code:
    if (LS_aktiv) then LS2_txt=LS1_txt; LS3_txt=LS2_txt; LS4_txt=LS3_txt; LS5_txt=LS4_txt;endif
    klappt nicht.

    Hat da jemand eine Info für mich? Danke!

    #2
    Denkanstoß:
    Wie lange und wie oft wird diese Abfrage durchlaufen?
    Solange die Lichtschranke unterbrochen wird oder nur bei der Flanke 1 mal?

    Gruß
    Wolfgang

    Kommentar


      #3
      Naja sowohl als auch. Im ersten Fall wird jedesmal durchlaufen, im Fall zwei aber nur wenn die LS aktiv ist. Auch hier zeigt sich dann ein ähnliches Verhalten.

      Kommentar


        #4
        Zitat von DerMitdemBusSpricht Beitrag anzeigen
        Was passiert ist folgendes: Wenn die LS unterbrochen ist dann werden alle 5 Zeileneinträge direkt auf die gleiche Uhrzeit gesetzt.
        Dein Code/Umkopieren äquivalent (andere Reihenfolge der Zeilen) dargestellt:
        [highlight=epc]
        if (LS_aktiv) then LS1_txt=convert(settime(),$$) endif
        if change(LS1_txt) then LS2_txt=LS1_txt endif
        if change(LS2_txt) then LS3_txt=LS2_txt endif
        if change(LS3_txt) then LS4_txt=LS3_txt endif
        if change(LS4_txt) then LS5_txt=LS4_txt endif
        [/highlight]
        -> Die Zeit LS1_txt wird in alle Positionen kopiert.

        Besser wäre:
        [highlight=epc]
        if (LS_aktiv) then LS5_txt=LS4_txt endif
        if change(LS5_txt) then LS4_txt=LS3_txt endif
        if change(LS4_txt) then LS3_txt=LS2_txt endif
        if change(LS3_txt) then LS2_txt=LS1_txt endif
        if change(LS2_txt) then {
        LS1_txt=convert(settime(),$$);
        weboutput(LSpass,$Letzte LS Unterbrechungen:<br>1. $+ LS1_txt+$<br>2. $+ LS2_txt+$<br>3. $+ LS3_txt+$<br>4. $+ LS4_txt+$<br>5. $+ LS5_txt);
        } endif
        [/highlight]
        Es dauert dann 5 Programmdurchläufe bis das "Array" umkopiert ist.

        auch
        Code:
        if (LS_aktiv) then LS2_txt=LS1_txt; LS3_txt=LS2_txt; LS4_txt=LS3_txt; LS5_txt=LS4_txt;endif
        klappt nicht.
        Auch wieder falsche Reihenfolge und da fehlt noch die neue Zeit.

        Lösung 2:

        [highlight=epc]
        if (LS_aktiv) then {
        LS5_txt=LS4_txt; LS4_txt=LS3_txt; LS3_txt=LS2_txt; LS2_txt=LS1_txt; LS1_txt=convert(settime(),$$);
        weboutput(LSpass,$Letzte LS Unterbrechungen:<br>1. $+ LS1_txt+$<br>2. $+ LS2_txt+$<br>3. $+ LS3_txt+$<br>4. $+ LS4_txt+$<br>5. $+ LS5_txt);
        } endif
        [/highlight]
        BR
        Marc

        Kommentar


          #5
          Super! Verstanden und getestet! Vielen Dank!

          Kommentar


            #6
            Zitat von DerMitdemBusSpricht Beitrag anzeigen
            Vielen Dank!
            Gerne
            BR
            Marc

            Kommentar

            Lädt...
            X