Step 7 Windrichtung Messwert beruhigen

Zuviel Werbung?
-> Hier kostenlos registrieren
Anstatt Einheitskreislänge = 1 müsste doch hier die Geschwindigkeit eingesetzt werden!?
Kommt der Wind mit 1 Knoten aus Westen und dann für die gleiche Zeit mit 45 Knoten aus Osten, dann ist die Luft im Mittel mit 44 Knoten nach Osten gezogen.

Bei meiner Tabelle steht nicht X für Winkel und Y für Geschwindigkeit, sondern aus Winkel und Geschwindigkeit wir der Vektor berechnet.
X = Geschwindigkeit * cos(α)
Y = Geschwindigkeit * sin(α)

Wenn die Windgeschwindigkeit nicht mit einbezogen wird, dann kann man die Länge = 1 setzen.
Allerdings musst du sehen an welcher Stelle du die Messwertglättung einbringst.
Du würdest vermutlich X und Y Komponente separat über einen Tiefpassfilter schicken, das gleiche macht ein Mittelwert über n Werte.

Das Problem dabei ist jedoch, dass wenn die Windrichtung vorher bei 350° steht und dann in Linksrichtung über Null geht und sich bei 5° wieder einpendelt, dein Tiefpass das so nicht wahrnimmt, sondern den Winkel von 350° fallen lässt.

Mein Algorithmus schaut immer auf die naheliegendste Variante und stellt diesen Nulldurchgang fest, d.h. der gefilterte Winkel steigt bis auf 360° und kommt dann von 0° wieder rein. Das ist so natürlich nur sinnvoll, wenn die Abtastzeit so kurz ist, dass sich der Zeiger innerhalb der Abtastzeit nur max. um 180° drehen kann. Die Windgeschwindigkeit habe ich bei mir außen vor gelassen, ich wollte erst einmal nur die Windrichtung sinnvoll glätten.
 
Thomas, das ist mal wieder ein clevere Lösung!
Da programmieren sich andere einen Wolf :ROFLMAO: .

Die Anregung dazu habe ich aus dieser Application Note eines entsprechenden Sensors:
https://cache.freescale.com/files/sensors/doc/app_note/AN4248.pdf

Der Algorithmus funktioniert mit den Winkelwerten aber überhaupt nicht, vielleicht gibt deren Sensor schon Änderungswerte aus.
Das habe ich dann mit dem Regler den ich von der S5 her noch kenne verheiratet.
 
Erstes Problem ist die Messwerte der Windrichtung zu glätten.
Wenn du eine Reihe hast wie 350°, 350°, 10°, 10° dann ist der arithmetische Mittelwert 180°, "richtiger" wäre aber 0°.
Genau, leider wissen noch nicht, was der Sensor ausgibt. Die möglche AbtastRate von 0,1..10 Hz bei einer festen, internen AbtastRate von 50 Hz legt nahe, dass der Sensor bereits gemittelte/gefilterte/geglättete Werte ausgibt.
Es wäre denkbar, dass der Sensor beim "direkten" Übergang 359,9° <-> 0 falsch mittelt und dadurch am Ausgang des Sensors einen RichtungsWechsel einmal rundherum auf dem langen Wege - scheibar plausibel - nur vortäuscht.
Das waren meine - hoffentlich unberechtigen - Bedenken.
Das ist so natürlich nur sinnvoll, wenn die Abtastzeit so kurz ist, dass sich der Zeiger innerhalb der Abtastzeit nur max. um 180° drehen kann.
Ob die von Harald verwendeten AbtastRaten von 2 Hz (einlesen der Daten) bzw. 1 Hz (die in den Dateien abgelegten Daten) befürchten lassen müssen, dass zwischen zwei aufeinander folgenden Abtastungen reale WindDrehungen von > 180° auftreten könnten?
Vermutlich eher selten, aber nicht ganz auszuschliessen. Ein Abtasten in kürzeren Abständen wäre also wünschenswert.
Was Onkel gemacht hat ist so wie ich das sehe im Prinzip eine Vektorberechnung mit der Einheitskreislänge (d.h. Vektorlänge) von 1.
Anfangs ja, beim Umwandeln in die sin-cos-Darstellung noch. Dieser Pfad wird aber durch die Glättung sehr bald verlassen und ...
Das Problem ist dort aber, dass durch die Glättung beim Zurückrechnen aus den Einzelkomponenten der Vektor nicht mehr die Länge 1 besitzt, und das läuft dann irgendwann aus dem Ruder, vor allem bei nur 32 Bit Float.
Sobald die VektorLänge nicht mehr 1 ist - bewirkt durch die Glättung - wird es abenteuerlich, mit einer Ausnahme: werden die Amplituden der DatenPärchen (sin und cos) jeweils mit demselben Faktor gedämpft UND rechnet man über den arctan auf den Winkel zurück, so hat man zwar - ausser durch GenauigkeitsVerlust - nichts kaputtgerechnet, aber auch nichts gewonnen - den Winkel, von dem man ausgegangen ist, erhält man auch als Ergebnis.
Daher Onkel Dagoberts Ansatz, NICHT über den arctan den "neuen" Winkel auszurechnen, sondern über nur einen der beiden arcsin oder arccos. Damit kann man den Winkel verändern. Aber geschieht dies dann auch in der richtigen Richtung und um einen sinnvollen Betrag?

