2-dimensionales Kennfeld

Günni1977

Level-1
Beiträge
232
Reaktionspunkte
25
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle,

ich möchte gern aus einem 2-dimensionalem Kennfeld (z.B. 10 Spalten, 10 Zeilen) einen Wert berechnen lassen. D.h., ich müsste bei Zwischenwerten jeweils über die x-Achse und über die y-Achse zwischen den Werten interpolieren.

Als x-Achse habe ich z.B. eine Motordrehzahl und als y-Achse nen Pedalwert. Abhängig von beiden Größen muss nun ein Mindestdruck anstehen. Dafür habe ich ne S7 315-2DP/PN. Die Kennfeldeingabe erfolgt über ein MP277.

Gibt es für sowas schon Lösungsansätze oder Vorlagen, die ich verwenden oder ausbauen kann?

Danke schonmal.
 
Lösungsansatz:

____30% 40%
60% 5,5 5,7
70% 5,8 6,1

Dies ist der Ausschnitt der zu betrachten ist wenn x zB 35% ist und y zB 62%.

Dann rechnest Du für
Yu= (35%-30%)*(5,7-5,5)+5,5
Yo= (35%-30%)*(6,1-5,8 )+5,8

und nun

p= (62%-60%)*(Yo-Yu)+Yu

% heisst Hundertstel.

Sollte so klappen....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, danke.
Aber ich müsste dazu noch sagen, dass mein Problem ist, das ganze zu organisieren in einem oder mehreren DBs z.B. und dann die 8 Werte, die ich ja brauche, entsprechend "rauszufiltern". Bin nicht wirklich fit in SCL oder indirekter Adressierung.

Und weil ich noch keine Idee habe, wie ich die Werte, die ich zum Interpolieren brauche, überhaupt herausfiltere, weiß ich auch nicht, wie ich meine Daten am besten organisieren soll, sodass alles weitere dann möglichst einfach wird...
 
Hallo,
anscheinend hat Borromeus verstanden, was du vorhast - ich noch nicht ...
Willst du feststellen, ob eine (aufgezeichnete) Kurve (oder eine aktuelle Werterfassung) einen vordefinierten Bereich korrekt durchläuft ?

Gruß
Larry
 
Hallo,
anscheinend hat Borromeus verstanden, was du vorhast - ich noch nicht ...
Willst du feststellen, ob eine (aufgezeichnete) Kurve (oder eine aktuelle Werterfassung) einen vordefinierten Bereich korrekt durchläuft ?

Gruß
Larry

Nein. Ich hab ne Tabelle mit den Achsen "Drehzahl" und "Pedalwert" z.B. als 10x10-Feld.
Also gibt es zu jedem Paar Drehzahl/Pedalwert einen Eintrag in der Tabelle. Dieser stellt einen Mindest-Druck dar. Nun fortlaufend anhand einer Ist-Drehzahl und eines Ist-Pedalwertes der entsprechende Ist-Mindest-Druck ermittelt werden.
D.h. ist muss ständig mein Feld durchsuchen, wo bin ich, interpolieren über beide Achsen und meinen Mindest-Druck zur Grenzwertüberwachung aus dem Feld ermitteln.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:confused: ... das heißt, du hast insgesamt 100 Werte wo du kontrollieren willst/mußt, ob du dich bei einem "in der Nähe befindest" bzw. welches der nächste Wert ist ...?

Das wäre dann auf jeden Fall ein Ding für SCL ... ich denke, das in AWL lösen zu wollen würde zumindestens sehr unübersichtich und schwer nachvollziehbar werden ...

Gruß
Larry
 
Glaube nicht, dass das so tragisch ist
die o.a. Formel rechnet das ohnehin aus....

Wie kommt man zu den Werten?

Wenn der DB so aufgebaut ist:

