Algorythmus

borromeus

Level-1
Beiträge
2.271
Reaktionspunkte
329
Zuviel Werbung?
-> Hier kostenlos registrieren
Hat jemand gute Ideen folgendes Problem zu lösen:

leider muss ich mal weit ausholen:
Granulatförderung von A->B

Es gibt 2 Möglicheiten:
a) Flugförderung (Druck klein, Luftmenge gross)
b) Dichtstromförderung (Druck gross, Luftmenge kleiner)

Ich habe in diesem Fall einen Verdichter (n-regelbar) und eine Zellenradschleuse ebenfalls n-regelbar.

Ich messe den Druck in der Förderleitung. Es gibt einen Algorythmus um in Abhängigkeit des Druckes die Fördermenge bzw. den Sollwert des Verdichters zu verändern.

Soweit ist alles OK. Leider ist das aber alles produktabhängig... ich muss aber immer auf Möglichkeit b) kommen.

Es geht mir jetzt darum zu erkennen ob ich eigentlich in "Möglichkeit" b) bin. Also ob ich gerade "Dichtstromfördere".
Das erkennt man daran, dass der Druck in Bereichen von etwa 20-500 Sekunden um +/- >5% vom Mittelwert pulsiert..... schaut so aus wie eine Sinuslinie in etwa.

Bei einer Flugförderung würde der Druck mehr oder weniger zufällig schwanken........

Um vom Zustand Flugförderung auf Dichstromförderung zu gelangen muss ich die Luftmenge (d.h. die Drehzahl des Verdichters) verringern.

Ich will also einen "Regler" machen, der wenn ich noch nicht dichtstromfördere, mit der Menge langsam runterfährt bis der Zustand Dichtstromförderung eingetreten ist.

Soooooooo, lange genug ausgeholt........

die Frage ist nun: wie formuliert sich ein Programm, das erkennt dass ein Wert in einer zeitmäßig eingeschränkten (aber produktspezifisch gleichen) Periodendauer EINDEUTIG pulsiert?
 
Zuletzt bearbeitet:
Hallo borromeus,

hab so was ähnliches (nur die Wellenerkennung) mal auf einer BWO Steuerung gemacht.
Ich hab im Programm den Scheitelpunkt von Berg und Wellental ermittelt, und die Zeit dazwischen gestoppt . Wenn die nächste Zeitermittlung im Bereich z.B. +-5% lag, wurde diese Berechnung weiter gemacht, wenn nicht wurde wieder neu angefangen.

Vieleicht nur kurz auf die schnelle ein Ansatz. :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo borromeus,
ich würde (in Anlehnung an den Vorschlag von Jabba) die Messwerte innerhalb eines festgelegten Intervalls in einen DB einlesen und dort ggf. sogar die Form der Kurve (nach entsprechender Glättung) mit meinen Wunschvorstellungen vergleichen. Ich mache etwas ähnliches für eine Federkraft-Messung. Es kommt hierbei natürlich darauf an, dass deine Kurve eine gewisse Reproduzierbarkeit aufweisst ...
 
Hat jemand gute Ideen folgendes Problem zu lösen:

...
die Frage ist nun: wie formuliert sich ein Programm, das erkennt dass ein Wert in einer zeitmäßig eingeschränkten (aber produktspezifisch gleichen) Periodendauer EINDEUTIG pulsiert?

Hallo,

um da sauber zu lösen bräuchtest du nen Frequnezspektrum, also Fourrieranalyse deines Signals - das ist aber nicht machbar, da dieser Regler dann zu langsam würde, du musst ja 500 -1000sek mindestens aufzeichnen.
Also bleibt meiner Meinung eigentlich nur diese Werte von n experimentell für jedes Produkt einzeln zu ermitteln.

soweit mal meine Einschätzung...

hth
 
Hallo borromeus,

hab so was ähnliches (nur die Wellenerkennung) mal auf einer BWO Steuerung gemacht.
Ich hab im Programm den Scheitelpunkt von Berg und Wellental ermittelt, und die Zeit dazwischen gestoppt . Wenn die nächste Zeitermittlung im Bereich z.B. +-5% lag, wurde diese Berechnung weiter gemacht, wenn nicht wurde wieder neu angefangen.