Wie schaut's mit Fourier aus? Schwingung in GrundFrequenz und Oberwellen zerlegen, diejenigen höherer Ordnung herausoperieren und dann wieder zusammenbasteln? Ich schätze, das wäre "mit Spatzen auf Patronen schiessen - oder waren es Matronen?".

Woran können wir überhaupt erkennen, ob und wie stark die Daten Störungen enthalten? Eine sauber geglättete Kurve muss nicht näher an der Realität sein.
Ich denke mal, die VektorAddition wird kurzzeitige Ausreisser ausreichend ausbügeln. Die Bewertung mit der WindGeschwindigkeit (VektorLänge) sorgt automatisch dafür, dass die mit fallender Geschwindigkeit nachlassende RichtungsGenauigkeit und die bei Windstille undefinierte Richtung nicht stören.
Die Auswertung nach der von Harald angepeilten "16-Sektoren-Methode" liefert mit Haralds TestDaten fast dasselbe Ergebnis, wie die VektorAddition.
Darum plädiere ich für noch mehr "TestDaten", mit einer höheren AbtastRate und mit realen 359,9° <-> 0° Übergängen - ggfs provoziert durch Drehen des Sensors in die vorherrschende WindRichtung. Ein Abschnitt mit ohne bzw. nur wenig Wind wäre auch ganz interessant - also, Eimer drüber ... oder wenn nicht möglich, dann Schwamm drüber.

Und zum Ausklang noch ein Bisschen OffTopic:
Kommt der Wind mit 1 Knoten aus Westen und dann für die gleiche Zeit mit 45 Knoten aus Osten, dann ist die Luft im Mittel mit 44 Knoten nach Osten gezogen.
Könnten wir bitte wieder zu den unverknoteten Geschwindigkeiten zurückkehren?!? Die Knoten erinnern mich allzu sehr an die Knoten in den GehirnWindungen ...
(Ich weiss: 1 Knoten = 1 Seemeile/Stunde = 1852/3600 m/s = 463/900 m/s und, ob die Brise nun von Backbord nach Steuerbord windet oder umgekehrt, sie bläst trotzdem immer von Luv nach Lee und der Bug kann ein Feature sein - muss aber nicht - und ist dennoch unverzichtbar.)

Festzustellen ist: ein SPS-Programmierer sollte nicht zur See fahren,
der kommt niemals wieder nach Hause.
Aber SPS-Prgrammierer haben doch gelernt, dass manchmal lange Zeit kein Land in Sicht ist und kommen damit klar, wenn sich nur ab und zu ein Silberstreif am Horizont zeigt.
Ich verkneife mir lieber die Antwort, dass sogar die FlaschenPost oft ankommt - eher selten zu Hause, aber manchmal sogar an schöneren Stränden.
Könnte nämlich missverstanden werden.

Das habe ich dann mit dem Regler den ich von der S5 her noch kenne verheiratet.
Und schon lauerte wieder die Versuchung, den I-Anteil zu aktivieren ... ;)

Ich schätze, Harald ist mit seinem Windfähnchen gerade draußen.
Aber hoffentlich nicht vom Winde verweht.
Er war im ganzen letzten Jahr nicht so lange offline.
OffLine ist aber nicht automatisch auch offShore.
 
Zuletzt bearbeitet:
Der Geschwindigkeitsalgorithmus war im Text nicht ganz korrekt. Muss eigentlich lauten …
Ich habe mich jetzt noch einmal mit der Problematik beschäftigt. Man kann an dieser Stelle alle gebräuchlichen Algorithmen zur Dämpfung oder Glättung verwenden (Mittelwertbildung, Rampe, PT1, PTn). Kriegsentscheidend sind einzig die Fallunterscheidungen am Eingang und am Ausgang, genau wie du es in #36 gepostet hast. Bei Verwendung eines mehrstufigen Filters muss man alle Zwischenergebnisse eingangs- und ausgangsseitig diesen Fallunterscheidungen unterziehen. In einer Schleife ist das aber relativ einfach zu bewerkstelligen. Die Resultate sind höchst interessant.
 
Ich habe mich jetzt noch einmal mit der Problematik beschäftigt. Man kann an dieser Stelle alle gebräuchlichen Algorithmen zur Dämpfung oder Glättung verwenden (Mittelwertbildung, Rampe, PT1, PTn).
Der I-Anteil des Reglers wirkt an dieser Stelle wie ein PT1-Tiefpassfilter. Ohne die Summierung der Änderung zum neuen Winkel funktioniert es aber nicht. Wenn du es anders meinst, kannst du das ja vielleicht mal in die Excel-Tabelle eintragen.

Richtigerweise lautet der Geschwindigkeitsalgorithmus:

PhiAbw = kp * (PhiAbw - PhiAbwAlt + 1/TN * PhiAbw))

Wenn das Stellglied (bzw. hier der simulierte Winkel) integriert, ist in der Berechnung alles eine Ableitung niedriger zu rechnen. Wo bei einem Standard-Algorithmus für den beim P-Anteil die Regeldifferenz und beim I-Anteil die Regeldifferenz integriert wird, wird jetzt beim P-Anteil die 1.Ableitung der Regeldifferenz und beim I-Anteil der Regeldifferenz verwendet (so könnte man es hoffentlich schreiben).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Ergebnisse bei den gegebenen Daten sind nach den 3 Methoden nah bei einander, aber ganz knapp neben der Vorgabe von ca. 230° entsprechend SW.
Die 230 war lediglich grob "optisch" geschätzt. 247 ist OK, vor allem wenn das fast gleiche Ergebnis bei 3 Methoden entsteht.

Code:
[FONT=Verdana]Bis hier her wurde eine lineare Funktion in Sinus- und Cosinus umgewandelt. Durch diese Umwandlung
ist der Sprung bei 0°/360° beseitigt. Die Sinusfunktion wiederholt sich mit jeder Umdrehung stoßfrei.
Jetzt können die Werte gedämpft werden, ohne dass bei 0°/360° ein falsche Werte entstehen.[/FONT]
Die Umrechnung in Sinus/Cosinus gefällt mir eigentlich nicht, auch wenn man damit einfach den 0/360-Sprung umgeht. Irgendwie habe ich das Gefühl, daß bei einer anschließenden Glättung/Dämpfung der Bogenmaß-Werte bestimmte Winkel bevorzugt werden, d.h. die Glättung zu bestimmten Winkeln/Richtungen verzerrt wird, weil z.B. bei einer 10°-Differenz von 0° zu 10° eine ganz andere Differenz im Bogenmaß besteht (ca. 0,174) als bei einer 10°-Differenz zwischen 80° und 90° (ca. 0,015). (EDIT: "Bogenmaß" ist falsch, ich meine die Sinus-Werte)

In die selbe Richtung gehen vermutlich auch die Vorschläge der Vektor-Paare-Rechnungen (wenn ich das richtig verstanden habe).

