TIA Lösungsansätze für mehrstufige Ventilregelung

Magni

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

ich möchte per Regelung zwei Ventile gestaffelt öffnen lassen. D.h. : zuerst öffnet ein Ventil entsprechend Regelung bis 100%, dann öffnet das zweite ebenso geregelt. Andersherum soll es auch so sein. Zuerst schließt das zweite Ventil, dann das erste. Das erste Ventil soll jeweils auf 100% festgetackert bleiben solange das zweite Ventil nicht komplett zu ist.
Bei den alten Reglern cont_c gab es ja den Ausgang QLMN_HLM und QLMN_LLM. Und man konnte die Regelung im Handmodus quasi festhalten. Bei den Compact_PID scheint es die nicht mehr zu geben.

Was habt Ihr da für Lösungsansätze?

Gruß Heiko
 
Zuletzt bearbeitet:
1. Ventil bekommt Stellwert *2, (ev. dann bei 100% begrenzen wenn das mit Stellwert >100% Probleme hat.
2. Ventil bekommt (Stellwert -50%) *2
 
Gibt es in TIA ein Scale-Baustein? Der Reglerausgang 0-100 wird dann auf die Ventile jeweils scaliert, d.h. 0-20 sind für das V1 0-100 usw.

Jepp... es gibt den Scale wie bei der 300-er. Du findest ihn unter "Umwandler" > "Legacy". Ist der gleiche wie bei den älteren Versionen.

Gruß Heiko
 
Gibt es in TIA ein Scale-Baustein? Der Reglerausgang 0-100 wird dann auf die Ventile jeweils scaliert, d.h. 0-20 sind für das V1 0-100 usw.

1. Ventil bekommt Stellwert *2, (ev. dann bei 100% begrenzen wenn das mit Stellwert >100% Probleme hat.
2. Ventil bekommt (Stellwert -50%) *2

Das sind beides interessante Ansätze und sie offenbaren mir sogar die Möglichkeit die Ventile unterschiedlich abzustimmen.

Danke.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier mal einen Ansatz wie ich sowas mal Umgesetzt hab.

Splitrange.jpg

Und hier der Quelle zum Baustein

Code:
 FUNCTION "REAL_Skalier_SCL" : Void
TITLE = REAL_Skalier_SCL
{ S7_Optimized_Access := 'FALSE' }
FAMILY : Skalier
VERSION : 0.1
//REAL_Skalier_SCL
   VAR_INPUT 
      IN_MIN : Real;
      IN_REAL : Real;
      IN_MAX : Real;
      OUT_MIN : Real;
      OUT_MAX : Real;
   END_VAR
   VAR_OUTPUT 
      OUT_REAL : Real;
   END_VAR

BEGIN
 IF #IN_REAL<#IN_MIN THEN
        #OUT_REAL := #OUT_MIN;
     ELSE
     IF #IN_REAL>#IN_MAX THEN
         #OUT_REAL := #OUT_MAX;
     ELSE
     IF #IN_REAL>=#IN_MIN AND #IN_REAL<=#IN_MAX THEN
         #OUT_REAL := (((#IN_REAL - #IN_MIN) / ((#IN_MAX - #IN_MIN) / 100)) * ((#OUT_MAX - #OUT_MIN) / 100)) + #OUT_MIN;
     END_IF;
     END_IF;
 END_IF;
 
END_FUNCTION

Bram
 
Zurück
Oben