Vieleicht nur kurz auf die schnelle ein Ansatz. :confused:

Danke für diese und die anderen Antworten, ich erkenne aufgrund der Antwort dass meine Frage nicht exakt war:
der Wert schwankt um +/- 5% also zB zwischen 1,3 und 1,5 bar- und das in einer gewissen Periodendauer- die aber bei einem Produkt und einer bestimmten Produktmenge dann konstant ist.

Das mit den Scheitelpunkten drängt sich bei mir auch auf, aber wie hast Du das erkannt, dass es ein EINDEUTIG ein Scheitelpunkt ist- und nicht ein auf und ab eines Wertes....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Abolutes oder lokaler Scheitelpunkt

Hallo
meiner Ansicht nach benoetigst du eine Minimum/Maximum Detektion. Dein Problem wird dabei allerdings sein, ist das jetzt nur eine lokales oder globales Maximum.

Ich wuerde in dem Fall damit anfangen die Werte in einen DB zu schreiben.
Im naechsten Schritt solltes du dann die 3 Punkte vergleichen.

Wenn ich 3 Punkte habe:
n
n+1
n+2

So berechen ich fuer n und n+1 sowie n+1 und n+2 die Differenz. Ist die Zweite Berechnung jetzt geringer als sagen wir mal 0.1 kannst du von einem Maximum ausgehen, wenn die vorhergehende Differenz positiv und einem Minimum wenn die vorhergehende Differnez negativ war.

Um jetzt zu erkennen ob das nur lokal oder global war must du den vermeintlichen Scheitelpunkt speichern (Wert und Zeitwert) und dann die Werte weiter verfolgen. Tritt nun ein neuer Maximum/ Minimumwert auf muss der Wert verglichen werden. Ist der neue Wert groessen/ kleiner war der erste Wert nur ein lokaler Scheitelpunkt und wird ersetzt durch den neuen.

Wenn du nun den globalen Maximum/Minimaumwert hast, solltest du daraus die Periodendauer berechnen koennen.

Allerdings musst du fuer diese Methode das eingangssignal weitestgehend geglaetted haben.

Gruss mathias
 
Hallo borromeus,

ich hatte damals z.b. den Max gespeichert, wenn für 20 zyklen (wert war einstellbar) ein Wert unter Max kam, hat ich den höchsten als Scheitelpunkt genommen. Prinzipell lege ich bei so etwas das Analogeingangssignal über einen Glättungsbaustein, damit ein Bitkippen mir den Wert nicht ändert.

Ich gehe mal davon aus das das Regelverhalten träge sein darf ?
Da brauchts ja Zeit, und diese lange Periodendauer zu ermitteln.
 
Prozeßmodell

Hallo,

Wenn es möglich ist, ein mathematisches Modell der regelmäßigen Schwingungen zu erstellen, dann sollte es auch möglich sein, nach entsprechender Triggerung Theorie und Praxis miteinander zu vergleichen.
Wenn das wiederum funktioniert, kann der aktuelle Zustand der Anlage sehr schnell und sehr exakt erkannt werden.
Der Rest ist Standard: Den Reglerausgang über die Begrenzung langsam reduzieren, bis alles wieder passt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo borromeus,

ich hatte damals z.b. den Max gespeichert, wenn für 20 zyklen (wert war einstellbar) ein Wert unter Max kam, hat ich den höchsten als Scheitelpunkt genommen. Prinzipell lege ich bei so etwas das Analogeingangssignal über einen Glättungsbaustein, damit ein Bitkippen mir den Wert nicht ändert.

Ich gehe mal davon aus das das Regelverhalten träge sein darf ?
Da brauchts ja Zeit, und diese lange Periodendauer zu ermitteln.

Naja, es gibt einige Anregungen hier, nochmals Danke.

jedoch: das Problem ist nicht eine Periodendauer zu finden, sondern festzustellen ob es sich um ein periodisch schwankendes Signal handelt (welches noch dazu nicht sehr grosse Amplituden aufweist).
Ich habe nicht von vornherein eine Schwingung die ich untersuchen kann sondern eben (wahrscheinlich in den meisten Fällen) keine Schwingung.
Und nun will ich die Luftmenge runterregeln bis die Schwingung beginnt.

