-> Hier kostenlos registrieren
Ich verwende nach Auswertung der Funktionstasten F1 - F5 eines Displays die "sub .... end_sub" in Abhängigkeit der betätigten F-Taste.
ganz Easy, 5 Unterprogramme.
Reicht aber nicht, also wird zu Beginn jeder SubRoutine su_F1_0 bis su_F5_0 weiter verzweigt zu su_F1_1 ..... su_F1_5 / su_F2_1 .... su_F2_5 / ...... / su_F5_1 .... su_F5_5. Ergibt, ganz easy, 25 verschiedene Möglichkeiten.
So, nun zum Optimieren:
"Aufenthalt" in su_F1_0 ==> Led in F1 ist ON. Easy.
bei "Aufenthalt" in su_F1_1 oder su_F1_2 oder su_F1_x soll die LED --blinken--.
Klar, eine su_Blinken muss her. Das Dumme ist nun: mit
Sub Blinken;
LED := not LED;
delay(t#1000mS);
End_Sub;
bleibe ich 1 Sekunde im su_Blinken "hängen". Eingaben am Display sollen aber direkt und unabhängig vom LED-Blinken weiterhin in der su_Fx_y sofort möglich sein. Klar, es gibt die Möglichkeit, in jeder der 25 SUBs das Blinken unabhängig zu programmieren. Aber das wäre ja pervers ....
Also meine Frage an die Profis:
Gibt es überhaupt den Weg über eine universelle/taskunabhängige "Blinken-Routine" (evtl mit Übergabe -aktueller individueller TimerWert aus su_yx -??-) und es muss individuell in jeder Sub programmiert werden?
In einer konventionellen SPS ist das kein Thema, da würde ich einfach einen Systemtimer abfragen und der Code kommt ja immer alle 20mS "da vorbei" und aktualisiert den LED-Zustand
BSP
SLC500: XIC S4/6 (1 Sek-Timer) OTE [LED_F1] // LED_F1 hat immer/gleichzeitig den Zustand von Bit S4/6
S7:
U Timer(1Sek)
= LED_F1
Ich weiß, ein simples Problem aber "blöd" zu beschreiben. Sorry.
@Jetter: LED_F1 := flash[flashTime] ==> LED_F1 := flash(t#500mS)
ganz Easy, 5 Unterprogramme.
Reicht aber nicht, also wird zu Beginn jeder SubRoutine su_F1_0 bis su_F5_0 weiter verzweigt zu su_F1_1 ..... su_F1_5 / su_F2_1 .... su_F2_5 / ...... / su_F5_1 .... su_F5_5. Ergibt, ganz easy, 25 verschiedene Möglichkeiten.
So, nun zum Optimieren:
"Aufenthalt" in su_F1_0 ==> Led in F1 ist ON. Easy.
bei "Aufenthalt" in su_F1_1 oder su_F1_2 oder su_F1_x soll die LED --blinken--.
Klar, eine su_Blinken muss her. Das Dumme ist nun: mit
Sub Blinken;
LED := not LED;
delay(t#1000mS);
End_Sub;
bleibe ich 1 Sekunde im su_Blinken "hängen". Eingaben am Display sollen aber direkt und unabhängig vom LED-Blinken weiterhin in der su_Fx_y sofort möglich sein. Klar, es gibt die Möglichkeit, in jeder der 25 SUBs das Blinken unabhängig zu programmieren. Aber das wäre ja pervers ....
Also meine Frage an die Profis:
Gibt es überhaupt den Weg über eine universelle/taskunabhängige "Blinken-Routine" (evtl mit Übergabe -aktueller individueller TimerWert aus su_yx -??-) und es muss individuell in jeder Sub programmiert werden?
In einer konventionellen SPS ist das kein Thema, da würde ich einfach einen Systemtimer abfragen und der Code kommt ja immer alle 20mS "da vorbei" und aktualisiert den LED-Zustand
BSP
SLC500: XIC S4/6 (1 Sek-Timer) OTE [LED_F1] // LED_F1 hat immer/gleichzeitig den Zustand von Bit S4/6
S7:
U Timer(1Sek)
= LED_F1
Ich weiß, ein simples Problem aber "blöd" zu beschreiben. Sorry.
@Jetter: LED_F1 := flash[flashTime] ==> LED_F1 := flash(t#500mS)
Zuletzt bearbeitet: