Sprungantwort flüssigkeitsgefülltes Drucksystem

wackel_peter

Level-1
Beiträge
54
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich möchte ein flüssigkeitsgefülltes Drucksystem reglen.
Über eine drehzahlgeregelte Pumpe soll eine Wassergefüllte Ringleitung (variable Länge) mit konstantem Druck versorgt werden, am Ende der Leitung wird der Druck gemessen.
Führungsgöße ist der Solldruck, Stellgröße die Pumpenspannung (0-10V) und Regelgröße der Istdruck.
Für die Parametrirsieung des Reglers will ich die Sprungantwort aufnehmen und in der SPS auswerten (Stichwort Tangentenverfahren).

Wie muss ich das Ganze programmiertechnisch angehen lassen?
Die Isdruckwerte in ein dynamsiches Array ablegen?
In welcher Zeit/Intervallen müssen die Werte dort abgelegt werden? Zykluszeit ist wahrscheinlich schneller als die realen Werteänderung vom Sensor.

Für Anregungen,Ideen und Tipps wäre ich sehr dankbar,
Peter
 
Hmm, was meinst Du mit "angehen lassen"?
Das ist ein aus meiner Sicht "einfacher" PI-Regler.
Ich glaube die Parametrierung bekommst Du auch so hin.
Wenn die Pumpe halbwegs zur Regelstrecke passt: kp=1-2, Tn=10-15s das ist jetzt natürlich eine Hausnummer, aber damit würde ich anfangen.
 
Sicherlich ist es möglich den Regler selber zu parametriesern aber die Reglestrecke kann in der Parxis sehr unterschiedlich sein.
Das Sytem soll aber in größeren Stpckzahlen auf den Markt kommen und einfach in Betrieb genommen werden können.
Ziel ist es später quasi per Knopfdruck den Regler zu parametriesieren, bzw einen realtiv gut eingestellten Regler zu haben der evtl durch den Techniker vor Ort nur noch feineingestellt werden muss.
 
Das wird eine Challenge.
*ROFL*

Also als Gerüst würde ich mal ein Schrittprogramm vorsehen.
Stellwert 100
Wertepaare aufzeichnen (Intervall hängt halt von eurer Erfahrung ab wie lange es dauert bis Istwert stationär ist- wenn alles gefüllt ist und kein Verbraucher dranhängt kann das bei Wasser recht flott gehen *)
Warten bis Enddruck oder Abschaltdruck erreicht wird
Stellwert wieder 0
nun, und jetzt folgt halt eine mühsame Rechnerei


* Edit: Du kannst ja einen Durchlauf machen und messen wie lange es dauert bis der Istwert fast stationär ist, und in einem zweiten Durchlauf eben entsprechend dieser Dauer die Wertepaare anlegen. zB
bei 20s kannst Du alle 1s ein Wertepaar schreiben, das wären dann 20 Werte, das ist sicher mehr als ausreichend für die Kurvenanalyse danach.
 
Zuletzt bearbeitet:
Die Rechnerrei habe ich bereits fertig. Das kann ich aus einem alten Projekt nehmen, dort wurde jedoch eine fertige Sprungantwort direkt reingeladen als Datenarray (ARRAY OF REAL).
Es geht also wirklich nur um die sauberer Aufnahme einer Sprungantwort.
 
Aktuelle hätte ich mir das grob so gedacht:
Code:
Aktuelle hätte ich mir das grob so gedacht:
Vorlauf:TON;
Pumpe:REAL;
Istdruck:REAL;
Solldruck:REAL;
TRIGGER:TON;
Messwert: ARRAY[] OF REAL;
Messdurchgang:UINT;
Messzeit:REAL;
Fertig:BOOL;

Vorlauf(IN:= TRUE , PT:= T#10S , Q=>, ET=>);
IF Vorlauf.Q = FALSE THEN
Pumpe:=6000; //    
ELSE 
    IF Istdruck < Solldruck THEN
        Pumpe:= 10000; //100%
        Trigger(IN:= TRUE , PT:= T#500MS , Q=>, ET=> );
        IF Trigger.Q THEN
            Messwert[Messdurchgang]:= Istdruck;
            Messdurchgang := Messdurchgang +1;
            Messzeit := Messzeit + 0.5; //Zeit in Sek.
            Trigger(IN:= FALSE , PT:= T#500MS , Q=>, ET=>);
        END_IF
    ELSE
        Pumpe:= 0;
        Fertig := TRUE
    END_IF        
END_IF
 
Hast Du keine Angst, dass Du was in den 10s Vorlauf verpasst. Da läuft die Pumpe ja auch schon mit 60%. Vielleicht wäre der passende Punkt zum Datenaufzeichnungsbeginn der, wo Dein Druck sagen wir mal um 3% vom Messbereich anspricht wo Du dann auf 100% umschaltest.
 
Zurück
Oben