# Lineare Skalierung mit WinCC flexible



## Earny (22 Juli 2008)

Hallo,
ich habe wieder eine Frage zu WinCC flex 2007.
Wie skaliert man einen Analogwert in Flex? (nicht in STEP7 !)

Ich wollte den Analogwert 0 bis 27648 an Flex übergeben und dann mit der Linearen Skalierung in Variableneigenschaft auf 0 bis 9 umrechnen. Das funktioniert nicht richtig, weil Flex wohl mit Ganzzahlen rechnet. 

Gruß
Earny


----------



## Larry Laffer (22 Juli 2008)

Welchen Typ hat den deine Eingangs-Variable ? INT oder DINT ?
Wenn sie vom Typ REAL ist, dann sollte das auch funktionieren. Falls du ein entsprechendes Bediengerät hast, dann gibt es ggf. auch noch die Funktionen "Linear Umrechnen 1" und "..2", die du auch an deine Eingangs-Variable hängen kannst (bei Wert-Änderung).

Gruß
LL


----------



## Earny (22 Juli 2008)

Hallo Larry L.,
ich will einen Word bzw. INT-Wert der S7, genaugenommen das PEW754 (0 bis 27648) in den neuen Wert 0 bis 9,0 l/min (für ein Zeigerinstrument) umrechnen. Ich hatte gehofft, dass Flex die exakte Umrechnung auch so irgendwie schafft.

Die Wandlung in STEP7 mit:
L   PEW754
ITD
DTR
T   MD50

und dann MD50 in Flex einlesen war mir bekannt. Ich wollte das aber eigentlich vermeiden. Aber wenn es nicht anders geht, muss es wohl sein.

Gruß
Earny


----------



## Maxl (22 Juli 2008)

Hier dürfte ein Fehler in WinCCflexible schuld sein.
http://www.sps-forum.de/showthread.php?t=15129&highlight=flexible+2007+hotfix

intern rechnet Flex sicherlich mit Floating-Point

mfg Maxl


----------



## MSB (22 Juli 2008)

Ich gehe jetzt hier mal nicht von einem Fehler in Flex aus,
der Link von Maxl bezog sich imho ausschließlich auf "Timer",
aber warum rechnest du die 0-27648 auf z.B. 0-900 um,
überall wo die Variable angezeigt wird, wird diese dann mit 2 Kommastellen angezeigt.

Mfg
Manuel


----------



## Earny (23 Juli 2008)

Hallo MSB,
hallo Maxl,
hallo Larry L.,
ich habe die Sache noch eine zeitlang untersucht und bin zu einem ähnlichen Ergebnis wie MSB gekommen.
Die lineare Skalierung scheint in Flex2007 zu funktionieren.
Ich rechne jetzt die 
0 bis 27648 nicht mehr um in 0 bis 9 l/min sondern in 0 bis 9000 ml/min. Dadurch entstehen 1000fach größere Werte und die lass ich auf einem Zeigerinstrument anzeigen. Das sieht jetzt auf dem Zeigerinstrument ganz gut aus, ist aber wirklich nur eine Notlösung.
Die Anzeige 0 bis 9 l/min wäre mir lieber. In diesem Fall springt der Zeiger sofort erkennbar, immer nur auf ganze Zahlen, nicht auf Zwischenwerte. Das macht er vermutlich auch, wenn die mit 1000 multiplizierten Wert im Bereich 0 bis 9000 angezeigt werden, nur es fällt nicht mehr auf. Es sieht so aus, als könnte ein Zeigerinstrument grundsätzlich nur ganze Zahlen anzeigen!?

Gruß
Earny


----------



## johnij (23 Juli 2008)

Einen wunderschönen Morgääääääääääääääään Forumer,
die Skalrierung muss klappen:
IN=Eingang (Word)
Out=Ausgang(Real)
Delta=Geradensteigung

Aus der Formel (FC105)


```
Out=Delta*IN=(9000/27648)*IN
```
 
In WCF rufst du bei Wertänderung von IN die Skalierungsformel auf:

Y=Out
X=IN
a=Delta=ca 0,3255209
b=0

und das war es.


Gruß johnij


----------



## Earny (23 Juli 2008)

Hallo johnij,
diese Variante hatte ich auch schon mal durchprobiert.
Ich habe diesen Weg dann aber aufgegeben. Es mag sein, dass man auf diese Weise einen sauberen Real-Wert erhält (Float oder auch Single). In meinem Fall nutzt das nichts, weil ein Zeigerinstrument keine Real-Werte anzeigen kann. Zumindest schaffe ich es nicht, einen Real-Wert auf das Instrument zu geben. Oder mache ich was falsch?

Gruß
Earny


----------



## johnij (23 Juli 2008)

Earny schrieb:


> Hallo johnij,
> diese Variante hatte ich auch schon mal durchprobiert.
> Ich habe diesen Weg dann aber aufgegeben. Es mag sein, dass man auf diese Weise einen sauberen Real-Wert erhält (Float oder auch Single). In meinem Fall nutzt das nichts, weil ein Zeigerinstrument keine Real-Werte anzeigen kann. Zumindest schaffe ich es nicht, einen Real-Wert auf das Instrument zu geben. Oder mache ich was falsch?
> 
> ...


 
Tja Earny, ein Zeigerinstrument ist eine schlechte Darstellung fuer einen
realen Wert

johnij


----------

