Unsere Partner:

DIAdem-Forum.de Partner

DIAdem-Forum.de Partner

DIAdem-Forum.de Partner

DIAdem-Forum.de Partner






Stellenangebote:
Testingenieur (m/w) bei Healthcare CV
Planung und Durchführung von Komponenten- und Integrationstests
Siemens AG
Erlangen
Entwicklungsingenieur Messtechnik und Fahrzeugelektronik (m/w)
Planung und Durchführung von Projekten im Bereich NFZ-Messtechnik
MBtech Group GmbH Co. KGaA
Magstadt bei Sindelfingen
Getriebemechatroniker (m/w)
Sensorik - konstruktive Integration, Erstellung von Toleranzrechnungen
MBtech Group GmbH Co. KGaA
Fellbach bei Stuttgart
Entwickler für Mechatronikkomponenten in Automatgetrieben (m/w)
Konzeption elektrohydraulischer Steuereinheiten
MBtech Group GmbH Co. KGaA
Fellbach bei Stuttgart
Entwicklungsingenieur Getriebemechatronik (m/w)
Bearbeitung von Getriebe und Hybrid Aufgabenstellungen
MBtech Group GmbH Co. KGaA
Fellbach bei Stuttgart
Versuchsingenieur (m/w) Systemprüfstand elektrische Parkbremse
Erstellung, Durchführung und Auswertung von Versuchsprogrammen an Systemprüfständen
Continental AG
Frankfurt
Systemingenieur Fußgängerschutz / Pedestrian Protection System Engineer (m/w)
Bewertung von Styling-, Package- und Bauteilvarianten
EDAG GmbH Co. KGaA
Ingolstadt, München, Sindelfingen, Fulda
Systemingenieur Rückhaltesysteme / Restraint System Engineer (m/w)
Bewertung von Styling-, Package- und Bauteilvarianten, Versuchs- und Berechnungsplanung
EDAG GmbH Co. KGaA
Osnabrück, Ingolstadt, München, Sindelfingen, Fulda
Versuchsingenieur Betriebsfestigkeit (m/w)
Auswertung von Messdaten im Bereich Betriebsfestigkeit
MBtech Group GmbH Co. KGaA
Wörth, Untertürkheim
Applikationsingenieur Abgasnachbehandlung /-OBD Otto (m/w)
Applikation, Test und Validierung von Softwarefunktionen der Abgasnachbehandlung / - OBD
MBtech Group GmbH Co. KGaA
Fellbach
Applikationsingenieur Abgasnachbehandlung / SCR Dosiermodul (m/w)
Spezifikation, Applikation, Test und Validierung von Softwarefunktionen der Abgasnachbehandlung
MBtech Group GmbH Co. KGaA
Fellbach
Entwicklungsingenieur Fahrzeugapplikation Verbrennungsmotor (m/w)
Applikation, Test und Validierung von Motorsteuergerät-Funktionen auf den Gebieten Fahrbarkeit und Regelungssysteme
MBtech Group GmbH Co. KGaA
Fellbach

Stand: 19:00:35 19.05.2012



.
 
Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5

Fehlermeldung bei 'Spline-Interpolation
18.10.2010, 09:40
Beitrag #1
DIAdem-Version: 2010
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 2010
Fehlermeldung bei 'Spline-Interpolation

moin

ich hab mal wieder ein neues problem. ich habe eine kennlinie ... druck in abhängigkeit von der temperatur. nun möchte ich in einem zeitschrieb aus dem aktuellen temperaturwert den druckwert errechnen lassen. mein gedanke war eine splineinterpolation über die kennlinie mit einem stützstellenkanal, der in diesem fall dann meine ganze temperaturwerte (momentanwerte) enthält:

Code:
Call ChnSplineYCalc("[1]/Temperaturen_KL","[1]/Druck_KL","[1]/Temperaturen_Momentanwerte","/Spline_Druck_Momentanwerte","natural",0)

nun bekomme ich allerdings eine fehlermeldung: "Fehler:Werte des neuen x-Kanals ungeeignet nicht monoton." und da lautet meine frage selbstverständlich: warum dies? ich mein mir ist schon klar, dass meine momentanwerte nicht monoton steigend sind (temperaturen haben ja die angewohnheit zu schwanken). aber zumindest in LabVIEW war das doch nie ein problem. ich hab es auch mit allen anderen spline-varianten (parametrisch und nicht parametrisch) sowie einer linearen abbildung versucht ... leider immer wieder mit der gleichen fehlermeldung.
eine lösungsmöglichkeit wäre zwar, dass ich mir den kanal durch ordnen künstlich monoton steigend mache und dann jedesmal mit dem momentanwert der temperatur den geordneten kanal nach übereinstimmungen durchsuche ... aber das macht ja einen riesigen rechenaufwand notwendig.

