Step 7 Pumpenansteuerung mit Stromstoßschaltung

m.funer

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Tag zusammen,

Ich steh gerade vor der Aufgabe eine Druckregelung zu programmieren, Schrittkette und sowie Visualisierung sind bereits fertig. Mir fehlt jetzt noch die Ansteuerung der Pumpen.

Hier eine Kurzbeschreibung was passieren soll:

(Schritt 1 und Schritt 2 sind Analogpumpen, deswegen sind diese außen vor)

Das Ganze soll über eine Stromstoßschaltung umgesetzt werden und immer abwechselnd eine von beiden Pumpen ansteuern.

Schritt 3 soll Pumpe 3 oder Pumpe 7 ansteuern
Schritt 4 soll Pumpe 4 oder Pumpe 8 ansteuern
Schritt 5 soll Pumpe 5 oder Pumpe 9 ansteuern
Schritt 6 soll Pumpe 6 oder Pumpe 10 ansteuern

Hab bereits viel recherchiert, aber steh vollkommen auf dem Schlauch, was die Umsetzung angeht! :confused:

Vielen Dank im vorraus!!
 
Hier eine Kurzbeschreibung was passieren soll:

Das Ganze soll über eine Stromstoßschaltung umgesetzt werden und immer abwechselnd eine von beiden Pumpen ansteuern.

Schritt 3 soll Pumpe 3 oder Pumpe 7 ansteuern
Schritt 4 soll Pumpe 4 oder Pumpe 8 ansteuern
Schritt 5 soll Pumpe 5 oder Pumpe 9 ansteuern
Schritt 6 soll Pumpe 6 oder Pumpe 10 ansteuern

ja frag halt denjenigen, der sich diese "Kurzbeschreibung" ausgedacht hat...
Woher solln wir hier wissen, wie die Anlage funktionieren soll:confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lies Dir die FAQ zum Stromstossschalter durch.

Damit kannst Du eine boolsche Variable umschalten, die angibt, ob die Pumpen 3-6 oder 7-10 aktiv sein sollen.
Wann umgeschaltet werden soll, geht aus Deiner Beschreibung bis dato nicht hervor.
Die einzelnen Pumpen sind dann Verknüpfungen von Schritt und der Stromstoss-Variablen.
 
;)Freie Interpretation durch GlasKugel und ungetestet:
Code:
VAR_INPUT
    ibPumpe3o7       : BOOL ; // 0: Pumpe 3 und Pumpe 7 AUS; 1: entweder Pumpe 3 oder Pumpe 7 EIN
    ibPumpe4o8       : BOOL ; // 0: Pumpe 4 und Pumpe 8 AUS; 1: entweder Pumpe 4 oder Pumpe 8 EIN
    ibPumpe5o9       : BOOL ; // 0: Pumpe 5 und Pumpe 9 AUS; 1: entweder Pumpe 5 oder Pumpe 9 EIN
    ibPumpe6o10      : BOOL ; // 0: Pumpe 6 und Pumpe 10 AUS; 1: entweder Pumpe 6 oder Pumpe 10 EIN
END_VAR             
                    
VAR_INPUT           
    obPumpe3         : BOOL ; // Ansteuerung Pumpe 3
    obPumpe4         : BOOL ; // Ansteuerung Pumpe 4
    obPumpe5         : BOOL ; // Ansteuerung Pumpe 5
    obPumpe6         : BOOL ; // Ansteuerung Pumpe 6
    obPumpe7         : BOOL ; // Ansteuerung Pumpe 7 
    obPumpe8         : BOOL ; // Ansteuerung Pumpe 8  
    obPumpe9         : BOOL ; // Ansteuerung Pumpe 9  
    obPumpe10        : BOOL ; // Ansteuerung Pumpe 10  
END_VAR             
                    
VAR_INPUT           
    sbPumpe3         : BOOL ; // Speicher für vorgewählte Pumpe: 0: Pumpe 7; 1: Pumpe 3
    sbPumpe4         : BOOL ; // Speicher für vorgewählte Pumpe: 0: Pumpe 8; 1: Pumpe 4
    sbPumpe5         : BOOL ; // Speicher für vorgewählte Pumpe: 0: Pumpe 9; 1: Pumpe 5
    sbPumpe6         : BOOL ; // Speicher für vorgewählte Pumpe: 0: Pumpe 10; 1: Pumpe 6
    sbPumpe3o7zuvor  : BOOL ; // Speicher für Zustand von ibPumpe3o7 im vorherigen Zyklus
    sbPumpe4o8zuvor  : BOOL ; // Speicher für Zustand von ibPumpe4o8 im vorherigen Zyklus
    sbPumpe5o9zuvor  : BOOL ; // Speicher für Zustand von ibPumpe5o9 im vorherigen Zyklus
    sbPumpe6o10zuvor : BOOL ; // Speicher für Zustand von ibPumpe6o10 im vorherigen Zyklus
