214 lines
4.7 KiB
Plaintext
214 lines
4.7 KiB
Plaintext
FUNCTION_BLOCK "MZylinder"
|
|
TITLE = Zylinder mit 3/2 oder 5/2+3- Wegeventil und Endlagensimulation
|
|
{ S7_Optimized_Access := 'FALSE' }
|
|
AUTHOR : IBAE
|
|
VERSION : 0.1
|
|
VAR_INPUT
|
|
Automatik : Bool; // Automatikbetrieb ist aktiv
|
|
Handbetrieb : Bool; // Handbetrieb ist aktiv
|
|
T_Ast : Int := 5; // Zeit bis AST erreicht ist (*100ms)
|
|
T_Gst : Int := 5; // Zeit bis GST erreicht ist (*100ms)
|
|
END_VAR
|
|
|
|
VAR_OUTPUT
|
|
ZylAst : Bool; // Vorwärts-Ausgang des Antriebs
|
|
ZylGst : Bool; // Rückwärts-Ausgang des Antriebs
|
|
END_VAR
|
|
|
|
VAR
|
|
Stat : "UZylinder";
|
|
END_VAR
|
|
|
|
|
|
BEGIN
|
|
NETWORK
|
|
TITLE = Zeitwert löschen
|
|
U #ZylAst;//Zylinder fährt nach AST
|
|
U(;
|
|
O #Stat.B_AST;//Hat Endstellung erreicht
|
|
ON #Stat.Old_Ast;//Fuhr letzten Zyklus anders
|
|
);
|
|
O;
|
|
UN #ZylAst;//Zylinder fährt nach GST
|
|
U(;
|
|
O #Stat.B_GST;//Hat Endstellung erreicht
|
|
O #Stat.Old_Ast;//Fuhr letzten Zyklus anders
|
|
);
|
|
SPBN Nw02;
|
|
|
|
tdel: L 0;//Zeitwert löschen
|
|
T #Stat.T_Zelle;
|
|
|
|
U #ZylAst;//Zylinder fährt nach AST
|
|
= #Stat.Old_Ast;//Fuhr letzten Zyklus nach AST
|
|
|
|
SPA Nw05;
|
|
NETWORK
|
|
TITLE = AST-Erreichtzeit abgelaufen ?
|
|
Nw02: L #Stat.T_AST_Akt;//Gewollter Zeitwert
|
|
L 9999;//angegeben ?
|
|
<>I;//Ja !
|
|
SPB w020;
|
|
|
|
L #T_Ast;//Sollwert übergeben
|
|
T #Stat.T_AST_Akt;//Gewollter Zeitwert
|
|
|
|
w020: U #ZylAst;//Zylinder fährt nach AST ?
|
|
SPBN en02;
|
|
|
|
SET;
|
|
R #Stat.B_GST;
|
|
|
|
L #Stat.T_Zelle;//Aktueller Zeitwert
|
|
L #Stat.T_AST_Akt;//Gewollter Zeitwert erreicht ?
|
|
>=I;
|
|
S #Stat.B_AST;//Zylinder hat AST erreicht
|
|
SPB tdel;//Zeit nullen
|
|
|
|
SPA Nw03;
|
|
|
|
en02: UN #Stat.Typ5_3;//Zylinder hält seine Stellung !
|
|
R #Stat.B_AST;
|
|
|
|
NETWORK
|
|
TITLE = GST-Erreichtzeit abgelaufen ?
|
|
Nw03: L #Stat.T_GST_Akt;//Gewollter Zeitwert
|
|
L 9999;//angegeben ?
|
|
<>I;//Ja !
|
|
SPB w030;
|
|
|
|
L #T_Gst;//Sollwert übergeben
|
|
T #Stat.T_GST_Akt;//Gewollter Zeitwert
|
|
|
|
w030: U(;//Zylinder fährt nach GST ?
|
|
O #Stat.Typ5_2;//Zylinder mit 2-facher Ansteuerung
|
|
O #Stat.Typ5_3;
|
|
);
|
|
U #ZylGst;
|
|
O;
|
|
U #Stat.Typ3_2;//Zylinder mit 1-facher Ansteuerung
|
|
UN #ZylAst;
|
|
SPBN en03;
|
|
|
|
SET;
|
|
R #Stat.B_AST;
|
|
|
|
L #Stat.T_Zelle;//Aktueller Zeitwert
|
|
L #Stat.T_GST_Akt;//Gewollter Zeitwert erreicht ?
|
|
>=I;
|
|
S #Stat.B_GST;//Zylinder hat GST erreicht
|
|
SPB tdel;//Zeit nullen
|
|
|
|
SPA Nw04;
|
|
|
|
en03: UN #Stat.Typ5_3;//Zylinder hält seine Stellung !
|
|
R #Stat.B_GST;
|
|
|
|
NETWORK
|
|
TITLE = Zeit läuft
|
|
Nw04: U(;//Zylinder fährt nach GST ?
|
|
O #Stat.Typ5_2;//Zylinder mit 2-facher Ansteuerung
|
|
O #Stat.Typ5_3;
|
|
);
|
|
UN #ZylGst;//Zylinder wird nicht angesteuert
|
|
UN #ZylAst;
|
|
ON "100ms-Impuls";//nur als Impuls
|
|
SPB Nw05;
|
|
|
|
L #Stat.T_Zelle;
|
|
L "MW2" ;//100ms-Takte
|
|
+I;
|
|
T #Stat.T_Zelle;
|
|
|
|
NETWORK
|
|
TITLE = Undefinierte Zustände / Befehle
|
|
Nw05: U #Automatik;//Automatik + Hand aktiv
|
|
U #Handbetrieb;
|
|
O;
|
|
UN #Automatik;//keine Betriebsart
|
|
UN #Handbetrieb;
|
|
O;
|
|
U #Stat.Ast;//Arbeitsstellung- + Grundstellungfahren aktiv
|
|
U #Stat.Gst;
|
|
O;
|
|
UN #Stat.Typ3_2;//Undefinierter Ventil-Typ
|
|
UN #Stat.Typ5_2;
|
|
UN #Stat.Typ5_3;
|
|
O;
|
|
U #Stat.Typ3_2;
|
|
U(;
|
|
O #Stat.Typ5_2;
|
|
O #Stat.Typ5_3;
|
|
);
|
|
O;
|
|
U #Stat.Typ5_2;
|
|
U #Stat.Typ5_3;
|
|
SPBN en06;//Zylinderstellung bleibt eingefroren
|
|
|
|
U #Stat.Typ5_3;//Zylinder hält seine Stellung !
|
|
R #Stat.Ast;//Bewegungsbits löschen
|
|
R #Stat.Gst;
|
|
|
|
BEA;
|
|
|
|
en06: NOP 0;
|
|
NETWORK
|
|
TITLE = Zylinder auf Arbeitstellung fahren
|
|
U #Stat.Ast;
|
|
= #ZylAst;
|
|
|
|
NETWORK
|
|
TITLE = Zylinder auf Grundstellung fahren
|
|
U(;
|
|
O #Stat.Typ5_2;
|
|
O #Stat.Typ5_3;
|
|
);
|
|
U #Stat.Gst;
|
|
= #ZylGst;
|
|
|
|
NETWORK
|
|
TITLE = Daten, die zurückgesetzt werden
|
|
U #Stat.Typ5_3;//Zylinder hält seine Stellung !
|
|
R #Stat.Ast;//Bewegungsbits löschen
|
|
R #Stat.Gst;
|
|
U #Stat.Typ3_2;
|
|
R #Stat.Gst;//Es gibt kein GST fahren !
|
|
|
|
NETWORK
|
|
TITLE = Ausgänge übergeben an OP übergeben
|
|
U #ZylGst;
|
|
= #Stat.OP_Out_GST;
|
|
|
|
U #ZylAst;
|
|
= #Stat.OP_Out_AST;
|
|
|
|
NETWORK
|
|
TITLE = Statistik
|
|
U #ZylAst;
|
|
FP #Stat.FP_AST;
|
|
SPBN AST2;
|
|
|
|
L #Stat.Statistik.AST_Schaltungen;
|
|
L DINT#1;
|
|
+D;
|
|
T #Stat.Statistik.AST_Schaltungen;
|
|
|
|
AST2: U #ZylGst;
|
|
U #Stat.Typ5_3;
|
|
FP #Stat.FP_AST2;
|
|
SPBN StatEnde;
|
|
|
|
L #Stat.Statistik.AST2_Schaltungen;
|
|
L DINT#1;
|
|
+D;
|
|
T #Stat.Statistik.AST2_Schaltungen;
|
|
|
|
StatEnde: NOP 0;
|
|
|
|
NETWORK
|
|
TITLE = Ende
|
|
BE;
|
|
|
|
END_FUNCTION_BLOCK
|
|
|