FB_RS_T_FF¶
Einleitung¶
Der Funktionsblock FB_RS_T_FF realisiert einen bistabilen, reset-dominanten Latch mit zusätzlicher Toggle-Funktion. Er kombiniert die Eigenschaften eines RS-Flipflops (Setzen und Zurücksetzen) mit der Möglichkeit, den Ausgang bei jedem positiven Flankenwechsel des Taktsignals umzuschalten. Der Reset-Eingang hat dabei Priorität, gefolgt vom Set-Eingang und dann der Toggle-Funktion.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Ereignis | Kommentar |
|---|---|
REQ |
Normaler Ausführungsanforderung – löst die Verarbeitung der Eingangssignale aus. |
Ereignis-Ausgänge¶
| Ereignis | Kommentar |
|---|---|
CNF |
Bestätigt die Ausführung nach erfolgter Berechnung des Ausgangs Q1. |
Daten-Eingänge¶
| Variable | Typ | Kommentar |
|---|---|---|
S |
BOOL | Setzen – setzt den Ausgang Q1 auf TRUE, sofern R1 nicht gleichzeitig aktiv ist. |
R1 |
BOOL | Reset (dominant) – setzt den Ausgang Q1 auf FALSE und hat Vorrang vor S und Toggle. |
CLK |
BOOL | Clock – Taktgeber für die Toggle-Funktion; bei steigender Flanke wird Q1 invertiert, wenn weder Reset noch Set aktiv sind. |
Daten-Ausgänge¶
| Variable | Typ | Kommentar |
|---|---|---|
Q1 |
BOOL | Ausgang des Latch – zeigt den aktuellen gespeicherten Zustand an. |
Adapter¶
Der Funktionsblock besitzt keine Adapter-Schnittstellen.
Funktionsweise¶
Bei jedem Ereignis REQ wird der Algorithmus abgearbeitet:
- Reset dominant: Falls R1 = TRUE, wird Q1 sofort auf FALSE gesetzt – unabhängig von allen anderen Eingängen.
- Set: Falls R1 = FALSE und S = TRUE, wird Q1 auf TRUE gesetzt.
- Toggle: Falls weder Reset noch Set aktiv sind (R1 = FALSE, S = FALSE), wird der Toggle-Mechanismus ausgelöst: Wenn CLK den Wert TRUE annimmt und eine steigende Flanke erkannt wird (d.h. CLK war beim vorherigen Aufruf FALSE, gespeichert in der internen Variable EDGE), dann wird Q1 invertiert (Q1 := NOT Q1).
- Anschließend wird die interne Variable EDGE auf den aktuellen Wert von CLK gesetzt, um Flanken für den nächsten Aufruf zu erkennen.
Der Algorithmus wird wie folgt im ST-Code umgesetzt:
structured text
IF R1 THEN
Q1 := BOOL#FALSE;
ELSIF S THEN
Q1 := BOOL#TRUE;
ELSIF CLK AND NOT EDGE THEN
Q1 := NOT Q1;
END_IF;
EDGE := CLK;
Technische Besonderheiten¶
- Reset-Dominanz: Der R1-Eingang hat höchste Priorität; wird er gesetzt, überschreibt er sowohl Set- als auch Toggle-Befehle.
- Flankenerkennung: Der Toggle erfolgt nur bei einer steigenden Flanke von
CLK(Übergang vonFALSEaufTRUE), was durch die interne VariableEDGErealisiert wird. - Initialzustand: Die interne
EDGE-Variable ist mitTRUEinitialisiert, sodass beim ersten Aufruf kein ungewollter Toggle ausgelöst wird, da die BedingungCLK AND NOT EDGEsonst bei einem statischenTRUE-Pegel erfüllt wäre. - Datentyp: Alle Ein- und Ausgänge sind vom Typ
BOOL.
Zustandsübersicht¶
Der Funktionsblock besitzt keinen expliziten Zustandsautomaten; der Zustand wird implizit durch die internen Variablen Q1 und EDGE abgebildet. Eine Zustandstabelle fasst das Verhalten zusammen:
Aktuelles Q1 |
R1 |
S |
CLK (steigende Flanke) |
Neues Q1 |
|---|---|---|---|---|
| x | TRUE | x | x | FALSE |
| x | FALSE | TRUE | x | TRUE |
| x | FALSE | FALSE | TRUE (und vorher FALSE) | NOT Q1 |
| x | FALSE | FALSE | FALSE oder keine Flanke | unverändert |
Anwendungsszenarien¶
- Reset-dominante Steuerung mit zusätzlicher Umschaltmöglichkeit, z. B. für manuelle Übersteuerung in Sicherheitskreisen.
- Toggle-Funktion bei Taktflanken, z. B. als Frequenzteiler oder Umschalter in digitalen Logikschaltungen.
- Kombinierte Set/Reset/Toggle-Steuerung in Automatisierungssystemen, wo ein Ausgang sowohl durch Sensorsignale gesetzt als auch durch einen Taster umgeschaltet werden kann.
Vergleich mit ähnlichen Bausteinen¶
- RS-Flipflop: Reines RS ohne Toggle;
FB_RS_T_FFerweitert es um eine Toggle-Funktion. - Toggle-Flipflop (T-FF): Reiner Toggle ohne Set/Reset; dieser Baustein kombiniert beide Funktionen, wobei der Toggle nur bei inaktiven Set/Reset ausgeführt wird.
- JK-Flipflop: Bietet ähnliche Flexibilität (Set, Reset, Toggle), benötigt aber zwei Ereigniseingänge (z. B. für J und K).
FB_RS_T_FFvereinfacht die Schnittstelle auf einen Ereigniseingang und drei boolesche Daten.
Fazit¶
FB_RS_T_FF ist ein vielseitiger Funktionsblock, der einen reset-dominanten Latch mit einer flankengetriggerten Toggle-Funktion kombiniert. Er eignet sich für Anwendungen, die sowohl feste Setz- und Rücksetzsignale als auch umschaltbare Zustandswechsel erfordern. Die klare Priorisierung (Reset > Set > Toggle) sowie die eingebaute Flankenerkennung machen ihn robust und einfach in Steuerungslogiken einsetzbar.