Von REAL auf INT mit Komma umwandeln

MasterKalle

Level-1
Beiträge
24
Reaktionspunkte
0
Hallo,
Ich hab eine kleine Frage / Problem.
Ich lese von einer Analogbaugruppe ein skaliere es und speicher es ab, funktioniert alles soweit.
Das einzige Problem ist das halt die Wert ziemlich ungenau sind da ja ganze Zahlen skaliert werden und nicht Komma zahlen.
Könnt ihr mir irgendwie helfen das ich genauere Zahlen herraus bekomme?
Code:
      CALL  "SCALE"
       IN     :=PEW512
       HI_LIM :=2.000000e+001
       LO_LIM :=4.000000e+000
       BIPOLAR:=FALSE
       RET_VAL:=MW102
       OUT    :="MD12"
-----------------------------
      L     "MD12"
      RND+  
      T     "MW14"
-----------------------------
      CALL  "SKAL_LINEAR+LIMIT_INT"
       x   :="MW14"
       yMIN:=0
       yMAX:=100
       x0  :=4
       y0  :=0
       x1  :=20
       y1  :=100
       y   :="MW16"
      NOP   0
 
      AUF   DB    11
      L     "MW16"
      T     DBW  200
-----------------------------
      U     M      0.0                  
      FP    M     10.0                  
      SPBN  M001                        
      L     "MW18"                      
      +     1                          
      T     "MW18"
      L     16
      *I                                
      LAR1                              
      AUF   DB    11                    
      L     "MW16"                            
      T     DBW [AR1,P#0.0]             
      L     "MW18"
      L     99                          
      ==I                               
      SPBN  M001
      L     -1
      T     "MW18"                     
M001: NOP   0
 
Hallo,
wenn du die Genauigkeit der Ursprungsvariablen mit :
Code:
  L     "MD12"
      RND+  
      T     "MW14"
kaputt machst dann ist das so ...
Du nimmst entweder das entweder das wahrscheinlich genauere MD12 oder das durch das Abschneiden der Nachkommastellen ungenauere MW14. Dazwischen sehe ich keine Möglichkeit ...

Was soll es denn werden ...?

Gruß
Larry
 
Ich verstehe den Sinn deines Codes nicht.

Rechnest du erst den Analogwert 0-27648 mit dem FC_Scale in mA um?
Und was möchtest du dann weiter machen?

Wenn du von mir aus einen Druck von 0-1300mbar über dein 4-20mA Signal bekommst ruf doch den FC_Scale so auf:

Code:
      CALL  "SCALE"
       IN     :=PEW512
       HI_LIM :=1.300000e+004
       LO_LIM :=0.000000e+000
       BIPOLAR:=FALSE
       RET_VAL:=MW102
       OUT    :="MD12"

Dann steht im MD12 der Druck in mbar....
 

Es gäbe noch die Möglichkeit der Komaverschiebung -> 1000 entspricht 10,00. Interessanter wäre zu wissen, was er vor hat.
 
Ah sry hab ich ganz vergessen^^

Ich habe einen Versorgungsschank den ich überwachen soll mit 100A über Messwandler gehe ich runter auf 20mA so das ich auf die Analogbaugruppe gehen kann. Will sie dann aber halt wieder in Ampere speichern anstatt in mA
Soll dann später mit WinCC angezeigt und mit Archives endgüglitg gespeichert werden ( aber das ist dann Schritt 2)
 
Zuletzt bearbeitet:
Dann nimm doch den Scale mit Lo auf 0,0 High auf 100,0.
Dann hast in deinem MD12 0-100A in Real liegen. Genauer geht es nicht.
Dein AE muss auf 4-20mA eingestellt sein.
 
Aber aus dem Scale krieg ich doch keine vernüftige Zahl raus müsste ich ja auch irgendwie umwandeln. oder liege ich jetzt komplett daneben ?
 
Du bekommst einen Wert (Real) zwischen 0.0 und 100.0

Wenn du den jetzt mit rnd rundest bekommst du einen Integer zwischen 0 und 100. Wenn das nicht genau genug ist, kannst du ja vorm Runden den Real-Wert mit 10 mulitplizieren und dann in WinCC den Integer mit einer Nachkommastelle anzeigen. ich bezweifle aber fast dass du einen Wandler mit einer Genauigkeitsklasse kleiner als 1 hast, und insofern sollte die Anzeige in A völlig ausreichend sein.
 
ah ok werde ich nächste Woche mal ausprobieren. melde mich dann zurück

jetzt erstmal allen ein schönes Wochenende
 
jetzt hab ich das getestet und er gibt mir die die werte immer in 1A sprüngen aus.
hab das programm auch komplett gekürzt
jetzt hab ich mir überlegt einfach den wert der mir der fc105 ausgibt umzurechnen .
Also MD40 -4 und dann x6,25 . geht das irgendwie?
CALL "SCALE"
IN :=PEW512
HI_LIM :=2.000000e+001
LO_LIM :=4.000000e+000
BIPOLAR:=FALSE
RET_VAL:=MW102
OUT :="MD40"
 
jetzt hab ich mir überlegt einfach den wert der mir der fc105 ausgibt umzurechnen .
Also MD40 -4 und dann x6,25 . geht das irgendwie?
Zitat:

Code:
L MD40
L#4
-D
DTR
L   6.250000e+000
*R
T "Ergebnis"// Realzahl
TRUNC,RND,RND+,RND-,....usw für Ganzzahl-Ergebnis
 

Wenn du deinen Code so änderst passt das doch auch:
Code:
CALL "SCALE"
IN :=PEW512
[COLOR=red]HI_LIM :=1.000000e+002[/COLOR]
[COLOR=red]LO_LIM :=0.000000e+000[/COLOR]
BIPOLAR:=FALSE
RET_VAL:=MW102
OUT :="MD40"


PS: Du musst nicht erst die mA ausrechnen. Die sind doch letztlich auch uninteressant...
 
Zuletzt bearbeitet:
:smile:warum einfach wenns auch kompliziert geht xD ok jetzt funktioniert alles so wie es soll.
Danke!
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…