Hallo Larry,
hallo Ralle,
meinen eigentlichen Fehler habe ich gefunden:
Wenn man die lineare Skalierung bei Wertänderung benutzt, dann muss man eine X-Variable, eine Y-Variable, die Steigung a und den Ordinatenwert b angeben. Die lineare Skalierung wird für die Variable eingestellt, die den Wert aus dem PEW darstellt. Wenn sich der Wert im PEW ändert, wird die Skalierung ausgelöst (Trigger durch Wertänderung im PEW).
Es kam ja die Fehlermeldung (hatte ich beschrieben), dass sinngemäß etwas an einem Parameter der Skalierung nicht stimmen würde. Ich konnte aber nichts finden.
Mein Problem war, ich habe an der falschen Stelle gesucht.
Der Fehler lag an der Zielvariablen, die den normierten Wert aufnehmen soll. Hier hatte ich dann irgendwann in meiner Verzweiflung auch mal unter linearer Skalierung nachgesehen, und hier war von Flexible alles rot gemarkert!!! Ich musste nur die fälschlicherweise eingetragene Skalierung löschen und die Sache lief ab dann problemlos.
Jetzt zu den Berechnungen mit WORD, INT, REAL usw.:
Ich habe mal ein paar Testnormierungen gemacht:
Ich ließ FAnalogE (PEW...) beim Datentyp WORD.
Der Steigungswert war 0,271267361 (7500/27648).
Der Wert ging in die interne Flexvariable FAnalogENormiert mit INT.
Es gab folgende Ergebnisse:
PEW------Taschenrechner----Flexible (als INT-Zahl im EA-Feld)
5000-----1356,3------------1357
10000----2712,7------------2714
20000----5425,3------------5426
30000----8138,0------------8139
Seltsamerweise ist der Fehler bei 10000 am größten.
Ich habe mal zu Testzwecken den Datentyp der internen Zielvariable FAnalogENormiert auf Float (entspricht vermutlich Real bei S7) gestellt, wie von Ralle vorgeschlagen.
Es ergibt sich beim PEW-Wert 10000 keine Änderung. Wenn man diesen Floatwert auf das EA-Feld gibt, wird wieder 2714 angezeigt. Der Wert 2713 wäre der nächstgelegene Ganzzahlwert.
Es ist mir nicht klar, mit welchem Datentyp Flexible eigentlich rechnet.
Ich vermute, es ist der Datentyp Variant. Zumindest steht in der Hilfe zu VB-Skript, dass Flexible nur einen Datentyp kennt, und das ist der Datentyp Variant, oder habe ich da etwas falsch verstanden?
Bei VB6.0 ist Variant der Datentyp, der alle anderen Datentypen aufnehmen kann.
Ich kann mir aber trotzdem nicht erklären, weshalb sich Flexible bei dieser einfachen Rechnung verrechnet.
Gruß
Earny