Autor Thema: Eingeschränktes Verhalten bei SCALE_D  (Gelesen 6183 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Andy

  • Newbie
  • *
  • Beiträge: 14
    • Profil anzeigen
Eingeschränktes Verhalten bei SCALE_D
« am: 13. November 2008, 18:26:45 »
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

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Eingeschränktes Verhalten bei SCALE_D
« Antwort #1 am: 13. November 2008, 22:07:18 »
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

Offline Andy

  • Newbie
  • *
  • Beiträge: 14
    • Profil anzeigen
Re: Eingeschränktes Verhalten bei SCALE_D
« Antwort #2 am: 14. November 2008, 07:20:14 »
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

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Eingeschränktes Verhalten bei SCALE_D
« Antwort #3 am: 14. November 2008, 10:06:43 »
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.