UH07 Original .awl Bausteine von Andi importiert

This commit is contained in:
2026-07-08 12:13:12 +02:00
parent 6c1a343fa8
commit 2cf730b338
125 changed files with 49373 additions and 41019 deletions
@@ -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