UH07 Original .awl Bausteine von Andi importiert
This commit is contained in:
@@ -1,203 +1,213 @@
|
||||
=== FB 92: MZylinder [STL] ===
|
||||
INTERFACE:
|
||||
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)
|
||||
Output:
|
||||
ZylAst : Bool // Vorwärts-Ausgang des Antriebs
|
||||
ZylGst : Bool // Rückwärts-Ausgang des Antriebs
|
||||
InOut:
|
||||
Static:
|
||||
Stat : "UZylinder"
|
||||
Temp:
|
||||
Constant:
|
||||
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
|
||||
|
||||
--- NW 1: Zeitwert löschen ---
|
||||
A ZylAst // Zylinder fährt nach AST
|
||||
A(
|
||||
O Stat.B_AST // Hat Endstellung erreicht
|
||||
ON Stat.Old_Ast // Fuhr letzten Zyklus anders
|
||||
)
|
||||
O
|
||||
AN ZylAst // Zylinder fährt nach GST
|
||||
A(
|
||||
O Stat.B_GST // Hat Endstellung erreicht
|
||||
O Stat.Old_Ast // Fuhr letzten Zyklus anders
|
||||
)
|
||||
JCN Nw02
|
||||
VAR_OUTPUT
|
||||
ZylAst : Bool; // Vorwärts-Ausgang des Antriebs
|
||||
ZylGst : Bool; // Rückwärts-Ausgang des Antriebs
|
||||
END_VAR
|
||||
|
||||
tdel: L 0 // Zeitwert löschen
|
||||
T Stat.T_Zelle
|
||||
|
||||
A ZylAst // Zylinder fährt nach AST
|
||||
= Stat.Old_Ast // Fuhr letzten Zyklus nach AST
|
||||
|
||||
JU Nw05
|
||||
|
||||
--- NW 2: AST-Erreichtzeit abgelaufen ? ---
|
||||
Nw02: L Stat.T_AST_Akt // Gewollter Zeitwert
|
||||
L 9999 // angegeben ?
|
||||
<>I // Ja !
|
||||
JC w020
|
||||
|
||||
L T_Ast // Sollwert übergeben
|
||||
T Stat.T_AST_Akt // Gewollter Zeitwert
|
||||
|
||||
w020: A ZylAst // Zylinder fährt nach AST ?
|
||||
JCN 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
|
||||
JC tdel // Zeit nullen
|
||||
|
||||
JU Nw03
|
||||
|
||||
en02: AN Stat.Typ5_3 // Zylinder hält seine Stellung !
|
||||
R Stat.B_AST
|
||||
VAR
|
||||
Stat : "UZylinder";
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 3: GST-Erreichtzeit abgelaufen ? ---
|
||||
Nw03: L Stat.T_GST_Akt // Gewollter Zeitwert
|
||||
L 9999 // angegeben ?
|
||||
<>I // Ja !
|
||||
JC w030
|
||||
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;
|
||||
|
||||
L T_Gst // Sollwert übergeben
|
||||
T Stat.T_GST_Akt // Gewollter Zeitwert
|
||||
tdel: L 0;//Zeitwert löschen
|
||||
T #Stat.T_Zelle;
|
||||
|
||||
w030: A( // Zylinder fährt nach GST ?
|
||||
O Stat.Typ5_2 // Zylinder mit 2-facher Ansteuerung
|
||||
O Stat.Typ5_3
|
||||
)
|
||||
A ZylGst
|
||||
O
|
||||
A Stat.Typ3_2 // Zylinder mit 1-facher Ansteuerung
|
||||
AN ZylAst
|
||||
JCN en03
|
||||
U #ZylAst;//Zylinder fährt nach AST
|
||||
= #Stat.Old_Ast;//Fuhr letzten Zyklus nach AST
|
||||
|
||||
SET
|
||||
R Stat.B_AST
|
||||
SPA Nw05;
|
||||
NETWORK
|
||||
TITLE = AST-Erreichtzeit abgelaufen ?
|
||||
Nw02: L #Stat.T_AST_Akt;//Gewollter Zeitwert
|
||||
L 9999;//angegeben ?
|
||||
<>I;//Ja !
|
||||
SPB w020;
|
||||
|
||||
L Stat.T_Zelle // Aktueller Zeitwert
|
||||
L Stat.T_GST_Akt // Gewollter Zeitwert erreicht ?
|
||||
>=I
|
||||
S Stat.B_GST // Zylinder hat GST erreicht
|
||||
JC tdel // Zeit nullen
|
||||
L #T_Ast;//Sollwert übergeben
|
||||
T #Stat.T_AST_Akt;//Gewollter Zeitwert
|
||||
|
||||
JU Nw04
|
||||
w020: U #ZylAst;//Zylinder fährt nach AST ?
|
||||
SPBN en02;
|
||||
|
||||
en03: AN Stat.Typ5_3 // Zylinder hält seine Stellung !
|
||||
R Stat.B_GST
|
||||
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
|
||||
|
||||
--- NW 4: Zeit läuft ---
|
||||
Nw04: A( // Zylinder fährt nach GST ?
|
||||
O Stat.Typ5_2 // Zylinder mit 2-facher Ansteuerung
|
||||
O Stat.Typ5_3
|
||||
)
|
||||
AN ZylGst // Zylinder wird nicht angesteuert
|
||||
AN ZylAst
|
||||
ON "100ms-Impuls" // nur als Impuls
|
||||
JC Nw05
|
||||
SPA Nw03;
|
||||
|
||||
L Stat.T_Zelle
|
||||
L "MW2" // 100ms-Takte
|
||||
+I
|
||||
T Stat.T_Zelle
|
||||
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;
|
||||
|
||||
--- NW 5: Undefinierte Zustände / Befehle ---
|
||||
Nw05: A Automatik // Automatik + Hand aktiv
|
||||
A Handbetrieb
|
||||
O
|
||||
AN Automatik // keine Betriebsart
|
||||
AN Handbetrieb
|
||||
O
|
||||
A Stat.Ast // Arbeitsstellung- + Grundstellungfahren aktiv
|
||||
A Stat.Gst
|
||||
O
|
||||
AN Stat.Typ3_2 // Undefinierter Ventil-Typ
|
||||
AN Stat.Typ5_2
|
||||
AN Stat.Typ5_3
|
||||
O
|
||||
A Stat.Typ3_2
|
||||
A(
|
||||
O Stat.Typ5_2
|
||||
O Stat.Typ5_3
|
||||
)
|
||||
O
|
||||
A Stat.Typ5_2
|
||||
A Stat.Typ5_3
|
||||
JCN en06 // Zylinderstellung bleibt eingefroren
|
||||
L #T_Gst;//Sollwert übergeben
|
||||
T #Stat.T_GST_Akt;//Gewollter Zeitwert
|
||||
|
||||
A Stat.Typ5_3 // Zylinder hält seine Stellung !
|
||||
R Stat.Ast // Bewegungsbits löschen
|
||||
R Stat.Gst
|
||||
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;
|
||||
|
||||
BEU
|
||||
SET;
|
||||
R #Stat.B_AST;
|
||||
|
||||
en06: NOP 0
|
||||
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
|
||||
|
||||
--- NW 6: Zylinder auf Arbeitstellung fahren ---
|
||||
A Stat.Ast
|
||||
= ZylAst
|
||||
SPA Nw04;
|
||||
|
||||
en03: UN #Stat.Typ5_3;//Zylinder hält seine Stellung !
|
||||
R #Stat.B_GST;
|
||||
|
||||
--- NW 7: Zylinder auf Grundstellung fahren ---
|
||||
A(
|
||||
O Stat.Typ5_2
|
||||
O Stat.Typ5_3
|
||||
)
|
||||
A Stat.Gst
|
||||
= ZylGst
|
||||
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;
|
||||
|
||||
--- NW 8: Daten, die zurückgesetzt werden ---
|
||||
A Stat.Typ5_3 // Zylinder hält seine Stellung !
|
||||
R Stat.Ast // Bewegungsbits löschen
|
||||
R Stat.Gst
|
||||
A Stat.Typ3_2
|
||||
R Stat.Gst // Es gibt kein GST fahren !
|
||||
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;
|
||||
|
||||
--- NW 9: Ausgänge übergeben an OP übergeben ---
|
||||
A ZylGst
|
||||
= Stat.OP_Out_GST
|
||||
BEA;
|
||||
|
||||
A ZylAst
|
||||
= Stat.OP_Out_AST
|
||||
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;
|
||||
|
||||
--- NW 10: Statistik ---
|
||||
A ZylAst
|
||||
Rise Stat.FP_AST
|
||||
JCN AST2
|
||||
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 !
|
||||
|
||||
L Stat.Statistik.AST_Schaltungen
|
||||
L DINT#1
|
||||
+D
|
||||
T Stat.Statistik.AST_Schaltungen
|
||||
NETWORK
|
||||
TITLE = Ausgänge übergeben an OP übergeben
|
||||
U #ZylGst;
|
||||
= #Stat.OP_Out_GST;
|
||||
|
||||
AST2: A ZylGst
|
||||
A Stat.Typ5_3
|
||||
Rise Stat.FP_AST2
|
||||
JCN StatEnde
|
||||
U #ZylAst;
|
||||
= #Stat.OP_Out_AST;
|
||||
|
||||
L Stat.Statistik.AST2_Schaltungen
|
||||
L DINT#1
|
||||
+D
|
||||
T Stat.Statistik.AST2_Schaltungen
|
||||
NETWORK
|
||||
TITLE = Statistik
|
||||
U #ZylAst;
|
||||
FP #Stat.FP_AST;
|
||||
SPBN AST2;
|
||||
|
||||
StatEnde: NOP 0
|
||||
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;
|
||||
|
||||
--- NW 11: Ende ---
|
||||
BE
|
||||
L #Stat.Statistik.AST2_Schaltungen;
|
||||
L DINT#1;
|
||||
+D;
|
||||
T #Stat.Statistik.AST2_Schaltungen;
|
||||
|
||||
StatEnde: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
Reference in New Issue
Block a user