Matematiska Funktioner
Beräkningar & Algoritmer
Från enkel addition till komplexa ekvationer — matematiska funktioner omvandlar dina rådata till användbar information för styrning av dina processer.
Vad är matematiska funktioner i TIA Portal?
Matematiska funktioner i TIA Portal gör det möjligt att utföra aritmetiska, trigonometriska och logaritmiska beräkningar på olika datatyper (Heltal, Real). De är nödvändiga för skalning av givare, banberäkning eller PID-reglering.
TIA Portal utmärker sig genom CALCULATE-instruktionen, som gör det möjligt att skriva ett komplext uttryck (t.ex. (in1 + in2) * in3 / in4) i ett enda block, vilket förbättrar läsbarheten jämfört med en kedja av individuella ADD/MUL-block.
Grundläggande Aritmetik
Fundamentala operationer för databehandling
CALCULATE — Beräkna
CALCVad den gör
Gör det möjligt att definiera ett fritt matematiskt uttryck som kombinerar flera ingångar (IN1...INn). Du anger formeln och TIA Portal genererar motsvarande anslutningar.
När den ska användas
Så snart en beräkning kräver mer än två steg. Idealisk för flödes- och volymberäkningar eller komplexa fysikaliska formler.
Proffstips
Du kan använda funktioner som ABS, SQRT eller SIN direkt i CALCULATE-uttrycket.
Kontrollera alltid utgångens datatyp (OUT) för att undvika spill (Overflow).
I SCL är detta den naturliga motsvarigheten till en direkt tilldelning: out := (in1 + in2) * in3;
ADD / SUB / MUL / DIV
+Vad de gör
Standard aritmetiska instruktioner: Addition, Subtraktion, Multiplikation och Division.
När de ska användas
För enkla och snabba operationer mellan två värden.
Proffstips
Vid division (DIV), använd alltid |OK|-testet eller kontrollera att divisorn inte är noll för att undvika ett CPU-stopp.
ADD-instruktionen kan acceptera fler än två ingångar genom att klicka på den gula ikonen på blocket.
För heltal returnerar DIV heltalsskvotienten. Använd MOD för resten.
MOD — Modulo
MODVad den gör
Returnerar resten vid heltalsdivision mellan IN1 och IN2.
När den ska användas
Hantering av ringbuffertar, växling mellan cykler (t.ex. pump 1 och 2) eller enhetsomvandling (t.ex. sekunder till minuter/sekunder).
Proffstips
Mycket användbar för att utlösa en åtgärd var 'N':e cykel.
Endast tillgänglig för heltalsdatattyper (Int, DInt, etc.).
SCL: remainder := value1 MOD value2;
Tecken & Inkrement
Teckenhantering och snabba enhetsoperationer
INC / DEC — Inkrementera / Dekrementera
++Vad den gör
Adderar eller subtraherar 1 från den angivna variabeln (InOut).
När den ska användas
Enkla detaljräknare, loop-index, köhantering.
Proffstips
Snabbare att skriva än ett fullständigt ADD- eller SUB-block.
Se upp med datatypen: ett inkrement på en Int vid 32767 slår om till -32768.
I SCL: i := i + 1; eller INC(i);
ABS — Absolutbelopp
ABSVad den gör
Returnerar det positiva värdet av ett tal, oavsett om det var positivt eller negativt från början.
När den ska användas
Beräkning av avvikelse mellan ett mätvärde och ett börvärde, avståndsmätning, PID-felberäkning.
Proffstips
Oumbärlig för att beräkna absolut fel (|börvärde - mätvärde|).
Stöder både heltal och realtal.
SCL: positiveVal := ABS(originalVal);
Min / Max / Limit
Värdeselektion och begränsning
MIN / MAX — Minimum / Maximum
MINVad den gör
Jämför N värden och returnerar det minsta (MIN) eller största (MAX).
När den ska användas
Val av högsta temperatur bland flera givare, bestämning av minsta tillåtna hastighet.
Proffstips
Du kan lägga till så många ingångar som behövs till blocket.
Mycket användbar för diagnos av flera givare.
SCL: peakValue := MAX(val1, val2, val3);
LIMIT — Begränsa
LIMITVad den gör
Begränsar (clampt) ett ingångsvärde (IN) mellan ett minimum (MN) och ett maximum (MX).
När den ska användas
Säkerhet på analoga utgångar (t.ex. förhindra att en ventil öppnar mer än 80 %), begränsning av börvärden.
Proffstips
Ersätter fördelaktigt en kombination av MIN och MAX.
Om MN > MX beror utgången på CPU-typ, men vanligtvis tas MX.
SCL: safeVal := LIMIT(MN:=0.0, IN:=rawVal, MX:=100.0);
Potenser & Rötter
Exponentiella och radikala beräkningar
SQRT / SQR / EXPT
SQRTVad de gör
SQRT (Kvadratrot), SQR (Kvadrat), EXPT (Anpassad potens).
När de ska användas
Geometriska beräkningar, omvandling av icke-linjära signaler, flödesfysik.
Proffstips
SQRT av ett negativt tal ger NaN. Testa alltid ingången eller använd ABS.
EXPT är krävande för CPU:n, använd SQR för enkla kvadrater.
SCL: area := 3.14 * SQR(radius);
Trigonometri
Vinkel- och rotationsberäkningar
SIN / COS / TAN / ASIN...
SINVad de gör
Standard trigonometriska beräkningar och deras inverser (arcsin, arccos, arctan). Vinklar är alltid i RADIANER.
När de ska användas
Robotkinematik, vinkelpositioneringsberäkningar, bearbetning av oscillerande signaler.
Proffstips
För att omvandla grader till radianer: Radianer = Grader * (PI / 180).
TAN(PI/2) går mot oändligheten, övervaka dina ingångar.
Använd systemkonstanter för PI för att garantera precision.
Avancerade Funktioner
Logaritmer och decimaldelar
LN / EXP / FRAC
LNVad de gör
LN (Naturlig logaritm), EXP (Exponentiell e^x), FRAC (Extraherar decimaldelen).
När de ska användas
Modellering av kemiska processer, exponentiell tillväxt eller enhetsseparering (FRAC).
Proffstips
FRAC(12.34) returnerar 0.34. Mycket praktiskt för tidsprecisionsberäkningar.
EXP är den exakta inversen till LN.
SCL: fraction := FRAC(totalValue);
Jämförelse av beräkningsmetoder
LAD vs SCL — Vilken metod ska man välja?
| Typ av beräkning | Rekommenderad metod | Varför? |
|---|---|---|
| Enkel addition | ADD-block (LAD) | Visuellt och lätt att följa |
| Komplex formel | CALCULATE-block | Kompakt och minskar antalet nätverk |
| Matematisk algoritm | SCL-språk | Syntax nära C/Pascal, perfekt för formler |
| Trigonometrisk beräkning | SCL eller CALCULATE | Individuella block tar för mycket plats |
| Signalbegränsning | LIMIT-block | Siemens-standard, mycket robust |
| Indexåterställning | INC/DEC-instruktion | Mycket snabb att implementera |
Vanliga frågor
Vad är fördelen med CALCULATE jämfört med flera ADD/MUL-block?
CALCULATE minskar avsevärt det utrymme som tas upp i programmet. Istället för 5 nätverk med temporära mellanvariabler har du ett enda block med en läsbar formel. Det är också lättare att underhålla om formeln ändras.
Hur hanterar TIA Portal beräkningsfel (t.ex. division med noll)?
På S7-1200/1500 stoppar ett matematiskt fel inte nödvändigtvis CPU:n (beroende på konfig), men resultatet blir NaN. Det är KRITISKT att använda |OK|-instruktionen efter en känslig beräkning för att validera resultatet.
Använder trigonometriska funktioner grader eller radianer?
Alla funktioner (SIN, COS, TAN, etc.) använder uteslutande RADIANER. Om din HMI tillhandahåller grader måste du multiplicera värdet med 0.01745329 (PI/180) innan det matas in i blocket.
Kan jag utföra beräkningar på 64 bitar (LReal)?
Ja, S7-1500 stöder nativt typen LReal (Long Real) för ökad precision. De flesta matematiska funktioner accepterar denna typ.