vielleicht kennt ja einer dieses problem und hat ne lösung für mich.

mfg daniel

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren



18.10.2010, 13:54 (Dieser Beitrag wurde zuletzt bearbeitet: 19.10.2010 10:36 von kwakz.)
Beitrag #2
DIAdem-Version: 2010
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 2010
RE: Fehlermeldung bei 'Spline-Interpolation

so hier mal ein lösungsvorschlag von mir, falls sich keine elegantere lösung finden lässt:

ich habe mir einfach zwei hilfskanäle mit der länge 1 generiert. nun lade ich in einer for-schleife einfach jeden temperaturwert, für den ich ein interpoliertes ergebnis haben will, in hilfskanal nummer 1. nun benutze ich eine spline-interpolation für diesen einen wert und lasse das ergebnis in hilfskanl 2 schreiben. diesen wert lese ich zum ende eines jeden schleifendurchlaufs aus und hänge ihn an meinen ergebniskanal. der code sieht dann in etwa so aus:

Code:
Call chnAlloc("SplineHilfe1",1)
Call chnAlloc("SplineHilfe2",1)

for counti=1 to chnlength("[1]/Temperaturen_Momentanwerte")
    chd(1,"[1]/SplineHilfe1")=chdcounti,"[1]/Temperaturen_Momentanwerte")
    Call ChnSplineYCalc("[1]/Temperaturen_KL","[1]/Druck_KL","[1]/SplineHilfe1","/SplineHilfe2","natural",0)
    chd(counti,"[1]/Spline_Druck_Momentanwerte")=chd(1,"[1]/SplineHilfe2")
next

mfg daniel

Edit: also wirklich empfehlenswert ist die variante nicht ... funktioniert zwar, aber ich habe selten eine so langsame berechnung gesehen. bei knapp 57000 werten für Temperaturen_Momentanwerte und einer berechnung für 4 kennlinien benötigt mein rechner ungefähr ne stunde (ok ist nur nen laptop, aber auch nicht unbedingt der langsamste)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2010, 06:47
Beitrag #3
DIAdem-Version: 10.2, 11.1, 2010 und auf alten CD's runter bis 3.0
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 1996
RE: Fehlermeldung bei 'Spline-Interpolation

Hallo Daniel,
werden die Daten mit DIAdem erfasst? Hier gibt es die Möglichkeit einer freien Linearisierung (in DIAdem 2010 noch einmal verbessert).
Ist eigentlich etwas für die Wunschliste Smile
Gruß
Bruno

Diadem 2010
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.10.2010, 08:31
Beitrag #4
DIAdem-Version: 2010
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 2010
RE: Fehlermeldung bei 'Spline-Interpolation

moin

@bruno: nein werden sie leider nicht. die daten werden per datenlogger erfasst und gespeichert und erst anschließend offline in DIAdem aufgearbeitet. außerdem hab ich leider auf die datenerfassung selber keinen einfluss, sondern kann nur mit dem arbeiten, was ich vorgesetzt bekomme ;-)

aber das kann ruhig auf die wunschliste für die nächste version ... in LabVIEW funktioniert die das ja schließlich auch einwandfrei

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.10.2010, 06:53
Beitrag #5
DIAdem-Version: 10.2, 11.1, 2010 und auf alten CD's runter bis 3.0
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 1996
RE: Fehlermeldung bei 'Spline-Interpolation

Hallo Daniel,
ist über Carpe DIAdem an die Entwicklung weitergeleitet. Er hat auch einen Hinweis auf das Beispiel "Linearisierung über Wertetabelle" gegeben. Das könnte für Dich interessant sein...
Gruß
Bruno

Diadem 2010
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.10.2010, 08:10
Beitrag #6
DIAdem-Version: 2010
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 2010
RE: Fehlermeldung bei 'Spline-Interpolation

vielen dank für's weitergeben und für den hinweis. allerdings bin ich hier mit version 10.2 noch etwas rückständig

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.11.2010, 13:05 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2010 13:09 von kwakz.)
Beitrag #7
DIAdem-Version: 2010
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 2010
RE: Fehlermeldung bei 'Spline-Interpolation

moin

dieser elend langsame algorithmus hat mich jetzt doch ganz schön genervt ... also hab ich mir was neues überlegt. und siehe da: das ganze benötigt nur einen bruchteil der zeit. also stell ich das ganze hier mal vor, falls jemand anderes mal noch auf die idee kommen sollte, ein ähnliches problem lösen zu wollen:

