TIA Portal Instruktioner

Bitlogikoperationer
Kontakter, spolar och flankdetektering

Hjärtat i PLC-programmering. Bitlogikinstruktioner hanterar varje boolesk operation — från enkla kontakter och spolar till vippor och flankdetektering. Bemästra dessa och du kan bygga vilken automationslogik som helst.

Vad är bitlogikoperationer?

Bitlogikoperationer är de mest grundläggande instruktionerna inom PLC-programmering. De arbetar med booleska signaler (TRUE/FALSE, 1/0) — läser ingångsstatus, kombinerar villkor med AND/OR-logik och styr utgångar. I LAD visas dessa som kontakter och spolar på rader. I FBD visas de som AND/OR/NOT-grindar.

Varje PLC-program använder bitlogikinstruktioner i stor utsträckning. En start/stopp-krets för en motor, ett larmvillkor, en ventilförregling — de börjar alla med kontakter som läser givarstatus och slutar med spolar som driver ställdon.

Kontakter — Läsa ingångsstatus

Kontakter läser den booleska statusen för en tagg och skickar den vidare i logikkedjan

Slutande kontakt (Normally Open)

—| |—
F9

Vad den gör

Läser en boolesk tagg (BOOL). Om taggen är TRUE (1), sluter kontakten och skickar vidare strömmen (RLO = TRUE) till nästa element. Om taggen är FALSE (0), är kontakten öppen och blockerar strömflödet. Detta är den mest använda instruktionen i LAD-programmering.

När den ska användas

Varje gång du behöver kontrollera om ett villkor är TRUE: är en knapp intryckt? Är en givare aktiv? Är en flagga satt? Placera en slutande kontakt och tilldela din tagg till den.

Proffstips

Namnet 'Normally Open' kommer från relälogik — kontakten är öppen (leder inte ström) i sitt normal-/viloläge. Den sluter när den aktiveras.

Flera NO-kontakter i serie skapar AND-logik. Flera NO-kontakter i parallella grenar skapar OR-logik.

I FBD är motsvarigheten att helt enkelt koppla en BOOL-variabel till en AND/OR-ingång — ingen explicit kontaktsymbol behövs.

Brytande kontakt (Normally Closed)

—|/|—
F10

Vad den gör

Motsatsen till en slutande kontakt. Om taggen är FALSE (0), är kontakten sluten och skickar vidare ström. Om taggen är TRUE (1), öppnar kontakten och blockerar strömmen. Den fungerar som en NOT-operation på taggvärdet.

När den ska användas

När du behöver kontrollera att ett villkor INTE är sant: nödstopp ej intryckt, inget fel aktivt, gränslägesbrytare ej nådd. Mycket vanlig för säkerhetsförreglingar och larmvillkor.

Proffstips

Använd NC-kontakter för nödstopp och säkerhetskretsar — de är felsäkra (fail-safe). Om kabeln går av öppnas NC-kontakten och stoppar maskinen.

I FBD är motsvarigheten en negerad ingång (liten cirkel på ingångsstiftet till en AND/OR-grind).

Förväxla inte NC-kontaktinstruktionen med en fysiskt brytande tryckknapp. De är oberoende koncept.

Invertera RLO (NOT)

—|NOT|—

Vad den gör

Inverterar (negerar) det aktuella resultatet av den logiska operationen (RLO). Om logikkedjan fram till denna punkt utvärderas till TRUE, gör NOT den till FALSE, och vice versa. Den verkar på det ackumulerade logikresultatet, inte på en specifik tagg.

När den ska användas

När du behöver invertera ett komplext logiskt uttryck istället för en enskild tagg. Istället för att skriva om hela villkoret med inverterade kontakter, placera NOT i slutet för att vända resultatet.

Proffstips

NOT inverterar hela RLO:n vid den punkten i kedjan — det skiljer sig från en NC-kontakt som bara inverterar en tagg.

I FBD, använd NOT-blocket eller negera utgången på en logikgrind.

Använd sparsamt — överdriven användning av NOT gör logiken svårläst. Ofta är det tydligare att strukturera om logiken.

Spolar — Styr utgångar

Spolar skriver resultatet av logikkedjan till en utgångstagg

Tilldelning

—( )—
Shift + F7

Vad den gör

Skriver det aktuella RLO (Result of Logic Operation) till en boolesk tagg. Om logikkedjan är TRUE blir taggen TRUE. Om FALSE blir taggen FALSE. Detta är standardutgången — den återspeglar direkt ingångslogiken i varje skancykel.

