Totzeit kompensieren

aleXandroW

Level-2
Beiträge
59
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Programmiere zur Zeit eine Granulatdosierung. Dabei wird der Trichter in dem sich das Granulat befindet gewogen. Das Granulat wird durch eine Schnecke in ein Extruder gedrückt. Das Gewicht verändert sich also kontinuierlich.
Ich nehme das Gewicht auf und nach 2min neheme ich das neue Gewicht auf. Über die Differenz weiß ich wieviel Gewicht verloren gegangen ist , dadurch ergibt sich mein Durchsatz[kg/h]
Diesen Istwert vergleiche ich mit meinem Soll-Durchsatz und dementsprechend wir die Schnecke langsamer oder schneller.
Da sich der Wert alle 2min ändert habe ich eine Totzeit von 2min.

Meine Idee ist den I-Anteil sehr klein zu stellen, damit er nicht zu starkt am Sollwert schwingt.

Habt ihr eine Idee wie man am besten die Totzeit kompensieren könnte??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich Deine Anlage richtig verstanden habe, hast Du eine nicht-integrierende Regelstrecke. Die Regelung einer solchen Strecke braucht auf jeden Fall einen I-Inteil.
Zur Verbesserung des Regelverhaltens würde ich mal versuchen, einen gesteuerten Anteil proportional zum Sollwert (nicht zur Regelabweichung!) einzukoppeln. Wenn der Faktor dieser Sollwert-Einkoppelung einigermaßen passt, muss die Regelung nur noch den Rest erledigen und hat schneller abgeglichen. Das hilft Dir bei kleinem I-Anteil.
Gruß
Erich
 
2sek ist nicht möglich weil sich das Gewicht nur sehr langsam ändert

@Largo, könntest du es mir vielleicht anhand eines Beispiels beschreiben oder einfacher erklären
verstehe das nicht genau wie du das meinst
 
Zeig mal was Du schon hast.
Ich sollte erst mal wissen, ob Du fertige Bausteine verwendest oder was selbst geschriebenes.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
regler, i-anteil erstmal weggelassen
schrittkette zum ermitteln des durchsatzes

ich habe natürlich noch mehr code, weiß aber net was du noch sehen willst

im prinzip ist es so eine anlage, nur leider nicht mit siwarex ftc sondern mit siwarex cs.
http://www.youtube.com/watch?v=nzNDeDufzP8
 

Anhänge

  • regler.jpg
    regler.jpg
    128,1 KB · Aufrufe: 89
  • schrittkette.jpg
    schrittkette.jpg
    120,9 KB · Aufrufe: 102
Du könntest z. B. auf den Eingang DISV ein Signal legen, das sich als

Solldurchsatz*Faktor

berechnet. Dann erst mal die Regelung ausschalten und nur mit diesem Wert fahren. Dann spielst Du mit dem Faktor so lange, bis es auch ohne Regelung einigermaßen passt. Danach Regelung wieder einschalten und Regelparameter optimieren.

ps. Rufst Du den Regler wirklich alle 100ms auf, obwohl sich der Istwert nur alle zwei Minuten ändert?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
10 Sekunden sind schnell genug,
Meine Frage hat aber nichts mit Deinem Problem zu tun. Es ist nur CPU-Zeit Verschwendung, mit den aktuellen CPUs ist das aber alles kein Problem mehr.
Probier erst mal die Sache mit der Sollwert-Einkoppelung.
Gruß
Erich
 
Hallo,

Programmiere zur Zeit eine Granulatdosierung. Dabei wird der Trichter in dem sich das Granulat befindet gewogen. Das Granulat wird durch eine Schnecke in ein Extruder gedrückt. Das Gewicht verändert sich also kontinuierlich.
Ich nehme das Gewicht auf und nach 2min neheme ich das neue Gewicht auf. Über die Differenz weiß ich wieviel Gewicht verloren gegangen ist , dadurch ergibt sich mein Durchsatz[kg/h]
Diesen Istwert vergleiche ich mit meinem Soll-Durchsatz und dementsprechend wir die Schnecke langsamer oder schneller.
Da sich der Wert alle 2min ändert habe ich eine Totzeit von 2min.

