Ich möchte mit einem Präprozessor eine Art der Datenrekonstruktion für fehlerhaft gesendete Daten realisieren, um angeschlossenen Endgeräten eine Rekonstruktion bzw. ein Ausblenden zu ersparen, sodass diese ihre einfach Filtersoftware nutzen können. Bei den meisten Endgeräten ist es nicht möglich, die Daten als falsch zu markieren und sie besitzen ausser dem Filter keine Erkennung. Die Datenaussetzer kommen von defekten Messtellen / Leitungen der erzeugenden Einheit die produktionsbedingt vorliegen und interpoliert werden. Das Problem ist, dass man nicht einfach garnichts senden kann, sondern dem nachfolgenden System einen Wert geben muss, weil dieser permanent taktet und es in die Filterkette läuft. Das bisherige Verfahren war, einfach den alten Wert zu halten, bis ein gültiger neuer kommt, was bei schnell ändernden Daten und aufeinander folgenden Fehldaten zu ziemlichen Sprüngen führt. Als Beispiel sei eine Rampe und ein Rechteck gezeigt: REAL 1 2 3 4 5 6 7 8 (Physik) DATA 1 2 3 x x 6 7 8 (gelesen) REKO 1 2 3 3 3 6 7 8 (gesendet) Das Ergebnis der Rampe führt zu einem Sprung und einem schwingenden Filter, weil die Verbraucher die "3,6" sehen und falsch und stark überschwingen. Bei dem Rechteck wiederum kommt es zu einer künstlichen Kante: REAL 1 1 1 1 9 9 9 9 DATA 1 1 1 1 x x 9 9 REKO 1 1 1 1 1 1 9 9 Ich würde das gerne interpolieren und dabei Kanten erhalten, wenn möglich. Wie könnte man das lösen? Ich habe die Möglichkeit, bis zu 4 Daten zu puffern und zu betrachten, bevor ich ausgeben muss. Damit könnte man eine Zeile mit 9 Daten in einen Digitalfilter schieben. Der muss aber mit wenigen steps entscheiden, was ausgegeben wird. Ich bräuchte so eine Art "analogen Mehrheitsentscheider" der Löcher stopfen kann und dabei die Steigungen berücksichtigen kann. Kennt dazu jemand Literatur? Ich brauche eine Umsetzung für einen FPGA, weil die Daten mit 80 MHz kommen und das auf 7 Leitungen.
Das erste was mir einfällt, ist eine Art "Filter" der sich einfach die Daten anschaut und sie nach gewissen Regeln ersetzt. Z.B. Deine "Rampe" - wobei vorausgesetzt wird, dass dieser spezielle Sensor immer nur Rampen sendet. REAL 1 2 3 4 5 6 7 8 (Physik) DATA 1 2 3 x x 6 7 8 (gelesen) REKO 1 2 3 4 5 6 7 8 (gesendet) Einfach lineare Interpolation. In dem Rechteckfall ähnlich, wobei Du nur herausfinden musst, was das geringere Übel ist resp. die optimale Position für die "gefakte" Flanke und wie oben immer vorausgesetzt wird, dass dieser Sensor immer Rechtecke sendet Schwieriger wird es wenn auf einer Leitung mehrere grundverschiedene Signale, also mal ein Sinus und mal ein Rechteck kommen. Mann müsste mal mehr über das System und die Sensoren wissen - bzw. Du müsstest einfach mal für Dich Material zusammenstellen.
Berndt Eggebrecht schrieb: > weil die Daten mit 80 MHz kommen und das auf 7 Leitungen. Ist das 1 einziger 7-Bit Vektor? > Das bisherige Verfahren war, einfach den alten Wert zu halten, bis ein > gültiger neuer kommt, Du hast also eine Information, ob der Vektor "gültig" ist? > Ich habe die Möglichkeit, bis zu 4 Daten zu puffern und zu betrachten, > bevor ich ausgeben muss. Du kannst dir also 4 Takte Latency erlauben? Dann sieht das irgendwie nach (linearer) Interpolation aus. Aaaaber: Wieviele "Daten" sind hintereinander maximal ungültig? Bei mehr als 3 wird kritisch, denn "in die Zukunft sehen" geht nur bei periodischen Signalen... Zwei grundlegende Fragen: Warum ist das Signal gestört? Und warum reagiert der Regler so bissig darauf?
:
Bearbeitet durch Moderator
Leider kann da allesmögliche kommen. Die Rampen sind nur Beispiele von dem, was theoretisch übertragen werden kann. Die Sensorik liefert durchaus auch welliges und rauscht. Das Rauschen wird später bekämpft, nur muss dazu einigermassen sinnvoll interpoliert werden. Man könnte jetzt Fallunterscheidungen machen, aber da kommen viele Kombinationen zusammen. Was vielleicht noch erwähnt werden kann, ist, dass es ein Zeitverhalten gibt. Die Sensorik liefert ein leicht zeitversetztes Signal derselben Situation. Aufgrund von Relaxationsverhalten sind vormals gestörte Leitungen dann wieder i.O. Es entsteht damit ein 2D-Datenfeld, in dem einzelne Datenpunkte fehlen, teilweise Linien in der Zeitachse fehlen. Man könnte mit etwas Geschick die Folgewerte nutzen, um Informationen zu gewinnen - z.B. so: 3 3 3 3 x x x 7 7 7 4 4 4 4 4 x x 8 8 8 5 5 5 5 5 5 5 9 9 9 Man kann nun annehmen, dass der Sprung in der ersten Zeile durchaus kurz vor der 7 war - im einem anderen Fall könnte es auch kurz nach der letzten 3.
Lothar M. schrieb: > Ist das 1 einziger 7-Bit Vektor? Nein es sind 7 vollkommen unabhängige Daten. Ich brauche die Schaltung also 7mal. Die Daten haben praktisch nichts miteinander zu tun. Die Bitbreite sind 18 Bit vom ADC.
Der letztere Fall (Kante) ist ohne zusätzliche Informationen meines
Erachtens nicht lösbar. Denn aus:
DATA 1 1 1 1 x x 9 9
könnte man rekonstruieren:
DATA 1 1 1 1 1 1 9 9 oder
DATA 1 1 1 1 1 9 9 9 oder
DATA 1 1 1 1 9 9 9 9
und man weiß nicht, welcher der drei Fälle tatsächlich vorgelegen hat.
Man könnte zwar zum Beispiel 1 1 1 1 3 6 9 9 daraus machen (siehe auch
unten), nur hat man dann eben auch keine saubere Kante mehr.
Allerdings mag es mit zusätzlicher Information anders aussehen. Wenn man
erwarten kann, dass ein Rechtecksignal mit einer bestimmten Frequenz
vorliegt, dann kann man berechnen wann die nächste Signalflanke erfolgen
müsste. Damit könnte man die Kante nachträglich an der Stelle wieder
"einbauen", wo sie hingehört.
Im Fall der Rampe wäre es so:
> DATA 1 2 3 x x 6 7 8 (gelesen)
6 minus 3 ergibt 3. 3 geteilt durch drei (drei Schritte von der 3 bis
zur 6) ergibt 1. Somit ist pro fehlendem Datenwert jeweils um diesen
berechneten Wert hochzuzählen, ausgehend vom letzten gültigen Datenwert.
Also linear interpoliert eben.
:
Bearbeitet durch User
Berndt Eggebrecht schrieb: > Leider kann da allesmögliche kommen. Äh ja. Das macht die Sache natürlich total viel einfacher. ;-) Vielleicht für den Anfang mal linear interpolieren und sehen, wie weit man damit kommt?
Die andere Möglichkeit wäre eine (lineare) Extrapolation. Du nimmst die vorige Steigung und machst mit dieser weiter, bis wieder ein gültiger Wert kommt. Dumm wäre dann nur, wenn du dabei dann übers Ziel "hinausschießt"... Und nach wie vor unklar ist mir, wie du die ungültigen 18-Bit-Werte erkennst.
Berndt Eggebrecht schrieb: > Leider kann da allesmögliche kommen. Die Rampen sind nur Beispiele von > dem, was theoretisch übertragen werden kann. > Die Sensorik liefert durchaus auch welliges und rauscht. Das Rauschen > wird später bekämpft, nur muss dazu einigermassen sinnvoll interpoliert > werden. Das macht die Sache schwierig. Gibt es überhaupt irgendein Modell des Dings, an dem die Sensoren hängen? > Man könnte jetzt Fallunterscheidungen machen, aber da kommen viele > Kombinationen zusammen. Das könnte sein. Es gibt durchaus Situationen die sich nicht durch einfache, geschlossene Beschreibungen modellieren lassen. In dem Fall muss man eben ein komplexes Modell mit vielen Fallunterscheidungen erstellen. (Ich erinnere mich an eine Erklärung aus der Graphentheorie, die viele Einzelfälle nannte und meine Verwunderung darüber, wie denn der arme Mensch festgestellt hat, dass er alle Fälle erfasst hat). Danach kann man evtl. vereinfachen. > Was vielleicht noch erwähnt werden kann, ist, dass es ein Zeitverhalten > gibt. Die Sensorik liefert ein leicht zeitversetztes Signal derselben > Situation. Aufgrund von Relaxationsverhalten sind vormals gestörte > Leitungen dann wieder i.O. > > Es entsteht damit ein 2D-Datenfeld, in dem einzelne Datenpunkte fehlen, > teilweise Linien in der Zeitachse fehlen. > > Man könnte mit etwas Geschick die Folgewerte nutzen, um Informationen zu > gewinnen - z.B. so: > > > 3 3 3 3 x x x 7 7 7 > 4 4 4 4 4 x x 8 8 8 > 5 5 5 5 5 5 5 9 9 9 > > Man kann nun annehmen, dass der Sprung in der ersten Zeile durchaus kurz > vor der 7 war - im einem anderen Fall könnte es auch kurz nach der > letzten 3. Nun, das ist - jedenfalls meiner Meinung nach - kein Problem das man mit einem kurzen Tip aus dem Forum erschlagen kann. Es wird von Vorteil sein, wenn Du uns eine recht detaillierte Beschreibung gibst; bis jetzt beschränkt sich das ja auf eine numerisches Darstellung. Auch wenn Du uns das hier nicht öffentlich machen willst, solltest Du Dir, wie ich schon heute Nacht erwähnte, für Dich selbst eine vollständige Analyse durchführen. Literaturtips kann ich leider nicht geben. Die Suchworte sind Dir, wenn ich das recht sehe, bekannt. Mir geht die ganze Zeit Kalman durch den Kopf. Weiss nicht ob das wirklich passt. Aber dafür brauchst Du jedenfalls ein Modell der Mimik von der die Sensordaten abgenommen werden. "Dead Reckoning", Interpolation, Filter sind durchaus passend, meine ich. Schade, dass ich nicht viel helfen kann. Vielleicht fällt noch jemandem was ein. Viel Erfolg
Offen gesagt, würde ich vermutlich einige Energie darein stecken, die Sensoren, die Verbindungen zu verbessern und/oder die Verarbeitung im Empfänger, die wenigstens Ausfälle behandeln können sollte. Vermutlich hast Du das aber schon probiert und/oder es geht aus irgendeinem Grund nicht (sowas scheinst Du mir ja schon angedeutet zu haben).
Bayes habe ich ganz vergessen. Damit gehen auch Parameterschätzungen. Aber wie gesagt: Meiner Meinung nach läuft ohne Modell gar nichts. Eben auch der Leitungen und der Störungen darauf.
Klaus schrieb: > Offen gesagt, würde ich vermutlich einige Energie darein stecken, die > Sensoren, die Verbindungen zu verbessern und/oder die Verarbeitung im > Empfänger, die wenigstens Ausfälle behandeln können sollte. Sehe ich auch so. Eine eventuell schlecht geschirmte Leitung sollte man nicht durch Purzelbäume schlagen in der Software korrigieren.
Lothar M. schrieb: > Und nach wie vor unklar ist mir, wie du die ungültigen 18-Bit-Werte > erkennst. Es gibt zwei Methoden: Einmal kommt aus einer Kalibrierung ein Wert der sagt, ob die Leitungen übersteuert sind, ob sie defekt sind und ob daher Unsinn kommt, und andermal muss ich das anhand von Datensprüngen selber erkennen. Kriterien muss ich ausarbeiten. Klaus schrieb: > Gibt es überhaupt irgendein Modell des > Dings, an dem die Sensoren hängen? DA bin ich dran :-) Klaus schrieb: > "Dead Reckoning", > Interpolation, Filter sind durchaus passend, meine ich. Danke für das Stichwort. Das sehe ich nach. Klaus schrieb: > Offen gesagt, würde ich vermutlich einige Energie darein stecken, die > Sensoren, die Verbindungen zu verbessern Das haben wir nicht in der Hand. Kommt vom Zulieferer. Technologisch ist das auch ziemlich ausgereift. Klaus schrieb: > Bayes habe ich ganz vergessen. Damit gehen auch Parameterschätzungen. Danke. Auch das werde ich nachsehen. Klingt super!
Berndt Eggebrecht schrieb: > Klaus schrieb: >> Offen gesagt, würde ich vermutlich einige Energie darein stecken, die >> Sensoren, die Verbindungen zu verbessern > > Das haben wir nicht in der Hand. Kommt vom Zulieferer. Technologisch ist > das auch ziemlich ausgereift. Nun, offen gesagt, empfinde ich diese Aussage, in Verbindung mit dieser: > Die Datenaussetzer kommen von defekten Messtellen / Leitungen ... (aus Deinem ersten Posting) als widersprüchlich; zumindest erklärungsbedürftig. Selbst wenn man keine grundsätzlichen Defekte unterstellt, so würde ich von einem System erwarten, dass es in sich auf Fehler vorbereitet ist wenn sie Problem aufwerfen und Du nicht vor solchen Aufgaben stehst. Es würde mich doch ein wenig interessieren, wie sich diese beiden Aussagen miteinander vereinbaren lassen. Wie auch immer: Viel Erfolg.
Es handelt sich um eine Art Detektor. Dieser ist technologisch bedingt nicht perfekt. Es gibt sowohl Sensitivitäts- als auch Halbleiterartefakte. Da die Wafer sehr gross sind, ist es praktisch nicht möglich, perfekte Sensorik zu betreiben. Dies ist deshalb auch nicht nötig, weil es auch "Überbelichtung" = "sparking" gibt, die Daten dynamisch runinieren. Die Kriterieren, wann ein Datum ok ist, werdne letztlich feststehen, sodass ich in meinem Teil nur die Info bekomme: "Datum ok" / "Datum kaputt". Dann soll es interpoliert / rekonstruiert werden. Inbegriffen ist auch noch eine weitere Funktion, nämlich ein Zwischenspeicher mit Resampler für Emfänger, die auch anderen Frequenzen laufen. Ich brauche jetzt einfach die Datenrekonstruktion. Einen Resampler habe ich schon.
Eine wirkliche Datenrekonstruktion kann es nur geben, wenn es andere Kriterien gibt, nach denen man ein Filter erstellen kann, z.b. die Information, wie schnell sich ein Datum ändern kann. Das wirkt dann auf die Grenzfrequenz des Filters. Letztlich wird es ein Interpolationsfilter sein müssen, bzw. mehrere mit verschiedenen Annahmen. Unklar ist, wie in Deinem Fall die zeitliche Komponente ist Spiel kommt. So wie ich das lese, müsste sich der reale Verlauf eines Datensignals in der einen Zeit dadurch rekonstruieren lassen, indem man das Verhältnis zu seinen Nachbarpunkten in der anderen Zeit betrachtet. Sowas läuft auf eine 2D-Wellenfeld-Interpolation hinaus. Dazu muss man aber mehrere Zeiten speichern. Ist das eine Art Zeilensensor? Letztlich ist das alles immer eine Kaffesatzleserei. Wichtig ist, dass der neue Wert nicht auffällt. Dabei ist vor allem das Verhalten das nachfolgenden Systems wichtig. Je toleranter dies gegenüber schnellen Änderungen ist, desto konservativer muss man filtern.
Wenn du das Grundlegende Problem nicht besetigen kannst bleibt dir nur noch übrig das Signal so zu verändern(filtern), daß das nachfolgende System nicht ins schwingen kommt. Die Sensoren werden ja wohl ein zeitliches Verhalten haben! Also wie kann es sein, daß da so steile flanken in einem korrektem Signal vorkommen. Man könnte mit höherer Frequenz abtasten und Sensorwerte, die eigentlich Physikalisch nicht möglich sind rauswerfen(bzw. interpolieren). Zeig doch mal einen echten Signal Stream. Am besten vom Oszilloskop.
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.