Der technische Hintergrund ist ganz oben ja beschrieben.
Detail für Interessierte:
Im Prinzip ist eine Dichtstromförderung eine, die in der Leitung einzelne Häufchen (Pfropfen) bildet (also fast ein Stopfer), der sich dann doch noch auflöst und so den Propfen ein Stückchen weiterbefördert (Vorteil: Materialgeschwindigkeit gering aber Menge hoch und WENIG Abrieb).
Zu Beginn fliegen die Körnchen ganz schnell und direkt in den Silo, wenn ich nun langsam mit der Luftmenge runtergehe bilden sich die Propfen. Den Transport der Propfen erkennt man an der Druckschwankung (ein Pfropfen löst sich auf- Druck fällt ein bisschen- dann bildet sich der Pfropfen wieder und der Druck steigt). Logischerweise kippt das ganze leider schnell zu einem richtigen Stopfer-> Notstopp-> Produktionsanlage aus.... drum muss man die Menge vorsichtig runterfahren und schnell erkennen von der Flugphase in die Pfropfenphase zu gelangen. Zwischen Förderung a und b gibt es natürlich noch einen indifferenten Bereich wo einmal das eine und einmal das andere physikalische Verhalten vorliegt. Da habe ich dann mal kurz ein paar Schwingungen dann wieder nicht mehr..... und das ist auch was, was mir da Probleme bereitet.....

Ich kann nur schwer einsehen, dass ich das mit ein bisschen Geduld händisch ganz locker hinkriege (ich sehe ja die Kurve am Bildschirm): weniger Menge, warten bis die ersten Schwingungen kommen, bissel warten ob es so bleibt... wieder bissel runter mit der Menge bis endlich eine richtig schöne Schwingung da ist.
 
Wie groß ist denn die Schwankung im Fall a) ? auch 5% ?

Wenn du aus den Scheitelpunkten die Periodendauer ermittelst, mußt du auch noch überprüfen, ob diese über einige Perioden in etwa gleich sind, da ja sonst der Wert auch aus den Zufallsfunktionen herrühren könnte ?

Oder mal anders formuliert:

T : mehrere gemessene Periodendauern

für alle T gilt :

T < 20s : Flugphase, Drehzahl zu hoch

20s < T < 500s : Propfenphase erreicht, Drehzahl OK

T > 500s oder Druck >150% Stoerung


hth

kiestumpe
 
Zuletzt bearbeitet:
Mal eine ganz andere idee

wenn du in deinen optimalen bereich bist ist ja die steigung relativ gering

wenn du unkontrollierte werte bekommst sind die steigungen um einiges höher

das heist wert messen zeit warten wert messen steigung ermitteln wenn grosser sprung dazwischen dann must du weiter nach unten

schick mal ein paar aufzeichnungen wie die daten aussehen für denn einen und denn anderen fall
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hört sich interessant an, deine Problemstellung. Wenn du die Kurve deines Druckverlaufs visuell erkennen kannst, dann musst du dir m.E. erstmal eine Routine bauen, die in der Lage ist eine Muster-Übereinstimmung zu erkennen und selbige als prozentualen Wert auszugeben.

Hast du eine Möglichkeit deine Kurve ins Forum zu stellen ?
 
Karmannsche Wirbelstrasse

Detail für Interessierte:
Im Prinzip ist eine Dichtstromförderung eine, die in der Leitung einzelne Häufchen (Pfropfen) bildet (also fast ein Stopfer), der sich dann doch noch auflöst und so den Propfen ein Stückchen weiterbefördert

@borromeus

das Phänomen nennt sich Karmannsche Wirbelstrasse und läßt sich z.B. gut beobachten, wenn etwas Wasser langsam über den asphaltierten Hof läuft.
 
Hallo,

die Form des Signals spielt wahrscheinlich eh nicht so die Rolle? Sowieso ist mit den Mitteln der SPS schwierig zu detektieren.

Was einfach erkannt werden kann ist der Nulldurchgang der Kurve (aktueller Druck < oder > Mittelwert). Zur Erkennung, ob ein Signal zyklisch wechselt, hab ich mal sowas implementiert:

Code:
1. Gleitenden Mittelwert bilden (je größer die Anzahl der Abtastpunkte, desto träger, aber um so genauer)
 
2. Vergleich: Signal > Mittelwert, wenn ja Einschaltverzögerung starten (etwas weniger als halbe Zykluszeit) -> wenn Zeit abgelaufen Bit setzen zu speichern
 
3. wie 2. aber auf "<" testen
 
4. beide Bits und verknüpfen, damit Ausschaltverzögerung starten (Zeit ca. Zykluszeit -> wenn der Timerausgang abfällt, wechselt das Signal schneller als die Einschaltverzögerungen der ersten beiden Timer.....
 
5. Merkerbits zurücksetzen und wieder los bei 2.

Mängel:
-ich hatte eine feste Zykluszeit mit nur geringen Abweichungen zu überwachen, hier sind diese ja variabel.
-es dauert mindestens einen vollen Zyklus, bis 'OK' erkannt und auch im Fehlerfall wieder einen vollen Zyklus, bis 'nichtOK' erkannt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hört sich interessant an, deine Problemstellung. Wenn du die Kurve deines Druckverlaufs visuell erkennen kannst, dann musst du dir m.E. erstmal eine Routine bauen, die in der Lage ist eine Muster-Übereinstimmung zu erkennen und selbige als prozentualen Wert auszugeben.

Hast du eine Möglichkeit deine Kurve ins Forum zu stellen ?

Dies wurde heute- ohne meine Anwesenheit aufgezeichnet- der linke Bereich zeigt eindeutig eine blaue Linie die nach dem Druckanstieg pulsiert.
Um diese geht es.

Ich bin euren Ideen sehr dankbar und werde ab Montag mal versuchen das hineinzuhacken.

Eine andere Idee eines- für mich sehr kompetenten MSR- Mannes war- statt des Druckes die direkte Luftmenge heranzuziehen... was meint ihr, soll ich schnell mal eine Blende einbauen lassen?
Seine Idee ist nicht so übel: NUR die Förderluftmenge
sagt mir was über die Strecke aus, der Druck nur indirekt und verzögert.
 

Anhänge

  • p.pdf
    362 KB · Aufrufe: 29
Zuletzt bearbeitet:
Hallo borromeus,

links vor dem Pulsieren ist die "Flugphase", rechts davon sind Störungen und Handeingriffe? Das Pulsieren musst du erkennen?

Es sieht garnicht mal so schlecht aus. Es wird natürlich sehr schwierig werden, die passenden Parameter zu finden. Charakteristisch für das Pulsieren bzw. für die Dichtstromförderung ist anscheinend, dass die Frequenz relativ hoch (1. Kriterium) und der Mittelwert über einen bestimmten Zeitraum relativ konstant ist (2. Kriterium).

Die Zeitkonstanten sind sehr groß, daher würde ich den Messwert grundsätzlich erst einmal dämpfen, 30s mind. (=Wert A). Dann könnte man aus A einen fortlaufenden Mittelwert berechnen, oder einfach den Messwert A im Minutenbereich nochmals sehr stark dämpfen (=Wert B). Durch </>-Vergleichen von A und B kann man die Nulldurchgänge und damit die "gedämpfte" Periodendauer T ermitteln (=1. Kriterium).

Wenn man nun Wert B nochmals dämpft (=Wert C), erhält man durch die Differenz von B und C ein Maß für die Stabilität des Mittelwertes (2. Kriterium). Schwierig wird es sein, die Dämpfungszeiten für A, B und C zu finden.


Gruß, Onkel
 
Zuletzt bearbeitet:
Ich würde Onkel Dagobert prinzipiell zustimmen.
Versuch von den eingelesenen sich benachbarenden Werten einen gleitenden Mittelwert zu bilden. Wenn du z.B. 10 Werte zusammenfast und den daraus resultierenden Mittelwert auch anzeigst, dann müsste die Grund-Charakteristik deiner Kurve erhalten bleiben, sie wird halt nur glatter. Ggf. variierst du die Anzahl der Werte und damit die Glättung. Ziel müsste es m.E. sein, das "Flattern" gut erkennen zu können ...
 
Zurück
Oben