Meine Idee ist den I-Anteil sehr klein zu stellen, damit er nicht zu starkt am Sollwert schwingt.

Habt ihr eine Idee wie man am besten die Totzeit kompensieren könnte??

Also der Regler ist ja nicht das Problem , sondern die Erfassung der Gewichtsabnahme. Ohne eine gravimetrische Waage ist das ein Glücksfall das so ans laufen zu bringen.
Bei einer gravimetrisch Arbeitenden Waage bekommst du automatisch den Durchsatz. Diese Waagen arbeiten mit Filtern und Abtastfrequenzen da träumt jede SPS von.

Wie und womit wird denn gewogen, woher bekommst Du das Gewicht ?
 
Hi,
schon mal durch berechnen probiert?

Durch das entschende dV kannst du ja dann die Schnecke langsamer oder schneller drehen lassen.

h=steigung schnecke
µ=füllfaktor der körner in der schnecke
d=durchmesser schnecke
n = drehzahl
 

Anhänge

  • Zwischenablage02.jpg
    Zwischenablage02.jpg
    2,4 KB · Aufrufe: 24
Zuviel Werbung?
-> Hier kostenlos registrieren
2sek ist nicht möglich weil sich das Gewicht nur sehr langsam ändert

Schreibe jede Sekunde das aktuelle Gewicht in ein Array (oder besser einen Ringbuffer). Dann kannst Du auch jede Sekunde eine neue Rate über 2 Minuten ausrechnen, aus dem aktuellen Gewicht und dem historischen Wert aus dem Buffer.

Dann sollte das Regeln einfacher sein.
 
Ich sehe das auch so wie FranzZ.
Auf diese Weise könnte man durchaus auch bei kleinen Gewichtsänderungen ein Verhalten erkennen und darauf reagieren. Welche Refresh-Rate hier sinnvoll ist kann man ja ausprobieren - ich würde es aber auf jeden Fall aber auch erstmal so testen.
 
ich versuche mal eure tipps umzusetzen und zu testen

@jabba, wiege mit einer siwarex CS . hab schon gesehen dass die anderen baugruppen wie siwarex FTC alles automatisch machen und man kaum programmieren muss
nun muss ich dass leider mit der siwarex CS machen.
 
@ franzz: du meinst mit jede sekunde auf 2minuten, dass er beim array nach 2min wieder von vorne anfängt??

In der ersten Sekunde schreibst Du das momentane Gewicht in a[0].
In der zweiten Sekunde in a[1]
in der 120. Sekunde in a[119]

Dann kannst Du die Rate berechnen: (a[119]-a[0]) / 120.

In der 121. Sekunde gibt es zwei Möglichkeiten:

Entweder, Du verschiebst die Werte alle in deinem Array, also a[1] auf a[0], a[2] auf a[1], a[199] auf a[198]. Dann kannst Du wieder den aktuellen Wert in a[199] schreiben und die Rate wie oben berechnen.

Oder, Du schreibst das neueste Gewicht wieder in a[0] und berechnest die Rate aus (a[0]-a[1])/120

Ersteres ist weniger zu denken, aber mehr Arbeit für die CPU.

Franzz
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zur Kompensierung von Totzeiten in Regelstrecken verwende ich die prädiktive Regelung mittels eines Smith Prädiktors.

Diese setzt allerdings die genaue Kenntnis des Streckenmodells vorraus.

Diese Regelstrecke hat die Besonderheit, daß der Benutzer die Totzeit durch geschickte Wahl unmittelbar beeinflussen kann. Daher ist ein Teil der Strecke, nämlich das Totzeitglied gegeben.
 
Zurück
Oben