DBD0:X0Y0 ...Wert für X=0%, Y=0%
DBD4:X10Y0...Wert für X=10%, Y=0%
DBD8:X20Y0...Wert für X=20%, Y=0%
.
.
DBD36:X100Y0...Wert für X=100%, Y=0%
DBD40:X0Y10...
.
usw
der Wert 5,5 aus dem obigen Beispiel wäre an Doppelwortadresse:
(ABRUNDEN (x-Wert / 10) + 10x(ABRUNDEN (y-Wert / 10))) x 4 (4byte= 1 Doppelwort)
der Wert 5,7 aus obigen Beispiel
(ABRUNDEN (x-Wert / 10)+1 + 10x(ABRUNDEN (y-Wert / 10))) x 4 (4byte= 1 Doppelwort)
der Wert 5,8 aus obigen Beispiel
(ABRUNDEN (x-Wert / 10) + 10x(ABRUNDEN (y-Wert / 10))+1) x 4 (4byte= 1 Doppelwort)
der Wert 6,1 aus obigen Beispiel
(ABRUNDEN (x-Wert / 10)+1 + 10x(ABRUNDEN (y-Wert / 10))+1) x 4 (4byte= 1 Doppelwort)

Kann sein, dass da noch ein kleiner Fehler ist, aber vom Prinzip kann man die Werte so aufspüren und einfach ausrechnen.
Aber klar, in 5min ist es nicht erledigt, aber in ein paar wenigen Stunden glaub ich schon.


Edit: ich habe jetzt allerdings angenommen, dass die Werte in 10% Schritten vorliegen... wenn das nicht so ist ist es natürlich umfangreicher weil die Berechnung nicht klappt.
 
Zuletzt bearbeitet:
:confused: ... das heißt, du hast insgesamt 100 Werte wo du kontrollieren willst/mußt, ob du dich bei einem "in der Nähe befindest" bzw. welches der nächste Wert ist ...?

Das wäre dann auf jeden Fall ein Ding für SCL ... ich denke, das in AWL lösen zu wollen würde zumindestens sehr unübersichtich und schwer nachvollziehbar werden ...

Gruß
Larry

Ja, so ähnlich. Wenn ich aber zwischen den Werten bin, muss ich dann auch noch interpolieren.
Also mit dem Beispiel ähnlich wie von borromeus:

____10% 20%
50% 4,2 4,8
60% 5,2 6,2

bei x=15 und y=55 kommt halt meine ich 5,1 raus. Also muss ich erstmal wissen, wo ich bin? (x-Achse zw. 10% und 20%; y-Achse zw. 50% und 60%)
Dann muss ich meine 4 Werte entsprechend den Achsen ermitteln (4,2 4,8 5,2 6,2). Und am Ende noch mit Formeln wie von borromeus meinen Wert berechnen.
 
Edit: ich habe jetzt allerdings angenommen, dass die Werte in 10% Schritten vorliegen... wenn das nicht so ist ist es natürlich umfangreicher weil die Berechnung nicht klappt.

Die Werte werden wohl nicht in festen Schritten vorliegen, sondern sind flexible.
Es werden vielleicht mehrere Kennfelder für verschieden Größen...

Na mal schaun. Im Moment ist noch nix festes geplant, es interessiert mich grad nur, welcher Aufwand dahinter stecken wird. Und wieder einiges zu lernen gibt's da für mich sicher auch... ;)
 
Wenn das flexibel ist, geht es zB so:
in einer Schleife die x-Achse durchzählen bis Wert überschritten ist, dann die y-Achse gleichermassen.
diese zwei Werte machen dann wieder die Koordinaten für die vier Adressen, siehe oben.

lG
Karl
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... Aber klar, in 5min ist es nicht erledigt, aber in ein paar wenigen Stunden glaub ich schon ...

Deshalb ja von mir der SCL-Vorschlag. Da wäre das (vor allem wegen der Schleife und dem Suchen nach den jeweiligen Eckwerten) schon eher in einigen Minuten wie in mehreren Stunden gemacht ... Und natürlich könnte man die von dir vorgegebene Formel da auch genauso umsetzen ... :rolleyes:

Gruß
Larry
 
Zurück
Oben