Code:
Call ChnLinGen("[3]/SplineIndizes",1,chnlength("[3]/Zeitkanal"),chnlength("[3]/Zeitkanal"))
Call ChnMultipleSort("[3]/Temperaturen_Momentanwerte","[3]/SplineIndizes",0,0)  
for counti=1 to chnlength("[3]/sortedX")                                                                                
    if IsNull( chdx(counti,CNo("[3]/sortedX")) ) then
       chdx(counti,CNo("[3]/sortedX"))=10000
    end if
next
Call ChnPropSet(CNo("[3]/sortedX"),"length",chnlength("[3]/Zeitkanal"))
Call ChnCharacter(CNo("[3]/sortedX"))
Call ChnMapLinCalc("[3]/Temperaturen_KL","[3]/Kennlinie 1","[3]/sortedX","SplineKL1",0,"const. Value",NoValue)
for counti=1 to chnlength("[3]/Zeitkanal")
     index=chd(counti,"[3]/SortedY1")
     chdx(index,CNo("[3]/Spline_Druck_Momentanwerte"))=chd(counti,"[3]/SplineKL1")
next

zur erklärung: zunächst erzeuge ich mir einen kanal, der einfach nur die zahlen von 1 bis x enthält ... mit der länge, die mein ergebniskanal einmal haben soll.

Code:
Call ChnLinGen("[3]/SplineIndizes",1,chnlength("[3]/Zeitkanal"),chnlength("[3]/Zeitkanal"))

anschließen sortiere ich meinen kanal mit den momentanwerten der temperatur der größe nach:

Code:
Call ChnMultipleSort("[3]/Temperaturen_Momentanwerte","[3]/SplineIndizes",0,0)

dabei wird dann auch gleich mein kanal mit den indizes mitsortiert, und zwar nach dem selben muster, wie der temperaturkanal. somit erhalt ich mir die information über die richtige reihenfolge der temperaturen. die dabei entstehenden ergebniskanäle tragen die namen sortedX (temperaturen) und sortedY1 (indizes). alle NoValues werden bei dieser sortierung automatisch ans ende des ergebniskanals geschoben.
anschließend ersetze ich alle NoValues in meinem sortierten kanal durch einen wert, der außerhalb des zu erwartenden wertebereichs liegt. dies geschieht, weil der anschließende befehl zu linearen abbildung scheinbar nicht mit kanälen klarkommt, die novalues enthalten. allerdings können werte, welche außerhalb des wertebereichs liegen und damit extrapoliert werden müssen, automatisch im ergebniskanal durch NoVaues ersetzt werden ... und somit bekomme ich am ende wieder an den richtigen stellen meine NoValues.
ich habe mich an dieser stelle für den wert 10000 entschieden, da ich hier mit wassertemperaturen arbeite und ein solcher wert in der realität wohl recht unwahrscheinlich ist ;-)

Code:
for counti=1 to chnlength("[3]/sortedX")                                                                                
    if IsNull( chdx(counti,CNo("[3]/sortedX")) ) then
       chdx(counti,CNo("[3]/sortedX"))=10000
    end if
next
Call ChnPropSet(CNo("[3]/sortedX"),"length",chnlength("[3]/Zeitkanal"))
Call ChnCharacter(CNo("[3]/sortedX"))

nun kommt die eigentliche interpolation: ich verwende hier eine lineare abbildung, weil mir das von der genauigkeit her einfachn reicht ... und schnell ist das ganze auch noch.

Code:
Call ChnMapLinCalc("[3]/Temperaturen_KL","[3]/Kennlinie 1","[3]/sortedX","SplineKL1",0,"const. Value",NoValue)

wie schon beschrieben werden hier alle zu extrapolierenden werte im ergebnis durch NoValues ersetzt.
abschließend muss der ergebniskanal nur noch in der richtigen reihenfolge wieder zusammengebaut werden. dazu benutze ich meinen am anfang mitsortierten indizeskanal:

Code:
for counti=1 to chnlength("[3]/Zeitkanal")
     index=chd(counti,"[3]/SortedY1")
     chdx(index,CNo("[3]/Spline_Druck_Momentanwerte"))=chd(counti,"[3]/SplineKL1")
next

es gibt sicher noch wesentlich elegantere algorithmen ... aber der hier beschriebene funktioniert (und das in einer annehmbaren zeit).

mfg daniel

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Fehlermeldung!? nitni 2 337 18.02.2011 14:07
Letzter Beitrag: nitni
  Fehlermeldung bei GraphObjClose tommy 3 475 17.11.2009 12:49
Letzter Beitrag: Carpe_DIAdem
  Master-Layout Fehlermeldung iDänce 3 753 14.07.2009 06:36
Letzter Beitrag: Sagi
  Fehlermeldung in AutoSequenz AUT beim Befehl GHdSep Hoffi 4 839 27.05.2009 18:00
Letzter Beitrag: Otmar Foehner

Gehe zu: