TIA Portal Instructies

Bit-logische bewerkingen
Contacten, Spoelen & Flankdetectie

Het hart van PLC-programmering. Bit-logische instructies verwerken elke Booleaanse bewerking — van eenvoudige contacten en spoelen tot flip-flops en flankdetectie. Beheers deze en u kunt elke automatiseringslogica bouwen.

Wat zijn bit-logische bewerkingen?

Bit-logische bewerkingen zijn de meest fundamentele instructies in PLC-programmering. Ze werken met Booleaanse signalen (TRUE/FALSE, 1/0) — ze lezen ingangstoestanden, combineren voorwaarden met AND/OR-logica en besturen uitgangen. In LAD verschijnen deze als contacten en spoelen op rungs. In FBD verschijnen ze als AND/OR/NOT-poorten.

Elk PLC-programma maakt uitgebreid gebruik van bit-logische instructies. Een motor start/stop-circuit, een alarmvoorwaarde, een klepvergrendeling — ze beginnen allemaal met contacten die sensortoestanden lezen en eindigen met spoelen die actuatoren aansturen.

Contacten — Ingangstoestanden lezen

Contacten lezen de Booleaanse status van een tag en geven deze door aan de logische keten

Maakcontact (Normally Open)

—| |—
F9

Wat het doet

Leest een Booleaanse tag (BOOL). Als de tag TRUE (1) is, sluit het contact en geeft het de logische status (RLO = TRUE) door aan het volgende element. Als de tag FALSE (0) is, is het contact open en blokkeert het de signaalstroom. Dit is de meest gebruikte instructie in LAD-programmering.

Wanneer te gebruiken

Elke keer dat u moet controleren of een voorwaarde TRUE is: is een knop ingedrukt? Is een sensor actief? Is er een vlag gezet? Plaats een maakcontact en wijs uw tag eraan toe.

Pro Tips

De naam 'Maakcontact' komt voort uit de relaislogica — het contact maakt verbinding (laat stroom door) wanneer het wordt geactiveerd. In de ruststand is het open.

Meerdere maakcontacten in serie creëren AND-logica. Meerdere maakcontacten in parallelle takken creëren OR-logica.

In FBD is het equivalent simpelweg het bedraden van een BOOL-variabele naar een ingang van een AND/OR-blok — er is geen expliciet contactsymbool nodig.

Verbreekcontact (Normally Closed)

—|/|—
F10

Wat het doet

Het omgekeerde van een maakcontact. Als de tag FALSE (0) is, is het contact gesloten en geeft het signaal door. Als de tag TRUE (1) is, opent het contact en blokkeert het het signaal. Het werkt als een NOT-bewerking op de tag-waarde.

Wanneer te gebruiken

Wanneer u moet controleren of een voorwaarde NIET waar is: noodstop niet ingedrukt, geen actieve fout, limietschakelaar niet bereikt. Zeer gebruikelijk voor veiligheidsvergrendelingen en alarmvoorwaarden.

Pro Tips

Gebruik verbreekcontacten voor noodstoppen en veiligheidscircuits — deze zijn 'fail-safe'. Als de draad breekt, opent het contact en stopt de machine.

In FBD is het equivalent een genegreerde ingang (kleine cirkel op de ingangspen van een AND/OR-blok).

Verwar de verbreekcontact-instructie niet met een fysieke NC-drukknop. Dit zijn onafhankelijke concepten.

RLO inverteren

—|NOT|—

Wat het doet

Inverteert (ontkent) het huidige Resultaat van de Logische Bewerking (RLO). Als de logische keten tot dit punt evalueert naar TRUE, maakt NOT deze FALSE, en vice versa. Het werkt op het geaccumuleerde logische resultaat, niet op een specifieke tag.

Wanneer te gebruiken

Wanneer u een complexe logische expressie moet inverteren in plaats van een enkele tag. In plaats van de hele voorwaarde te herschrijven met omgekeerde contacten, plaatst u NOT aan het einde om het resultaat om te draaien.

Pro Tips

NOT inverteert de gehele RLO op dat punt in de keten — dit is anders dan een verbreekcontact dat slechts één tag inverteert.

Gebruik in FBD het NOT-blok of negeer de uitgang van een logische poort.

