# Kuve anpassen

**URL:** <https://oscat.discourse.group/t/kuve-anpassen/654>\
**Category:** oscat.lib fuer TwinCAT/CoDeSys\
**Created:** [18. August 2009 um 14:46 UTC](https://oscat.discourse.group/t/kuve-anpassen/654 "2009-08-18T14:46:20Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![McNugget2000](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@McNugget2000](https://oscat.discourse.group/u/McNugget2000)\
**Post date:** [18. August 2009 um 14:46 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/1 "2009-08-18T14:46:20Z")

</div>

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](http://www.sps-forum.de/showthread.php?p=212009#post212009)

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

Gruss

McNugget

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [18. August 2009 um 14:59 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/2 "2009-08-18T14:59:14Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![McNugget2000](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@McNugget2000](https://oscat.discourse.group/u/McNugget2000)\
**Post date:** [18. August 2009 um 15:27 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/3 "2009-08-18T15:27:08Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [18. August 2009 um 18:52 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/4 "2009-08-18T18:52:32Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [18. August 2009 um 19:22 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/5 "2009-08-18T19:22:44Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![McNugget2000](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@McNugget2000](https://oscat.discourse.group/u/McNugget2000)\
**Post date:** [19. August 2009 um 06:31 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/6 "2009-08-19T06:31:43Z")

</div>

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]

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [20. August 2009 um 15:02 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/7 "2009-08-20T15:02:31Z")

</div>

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]

---

<div class="post-metadata">

**Author:** ![McNugget2000](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@McNugget2000](https://oscat.discourse.group/u/McNugget2000)\
**Post date:** [20. August 2009 um 16:01 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/8 "2009-08-20T16:01:58Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [20. August 2009 um 18:05 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/9 "2009-08-20T18:05:10Z")

</div>

ok hier beta2 mit der umgekehrten funktion

[gelöscht durch Administrator]

---

<div class="post-metadata">

**Author:** ![McNugget2000](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@McNugget2000](https://oscat.discourse.group/u/McNugget2000)\
**Post date:** [21. August 2009 um 06:07 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/10 "2009-08-21T06:07:14Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [21. August 2009 um 06:44 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/11 "2009-08-21T06:44:22Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![McNugget2000](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@McNugget2000](https://oscat.discourse.group/u/McNugget2000)\
**Post date:** [21. August 2009 um 06:48 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/12 "2009-08-21T06:48:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [21. August 2009 um 06:51 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/13 "2009-08-21T06:51:09Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [21. August 2009 um 09:25 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/14 "2009-08-21T09:25:20Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![McNugget2000](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@McNugget2000](https://oscat.discourse.group/u/McNugget2000)\
**Post date:** [21. August 2009 um 13:27 UTC](https://oscat.discourse.group/t/kuve-anpassen/654/15 "2009-08-21T13:27:40Z")

</div>

Vom Feinsten.

Danke

McNugget
