Hallo Leute, ich bin gerade dabei in meinem Praktikum eine Motorsteuerung zu untersuchen. Bzw. um genauer zu sein: Das Steuersignal des Motors. Ziel des Praktikums ist es anhand des Steuersignals zu erkennen welcher Motor verbaut ist und in welcher Phase sich dieser befindet (Die Motoren haben immer bestimmte Drehzahl Abläufe. Das ganze wird in der Automatisierungstechnik eingesetzt). Eine typische Kurve mit den einzelnen Segmenten habe ich euch angehängt. Kurzum: Wir möchten folgendes Ermitteln: 1.) In welcher Phase befindet sich die Motorsteuerung. (Welches Segment) 2.) Welche Motorsteuerung wird angewendet Zu Punkt 1.) Um zu wissen in welcher Phase (Segment) wir uns befinden, benötigen wir nun einen Algorithmus, der verschiedene Segmente innerhalb des Signals erkennt (Bild 2 Messkurve_segmente). Dann können wir viele Motordaten rein setzen und hoffentlich die verschiedenen Muster erkennen. Frage: Welcher Algorithmus kann sowas? Wir haben uns schon ein bisschen mit Algorithmen auseinander gesetzt. Zum erlernen der verschiedenen Segmente sind wir auf die Karhunen-Loeve-Transformation (KLT) gestoßen. Frage: Ist die Detektion verschiedener Segmente mit der KLT möglich? Zu Punkt 2.) Im zweiten Schritt wollen wir anhand der bekannten Segmente, die unsere Motoren haben, erkennen welcher Motor eingesetzt wird. Da dachten wir an die Korrelation. (Wir setzen die verschiedenen Segmente zusammen und schauen in Echtzeit welches Segment dazu passt). Dabei wissen wir nicht in welchem Segment sich der echte Motor befindet. Frage: Wenn ich nun die Korrelation mache, bekomme ich irgendwelche Zahlenwerte. Wie kann ich das ganze normieren? Sodass bei identischem Signal (zweimal die gleiche Messkurve) am optimalen Punkt einen 1 herauskommt? Ich bekomme immer Werte mit 20000 Frage: Gibt es elegantere Methoden als die Korrelation um herauszufinden ob es Euch schon mal vielen Dank für eure Unterstützung! Ich hoffe ich konnte mein Problem einigermaßen veranschaulichen. Falls nicht, fragt gerne nochmal nach. Viele Grüße, Rainer
sorry...oben ist mir ausversehen der Satz abgehakt worden... Hier nochmal die letzte Frage: Frage: Gibt es elegantere Methoden als die Korrelation um herauszufinden ob es sich um dieselbe Segment-Reihenfolge handelt? Danke euch und viele Grüße, Rainer
Bei KLT muss ich passen, aber die Korrelation setzt definitiv eine Normierung des Timings der einzelnen Segmente voraus. Ich würde das ganze anders angehen: Die Signale mehrfach Differenzieren, dannach können mithilfe von Nullstellen in den Verschiedenen abgeleiteten Signale die Segmente erkannt werden. Dannach die Segmentbereiche 3 Werte zuweisen: Konstant [Negativ/Positiv], Konstant Null, X [Alles andere]. Wenn du das dann Tabellarisch vergleichst müsste man die verschiedenen abläufe gut zurotnen können. Signal: X | + | + | X | 0 | 1. Abl: X | 0 | 0 | X | 0 | 2. Abl: + | 0 | 0 | - | 0 | So als Beispiel für dein Signal. Vllt hilft dir das als Ansatz.
Hi Sly_marbo, danke für den Ansatz. Die Steigung hatten wir auch schon auf dem Schirm. Wir werden den Ansatz mit nem Python Programm mal noch genauer anschauen. Frage: Wie würde den eine Normierung code-Technisch aussehen? Etwas so? y_norm = (y-mean(y))/std(y) ?
Ja das kann man so machen. Ich denke aber nicht das die Beträge deiner Y-Werte das Problem bei der Korrelierung sind. Vielmehr musst du die Längen der einzelnen Segmente vergleichbar (-Normiert) bekommen.
irgendwie klappt das ganze mit der Korrelation nicht. Ich hab jetzt mal in einem ersten Versuch probiert das gesamte Signal (inkl. aller Segmente) mit demselben Signal zu korrelieren und hab selbst bei der Normierung mit y=(y-mean(y))/std(y) keine 1 als Maximum erhalten sondern eine 2000...weiß jemand was da noch schief laufen könnte?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.