Eingeschränktes Verhalten bei SCALE_D

Begonnen von Andy, 13. November 2008, 18:26:45

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Andy

Hallo,

wollte gerade SCALE_D verwenden und hab festgestellt, daß er mit Werten <> 0 für I_LO und O_LO nicht richtig rechnet, geschweige denn, mit absteigenden Werten. Ich habe z.B. einen Eingang für einen NTC Widerstand, welcher bei einem Eingangswort von 2970 -15°C entspricht und bei 1390 +20°C entspricht.
Anbei der Code, der die Funktion universell macht:

IF I_LO > I_HI THEN;
Value := LIMIT(I_HI,X,I_LO);
ELSE;
Value := LIMIT(I_LO,X,I_HI);
END_IF;
SCALE_D := O_LO + DWORD_TO_REAL(ABS(I_LO - Value)) * ABS(O_LO -O_HI) / DWORD_TO_REAL(ABS(I_LO - I_HI));


Gruß
Andreas

hugo

ja danke für den hiunweis wir werden in der nächsten release den baustein entsprechend erweitern.
allerdings müssen die werte i_lo < I_hi sein. eine negative steigung kann ja dadurch erreicht werden das die ausgangswerte o_lo und O_hi entsprechend absteigend definiert werden.
in der 3.02 wird der korrigierte baustein enthalten sein

Andy

Hallo Hugo,

warum muß I_LO < I_HI sein? Der von mir gepostete Code kommt mit allen Konstellationen klar, soweit ich das getestet habe. Ich finde es intuitiver so, in "Datenflußrichtung" zu denken.

Gruß
Andreas

hugo

ja da hast du schon recht aber er ist deutlich langsamer und produziert mehr code.
funktionalität gibt es nichts dazu es ist völlig egal ob die eingangswerte aufsteigende und die ausgangswerte absteigend spezifiziert werden.
allenfalls ist es mehr als verwirrend die zusätzliche funktion der begrenzung des eingangsbereichs absteigend zu spezifizieren.

logisch ist doch i_LO 10 erzeugt o_lo 100 udn i_hi 100 erzeugt ausgangswert o_hi -100

das hat doch nichts mit universell zu tun, wir wollen hier keine verwirrung stiften.
speziell soll ja der baustein 2 funktionen gleichzeitig erschalgen:

begrenzung des eingangsbereiches auf den bereich i_lo <= x <= i_hi.
und lineare transformation auf die kennlinie die mit den 2 punkten i_lo / o_lo und i_hi / o/hi spezifiziert wird.