Operacije Primerjave
Odločitvena logika in Območja
Primerjava vrednosti je gonilo industrijske odločitvene logike. Obvladajte standardne primerjalnike, teste območij in preverjanja veljavnosti.
Kaj so operacije primerjave v TIA Portalu?
Operacije primerjave omogočajo primerjavo dveh vrednosti istega podatkovnega tipa (Cela števila, Realna števila, Čas itd.) ali preverjanje, ali se vrednost nahaja znotraj ali zunaj določenega območja. So temeljne za ustvarjanje alarmnih pragov, pogojev prehoda in regulacijskih zank.
TIA Portal ponuja standardne primerjalnike (==, <>, >= itd.), navodila za območja (IN_Range, OUT_Range), teste veljavnosti za števila s plavajočo vejico in napredna navodila za Variant podatkovne tipe in DB kazalce.
Standardni Primerjalniki
Ocenjevanje enakosti in neenakosti med dvema operandoma
CMP == — Enako (Equal)
==Kaj počne
Primerja dva operanda (IN1 in IN2). Če je IN1 enak IN2, navodilo vrne TRUE. Podpira skoraj vse preproste podatkovne tipe.
Kdaj uporabiti
Preverjanje, ali je števec dosegel cilj, ali nastavljena vrednost HMI ustreza trenutni vrednosti ali ali je specifično stanje stroja aktivno.
Pro Nasveti
Pozor pri tipih Real: stroga enakost lahko spodleti zaradi natančnosti. Raje uporabite toleranco ali območje.
V SCL: IF value1 = value2 THEN ...
Primerjate lahko nize znakov (String) za preverjanje identifikacijskih kod.
CMP <> — Neenako (Not equal)
<>Kaj počne
Vrne TRUE, če sta operanda IN1 in IN2 različna. Je obratno od enakosti.
Kdaj uporabiti
Zaznavanje spremembe vrednosti, zagotavljanje, da senzor ne vrača 0, ali preverjanje, da način delovanja ni prepovedan.
Pro Nasveti
Pogosto se uporablja za sprožitev dejanja, takoj ko vrednost odstopi od nastavljene.
V SCL: IF value1 <> value2 THEN ...
Lahko se uporablja za primerjavo časovnih žigov (DTL), da vidite, ali se je datum spremenil.
CMP >= — Večje ali enako
>=Kaj počne
Vrne TRUE, če je prva vrednost (IN1) večja ali enaka drugi (IN2).
Kdaj uporabiti
Sprožitev alarma visoke ravni, dovoljenje ogrevanja, dokler temperatura ni dosežena.
Pro Nasveti
Idealno za varnostne prage, kjer mora biti mejna vrednost vključena v pogoj.
V SCL: IF level >= setpoint THEN ...
Lahko se uporablka s tipi Time za preverjanje, ali je pretekel minimalni čas.
CMP <= — Manjše ali enako
<=Kaj počne
Vrne TRUE, če je IN1 manjši ali enak IN2.
Kdaj uporabiti
Nadzor nizke ravni, ustavitev črpalke, potrditev minimalnega tlaka.
Pro Nasveti
Pogosto povezano s histerezo, da se prepreči nenehno preklapljanje izhoda.
Deluje izvorno s tipi Date in Time.
V SCL: IF pressure <= min_limit THEN ...
CMP > — Večje (Greater than)
>Kaj počne
Vrne TRUE, če je IN1 strogo večji od IN2.
Kdaj uporabiti
Stroga primerjava, ki ne sme vključevati ciljne vrednosti.
Pro Nasveti
Manj uporabljeno kot >= v avtomatizaciji, a uporabno za matematične algoritme.
V SCL: IF current > max THEN ...
Priporočljivo za primerjave indeksov zank (FOR).
CMP < — Manjše (Less than)
<Kaj počne
Vrne TRUE, če je IN1 strogo manjši od IN2.
Kdaj uporabiti
Testi strogih spodnjih mej.
Pro Nasveti
Uporabno za preverjanje, ali je vrednost 'negativna' (val < 0).
V SCL: IF val < 0 THEN ...
Deluje z znaki (abecedno razvrščanje).
Operacije Območja
Preverjanje pripadnosti intervalu [MIN..MAX]
IN_Range — V območju
IN_RangeKaj počne
Preveri, ali se vrednost (VAL) nahaja med spodnjo mejo (MIN) in zgornjo mejo (MAX). Interval je zaprt: MIN <= VAL <= MAX.
Kdaj uporabiti
Nadzor delovnega okna (npr. tlak med 2 in 5 bar), potrditev hitrosti stroja.
Pro Nasveti
Učinkovito nadomesti dva zaporedno vezana primerjalnika, kar naredi mrežo bolj pregledno.
Če je MIN > MAX, navodilo vedno vrne FALSE.
Zelo uporabno za pogoje 'Ready to Run', ki zahtevajo več analognih pogojev.
OUT_Range — Izven območja
OUT_RangeKaj počne
Vrne TRUE, če je vrednost (VAL) izven intervala, določenega z MIN in MAX. Bodisi VAL < MIN bodisi VAL > MAX.
Kdaj uporabiti
Zaznavanje anomalij ali prekoračitev ekstremnih pragov (alarm območja).
Pro Nasveti
Je natančno nasprotje IN_Range.
Uporabite ga za poenostavitev procesne alarmne logike.
V SCL: res := (val < min) OR (val > max);
Testi Veljavnosti
Preverjanje integritete števil s plavajočo vejico
|OK| — Preveri veljavnost
|OK|Kaj počne
Preveri, ali je vrednost s plavajočo vejico (Real ali LReal) veljavno število. Vrne FALSE, če je vrednost NaN (Not a Number) ali Inf (Infinity).
Kdaj uporabiti
Po kompleksnih izračunih (deljenje, koreni, log), da se prepreči širjenje matematičnih napak, ki bi lahko ustavile PLC.
Pro Nasveti
Nujno pred pošiljanjem Real vrednosti na analogni izhod ali frekvenčni pretvornik.
Omogoča zaznavanje posrednega deljenja z nič.
Priročno za filtriranje povratnih informacij okvarjenih senzorjev.
|NOT_OK| — Preveri neveljavnost
|NOT_OK|Kaj počne
Vrne TRUE, če je vrednost s plavajočo vejico neveljavna (NaN ali Inf).
Kdaj uporabiti
Sprožitev bita za napako pri izračunu ali prisilna uporaba varne vrednosti.
Pro Nasveti
Uporabite ga, da stroj prestavite v varno stanje, če izračun trajektorije spodleti.
Je ekvivalent IS_NAN v drugih jezikih.
V SCL: IF NOT OK(value) THEN ...
Napredne primerjave (Variant)
Navodila za dinamično programiranje in kompleksne tipe
EQ_Type / NE_Type
Kaj počne
Primerja podatkovni tip Variant spremenljivke s tipom druge spremenljivke ali določenim tipom.
Kdaj uporabiti
V generičnih blokih, ki morajo obdelovati različne podatkovne tipe (npr. blok za beleženje, ki sprejema Int ali Real).
Pro Nasveti
Ključno za objektno orientirano programiranje in knjižnice za večkratno uporabo.
Omogoča zavarovanje dinamičnih dostopov do pomnilnika.
Uporablja se z navodilom VariantGet.
IS_NULL / NOT_NULL
Kaj počne
Preveri, ali je kazalec (Variant ali DB_ANY) ničeln (ne kaže na nič).
Kdaj uporabiti
Izogibanje napakam pri dostopu pri uporabi posredno naslovljenih DB-jev.
Pro Nasveti
Vedno testirajte NOT_NULL pred klicem metode ali branjem podatkov prek kazalca.
Ekvivalent objekta 'Nothing' ali 'null' v C#/Java.
Nujno za upravljanje povezanih seznamov ali dinamičnih struktur v PLC.
IS_ARRAY
Kaj počne
Preveri, ali Variant spremenljivka kaže na polje (Array).
Kdaj uporabiti
Programiranje funkcij za paketno obdelavo ali podatkovnih medpomnilnikov.
Pro Nasveti
Povežite ga s CountOfElements, da izveste velikost polja.
Omogoča ustvarjanje univerzalnih funkcij razvrščanja.
Deluje tudi za polja struktur (UDT).
Primerjava primerjalnikov — Katerega uporabiti?
Izbira pravega navodila za vašo PLC logiko
| Želite... | Uporabite to | Primer |
|---|---|---|
| Testirati natančno enakost | CMP == | Koda izdelka pravilna |
| Visok varnostni prag | CMP >= | Tlak > 10 bar |
| Vzdrževati v območju | IN_Range | Temp med 18 in 24°C |
| Nadzorovati napake Real | |OK| | Preveriti rezultat deljenja |
| Preveriti kazalec DB | NOT_NULL | Recept DB naložen |
| Preveriti tip Variant | EQ_Type | Vhod je res Int |
Pogosta Vprašanja
Zakaj moja primerjava == včasih spodleti pri številih Real?
Števila Real (s plavajočo vejico) imajo omejeno natančnost. Izračun lahko da 10.000001 namesto 10.0. Vedno uporabljajte IN_Range z majhno toleranco (npr. med 9.99 in 10.01) za primerjavo realnih vrednosti.
Kakšna je razlika med IN_Range in dvema zaporednima primerjalnikoma?
Funkcionalno je enako. Vendar je IN_Range grafično bolj kompakten, lažji za branje in hitrejši, saj PLC obdela navodilo v enem koraku.
Čemu služita navodili |OK| in |NOT_OK|?
Služita za zaznavanje 'tihih' napak pri izračunih Real. Če izračunate koren negativnega števila, je rezultat NaN. Brez testa |OK| bi ta NaN 'umazal' vse ostale izračune in lahko povzročil zaustavitev CPU.
Je mogoče primerjati celotne strukture (UDT)?
Navodilo CMP == ne omogoča neposredne primerjave dveh struktur. Vsakega člana morate primerjati posebej ali uporabiti specifičen blok, ki primerja pomnilniška območja.