Határérték korlátozás STL-ben

Néha-néha szükség lehet olyan funkcióra, ami egy változó értékét erőszakkal megadott határok között tartja.
Pl. mért érték, eltelt idő, vagy a kezelő által beütött szám, stb.
A blokk működése egyszerű:
Megadunk két határértéket. Egy minimumot és egy maximumot. Van egy bemenete, amin megkapja a korlátozni kívánt értéket. A kimeneten pedig olyan érték jelenik meg, ami mindenképpen a megadott korlátok között van. Ha a bemenet a határértékek között van, akkor a bemeneti érték változatlanul megjelenik a kimeneten. Ha a bemenet kisebb, mint a az alacsonyabb határérték, akkor a kimeneten az alacsonyabb határérték jelenik meg, ha a bemenet a magasabb határérték fölött van, akkor a kimenet a magasabb határértékkel lesz egyenlő.



A két határérték közül az lesz a minimum, amelyik kisebb, és az a maximum, amelyik nagyobb a kettő közül. Mindegy tehát hogy a Limit1 vagy a Limit2 paraméter a kisebb. A blokk egész (integer) számokkal tud dolgozni.

A blokk működése újra, a paraméterekre való hivatkozással:
A #Limit1 és a #Limit2 paraméter által meghatározott értéktartományba kényszeríti az #Value bemeneten érkező számot, és #Out-ra küldi.
Ha a #Limit1 nagyobb mint #Limit2, akkor az értéktartomány maximuma #Limit1 lesz, a minimuma pedig #Limit2. Ha #Limit1 kisebb mint #Limit2, akkor az értéktartomány minimuma #Limit1
lesz, a maximuma pedig #Limit2. Ha #Limit1 és #Limit2 egyenlő, akkor a kimenet felveszi ezt az értéket a #Value-tól függetlenül (a korlátozási tartomány szélessége ilyenkor nulla lesz).

A blokk változói:



Az STL kód:


A fenti blokknak egy módosított, logikai típusú határérték jelző kimenettel is ellátott változata is van, itt.