TIA Portal Instructies

Vergelijkingsoperaties
Beslissingslogica & Bereiken

Waardevergelijking is de motor van industriële beslissingslogica. Beheers standaard vergelijkers, bereiktests en geldigheidstests in TIA Portal.

Wat zijn vergelijkingsoperaties in TIA Portal?

Met vergelijkingsoperaties kunt u twee waarden van hetzelfde datatype (Integers, Reals, Tijd, enz.) vergelijken of controleren of een waarde binnen of buiten een gedefinieerd bereik valt. Ze zijn fundamenteel voor het maken van alarmdrempels, overgangsvoorwaarden en regelkringen.

TIA Portal biedt standaard vergelijkers (==, <>, >=, enz.), bereikinstructies (IN_Range, OUT_Range), geldigheidstests voor zwevende-kommagetallen en geavanceerde instructies voor Variant-datatypes en DB-pointers.

Standaard Vergelijkers

Beoordelen van gelijkheid en ongelijkheid tussen twee operanden

CMP == — Gelijk (Equal)

==

Wat het doet

Vergelijkt twee operanden (IN1 en IN2). Als IN1 gelijk is aan IN2, geeft de instructie TRUE terug. Het ondersteunt bijna alle eenvoudige datatypes.

Wanneer te gebruiken

Controleren of een teller zijn doel heeft bereikt, of een HMI-instelpunt overeenkomt met de huidige waarde, of een specifieke machinetoestand actief is.

Pro Tips

Wees voorzichtig met Real-types: strikte gelijkheid kan mislukken door precisie. Geef de voorkeur aan een marge of bereik.

In SCL: IF value1 = value2 THEN ...

U kunt Strings vergelijken om identificatiecodes te controleren.

CMP <> — Niet gelijk (Not equal)

<>

Wat het doet

Geeft TRUE terug als beide operanden IN1 en IN2 verschillend zijn. Het is het omgekeerde van gelijkheid.

Wanneer te gebruiken

Een verandering in waarde detecteren, ervoor zorgen dat een sensor geen 0 teruggeeft, of controleren of een bedrijfsmodus niet de verboden modus is.

Pro Tips

Vaak gebruikt om een actie te triggeren zodra een waarde afwijkt van het instelpunt.

In SCL: IF value1 <> value2 THEN ...

Kan worden gebruikt om tijdstempels (DTL) te vergelijken om te zien of een datum is gewijzigd.

CMP >= — Groter dan of gelijk

>=

Wat het doet

Geeft TRUE terug als de eerste waarde (IN1) groter dan of gelijk is aan de tweede (IN2).

Wanneer te gebruiken

Een hoog-niveau alarm triggeren, verwarming toestaan zolang een temperatuur niet is bereikt.

Pro Tips

Ideaal voor veiligheidsdrempels waarbij de limietwaarde in de voorwaarde moet worden opgenomen.

In SCL: IF level >= setpoint THEN ...

Kan worden gebruikt met Time-types om te controleren of een minimale duur is verstreken.

CMP <= — Kleiner dan of gelijk

<=

Wat het doet

Geeft TRUE terug als IN1 kleiner dan of gelijk is aan IN2.

Wanneer te gebruiken

Laag-niveau bewaking, een pomp stoppen, een minimale druk valideren.

Pro Tips

Vaak gekoppeld aan een hysterese om klapperen van de uitgang te voorkomen.

Werkt standaard met de types Date en Time.

In SCL: IF pressure <= min_limit THEN ...

CMP > — Groter dan

>

Wat het doet

Geeft TRUE terug als IN1 strikt groter is dan IN2.

Wanneer te gebruiken

Strikte vergelijking die de doelwaarde niet mag bevatten.

Pro Tips

Minder gebruikt dan >= in automatisering, maar nuttig voor wiskundige algoritmen.

In SCL: IF current > max THEN ...

Bij voorkeur gebruiken voor lus-index vergelijkingen (FOR).

CMP < — Kleiner dan

<

Wat het doet

Geeft TRUE terug als IN1 strikt kleiner is dan IN2.

Wanneer te gebruiken

Strikte ondergrens tests.

Pro Tips

Nuttig om te controleren of een waarde 'negatief' is (val < 0).

In SCL: IF val < 0 THEN ...

Werkt met karakters (alfabetisch sorteren).

Bereikoperaties

Controleren of een waarde binnen een interval [MIN..MAX] valt

IN_Range — Binnen bereik

IN_Range

Wat het doet

Controleert of een waarde (VAL) tussen een ondergrens (MIN) en een bovengrens (MAX) ligt. Het interval is gesloten: MIN <= VAL <= MAX.

Wanneer te gebruiken

Bewaking van bedrijfsvensters (bijv. druk tussen 2 en 5 bar), validatie van machinesnelheid.

Pro Tips

Vervangt op voordelige wijze twee in serie geplaatste vergelijkers, wat het netwerk leesbaarder maakt.

Als MIN > MAX, geeft de instructie altijd FALSE terug.

Zeer nuttig voor 'Ready to Run' interlocks die meerdere analoge condities vereisen.

OUT_Range — Buiten bereik

OUT_Range

Wat het doet