Gebruik spaarzaam — overmatig gebruik van NOT maakt logica moeilijk leesbaar. Vaak is het herstructureren van de logica duidelijker.

Spoelen — Uitgangen besturen

Spoelen schrijven het resultaat van de logische keten naar een uitgangstag

Toewijzing

—( )—
Shift + F7

Wat het doet

Schrijft het huidige RLO (Resultaat van de Logische Bewerking) naar een Booleaanse tag. Als de logische keten TRUE is, wordt de tag TRUE. Indien FALSE, wordt de tag FALSE. Dit is de standaard uitgangsspoel — deze weerspiegelt direct de ingangslogica bij elke scancyclus.

Wanneer te gebruiken

Voor elke uitgang die direct de ingangsvoorwaarden moet volgen. Een controlelampje dat AAN is als een motor draait, een klep die opent als aan de voorwaarden is voldaan. De uitgang volgt de ingang — wanneer de voorwaarden FALSE worden, wordt de uitgang ook FALSE.

Pro Tips

De toewijzingsspoel is 'niet-retentief' — deze schrijft elke scan. Als de logica naar FALSE gaat, gaat de uitgang onmiddellijk naar FALSE.

Een tag mag slechts in ÉÉN netwerk worden toegewezen. Meerdere toewijzingen aan dezelfde tag zorgen ervoor dat de laatste wint, wat leidt tot onvoorspelbaar gedrag.

In FBD is de toewijzing simpelweg het verbinden van de uitgang van een logische poort met een BOOL-tag.

Genegreerde toewijzing

—(/)—

Wat het doet

Schrijft de geïnverteerde RLO naar een Booleaanse tag. Als de logische keten TRUE is, wordt de tag FALSE. Als de logische keten FALSE is, wordt de tag TRUE. Het combineert Toewijzing + NOT in één instructie.

Wanneer te gebruiken

Wanneer een uitgang actief moet zijn in de tegenovergestelde toestand. Bijvoorbeeld een 'systeem OK'-lamp die UIT gaat wanneer een fout wordt gedetecteerd. In plaats van de hele logische keten te inverteren, gebruikt u de genegreerde spoel.

Pro Tips

Gelijk aan het plaatsen van een NOT voor een gewone toewijzingsspoel, maar compacter.

Wees voorzichtig — genegreerde spoelen kunnen verwarrend zijn om te lezen. Soms is het duidelijker om de logica te herstructureren.

In FBD is dit een genegreerde uitgangsverbinding.

Reset uitgang

—(R)—

Wat het doet

Wanneer de RLO TRUE is, wordt de tag op FALSE (0) gezet. Wanneer de RLO FALSE is, blijft de tag ongewijzigd (behoudt zijn huidige waarde). Dit is een bewerking in één richting — het kan dingen alleen UIT zetten, nooit AAN.

Wanneer te gebruiken

In Set/Reset-circuits: het ene netwerk zet de uitgang (Set, zet AAN), het andere reset hem (Reset, zet UIT). Gebruik Reset voor stopvoorwaarden, het wissen van fouten en alarmbevestiging. De Reset heeft doorgaans prioriteit in veiligheidslogica.

Pro Tips

Reset werkt alleen als de RLO TRUE is. Als de RLO FALSE is, blijft de uitgang ongewijzigd — deze wordt NIET op TRUE gezet.

In een S/R-paar heeft de instructie die als LAATSTE in het programma voorkomt prioriteit (als beide voorwaarden tegelijkertijd TRUE zijn).

Reset is retentief — na een Reset blijft de uitgang FALSE totdat deze expliciet weer wordt ge-Set.

Set uitgang

—(S)—

Wat het doet

Wanneer de RLO TRUE is, wordt de tag op TRUE (1) gezet. Wanneer de RLO FALSE is, blijft de tag ongewijzigd (behoudt zijn huidige waarde). Dit is een bewerking in één richting — het kan dingen alleen AAN zetten, nooit UIT.

Wanneer te gebruiken

In Set/Reset-circuits: gebruik Set voor startvoorwaarden, overnamesignalen en first-run vlaggen. Eenmaal ge-Set, blijft de uitgang TRUE totdat deze expliciet wordt gereset — waardoor deze 'zelfvergrendelend' is zonder dat er een overnamecontact nodig is.

Pro Tips