Die Fallunterscheidungen (modulo rechnen) gefallen mir besser.
Ich habe auch mit dem Gedanken gespielt, einzelne Ausreißer zu eliminieren durch eine Begrenzung der Änderungsgeschwindigkeit/Steilheit der Winkeländerungen.


für welchen Zweck wird der Sensor denn genau eingesetzt?
Es soll nachträglich abgeschätzt werden können, ob ein ca. 1 km Luftlinie entferntes Objekt durch Geruchsemissionen evtl. belästigt wurde. Dazu sollen die Werte der Windrichtung und Windgeschwindigkeit zunächst erstmal möglichst wirklichkeitsnah komprimiert archiviert werden. Dazu muß die Datenmenge geeignet komprimiert werden, über einen Zeitraum 5 Minuten oder 1 Minute eine repräsentativer Wert der Windrichtung ermittelt werden. Danach wollen wir sehen, ob aus den Werten eine halbwegs "wissenschaftliche" Auswertung möglich ist.

Mittlerweile sehen wir da ein weiteres Problem: ein "Mittelwert" zeigt nicht wie stark die Windrichtung in dem Zeitraum schwankte, eine geglättete Kurve suggeriert eine wenig schwankende Windrichtung. Irgendwie muß noch die Schwankungsbreite in dem Zeitraum mit archiviert werden. Und mit den Möglichkeiten von WinCC Prof. als Trend dargestellt werden. Ideal wäre wohl ein schwankend breites "Band/Hüllkurven", was darstellt, innerhalb welchen Bereichs sich "90%" der Richtungswerte befanden. Da bräuchte ich für das Trendcontrol von WinCC Prof. wohl 2 bis 3 Kurven ("oberer" Grenzwert + "unterer" Grenzwert + "Mittelwert").

(Leider kann man in dem Trendcontrol von WinCC Prof. V7.x nur wenig die Diagrammfläche/das Gitternetz sowie die Teilstriche und Teilstrich-Beschriftungen der Werteachse beeinflussen. Vor/über das Trendcontrol kann man leider keine anderen Objekte (Linien, Texte) legen. Anscheinend kann man auch nicht die Diagrammfläche transparent machen, um eine Grafik hinter das Trendcontrol zu legen.)

Harald
 
Zuletzt bearbeitet:
Kannst deine Daten nicht mit Excel auswerten / darstellen?
Da hast du mehr Möglichkeiten und Diagramme.
Dass Harald das kann, hat er doch schon bewiesen! ;)
Wahrscheinlich spricht auch nichts dagegen, die gesammelten Daten zusätzlich noch mit Excel darzustellen. Eine "grobe" Darstellung mit den Möglichkeiten der Visualisierung "vor Ort" und eine "schöne" Darstellung auf Umwegen für die, die auf eine schöne Optik nicht verzichten mögen.
Die Abweichung vom Mittelwert könnte man doch platzsparend in je 1 ±-Wert für Geschwingigkeit und Richtung archivieren?
Allerdings müssten daraus zur grafischen Darstellung die GrenzwertKurven rekonstruiert werden.
Ob man dann allerdings die Mittelwerte oder Grenzwerte allzu stark "frisieren" müsste, kann ich nicht abschätzen.
Irgendwie müsste man schon die Wirkung aus Geschwindigkeit und Richtung integrieren - vielleicht genügt schon, statt der Häufigkeit die Geschwindigkeiten der auftretenden Richtungen zu summieren.

PS:
@Harald, was meinst Du mit Differenz im Bogenmass? Bogenmass ist doch proportional zu Winkel! 360° = ZwoMalPi
Man muss lediglich berücksichtigen, dass sich die Argumente von sin und cos bzw. das Ergebnis von arctan auf die "Normierung" einer vollen Umdrehung auf BogenMass (8 * arctan(1)) und nicht auf die "Normierung" einer vollen Umdrehung auf 360° bezieht, also vorher die Winkel von ° in BogenMass und hinterher von BogenMass zurück in ° umrechnen.

