easy-forum
Deutsch - Software => easySoft => Thema gestartet von: HKW am August 19, 2008, 10:30:46 Vormittag
-
Hallo,
habe ein kleines Problem mit Baustein LS Werteskalierung für Easy 820.
Die benötigten Sollwerte sind jedoch nicht linear. (siehe Tabelle)
0 - 0
10 - 3
20 - 7
30 - 13
40 - 20
50 - 27
60 - 32
70 - 36
80 - 38
90 - 40
100 - 41
Gibt es eine Möglichkeit, eine solche Kurve einzugeben?
Gruß
Bruno
-
Hallo HKW,
schau mal ob das was nutzt.
Gruß veltins54
-
Hallo Bruno,
hier: http://easy-forum.net/index.php?topic=1325.0
ein Beispiel von Paul zur nichtlinearen Skalierung. Müsste eventuell noch erweitert werden.
mfG Jan
-
Hallo,
besten Dank für eure Vorschläge, die ich inzwischen getestet habe.
Leider ist die "Veltins-Kurve" zu grob u. macht mit 10 Fix-Punkten zu große Sprünge.
Die Kurve gleicht eher eine Treppe.
Wenn es möglich wäre, die Kurve auf 41 Ausgangswerte auszuweiten, wäre mein Problem gelöst.
Leider passt auch die "nicht lineare Skalierung" von Paul nicht.
Hier ist allerdings gut, dass die Vorlauftemp. in kleinen Schritten von 20 ..48C (nicht linear) verändert wird.
Evt. müßte man diese Anwendung verändern, was für mich Anfänger leider zu schwierig ist.
Einganswert: Wert 0....100 (linear) umskalieren auf Ausgang: 0..41 (nicht linear nach meiner Tabelle) als MW.
Gruß
Bruno
-
Hallo HKW,
ja das mein Beispiel zu grob ist mir klar,es sollte auch nur eine möglichkeit sein es zu machen,
mann kann es ja auch erweitern auf 41 Werte.
Gruß veltins54
-
Hallo Bruno,
für solche Dinge nehme ich immer Excel zur Hand, trag die Werte in eine Tabelle ein und lass mir dir Kurve mit der Gleichung anzeigen. Dann kannst du deinen skalierten Wert (0-100) nehmen und einfach die Funktion in der Easy rechnen lassen.....hab jetzt im Beispiel mal ein 3. Polynom gewählt, u.U. reicht das schon für deine Anwendung.......
mfg
Jan
-
Hallo zusammen,
ich bin mal wieder selbst drauf reingefallen....das mit excel funktioniert nur bis x², nicht bei polynomen höherer ordnung!......--> dafür gibt es das tolle proggi gnuplot (ist aber kompliziert!
hier ein beispiel mit excel:
die werte
IST-SOLL
0 - 0
10 - 3
20 - 7
30 - 13
40 - 20
50 - 27
60 - 32
70 - 36
80 - 38
90 - 40
100 - 41
werden in eine exceltabelle eingetragen, dann wird daraus ein diagramm erstellt, mit den IST-werten als x-achse, mit den SOLL-werten als y-achse. Jetzt der Clou: es wird eine Trendlinie eingefügt, für die man den grad des polynoms angeben kann....(wie schon gesagt bis x² ist ok ansonsten gnuplot).
dann kann man da irgendwo noch nen haken setzten mit "formel im diagramm anzeigen" und schon hat man die Funktion y=f(x)...es ergeben sich also für die für x eingesetzten werte (ist) die y-werte (soll).
Zum rechnen mit der easy:
also...kommazahlen..ganz böse :-( ...(normalerweise mach ich das auch nur unter codesys...)
aber es geht! (meistens jedenfalls)
man muss nur die kommastellen geschickt wegmultiplizieren und hinterher das jeweilige ergebnis wieder entsprechend wegdividieren......
so kann man dann z.b. 0,172 mit 1000 multiplizieren und hat dann eine ganzzahl
das problem ist dann wieder beim potenzieren......da kann man u.U. probleme mit der Zahlengrösse bekommen z.B. bei X= 0,172*100=172 das muss man dann z.B. bei x³ 3 mal in den arithmetikbaustein schicken:
AR1 MUL:
I1:172
I2:172
=MD20 = 29584
bleibt noch 1 x übrig also:
AR2 MUL:
I1:MD20 (29584)
I2:172
=MD21=5088448 !!!
!!! und jetzt nicht denken das ergebnis einfach durch 1000 teilen!!! um wieder das richtige ergebnis zu bekommen muss man durch 1000³ teilen! bzw. man muss schauen was rauskommt und wieder das optimum wählen und in den weiteren rechenoperationen berücksichtigen.......
ach ja: DA GEHEN EINE MENGE AR-BAUSTEINE DRAUF !!
usw.
(--->ich schreib mir immer die gleichung auf und zerlege sie in teilrechnungen und notiere mir das entsprechende MD hinzu.....dann kommt man beim programmieren nicht durcheinander
--> und das wichtigste : vor dem programmieren mal eine vergleichsrechnung der formel mit dem taschenrechner machen, das geht allemal schneller als alles zu programmmieren und dann festzustellen: oha hab wohl doch die falsche formel!!
-
Hallo opajan,
Du bist ja ganz toll aktiv in meine Sache eingestiegen.
Bin gerade daran in einen TB-Baustein deine Formel einzugeben.
Sehe leider nicht, wo ich eine Excel-Tabelle in den Baustein eingeben könnte.
Im Grunde benötige ich einen nicht linearen Ausgangswert 0..41 in Abhänigkeit von einem lineren Eingangswert 0..100. Mit Excell läßt sich das zwar sehr gut darstellen. Wie bringe ich das der Easy 800 bei? Hast Du eine konkrete Lösung?
Gruß aus dem schönen Allgäu
Bruno
-
Hallo Bruno,
also mit der TB-Funktion hat das nichts zu tun, sorry, wenn ich dich da auf eine falsche fährte geleitet hab.....
die Tabelle gibts nur unter excel, aber die formel y=f(x), die wird nachher in der easy berechnet, es ergibt sich dann für jedes x (deine eingangswerte 0....100 ein entsprechnder y-wert 0...41).
ich bin grad etwas knapp mit meiner zeit, aber ich versuche am wochenende dir die richtigen werte mit dem gnuplot zu generieren und in ein program einzubauen....habs schon lange nicht mehr benutzt, muss mich erst mal wieder einlesen......
hier zum verständnis mal ne einfache formel als beispiel:
ist-soll
0-0
1-2
2-8
3-18
4-32
5-50
6-72
7-98
8-128
9-162
10-200
die entsprechende formel wäre dann--> y(x)=2x²:
das x entspricht deinen Sollwerten, wenn du nun z.b. einen istwert von 6 hast: y(soll)=2*6²
das errechnet sich in der easy dann als 2*6*6 = 72
in der easy ist mein Istwert (x) z.b. als MD10 abgelegt, kann z.b. aber auch ein analogeingang sein....
bsp von oben+berechnung:
AR1:MUL (berechnung von x²)
I1=MD10 (6)
I2=MD10 (6)
=MD11 (36)
also 6*6=36 in MD11 schreiben, dann
AR2:MUL (berechnung 2*x²)
I1=MD11 (36)
I2=2
=MD12 (72)
-->für jeden wert von x (hier 0-10 bzw. MD10) bekommst du den entsprechenden y-wert
so, muss aber schon wieder weiter, werd mich morgen früh mal ans gnuplot machen :-)
mfg
Jan
-
hallo zusammen, hab euch mal ein demoprog angefügt, wer fragen hat einfach melden......
ach ja, hab alles nur mit x² gemacht....man schreibt sich nen wolf, je höhergradig das polynom ist.
mfg
Jan
edit: ach ja Eingang Iswert ist MD10, das Ergebnis seht ihr im MD16, klappt in der Simulation einwandfrei.....
edit: zum besseren verständnis kann man sich an meinem "freßzettel" dcfxxx.jpg orientieren.....
-
@heho,
jep, unter codesys ist das alles etwas einfacher *grins*......da kann man dann auch mit real arbeiten und muss sich nicht ständig sorgen machen irgendwelche teilungen vergessen zu haben, ausserdem wird es genauer weil noch mehr kommastellen verarbeitet werden.....
gruß
jan
edit: hab mal testweise ne x^4 Kurve plotten lassen, da sieht man dass alles genauer wird......
-
Hallo opajan,
habe mal Dein Programm vervollständigt, damit man die von Easy berechnete Kurve konkret in den einzelnen Rechnenvorgängen simulieren und testen kann.
IA1 = MD10 skaliert 0...100
MD16 = Ausgang -0..41 (Soll)
Frage: Könnte man die Kurve noch optimieren?
MD10 MD16 Soll
0 -3 0
10 3,60 3
20 9,85 7
30 15,62 13
40 20,00 20
50 25,73 27
60 30,07 32
70 33,94 36
80 37,33 38
90 40,24 40
100 42,68 41
Die -3 am Anfang könnte man mit VC-Baustein evt. unterdrücken.
Gut wäre, wenn im Bereich 20 - 30 sowie 50-70 die Kurve noch steiler wäre.
Aber alles in allem eine sehr gute Lösung u. ich habe wieder dazugelernt.
Mit den sieben AR Bausteinen verbraten wir 308 Byte Arbeitsspeicher was man ja noch akzeptieren könnte.
Gruß
Bruno
-
hallo bruno,
klar, geht auch genauer (siehe meinen letzten beitrag) mit der Kurve x^4, da sieht das alles richtig gut aus!
aber....da gehen noch einige ar´s drauf und wie gesagt, man schreibt sich echt nen wolf....ich kann dir morgen mal die korrekten werte plotten, dann kannst du es ja mal mit der genaueren kurve versuchen (aber vorher mit dem taschenrechner testen :-) obs wirklich gut passt, sonst machst du dir wirklich nen hauffen arbeit und hast u.u. nicht das gewünschte ergebnis...
gruß
jan
edit: hab die werte ja noch im speicher :-) ....
y=ax^4-bx^3+cx^2-dx+e
-
Hallo opajan,
Respekt, Du bist ja spät in der Nacht noch am arbeiten.
Falls Du nochmals Zeit findest und an der Formel "herumbiegst", wäre ich dankbar, wenn Du die Werte auf eine geänderte Tabelle abstimmen könntest.
Mit der Anwendung überwache ich an meinem kleinen Wasserkraftwerk die abgegebene Leistung 0..41 kW mit der Öffnung 0..100 % des Laufrades. Falls die Leistung zu stark absinkt, spüle ich die Turbine intern durch u. somit steigt in der Regel auch die Leistung an, der Zähler läuft dann schneller, d.h. es werden mehr ökologisch erzeugte kWh in das Netz geliefert.
Die neue Tabelle berücksichtigt bereits eine Leistungsminderung von ca. 3-4 kW.
Bei Unterschreitung wird dann der Putzvorgang gestartet.
Öffnung Sollwert
0 0
10 1
20 4
30 10
40 17
50 24
60 29
70 32
80 34
90 36
100 37
Gruß
Bruno
-
moin bruno,
hab deine neue tabelle mal angepasst, mit x^6 hab ich wirklich gute ergebnisse, bei x^4 muss man im unteren bereich etwas korrgieren......aber sieh selbst im anhang beide varianten.....aber bei beiden aufpassen, es ist möglich, daß das langsam mit der easy unrealisierbar wird....
mfg
jan
-
Guten Morgen,
die Kurve X*6 ist m.E. am besten.
Du hast ja schon selbst Bedenken, dass EASY das leider nicht mehr rechnen kann oder siehst Du dazu noch eine Lösung?
Gruß
Bruno
-
naja, versuchen kann mans mal......
edit: ok ich habs, verwende die von mir erstellte x^4 kurve für werte von 20-100, die könnte noch gehen....und für den bereich von 0-20 verwendest du die kurve y=x² dabei entsteht dann nahezu die kurve mit dem x^6....
...aber aufpassen, man muss die werte zwischen den beiden kurven aufeinander abstimmen....
mfg
jan
-
Hallo Opajan,
mein Problem ist, wie ich mit den Grundrechenfuktionen der EASY die Kurve berechnen lassen kann.
Gruß
Bruno
-
hm.....ok..
schau am besten in meinem Programm von oben "unlinear.zip" nach......da ist auch ein zettel mit meinen notizen, die ich nebenher gemacht habe....man kann ziemlich genau nachvollziehen, wie ich welche operationen durchgeführt habe....
mal als beispiel, wenn das x^4 vielleicht etwas abschreckt:
du musst eigentlich immer nur eins nach dem anderen machen y=ax^4+bx^3+cx^2+dx+e,
also im 1. schritt ax^4 ausrechnen.....das ist nichts anderes wie a*x*x*x*x , darum rechne ich als 1. das x^4 also x*x*x*x (MD10*MD10*MD10*MD10) ich muss das MD10 also 4 mal mit sich selbst malnehmen:
z.B.
AR1:
MD10*MD10 = MD11 (also X*X)
AR2:
MD10*MD11 = MD12 (nochmal *X)
AR3:
MD10*MD12 = MD13 (und nochmal *X)
schon hab ich das x^4, das muss ich dann mit dem faktor a multiplizieren, also a*x^4.
mein Ergebnis für x^4 steht ja im MD13, also folgt:
AR4:
a*MD13 = MD14 --> und schon hab ich den ersten teil mit ax^4 fertig (man muss sich notieren, 1.teilergebnis ist im MD14
und genauso muss man es dann mit bx^3, cx^2 usw. machen.
EDIT: die X^3 und x^2 muss du jetzt ja nicht mehr rechnen die stehen nämlich in MD12 und MD 11 ;)
die einzelnen teile fasse ich dann wieder zusammmen (wie auf meinem notizzettel mit den strichen im unteren teil) und rechne dann die einzelnen terme wieder aus, bis im letzen das ergebnis steht.
einfach mal versuchen, am besten auch auf nem Zettel, dann verliert man nicht den überblick....
--> danach nochmal kontrollieren ob alles stimmt und schon kann man genau wie mans aufgeschrieben hat alles in die ar-bausteine eingeben und ENTSPRECHEND KOMMENTIEREN ! das ist in dem fall das a&o !
nur so kann man nachvollziehen was man wo gerechnet hat.....
einfach mal probieren :-)
mfg
jan
-
Hallo Opajan,
leider habe ich in meinem Programm nur noch 800 Byte frei. Ich befürchte, dass ich mit den vielen notwendigen AR-Bausteinen mein Programm "zumache".
Noch unklar ist mir, wie Du die Werte -238; 69594; u. -31183 hochmathematisch für a; b; c,usw errechnet hast. Wie ich sehe, sind das die "of Parameters aus fit u. fit_Xhoch4, jedoch in den Stellen verändert.
Für einen Nichtmathematiker ist das doch etwas schwierig.
Gruß
Bruno
-
Hallo Bruno,
800byte frei......müsste so grob überschlagen reichen
zu den parametern:.....die bekomm ich von dem proggi gnuplot ausgespuckt, allerdings lauten die dann z.B. 0,007869E-6, das ist nicht anderes wie 0,0000000007869. Um diesen Wert in der easy einzugeben und möglichst viele kommastellen zu erhalten muss ich diesen wert ziemlich heftig multiplizieren z.b. mit 1000*1000*1000*1000. Dann bekomm ich den wert 7869 mit dem ich dann auch rechnen kann.
Aber hast schon recht.....ist nicht ganz einfach und ne kleine fummelei um die richtigen multiplikatoren zu finden......
mal sehen, vielleicht komm ich morgen dazu das mal mit der easy zu programmieren, heute schaff ichs nicht mehr....bin heute morgen früh losgeflogen und eben erst gelandet...(*gähn*)
mfg
jan
-
Hallo Jahn,
in der Zwischezeit habe ich mal die beiden Kurven mit Excel (Tabelle1) berechnet. Im Register (Grafik) findest Du den Plott.
Mit der x>4-Kurve kann ich ganz gut leben. Die Differenzen zwischen kW-Soll u. kW-Ist von 2,5 - 4,0 sind mit dieser Kurve schon sehr gut. Die Arbeit hat sich somit schon gelohnt u. ich habe auf meine alten Tagen nochmal einiges dazu gelernt.
Frage ist für mich: Wie Du die Festwerte berechnest u. welche Formel dahinter steckt, damit man auch für eine evt. weitere Anwendung diese lösen könnte.
Die Easy-Programmierung werde ich als nächsten Schritt angehen u. im Forum veröffentlichen.
Gruß
Bruno (Bär vom Allgäu)
-
Hallo Bruno,
wow nicht schlecht!......gefällt mir!
zu deiner frage:....also, welche formel genau dahinter steht weiss ich jetzt nicht, ich kann nur so viel sagen: das macht alles das proggi ;)
möglicherweise kann man da auch noch irgendwas drehen um noch bessere ergebnisse zu bekommen, aber mir reicht das immer in der "default-option".....
Also, das Programm "Gnuplot" bekommst du, wenn du einfach Gnuplot im Google eingibst, da gibts dann als suchergebnis "gnuplot homepage" und etwas weiter unten "Gnuplot-Grundkurs"
bei der homepage gehst du auf download und dann auf "Primary download site on SourceForge" . da musst du dann die win-version runterladen.
wie die sache mit der dateneingabe (nämllich über eine datei) funktioniert, und beispielauswertungen ist alles ganz gut im grundkurs beschrieben.....
einfach mal reinlesen, falls du noch fragen hast einfach wieder melden....
gruß
jan
-
Hallo Jan,
besten Dank für Deine Unterstützung.
Habe inzwischen gnuplot + Grundkurs auf meinem Rechner.
Will mich am WE nochmals damit beschäftigen. Finde allerding keine Musterkurve nur: plot sin(x)
Hast Du eine Datei z.B x>4 mit der Du gerechnet hattest. Könnte man Deine Eingabedatei bekommen?
Wo gibt man Anfang- u. Endwert der Kurve sowie die Steilheit ein?
Gruß
Bruno
-
hallo bruno,
jetzt hab ich doch gestern glatt vergessen, dir die beispieldateien anzuhängen...
aber jetzt:
es sind 2 dateien, die eine mit der endung .plt (da steht drin, welche kurvenart errechnet werden soll also x^2, x^3 usw.)
in der neu.dat befinden sich die werte deiner kurve in tabellenform
eine steilheit (also steigung) kannst du nur in einer linearen gleichung angeben (z.B. y=m*x+c) wobei das m in diesem fall die steigung ist.
in deinem fall, also einer kurve mit polynom gibt es quasi unendlich viele steigungen, nämlich an jedem punkt der kurve einen anderen.
berechnen tut sich die steigung glaube ich folgendermassen: m= (y2-y1) / (x2-x1) bin mir grad aber nicht ganz sicher, das letzte mal hatte ich das vor langer zeit in der schule....also nicht steinigen, wenns falsch ist :-[
gruß
jan
-
Hallo Jan,
inzwischen habe ich mich mit GNUPLOT beschäftigt u. auch mit Veränderung der Parameter die Kurve optimiert.
Anbei die Excel-Tabelle mit Grafik.
Ich wollte nun noch mit X³ das ganze rechnen, aber irgend etwas habe ich an meiner Programmänderung falsch gemacht. Die datei ist beigefügt. Evt. kannst Du diese mal überprüfen. Übrigens: Wie bringt man die Tabelle mit GNUPLOT auf den Drucker?
Gruß
Bruno
-
hallo bruno,
hm...die datei ist glaub ok, aber: ich vermute, daß deine .dat-datei nicht "neu.dat" heisst.
wenn deine datendatei einen anderen namen hat musst du ihn in der .plt-datei abändern.
hm....drucken.....hab ich jetzt so direkt noch nie gemacht......ich hab immer nen screenshot gemacht.... :-)
-
Hallo Jan,
ich habe für Kurve x³ die gleiche dat-datei "neu.dat" wie bei x>4.
Allerdings habe ich die xhoch3 PLT.Datei mit einem Text-Editor erstellt (xhoch4 verändert), der mir dann zunächst eine txt.Datei erstellt hat, die ich dann als .PLT umbenannt habe.
Wie erstellen Sie die PLT.Datei? Evt. können Sie mir ein Muster für xhoch2 und xhoch3 zusenden.
Gruß
Moser
-
Hallo Bruno,
also ich mach die Dateien auch im Editor und benenne sie anschliessend einfach um......hm....irgendwo ein Haken......
....versuchs mal mit meinen Dateien......au ja, die beiden Datein müssen im selben Ordner sein....
-
Hallo Jan,
danke für Deine beiden programme. Bei xhoch2 mußte ich noch auf die "neu.dat" umändern und gleich hat es funktioniert, auch das abspeichern.
Wieder was dazugelernt.
Evt. schreibe ich noch heute abend das xhoch4 in die Easy.
Gruß u. vielen Dank für Deine vorzügliche Hilfestellung.
Bruno
-
nichts zu danken, so ne kleine auffrischung hat mir auch mal wieder ganz gut getan......