Set werkt alleen als de RLO TRUE is. Als de RLO FALSE is, blijft de uitgang ongewijzigd — deze wordt NIET gereset.

Klassieke motorbesturing: Netwerk 1 = Startknop → Set Motor. Netwerk 2 = Stopknop OF Fout → Reset Motor.

Wees voorzichtig met retentieve tags in veiligheidscircuits — na een stroomcyclus kunnen Set-uitgangen hun laatste status behouden, afhankelijk van de DB-instellingen.

Bitveld-bewerkingen

Zet of reset een reeks bits in één bewerking

SET_BF — Bitveld zetten

Wat het doet

Zet een aaneengesloten groep bits op TRUE vanaf een opgegeven adres. U definieert de startbit en het aantal bits dat moet worden gezet. Wanneer de RLO TRUE is, worden alle opgegeven bits op 1 gezet.

Wanneer te gebruiken

Wanneer u meerdere gerelateerde uitgangen tegelijkertijd moet activeren — bijvoorbeeld het instellen van alle bits van een statuswoord, het initialiseren van een groep vlaggen of het in één keer activeren van een reeks uitgangen.

Pro Tips

Handig voor batchbewerkingen in plaats van individuele Set-instructies voor elke bit te schrijven.

De parameter voor het aantal bits bepaalt hoeveel opeenvolgende bits worden beïnvloed.

Net als Set werkt dit alleen als de RLO TRUE is — bits blijven ongewijzigd als de RLO FALSE is.

RESET_BF — Bitveld resetten

Wat het doet

Reset een aaneengesloten groep bits naar FALSE vanaf een opgegeven adres. U definieert de startbit en het aantal bits dat moet worden gereset. Wanneer de RLO TRUE is, worden alle opgegeven bits gewist naar 0.

Wanneer te gebruiken

Wanneer u meerdere vlaggen of uitgangen tegelijk moet wissen — bijvoorbeeld het wissen van alle alarmbits in een statuswoord, het resetten van een groep uitgangen tijdens het uitschakelen of het initialiseren van een gegevensgebied.

Pro Tips

De tegenhanger van SET_BF — gebruik ze samen voor Set/Reset-bewerkingen op groepsniveau.

Vooral handig voor het in één keer wissen van alarmwoorden of statusregisters.

Net als Reset werkt dit alleen als de RLO TRUE is — bits blijven ongewijzigd als de RLO FALSE is.

Flip-Flops — Geheugencircuits

Bistabiele elementen die hun status onthouden totdat ze expliciet worden gewijzigd

SR — Set/Reset Flip-Flop

Wat het doet

Een bistabiele flip-flop met Set-prioriteit. Het heeft twee ingangen: S (Set) en R (Reset), en één uitgang Q. Wanneer S=TRUE, wordt Q TRUE. Wanneer R=TRUE, wordt Q FALSE. Wanneer zowel S als R tegelijkertijd TRUE zijn, is Q TRUE (Set domineert).

Wanneer te gebruiken

Voor vergrendelingscircuits waarbij de Set-voorwaarde prioriteit moet hebben. In een SR-flip-flop blijft de uitgang AAN als zowel start als stop tegelijkertijd worden ingedrukt. Gebruik dit wanneer 'start-prioriteit' acceptabel is.

Pro Tips

SR = Set-prioriteit. Als S=1 en R=1 → Q=1. Gebruik wanneer starten belangrijker is dan stoppen.

Geef in veiligheidskritische toepassingen de voorkeur aan RS (Reset-prioriteit) — dit is veiliger als beide voorwaarden tegelijkertijd optreden.

De flip-flop is een enkel blok in zowel LAD als FBD met S- en R-ingangen en Q-uitgang.

RS — Reset/Set Flip-Flop

Wat het doet

Een bistabiele flip-flop met Reset-prioriteit. Het heeft twee ingangen: R (Reset) en S (Set), en één uitgang Q. Wanneer S=TRUE, wordt Q TRUE. Wanneer R=TRUE, wordt Q FALSE. Wanneer zowel R als S tegelijkertijd TRUE zijn, is Q FALSE (Reset domineert).

Wanneer te gebruiken

Voor vergrendelingscircuits waarbij veiligheid voorop staat. De Reset (stop) voorwaarde heeft prioriteit — als zowel start als stop actief zijn, is de uitgang UIT. Dit is de standaardkeuze voor motorbesturing en veiligheidsvergrendelingen.

