Von REAL auf INT mit Komma umwandeln

MasterKalle

Level-1
Beiträge
24
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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....
 
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

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:
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 ? :confused:
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 ? :confused:

wie centipede schrieb....

bei 0-20mA

100A = 20mA-Signal -->Scale Hi = 100.0
0A = 0mA-Signal -->Scale Lo= 0.0
 
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 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?

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:
Zurück
Oben