TIA Portal Instruktioner

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

CALC

Vad 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

MOD

Vad 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

ABS

Vad 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

MIN

Vad 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

LIMIT

Vad 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

SQRT

Vad 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...

SIN

Vad 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

LN

Vad 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äkningRekommenderad metodVarför?
Enkel additionADD-block (LAD)Visuellt och lätt att följa
Komplex formelCALCULATE-blockKompakt och minskar antalet nätverk
Matematisk algoritmSCL-språkSyntax nära C/Pascal, perfekt för formler
Trigonometrisk beräkningSCL eller CALCULATEIndividuella block tar för mycket plats
SignalbegränsningLIMIT-blockSiemens-standard, mycket robust
IndexåterställningINC/DEC-instruktionMycket 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.

Förenkla dina komplexa beräkningar

Beskriv din fysikaliska formel eller algoritm, T-IA Connect genererar CALCULATE-blocket eller optimerad SCL-kod med datavalidering.