Rechnen mit LOG in SCL

Waelder

Level-2
Beiträge
964
Reaktionspunkte
117
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ihr,

ich versuch mich grad in SCL (zwangsweise....)
ich muss eine Formel in SCL erstellen bekomm aber nur schrott als ergebnis.

ein Teil der Formel ist wie folgt :

t_in = Real (sensor)

Wert= -0.07481*log(t_IN) ^ 6 (hoch 6)

der rest ist hoch + 5 +4, usw. usw. formel sieht ammer immer gleich aus

ich bekomm das aber nicht auf die Reihe in SCL

mein Ansatz ist :

Wert:=(-0.07481*(LOG(t_IN**6))) usw...

Gruss Wälder
 
Hallo Wälder,
ich hätte das dann auch eher so geschrieben :
Code:
Wert := -0.07481 * (LOG(t_IN[B][COLOR=magenta])[/COLOR][/B] **6[COLOR=magenta].0[/COLOR]) ;
Ich glaube nicht, dass das im Ergebnis das Gleiche bringt, wie bei dir ...
Ansonsten ... was bekommst du heraus und was sollte herauskommen ...?

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was es ist

Tja die ganze formel ist "ein teil" zur berechnung des volumetrischen dampfflusses eines dampf Injektors.

Sie ist immer nach dem selben schema aufgebaut. Da hab ich gedacht mit scl müssts passen aber da hab ich mich voll..... :sm18:

ist meine erste grosse rechenaufgabe in der SPS
 

Anhänge

  • formel.JPG
    formel.JPG
    12 KB · Aufrufe: 20
Na ... dafür ist doch SCL wie gemacht ...
Code:
log_t := log (t) ;
zw_Wert1 :=  -0.07481 * log_t ** 6.0 ;
zw_Wert2 :=   1.0756   * log_t ** 5.0 ;
zw_Wert3 := - 5.24962 * log_t ** 4.0 ;
zw_Wert4 :=  11.75473 * log_t ** 3.0 ;
zw_Wert5 := -14.10988 * log_t ** 2.0 ;
zw_Wert6 :=    8.34633 * log_t ;
zw_Wert7 :=  0.29548 ;
 
End_Wert := 10.0 ** (zw_Wert1  + zw_Wert2 + zw_Wert3 + zw_Wert4 + zw_Wert5 + zw_Wert6 + zw_Wert7) ;
Ich habe es jetzt extra mit Zwischenwerten gemacht, damit die unübersichtliche Formel etwas überschaubarer wird ...

Gruß
LL
 
Hey Super, meine Feundin würd jetzt sagen... krigsch än schmatz dafür..
...-> bekommst ein kuss von mir dafür... :D

ich habs mal so gemacht :


Code:
//spare calculation
//
//          vsat_tmp
//vsat=10
//

vsat_tmp:= (-0.07481*(LOG(t_IN)**6.0))+(1.0756*(LOG(t_IN)**5.0))-(5.24962*(LOG(t_IN)**4.0))+
           (11.75473*(LOG(t_IN)**3.0))-(14.10988*(LOG(t_IN)**2.0))+(8.34633*(LOG(t_IN)))+0.2954;

vsat:=10.0*EXP(vsat_tmp);
obs allerdings auch so funktioniert? der Compiler motzt mal nicht... :

Code:
vsat:=10.0*EXP(-0.07481*(LOG(t_IN)**6.0))+(1.0756*(LOG(t_IN)**5.0))-(5.24962*(LOG(t_IN)**4.0))+
              (11.75473*(LOG(t_IN)**3.0))-(14.10988*(LOG(t_IN)**2.0))+(8.34633*(LOG(t_IN))+0.2954);
Das SCL ist voll genial für so sachen schade nur, dass ich mit dem Mathezeugs nicht ganz so gut um kann...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eins noch ...
Du solltest entweder die "10 **"-Variante von mir nehmen oder wenn du unbedingt mit dem Exponent-Befehl arbeiten willst, dann EXPD (der bezieht sich auf den 10er Logarithmus) - EXP ist für den LN ...

Gruß
LL
 
Zurück
Oben