Räknaroperationer
CTU, CTD, CTUD & Legacy S5
Räkning av händelser är kärnan i industriell styrning. Bemästra standard IEC-räknare och legacy-instruktioner i TIA Portal för dina produktionsapplikationer.
Vad är räknaroperationer i TIA Portal?
Räknaroperationer i TIA Portal gör det möjligt att räkna interna programhändelser eller externa signaler (positiva flanker). Dessa är funktionsblock enligt IEC 61131-3-standarden som hanterar inkrementering, dekrementering, återställning och jämförelse med ett förinställt värde (PV).
TIA Portal erbjuder 3 typer av IEC-räknare (CTU, CTD, CTUD) samt S5-kompatibilitetsinstruktioner (Legacy) och räknarspolar. Varje räknarinstans kräver sitt eget instansdatablock (IDB) eller kan integreras som en multiinstans i ett FB.
IEC-räknare
De 3 standardräknarblocken — flexibla och robusta
CTU — Uppräknare (Count Up)
Vad den gör
Räknar positiva flanker på räkneingången CU. Vid varje växling från FALSE till TRUE på CU ökar det aktuella räknarvärdet CV med 1. När CV blir större än eller lika med det förinställda värdet PV blir utgången Q TRUE. Ingången R (Reset) återställer CV till 0 och Q till FALSE.
När den ska användas
Används för att räkna detaljer på ett transportband, maskincykelantal eller hur ofta ett larm har utlösts. Idealisk för alla processer där ett numeriskt mål ska uppnås.
Proffstips
Räkningen stannar vid det maximala värdet för den datatyp som används (Int, DInt etc.). CV slår inte om till noll automatiskt utan Reset.
Ingången R har prioritet: så länge R är TRUE förblir räknaren på 0 och ignorerar flanker på CU.
I SCL: myCTU(CU := trigger, R := reset, PV := 10); IF myCTU.Q THEN ... END_IF;
CTD — Nedräknare (Count Down)
Vad den gör
Räknar nedåt från ett startvärde. Vid varje positiv flank på ingången CD minskar det aktuella värdet CV med 1. När CV är mindre än eller lika med 0 blir utgången Q TRUE. Ingången LD (Load) laddar det förinställda värdet PV till CV.
När den ska användas
Användbar för lagerhantering (dra ifrån detaljer), nedräkningsprocesser eller för att övervaka återstående kapacitet i en tank eller ett magasin.
Proffstips
Ingången LD används för att 'ladda om' räknaren. Så länge LD är TRUE är CV lika med PV.
Till skillnad från CTU uppfylls utgångsvillkoret Q när CV når 0 (eller mindre).
Räknaren stannar vid det minsta värdet för datatypen (t.ex. -32768 för en Int).
CTUD — Dubbelriktad Räknare (Up/Down)
Vad den gör
Kombinerar funktionerna i CTU och CTD i ett block. Den har två räkneingångar (CU för att öka, CD för att minska) och två utgångar (QU för 'Hög räknargräns nådd', QD för 'Noll nådd'). Den har både en Reset (R) och en Load (LD) ingång.
När den ska användas
Perfekt för enkel positionsspårning (framåt/bakåt), parkeringshantering (in-/utpassering av fordon) eller dynamisk lagerövervakning.
Proffstips
QU blir TRUE om CV >= PV. QD blir TRUE om CV <= 0.
R (Reset) nollställer CV till 0. LD (Load) initierar CV till PV. R har prioritet över LD.
Mycket användbar för automatiserade lager: öka vid inleverans, minska vid utleverans.
Legacy-instruktioner och Spolar
S5-räknare och spolinstruktioner för LAD/FBD
S_CU / S_CD / S_CUD
Vad den gör
Gamla räknarinstruktioner (Legacy S5) som används på S7-300/400. De använder globala räknarnummer (C0...C255) istället för instansdatablock. De tillåter parametrering, räkning och återställning i en enda komplex instruktion.
När den ska användas
Endast för underhåll av befintliga program eller migrering av S5/S7-300 projekt till S7-1500. Bör undvikas vid nyutveckling.
Proffstips
Dessa räknare är inte 'typade' som IEC-räknare. Deras område är begränsat (0-999).
Deras beteende vid flankanrop kan skilja sig från IEC-standarder.
Ersätt dem systematiskt med IEC CTU/CTD vid refactoring för bättre portabilitet.
—(SC)— Förinställ Räknare
—(SC)—Vad den gör
Instruktion av spoltyp som laddar ett förinställt värde i en specifik räknare när RLO blir TRUE. Det är den grafiska motsvarigheten till Load-ingången (LD).
När den ska användas
I LAD/FBD för att tvinga fram laddning av ett värde i en räknare från ett separat nätverk.
Proffstips
Används främst med legacy-räknare.
Det laddade värdet definieras ofta av en konstant eller en heltalsvariabel.
För IEC-räknare, använd istället blockets LD-ingång eller få tillgång till instansen direkt.
—(CU) / —(CD)— Räknarspolar
—(CU)—Vad den gör
Instruktioner av spoltyp som ökar (CU) eller minskar (CD) en räknare vid varje positiv flank av RLO. De gör det möjligt att styra en räknare utan att använda det fullständiga funktionsblocket.
När den ska användas
För mycket kompakt LAD-programmering där man bara vill trigga en räkning i slutet av en linje.
Proffstips
Dessa spolar refererar till en specifik räknare (t.ex. C1 eller ett IEC-räknardatablock).
Varning för läsbarhet: det är svårare att se det aktuella värdet (CV) med spolar än med block.
Föredra FB-block för bättre självdokumenterande kod.
Notering om S5-kompatibilitet
Globala räknare
S5-räknare (S_CU, S_CD, S_CUD) är begränsade till 256 globala instanser och ett område på 0 till 999. IEC-räknare (CTU, CTD, CTUD) är att föredra eftersom de använder instansdatablock, stöder större datatyper (LInt) och inte har en fast antalgräns.
Jämförelse av räknare — Vilken ska man använda?
Välj rätt räknare för din industriapplikation
| Du behöver... | Använd denna räknare | Exempel |
|---|---|---|
| Räkna uppåtgående händelser | CTU | Antal färdigförpackade produkter |
| Räkna nedåt till noll | CTD | Återstående platser på hyllan |
| Följa dubbelriktat flöde | CTUD | Fordon i ett parkeringshus |
| Ladda ett målvärde | PV / LD | Ställ in batch på 50 st via HMI |
| Automatisk återställning | Reset (R) | Batchslut, klar för nästa |
| Hantera miljontals enheter | IEC (DInt/LInt) | Årlig produktionstotalräknare |
Vanliga frågor
Vad är skillnaden mellan en IEC-räknare och en S5-räknare?
IEC-räknare använder instansdatablock (DB), vilket gör det möjligt att skapa oändligt många. De stöder 16, 32 eller 64-bitars heltal. S5-räknare är begränsade till 256 globala nummer (C0-C255) och räknar bara upp till 999.
Hur får jag räknaren att starta om från noll automatiskt?
Du kan ansluta utgången Q från räknaren till dess egen Reset (R) ingång. På så sätt nollställs räknaren omedelbart så snart målet har uppnåtts.
Kan jag använda en räknare för att mäta hastighet?
En räknare ensam mäter inte hastighet. Du måste räkna pulser under en fast tid (tidsfönster hanterat av en Timer) och sedan utföra beräkningen: Hastighet = Pulser / Tid.
Förlorar räknare sitt värde när PLC:n stannar?
Precis som för timers lagras det aktuella värdet (CV) i instansdatabblocket. Om datablocket är konfigurerat som 'Retentive' behåller räknaren sitt värde efter en omstart.