Pro Tips

RS = Reset-prioriteit. Als S=1 en R=1 → Q=0. De veiligere keuze voor de meeste industriële toepassingen.

Klassiek motorbesturingspatroon: S = Start_knop AND NOT Fout, R = Stop_knop OR Noodstop OR Fout.

De uitgang Q is retentief binnen de scancyclus — deze behoudt zijn waarde totdat de flip-flop opnieuw wordt geëvalueerd.

Flankdetectie — Signaalveranderingen detecteren

Detecteer wanneer een signaal overgaat van FALSE→TRUE of TRUE→FALSE

Operand scannen op positieve flank

—|P|—

Wat het doet

Detecteert een stijgende flank (overgang FALSE→TRUE) op een specifieke operand. De instructie vergelijkt de huidige waarde met de waarde van de vorige scan. Als de waarde veranderde van 0 naar 1, is de RLO gedurende precies één scancyclus TRUE. Vereist een flankgeheugenbit (M-bit) om de vorige status op te slaan.

Wanneer te gebruiken

Wanneer u een eenmalige puls nodig heeft uit een aanhoudend signaal: knopdrukken tellen, een enkele actie triggeren bij een niveauverandering, een teller verhogen bij elke activering. Zonder flankdetectie zou een ingedrukte knop elke scancyclus triggeren.

Pro Tips

U MOET een uniek flankgeheugenbit (M-bit) toewijzen — gebruik NIET dezelfde M-bit voor meerdere flankdetecties, anders zullen ze elkaar storen.

De uitgang is TRUE gedurende precies één PLC-scancyclus (meestal 1-50 ms). Als u een langere puls nodig heeft, gebruik dan een timer.

In LAD verschijnt dit als een contact met de markering 'P'. De M-bit tag wordt boven/onder het contact weergegeven.

Operand scannen op negatieve flank

—|N|—

Wat het doet

Detecteert een dalende flank (overgang TRUE→FALSE) op een specifieke operand. De instructie vergelijkt de huidige waarde met de waarde van de vorige scan. Als de waarde veranderde van 1 naar 0, is de RLO gedurende precies één scancyclus TRUE. Vereist een flankgeheugenbit.

Wanneer te gebruiken

Wanneer u moet reageren op een signaal dat UIT gaat: detecteren wanneer een knop wordt losgelaten, triggeren bij deactivering van een sensor, of het moment vastleggen waarop een processtap is voltooid.

Pro Tips

Dezelfde regels als voor de positieve flank — elke negatieve flankdetectie heeft zijn eigen unieke M-bit nodig.

Handig voor acties bij het 'loslaten van de knop': start een timer wanneer een knop wordt losgelaten, niet wanneer deze wordt ingedrukt.

Gebruik in een uitschakelsequentie negatieve flanken om te detecteren wanneer elke stap is voltooid (uitgang gaat van AAN naar UIT).

Operand zetten bij positieve flank

—(P)—

Wat het doet

Zet (schrijft TRUE naar) een opgegeven operand gedurende één scancyclus wanneer een positieve flank (FALSE→TRUE) wordt gedetecteerd op de RLO. Combineert flankdetectie en uitgangstoewijzing in één instructie.

Wanneer te gebruiken

Wanneer u een vlag of uitgang voor precies één scan wilt zetten op een stijgende flank, zonder dat u een afzonderlijk flankdetectiecontact gevolgd door een spoel nodig heeft.

Pro Tips

Dit is een spoeltype-instructie — deze komt aan het einde van een rung, niet in het midden.

Vereist een flankgeheugenbit, net als de contactversie.

De operand is slechts gedurende één scan TRUE en keert dan automatisch terug naar FALSE.

Operand zetten bij negatieve flank

—(N)—

Wat het doet

Zet (schrijft TRUE naar) een opgegeven operand gedurende één scancyclus wanneer een negatieve flank (TRUE→FALSE) wordt gedetecteerd op de RLO. Combineert dalende flankdetectie en uitgangstoewijzing in één instructie.

Wanneer te gebruiken

Wanneer u een vlag of uitgang voor precies één scan wilt zetten op een dalende flank. Handig voor het triggeren van acties na deactivering.

Pro Tips

Instructie van het spoeltype — plaats aan het einde van een rung.

Vereist zijn eigen unieke flankgeheugenbit.

Vaak gebruikt voor 'opschoningsacties' die eenmalig moeten gebeuren wanneer een proces stopt.

P_TRIG — RLO scannen op positieve flank

Wat het doet

Detecteert een stijgende flank op de RLO (Resultaat van de Logische Bewerking) in plaats van op een specifieke operand. Wanneer het gecombineerde logische resultaat overgaat van FALSE naar TRUE, is de uitgang TRUE gedurende één scancyclus. Het flankgeheugen wordt opgeslagen binnen de instructie-instantie.

Wanneer te gebruiken

Wanneer u een stijgende flank wilt detecteren op een complexe logische combinatie, niet alleen op een enkele tag. Bijvoorbeeld: detecteren wanneer (Sensor1 AND Sensor2 AND NOT Fout) voor het eerst TRUE wordt.

Pro Tips

P_TRIG werkt op de geaccumuleerde RLO — het detecteert de flank van de gehele logische keten die eraan voorafgaat.

Het flankgeheugen is ingebouwd in de instructie — er is geen apart M-bit nodig.

In FBD is P_TRIG een blok met CLK-ingang en Q-uitgang.

N_TRIG — RLO scannen op negatieve flank

Wat het doet

Detecteert een dalende flank op de RLO. Wanneer het gecombineerde logische resultaat overgaat van TRUE naar FALSE, is de uitgang TRUE gedurende één scancyclus. Het flankgeheugen wordt opgeslagen binnen de instructie-instantie.

Wanneer te gebruiken

Wanneer u wilt detecteren wanneer een complexe voorwaarde niet meer waar is. Bijvoorbeeld: detecteer het moment waarop (Auto_Modus AND Vrijgave) van TRUE naar FALSE gaat.

Pro Tips

N_TRIG is de tegenhanger van de P_TRIG voor dalende flanken.

Geen apart M-bit nodig — het flankgeheugen is intern.

Handig voor het detecteren van het einde van een gecombineerde voorwaarde in plaats van een enkel signaal.

R_TRIG — Positieve signaalflank detecteren

Wat het doet

Een IEC 61131-3 conforme stijgende flank detector functieblok. Het heeft een CLK-ingang en een Q-uitgang. Wanneer CLK overgaat van FALSE naar TRUE, is Q TRUE gedurende één scancyclus. Het flankgeheugen wordt opgeslagen in de instantiegegevens van de FB.

Wanneer te gebruiken

Wanneer u IEC-standaard flankdetectie wilt met eigen instantiegegevens. R_TRIG is een functieblok — elke instantie onderhoudt automatisch zijn eigen flankgeheugen. Bij voorkeur te gebruiken in gestructureerde, herbruikbare code.

Pro Tips

R_TRIG is een FB — deze heeft instantiegegevens nodig (een eigen DB of als multi-instantie in een bovenliggende FB). Dit maakt hem op zichzelf staand en herbruikbaar.

Beschikbaar sinds V1.0 op S7-1200/1500. Dit is de IEC 61131-3 standaardmanier van flankdetectie.

In SCL: mijnRTRIG(CLK := mijnSignaal); IF mijnRTRIG.Q THEN ... END_IF;

F_TRIG — Negatieve signaalflank detecteren

Wat het doet

Een IEC 61131-3 conforme dalende flank detector functieblok. Het heeft een CLK-ingang en een Q-uitgang. Wanneer CLK overgaat van TRUE naar FALSE, is Q TRUE gedurende één scancyclus. Het flankgeheugen wordt opgeslagen in de instantiegegevens van de FB.

Wanneer te gebruiken

Wanneer u IEC-standaard dalende flankdetectie wilt met eigen instantiegegevens. F_TRIG is de tegenhanger van de R_TRIG voor dalende flanken.

Pro Tips

F_TRIG is een FB met een eigen instantie — net als R_TRIG is deze op zichzelf staand en IEC 61131-3 conform.

In SCL: mijnFTRIG(CLK := mijnSignaal); IF mijnFTRIG.Q THEN ... END_IF;

Geef de voorkeur aan R_TRIG/F_TRIG boven |P|/|N| contacten bij het schrijven van herbruikbare bibliotheekcode, omdat deze geen externe M-bits vereisen.

