Bytebeisser
Level-2
- Beiträge
- 13
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo.
Ich möchte zwei Impulse mit bestimmter Wartezeit dazwischen erzeugen. Mein erster Gedanke war, dies mit einem FB zu machen nach dem Motto "Fire and Forget".
Das klappt anscheinend nicht, weil der FB in den folgenden Zyklen nur dann arbeitet, wenn er dort aufgerufen wird. Die Funktionslogik in FUP habe ich als Bildchen angehängt. Dabei habe ich aber den CFC-Editor nur als Zeichentool missbraucht um das Bildchen zu erhalten. Interessant ist zunächst der rot eingekreiste Bereich. Programmieren möchte ich das Ganze in ST.
Da habe ich auch was.
Hauptprogramm:
PRG_timertest
Dieses Programm wird zyklisch aufgerufen und tut zunächst, was es soll. LED_14 leuchtet kurz und nach ein paar Sekunden leuchtet auch LED_16 kurz auf.
FB_timertest
Dieser FB arbeitet nur, wenn taster3 permanent gehalten wird, anscheinend, weil der FB in den Folgezyklen nur aufgerufen, wenn die Bedinung (taster3) gegeben ist.
Das ist soweit OK. Ich müsste mir überlegen, wie dich die Bedingung im Hauptprogramm setze. Ich könnte evtl. dort das SR (oder RS) Flipflop unterbringen.
Aber was ist grundsätzlich von meinem Ansatz zu halten? Macht man das so?
FBs wollte ich verwenden, weil ich viele Instanzen benötige. Es geht um eine Sonnenschutzsteuerung mittels Rolläden und es soll jeder Rolläden indviduell behandelt werden. Da erschien mir ein FB mit Gedächtnis sinnvoll.
Grundsätzlich scheinen FBs ja durchaus geeignet zu sein, um zyklenübergreifend zu arbeiten, wei Ton, Tof und Tp zeigen. Aber wie müsste ich mein Programm ändern, damit das funktioniert und möglichst viel "Intelligenz" (wie z.B. das FlipFlop) im FB enthalten ist?
Ich möchte zwei Impulse mit bestimmter Wartezeit dazwischen erzeugen. Mein erster Gedanke war, dies mit einem FB zu machen nach dem Motto "Fire and Forget".
Das klappt anscheinend nicht, weil der FB in den folgenden Zyklen nur dann arbeitet, wenn er dort aufgerufen wird. Die Funktionslogik in FUP habe ich als Bildchen angehängt. Dabei habe ich aber den CFC-Editor nur als Zeichentool missbraucht um das Bildchen zu erhalten. Interessant ist zunächst der rot eingekreiste Bereich. Programmieren möchte ich das Ganze in ST.
Da habe ich auch was.
Hauptprogramm:
Code:
PRG_timertest();
IF gvl.taster3 THEN
timer1(set:=gvl.taster3,reset:=gvl.taster4,
aktiv=>gvl.LED_13,
imp_1=>gvl.LED_14,
interv=>gvl.LED_15,
imp_2=>gvl.LED_16
);
END_IF;
PRG_timertest
Code:
PROGRAM PRG_timertest
VAR
impuls_1,impuls_2: tp;
intervall: ton;
Timer_aktiv: SR;
END_VAR
impuls_1(in:=Timer_aktiv.Q1, pt:=T#500MS, q=>gvl.led_10);
intervall(in:=timer_aktiv.Q1, pt:=T#3S, q=>gvl.LED_11);
impuls_2(in:=intervall.Q, pt:=T#500MS,q=>gvl.LED_12);
timer_aktiv(set1:=gvl.taster1,reset:=(gvl.taster2 OR intervall.Q),q1=>gvl.LED_9);
Dieses Programm wird zyklisch aufgerufen und tut zunächst, was es soll. LED_14 leuchtet kurz und nach ein paar Sekunden leuchtet auch LED_16 kurz auf.
FB_timertest
Code:
FUNCTION_BLOCK FB_timertest
VAR_INPUT
set,reset:BOOL;
END_VAR
VAR_OUTPUT
imp_1,imp_2,interv,aktiv:BOOL;
END_VAR
VAR
impuls_1,impuls_2: tp;
intervall: ton;
SR_Timer_aktiv: SR;
RS_Timer_aktiv: RS;
END_VAR
// RS
impuls_1(in:=RS_Timer_aktiv.Q1, pt:=T#500MS, q=>imp_1);
intervall(in:=RS_timer_aktiv.Q1, pt:=T#3S, q=>interv);
impuls_2(in:=intervall.Q, pt:=T#500MS,q=>imp_2);
RS_timer_aktiv(set:=set, reset1:=reset,q1=>aktiv);
Dieser FB arbeitet nur, wenn taster3 permanent gehalten wird, anscheinend, weil der FB in den Folgezyklen nur aufgerufen, wenn die Bedinung (taster3) gegeben ist.
Das ist soweit OK. Ich müsste mir überlegen, wie dich die Bedingung im Hauptprogramm setze. Ich könnte evtl. dort das SR (oder RS) Flipflop unterbringen.
Aber was ist grundsätzlich von meinem Ansatz zu halten? Macht man das so?
FBs wollte ich verwenden, weil ich viele Instanzen benötige. Es geht um eine Sonnenschutzsteuerung mittels Rolläden und es soll jeder Rolläden indviduell behandelt werden. Da erschien mir ein FB mit Gedächtnis sinnvoll.
Grundsätzlich scheinen FBs ja durchaus geeignet zu sein, um zyklenübergreifend zu arbeiten, wei Ton, Tof und Tp zeigen. Aber wie müsste ich mein Programm ändern, damit das funktioniert und möglichst viel "Intelligenz" (wie z.B. das FlipFlop) im FB enthalten ist?