Step 7 Ventil mit Stellungsrückmeldung ansteuern

wirehead

Level-2
Beiträge
72
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe heute vergeblich versucht ein Motorstellventil (Heizungsmischer) mit Stellungsrückmeldung über Poti vernünftig ans laufen zu bekommen.
Das Ventil hat zur Ansteuerung 2 Digitaleingänge ("AUF" "ZU")

Ich habe mir zur Ansteuerung den FB42 (3 Punktschrittregler) hergenommen und wollte damit das Ventil auf Position regeln. (ein vorgelagerter kontinuierlicher Regler soll später die Vorlauftemperatur regeln)

Istwert hab ich bereits normiert auf 0-100 anstehen und Sollwert hab ich erstmal von Hand vorgegeben.
Ich bekomme den Regler aber einfach nicht vernünftig eingestellt wenn ich gute Einstellungen für kleine Sollwertsprünge gefunden habe dann schwingt sich der Regler bei großen sprüngen auf.
Bei guten Einstellungen für große Sollwertsprünge braucht es gefühlt Stunden um kleine Regeldifferenzen auszuregeln. Wenn dann mal der Sollwert ereicht wird und die Regeldifferenz dank Todband 0 ist wird trozdem der Ausgang gesetzt und das Ventil fährt nochmal einen Schritt zurück, immer in die Richtung aus der es gekommen ist. Das endet oftmals in kleinen Schwingungen. Das hat mich heute ca. 12h beschäftigt...

Rahmenbedingungen:
Aufrufintervall für den FB42 ist 100ms, Ventillaufzeit ist 145s, 1sec mindestlaufzeit, 3sec Pause

Ich habe den Eindruck das ich generel mit dem PI-Schrittregler falsch liege bei dieser Anwendung oder einen massiven Fehler gemacht habe.

Kann mir da jemand nen Tipp geben?

Gruß
Wirehead
 
ähnliche Erfahrungen hab ich auch gemacht... hab mich dann aus Zeitmangel nicht mehr mit dem SchrittRegler befasst, und die Stellungsregelung selbst programmiert. ein paar vergleicher mit hysterese und fertig...
Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi ducati,

dann bin ich zumindest nicht der erste der sich damit rumschlägt.
Hab jetzt auch selber was gebastelt, funktioniert (denke ich) zufriedenstellend für meine Anwendung.
Hätte ich mal besser gestern Morgen machen sollen...

Code:
FUNCTION_BLOCK "Positionsregler HK Vent"
TITLE =Positionsregler Stellventil
VERSION : 0.1


VAR_INPUT
  Soll_Pos : REAL ;    //Sollwert
  Ist_Pos : REAL ;    //Istwert Stellungspoti
  Manuell_Ein : BOOL ;    //Handbetrieb EIN
  Man_Auf : BOOL ;    //Hand AUF
  Man_Zu : BOOL ;    //Hand ZU
  Hyst : REAL ;    //Hysterese/Totband
END_VAR
VAR_OUTPUT
  Ventil_AUF : BOOL ;    
  Ventil_ZU : BOOL ;    
END_VAR
VAR
  Regeldifferenz : REAL ;    
END_VAR
VAR_TEMP
  Hyst_neg : REAL ;    
END_VAR
BEGIN
NETWORK
TITLE =Regeldifferenz bilden

      L     #Ist_Pos; 
      L     #Soll_Pos; 
      -R    ; 
      T     #Regeldifferenz; 
      NOP   0; 
NETWORK
TITLE =Negative Schaltschwelle erzeugen

      L     #Hyst; 
      L     -1.000000e+000; 
      *R    ; 
      T     #Hyst_neg; 
      NOP   0; 
NETWORK
TITLE =Vergleich für Ventil zufahren
//Über die Ausschaltverzögerung läuft das Ventil bis zur Mitte der Totzone die 
//über #Hyst parametriert wird
      U(    ; 
      U(    ; 
      U(    ; 
      L     #Regeldifferenz; 
      L     #Hyst; 
      >=R   ; 
      )     ; 
      L     S5T#1S; 
      SA    T     11; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
      U     T     11; 
      )     ; 
      UN    #Manuell_Ein; 
      O     ; 
      U     #Man_Zu; 
      U     #Manuell_Ein; 
      )     ; 
      UN    #Ventil_AUF; 
      =     #Ventil_ZU; 
NETWORK
TITLE =Vergleich für Ventil auffahren
//Über die Ausschaltverzögerung läuft das Ventil bis zur Mitte der Totzone die 
//über #Hyst parametriert wird
      U(    ; 
      U(    ; 
      U(    ; 
      L     #Regeldifferenz; 
      L     #Hyst_neg; 
      <=R   ; 
      )     ; 
      L     S5T#1S; 
      SA    T     12; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
      U     T     12; 
      )     ; 
      UN    #Manuell_Ein; 
      O     ; 
      U     #Manuell_Ein; 
      U     #Man_Auf; 
      )     ; 
      UN    #Ventil_ZU; 
      =     #Ventil_AUF; 
NETWORK
TITLE =

END_FUNCTION_BLOCK

Gruß
 
Zuletzt bearbeitet:
Zurück
Oben