TIA SCL Warten nach Bedingung

litlegerman

Level-2
Beiträge
337
Reaktionspunkte
13
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich habe follgendes Problem, ich würde gerne 20 Byte der Reihe nach abarbeiten und das, dass einen bestimmten Wert hat für eine bestimmte Zeit anzeigen.
Leider überspringt er ein Byte wenn 2 hintereinander diesen bestimmten Zustand haben.
Code:
[FONT=Verdana]Var INPUT
Ar_Status: Array[0...20] ob Byte
End_Var[/FONT]
[FONT=Verdana]Var_Output
I_Aktiv: Int
B_Status: byte
End_Var[/FONT]
[FONT=Verdana]Var_InOut
Spe_X_Zeigen
End_Var[/FONT]
[FONT=Verdana]Var_Static
I: Int
Zei_Warten : Ton_Time
End_Var[/FONT]
[FONT=Verdana]    IF NOT #Spe_X_Zeigen AND #I < 20 AND "Impuls 0,5 Sekunden" THEN
        #I := #I + 1;
    ELSIF #I >= 20 THEN
        #I := 0;
    END_IF;
    IF (#Ar_Status[#I] <> 16#80) AND (#Ar_Status[#I] <> 16#0)   THEN
        #I_Aktiv := #I;
        #B_Status := #Ar_Status[#I];
        #Spe_X_Zeigen := TRUE;
    END_IF;
    #Zei_Warten(IN := #Spe_X_Zeigen,
                PT := t#3s);
    IF #Zei_Warten.Q THEN
        #Spe_X_Zeigen := false;
    END_IF;[/FONT]

Wo habe ich denn einen Denkfehler drinn?
Danke schon mal
 
Moin,
dein Timer sieht dann die fallende Flanke von Spe_X_Zeigen nicht. Du müsstest den Timer-Aufruf mal ans Ende des Bausteins schieben.
 
Zurück
Oben