Es wäre auch kein RiesenAufwand, in einer TestPhase die Daten nach Deiner 16-SektorMethode und zusätzlich nach der VektorAdditionsMethode aufzubereiten, um dann noch die Ergebnisse vergleichen zu können. Für die VektorAddition benötigst Du nur z.B. die "NordKomponente" (= sin * Geschwindigkeit) und die "OstKomponente" (= cos * Geschwindigkeit). Kann sein, dass ich jetzt auf die Schnelle sin und cos vertauscht habe - ist aber eigentlich nicht relevant für den LösungsWeg.
Die beiden Komponenten getrennt summieren, nach Pythagoras die neue Länge=Geschwindigkeit berechnen und aus dem Verhältnis der KomponentenSummen den Winkel - in Excel mit ARCTAN2, ansonsten, wenn nichts anderes verfügbar, FallUnterscheidung (Division durch 0 umgehen) und mit ARCTAN von sin/cos bzw. cos/sin den Winkel.

PPS:
Momentan sehe ich die Probleme eher bei der Ermittlung der Minimal- und MaximalWerte der Richtung. Da leiden wir wieder darunter, hin- und wieder "willkürlich" bzw. aufgrund von Annahmen/Unterstellungen entscheiden zu müssen, ob die RichtungsÄnderung von a nach b links herum oder rechts herum verlaufen ist. Deshalb dränge ich schon wieder darauf, im ZweifelsFall das Einlesen lieber in kürzeren Abständen erfolgen zu lassen, als in längeren. Die SPS freut sich, wenn sie nicht Däumchen drehen muss und nach dem Komprimieren ist dieses Thema eh' vergessen. :ROFLMAO:
 
Zuletzt bearbeitet:
Es soll nachträglich abgeschätzt werden können, ob ein ca. 1 km Luftlinie entferntes Objekt durch Geruchsemissionen evtl. belästigt wurde.
Die "SchwankungsBreite" von Wind-Geschwindigkeit und -Richtung bezogen auf den MessOrt zusätzlich darzustellen, mag verlockend klingen ... aber der Aufwand steht m.E. in keinem Verhältnis zum (geringen?) Nutzen.
Wenn es doch um ein festes Ziel geht, ein "Objekt" oder eine bestimmte Fläche (z.B. ein Quadrat), dann sollte man sogar ermitteln können, von wann bis wann diese Fläche betroffen ist.
Unterstellt wird dabei natürlich, dass sich Geschwindigkeit und Richtung des Windes auf dem Wege zum Ziel genauso (also parallel) verhalten/ändern, wie an der MessStelle ermittelt.
Um eine SchwankungsBreite "anders" umzusetzen, könnte man dafür um die ZielFläche herum weitere Flächen festlegen, für die in gleicher Weise ermittelt wird, von wann bis wann sie betroffen sind.
Z.B. ein Quadrat, das in 9 Quadrate aufgeteilt ist, wobei das "ZielQuadrat" sich in der Mitte des "grossen" Quadrats befindet.
Das war jetzt "nur mal so" angedacht - muss ich noch ein Bisschen bebrüten ...
 
.. Die Umrechnung in Sinus/Cosinus gefällt mir eigentlich nicht, auch wenn man damit einfach den 0/360-Sprung umgeht. Irgendwie habe ich das Gefühl, daß bei einer anschließenden Glättung/Dämpfung der Bogenmaß-Werte bestimmte Winkel bevorzugt werden ..
Dass es hierbei derartige Probleme gibt, hatte ich bereits erläutert. Vergiss diesen Ansatz einfach.