Geeft TRUE terug als de waarde (VAL) buiten het interval ligt dat gedefinieerd is door MIN en MAX. Ofwel VAL < MIN, ofwel VAL > MAX.

Wanneer te gebruiken

Detectie van anomalieën of het overschrijden van extreme drempels (bereikalarm).

Pro Tips

Het is het exacte omgekeerde van IN_Range.

Gebruik het om proces-alarmlogica te vereenvoudigen.

In SCL: res := (val < min) OR (val > max);

Geldigheidstests

De integriteit van zwevende-kommagetallen controleren

|OK| — Geldigheid controleren

|OK|

Wat het doet

Controleert of een zwevende-kommawaarde (Real of LReal) een geldig getal is. Geeft FALSE terug als de waarde NaN (Not a Number) of Inf (Oneindig) is.

Wanneer te gebruiken

Na complexe berekeningen (delingen, worteltrekken, log) om te voorkomen dat wiskundige fouten worden doorgegeven die de PLC kunnen stoppen.

Pro Tips

Onmisbaar voordat u een Real-waarde naar een analoge uitgang of een drive stuurt.

Maakt het mogelijk om indirecte deling door nul te detecteren.

Handig voor het filteren van feedback van falende sensoren.

|NOT_OK| — Ongeldigheid controleren

|NOT_OK|

Wat het doet

Geeft TRUE terug als de zwevende-kommawaarde ongeldig is (NaN of Inf).

Wanneer te gebruiken

Een berekeningsfout-bit triggeren of een fallback-waarde forceren.

Pro Tips

Gebruik het om uw machine in veiligheid te brengen als een trajectberekening mislukt.

Het is het equivalent van IS_NAN in andere talen.

In SCL: IF NOT OK(value) THEN ...

Geavanceerde Vergelijkingen (Variant)

Instructies voor dynamisch programmeren en complexe types

EQ_Type / NE_Type

Wat het doet

Vergelijkt het datatype van een Variant-variabele met dat van een andere variabele of een gedefinieerd type.

Wanneer te gebruiken

In generieke blokken die verschillende datatypes moeten verwerken (bijv. een log-blok dat Int of Real accepteert).

Pro Tips

Essentieel voor objectgeoriënteerd programmeren en herbruikbare bibliotheken.

Maakt het mogelijk om dynamische geheugentoegang te beveiligen.

Gebruikt met de VariantGet instructie.

IS_NULL / NOT_NULL

Wat het doet

Controleert of een pointer (Variant of DB_ANY) nul is (naar niets wijst).

Wanneer te gebruiken

Toegangsfouten vermijden bij het gebruik van indirect geadresseerde DB's.

Pro Tips

Test altijd NOT_NULL voordat u een methode aanroept of gegevens leest via een pointer.

Equivalent aan het 'Nothing' of 'null' object in C#/Java.

Onmisbaar voor het beheer van gekoppelde lijsten of dynamische structuren in PLC.

IS_ARRAY

Wat het doet

Controleert of een Variant-variabele naar een Array wijst.

Wanneer te gebruiken

Programmeren van batch-verwerkingsfuncties of databuffers.

Pro Tips

Koppel het aan CountOfElements om de array-grootte te kennen.

Maakt het mogelijk om universele sorteerfuncties te maken.

Werkt ook voor arrays van structuren (UDT).

Vergelijker Vergelijking — Welke te gebruiken?

Kies de juiste instructie voor uw PLC-logica

U wilt...Gebruik ditVoorbeeld
Exacte gelijkheid testenCMP ==Productcode correct
Hoge veiligheidsdrempelCMP >=Druk > 10 bar
In een zone houdenIN_RangeTemp tussen 18 en 24°C
Real-fouten bewaken|OK|Resultaat deling controleren
DB-pointer controlerenNOT_NULLRecept DB geladen
Variant-type controlerenEQ_TypeIngang is wel degelijk Int

Veelgestelde Vragen

Waarom mislukt mijn == vergelijking soms met Real-getallen?

Real-getallen (zwevende-komma) hebben een beperkte precisie. Een berekening kan 10.000001 opleveren in plaats van 10.0. Gebruik altijd IN_Range met een kleine tolerantie (bijv. tussen 9.99 en 10.01) om zwevende-kommawaarden te vergelijken.

Wat is het verschil tussen IN_Range en twee vergelijkers in serie?

Functioneel is het identiek. IN_Range is echter grafisch compacter, gemakkelijker te lezen en performanter omdat de PLC de instructie in één stap verwerkt.

Waarvoor dienen de instructies |OK| en |NOT_OK|?

Ze dienen om 'stille' fouten in Real-berekeningen te detecteren. Als u de wortel uit een negatief getal trekt, is het resultaat NaN. Zonder de |OK|-test zal dit NaN al uw andere berekeningen vervuilen en kan het een CPU-stop veroorzaken.

Kunnen we complete structuren (UDT) vergelijken?

De CMP == instructie staat het niet toe om direct twee structuren te vergelijken. U moet elk lid afzonderlijk vergelijken of een specifiek blok gebruiken dat geheugenzones vergelijkt.

Genereer uw vergelijkingslogica met AI

Beschrijf uw drempels en voorwaarden in natuurlijke taal, T-IA Connect genereert de geoptimaliseerde vergelijkingsnetwerken met foutafhandeling.