END_VAR


sbPumpe3         := sbPumpe3 XOR (ibPumpe3o7 AND NOT sbPumpe3o7zuvor) ; // mit pos. Flanke umschalten
sbPumpe3o7zuvor  := ibPumpe3o7 ;
obPumpe3         := ibPumpe3o7 AND sbPumpe3 ;
obPumpe7         := ibPumpe3o7 AND NOT sbPumpe3 ;

sbPumpe4         := sbPumpe4 XOR (ibPumpe4o8 AND NOT sbPumpe4o8zuvor) ; // mit pos. Flanke umschalten
sbPumpe4o[COLOR=#0000cd][B]8[/B][/COLOR]zuvor  := ibPumpe4o8 ;
obPumpe4         := ibPumpe4o8 AND sbPumpe4 ;
obPumpe8         := ibPumpe4o8 AND NOT sbPumpe4 ;

sbPumpe5         := sbPumpe5 XOR (ibPumpe5o9 AND NOT sbPumpe5o9zuvor) ; // mit pos. Flanke umschalten
sbPumpe5o[COLOR=#0000cd][B]9[/B][/COLOR]zuvor  := ibPumpe5o9 ;
obPumpe5         := ibPumpe5o9 AND sbPumpe5 ;
obPumpe9         := ibPumpe5o9 AND NOT sbPumpe5 ;

sbPumpe6         := sbPumpe6 XOR (ibPumpe6o10 AND NOT sbPumpe6o10zuvor) ; // mit pos. Flanke umschalten
sbPumpe6o10zuvor := ibPumpe6o10 ;
obPumpe6         := ibPumpe6o10 AND sbPumpe6 ;
obPumpe10        := ibPumpe6o10 AND NOT sbPumpe6 ;
Über jeden der 4 Eingänge wird eines der 4 PumpenPaare ein- bzw. ausgeschaltet und die Auswahl der Pumpe gewechselt.
Wann welche Schritte welche Aktion ansteuern, ist hier aussen vor gelassen.
 
Zuletzt bearbeitet:
Code:
...

sbPumpe4         := sbPumpe4 XOR (ibPumpe4o8 AND NOT sbPumpe4o8zuvor) ; // mit pos. Flanke umschalten
sbPumpe4o[B][COLOR=#ff0000]7[/COLOR][/B]zuvor  := ibPumpe4o8 ;
obPumpe4         := ibPumpe4o8 AND sbPumpe4 ;
obPumpe8         := ibPumpe4o8 AND NOT sbPumpe4 ;

sbPumpe5         := sbPumpe5 XOR (ibPumpe5o9 AND NOT sbPumpe5o9zuvor) ; // mit pos. Flanke umschalten
sbPumpe5o[B][COLOR=#ff0000]7[/COLOR][/B]zuvor  := ibPumpe5o9 ;
obPumpe5         := ibPumpe5o9 AND sbPumpe5 ;
obPumpe9         := ibPumpe5o9 AND NOT sbPumpe5 ;

...
Da haben sich (Ab-)Tippfehler beim Copy/Paste eingeschlichen...
;)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wäre es möglich das Ganze so auch in FUP zu programmieren?
Möglich ist das. ;)
Ich versuch's mal für 1 PumpenPaar:
Code:
                   +-----+
                   | AND |
ibPumpe3o7      ---|     |      +-----+
                   |     |      | XOR |
sbPumpe3o7zuvor --o|     |------|     |
                   +-----+      |     |      sbPumpe3
                                |     |      +-----+
                sbPumpe3     ---|     |------|     |
                                +-----+      +-----+
                             
                                             sbPumpe3o7zuvor
                                             +-----+
                             ibPumpe3o7   ---|     |
                                             +-----+
                             
                   +-----+                              
                   | AND |                              
ibPumpe3o7      ---|     |                   obPumpe3                                               
                   |     |                   +-----+                         
sbPumpe3        ---|     |-------------------|     |                         
                   +-----+                   +-----+                            
                                       
                   +-----+                                           
                   | AND |                                           
ibPumpe3o7      ---|     |                   obPumpe7                                               
                   |     |                   +-----+                         
sbPumpe3        --o|     |-------------------|     |                         
                   +-----+                   +-----+
Dasgleiche noch dreimal für die anderen PumpenPaare mit den entsprechenden Variablen.

PS:
Das Signal 'sbPumpe3' wird durch das XOR negiert, wenn der andere Eingang des XOR TRUE ist. Dieser andere Eingang darf immer nur 1 Zyklus lang TRUE sein, wenn die Negation erfolgen soll.
Das wird durch die UND-Verknüpfung erreicht, die den aktuellen Zustand von 'ibPumpe3o7' mit dem Zustand im vorherigen Zyklus gespeichert in 'sbPumpe3o7zuvor' verknüpft.
 
Zuletzt bearbeitet:
Zurück
Oben