Moin Moin,
da hab ich endlich mal eine Frage fürs Forum.^_^
>> Wie kompensiert man eine Messkurve mit einer Nullkurve? Lösung ok, oder gibt es elegantere Wege?
Also... mein Vorgänger hat mir ein Programm hinterlassen, welches intensiven Gebrauch von Sequenzstrukturen und lokalen Variablen macht.
Der Sinn des Programmes besteht darin, mit einem Ultraschallsensor den Abstand zu einer Messfläche aufzuzeichnen. Das Programm zeigt dann auch noch die Abstandskurve mit Absolutwerten an, was eigentilch keinen Sinnmacht, da es ja um die relative Änderung des Abstands geht (also erledige ich das gleich mit). Der Sensor wird dabei von einer Traverse über die Messfläche bewegt. Leider (und ich hab im Moment keine Lust das zu ändern) erfolgt die Bewegung und Messwertaufnahme in einer Forschleife. Der Sensor ruckelt also immer 3 mm vor und nimmt einen Wert auf.
Das große Manko hat sich allerdings jetzt erst gezeigt:
Die Traverse ist nicht optimal ausgerichtet oder verspannt eingebaut worden (ja da waren die firmen-eigenen Schlosser am Werk, frei nach dem Motto "viel Hebelarm hilft viel"). Die von mir aufgezeichnete Nullkurve zeigt einen reproduzierbaren Anstieg des Abstands auf dem ersten Meter des Messwegs, leider wurde vor lauter Sequenzrahmen und Variablen anscheinend vergessen einen Kompensation der Nullkurve in das Programm einzubauen.
So und hier komme ich dann ins Spiel...
Die Nullkurve muss von den eigentlichen Messkurven abgezogen werden.
Meine Idee sieht dann so aus: [list=1]
[*]Ich normiere meine Nullkurve auf Null, d.h. ich subtrahiere den ersten Messwert von allen Messwerten der Kurve.
Die normierte Kurve startet also im Nullpunkt und zeigt die relative Abstandsänderung (des Systems). Das speichere ich dann in einer Array-Konstanten ab.<>
[*]Dann normiere ich die Messkurven auf Null.<>
[*]Jetzt subtrahiere ich jeden Punkt meiner Messkurve mit dem entsprechenden Punkt der Nullkurve. Dann erhalte ich eine kompensierte, normierte Messkurve. Fertig.<>
[st]Bekanntlich sagt ein Bild mehr als tausend Worte, aber ohne ein bisschen Text wüsste ja auch Keiner was ich eigentlich will.
Um euch aber nicht mit dem Sequenzrahmen-Dschungel zu belästigen, hab ich das mal in ein einfaches Beispiel verpackt.
Links: Messkurve im Moment, Rechts: Messkurve wie sie eigentlich sein sollte
Die Messwerte werden im eigentlichen Programm innerhalb der Forschleife vom Sensor eingelesen, fürs Beispiel hab ich die Werte in ein Array gepackt.
"Messprogramm":
Kompensation[SubVI]:
Kompensationsprofil.vi (Größe: 21,15 KB / Downloads: 298)
Kompensation_SubVI_.vi (Größe: 39,24 KB / Downloads: 254)
So was meint ihr, kann man das so machen oder habt ihr einen bessere, intelligentere, einfachere, tollere, schönere, buntere Idee?
Gruß SeBa