När den ska användas

För alla utgångar som direkt ska följa sina ingångsvillkor. En indikeringslampa som lyser när en motor går, en ventil som öppnar när villkoren är uppfyllda. Utgången följer ingången — när villkoren blir FALSE blir utgången också FALSE.

Proffstips

Tilldelningsspolen är 'icke-retentiv' — den skriver varje skanning. Om logiken blir FALSE blir utgången omedelbart FALSE.

En tagg bör endast tilldelas i ETT nätverk. Flera tilldelningar till samma tagg gör att den sista vinner, vilket leder till oförutsägbart beteende.

I FBD är tilldelningen helt enkelt att ansluta utgången från en logikgrind till en BOOL-tagg.

Negerad tilldelning

—(/)—

Vad den gör

Skriver den inverterade RLO:n till en boolesk tagg. Om logikkedjan är TRUE blir taggen FALSE. Om logikkedjan är FALSE blir taggen TRUE. Den kombinerar Tilldelning + NOT i en instruktion.

När den ska användas

När en utgång ska vara aktiv i det motsatta tillståndet. Till exempel en 'system OK'-lampa som släcks när ett fel upptäcks. Istället för att invertera hela logikkedjan, använd den negerade spolen.

Proffstips

Motsvarar att placera en NOT före en vanlig tilldelningsspole, men mer kompakt.

Använd med försiktighet — negerade spolar kan vara förvirrande att läsa. Ibland är det tydligare att strukturera om logiken.

I FBD är detta en negerad utgångsanslutning.

Återställ utgång (Reset)

—(R)—

Vad den gör

När RLO är TRUE sätts taggen till FALSE (0). När RLO är FALSE förblir taggen oförändrad (behåller sitt nuvarande värde). Detta är en enkelriktad operation — den kan bara stänga AV saker, aldrig PÅ.

När den ska användas

I Set/Reset-kretsar: ett nätverk sätter utgången (slår PÅ), ett annat återställer den (stänger AV). Använd Reset för stoppvillkor, felåterställning och larmkvittering. Reset har vanligtvis prioritet i säkerhetslogik.

Proffstips

Reset agerar bara när dess RLO är TRUE. När RLO är FALSE förblir utgången oförändrad — den sätter den INTE till TRUE.

I ett S/R-par har den instruktion som visas SIST i programmet prioritet (om båda villkoren är TRUE samtidigt).

Reset är retentiv — efter en Reset förblir utgången FALSE tills den uttryckligen sätts (Set) igen.

Sätt utgång (Set)

—(S)—

Vad den gör

När RLO är TRUE sätts taggen till TRUE (1). När RLO är FALSE förblir taggen oförändrad (behåller sitt nuvarande värde). Detta är en enkelriktad operation — den kan bara slå PÅ saker, aldrig AV.

När den ska användas

I Set/Reset-kretsar: använd Set för startvillkor, hållsignaler och flaggor för första körning. När den väl är satt förblir utgången TRUE tills den uttryckligen återställs (Reset) — vilket gör den 'självhållande' utan att behöva en hållkontakt.

Proffstips

Set agerar bara när dess RLO är TRUE. När RLO är FALSE förblir utgången oförändrad — den återställer den INTE.

Klassisk motorstyrning: Nätverk 1 = Startknapp → Set Motor. Nätverk 2 = Stoppknapp ELLER fel → Reset Motor.

Var försiktig med retentiva taggar i säkerhetskretsar — efter ett strömavbrott kan Set-utgångar behålla sitt sista tillstånd beroende på DB-inställningarna.

Bitfältsoperationer

Sätt eller återställ ett intervall av bitar i en enda operation

SET_BF — Sätt bitfält

Vad den gör

Sätter en sammanhängande grupp av bitar till TRUE med början från en angiven adress. Du definierar startbiten och antalet bitar som ska sättas. När RLO är TRUE sätts alla angivna bitar till 1.

När den ska användas

När du behöver aktivera flera relaterade utgångar samtidigt — till exempel sätta alla bitar i ett statusord, initiera en grupp flaggor eller aktivera en grupp utgångar på en gång.

Proffstips

Användbart för batchoperationer istället för att skriva individuella Set-instruktioner för varje bit.

Parametern för antal bitar avgör hur många efterföljande bitar som påverkas.

Precis som Set agerar denna bara när RLO är TRUE — bitarna förblir oförändrade när RLO är FALSE.

RESET_BF — Återställ bitfält

Vad den gör

Återställer en sammanhängande grupp av bitar till FALSE med början från en angiven adress. Du definierar startbiten och antalet bitar som ska återställas. När RLO är TRUE nollställs alla angivna bitar.

När den ska användas

När du behöver rensa flera flaggor eller utgångar samtidigt — till exempel rensa alla larmbitar i ett statusord, återställa en grupp utgångar vid avstängning eller initiera ett dataområde.

Proffstips

Motsvarigheten till SET_BF — använd dem tillsammans för Set/Reset-operationer på gruppnivå.

Särskilt användbart för att rensa larmord eller statusregister i en enda operation.

Precis som Reset agerar denna bara när RLO är TRUE — bitarna förblir oförändrade när RLO är FALSE.

Vippor — Hållkretsar

Bistabila element som minns sitt tillstånd tills de uttryckligen ändras

SR — Set/Reset-vippa

Vad den gör

En bistabil vippa med Set-prioritet. Den har två ingångar: S (Set) och R (Reset), och en utgång Q. När S=TRUE blir Q TRUE. När R=TRUE blir Q FALSE. När både S och R är TRUE samtidigt är Q TRUE (Set dominerar).

När den ska användas

För hållkretsar där Set-villkoret ska ha prioritet. I en SR-vippa förblir utgången PÅ om både start och stopp trycks in samtidigt. Använd denna när 'startprioritet' är acceptabel.

Proffstips

SR = Set-prioritet. Om S=1 och R=1 → Q=1. Använd när start är viktigare än stopp.

I säkerhetskritiska applikationer, föredra RS (Reset-prioritet) — det är säkrare om båda villkoren triggas samtidigt.

Vippan är ett enda block i både LAD och FBD med S-, R-ingångar och Q-utgång.

RS — Reset/Set-vippa

Vad den gör

En bistabil vippa med Reset-prioritet. Den har två ingångar: R (Reset) och S (Set), och en utgång Q. När S=TRUE blir Q TRUE. När R=TRUE blir Q FALSE. När både R och S är TRUE samtidigt är Q FALSE (Reset dominerar).

När den ska användas

För hållkretsar där säkerhet är avgörande. Reset-villkoret (stopp) har prioritet — om både start och stopp är aktiva är utgången AV. Detta är standardvalet för motorstyrning och säkerhetsförreglingar.

Proffstips

RS = Reset-prioritet. Om S=1 och R=1 → Q=0. Det säkrare valet för de flesta industriella applikationer.

Klassiskt mönster för motorstyrning: S = Startknapp AND INTE Fel, R = Stoppknapp ELLER Nödstopp ELLER Fel.

Utgången Q är retentiv inom skancykeln — den behåller sitt värde tills vippan utvärderas igen.

Flankdetektering — Detektera signalförändringar

Detektera när en signal går från FALSE→TRUE eller TRUE→FALSE

Skanna operand för positiv flank

—|P|—

Vad den gör

Detekterar en stigande flank (FALSE→TRUE-övergång) på en specifik operand. Instruktionen jämför det aktuella värdet med värdet från föregående skanning. Om värdet ändrades från 0 till 1 är RLO TRUE under exakt en skancykel. Kräver en flankminnesbit (M-bit) för att lagra det föregående tillståndet.

När den ska användas

När du behöver en engångspuls från en ihållande signal: räkna knapptryckningar, trigga en enstaka åtgärd vid en nivåförändring, öka en räknare vid varje aktivering. Utan flankdetektering skulle en intryckt knapp triggas varje skancykel.

Proffstips

Du MÅSTE tilldela en unik flankminnesbit (M-bit) — återanvänd INTE samma M-bit för flera flankdetekteringar, då de kommer att störa varandra.

Utgången är TRUE under exakt en PLC-skancykel (vanligtvis 1-50 ms). Om du behöver en längre puls, använd en timer.

I LAD visas detta som en kontakt med 'P'-markering. Tagg för M-bit visas ovanför/under kontakten.

Skanna operand for negativ flank

—|N|—

Vad den gör

Detekterar en fallande flank (TRUE→FALSE-övergång) på en specifik operand. Instruktionen jämför det aktuella värdet med värdet från föregående skanning. Om värdet ändrades från 1 till 0 är RLO TRUE under exakt en skancykel. Kräver en flankminnesbit.

När den ska användas

När du behöver reagera på att en signal stängs AV: detektera när en knapp släpps, trigga vid avaktivering av givare eller fånga ögonblicket när ett processteg slutförs.

Proffstips

Samma regler som för positiv flank — varje negativ flankdetektering behöver sin egen unika M-bit.

Användbart för åtgärder vid 'knappsläpp': starta en timer när en knapp släpps, inte när den trycks in.

I en avstängningssekvens, använd negativa flanker för att detektera när varje steg slutförs (utgången går från ON till OFF).

Sätt operand vid positiv flank

—(P)—

Vad den gör

Sätter (skriver TRUE till) en angiven operand under en skancykel när en positiv flank (FALSE→TRUE) detekteras på RLO:n. Kombinerar flankdetektering och utgångstilldelning i en instruktion.

När den ska användas

När du vill sätta en flagga eller utgång under exakt en skanning vid en stigande flank, utan att behöva en separat flankdetekteringskontakt följd av en spole.

Proffstips

Detta är en instruktion av spoltyp — den placeras i slutet av en rad, inte i mitten.

Kräver en flankminnesbit precis som kontaktversionen.

Operanden är TRUE under endast en skanning och återgår sedan automatiskt till FALSE.

Sätt operand vid negativ flank

—(N)—

Vad den gör

Sätter (skriver TRUE till) en angiven operand under en skancykel när en negativ flank (TRUE→FALSE) detekteras på RLO:n. Kombinerar fallande flankdetektering och utgång tilldelning i en instruktion.

När den ska användas

När du vill sätta en flagga eller utgång under exakt en skanning vid en fallande flank. Användbart för att trigga åtgärder efter avaktivering.

Proffstips

Instruktion av spoltyp — placera i slutet av en rad.

Kräver sin egen unika flankminnesbit.

Används ofta för 'rensningsåtgärder' som ska hända en gång när en process stoppar.

P_TRIG — Skanna RLO för positiv flank

Vad den gör

Detekterar en stigande flank på RLO:n (Result of Logic Operation) snarare än på en specifik operand. När det sammanslagna logikresultatet går från FALSE till TRUE är utgången TRUE under en skancykel. Flankminnet lagras i instruktionsinstansen.

När den ska användas

När du vill detektera en stigande flank på en komplex logisk kombination, inte bara en enskild tagg. Till exempel: detektera när (Givare1 AND Givare2 AND INTE Fel) först blir TRUE.

Proffstips

P_TRIG verkar på den ackumulerade RLO:n — den detekterar flanken av hela logikkedjan före den.

Flankminnet är inbyggt i instruktionen — ingen separat M-bit behövs.

I FBD är P_TRIG ett block med CLK-ingång och Q-utgång.

N_TRIG — Skanna RLO för negativ flank

Vad den gör

Detekterar en fallande flank på RLO:n. När det sammanslagna logikresultatet går från TRUE till FALSE är utgången TRUE under en skancykel. Flankminnet lagras i instruktionsinstansen.

När den ska användas

När du vill detektera när ett komplext villkor slutar vara sant. Till exempel: detektera ögonblicket när (Auto_Mode AND Allt_Klart) går från TRUE till FALSE.

Proffstips

N_TRIG är motsvarigheten till P_TRIG för fallande flank.

Ingen separat M-bit behövs — flankminnet är internt.

Användbart för att detektera slutet av ett sammansatt villkor snarare än en enskild signal.

R_TRIG — Detektera positiv signalflank

Vad den gör

Ett IEC 61131-3-kompatibelt funktionsblock för detektering av stigande flank. Det har en CLK-ingång och en Q-utgång. När CLK går från FALSE till TRUE är Q TRUE under en skancykel. Flankminnet lagras i FB:ns instansdata.

När den ska användas

När du vill ha IEC-standard flankdetektering med egna instansdata. R_TRIG är ett funktionsblock — varje instans sköter sitt eget flankminne automatiskt. Föredras i strukturerad, återanvändbar kod.

Proffstips

R_TRIG är en FB — den behöver instansdata (antingen en egen DB eller som en multi-instans i en föräldra-FB). Detta gör den självständig och återanvändbar.

Tillgänglig sedan V1.0 på S7-1200/1500. Detta är det IEC 61131-3-standardiserade sättet för flankdetektering.

I SCL: myRTRIG(CLK := mySignal); IF myRTRIG.Q THEN ... END_IF;

F_TRIG — Detektera negativ signalflank

Vad den gör

Ett IEC 61131-3-kompatibelt funktionsblock för detektering av fallande flank. Det har en CLK-ingång och en Q-utgång. När CLK går från TRUE till FALSE är Q TRUE under en skancykel. Flankminnet lagras i FB:ns instansdata.

När den ska användas

