Kuve anpassen

Begonnen von McNugget2000, 18. August 2009, 16:46:20

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

McNugget2000

Hallo allerseits.

Gibt es bereits in der OSCAT.Lib eine Möglichkeit, eine Kurve "umzulinearisieren"?

Ich habe ein Problem mit einer solchen Aufgabenstellung bereits in einem anderen Forum beschrieben:

http://www.sps-forum.de/showthread.php?p=212009#post212009

Vielleicht fällt hier jemandem was zu der Aufgabenstellung ein?

Gruss

McNugget

hugo

1. wandle deinen eingangswert in einen real.

2. dann nutze ein ft_pt1 tiefpass um dein signal zu glätten falls nötig

3. deine kennlinie bildest du am besten mit den bausteinen linear_int oder polynom-int ab

schau zuerst ob bei deiner wandlung nach real die richtigen werte stehen.
dann checke nach dem filter (stelle sicher das deine zykluszeit ausreichend kurz ist und deine t1 des filters nicht zu groß
danach die richtige kennlinie, wahrscheinlich ist der polynomint für dich das richtige da solltest du deine kurve mit wenigen punkten abbilden können

alle bausteione findest du in der oscat.lib
falls dein eingangssignal schon nicht die richtigen werte liefert melde dich nochmal

McNugget2000

#2
Hallo Hugo.

Danke schon mal für die Antwort. Ich werde es gleich mal probieren.

Was mache ich, wenn ich 50 Punkte habe, die definiert sind?

Reicht es, dann das Array neu zu definieren?

Gibt es irgendwo eine Funktion, dieeine NH-3- Nassdampftabelle beschreibt?

Gruss

McNugget

hugo

nein ber wenn du mir hintergrundinfos zu ammoniak berechnungen sendest kann ich dir vielleicht helfen

hugo

habe folgendes einfaches polynom für den sättigungsdampfdruck von ammoniak gefunden

Vapor pressure formula for ammonia:[1]

            log10(P) = A   Ã¢â,¬â€œ   B / (T ââ,¬â€œ C)

where P is pressure in kPa and T is temperature in kelvins

            A = 6.67956; B = 1002.711; C = 25.215   for T = 190 K through 333 K

damit kann man vieles relativ einfach berechnen, was genau benötigat du?
inputs, outputs ?

McNugget2000

Wow.

Ich benötige die Umrechnung des Druckwertes in bar in °C Mediumstemperatur.

Eine Nassdampftabelle habe ich , aber die ist eben sehr statisch und die Werte zwischen den ganzen Gradzahlen werden eh wieder als Linie (und eben nicht als Kurve) interpoliert.

Input eines Bausteins zur Berechnung der Temperatur wäre der Druck (Real) möglichst genau.
Output wäre °C (Real) mit zwei Nachkommastellen.

In dem Array, das meine Kurve beschreibt, habe ich nur den Ausschnitt von +5°C bis -45°C genommen, da das der am meisten gebrauchte Bereich sein dürfte.

Wenn das Ganze als Funktion bereit stünde, gäbe es diese Einschränkung auf wenige Punkte natürlich nicht mehr.

Hier mal die für meine Anwendung wesentlichen Punkte des Arrays (für Copy&Paste-Zwecke).

TYPE POINTN :
STRUCT
   X,Y: DINT;
END_STRUCT
END_TYPE



P:ARRAY[0..50] OF POINTN :=
      (X :=05450      ,Y :=-4500),
      (X :=05764      ,Y :=-4400),
      (X :=06093      ,Y :=-4300),
      (X :=06436      ,Y :=-4200),
      (X :=06796      ,Y :=-4100),
      (X :=07171      ,Y :=-4000),
      (X :=07563      ,Y :=-3900),
      (X :=07973      ,Y :=-3800),
      (X :=08401      ,Y :=-3700),
      (X :=08847      ,Y :=-3600),
      (X :=09312      ,Y :=-3500),
      (X :=09797      ,Y :=-3400),
      (X :=10302      ,Y :=-3300),
      (X :=10828      ,Y :=-3200),
      (X :=11376      ,Y :=-3100),
      (X :=11946      ,Y :=-3000),
      (X :=12538      ,Y :=-2900),
      (X :=13154      ,Y :=-2800),
      (X :=13795      ,Y :=-2700),
      (X :=14460      ,Y :=-2600),
      (X :=15150      ,Y :=-2500),
      (X :=15867      ,Y :=-2400),
      (X :=16611      ,Y :=-2300),
      (X :=17382      ,Y :=-2200),
      (X :=18182      ,Y :=-2100),
      (X :=19011      ,Y :=-2000),
      (X :=19870      ,Y :=-1900),
      (X :=20760      ,Y :=-1800),
      (X :=21681      ,Y :=-1700),
      (X :=22634      ,Y :=-1600),
      (X :=23620      ,Y :=-1500),
      (X :=24641      ,Y :=-1400),
      (X :=25695      ,Y :=-1300),
      (X :=26785      ,Y :=-1200),
      (X :=27912      ,Y :=-1100),
      (X :=29075      ,Y :=-1000),
      (X :=30277      ,Y :=-900),
      (X :=31517      ,Y :=-800),
      (X :=32797      ,Y :=-700),
      (X :=34117      ,Y :=-600),
      (X :=35479      ,Y :=-500),
      (X :=36883      ,Y :=-400),
      (X :=38331      ,Y :=-300),
      (X :=39822      ,Y :=-200),
      (X :=41359      ,Y :=-100),
      (X :=42941      ,Y :=000),
      (X :=44571      ,Y :=100),
      (X :=46248      ,Y :=200),
      (X :=47974      ,Y :=300),
      (X :=49750      ,Y :=400),
      (X :=51576      ,Y :=500);

Die passende Nassdampftabelle habe ich mal angehängt. Ich kann nicht sagen, inwiefern es für den einen oder anderen interessant wäre, in einer "Ammoniakfunktion" noch die weiteren Spalten berechnet zu bekommen.

Gruss

McNugget

[gelöscht durch Administrator]

hugo

schau dir mal die funktion sdd_nh3 in der 311 beta lib der oscat an.

die berechnet den sättigungsdampfdruck in bar
eingagswet ist temperatur in °C und ausgangswert ist der entsprechende sättigungsdampfdruck in Bar

die genauigkeit liegt bei etwa 1% was für prozessregelungen mehr als ausreichend ist.



[gelöscht durch Administrator]

McNugget2000

#7
Hallo Hugo.

Das sieht schon sehr cool aus. (Passend zur Kältetechnik  ;D)

Allerdings benötige ich genau die entgegengesetzte Funktion.

Ich müsste anhand des Druckes die Temperatur errechnen.

Kommt so ein fertiger Baustein auch noch in die OSCAT.LIB?

Gruss

McNugget

P.S: Habe den Baustein gerade mal integriert und lasse meine berechneten Werte zurückrechnen. Das sieht schon super aus!

hugo

#8
ok hier beta2 mit der umgekehrten funktion


[gelöscht durch Administrator]

McNugget2000

Guten Morgen.

Super! Danke. Ich habe die Funktion schon gestern Abend mit eingebaut. Läuft.
Kann ich hier auch von maximal 1% Abweichung ausgehen?


War so etwas sowieso zur Erweiterung der OSCAT geplant, oder wurden die NH3-Bausteine jetzt nur auf meine Anfrage hin entwickelt?



Gruss

McNugget

hugo

die bausteine wurden auf deine anfrage hin entwickelt weil wir der meinung sind das ammoniak ein gängiges kältemittel ist und deshalb die funktionen sinnvoll sind.
die erstellung der funktionen hat ja auch kaum zeit gekostet.

sie werden ab der release 3.11 drin sein

McNugget2000

Echt cool.

Tausend Dank. Hier fehlt noch einen DANKE-Funktion im Forum. ;-)


Noch eine Frage: Kann es sein, dass der Baustein Trend_DW im negativen Bereich falsch anzeigt?

Gruss

McNugget


hugo

die danke funktion gibt es,
unter ankündigungen referenzen freuen wir uns über jeden eintrag

trend_dw werde ich mir ansehen, alles ist möglich

hugo

trend_dw geht überhaupt nicvht für negativ, ein dword ist 0- 2^32-1 nur positiv und keine negative zahlen
in der release 3.11 findest du auch hier einen neuen baustein trend der real als input verarbeitet

McNugget2000

Vom Feinsten.

Danke


McNugget