litlegerman
Level-2
- Beiträge
- 336
- Reaktionspunkte
- 13
-> Hier kostenlos registrieren
Hallo,
Ich habe folgendes Problem, ich habe ein Array off Bit [16] (AT_Bits[16]), hier möchte die Plätze die TRUE sind nacheinander für 3 Sekunden anzeigen.
Es geht hier konkret um eine Maschine mit 16 Not-Halt Schaltern, mit einem Digitalen Rückmelde-Kontakt, wenn einer oder mehrere Betätigt sind, sollen diese ,dem Bediener angezeigt werden (Kom HMI Funktionen".M008_Not_Aus.I_KanalMeldung).
Wenn alle aus sind, soll der Hinweis zum Not-Halt entsperren gegeben werden (Kom HMI Funktionen".M008_Not_Aus.B_Meldung := 0).
An sich funktioniert mein Code, aber sobald mehr als ein Bit True ist zeigt er sie nur kurz im Wechsel an, ich hätte es aber gerne so, dass er sie immer 3 Sekunden anzeigt und dann zum nächsten springt.
Außerdem gefällt mir die Lösung mit dem zweiten Timer (ZeiOk) auch nicht (dient dazu, die Anzeige zurückzusetzen, falls keiner betätigt ist).
Kann mir jemand helfen?
Gruß
Ich habe folgendes Problem, ich habe ein Array off Bit [16] (AT_Bits[16]), hier möchte die Plätze die TRUE sind nacheinander für 3 Sekunden anzeigen.
Es geht hier konkret um eine Maschine mit 16 Not-Halt Schaltern, mit einem Digitalen Rückmelde-Kontakt, wenn einer oder mehrere Betätigt sind, sollen diese ,dem Bediener angezeigt werden (Kom HMI Funktionen".M008_Not_Aus.I_KanalMeldung).
Wenn alle aus sind, soll der Hinweis zum Not-Halt entsperren gegeben werden (Kom HMI Funktionen".M008_Not_Aus.B_Meldung := 0).
An sich funktioniert mein Code, aber sobald mehr als ein Bit True ist zeigt er sie nur kurz im Wechsel an, ich hätte es aber gerne so, dass er sie immer 3 Sekunden anzeigt und dann zum nächsten springt.
Außerdem gefällt mir die Lösung mit dem zweiten Timer (ZeiOk) auch nicht (dient dazu, die Anzeige zurückzusetzen, falls keiner betätigt ist).
Kann mir jemand helfen?
Gruß
Code:
//Durchschalten der Funktion
IF NOT #Spe_X_Zeigen AND #I2 < 17 THEN
#I2 := #I2 + 1;
END_IF;
IF #I2 > 16 THEN
#I2 := 1;
END_IF;
IF #AT_Bits[#I2]
THEN
"Kom HMI Funktionen".M008_Not_Aus.I_KanalMeldung := #I2;
"Kom HMI Funktionen".M008_Not_Aus.B_Meldung := 1;
#Spe_X_Zeigen := 1;
END_IF;
#ZeiDel(IN := #Spe_X_Zeigen, //TON Timer
PT := t#3s);
IF #ZeiDel.Q THEN
#Spe_X_Zeigen := false;
END_IF;
#ZeiOk(IN:=NOT #Spe_X_Zeigen, //TON Timer
PT:=t#1s);
IF #ZeiOk.Q THEN
"Kom HMI Funktionen".M008_Not_Aus.I_KanalMeldung := 0;
"Kom HMI Funktionen".M008_Not_Aus.B_Meldung := 0;
END_IF;