När du vill ha IEC-standard flankdetektering för fallande flank med egna instansdata. F_TRIG är motsvarigheten till R_TRIG för fallande flank.

Proffstips

F_TRIG är en FB med sin egen instans — precis som R_TRIG är den självständig och IEC 61131-3-kompatibel.

I SCL: myFTRIG(CLK := mySignal); IF myFTRIG.Q THEN ... END_IF;

Föredra R_TRIG/F_TRIG framför |P|/|N|-kontakter när du skriver återanvändbar bibliotekskod, eftersom de inte kräver externa M-bitar.

Snabbguide — Alla 20 bitlogikinstruktioner

#InstruktionLAD-symbolGenvägBeskrivning
1Slutande kontakt (Normally Open)—| |—F9Leder ström när taggen är TRUE
2Brytande kontakt (Normally Closed)—|/|—F10Leder ström när taggen är FALSE
3Invertera RLO (NOT)—|NOT|—Inverterar resultatet av den logiska operationen
4Tilldelning—( )—Shift + F7Skriver RLO till utgångstagg
5Negerad tilldelning—(/)—Skriver inverterad RLO till utgångstagg
6Återställ utgång (Reset)—(R)—Sätter tagg till FALSE när RLO är TRUE
7Sätt utgång (Set)—(S)—Sätter tagg till TRUE när RLO är TRUE
8SET_BF — Sätt bitfältSätter ett intervall av bitar till TRUE
9RESET_BF — Återställ bitfältÅterställer ett intervall av bitar till FALSE
10SR — Set/Reset-vippaVippa med Set-prioritet (S=1,R=1 → Q=1)
11RS — Reset/Set-vippaVippa med Reset-prioritet (S=1,R=1 → Q=0)
12Skanna operand för positiv flank—|P|—Detekterar stigande flank på en operand
13Skanna operand for negativ flank—|N|—Detekterar fallande flank på en operand
14Sätt operand vid positiv flank—(P)—Sätter operand i 1 skanning vid stigande flank
15Sätt operand vid negativ flank—(N)—Sätter operand i 1 skanning vid fallande flank
16P_TRIG — Skanna RLO för positiv flankDetekterar stigande flank på RLO:n
17N_TRIG — Skanna RLO för negativ flankDetekterar fallande flank på RLO:n
18R_TRIG — Detektera positiv signalflankIEC stigande flank-detektor (FB)
19F_TRIG — Detektera negativ signalflankIEC fallande flank-detektor (FB)

Vanliga frågor

Vad är skillnaden mellan Set/Reset-spolar och SR/RS-vippor?

Set (S) och Reset (R)-spolar är individuella instruktioner placerade i separata nätverk — du styr prioriteten genom vilket nätverk som kommer sist. SR/RS-vippor är enstaka block med båda ingångarna — prioriteten är inbyggd (SR = Set-prioritet, RS = Reset-prioritet). Vippor är mer kompakta och gör prioriteten tydlig.

Vilken flankdetektering ska jag använda: |P|/|N|, (P)/(N), P_TRIG/N_TRIG eller R_TRIG/F_TRIG?

|P|/|N|-kontakter detekterar flanker på en specifik tagg och behöver en extern M-bit. (P)/(N)-spolar kombinerar flankdetektering med utgångstilldelning. P_TRIG/N_TRIG detekterar flanker på RLO:n (sammansatt logik). R_TRIG/F_TRIG är IEC-standard FBs med inbyggt minne. För återanvändbar bibliotekskod, föredra R_TRIG/F_TRIG. För enkel logik fungerar |P|/|N|-kontakter bra.

Varför beter sig min Set/Reset-krets oväntat?

Den vanligaste orsaken är att både Set- och Reset-villkoren är TRUE samtidigt. I så fall vinner den sista instruktionen i programmet. Om ditt Reset-nätverk ligger före ditt Set-nätverk kommer utgången att bli Set. Lösning: använd en RS-vippa (Reset-prioritet) för säkerhetskritiska kretsar, eller se till att dina villkor är ömsesidigt uteslutande.

Kan flankdetektering fungera på analoga värden eller bara BOOL?

Instruktioner för flankdetektering (|P|, |N|, R_TRIG, F_TRIG) fungerar endast på booleska signaler. För analoga värden behöver du skapa en jämförelse (t.ex. värde > tröskelvärde) som ger ett BOOL-resultat, och sedan använda flankdetektering på det resultatet.

Generera bitlogik med AI

Beskriv din styrlogik i klartext och T-IA Connect genererar PLC-koden — inklusive kontakter, spolar, vippor och flankdetektering.