Snelreferentie — Alle 20 bit-logische instructies

#InstructieLAD SymboolSneltoetsBeschrijving
1Maakcontact (Normally Open)—| |—F9Laat stroom door als de tag TRUE is
2Verbreekcontact (Normally Closed)—|/|—F10Laat stroom door als de tag FALSE is
3RLO inverteren—|NOT|—Inverteert het resultaat van de logische bewerking
4Toewijzing—( )—Shift + F7Schrijft RLO naar uitgangstag
5Genegreerde toewijzing—(/)—Schrijft geïnverteerde RLO naar uitgangstag
6Reset uitgang—(R)—Zet tag op FALSE als RLO TRUE is
7Set uitgang—(S)—Zet tag op TRUE als RLO TRUE is
8SET_BF — Bitveld zettenZet een reeks bits op TRUE
9RESET_BF — Bitveld resettenReset een reeks bits naar FALSE
10SR — Set/Reset Flip-FlopFlip-flop met Set-prioriteit (S=1,R=1 → Q=1)
11RS — Reset/Set Flip-FlopFlip-flop met Reset-prioriteit (S=1,R=1 → Q=0)
12Operand scannen op positieve flank—|P|—Detecteert stijgende flank op een operand
13Operand scannen op negatieve flank—|N|—Detecteert dalende flank op een operand
14Operand zetten bij positieve flank—(P)—Zet operand voor 1 scan bij stijgende flank
15Operand zetten bij negatieve flank—(N)—Zet operand voor 1 scan bij dalende flank
16P_TRIG — RLO scannen op positieve flankDetecteert stijgende flank op de RLO
17N_TRIG — RLO scannen op negatieve flankDetecteert dalende flank op de RLO
18R_TRIG — Positieve signaalflank detecterenIEC stijgende flank detector (FB)
19F_TRIG — Negatieve signaalflank detecterenIEC dalende flank detector (FB)

Veelgestelde vragen

Wat is het verschil tussen Set/Reset-spoelen en SR/RS flip-flops?

Set (S) en Reset (R) spoelen zijn individuele instructies die in afzonderlijke netwerken worden geplaatst — u bepaalt de prioriteit door welk netwerk als laatste komt. SR/RS flip-flops zijn enkele blokken met beide ingangen — de prioriteit is ingebouwd (SR = Set-prioriteit, RS = Reset-prioriteit). Flip-flops zijn compacter en maken de prioriteit expliciet.

Welke flankdetectie moet ik gebruiken: |P|/|N|, (P)/(N), P_TRIG/N_TRIG, of R_TRIG/F_TRIG?

|P|/|N| contacten detecteren flanken op een specifieke tag en hebben een externe M-bit nodig. (P)/(N) spoelen combineren flankdetectie met uitgangstoewijzing. P_TRIG/N_TRIG detecteren flanken op de RLO (gecombineerde logica). R_TRIG/F_TRIG zijn IEC-standaard FB's met ingebouwd geheugen. Geef voor herbruikbare bibliotheekcode de voorkeur aan R_TRIG/F_TRIG. Voor eenvoudige inline logica zijn |P|/|N| contacten prima.

Waarom gedraagt mijn Set/Reset-circuit zich onverwacht?

De meest voorkomende oorzaak is dat zowel de Set- als de Reset-voorwaarden tegelijkertijd TRUE zijn. In dat geval wint de laatste instructie in het programma. Als uw Reset-netwerk zich voor uw Set-netwerk bevindt, wordt de uitgang ge-Set. Oplossing: gebruik een RS-flip-flop (Reset-prioriteit) voor veiligheidskritische circuits, of zorg ervoor dat uw voorwaarden elkaar uitsluiten.

Kan flankdetectie werken op analoge waarden of alleen op BOOL?

Flankdetectie-instructies (|P|, |N|, R_TRIG, F_TRIG) werken alleen op Booleaanse signalen. Voor analoge waarden moet u een vergelijking maken (bijv. waarde > drempel) die een BOOL-resultaat oplevert, en vervolgens flankdetectie op die BOOL toepassen.

Genereer bit-logica met AI

Beschrijf uw besturingslogica in gewone tekst en T-IA Connect genereert de PLC-code — inclusief contacten, spoelen, flip-flops en flankdetectie.