Bitverknüpfungen
Schließer, Spulen & Flankenauswertung
Das Herz der SPS-Programmierung. Bitverknüpfungen verarbeiten jede boolesche Operation — von einfachen Schließern und Spulen bis hin zu Flip-Flops und Flankenauswertung. Meistern Sie diese und Sie können jede Automatisierungslogik erstellen.
Was sind Bitverknüpfungen?
Bitverknüpfungen sind die grundlegendsten Anweisungen in der SPS-Programmierung. Sie arbeiten mit booleschen Signalen (TRUE/FALSE, 1/0) — sie lesen Eingangszustände, kombinieren Bedingungen mit UND/ODER-Logik und steuern Ausgänge. Im Kontaktplan (KOP) erscheinen diese als Schließer, Öffner und Spulen in Netzwerken. Im Funktionsplan (FUP) erscheinen sie als UND/ODER/NICHT-Boxen.
Jedes SPS-Programm nutzt Bitverknüpfungen intensiv. Eine Motor-Start/Stopp-Schaltung, eine Alarmbedingung, eine Ventilverriegelung — sie alle beginnen mit Schließern oder Öffnern, die Sensorzustände lesen, und enden mit Spulen, die Aktoren ansteuern.
Kontakte — Eingangszustände lesen
Kontakte lesen den booleschen Zustand einer Variablen und geben ihn entlang der Logikkette weiter
Schließer
—| |—Funktionsweise
Liest eine boolesche Variable (BOOL). Wenn die Variable TRUE (1) ist, schließt der Kontakt und gibt das Signal (Verknüpfungsergebnis = TRUE) an das nächste Element weiter. Wenn die Variable FALSE (0) ist, ist der Kontakt offen und blockiert den Signalfluss. Dies ist die am häufigsten verwendete Anweisung in der KOP-Programmierung.
Einsatzbereich
Jedes Mal, wenn Sie prüfen müssen, ob eine Bedingung TRUE ist: Ist ein Taster gedrückt? Ist ein Sensor aktiv? Ist ein Merker gesetzt? Platzieren Sie einen Schließer und weisen Sie ihm Ihre Variable zu.
Profi-Tipps
Der Name 'Schließer' stammt aus der Relaistechnik — der Kontakt ist im Normalzustand/Ruhezustand offen (leitet keinen Strom). Er schließt sich bei Betätigung.
Mehrere Schließer in Reihe bilden eine UND-Logik. Mehrere Schließer in parallelen Zweigen bilden eine ODER-Logik.
Im FUP entspricht dies einfach der Verdrahtung einer BOOL-Variablen mit einem UND/ODER-Eingang — es ist kein explizites Kontaktsymbol erforderlich.
Öffner
—|/|—Funktionsweise
Das Gegenstück zum Schließer. Wenn die Variable FALSE (0) ist, ist der Kontakt geschlossen und lässt das Signal durch. Wenn die Variable TRUE (1) ist, öffnet der Kontakt und blockiert den Signalfluss. Er wirkt wie eine NICHT-Operation auf den Variablenwert.
Einsatzbereich
Wenn Sie prüfen müssen, ob eine Bedingung NICHT wahr ist: Not-Halt nicht gedrückt, kein Fehler aktiv, Endschalter nicht erreicht. Sehr verbreitet für Sicherheitsverriegelungen und Alarmbedingungen.
Profi-Tipps
Verwenden Sie Öffner für Not-Halt- und Sicherheitskreise — sie sind drahtbruchsicher. Wenn das Kabel bricht, öffnet der Kontakt und stoppt die Maschine.
Im FUP entspricht dies einem negierten Eingang (kleiner Kreis am Eingangspin einer UND/ODER-Box).
Verwechseln Sie die Öffner-Anweisung nicht mit einem physischen Öffner-Taster. Dies sind unabhängige Konzepte.
VKE invertieren
—|NOT|—Funktionsweise
Invertiert (negiert) das aktuelle Verknüpfungsergebnis (Verknüpfungsergebnis). Wenn die bisherige Logikkette TRUE ergibt, macht NOT sie zu FALSE und umgekehrt. Es operiert auf dem kumulierten Logikergebnis, nicht auf einer spezifischen Variablen.
Einsatzbereich
Wenn Sie einen komplexen Logikausdruck invertieren müssen, anstatt eine einzelne Variable. Anstatt die gesamte Bedingung mit invertierten Kontakten neu zu schreiben, platzieren Sie NOT am Ende, um das Ergebnis umzukehren.
Profi-Tipps
NOT invertiert das gesamte Verknüpfungsergebnis an diesem Punkt — im Gegensatz zu einem Öffner, der nur eine Variable invertiert.
Verwenden Sie im FUP die NICHT-Box oder negieren Sie den Ausgang eines Logikgatters.
Sparsam verwenden — ein übermäßiger Einsatz von NOT macht die Logik schwer lesbar. Oft ist eine Umstrukturierung der Logik klarer.
Spulen — Ausgänge steuern
Spulen schreiben das Ergebnis der Logikkette in eine Ausgangsvariable
Zuweisung
—( )—Funktionsweise
Schreibt das aktuelle Verknüpfungsergebnis (Verknüpfungsergebnis) in eine boolesche Variable. Wenn die Logikkette TRUE ist, wird die Variable TRUE. Wenn FALSE, wird die Variable FALSE. Dies ist die Standard-Ausgangsspule — sie spiegelt die Eingangslogik in jedem Scan-Zyklus direkt wider.
Einsatzbereich
Für jeden Ausgang, der direkt seinen Eingangsbedingungen folgen soll. Eine Meldeleuchte, die leuchtet, wenn ein Motor läuft, ein Ventil, das öffnet, wenn die Bedingungen erfüllt sind. Der Ausgang folgt dem Eingang — wenn die Bedingungen FALSE werden, wird auch der Ausgang FALSE.
Profi-Tipps
Die Zuweisung ist 'nicht-remanent' innerhalb des Zyklus — sie schreibt bei jedem Scan. Wenn die Logik FALSE wird, geht der Ausgang sofort auf FALSE.
Eine Variable sollte nur in EINEM Netzwerk zugewiesen werden. Mehrere Zuweisungen zur gleichen Variable führen dazu, dass die letzte gewinnt, was zu unvorhersehbarem Verhalten führt.
Im FUP ist die Zuweisung einfach die Verbindung des Ausgangs eines Logikgatters mit einer BOOL-Variablen.
Negierte Zuweisung
—(/)—Funktionsweise
Schreibt das invertierte Verknüpfungsergebnis in eine boolesche Variable. Wenn die Logikkette TRUE ist, wird die Variable FALSE. Wenn die Logikkette FALSE ist, wird die Variable TRUE. Sie kombiniert Zuweisung + NOT in einer Anweisung.
Einsatzbereich
Wenn ein Ausgang genau im entgegengesetzten Zustand aktiv sein soll. Zum Beispiel eine Lampe 'System OK', die ausgeht, wenn ein Fehler erkannt wird. Anstatt die gesamte Logikkette zu invertieren, verwenden Sie die negierte Spule.
Profi-Tipps
Entspricht dem Platzieren eines NOT vor einer regulären Zuweisung, ist aber kompakter.
Mit Vorsicht genießen — negierte Spulen können beim Lesen verwirrend sein. Manchmal ist es klarer, die Logik umzustrukturieren.
Im FUP ist dies eine negierte Ausgangsverbindung.
Ausgang rücksetzen
—(R)—Funktionsweise
Wenn das Verknüpfungsergebnis TRUE ist, wird die Variable auf FALSE (0) gesetzt. Wenn das Verknüpfungsergebnis FALSE ist, bleibt die Variable unverändert (behält ihren aktuellen Wert). Dies ist eine Einweg-Operation — sie kann Dinge nur AUSschalten, nie EIN.
Einsatzbereich
In Setzen/Rücksetzen-Schaltungen: Ein Netzwerk setzt den Ausgang (EIN), ein anderes setzt ihn zurück (AUS). Verwenden Sie Rücksetzen für Stopp-Bedingungen, Fehlerquittierung und Alarmquittierung. Das Rücksetzen hat in der Sicherheitslogik meist Vorrang.
Profi-Tipps
Rücksetzen wirkt nur, wenn sein Verknüpfungsergebnis TRUE ist. Wenn das Verknüpfungsergebnis FALSE ist, bleibt der Ausgang unverändert — er wird NICHT auf TRUE gesetzt.
In einem S/R-Paar hat die Anweisung Vorrang, die zuletzt im Programm erscheint (wenn beide Bedingungen gleichzeitig TRUE sind).
Rücksetzen ist speichernd — nach einem Rücksetzen bleibt der Ausgang FALSE, bis er explizit wieder gesetzt wird.
Ausgang setzen
—(S)—Funktionsweise
Wenn das Verknüpfungsergebnis TRUE ist, wird die Variable auf TRUE (1) gesetzt. Wenn das Verknüpfungsergebnis FALSE ist, bleibt die Variable unverändert (behält ihren aktuellen Wert). Dies ist eine Einweg-Operation — sie kann Dinge nur EINschalten, nie AUS.
Einsatzbereich
In Setzen/Rücksetzen-Schaltungen: Verwenden Sie Setzen für Start-Bedingungen, Verriegelungssignale und Erstlauf-Merker. Einmal gesetzt, bleibt der Ausgang TRUE, bis er explizit zurückgesetzt wird — das macht ihn 'selbsthaltend', ohne einen Selbsthaltekontakt zu benötigen.
Profi-Tipps
Setzen wirkt nur, wenn sein Verknüpfungsergebnis TRUE ist. Wenn das Verknüpfungsergebnis FALSE ist, bleibt der Ausgang unverändert — er wird NICHT zurückgesetzt.
Klassische Motorsteuerung: Netzwerk 1 = Start-Taster → Motor setzen. Netzwerk 2 = Stopp-Taster ODER Fehler → Motor rücksetzen.
Vorsicht mit remanenten Variablen in Sicherheitskreisen — nach einem Power-Cycle können gesetzte Ausgänge ihren letzten Zustand beibehalten, abhängig von den DB-Einstellungen.
Bitfeld-Operationen
Einen Bereich von Bits in einer einzigen Operation setzen oder rücksetzen
SET_BF — Bitfeld setzen
Funktionsweise
Setzt eine zusammenhängende Gruppe von Bits ab einer angegebenen Adresse auf TRUE. Sie definieren das Start-Bit und die Anzahl der zu setzenden Bits. Wenn das Verknüpfungsergebnis TRUE ist, werden alle angegebenen Bits auf 1 gesetzt.
Einsatzbereich
Wenn Sie mehrere zusammengehörige Ausgänge gleichzeitig aktivieren müssen — zum Beispiel das Setzen aller Bits eines Statusworts, das Initialisieren einer Gruppe von Merkern oder das Aktivieren einer Bank von Ausgängen auf einmal.
Profi-Tipps
Nützlich für Batch-Operationen, anstatt individuelle Setzen-Anweisungen für jedes Bit zu schreiben.
Der Parameter für die Anzahl der Bits bestimmt, wie viele aufeinanderfolgende Bits betroffen sind.
Wie beim Setzen wirkt dies nur, wenn das Verknüpfungsergebnis TRUE ist — Bits bleiben unverändert, wenn das Verknüpfungsergebnis FALSE ist.
RESET_BF — Bitfeld rücksetzen
Funktionsweise
Setzt eine zusammenhängende Gruppe von Bits ab einer angegebenen Adresse auf FALSE zurück. Sie definieren das Start-Bit und die Anzahl der zurückzusetzenden Bits. Wenn das Verknüpfungsergebnis TRUE ist, werden alle angegebenen Bits auf 0 gelöscht.
Einsatzbereich
Wenn Sie mehrere Merker oder Ausgänge gleichzeitig löschen müssen — zum Beispiel das Löschen aller Alarm-Bits in einem Statuswort, das Rücksetzen einer Gruppe von Ausgängen während des Herunterfahrens oder das Initialisieren eines Datenbereichs.
Profi-Tipps
Das Gegenstück zu SET_BF — verwenden Sie sie zusammen für Setzen/Rücksetzen-Operationen auf Gruppenebene.
Besonders nützlich zum Löschen von Alarmwörtern oder Statusregistern in einer einzigen Operation.
Wie beim Rücksetzen wirkt dies nur, wenn das Verknüpfungsergebnis TRUE ist — Bits bleiben unverändert, wenn das Verknüpfungsergebnis FALSE ist.
Flipflops — Speicherschaltungen
Bistabile Elemente, die ihren Zustand speichern, bis sie explizit geändert werden
SR — SR-Flipflop
Funktionsweise
Ein bistabiles Flipflop mit Setz-Priorität. Es hat zwei Eingänge: S (Setzen) und R (Rücksetzen) sowie einen Ausgang Q. Wenn S=TRUE, wird Q TRUE. Wenn R=TRUE, wird Q FALSE. Wenn sowohl S als auch R gleichzeitig TRUE sind, ist Q TRUE (Setzen dominiert).
Einsatzbereich
Für Speicherschaltungen, bei denen die Setz-Bedingung Vorrang haben soll. Bei einem SR-Flipflop bleibt der Ausgang EIN, wenn Start und Stopp gleichzeitig gedrückt werden. Verwenden Sie dies, wenn 'Start-Priorität' akzeptabel ist.
Profi-Tipps
SR = Setz-Priorität. Wenn S=1 und R=1 → Q=1. Verwenden, wenn Starten wichtiger ist als Stoppen.
In sicherheitskritischen Anwendungen bevorzugen Sie RS (Rücksetz-Priorität) — es ist sicherer, wenn beide Bedingungen gleichzeitig ausgelöst werden.
Das Flipflop ist sowohl im KOP als auch im FUP eine einzelne Box mit S-, R-Eingängen und Q-Ausgang.
RS — RS-Flipflop
Funktionsweise
Ein bistabiles Flipflop mit Rücksetz-Priorität. Es hat zwei Eingänge: R (Rücksetzen) und S (Setzen) sowie einen Ausgang Q. Wenn S=TRUE, wird Q TRUE. Wenn R=TRUE, wird Q FALSE. Wenn sowohl R als auch S gleichzeitig TRUE sind, ist Q FALSE (Rücksetzen dominiert).
Einsatzbereich
Für Speicherschaltungen, bei denen Sicherheit an erster Stelle steht. Die Rücksetz-Bedingung (Stopp) hat Vorrang — wenn sowohl Start als auch Stopp aktiv sind, ist der Ausgang AUS. Dies ist die Standardwahl für Motorsteuerungen und Sicherheitsverriegelungen.
Profi-Tipps
RS = Rücksetz-Priorität. Wenn S=1 und R=1 → Q=0. Die sicherere Wahl für die meisten industriellen Anwendungen.
Klassisches Motorsteuerungsmuster: S = Start_Taster UND NICHT Fehler, R = Stopp_Taster ODER Not-Halt ODER Fehler.
Der Ausgang Q ist innerhalb des Zyklus speichernd — er behält seinen Wert, bis das Flipflop erneut ausgewertet wird.
Flankenauswertung — Signaländerungen erkennen
Erkennen, wenn ein Signal von FALSE→TRUE oder TRUE→FALSE wechselt
Operand auf positive Flanke abfragen
—|P|—Funktionsweise
Erkennt eine steigende Flanke (Wechsel von FALSE auf TRUE) bei einem spezifischen Operanden. Die Anweisung vergleicht den aktuellen Wert mit dem Wert aus dem vorherigen Zyklus. Wenn sich der Wert von 0 auf 1 geändert hat, ist das Verknüpfungsergebnis für genau einen Zyklus TRUE. Erfordert einen Flankenmerker zur Speicherung des vorherigen Zustands.
Einsatzbereich
Wenn Sie einen Einzelimpuls aus einem Dauersignal benötigen: Tastendruck zählen, eine einzelne Aktion bei Pegeländerung auslösen, einen Zähler bei jeder Aktivierung inkrementieren. Ohne Flankenerkennung würde eine gedrückte Taste in jedem Zyklus auslösen.
Profi-Tipps
Sie MÜSSEN einen eindeutigen Flankenmerker zuweisen — verwenden Sie denselben Merker NICHT für mehrere Flankenauswertungen, da sie sich sonst gegenseitig beeinflussen.
Der Ausgang ist für genau einen SPS-Zyklus TRUE (typischerweise 1-50ms). Wenn Sie einen längeren Impuls benötigen, verwenden Sie einen Timer.
Im KOP erscheint dies als Kontakt mit 'P'-Markierung. Der Flankenmerker wird über/unter dem Kontakt angezeigt.
Operand auf negative Flanke abfragen
—|N|—Funktionsweise
Erkennt eine fallende Flanke (Wechsel von TRUE auf FALSE) bei einem spezifischen Operanden. Die Anweisung vergleicht den aktuellen Wert mit dem Wert aus dem vorherigen Zyklus. Wenn sich der Wert von 1 auf 0 geändert hat, ist das Verknüpfungsergebnis für genau einen Zyklus TRUE. Erfordert einen Flankenmerker.
Einsatzbereich
Wenn Sie auf das AUSschalten eines Signals reagieren müssen: Erkennen, wenn eine Taste losgelassen wird, Auslösung bei Sensordeaktivierung oder Erfassen des Moments, in dem ein Prozessschritt abgeschlossen ist.
Profi-Tipps
Gleiche Regeln wie bei der positiven Flanke — jede negative Flankenauswertung benötigt ihren eigenen eindeutigen Merker.
Nützlich für Aktionen beim Loslassen: Starten eines Timers, wenn eine Taste losgelassen wird, nicht beim Drücken.
Verwenden Sie in einer Abschaltsequenz negative Flanken, um zu erkennen, wann jeder Schritt abgeschlossen ist (Ausgang wechselt von EIN zu AUS).
Operand bei positiver Flanke setzen
—(P)—Funktionsweise
Setzt (schreibt TRUE) einen angegebenen Operanden für einen Zyklus, wenn eine positive Flanke (FALSE→TRUE) am Verknüpfungsergebnis erkannt wird. Kombiniert Flankenerkennung und Ausgangszuweisung in einer Anweisung.
Einsatzbereich
Wenn Sie bei einer steigenden Flanke einen Merker oder Ausgang für genau einen Scan setzen möchten, ohne einen separaten Flankenkontakt gefolgt von einer Spule zu benötigen.
Profi-Tipps
Dies ist eine spulenförmige Anweisung — sie steht am Ende eines Netzwerks, nicht in der Mitte.
Erfordert genau wie die Kontakt-Version einen Flankenmerker.
Der Operand ist nur für einen Scan TRUE und kehrt dann automatisch auf FALSE zurück.
Operand bei negativer Flanke setzen
—(N)—Funktionsweise
Setzt (schreibt TRUE) einen angegebenen Operanden für einen Zyklus, wenn eine negative Flanke (TRUE→FALSE) am Verknüpfungsergebnis erkannt wird. Kombiniert fallende Flankenerkennung und Ausgangszuweisung in einer Anweisung.
Einsatzbereich
Wenn Sie bei einer fallenden Flanke einen Merker oder Ausgang für genau einen Scan setzen möchten. Nützlich für das Auslösen von Aktionen nach der Deaktivierung.
Profi-Tipps
Spulenförmige Anweisung — am Ende eines Netzwerks platzieren.
Erfordert einen eigenen eindeutigen Flankenmerker.
Wird oft für 'Aufräumaktionen' verwendet, die einmal beim Stoppen eines Prozesses ausgeführt werden sollen.
P_TRIG — Verknüpfungsergebnis auf positive Flanke abfragen
Funktionsweise
Erkennt eine steigende Flanke am Verknüpfungsergebnis (VKE) statt an einem spezifischen Operanden. Wenn das kombinierte Logikergebnis von FALSE auf TRUE wechselt, ist der Ausgang für einen Zyklus TRUE. Der Flankenmerker wird innerhalb der Instanz der Anweisung gespeichert.
Einsatzbereich
Wenn Sie eine steigende Flanke an einer komplexen Logikkombination erkennen wollen, nicht nur an einer einzelnen Variablen. Zum Beispiel: Erkennen, wann (Sensor1 UND Sensor2 UND NICHT Fehler) zum ersten Mal TRUE wird.
Profi-Tipps
P_TRIG arbeitet auf dem kumulierten Verknüpfungsergebnis — es erkennt die Flanke der gesamten Logikkette davor.
Der Flankenmerker ist in der Anweisung integriert — kein separater Merker erforderlich.
Im FUP ist P_TRIG eine Box mit CLK-Eingang und Q-Ausgang.
N_TRIG — Verknüpfungsergebnis auf negative Flanke abfragen
Funktionsweise
Erkennt eine fallende Flanke am Verknüpfungsergebnis. Wenn das kombinierte Logikergebnis von TRUE auf FALSE wechselt, ist der Ausgang für einen Zyklus TRUE. Der Flankenmerker wird innerhalb der Instanz der Anweisung gespeichert.
Einsatzbereich
Wenn Sie erkennen wollen, wann eine komplexe Bedingung nicht mehr wahr ist. Zum Beispiel: Erkennen des Moments, in dem (Automatik_Modus UND Alles_Bereit) von TRUE auf FALSE wechselt.
Profi-Tipps
N_TRIG ist das Gegenstück zu P_TRIG für die fallende Flanke.
Kein separater Merker erforderlich — der Flankenmerker ist intern.
Nützlich zum Erkennen des Endes einer kombinierten Bedingung anstelle eines einzelnen Signals.
R_TRIG — Positive Signalflanke erkennen
Funktionsweise
Ein IEC 61131-3 konformer Funktionsbaustein zur Erkennung steigender Flanken. Er hat einen CLK-Eingang und einen Q-Ausgang. Wenn CLK von FALSE auf TRUE wechselt, ist Q für einen Zyklus TRUE. Der Flankenmerker wird im Instanz-Datenbaustein des FB gespeichert.
Einsatzbereich
Wenn Sie eine IEC-konforme Flankenerkennung mit eigenen Instanzdaten wünschen. R_TRIG ist ein Funktionsbaustein — jede Instanz verwaltet ihren eigenen Flankenmerker automatisch. Bevorzugt in strukturiertem, wiederverwendbarem Code.
Profi-Tipps
R_TRIG ist ein FB — er benötigt Instanzdaten (entweder einen eigenen DB oder als Multiinstanz in einem übergeordneten FB). Dies macht ihn in sich geschlossen und wiederverwendbar.
Verfügbar seit V1.0 auf S7-1200/1500. Dies ist die standardmäßige Art der Flankenerkennung nach IEC 61131-3.
In SCL: myRTRIG(CLK := mySignal); IF myRTRIG.Q THEN ... END_IF;
F_TRIG — Negative Signalflanke erkennen
Funktionsweise
Ein IEC 61131-3 konformer Funktionsbaustein zur Erkennung fallender Flanken. Er hat einen CLK-Eingang und einen Q-Ausgang. Wenn CLK von TRUE auf FALSE wechselt, ist Q für einen Zyklus TRUE. Der Flankenmerker wird im Instanz-Datenbaustein des FB gespeichert.
Einsatzbereich
Wenn Sie eine IEC-konforme Erkennung fallender Flanken mit eigenen Instanzdaten wünschen. F_TRIG ist das Gegenstück zu R_TRIG für die fallende Flanke.
Profi-Tipps
F_TRIG ist ein FB mit eigener Instanz — wie R_TRIG ist er in sich geschlossen und IEC 61131-3 konform.
In SCL: myFTRIG(CLK := mySignal); IF myFTRIG.Q THEN ... END_IF;
Bevorzugen Sie R_TRIG/F_TRIG gegenüber |P|/|N|-Kontakten, wenn Sie wiederverwendbaren Bibliothekscode schreiben, da diese keine externen Merker benötigen.
Schnellreferenz — Alle 20 Bitverknüpfungen
| # | Anweisung | KOP-Symbol | Shortcut | Beschreibung |
|---|---|---|---|---|
| 1 | Schließer | —| |— | F9 | Lässt Signal durch, wenn Variable TRUE ist |
| 2 | Öffner | —|/|— | F10 | Lässt Signal durch, wenn Variable FALSE ist |
| 3 | VKE invertieren | —|NOT|— | — | Invertiert das Verknüpfungsergebnis |
| 4 | Zuweisung | —( )— | Shift + F7 | Schreibt VKE in Ausgangsvariable |
| 5 | Negierte Zuweisung | —(/)— | — | Schreibt invertiertes VKE in Ausgangsvariable |
| 6 | Ausgang rücksetzen | —(R)— | — | Setzt Variable auf FALSE, wenn VKE TRUE ist |
| 7 | Ausgang setzen | —(S)— | — | Setzt Variable auf TRUE, wenn VKE TRUE ist |
| 8 | SET_BF — Bitfeld setzen | — | — | Setzt einen Bereich von Bits auf TRUE |
| 9 | RESET_BF — Bitfeld rücksetzen | — | — | Setzt einen Bereich von Bits auf FALSE zurück |
| 10 | SR — SR-Flipflop | — | — | Flipflop mit Setz-Priorität (S=1,R=1 → Q=1) |
| 11 | RS — RS-Flipflop | — | — | Flipflop mit Rücksetz-Priorität (S=1,R=1 → Q=0) |
| 12 | Operand auf positive Flanke abfragen | —|P|— | — | Erkennt steigende Flanke an einem Operanden |
| 13 | Operand auf negative Flanke abfragen | —|N|— | — | Erkennt fallende Flanke an einem Operanden |
| 14 | Operand bei positiver Flanke setzen | —(P)— | — | Setzt Operand für 1 Zyklus bei steigender Flanke |
| 15 | Operand bei negativer Flanke setzen | —(N)— | — | Setzt Operand für 1 Zyklus bei fallender Flanke |
| 16 | P_TRIG — Verknüpfungsergebnis auf positive Flanke abfragen | — | — | Erkennt steigende Flanke am Verknüpfungsergebnis |
| 17 | N_TRIG — Verknüpfungsergebnis auf negative Flanke abfragen | — | — | Erkennt fallende Flanke am Verknüpfungsergebnis |
| 18 | R_TRIG — Positive Signalflanke erkennen | — | — | IEC-Detektor für steigende Flanken (FB) |
| 19 | F_TRIG — Negative Signalflanke erkennen | — | — | IEC-Detektor für fallende Flanken (FB) |
Häufig gestellte Fragen (FAQ)
Was ist der Unterschied zwischen Setzen/Rücksetzen-Spulen und SR/RS-Flipflops?
Setzen (S) und Rücksetzen (R) Spulen sind einzelne Anweisungen, die in separaten Netzwerken platziert werden — Sie steuern die Priorität dadurch, welches Netzwerk zuletzt kommt. SR/RS-Flipflops sind einzelne Boxen mit beiden Eingängen — die Priorität ist fest eingebaut (SR = Setz-Priorität, RS = Rücksetz-Priorität). Flipflops sind kompakter und machen die Priorität explizit.
Welche Flankenerkennung sollte ich verwenden: |P|/|N|, (P)/(N), P_TRIG/N_TRIG oder R_TRIG/F_TRIG?
|P|/|N|-Kontakte erkennen Flanken an einer spezifischen Variable und benötigen einen externen Merker. (P)/(N)-Spulen kombinieren Flankenerkennung mit Ausgangszuweisung. P_TRIG/N_TRIG erkennen Flanken am Verknüpfungsergebnis (kombinierte Logik). R_TRIG/F_TRIG sind IEC-standardisierte FBs mit integriertem Speicher. Für wiederverwendbaren Bibliothekscode bevorzugen Sie R_TRIG/F_TRIG. Für einfache Inline-Logik sind |P|/|N|-Kontakte ausreichend.
Warum verhält sich meine Setzen/Rücksetzen-Schaltung unerwartet?
Die häufigste Ursache ist, dass sowohl die Setz- als auch die Rücksetz-Bedingung gleichzeitig TRUE sind. In diesem Fall gewinnt die letzte Anweisung im Programm. Wenn Ihr Rücksetz-Netzwerk vor Ihrem Setz-Netzwerk steht, wird der Ausgang gesetzt. Lösung: Verwenden Sie ein RS-Flipflop (Rücksetz-Priorität) für sicherheitskritische Schaltungen oder stellen Sie sicher, dass Ihre Bedingungen sich gegenseitig ausschließen.
Kann die Flankenauswertung bei Analogwerten oder nur bei BOOL funktionieren?
Anweisungen zur Flankenauswertung (|P|, |N|, R_TRIG, F_TRIG) funktionieren nur bei booleschen Signalen. Für Analogwerte müssen Sie einen Vergleich erstellen (z. B. Wert > Schwellenwert), der ein BOOL-Ergebnis liefert, und dann die Flankenauswertung auf dieses BOOL anwenden.