Aber bist du denn mal den Vorschlag #36 von Thomas nachgegangen? Den mittleren Teil kannst du z.Bsp. auch mit einem gewöhnlichen Tiefpass ersetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier ist es recht windstill geworden - ich hole mal kräftig Luft, um mit einem OffTopic dazwischen zu funken.
Ich habe anscheinend zu lange nicht mehr mit ExcelDiagrammen gearbeitet und früher war bekanntlich alles viel einfacher.
PlanQuadrat.jpg
Das Bildchen zeigt 2 übereinandergelegte Diagramme. Das Quadrat ist das "ZielGebiet", die andere "Kurve" ist der Weg, den der "LuftBallon" von der WindMessStelle zurückgelegt hat.
Diese Kurve ist identisch mit Haralds 2. csv-Datei - mit einer Ausnahme: dort, wo die Linie das Quadrat durchquert, habe ich manuell den GeschwindigkeitsWert verzehnfacht, um einmal den Fall testen zu können, dass weder Anfangs- noch EndPunkt des Vektors im ZielQuadrat liegen, das ZielQuadrat aber sehr wohl vom Ballon überquert wird.
Hat jemand einen Tipp für mich, wie man in Excel
- zwei PunkteDiagramme in einem einzigen darstellen kann oder zumindest
- die KoordinatenSysteme in beiden Diagrammen "synchronisieren" kann (z.Z. führen Änderungen in den Werten eines Diagramms dazu, dass Excel die MassStäbe der Koordinaten automatisch anpasst - aber natürlich nicht in beiden Diagrammen, so dass man mühsam manuell anpassen muss)? Edit: Für das Synchronisieren habe ich jetzt eine behelfsmässige Lösung gefunden: zusätzlich die EckPunkte eines 2. "Quadrats" mit den Minimal- und MaximalWerten des anderen Diagramms als "Umrahmung" hinzufügen und ignorieren, dass überflüssigerweise ein EckPunkt des grossen Quadrats mit einem EckPunkt des kleinen durch eine Linie verbunden sind.
Da dies aber nur am Rande mit diesem Thread zu tun hat, gerne per PN und bitte verkneift euch allgemeine Hinweise auf Google&Co, Excel-Foren, Excel-Hilfe - da werde ich mich ohnehin mal schlau machen - im Moment möchte ich aber nicht die Zeit dafür investieren. ;)

Gruss, Heinileini
 
Zuletzt bearbeitet:
Gehe ich recht in der Annahme, dass ihr bei der Betrachtung von Geschwindigkeit und Richtung davon ausgeht, dass diese beiden Werte auf der ganzen Fläche gleich sind? Ablenkungen, Tubulenzen und Verwirbelungen werden bei diesem Modell einfach ignoriert? Kann man sich das so einfach machen, oder kommt da nur Blödsinn bei raus?
 
Gehe ich recht in der Annahme, dass ihr bei der Betrachtung von Geschwindigkeit und Richtung davon ausgeht, dass diese beiden Werte auf der ganzen Fläche gleich sind? Ablenkungen, Turbulenzen und Verwirbelungen werden bei diesem Modell einfach ignoriert? Kann man sich das so einfach machen, oder kommt da nur Blödsinn bei raus?
Selbstverständlich, Dagobert!
Unterstellt wird dabei natürlich, dass sich Geschwindigkeit und Richtung des Windes auf dem Wege zum Ziel genauso (also parallel) verhalten/ändern, wie an der MessStelle ermittelt.
Wir haben nämlich keine weiteren MessStationen im Umkreis der vorhandenen und müssen deshalb extrapolieren und ganz ungeniert unterstellen, dass sich die Düfte quasi wie eine homogene Fläche mit variablen Geschwindigkeiten in variablen Richtungen bewegt.
Jetzt schimpf nicht mit uns - Du hättest Dir ersparen können, Dein Gehirn mit dem Glätten der Geschwindigkeits- und vor allem RichtungsWerte zu zermartern, wenn Du das rechtzeitig geahnt hättest! :ROFLMAO:

PS:
Meine Umschreibung mit dem Ballon war anscheinend gar nicht so dumm gewählt. Wahrscheinlich müssen wir einen TestBallon mit GPS aussetzen und diesen per Drohne wieder zurückholen lassen.
Oder auf den Ballon verzichten und eine SchnüffelDrohne über dem "Objekt" stationieren.
 
Zuletzt bearbeitet:
wie weht der Wind an der Küste?
Hast du eine Lösung gefunden?
Auf dem Ohr scheint Harald momentan leider taub zu sein ... ich hatte auch schon aus ungebändigter Neugier per PN (oder war's 'n eMail?) nachgefragt.
Ist doch nicht Haralds Art, nicht mit gewaltigem Biss bis zur Lösung dranzubleiben und darüber zu informieren.
Darum vermute ich, das Projekt wurde "vorläufig endgültig" auf Eis gelegt (vllt bis der Wind auf'm Dach nicht mehr so eisig bläst?). ;)
 
Zurück
Oben