This commit is contained in:
2026-07-08 09:53:50 +02:00
481 changed files with 103262 additions and 253 deletions
@@ -0,0 +1,12 @@
=== InstanceDB 199: DHWtoAMR_Antriebe [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
MA0203 : "MAntrieb_PowerSave"
MA0204 : "MAntrieb_PowerSave"
MA0205 : "MAntrieb_PowerSave"
MA0130 : "MAntrieb_PowerSave"
MA0131 : "MAntrieb_PowerSave"
MA0116 : "MAntrieb_PowerSave"
@@ -0,0 +1,18 @@
=== InstanceDB 190: DHWtoAMR_Sensoren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
An_BG3065 : "MSensoren"
Stau_BG3062 : "MSensoren"
Stau_BG3006 : "MSensoren"
Stau_BG3017 : "MSensoren"
Stau_BG3002 : "MSensoren"
Stau_BG3001 : "MSensoren"
Stau_BG3561 : "MSensoren"
Stau_BG3557 : "MSensoren"
Stau_BG3563 : "MSensoren"
Stau_BG3564 : "MSensoren"
Stau_BG3566 : "MSensoren"
Stau_BG3567 : "MSensoren"
@@ -0,0 +1,12 @@
=== InstanceDB 192: DHWtoAMR_Zylinder [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3061 : "MZylinder"
Schleuse_3005 : "MZylinder"
Schleuse_3004 : "MZylinder"
Schleuse_3000 : "MZylinder"
Schleuse_3562 : "MZylinder"
Schleuse_3565 : "MZylinder"
@@ -0,0 +1,113 @@
=== FB 199: HWtoAMR_Antriebe [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
MA0203 : "MAntrieb_PowerSave"
MA0204 : "MAntrieb_PowerSave"
MA0205 : "MAntrieb_PowerSave"
MA0130 : "MAntrieb_PowerSave"
MA0131 : "MAntrieb_PowerSave"
MA0116 : "MAntrieb_PowerSave"
Temp:
Auto : Bool // Automatik Linie ist aktiv
Hand : Bool // Hand Linie ist aktiv
BereichErr : Bool // Bereichsstörung -> Antrieb stoppen
QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN
FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN
Quit : Bool // Motorschutz-Störung quittieren
Qok : Bool // Motorschutz ok
Jog1 : Bool // Geschwindigkeit 1
Jog2 : Bool // Geschwindigkeit 2
Betrieb : Bool // Betriebsart aktiv
FC105_RET : Word // Returnwert von FC105
Antrieb1 : Bool // Antrieb dazuschalten
Antrieb2 : Bool // Antrieb dazuschalten
F1 : Bool // Geschwindigkeit 1 aktiviert
F2 : Bool // Geschwindigkeit 2 aktiviert
F3 : Bool // Geschwindigkeit 3 aktiviert
Constant:
--- NW 1: Übergabe des Bereichstatus System UC061/A01 ---
A "DAMR_Bereich".A01_UH06.Automatik
AN "DAMR_Bereich".A01_UH06.Handbetrieb
= Auto
CLR
= Hand
A "DAMR_Bereich".A01_UC061.BereichErr
O "DAMR_Bereich".A01_UZ6102.Area_Stop
O "DAMR_Bereich".A01_UZ6103.Area_Stop
O "DAMR_Bereich".A01_UZ6104.Area_Stop
= BereichErr
AN BereichErr
L S5T#1S
OnDelay "T192"
A "T192"
= QKontroll
= FuKontroll
A "DAMR_Bereich".A01_UC061.StOk_aktiv
= Quit
--- NW 2: MA0203 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0203", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0203", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0203, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 3: MA0204 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0204", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=180, Antriebrueck:=?, Antriebvor:="MA0204", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0204, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 4: MA0205 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0205", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0205", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0205, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 5: Übergabe des Bereichstatus System UH06_Halle 4/A01 ---
A "DAMR_Bereich".A01_UH06.Automatik
AN "DAMR_Bereich".A01_UH06.Handbetrieb
= Auto
CLR
= Hand
A "DAMR_Bereich".A01_UH06_Halle4.BereichErr
= BereichErr
AN BereichErr
L S5T#1S
OnDelay "T191"
A "T191"
= QKontroll
= FuKontroll
A "DAMR_Bereich".A01_UH06.StOk_aktiv
= Quit
--- NW 6: MA0130 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0130", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0130", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0130, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 7: MA0131 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0131", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0131", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0131, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 8: MA0116 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0116", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0116", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0116, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 9: Ende ---
BE
@@ -0,0 +1,82 @@
=== FB 190: HWtoAMR_Sensoren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
An_BG3065 : "MSensoren" // Stau am Sensor Einfahrt MA0203
Stau_BG3062 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3006 : "MSensoren" // Stau am Sensor Einfahrt MA0205
Stau_BG3017 : "MSensoren" // Stau am Sensor Mitte MA0205
Stau_BG3002 : "MSensoren" // Stau hinter BST 3
Stau_BG3001 : "MSensoren" // Stau hinter BST 3
Stau_BG3561 : "MSensoren" // Stau am Sensor Einfahrt MA0060
Stau_BG3557 : "MSensoren" // Stau am Sensor Einfahrt MA0060
Stau_BG3563 : "MSensoren" // Stau am Sensor Einfahrt MA0116
Stau_BG3564 : "MSensoren" // Stau am Sensor Gefälle vor BST 4
Stau_BG3566 : "MSensoren" // Stau am Sensor Gefälle nach BST 4
Stau_BG3567 : "MSensoren" // Stau am Sensor Einfahrt MA0061
Temp:
T_Ein : Int // Vorgabe Einschaltverzögerung
T_Aus : Int // Zwischenspeicher Ausschaltverzögerung
F1 : Bool // Geschwindigkeit 1 aktiviert
F2 : Bool // Geschwindigkeit 2 aktiviert
F3 : Bool // Geschwindigkeit 3 aktiviert
ESensor : Bool // Sensoren
Antrieb : Bool
VReal : Real // GeschwindigkeitinReal
Zeit : Int // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool // Zeit aktivieren
Constant:
--- NW 1: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3065", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 2: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3062", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 3: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3006", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 4: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3017", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 5: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3002", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 6: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3001", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 7: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3561", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 8: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3561", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 9: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3563", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 10: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3564", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 11: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3566", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 12: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3567", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 13: Ende ---
BE
@@ -0,0 +1,66 @@
=== FB 192: HWtoAMR_Zylinder [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3061 : "MZylinder" //
Schleuse_3005 : "MZylinder"
Schleuse_3004 : "MZylinder"
Schleuse_3000 : "MZylinder"
Schleuse_3562 : "MZylinder"
Schleuse_3565 : "MZylinder" //
Temp:
Auto : Bool // Automatik ist aktiv
Hand : Bool // Hand ist aktiv
ZylAst : Bool // Zylinder ansteuern
Constant:
--- NW 1: Übergabe des Bereichstatus System UC061/A01 ---
A "DAMR_Bereich".A01_UH06.Automatik
AN "DAMR_Bereich".A01_UH06.Handbetrieb
= Auto
A "DAMR_Bereich".A01_UC061.BereichErr
O "DAMR_Bereich".A01_UZ6102.Area_Stop
O "DAMR_Bereich".A01_UZ6103.Area_Stop
O "DAMR_Bereich".A01_UZ6104.Area_Stop
JC Next // Zylinder-Stellung nicht mehr ändern
--- NW 2: Schleuse_3061 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3061", ZylGst:=?)
--- NW 3: Schleuse_3005 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3005", ZylGst:=?)
--- NW 4: Schleuse_3004 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3004", ZylGst:=?)
--- NW 5: Übergabe des Bereichstatus System UH06 / A01 ---
Next: A "DAMR_Bereich".A01_UH06.Automatik
AN "DAMR_Bereich".A01_UH06.Handbetrieb
= Auto
A "DAMR_Bereich".A01_UH06_Halle4.BereichErr
JC Next2 // Zylinder-Stellung nicht mehr ändern
--- NW 6: Schleuse_3000 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3000", ZylGst:=?)
--- NW 7: Schleuse_3562 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3562", ZylGst:=?)
--- NW 8: Schleuse_3565 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3565", ZylGst:=?)
--- NW 9: Ende ---
Next2: BE
@@ -0,0 +1,23 @@
=== FC 100: HWTtoAMR_Bereich [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: Baustein-Aufrufe ---
CALL FB "HWtoAMR_Sensoren" ,
CALL FB "HWtoAMROmniFahren" ,
CALL FB "HWtoAMR_Zylinder" ,
CALL FB "HWtoAMR_Antriebe" ,
--- NW 2: Ende ---
BE
@@ -0,0 +1,16 @@
=== InstanceDB 128: DHWtoAMROmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Frei200 : Array[1..100] of Int
Schleuse_3061 : "MHMOmniSchleuse_Plus"
Schleuse_3005 : "MHMOmniSchleuse"
Schleuse_3004 : "MHMOmniSchleuse"
Schleuse_3000 : "MHMOmniSchleuse"
Bereich_3555 : "MHMOmniBereich_Plus"
Schleuse_3562 : "MHMOmniSchleuse"
Bereich_3556 : "MHMOmniBereich_Plus"
Schleuse_3565 : "MHMOmniSchleuse"
Übergang_3063 : "MHMÜbergang_ohne_Schleuse_AMR"
@@ -0,0 +1,214 @@
=== FB 128: HWtoAMROmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Frei200 : Array[1..100] of Int
Schleuse_3061 : "MHMOmniSchleuse_Plus"
Schleuse_3005 : "MHMOmniSchleuse"
Schleuse_3004 : "MHMOmniSchleuse"
Schleuse_3000 : "MHMOmniSchleuse"
Bereich_3555 : "MHMOmniBereich_Plus"
Schleuse_3562 : "MHMOmniSchleuse"
Bereich_3556 : "MHMOmniBereich_Plus"
Schleuse_3565 : "MHMOmniSchleuse"
Übergang_3063 : "MHMÜbergang_ohne_Schleuse_AMR"
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_vor_Schleuse : Bool
B_nach_Schleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Antrieb_nicht_stoppen : Bool
Constant:
--- NW 1: Systemzeug ---
// HW>AMR-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_3061.Dyn.Sk.Auto_akt
= Schleuse_3005.Dyn.Sk.Auto_akt
= Schleuse_3004.Dyn.Sk.Auto_akt
= Schleuse_3000.Dyn.Sk.Auto_akt
= Bereich_3555.Dyn.Sk.Auto_akt
= Schleuse_3562.Dyn.Sk.Auto_akt
= Bereich_3556.Dyn.Sk.Auto_akt
= Schleuse_3565.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UC061.BereichErr
= Schleuse_3061.Dyn.Sk.Bereich_ok
= Schleuse_3005.Dyn.Sk.Bereich_ok
= Schleuse_3004.Dyn.Sk.Bereich_ok
AN "DAMR_Bereich".A01_UH06_Halle4.BereichErr
= Schleuse_3000.Dyn.Sk.Bereich_ok
= Bereich_3555.Dyn.Sk.Bereich_ok
= Schleuse_3562.Dyn.Sk.Bereich_ok
= Bereich_3556.Dyn.Sk.Bereich_ok
= Schleuse_3565.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren UZ6104 ---
A "DAMR_Bereich".A01_UZ6104.StOk_aktiv
O "DAMR_Bereich".A01_UC061.StOk_aktiv
O "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 3: Übergang 3063 (Übernahme von Outbound / UH07) ---
// Schnittstelle von Outbund:
A "DSchnittstelle_zu_Outbound".From_UH07.MA0203_A_start
S "DHWtoAMR_Antriebe".MA0203.Stat.A_start
A "DSchnittstelle_zu_Outbound".From_UH07.MA0203_A_vor
S "DHWtoAMR_Antriebe".MA0203.Stat.A_vor
A "DSchnittstelle_zu_Outbound".From_UH07.MA0203_A_start
O "DSchnittstelle_zu_Outbound".From_UH07.MA0203_A_vor
= B_vor_Schleuse
// Schnittstelle zu Outbound:
A "MA0203"
= "DSchnittstelle_zu_Outbound".To_UH07.MA0203_aktiv
A Schleuse_3061.Dyn.Sk.Bereich_ok // Kein Sensor in UH06 verbaut!
A Schleuse_3061.Dyn.Sk.Auto_akt
AN "Übergang_3063"."Am_Übergang".Stat.B_Akt
= "DSchnittstelle_zu_Outbound".To_UH07.MA0203_kein_Stau
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:=?, B_Am_Übergang:="BG3063", B_Stau_Antrieb_plus:="DHWtoAMR_Sensoren".Stau_BG3062.Stat.B_Akt, Antrieb_aktiv:="MA0203", Antrieb_plus_aktiv:="MA0204", Antrieb_vor:="DHWtoAMR_Antriebe".MA0203.Stat.A_vor, Antrieb_start:="DHWtoAMR_Antriebe".MA0203.Stat.A_start, Antrieb_stop:="DHWtoAMR_Antriebe".MA0203.Stat.Stop_vor, Antrieb_plus_vor:="DHWtoAMR_Antriebe".MA0204.Stat.A_vor, Antrieb_plus_start:="DHWtoAMR_Antriebe".MA0204.Stat.A_start)
--- NW 4: Störungen anzeigen UZ6104 ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ6104.StOk_blinken
S "DAMR_Bereich".A01_UC061.StOk_blinken
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 5: Störungen quittieren UZ6102 ---
A "DAMR_Bereich".A01_UZ6102.StOk_aktiv
O "DAMR_Bereich".A01_UC061.StOk_aktiv
O "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 6: Schleuse 3061 ---
CALL FB "None" , (Schleusen_Nr:=3061, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3062", B_InSchleuse:="BG3061", B_Zähl:="BG3006", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3006.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0204", Antrieb_plus_aktiv:="MA0205", Schleuse_geöffnet:="MB3061", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3061.Stat.Ast, Error:=DB608.DBW212, Antrieb_Schleuse_vor:="DHWtoAMR_Antriebe".MA0204.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoAMR_Antriebe".MA0204.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoAMR_Antriebe".MA0204.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoAMR_Antriebe".MA0204.Stat.A_PS, Antrieb_plus_vor:="DHWtoAMR_Antriebe".MA0205.Stat.A_vor, Antrieb_plus_start:="DHWtoAMR_Antriebe".MA0205.Stat.A_start, hStOk:=ErrAnz)
--- NW 7: Störungen anzeigen UZ6102 ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ6102.StOk_blinken
S "DAMR_Bereich".A01_UC061.StOk_blinken
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 8: Störungen quittieren UZ6102/6101 ---
A "DAMR_Bereich".A01_UZ6102.StOk_aktiv
O "DAMR_Bereich".A01_UC061.StOk_aktiv
O "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 9: Schleuse 3005 ---
CALL FB "None" , (Schleusen_Nr:=3005, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3006", B_InSchleuse:="BG3005", B_AusSchleuse:="BG3017", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3017.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0205", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3005", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3005.Stat.Ast, Error:=DB608.DBW204, Antrieb_Schleuse_vor:="DHWtoAMR_Antriebe".MA0205.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoAMR_Antriebe".MA0205.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoAMR_Antriebe".MA0205.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoAMR_Antriebe".MA0205.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // da schon oben verwendet | da schon oben verwendet
--- NW 10: Störungen anzeigen UZ6102/6101 ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ6102.StOk_blinken
S "DAMR_Bereich".A01_UC061.StOk_blinken
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 11: Störungen quittieren UZ6101 ---
A "DAMR_Bereich".A01_UC061.StOk_aktiv
O "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 12: Schleuse 3004 (vor BST 3) ---
AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm
AN "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm
AN "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen
AN "6_HMI_Err_UH06_AMR".System."BST3_Störung"
A Schleuse_3000.Dyn.Sk.Bereich_ok
= Fahren_Ok
CALL FB "None" , (Schleusen_Nr:=3004, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3017", B_InSchleuse:="BG3004", B_AusSchleuse:="BG3002", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3002.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0205", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3004", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3004.Stat.Ast, Error:=DB608.DBW202, Antrieb_Schleuse_vor:="DHWtoAMR_Antriebe".MA0205.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoAMR_Antriebe".MA0205.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoAMR_Antriebe".MA0205.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoAMR_Antriebe".MA0205.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Kein Antrieb
--- NW 13: Störungen anzeigen UZ6101 ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UC061.StOk_blinken
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 14: Störungen quittieren UZ0620 ---
A "DAMR_Bereich".A01_UZ0620.StOk_aktiv
O "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 15: Schleuse 3000 ---
CALL FB "None" , (Schleusen_Nr:=3000, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3002", B_InSchleuse:="BG3000", B_AusSchleuse:="BG3001", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3001.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0130", Schleuse_geöffnet:="MB3000", RestZeit_Bereich_plus:=Bereich_3555.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3000.Stat.Ast, Error:=DB608.DBW200, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:=Bereich_3555.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Kein Antrieb
--- NW 16: Bereich 3555 ---
A "BG3001"
A "MB3000"
= B_vor_Schleuse
A "DHWtoAMR_Sensoren".Stau_BG3561.Stat.B_Akt
O "DHWtoAMR_Sensoren".Stau_BG3557.Stat.B_Akt
= Stau_raus
CALL FB "None" , (Bereichs_Nr:=3555, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3555", B_Zähl:="BG3557", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0130", Antrieb_plus_aktiv:="MA0131", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoAMR_Antriebe".MA0130.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoAMR_Antriebe".MA0130.Stat.Stop_vor, Error:=DB608.DBW172, Antrieb_Bereich_start:="DHWtoAMR_Antriebe".MA0130.Stat.A_start, Antrieb_plus_vor:="DHWtoAMR_Antriebe".MA0131.Stat.A_vor, Antrieb_plus_start:="DHWtoAMR_Antriebe".MA0131.Stat.A_start, Antrieb_minus_vor:=?, hStOk:=ErrAnz)
--- NW 17: Schleuse 3562 ---
CALL FB "None" , (Schleusen_Nr:=3562, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3561", B_InSchleuse:="BG3562", B_AusSchleuse:="BG3563", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3563.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0131", Antrieb_plus_aktiv:="MA0116", Schleuse_geöffnet:="MB3562", RestZeit_Bereich_plus:=Bereich_3556.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3562.Stat.Ast, Error:=DB608.DBW358, Antrieb_Schleuse_vor:="DHWtoAMR_Antriebe".MA0131.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoAMR_Antriebe".MA0131.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoAMR_Antriebe".MA0131.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoAMR_Antriebe".MA0131.Stat.A_PS, Antrieb_plus_vor:=Bereich_3556.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 18: Bereich 3556 ---
A "BG3563"
A "MB3562"
= B_vor_Schleuse
CALL FB "None" , (Bereichs_Nr:=3556, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3556", B_Zähl:="BG3564", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3564.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0116", Antrieb_plus_aktiv:=1, RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoAMR_Antriebe".MA0116.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoAMR_Antriebe".MA0116.Stat.Stop_vor, Error:=DB608.DBW174, Antrieb_Bereich_start:="DHWtoAMR_Antriebe".MA0116.Stat.A_start, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, Antrieb_minus_vor:="DHWtoAMR_Antriebe".MA0131.Stat.A_vor, hStOk:=ErrAnz) // Ohne Antrieb
--- NW 19: Schleuse 3565 (vor BST 4) ---
AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm
AN "6_HMI_Err_UH06_AMR".System.BST4_Feueralarm
AN "6_HMI_Err_UH06_AMR".System.BST4_Geschlossen
AN "6_HMI_Err_UH06_AMR".System."BST4_Störung"
= Fahren_Ok
A "DHWtoAMR_Sensoren".Stau_BG3566.Stat.B_Akt
O "DHWtoAMR_Sensoren".Stau_BG3567.Stat.B_Akt
= Stau_raus
CALL FB "None" , (Schleusen_Nr:=3565, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3564", B_InSchleuse:="BG3565", B_AusSchleuse:="BG3566", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0061", Schleuse_geöffnet:="MB3565", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3565.Stat.Ast, Error:=DB608.DBW360, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0061.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0061.Stat.A_start, hStOk:=ErrAnz) // ohne Antrieb | Ohne Antrieb
--- NW 20: Störungen anzeigen UZ0620 ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0620.StOk_blinken
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 21: Ende ---
BE
@@ -0,0 +1,64 @@
=== FC 181: HWtoAMRZielFC [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Ziel_hex : Word
Ziel_int : Int
Zielebene : Word
Error : Byte
Position : Int
Lager_DB : Int
Lager_DW : Int
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt // Startwert mit Offset 0
SSDW : Int
EndZiel : Word
Variante : Int
AbrufID : DInt
Fahrlisten_TrolleyID : DInt
Fahrlisten_AbrufID : DInt
Fahrlisten_Lager : Int
Trolley_unbekannt : Bool // Trolley ist nicht in DL
Express_Abruf : Bool
Constant:
Return:
Ret_Val : Void
--- NW 1: Rückmeldung ---
SET // Rückmeldungen erst mal resetten
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
--- NW 2: Schleuse 3004: (BST 3) ---
L "MW190"
L 3004 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC X3004E
SET
S "M180.6" // Weiterfahrt ist erlaubt
BEU
X3004E: NOP 0
--- NW 3: Schleuse 3565: (BST 4) ---
L "MW190"
L 3565 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC X3565E
SET
S "M180.6" // Weiterfahrt ist erlaubt
BEU
X3565E: NOP 0
--- NW 4: Ende ---
BE
@@ -0,0 +1,17 @@
=== GlobalDB 1110: DL10LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1111: DL11LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1112: DL12LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1101: DL1LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1102: DL2LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1103: DL3LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1104: DL4LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1105: DL5LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1106: DL6LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1107: DL7LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1108: DL8LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,17 @@
=== GlobalDB 1109: DL9LeerTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5)
Position : Word
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,80 @@
=== FC 1100: Arbeitsplätze [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: Ohne PC sind alle ABPs aktiviert ---
A "SGes".Ohne_PC_Fahren
S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
S "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
--- NW 2: Sensoren ---
CALL FB "Arbeitsplätze_Sensoren" ,
--- NW 3: Simulation zum Ausfahren aus AMRs ---
CALL FC "Simulation_AMR_Trolley_starten"
--- NW 4: Zuführung ---
CALL FB "Zuführung_OmniFahren" ,
--- NW 5: Pickstation 5 ---
CALL FB "PS5_OmniFahren" ,
--- NW 6: Pickstation 4 ---
CALL FB "PS4_OmniFahren" ,
--- NW 7: Pickstation 3 ---
CALL FB "PS3_OmniFahren" ,
--- NW 8: Pickstation 2 ---
CALL FB "PS2_OmniFahren" ,
--- NW 9: Pickstation 1 ---
CALL FB "PS1_OmniFahren" ,
--- NW 10: MultiPurposestation 3 ---
CALL FB "MPS3_OmniFahren" ,
--- NW 11: MultiPurposestation 2 ---
CALL FB "MPS2_OmniFahren" ,
--- NW 12: MultiPurposestation 1 ---
CALL FB "MPS1_OmniFahren" ,
--- NW 13: Abführung ---
CALL FB "Abführung_OmniFahren" ,
--- NW 14: Last ---
CALL FB "Arbeitsplätze_Zylinder" ,
CALL FB "Arbeitsplätze_Antriebe" ,
--- NW 15: Ende ---
BE
@@ -0,0 +1,21 @@
=== InstanceDB 1128: DMPS1_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
@@ -0,0 +1,21 @@
=== InstanceDB 1127: DMPS2_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
@@ -0,0 +1,21 @@
=== InstanceDB 1126: DMPS3_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
@@ -0,0 +1,21 @@
=== InstanceDB 1125: DPS1_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
@@ -0,0 +1,22 @@
=== InstanceDB 1124: DPS2_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
WeicheByPass_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Weiche_von_ByPass-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
@@ -0,0 +1,21 @@
=== InstanceDB 1123: DPS3_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
@@ -0,0 +1,20 @@
=== InstanceDB 1122: DPS4_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
@@ -0,0 +1,22 @@
=== InstanceDB 1121: DPS5_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Aktivierte_ABPs : Int
@@ -0,0 +1,171 @@
=== FB 1128: MPS1_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// MPS1-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt
= Weiche_Einfahrt.Dyn.Status.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt
= Schleuse_Vorstau.Dyn.Sk.Auto_akt
= Schleuse_Platz_1.Dyn.Sk.Auto_akt
= Schleuse_Platz_2.Dyn.Sk.Auto_akt
= Schleuse_Platz_3.Dyn.Sk.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt
= Schleuse_Ausfahrt.Dyn.Sk.Auto_akt
= Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok
= Weiche_Einfahrt.Dyn.Status.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok
= Schleuse_Vorstau.Dyn.Sk.Bereich_ok
= Schleuse_Platz_1.Dyn.Sk.Bereich_ok
= Schleuse_Platz_2.Dyn.Sk.Bereich_ok
= Schleuse_Platz_3.Dyn.Sk.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok
= Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok
= Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UZ0601.StOk_aktiv
= ErrQuit
S "DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS1".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS1".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_start
S "DArbeitsplätze_Antriebe".MA0112.Stat.A_start
--- NW 3: Schleuse vor Einfahrt ---
CALL FB "None" , (Schleusen_Nr:=3450, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3444", B_InSchleuse:="BG3450", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0112", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3450", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_MPS1.Stat.Ast, Error:=DB608.DBW326, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0112.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
--- NW 4: Weiche Einfahrt ---
CALL FB "None" , (Weichen_Nr:=3452, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS1.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS1.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0112", Antrieb_Gerade_aktiv:="MA0112", Antrieb_Abzweig_aktiv:="MA0106", Weiche_ist_AST:="MB3452", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_MPS1.Stat.Ast, Error:=DB608.DBW328, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen ---
CALL FB "None" , (Arbeitsplatz_Nr:=16#B100, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3453", B_an_Platz_1:="BG3455", B_an_Platz_2:="BG3461", B_an_Platz_3:="BG3465", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_MPS1.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3471", Y_Vorstau:="MB3453", Y_Platz_1:="MB3455", Y_Platz_2:="MB3461", Y_Platz_3:="MB3465", Antrieb_Vorstau_aktiv:="MA0106", Antrieb_Nachstau_1_aktiv:="MA0107", Antrieb_Nachstau_2_aktiv:="MA0111", Antrieb_Nachstau_3_aktiv:="MA0110", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_MPS1.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_MPS1.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_MPS1.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_MPS1.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS1".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS1".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW110, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
// Anzeigen:
A "DAMR_Bereich".A01_UH06.AnlageEin
A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
= "PF0056"
A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige
= "PF3444"
--- NW 6: Schleuse Vorstau ---
CALL FB "None" , (Schleusen_Nr:=3453, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3452", B_InSchleuse:="BG3453", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0106", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3453", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_MPS1.Stat.Ast, Error:=DB608.DBW330, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Schleuse Platz 1 ---
CALL FB "None" , (Schleusen_Nr:=3455, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3455", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0107", Schleuse_geöffnet:="MB3455", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_MPS1.Stat.Ast, Error:=DB608.DBW332, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_1.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
JCN P1D
L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren
P1D: NOP 0
--- NW 8: Schleuse Platz 2 ---
CALL FB "None" , (Schleusen_Nr:=3461, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3461", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0111", Schleuse_geöffnet:="MB3461", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_MPS1.Stat.Ast, Error:=DB608.DBW334, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_2.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
JCN P2D
L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren
P2D: NOP 0
--- NW 9: Schleuse Platz 3 ---
CALL FB "None" , (Schleusen_Nr:=3465, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3465", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0110", Schleuse_geöffnet:="MB3465", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_MPS1.Stat.Ast, Error:=DB608.DBW336, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_3.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
JCN P3D
L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren
P3D: NOP 0
--- NW 10: Schleuse Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3471, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3470", B_InSchleuse:="BG3471", B_AusSchleuse:="BG3541", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS1.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0110", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3471", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_MPS1.Stat.Ast, Error:=DB608.DBW338, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche schalten:
A "MB3471"
S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS1.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt"
--- NW 11: Schleuse Hauptstrecke vor Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3473, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3451", B_InSchleuse:="BG3473", B_AusSchleuse:="BG3541", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS1.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0112", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3473", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_MPS1.Stat.Ast, Error:=DB608.DBW340, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0112.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
// Ausfahr-Weiche zurückschalten:
A "MB3473"
R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS1.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt"
--- NW 12: Ausfahr-Priorität ---
CALL FB "None" , (BG_Haupt_Schleuse:="BG3473", Haupt_Schleuse_geöffnet:="MB3473", BG_ABP_Schleuse:="BG3471", ABP_Schleuse_geöffnet:="MB3471", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs)
--- NW 13: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0601.StOk_blinken
--- NW 14: Ende ---
BE
@@ -0,0 +1,172 @@
=== FB 1127: MPS2_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// MPS2-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt
= Weiche_Einfahrt.Dyn.Status.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt
= Schleuse_Vorstau.Dyn.Sk.Auto_akt
= Schleuse_Platz_1.Dyn.Sk.Auto_akt
= Schleuse_Platz_2.Dyn.Sk.Auto_akt
= Schleuse_Platz_3.Dyn.Sk.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt
= Schleuse_Ausfahrt.Dyn.Sk.Auto_akt
= Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok
= Weiche_Einfahrt.Dyn.Status.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok
= Schleuse_Vorstau.Dyn.Sk.Bereich_ok
= Schleuse_Platz_1.Dyn.Sk.Bereich_ok
= Schleuse_Platz_2.Dyn.Sk.Bereich_ok
= Schleuse_Platz_3.Dyn.Sk.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok
= Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok
= Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UZ0602.StOk_aktiv
= ErrQuit
S "DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS2".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS2".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_start
S "DArbeitsplätze_Antriebe".MA0105.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0112.Stat.A_start
--- NW 3: Schleuse vor Einfahrt ---
CALL FB "None" , (Schleusen_Nr:=3421, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3414", B_InSchleuse:="BG3421", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0105", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3421", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_MPS2.Stat.Ast, Error:=DB608.DBW310, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0105.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
--- NW 4: Weiche Einfahrt ---
CALL FB "None" , (Weichen_Nr:=3422, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS2.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS2.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0105", Antrieb_Gerade_aktiv:="MA0105", Antrieb_Abzweig_aktiv:="MA0101", Weiche_ist_AST:="MB3422", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_MPS2.Stat.Ast, Error:=DB608.DBW312, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen ---
CALL FB "None" , (Arbeitsplatz_Nr:=16#B200, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3423", B_an_Platz_1:="BG3425", B_an_Platz_2:="BG3431", B_an_Platz_3:="BG3435", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_MPS2.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3441", Y_Vorstau:="MB3423", Y_Platz_1:="MB3425", Y_Platz_2:="MB3431", Y_Platz_3:="MB3435", Antrieb_Vorstau_aktiv:="MA0101", Antrieb_Nachstau_1_aktiv:="MA0102", Antrieb_Nachstau_2_aktiv:="MA0103", Antrieb_Nachstau_3_aktiv:="MA0104", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_MPS2.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_MPS2.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_MPS2.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_MPS2.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS2".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS2".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW112, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
// Anzeigen:
A "DAMR_Bereich".A01_UH06.AnlageEin
A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
= "PF0054"
A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige
= "PF3420"
--- NW 6: Schleuse Vorstau ---
CALL FB "None" , (Schleusen_Nr:=3423, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3422", B_InSchleuse:="BG3423", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0101", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3423", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_MPS2.Stat.Ast, Error:=DB608.DBW314, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Schleuse Platz 1 ---
CALL FB "None" , (Schleusen_Nr:=3425, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3425", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0102", Schleuse_geöffnet:="MB3425", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_MPS2.Stat.Ast, Error:=DB608.DBW316, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_1.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
JCN P1D
L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren
P1D: NOP 0
--- NW 8: Schleuse Platz 2 ---
CALL FB "None" , (Schleusen_Nr:=3431, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3431", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0103", Schleuse_geöffnet:="MB3431", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_MPS2.Stat.Ast, Error:=DB608.DBW318, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_2.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
JCN P2D
L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren
P2D: NOP 0
--- NW 9: Schleuse Platz 3 ---
CALL FB "None" , (Schleusen_Nr:=3435, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3435", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0104", Schleuse_geöffnet:="MB3435", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_MPS2.Stat.Ast, Error:=DB608.DBW320, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_3.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
JCN P3D
L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren
P3D: NOP 0
--- NW 10: Schleuse Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3441, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3440", B_InSchleuse:="BG3441", B_AusSchleuse:="BG3444", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS2.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0104", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3441", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_MPS2.Stat.Ast, Error:=DB608.DBW322, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche schalten:
A "MB3441"
S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS2.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt"
--- NW 11: Schleuse Hauptstrecke vor Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3443, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3445", B_InSchleuse:="BG3443", B_AusSchleuse:="BG3444", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS2.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0105", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3443", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_MPS2.Stat.Ast, Error:=DB608.DBW324, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0105.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche zurückschalten:
A "MB3443"
R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS2.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt"
--- NW 12: Ausfahr-Priorität ---
CALL FB "None" , (BG_Haupt_Schleuse:="BG3443", Haupt_Schleuse_geöffnet:="MB3443", BG_ABP_Schleuse:="BG3441", ABP_Schleuse_geöffnet:="MB3441", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs)
--- NW 13: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0602.StOk_blinken
--- NW 14: Ende ---
BE
@@ -0,0 +1,171 @@
=== FB 1126: MPS3_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// MPS3-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt
= Weiche_Einfahrt.Dyn.Status.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt
= Schleuse_Vorstau.Dyn.Sk.Auto_akt
= Schleuse_Platz_1.Dyn.Sk.Auto_akt
= Schleuse_Platz_2.Dyn.Sk.Auto_akt
= Schleuse_Platz_3.Dyn.Sk.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt
= Schleuse_Ausfahrt.Dyn.Sk.Auto_akt
= Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok
= Weiche_Einfahrt.Dyn.Status.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok
= Schleuse_Vorstau.Dyn.Sk.Bereich_ok
= Schleuse_Platz_1.Dyn.Sk.Bereich_ok
= Schleuse_Platz_2.Dyn.Sk.Bereich_ok
= Schleuse_Platz_3.Dyn.Sk.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok
= Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok
= Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UZ0603.StOk_aktiv
= ErrQuit
S "DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS3".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS3".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_start
S "DArbeitsplätze_Antriebe".MA0105.Stat.A_start
--- NW 3: Schleuse vor Einfahrt ---
CALL FB "None" , (Schleusen_Nr:=3390, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3384", B_InSchleuse:="BG3390", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0105", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3390", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_MPS3.Stat.Ast, Error:=DB608.DBW294, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0105.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
--- NW 4: Weiche Einfahrt ---
CALL FB "None" , (Weichen_Nr:=3392, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS3.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS3.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0105", Antrieb_Gerade_aktiv:="MA0105", Antrieb_Abzweig_aktiv:="MA0095", Weiche_ist_AST:="MB3392", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_MPS3.Stat.Ast, Error:=DB608.DBW296, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen ---
CALL FB "None" , (Arbeitsplatz_Nr:=16#B300, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3393", B_an_Platz_1:="BG3395", B_an_Platz_2:="BG3401", B_an_Platz_3:="BG3405", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_MPS3.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3411", Y_Vorstau:="MB3393", Y_Platz_1:="MB3395", Y_Platz_2:="MB3401", Y_Platz_3:="MB3405", Antrieb_Vorstau_aktiv:="MA0095", Antrieb_Nachstau_1_aktiv:="MA0096", Antrieb_Nachstau_2_aktiv:="MA0097", Antrieb_Nachstau_3_aktiv:="MA0100", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_MPS3.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_MPS3.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_MPS3.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_MPS3.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS3".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS3".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW114, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
// Anzeigen:
A "DAMR_Bereich".A01_UH06.AnlageEin
A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
= "PF0052"
A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige
= "PF3384"
--- NW 6: Schleuse Vorstau ---
CALL FB "None" , (Schleusen_Nr:=3393, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3392", B_InSchleuse:="BG3393", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0095", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3393", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_MPS3.Stat.Ast, Error:=DB608.DBW298, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Schleuse Platz 1 ---
CALL FB "None" , (Schleusen_Nr:=3395, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3395", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0096", Schleuse_geöffnet:="MB3395", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_MPS3.Stat.Ast, Error:=DB608.DBW300, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_1.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
JCN P1D
L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren
P1D: NOP 0
--- NW 8: Schleuse Platz 2 ---
CALL FB "None" , (Schleusen_Nr:=3401, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3401", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0097", Schleuse_geöffnet:="MB3401", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_MPS3.Stat.Ast, Error:=DB608.DBW302, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_2.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
JCN P2D
L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren
P2D: NOP 0
--- NW 9: Schleuse Platz 3 ---
CALL FB "None" , (Schleusen_Nr:=3405, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3405", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0100", Schleuse_geöffnet:="MB3405", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_MPS3.Stat.Ast, Error:=DB608.DBW304, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_3.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
JCN P3D
L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren
P3D: NOP 0
--- NW 10: Schleuse Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3411, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3410", B_InSchleuse:="BG3411", B_AusSchleuse:="BG3414", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS3.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0100", Antrieb_plus_aktiv:="MA0105", Schleuse_geöffnet:="MB3411", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_MPS3.Stat.Ast, Error:=DB608.DBW306, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche schalten:
A "MB3411"
S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS3.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt"
--- NW 11: Schleuse Hauptstrecke vor Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3413, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3391", B_InSchleuse:="BG3413", B_AusSchleuse:="BG3414", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS3.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0105", Antrieb_plus_aktiv:="MA0105", Schleuse_geöffnet:="MB3413", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_MPS3.Stat.Ast, Error:=DB608.DBW308, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0105.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // s.o. | s.o.
// Ausfahr-Weiche zurückschalten:
A "MB3413"
R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS3.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt"
--- NW 12: Ausfahr-Priorität ---
CALL FB "None" , (BG_Haupt_Schleuse:="BG3413", Haupt_Schleuse_geöffnet:="MB3413", BG_ABP_Schleuse:="BG3411", ABP_Schleuse_geöffnet:="MB3411", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs)
--- NW 13: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0603.StOk_blinken
--- NW 14: Ende ---
BE
@@ -0,0 +1,269 @@
=== FB 1125: PS1_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_vor : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// PS1-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt
= Weiche_Einfahrt.Dyn.Status.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt
= Schleuse_Vorstau.Dyn.Sk.Auto_akt
= Schleuse_Platz_1.Dyn.Sk.Auto_akt
= Schleuse_Platz_2.Dyn.Sk.Auto_akt
= Schleuse_Platz_3.Dyn.Sk.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt
= Schleuse_Ausfahrt.Dyn.Sk.Auto_akt
= Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok
= Weiche_Einfahrt.Dyn.Status.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok
= Schleuse_Vorstau.Dyn.Sk.Bereich_ok
= Schleuse_Platz_1.Dyn.Sk.Bereich_ok
= Schleuse_Platz_2.Dyn.Sk.Bereich_ok
= Schleuse_Platz_3.Dyn.Sk.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok
= Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok
= Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UZ0611.StOk_aktiv
= ErrQuit
S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS1".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS1".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_start
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0094.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0062.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0105.Stat.A_start
--- NW 3: Schleuse vor Einfahrt ---
CALL FB "None" , (Schleusen_Nr:=3353, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3330", B_InSchleuse:="BG3353", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0087", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3353", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS1.Stat.Ast, Error:=DB608.DBW276, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0087.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0087.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
// Ausfahr-Weiche zurückschalten:
A "MB3353"
R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS2.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_vor_Einfahrt.Dyn.Status.Trolley_draussen
R "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt"
R "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."WeicheByPass_von_Haupt-Sep_belegt"
--- NW 4: Weiche Einfahrt ---
SET
R Antrieb_vor // Da unten IN/OUT-Zugriff
R Antrieb_start
R Antrieb_stop
A "MA0094"
A "MA0087"
A "MA0062"
= Antrieb_aktiv
CALL FB "None" , (Weichen_Nr:=3362, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS2.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS1.Stat.B_Akt, Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0087", Antrieb_Abzweig_aktiv:="MA0090", Weiche_ist_AST:="MB3362", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS1.Stat.Ast, Error:=DB608.DBW280, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
// M0087 + M0094 + M0062 einschalten:
A Antrieb_vor
S "DArbeitsplätze_Antriebe".MA0094.Stat.A_vor
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_vor
S "DArbeitsplätze_Antriebe".MA0062.Stat.A_vor
S "DArbeitsplätze_Antriebe".MA0094.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0062.Stat.A_start
A Antrieb_start
S "DArbeitsplätze_Antriebe".MA0094.Stat.Stop_vor
S "DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor
S "DArbeitsplätze_Antriebe".MA0062.Stat.Stop_vor
--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen ---
CALL FB "None" , (Arbeitsplatz_Nr:=16#A100, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3363", B_an_Platz_1:="BG3365", B_an_Platz_2:="BG3371", B_an_Platz_3:="BG3375", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS1.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3381", Y_Vorstau:="MB3363", Y_Platz_1:="MB3365", Y_Platz_2:="MB3371", Y_Platz_3:="MB3375", Antrieb_Vorstau_aktiv:="MA0090", Antrieb_Nachstau_1_aktiv:="MA0091", Antrieb_Nachstau_2_aktiv:="MA0092", Antrieb_Nachstau_3_aktiv:="MA0093", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS1.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS1.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS1.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS1.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS1".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS1".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW100, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
// Anzeigen:
A "DAMR_Bereich".A01_UH06.AnlageEin
A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
= "PF0050"
A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige
= "PF3360"
--- NW 6: Schleuse Vorstau ---
CALL FB "None" , (Schleusen_Nr:=3363, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3362", B_InSchleuse:="BG3363", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0090", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3363", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS1.Stat.Ast, Error:=DB608.DBW282, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Schleuse Platz 1 ---
CALL FB "None" , (Schleusen_Nr:=3365, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3365", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0091", Schleuse_geöffnet:="MB3365", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS1.Stat.Ast, Error:=DB608.DBW284, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_1.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
JCN P1D
L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren
P1D: NOP 0
--- NW 8: Schleuse Platz 2 ---
CALL FB "None" , (Schleusen_Nr:=3371, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3371", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0092", Schleuse_geöffnet:="MB3371", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS1.Stat.Ast, Error:=DB608.DBW286, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_2.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
JCN P2D
L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren
P2D: NOP 0
--- NW 9: Schleuse Platz 3 ---
CALL FB "None" , (Schleusen_Nr:=3375, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3375", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0093", Schleuse_geöffnet:="MB3375", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS1.Stat.Ast, Error:=DB608.DBW288, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_3.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
JCN P3D
L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren
P3D: NOP 0
--- NW 10: Schleuse Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3381, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3380", B_InSchleuse:="BG3381", B_AusSchleuse:="BG3384", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS1.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0093", Antrieb_plus_aktiv:="MA0105", Schleuse_geöffnet:="MB3381", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS1.Stat.Ast, Error:=DB608.DBW290, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche schalten:
A "MB3381"
S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS1.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt"
--- NW 11: Schleuse Hauptstrecke vor Ausfahrt ---
// Bypass-Weiche schalten:
A "MB3351" // Schleuse PS2-Ausfahrt geöffnet
O "MB3353" // Schleuse PS2-Vor Ausfahrt geöffnet
R "DArbeitsplätze_Zylinder".Weiche_3361.Stat.Ast // Einfahr-Weiche auf Gerade schalten
A "MB3481" // Schleuse Zuführung geöffnet
A "MB3482" // Weiche zur Hauptstrecke
S "DArbeitsplätze_Zylinder".Weiche_3361.Stat.Ast // Einfahr-Weiche auf Abzweig schalten
// Antriebe -1 mit einschalten:
A Schleuse_vor_Ausfahrt.Dyn.Status."Trolley_fährt_in_Schleuse"
AN "BG3323" // Ist in Schleuse
AN "MB3361" // Weiche gerade
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_vor
A Schleuse_vor_Ausfahrt.Dyn.Status."Trolley_fährt_in_Schleuse"
AN "BG3323" // Ist in Schleuse
S "DArbeitsplätze_Antriebe".MA0062.Stat.A_vor
// Antrieb +1 einschalten:
A Schleuse_vor_Ausfahrt.Dyn.Status."Trolley_fährt_in_Schleuse"
AN "BG3323" // Ist in Schleuse
S "DArbeitsplätze_Antriebe".MA0105.Stat.A_vor
// Eigner Antrieb einschalten: (da als Stau-Sensor von Vor-Bypass verwendet)
A "DArbeitsplätze_Sensoren".An_BG3383.Stat.B_Akt
AN "BG3383"
S "DArbeitsplätze_Antriebe".MA0094.Stat.A_vor
// Trolley kommt in Bereich:
A "MB3481" // Schleuse ByPass geöffnet
A "MB3482" // Weiche-ByPass auf Abzweig
O "MB3351" // Schleuse PS2-Ausfahrt geöffnet
O "MB3353" // Schleuse PS2-Vor Ausfahrt geöffnet
O "BG3361" // Stauklappe Hauptstrecke
= B_aktiv
SET
R Antrieb_vor // Da unten IN/OUT-Zugriff
R Antrieb_start
R Antrieb_stop
A "MA0094"
A "MA0087"
A "MA0062"
= Antrieb_aktiv
CALL FB "None" , (Schleusen_Nr:=3383, ErrQuit:=ErrQuit, B_VorSchleuse:=B_aktiv, B_InSchleuse:="BG3383", B_AusSchleuse:="BG3384", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS1.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:=Antrieb_aktiv, Antrieb_plus_aktiv:="MA0105", Schleuse_geöffnet:="MB3383", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_PS1.Stat.Ast, Error:=DB608.DBW292, Antrieb_Schleuse_vor:=Antrieb_vor, Antrieb_Schleuse_start:=Antrieb_start, Antrieb_Schleuse_stop:=Antrieb_stop, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0094.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, hStOk:=ErrAnz)
// M0087 + M0094 + M0062 einschalten:
A Antrieb_vor
S "DArbeitsplätze_Antriebe".MA0094.Stat.A_vor
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_vor
S "DArbeitsplätze_Antriebe".MA0062.Stat.A_vor
A Antrieb_start
S "DArbeitsplätze_Antriebe".MA0094.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0062.Stat.A_start
A Antrieb_stop
S "DArbeitsplätze_Antriebe".MA0094.Stat.Stop_vor
S "DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor
S "DArbeitsplätze_Antriebe".MA0062.Stat.Stop_vor
// Ausfahr-Weiche zurückschalten:
A "MB3383"
R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS1.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt"
--- NW 12: Ausfahr-Priorität ---
CALL FB "None" , (BG_Haupt_Schleuse:="BG3383", Haupt_Schleuse_geöffnet:="MB3383", BG_ABP_Schleuse:="BG3381", ABP_Schleuse_geöffnet:="MB3381", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs)
--- NW 13: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0611.StOk_blinken
--- NW 14: Ende ---
BE
@@ -0,0 +1,165 @@
=== FB 1124: PS2_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
WeicheByPass_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Weiche_von_ByPass-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// PS2-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt
= Weiche_Einfahrt.Dyn.Status.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt
= Schleuse_Vorstau.Dyn.Sk.Auto_akt
= Schleuse_Platz_1.Dyn.Sk.Auto_akt
= Schleuse_Platz_2.Dyn.Sk.Auto_akt
= Schleuse_Platz_3.Dyn.Sk.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt
= Schleuse_Ausfahrt.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok
= Weiche_Einfahrt.Dyn.Status.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok
= Schleuse_Vorstau.Dyn.Sk.Bereich_ok
= Schleuse_Platz_1.Dyn.Sk.Bereich_ok
= Schleuse_Platz_2.Dyn.Sk.Bereich_ok
= Schleuse_Platz_3.Dyn.Sk.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok
= Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UZ0612.StOk_aktiv
= ErrQuit
S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS2".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS2".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_start
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start
--- NW 3: Schleuse vor Einfahrt ---
CALL FB "None" , (Schleusen_Nr:=3331, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3322", B_InSchleuse:="BG3331", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0087", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3331", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS2.Stat.Ast, Error:=DB608.DBW262, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0087.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0087.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
--- NW 4: Weiche Einfahrt ---
CALL FB "None" , (Weichen_Nr:=3332, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS2.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS2.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0087", Antrieb_Gerade_aktiv:="MA0087", Antrieb_Abzweig_aktiv:="MA0083", Weiche_ist_AST:="MB3332", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS2.Stat.Ast, Error:=DB608.DBW264, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen ---
CALL FB "None" , (Arbeitsplatz_Nr:=16#A200, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3333", B_an_Platz_1:="BG3335", B_an_Platz_2:="BG3341", B_an_Platz_3:="BG3345", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS2.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3351", Y_Vorstau:="MB3333", Y_Platz_1:="MB3335", Y_Platz_2:="MB3341", Y_Platz_3:="MB3345", Antrieb_Vorstau_aktiv:="MA0083", Antrieb_Nachstau_1_aktiv:="MA0084", Antrieb_Nachstau_2_aktiv:="MA0085", Antrieb_Nachstau_3_aktiv:="MA0086", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS2.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS2.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS2.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS2.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS2".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS2".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW102, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
// Anzeigen:
A "DAMR_Bereich".A01_UH06.AnlageEin
A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
= "PF0046"
A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige
= "PF3324"
--- NW 6: Schleuse Vorstau ---
CALL FB "None" , (Schleusen_Nr:=3333, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3332", B_InSchleuse:="BG3333", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0083", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3333", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS2.Stat.Ast, Error:=DB608.DBW266, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Schleuse Platz 1 ---
CALL FB "None" , (Schleusen_Nr:=3335, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3335", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0084", Schleuse_geöffnet:="MB3335", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS2.Stat.Ast, Error:=DB608.DBW268, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_1.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
JCN P1D
L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren
P1D: NOP 0
--- NW 8: Schleuse Platz 2 ---
CALL FB "None" , (Schleusen_Nr:=3341, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3341", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0085", Schleuse_geöffnet:="MB3341", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS2.Stat.Ast, Error:=DB608.DBW270, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_2.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
JCN P2D
L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren
P2D: NOP 0
--- NW 9: Schleuse Platz 3 ---
CALL FB "None" , (Schleusen_Nr:=3345, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3345", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0086", Schleuse_geöffnet:="MB3345", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS2.Stat.Ast, Error:=DB608.DBW272, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_3.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
JCN P3D
L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren
P3D: NOP 0
--- NW 10: Schleuse Ausfahrt ---
A "BG3362"
A "DZuführung_OmniFahren".Alle_ABPs_anfahren
O
A "BG3361"
AN "DZuführung_OmniFahren".Alle_ABPs_anfahren
= B_AusSchleuse
CALL FB "None" , (Schleusen_Nr:=3351, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3350", B_InSchleuse:="BG3351", B_AusSchleuse:=B_AusSchleuse, B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS2.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0086", Antrieb_plus_aktiv:="MA0087", Schleuse_geöffnet:="MB3351", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS2.Stat.Ast, Error:=DB608.DBW274, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0087.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche schalten:
A "MB3351"
S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS2.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt"
--- NW 11: Ausfahr-Priorität ---
CALL FB "None" , (BG_Haupt_Schleuse:="BG3353", Haupt_Schleuse_geöffnet:="MB3353", BG_ABP_Schleuse:="BG3351", ABP_Schleuse_geöffnet:="MB3351", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs)
--- NW 12: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0612.StOk_blinken
--- NW 13: Ende ---
BE
@@ -0,0 +1,209 @@
=== FB 1123: PS3_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_vor : Bool
Antrieb_start : Bool
Antrieb_PS : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// PS3-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt
= Weiche_Einfahrt.Dyn.Status.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt
= Schleuse_Vorstau.Dyn.Sk.Auto_akt
= Schleuse_Platz_1.Dyn.Sk.Auto_akt
= Schleuse_Platz_2.Dyn.Sk.Auto_akt
= Schleuse_Platz_3.Dyn.Sk.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt
= Schleuse_Ausfahrt.Dyn.Sk.Auto_akt
= Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok
= Weiche_Einfahrt.Dyn.Status.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok
= Schleuse_Vorstau.Dyn.Sk.Bereich_ok
= Schleuse_Platz_1.Dyn.Sk.Bereich_ok
= Schleuse_Platz_2.Dyn.Sk.Bereich_ok
= Schleuse_Platz_3.Dyn.Sk.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok
= Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok
= Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UZ0613.StOk_aktiv
= ErrQuit
S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS3".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS3".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_start
S "DArbeitsplätze_Antriebe".MA0082.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start
--- NW 3: Schleuse vor Einfahrt ---
CALL FB "None" , (Schleusen_Nr:=3293, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3270", B_InSchleuse:="BG3293", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0082", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3293", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS3.Stat.Ast, Error:=DB608.DBW246, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0082.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
// Ausfahr-Weiche zurückschalten:
A "MB3293"
R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS4.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_vor_Einfahrt.Dyn.Status.Trolley_draussen
R "DPS4_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt"
--- NW 4: Weiche Einfahrt ---
CALL FB "None" , (Weichen_Nr:=3302, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS4.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS3.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0082", Antrieb_Gerade_aktiv:="MA0082", Antrieb_Abzweig_aktiv:="MA0076", Weiche_ist_AST:="MB3302", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS3.Stat.Ast, Error:=DB608.DBW248, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen ---
CALL FB "None" , (Arbeitsplatz_Nr:=16#A300, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3303", B_an_Platz_1:="BG3305", B_an_Platz_2:="BG3311", B_an_Platz_3:="BG3315", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS3.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3321", Y_Vorstau:="MB3303", Y_Platz_1:="MB3305", Y_Platz_2:="MB3311", Y_Platz_3:="MB3315", Antrieb_Vorstau_aktiv:="MA0076", Antrieb_Nachstau_1_aktiv:="MA0077", Antrieb_Nachstau_2_aktiv:="MA0080", Antrieb_Nachstau_3_aktiv:="MA0081", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS3.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS3.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS3.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS3.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS3".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS3".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW104, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
// Anzeigen:
A "DAMR_Bereich".A01_UH06.AnlageEin
A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
= "PF0044"
A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige
= "PF3300"
--- NW 6: Schleuse Vorstau ---
CALL FB "None" , (Schleusen_Nr:=3303, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3302", B_InSchleuse:="BG3303", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0076", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3303", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS3.Stat.Ast, Error:=DB608.DBW250, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Schleuse Platz 1 ---
CALL FB "None" , (Schleusen_Nr:=3305, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3305", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0077", Schleuse_geöffnet:="MB3305", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS3.Stat.Ast, Error:=DB608.DBW252, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_1.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
JCN P1D
L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren
P1D: NOP 0
--- NW 8: Schleuse Platz 2 ---
CALL FB "None" , (Schleusen_Nr:=3311, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3311", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0080", Schleuse_geöffnet:="MB3311", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS3.Stat.Ast, Error:=DB608.DBW254, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_2.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
JCN P2D
L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren
P2D: NOP 0
--- NW 9: Schleuse Platz 3 ---
CALL FB "None" , (Schleusen_Nr:=3315, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3315", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0081", Schleuse_geöffnet:="MB3315", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS3.Stat.Ast, Error:=DB608.DBW256, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_3.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
JCN P3D
L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren
P3D: NOP 0
--- NW 10: Schleuse Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3321, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3320", B_InSchleuse:="BG3321", B_AusSchleuse:="BG3322", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS3.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0081", Antrieb_plus_aktiv:="MA0087", Schleuse_geöffnet:="MB3321", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS3.Stat.Ast, Error:=DB608.DBW258, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0087.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche schalten:
A "MB3321"
S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS3.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt"
// Ausfahr-Förderer mit einschalten:
A "MB3322" // Weiche ist auf Abzweig
A "BG3322" // Trolley auf Stauklappe
AN "BG3331" // aber nicht in Schleuse
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_vor // ABP-Ausfahr-Förderer mit einschalten
--- NW 11: Schleuse Hauptstrecke vor Ausfahrt ---
// Antrieb -1 mit einschalten:
A Schleuse_vor_Ausfahrt.Dyn.Status."Trolley_fährt_in_Schleuse"
AN "BG3323" // Ist in Schleuse
S "DArbeitsplätze_Antriebe".MA0082.Stat.A_vor
SET
R Antrieb_vor // wegen unten IN/OUT und temp
R Antrieb_start
R Antrieb_PS
CALL FB "None" , (Schleusen_Nr:=3323, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3294", B_InSchleuse:="BG3323", B_AusSchleuse:="BG3322", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS3.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0087", Antrieb_plus_aktiv:="MA0087", Schleuse_geöffnet:="MB3323", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_PS3.Stat.Ast, Error:=DB608.DBW260, Antrieb_Schleuse_vor:=Antrieb_vor, Antrieb_Schleuse_start:=Antrieb_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS:=Antrieb_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // s.o. | s.o.
A Antrieb_vor
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_vor
S "DArbeitsplätze_Antriebe".MA0082.Stat.A_vor
A Antrieb_start
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0082.Stat.A_start
A Antrieb_PS
S "DArbeitsplätze_Antriebe".MA0087.Stat.A_PS
S "DArbeitsplätze_Antriebe".MA0082.Stat.A_PS
// Ausfahr-Weiche zurückschalten:
A "MB3323"
R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS3.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt"
--- NW 12: Ausfahr-Priorität ---
CALL FB "None" , (BG_Haupt_Schleuse:="BG3323", Haupt_Schleuse_geöffnet:="MB3323", BG_ABP_Schleuse:="BG3321", ABP_Schleuse_geöffnet:="MB3321", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs)
--- NW 13: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0613.StOk_blinken
--- NW 14: Ende ---
BE
@@ -0,0 +1,163 @@
=== FB 1122: PS4_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// PS4-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt
= Weiche_Einfahrt.Dyn.Status.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt
= Schleuse_Vorstau.Dyn.Sk.Auto_akt
= Schleuse_Platz_1.Dyn.Sk.Auto_akt
= Schleuse_Platz_2.Dyn.Sk.Auto_akt
= Schleuse_Platz_3.Dyn.Sk.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt
= Schleuse_Ausfahrt.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok
= Weiche_Einfahrt.Dyn.Status.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok
= Schleuse_Vorstau.Dyn.Sk.Bereich_ok
= Schleuse_Platz_1.Dyn.Sk.Bereich_ok
= Schleuse_Platz_2.Dyn.Sk.Bereich_ok
= Schleuse_Platz_3.Dyn.Sk.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok
= Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UZ0614.StOk_aktiv
= ErrQuit
S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS4".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS4".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_start
S "DArbeitsplätze_Antriebe".MA0082.Stat.A_start
--- NW 3: Schleuse vor Einfahrt ---
CALL FB "None" , (Schleusen_Nr:=3271, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3263", B_InSchleuse:="BG3271", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0082", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3271", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS4.Stat.Ast, Error:=DB608.DBW232, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0082.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
--- NW 4: Weiche Einfahrt ---
CALL FB "None" , (Weichen_Nr:=3272, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS4.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS4.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0082", Antrieb_Gerade_aktiv:="MA0082", Antrieb_Abzweig_aktiv:="MA0072", Weiche_ist_AST:="MB3272", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS4.Stat.Ast, Error:=DB608.DBW234, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen ---
CALL FB "None" , (Arbeitsplatz_Nr:=16#A400, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3273", B_an_Platz_1:="BG3275", B_an_Platz_2:="BG3281", B_an_Platz_3:="BG3285", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS4.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3291", Y_Vorstau:="MB3273", Y_Platz_1:="MB3275", Y_Platz_2:="MB3281", Y_Platz_3:="MB3285", Antrieb_Vorstau_aktiv:="MA0072", Antrieb_Nachstau_1_aktiv:="MA0073", Antrieb_Nachstau_2_aktiv:="MA0074", Antrieb_Nachstau_3_aktiv:="MA0075", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS4.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS4.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS4.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS4.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS4".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS4".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW106, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
// Anzeigen:
A "DAMR_Bereich".A01_UH06.AnlageEin
A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
= "PF0042"
A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige
= "PF3270"
--- NW 6: Schleuse Vorstau ---
CALL FB "None" , (Schleusen_Nr:=3273, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3272", B_InSchleuse:="BG3273", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0072", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3273", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS4.Stat.Ast, Error:=DB608.DBW236, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Schleuse Platz 1 ---
CALL FB "None" , (Schleusen_Nr:=3275, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3275", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0073", Schleuse_geöffnet:="MB3275", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS4.Stat.Ast, Error:=DB608.DBW238, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS4".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_1.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
JCN P1D
L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren
P1D: NOP 0
--- NW 8: Schleuse Platz 2 ---
CALL FB "None" , (Schleusen_Nr:=3281, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3281", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0074", Schleuse_geöffnet:="MB3281", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS4.Stat.Ast, Error:=DB608.DBW240, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS4".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_2.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
JCN P2D
L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren
P2D: NOP 0
--- NW 9: Schleuse Platz 3 ---
CALL FB "None" , (Schleusen_Nr:=3285, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3285", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0075", Schleuse_geöffnet:="MB3285", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS4.Stat.Ast, Error:=DB608.DBW242, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_3.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
JCN P3D
L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren
P3D: NOP 0
--- NW 10: Schleuse Ausfahrt ---
A "BG3302"
A "DZuführung_OmniFahren".Alle_ABPs_anfahren
O
A "BG3294"
AN "DZuführung_OmniFahren".Alle_ABPs_anfahren
= B_AusSchleuse
CALL FB "None" , (Schleusen_Nr:=3291, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3290", B_InSchleuse:="BG3291", B_AusSchleuse:=B_AusSchleuse, B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS4.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0075", Antrieb_plus_aktiv:="MA0082", Schleuse_geöffnet:="MB3291", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS4.Stat.Ast, Error:=DB608.DBW244, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche schalten:
A "MB3291"
S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS4.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt"
--- NW 11: Ausfahr-Priorität ---
CALL FB "None" , (BG_Haupt_Schleuse:="BG3293", Haupt_Schleuse_geöffnet:="MB3293", BG_ABP_Schleuse:="BG3291", ABP_Schleuse_geöffnet:="MB3291", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs)
--- NW 12: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0614.StOk_blinken
--- NW 13: Ende ---
BE
@@ -0,0 +1,235 @@
=== FB 1121: PS5_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_vor_Einfahrt : "MHMOmniSchleuse"
Weiche_Einfahrt : "MHMOmniWeiche"
Schleuse_Vorstau : "MHMOmniSchleuse"
Sks_Arbeitsplatz : "MHM_Arbeitsplatz"
Schleuse_Platz_1 : "MHMOmniSchleuse"
Schleuse_Platz_2 : "MHMOmniSchleuse"
Schleuse_Platz_3 : "MHMOmniSchleuse"
Schleuse_Ausfahrt : "MHMOmniSchleuse"
Schleuse_vor_Ausfahrt : "MHMOmniSchleuse"
Prio_Ausfahrt : "MAusfahrPrio_ABP"
Vorfahrt_Ausfahrweiche : Struct
Weiche_von_Haupt-Sep_belegt : Bool
Weiche_von_Ausfahr-Sep_belegt : Bool
Haupstrecke_gefahren : Int
AMR_gefahren : Int
Aktivierte_ABPs : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// PS5-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt
= Weiche_Einfahrt.Dyn.Status.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt
= Schleuse_Vorstau.Dyn.Sk.Auto_akt
= Schleuse_Platz_1.Dyn.Sk.Auto_akt
= Schleuse_Platz_2.Dyn.Sk.Auto_akt
= Schleuse_Platz_3.Dyn.Sk.Auto_akt
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt
= Schleuse_Ausfahrt.Dyn.Sk.Auto_akt
= Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok
= Weiche_Einfahrt.Dyn.Status.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok
= Schleuse_Vorstau.Dyn.Sk.Bereich_ok
= Schleuse_Platz_1.Dyn.Sk.Bereich_ok
= Schleuse_Platz_2.Dyn.Sk.Bereich_ok
= Schleuse_Platz_3.Dyn.Sk.Bereich_ok
= Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok
= Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok
= Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UZ0615.StOk_aktiv
= ErrQuit
S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS5".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS5".Stat.A_start
S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_start
S "DArbeitsplätze_Antriebe".MA0082.Stat.A_start
--- NW 3: Schleuse vor Einfahrt ---
CALL FB "None" , (Schleusen_Nr:=3241, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3244", B_InSchleuse:="BG3241", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0082", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3241", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS5.Stat.Ast, Error:=DB608.DBW216, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0082.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt
--- NW 4: Weiche Einfahrt ---
CALL FB "None" , (Weichen_Nr:=3242, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS5.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS5.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0082", Antrieb_Gerade_aktiv:="MA0082", Antrieb_Abzweig_aktiv:="MA0066", Weiche_ist_AST:="MB3242", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS5.Stat.Ast, Error:=DB608.DBW218, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen ---
CALL FB "None" , (Arbeitsplatz_Nr:=16#A500, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3243", B_an_Platz_1:="BG3245", B_an_Platz_2:="BG3251", B_an_Platz_3:="BG3255", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS5.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3262", Y_Vorstau:="MB3243", Y_Platz_1:="MB3245", Y_Platz_2:="MB3251", Y_Platz_3:="MB3255", Antrieb_Vorstau_aktiv:="MA0066", Antrieb_Nachstau_1_aktiv:="MA0067", Antrieb_Nachstau_2_aktiv:="MA0070", Antrieb_Nachstau_3_aktiv:="MA0071", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS5.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS5.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS5.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS5.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS5".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS5".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW108, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes
// Anzeigen:
A "DAMR_Bereich".A01_UH06.AnlageEin
A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert
= "PF0040"
A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige
= "PF3240"
--- NW 6: Schleuse Vorstau ---
CALL FB "None" , (Schleusen_Nr:=3243, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3242", B_InSchleuse:="BG3243", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0066", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3243", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS5.Stat.Ast, Error:=DB608.DBW220, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Schleuse Platz 1 ---
CALL FB "None" , (Schleusen_Nr:=3245, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3245", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0067", Schleuse_geöffnet:="MB3245", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS5.Stat.Ast, Error:=DB608.DBW222, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS5".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_1.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
JCN P1D
L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren
P1D: NOP 0
--- NW 8: Schleuse Platz 2 ---
CALL FB "None" , (Schleusen_Nr:=3251, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3251", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0070", Schleuse_geöffnet:="MB3251", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS5.Stat.Ast, Error:=DB608.DBW224, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS5".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_2.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
JCN P2D
L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren
P2D: NOP 0
--- NW 9: Schleuse Platz 3 ---
CALL FB "None" , (Schleusen_Nr:=3255, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3255", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0071", Schleuse_geöffnet:="MB3255", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS5.Stat.Ast, Error:=DB608.DBW226, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A Schleuse_Platz_3.Dyn.Status.Trolley_draussen
S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
JCN P3D
L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren
T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren
P3D: NOP 0
--- NW 10: Schleuse Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3262, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3260", B_InSchleuse:="BG3262", B_AusSchleuse:="BG3263", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS5.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0071", Antrieb_plus_aktiv:="MA0082", Schleuse_geöffnet:="MB3262", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS5.Stat.Ast, Error:=DB608.DBW228, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, hStOk:=ErrAnz)
// Ausfahr-Weiche schalten:
A "MB3262"
S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS5.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt"
--- NW 11: Schleuse Hauptstrecke vor Ausfahrt ---
CALL FB "None" , (Schleusen_Nr:=3265, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3264", B_InSchleuse:="BG3265", B_AusSchleuse:="BG3263", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS5.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0082", Antrieb_plus_aktiv:="MA0082", Schleuse_geöffnet:="MB3265", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_PS5.Stat.Ast, Error:=DB608.DBW230, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0082.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // s.o. | s.o.
// Ausfahr-Weiche zurückschalten:
A "MB3265"
R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS5.Stat.Ast
// Ausfahr-Weiche wieder freigeben:
A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen
R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt"
--- NW 12: Aktive Arbeitsplätze ermitteln (gilt für alle Prios) ---
L 0
T Aktivierte_ABPs
AN Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt
JC PS4
L Aktivierte_ABPs
+ 1
T Aktivierte_ABPs
PS4: AN "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt
JC PS3
L Aktivierte_ABPs
+ 1
T Aktivierte_ABPs
PS3: AN "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt
JC PS2
L Aktivierte_ABPs
+ 1
T Aktivierte_ABPs
PS2: AN "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt
JC PS1
L Aktivierte_ABPs
+ 1
T Aktivierte_ABPs
PS1: AN "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt
JC MPS3
L Aktivierte_ABPs
+ 1
T Aktivierte_ABPs
MPS3: AN "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt
JC MPS2
L Aktivierte_ABPs
+ 1
T Aktivierte_ABPs
MPS2: AN "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt
JC MPS1
L Aktivierte_ABPs
+ 1
T Aktivierte_ABPs
MPS1: AN "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt
JC AABPE
L Aktivierte_ABPs
+ 1
T Aktivierte_ABPs
AABPE: NOP 0
--- NW 13: Ausfahr-Priorität ---
CALL FB "None" , (BG_Haupt_Schleuse:="BG3265", Haupt_Schleuse_geöffnet:="MB3265", BG_ABP_Schleuse:="BG3262", ABP_Schleuse_geöffnet:="MB3262", Aktive_ABP:=Aktivierte_ABPs)
--- NW 14: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0615.StOk_blinken
--- NW 15: Ende ---
BE
@@ -0,0 +1,480 @@
=== FB 1199: Arbeitsplätze_Antriebe [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
MA0061 : "MAntrieb_PowerSave"
MA0062 : "MAntrieb_PowerSave"
MA0063 : "MAntrieb_PowerSave"
MA0064 : "MAntrieb_PowerSave"
MA0065 : "MAntrieb_PowerSave"
MA0082 : "MAntrieb_PowerSave"
MA0087 : "MAntrieb_PowerSave"
MA0094 : "MAntrieb_PowerSave"
MA0105 : "MAntrieb_PowerSave"
MA0112 : "MAntrieb_PowerSave"
MA _Einfahrt_PS5 : "MAntrieb_PowerSave"
MA _Nachstau1_PS5 : "MAntrieb_PowerSave"
MA _Nachstau2_PS5 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS5 : "MAntrieb_PowerSave"
MA _Einfahrt_PS4 : "MAntrieb_PowerSave"
MA _Nachstau1_PS4 : "MAntrieb_PowerSave"
MA _Nachstau2_PS4 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS4 : "MAntrieb_PowerSave"
MA _Einfahrt_PS3 : "MAntrieb_PowerSave"
MA _Nachstau1_PS3 : "MAntrieb_PowerSave"
MA _Nachstau2_PS3 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS3 : "MAntrieb_PowerSave"
MA _Einfahrt_PS2 : "MAntrieb_PowerSave"
MA _Nachstau1_PS2 : "MAntrieb_PowerSave"
MA _Nachstau2_PS2 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS2 : "MAntrieb_PowerSave"
MA _Einfahrt_PS1 : "MAntrieb_PowerSave"
MA _Nachstau1_PS1 : "MAntrieb_PowerSave"
MA _Nachstau2_PS1 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS1 : "MAntrieb_PowerSave"
MA _Einfahrt_MPS3 : "MAntrieb_PowerSave"
MA _Nachstau1_MPS3 : "MAntrieb_PowerSave"
MA _Nachstau2_MPS3 : "MAntrieb_PowerSave"
MA _Ausfahrt_MPS3 : "MAntrieb_PowerSave"
MA _Einfahrt_MPS2 : "MAntrieb_PowerSave"
MA _Nachstau1_MPS2 : "MAntrieb_PowerSave"
MA _Nachstau2_MPS2 : "MAntrieb_PowerSave"
MA _Ausfahrt_MPS2 : "MAntrieb_PowerSave"
MA _Einfahrt_MPS1 : "MAntrieb_PowerSave"
MA _Nachstau1_MPS1 : "MAntrieb_PowerSave"
MA _Nachstau2_MPS1 : "MAntrieb_PowerSave"
MA _Ausfahrt_MPS1 : "MAntrieb_PowerSave"
Temp:
Auto : Bool // Automatik Linie ist aktiv
Hand : Bool // Hand Linie ist aktiv
BereichErr : Bool // Bereichsstörung -> Antrieb stoppen
QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN
FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN
Quit : Bool // Motorschutz-Störung quittieren
Qok : Bool // Motorschutz ok
Jog1 : Bool // Geschwindigkeit 1
Jog2 : Bool // Geschwindigkeit 2
Betrieb : Bool // Betriebsart aktiv
FC105_RET : Word // Returnwert von FC105
Antrieb1 : Bool // Antrieb dazuschalten
Antrieb2 : Bool // Antrieb dazuschalten
F1 : Bool // Geschwindigkeit 1 aktiviert
F2 : Bool // Geschwindigkeit 2 aktiviert
F3 : Bool // Geschwindigkeit 3 aktiviert
Constant:
--- NW 1: Übergabe des Bereichstatus System UH06/A01 ---
A "DAMR_Bereich".A01_UH06.Automatik
= Auto
CLR
= Hand
A "DAMR_Bereich".A01_UH06.BereichErr
= BereichErr
AN BereichErr
L S5T#1S
OnDelay "T190"
A "T190"
= QKontroll
= FuKontroll
A "DAMR_Bereich".A01_UH06.StOk_aktiv
= Quit
--- NW 2: MA0061 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0061", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0061", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0061, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 3: MA0062 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0062", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0062", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0062, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 4: MA0063 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0063", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=180, Antriebrueck:=?, Antriebvor:="MA0063", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0063, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 5: MA0064 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0064", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0064", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0064, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 6: MA0065 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0065", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0065", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0065, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 7: MA0082 ---
A MA0082.Stat.A_vor
A MA0082.Stat.Stop_vor
CLR
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0082", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0082", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0082, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 8: MA0087 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0087", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0087", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0087, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 9: MA0094 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0094", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0094", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0094, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 10: MA0105 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0105", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0105", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0105, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 11: MA0112 ---
CLR
S MA0112.Stat.Stop_vor
S MA0112.Stat.Stop_rueck
S MA0112.Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0112", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0112", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0112, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 12: MA_Einfahrt PS5 ---
CLR
S "MA _Einfahrt_PS5".Stat.Stop_vor
S "MA _Einfahrt_PS5".Stat.Stop_rueck
S "MA _Einfahrt_PS5".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0066", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=30, Antriebrueck:=?, Antriebvor:="MA0066", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0066, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 13: MA _Nachstau1 PS5 ---
CLR
S "MA _Nachstau1_PS5".Stat.Stop_vor
S "MA _Nachstau1_PS5".Stat.Stop_rueck
S "MA _Nachstau1_PS5".Stat.A_start
S "MA _Nachstau1_PS5".Stat.A_vor
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0067", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=0, Antriebrueck:=?, Antriebvor:="MA0067", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0067, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 14: MA _Nachstau2 PS5 ---
CLR
S "MA _Nachstau2_PS5".Stat.Stop_vor
S "MA _Nachstau2_PS5".Stat.Stop_rueck
S "MA _Nachstau2_PS5".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0070", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=0, Antriebrueck:=?, Antriebvor:="MA0070", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0070, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 15: MA _Ausfahrt PS5 ---
CLR
S "MA _Ausfahrt_PS5".Stat.Stop_vor
S "MA _Ausfahrt_PS5".Stat.Stop_rueck
S "MA _Ausfahrt_PS5".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0071", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=15, Antriebrueck:=?, Antriebvor:="MA0071", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0071, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 16: MA_Einfahrt PS4 ---
CLR
S "MA _Einfahrt_PS4".Stat.Stop_vor
S "MA _Einfahrt_PS4".Stat.Stop_rueck
S "MA _Einfahrt_PS4".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0072", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0072", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0072, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 17: MA _Nachstau1 PS4 ---
CLR
S "MA _Nachstau1_PS4".Stat.Stop_vor
S "MA _Nachstau1_PS4".Stat.Stop_rueck
S "MA _Nachstau1_PS4".Stat.A_start
S "MA _Nachstau1_PS4".Stat.A_vor
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0073", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0073", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0073, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 18: MA _Nachstau2 PS4 ---
CLR
S "MA _Nachstau2_PS4".Stat.Stop_vor
S "MA _Nachstau2_PS4".Stat.Stop_rueck
S "MA _Nachstau2_PS4".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0074", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0074", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0074, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 19: MA _Ausfahrt PS4 ---
CLR
S "MA _Ausfahrt_PS4".Stat.Stop_vor
S "MA _Ausfahrt_PS4".Stat.Stop_rueck
S "MA _Ausfahrt_PS4".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0075", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0075", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0075, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 20: MA_Einfahrt PS3 ---
CLR
S "MA _Einfahrt_PS3".Stat.Stop_vor
S "MA _Einfahrt_PS3".Stat.Stop_rueck
S "MA _Einfahrt_PS3".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0076", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0076", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0076, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 21: MA _Nachstau1 PS3 ---
CLR
S "MA _Nachstau1_PS3".Stat.Stop_vor
S "MA _Nachstau1_PS3".Stat.Stop_rueck
S "MA _Nachstau1_PS3".Stat.A_start
S "MA _Nachstau1_PS3".Stat.A_vor
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0077", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0077", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0077, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 22: MA _Nachstau2 PS3 ---
A "MA _Nachstau2_PS3".Stat.A_vor
CLR
S "MA _Nachstau2_PS3".Stat.Stop_vor
S "MA _Nachstau2_PS3".Stat.Stop_rueck
S "MA _Nachstau2_PS3".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0080", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0080", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0080, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 23: MA _Ausfahrt PS3 ---
CLR
S "MA _Ausfahrt_PS3".Stat.Stop_vor
S "MA _Ausfahrt_PS3".Stat.Stop_rueck
S "MA _Ausfahrt_PS3".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0081", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0081", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0081, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 24: MA_Einfahrt PS2 ---
CLR
S "MA _Einfahrt_PS2".Stat.Stop_vor
S "MA _Einfahrt_PS2".Stat.Stop_rueck
S "MA _Einfahrt_PS2".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0083", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0083", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0083, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 25: MA _Nachstau1 PS2 ---
CLR
S "MA _Nachstau1_PS2".Stat.Stop_vor
S "MA _Nachstau1_PS2".Stat.Stop_rueck
S "MA _Nachstau1_PS2".Stat.A_start
S "MA _Nachstau1_PS2".Stat.A_vor
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0084", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0084", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0084, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 26: MA _Nachstau2 PS2 ---
CLR
S "MA _Nachstau2_PS2".Stat.Stop_vor
S "MA _Nachstau2_PS2".Stat.Stop_rueck
S "MA _Nachstau2_PS2".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0085", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0085", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0085, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 27: MA _Ausfahrt PS2 ---
CLR
S "MA _Ausfahrt_PS2".Stat.Stop_vor
S "MA _Ausfahrt_PS2".Stat.Stop_rueck
S "MA _Ausfahrt_PS2".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0086", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0086", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0086, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 28: MA_Einfahrt PS1 ---
CLR
S "MA _Einfahrt_PS1".Stat.Stop_vor
S "MA _Einfahrt_PS1".Stat.Stop_rueck
S "MA _Einfahrt_PS1".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0090", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0090", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0090, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 29: MA _Nachstau1 PS1 ---
CLR
S "MA _Nachstau1_PS1".Stat.Stop_vor
S "MA _Nachstau1_PS1".Stat.Stop_rueck
S "MA _Nachstau1_PS1".Stat.A_start
S "MA _Nachstau1_PS1".Stat.A_vor
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0091", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0091", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0091, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 30: MA _Nachstau2 PS1 ---
CLR
S "MA _Nachstau2_PS1".Stat.Stop_vor
S "MA _Nachstau2_PS1".Stat.Stop_rueck
S "MA _Nachstau2_PS1".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0092", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0092", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0092, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 31: MA _Ausfahrt PS1 ---
CLR
S "MA _Ausfahrt_PS1".Stat.Stop_vor
S "MA _Ausfahrt_PS1".Stat.Stop_rueck
S "MA _Ausfahrt_PS1".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0093", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0093", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0093, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 32: MA_Einfahrt MPS3 ---
CLR
S "MA _Einfahrt_MPS3".Stat.Stop_vor
S "MA _Einfahrt_MPS3".Stat.Stop_rueck
S "MA _Einfahrt_MPS3".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0095", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0095", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0095, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 33: MA _Nachstau1 MPS3 ---
CLR
S "MA _Nachstau1_MPS3".Stat.Stop_vor
S "MA _Nachstau1_MPS3".Stat.Stop_rueck
S "MA _Nachstau1_MPS3".Stat.A_start
S "MA _Nachstau1_MPS3".Stat.A_vor
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0096", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0096", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0096, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 34: MA _Nachstau2 MPS3 ---
CLR
S "MA _Nachstau2_MPS3".Stat.Stop_vor
S "MA _Nachstau2_MPS3".Stat.Stop_rueck
S "MA _Nachstau2_MPS3".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0097", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0097", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0097, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 35: MA _Ausfahrt MPS3 ---
CLR
S "MA _Ausfahrt_MPS3".Stat.Stop_vor
S "MA _Ausfahrt_MPS3".Stat.Stop_rueck
S "MA _Ausfahrt_MPS3".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0100", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0100", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0100, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 36: MA_Einfahrt MPS2 ---
CLR
S "MA _Einfahrt_MPS2".Stat.Stop_vor
S "MA _Einfahrt_MPS2".Stat.Stop_rueck
S "MA _Einfahrt_MPS2".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0101", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0101", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0101, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 37: MA _Nachstau1 MPS2 ---
CLR
S "MA _Nachstau1_MPS2".Stat.Stop_vor
S "MA _Nachstau1_MPS2".Stat.Stop_rueck
S "MA _Nachstau1_MPS2".Stat.A_start
S "MA _Nachstau1_MPS2".Stat.A_vor
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0102", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0102", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0102, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 38: MA _Nachstau2 MPS2 ---
CLR
S "MA _Nachstau2_MPS2".Stat.Stop_vor
S "MA _Nachstau2_MPS2".Stat.Stop_rueck
S "MA _Nachstau2_MPS2".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0103", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0103", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0103, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 39: MA _Ausfahrt MPS2 ---
CLR
S "MA _Ausfahrt_MPS2".Stat.Stop_vor
S "MA _Ausfahrt_MPS2".Stat.Stop_rueck
S "MA _Ausfahrt_MPS2".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0104", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0104", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0104, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 40: MA_Einfahrt MPS1 ---
CLR
S "MA _Einfahrt_MPS1".Stat.Stop_vor
S "MA _Einfahrt_MPS1".Stat.Stop_rueck
S "MA _Einfahrt_MPS1".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0106", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0106", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0106, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 41: MA _Nachstau1 MPS1 ---
CLR
S "MA _Nachstau1_MPS1".Stat.Stop_vor
S "MA _Nachstau1_MPS1".Stat.Stop_rueck
S "MA _Nachstau1_MPS1".Stat.A_start
S "MA _Nachstau1_MPS1".Stat.A_vor
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0107", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0107", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0107, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 42: MA _Nachstau2 MPS1 ---
CLR
S "MA _Nachstau2_MPS1".Stat.Stop_vor
S "MA _Nachstau2_MPS1".Stat.Stop_rueck
S "MA _Nachstau2_MPS1".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0111", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0111", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0111, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 43: MA _Ausfahrt MPS1 ---
CLR
S "MA _Ausfahrt_MPS1".Stat.Stop_vor
S "MA _Ausfahrt_MPS1".Stat.Stop_rueck
S "MA _Ausfahrt_MPS1".Stat.A_start
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0110", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0110", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0110, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 44: Ende ---
BE
@@ -0,0 +1,352 @@
=== FB 1190: Arbeitsplätze_Sensoren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Stau_BG3566 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3567 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3457 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3447 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3483 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3484 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3486 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3244 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_BG3542 : "MSensoren" // Stau am Sensor Einfahrt MA0204
Stau_Einfahrt_PS5 : "MSensoren"
Stau_nach_Einfahrt_PS5 : "MSensoren"
Stau_Platz1_PS5 : "MSensoren"
Stau_Platz2_PS5 : "MSensoren"
Stau_Platz3_PS5 : "MSensoren"
Stau_Ausfahrt_PS5 : "MSensoren"
Stau_nach_Ausfahrt_PS5 : "MSensoren"
Stau_Einfahrt_PS4 : "MSensoren"
Stau_nach_Einfahrt_PS4 : "MSensoren"
Stau_Platz1_PS4 : "MSensoren"
Stau_Platz2_PS4 : "MSensoren"
Stau_Platz3_PS4 : "MSensoren"
Stau_Ausfahrt_PS4 : "MSensoren"
Stau_nach_Ausfahrt_PS4 : "MSensoren"
Stau_Einfahrt_PS3 : "MSensoren"
Stau_nach_Einfahrt_PS3 : "MSensoren"
Stau_Platz1_PS3 : "MSensoren"
Stau_Platz2_PS3 : "MSensoren"
Stau_Platz3_PS3 : "MSensoren"
Stau_Ausfahrt_PS3 : "MSensoren"
Stau_nach_Ausfahrt_PS3 : "MSensoren"
Stau_Einfahrt_PS2 : "MSensoren"
Stau_nach_Einfahrt_PS2 : "MSensoren"
Stau_Platz1_PS2 : "MSensoren"
Stau_Platz2_PS2 : "MSensoren"
Stau_Platz3_PS2 : "MSensoren"
Stau_Ausfahrt_PS2 : "MSensoren"
Stau_nach_Ausfahrt_PS2 : "MSensoren"
Stau_Einfahrt_PS1 : "MSensoren"
Stau_nach_Einfahrt_PS1 : "MSensoren"
An_BG3383 : "MSensoren" // Am Sensor Ende MA0203
Stau_Platz1_PS1 : "MSensoren"
Stau_Platz2_PS1 : "MSensoren"
Stau_Platz3_PS1 : "MSensoren"
Stau_Ausfahrt_PS1 : "MSensoren"
Stau_nach_Ausfahrt_PS1 : "MSensoren"
Stau_Einfahrt_MPS3 : "MSensoren"
Stau_nach_Einfahrt_MPS3 : "MSensoren"
Stau_Platz1_MPS3 : "MSensoren"
Stau_Platz2_MPS3 : "MSensoren"
Stau_Platz3_MPS3 : "MSensoren"
Stau_Ausfahrt_MPS3 : "MSensoren"
Stau_nach_Ausfahrt_MPS3 : "MSensoren"
Stau_Einfahrt_MPS2 : "MSensoren"
Stau_nach_Einfahrt_MPS2 : "MSensoren"
Stau_Platz1_MPS2 : "MSensoren"
Stau_Platz2_MPS2 : "MSensoren"
Stau_Platz3_MPS2 : "MSensoren"
Stau_Ausfahrt_MPS2 : "MSensoren"
Stau_nach_Ausfahrt_MPS2 : "MSensoren"
Stau_Einfahrt_MPS1 : "MSensoren"
Stau_nach_Einfahrt_MPS1 : "MSensoren"
Stau_Platz1_MPS1 : "MSensoren"
Stau_Platz2_MPS1 : "MSensoren"
Stau_Platz3_MPS1 : "MSensoren"
Stau_Ausfahrt_MPS1 : "MSensoren"
Stau_nach_Ausfahrt_MPS1 : "MSensoren"
Temp:
T_Ein : Int // Vorgabe Einschaltverzögerung
T_Aus : Int // Zwischenspeicher Ausschaltverzögerung
F1 : Bool // Geschwindigkeit 1 aktiviert
F2 : Bool // Geschwindigkeit 2 aktiviert
F3 : Bool // Geschwindigkeit 3 aktiviert
ESensor : Bool // Sensoren
Antrieb : Bool
VReal : Real // GeschwindigkeitinReal
Zeit : Int // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool // Zeit aktivieren
Constant:
--- NW 1: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3566", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 2: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3567", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 3: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3457", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 4: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3447", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 5: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3483", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 6: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3484", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 7: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3486", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 8: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3244", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 9: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3542", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 10: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3242", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 11: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3264", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 12: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3245", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 13: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3251", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 14: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3255", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 15: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3260", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 16: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3263", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 17: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3272", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 18: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3270", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 19: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3275", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 20: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3281", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 21: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3285", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 22: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3290", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 23: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3294", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 24: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3302", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 25: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3294", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 26: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3305", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 27: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3311", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 28: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3315", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 29: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3320", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 30: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3322", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 31: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3332", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 32: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3330", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 33: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3335", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 34: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3341", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 35: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3345", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 36: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3350", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 37: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3361", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 38: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3362", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 39: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3361", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 40: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3381", T_Ein:=1, T_Aus:=50, tein_aktiv:=TRUE, taus_aktiv:="MA0094")
--- NW 41: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3365", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 42: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3371", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 43: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3375", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 44: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3380", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 45: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3384", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 46: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3392", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 47: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3391", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 48: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3395", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 49: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3401", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 50: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3405", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 51: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3410", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 52: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3414", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 53: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3422", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 54: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3445", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 55: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3425", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 56: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3431", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 57: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3435", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 58: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3440", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 59: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3444", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 60: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3452", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 61: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3451", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 62: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3455", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 63: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3461", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 64: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3465", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 65: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3470", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 66: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3541", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 67: Ende ---
BE
@@ -0,0 +1,568 @@
=== FB 1192: Arbeitsplätze_Zylinder [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3456 : "MZylinder" //
Schleuse_3481 : "MZylinder" //
Weiche_3482 : "MZylinder" //
Weiche_3361 : "MZylinder" //
Schleuse_3487 : "MZylinder" //
Schleuse_Vor_Einfahrt_PS5 : "MZylinder" //
Weiche_Einfahrt_PS5 : "MZylinder" //
Schleuse_Vorstau_PS5 : "MZylinder"
Weiche_zu_Platz1_PS5 : "MZylinder" //
Weiche_zu_Platz2_PS5 : "MZylinder"
Schleuse_Platz1_PS5 : "MZylinder"
Schleuse_Platz2_PS5 : "MZylinder"
Schleuse_Platz3_PS5 : "MZylinder"
Weiche_von_Platz1_PS5 : "MZylinder" //
Weiche_von_Platz2_PS5 : "MZylinder"
Schleuse_Ausfahrt_PS5 : "MZylinder" //
Schleuse_Vor_Ausfahrt_PS5 : "MZylinder" //
Weiche_Ausfahrt_PS5 : "MZylinder" //
Schleuse_Vor_Einfahrt_PS4 : "MZylinder" //
Weiche_Einfahrt_PS4 : "MZylinder" //
Schleuse_Vorstau_PS4 : "MZylinder"
Weiche_zu_Platz1_PS4 : "MZylinder" //
Weiche_zu_Platz2_PS4 : "MZylinder"
Schleuse_Platz1_PS4 : "MZylinder"
Schleuse_Platz2_PS4 : "MZylinder"
Schleuse_Platz3_PS4 : "MZylinder"
Weiche_von_Platz1_PS4 : "MZylinder" //
Weiche_von_Platz2_PS4 : "MZylinder"
Schleuse_Ausfahrt_PS4 : "MZylinder" //
Weiche_Ausfahrt_PS4 : "MZylinder" //
Schleuse_Vor_Einfahrt_PS3 : "MZylinder" //
Weiche_Einfahrt_PS3 : "MZylinder" //
Schleuse_Vorstau_PS3 : "MZylinder"
Weiche_zu_Platz1_PS3 : "MZylinder" //
Weiche_zu_Platz2_PS3 : "MZylinder"
Schleuse_Platz1_PS3 : "MZylinder"
Schleuse_Platz2_PS3 : "MZylinder"
Schleuse_Platz3_PS3 : "MZylinder"
Weiche_von_Platz1_PS3 : "MZylinder" //
Weiche_von_Platz2_PS3 : "MZylinder"
Schleuse_Ausfahrt_PS3 : "MZylinder" //
Schleuse_Vor_Ausfahrt_PS3 : "MZylinder" //
Weiche_Ausfahrt_PS3 : "MZylinder" //
Schleuse_Vor_Einfahrt_PS2 : "MZylinder" //
Weiche_Einfahrt_PS2 : "MZylinder" //
Schleuse_Vorstau_PS2 : "MZylinder"
Weiche_zu_Platz1_PS2 : "MZylinder" //
Weiche_zu_Platz2_PS2 : "MZylinder"
Schleuse_Platz1_PS2 : "MZylinder"
Schleuse_Platz2_PS2 : "MZylinder"
Schleuse_Platz3_PS2 : "MZylinder"
Weiche_von_Platz1_PS2 : "MZylinder" //
Weiche_von_Platz2_PS2 : "MZylinder"
Schleuse_Ausfahrt_PS2 : "MZylinder" //
Weiche_Ausfahrt_PS2 : "MZylinder" //
Schleuse_Vor_Einfahrt_PS1 : "MZylinder" //
Weiche_Einfahrt_PS1 : "MZylinder" //
Schleuse_Vorstau_PS1 : "MZylinder"
Weiche_zu_Platz1_PS1 : "MZylinder" //
Weiche_zu_Platz2_PS1 : "MZylinder"
Schleuse_Platz1_PS1 : "MZylinder"
Schleuse_Platz2_PS1 : "MZylinder"
Schleuse_Platz3_PS1 : "MZylinder"
Weiche_von_Platz1_PS1 : "MZylinder" //
Weiche_von_Platz2_PS1 : "MZylinder"
Schleuse_Ausfahrt_PS1 : "MZylinder" //
Schleuse_Vor_Ausfahrt_PS1 : "MZylinder" //
Weiche_Ausfahrt_PS1 : "MZylinder" //
Schleuse_Vor_Einfahrt_MPS3 : "MZylinder" //
Weiche_Einfahrt_MPS3 : "MZylinder" //
Schleuse_Vorstau_MPS3 : "MZylinder"
Weiche_zu_Platz1_MPS3 : "MZylinder" //
Weiche_zu_Platz2_MPS3 : "MZylinder"
Schleuse_Platz1_MPS3 : "MZylinder"
Schleuse_Platz2_MPS3 : "MZylinder"
Schleuse_Platz3_MPS3 : "MZylinder"
Weiche_von_Platz1_MPS3 : "MZylinder" //
Weiche_von_Platz2_MPS3 : "MZylinder"
Schleuse_Ausfahrt_MPS3 : "MZylinder" //
Schleuse_Vor_Ausfahrt_MPS3 : "MZylinder" //
Weiche_Ausfahrt_MPS3 : "MZylinder" //
Schleuse_Vor_Einfahrt_MPS2 : "MZylinder" //
Weiche_Einfahrt_MPS2 : "MZylinder" //
Schleuse_Vorstau_MPS2 : "MZylinder"
Weiche_zu_Platz1_MPS2 : "MZylinder" //
Weiche_zu_Platz2_MPS2 : "MZylinder"
Schleuse_Platz1_MPS2 : "MZylinder"
Schleuse_Platz2_MPS2 : "MZylinder"
Schleuse_Platz3_MPS2 : "MZylinder"
Weiche_von_Platz1_MPS2 : "MZylinder" //
Weiche_von_Platz2_MPS2 : "MZylinder"
Schleuse_Ausfahrt_MPS2 : "MZylinder" //
Schleuse_Vor_Ausfahrt_MPS2 : "MZylinder" //
Weiche_Ausfahrt_MPS2 : "MZylinder" //
Schleuse_Vor_Einfahrt_MPS1 : "MZylinder" //
Weiche_Einfahrt_MPS1 : "MZylinder" //
Schleuse_Vorstau_MPS1 : "MZylinder"
Weiche_zu_Platz1_MPS1 : "MZylinder" //
Weiche_zu_Platz2_MPS1 : "MZylinder"
Schleuse_Platz1_MPS1 : "MZylinder"
Schleuse_Platz2_MPS1 : "MZylinder"
Schleuse_Platz3_MPS1 : "MZylinder"
Weiche_von_Platz1_MPS1 : "MZylinder" //
Weiche_von_Platz2_MPS1 : "MZylinder"
Schleuse_Ausfahrt_MPS1 : "MZylinder" //
Schleuse_Vor_Ausfahrt_MPS1 : "MZylinder" //
Weiche_Ausfahrt_MPS1 : "MZylinder" //
Schleuse_3540 : "MZylinder" //
Schleuse_3543 : "MZylinder" //
Temp:
Auto : Bool // Automatik ist aktiv
Hand : Bool // Hand ist aktiv
ZylAst : Bool // Zylinder ansteuern
Constant:
--- NW 1: Übergabe des Bereichstatus System UH06 / A01 ---
A "DAMR_Bereich".A01_UH06.Automatik
= Auto
A "DAMR_Bereich".A01_UH06.BereichErr
JC Next // Zylinder-Stellung nicht mehr ändern
--- NW 2: Schleuse_3456 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3456", ZylGst:=?)
--- NW 3: Schleuse_3481 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3481", ZylGst:=?)
--- NW 4: Weiche_3482 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3482", ZylGst:=?)
--- NW 5: Weiche_3361 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3361", ZylGst:=?)
--- NW 6: Schleuse_3487 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3487", ZylGst:=?)
--- NW 7: Schleuse_vor_Einfahrt_PS5 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3241", ZylGst:=?)
--- NW 8: Weiche_zu_PS5 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3242", ZylGst:=?)
--- NW 9: Schleuse_Vorstau_PS5 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3243", ZylGst:=?)
--- NW 10: Weiche_PS5_zu_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3244", ZylGst:=?)
--- NW 11: Weiche_PS5_zu_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3250", ZylGst:=?)
--- NW 12: Schleuse_PS5_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3245", ZylGst:=?)
--- NW 13: Schleuse_PS5_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3251", ZylGst:=?)
--- NW 14: Schleuse_PS5_Platz3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3255", ZylGst:=?)
--- NW 15: Weiche_PS5_von_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3260", ZylGst:=?)
--- NW 16: Weiche_PS5_von_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3256", ZylGst:=?)
--- NW 17: Schleuse_PS5_raus ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3262", ZylGst:=?)
--- NW 18: Schleuse_vor_Ausfahrt_PS5 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3265", ZylGst:=?)
--- NW 19: Weiche_von_PS5 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3263", ZylGst:=?)
--- NW 20: Schleuse_vor_Einfahrt_PS4 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3271", ZylGst:=?)
--- NW 21: Weiche_zu_PS4 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3272", ZylGst:=?)
--- NW 22: Schleuse_Vorstau_PS4 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3273", ZylGst:=?)
--- NW 23: Weiche_PS4_zu_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3274", ZylGst:=?)
--- NW 24: Weiche_PS4_zu_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3280", ZylGst:=?)
--- NW 25: Schleuse_PS4_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3275", ZylGst:=?)
--- NW 26: Schleuse_PS4_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3281", ZylGst:=?)
--- NW 27: Schleuse_PS4_Platz3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3285", ZylGst:=?)
--- NW 28: Weiche_PS4_von_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3290", ZylGst:=?)
--- NW 29: Weiche_PS4_von_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3286", ZylGst:=?)
--- NW 30: Schleuse_PS4_raus ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3291", ZylGst:=?)
--- NW 31: Weiche_von_PS4 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3292", ZylGst:=?)
--- NW 32: Schleuse_vor_Einfahrt_PS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3293", ZylGst:=?)
--- NW 33: Weiche_zu_PS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3302", ZylGst:=?)
--- NW 34: Schleuse_Vorstau_PS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3303", ZylGst:=?)
--- NW 35: Weiche_PS3_zu_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3304", ZylGst:=?)
--- NW 36: Weiche_PS3_zu_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3310", ZylGst:=?)
--- NW 37: Schleuse_PS3_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3305", ZylGst:=?)
--- NW 38: Schleuse_PS3_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3311", ZylGst:=?)
--- NW 39: Schleuse_PS3_Platz3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3315", ZylGst:=?)
--- NW 40: Weiche_PS3_von_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3320", ZylGst:=?)
--- NW 41: Weiche_PS3_von_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3316", ZylGst:=?)
--- NW 42: Schleuse_PS3_raus ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3321", ZylGst:=?)
--- NW 43: Schleuse_vor_Ausfahrt_PS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3323", ZylGst:=?)
--- NW 44: Weiche_von_PS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3322", ZylGst:=?)
--- NW 45: Schleuse_vor_Einfahrt_PS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3331", ZylGst:=?)
--- NW 46: Weiche_zu_PS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3332", ZylGst:=?)
--- NW 47: Schleuse_Vorstau_PS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3333", ZylGst:=?)
--- NW 48: Weiche_PS2_zu_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3334", ZylGst:=?)
--- NW 49: Weiche_PS2_zu_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3340", ZylGst:=?)
--- NW 50: Schleuse_PS2_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3335", ZylGst:=?)
--- NW 51: Schleuse_PS2_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3341", ZylGst:=?)
--- NW 52: Schleuse_PS2_Platz3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3345", ZylGst:=?)
--- NW 53: Weiche_PS2_von_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3350", ZylGst:=?)
--- NW 54: Weiche_PS2_von_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3346", ZylGst:=?)
--- NW 55: Schleuse_PS2_raus ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3351", ZylGst:=?)
--- NW 56: Weiche_von_PS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3352", ZylGst:=?)
--- NW 57: Schleuse_vor_Einfahrt_PS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3353", ZylGst:=?)
--- NW 58: Weiche_zu_PS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3362", ZylGst:=?)
--- NW 59: Schleuse_Vorstau_PS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3363", ZylGst:=?)
--- NW 60: Weiche_PS1_zu_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3364", ZylGst:=?)
--- NW 61: Weiche_PS1_zu_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3370", ZylGst:=?)
--- NW 62: Schleuse_PS1_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3365", ZylGst:=?)
--- NW 63: Schleuse_PS1_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3371", ZylGst:=?)
--- NW 64: Schleuse_PS1_Platz3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3375", ZylGst:=?)
--- NW 65: Weiche_PS1_von_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3380", ZylGst:=?)
--- NW 66: Weiche_PS1_von_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3376", ZylGst:=?)
--- NW 67: Schleuse_PS1_raus ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3381", ZylGst:=?)
--- NW 68: Schleuse_vor_Ausfahrt_PS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3383", ZylGst:=?)
--- NW 69: Weiche_von_PS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3382", ZylGst:=?)
--- NW 70: Schleuse_vor_Einfahrt_MPS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3390", ZylGst:=?)
--- NW 71: Weiche_zu_MPS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3392", ZylGst:=?)
--- NW 72: Schleuse_Vorstau_MPS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3393", ZylGst:=?)
--- NW 73: Weiche_MPS3_zu_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3394", ZylGst:=?)
--- NW 74: Weiche_MPS3_zu_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3400", ZylGst:=?)
--- NW 75: Schleuse_MPS3_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3395", ZylGst:=?)
--- NW 76: Schleuse_MPS3_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3401", ZylGst:=?)
--- NW 77: Schleuse_MPS3_Platz3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3405", ZylGst:=?)
--- NW 78: Weiche_MPS3_von_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3410", ZylGst:=?)
--- NW 79: Weiche_MPS3_von_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3406", ZylGst:=?)
--- NW 80: Schleuse_MPS3_raus ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3411", ZylGst:=?)
--- NW 81: Schleuse_vor_Ausfahrt_MPS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3413", ZylGst:=?)
--- NW 82: Weiche_von_MPS3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3412", ZylGst:=?)
--- NW 83: Schleuse_vor_Einfahrt_MPS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3421", ZylGst:=?)
--- NW 84: Weiche_zu_MPS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3422", ZylGst:=?)
--- NW 85: Schleuse_Vorstau_MPS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3423", ZylGst:=?)
--- NW 86: Weiche_MPS2_zu_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3424", ZylGst:=?)
--- NW 87: Weiche_MPS2_zu_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3430", ZylGst:=?)
--- NW 88: Schleuse_MPS2_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3425", ZylGst:=?)
--- NW 89: Schleuse_MPS2_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3431", ZylGst:=?)
--- NW 90: Schleuse_MPS2_Platz3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3435", ZylGst:=?)
--- NW 91: Weiche_MPS2_von_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3440", ZylGst:=?)
--- NW 92: Weiche_MPS2_von_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3436", ZylGst:=?)
--- NW 93: Schleuse_MPS2_raus ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3441", ZylGst:=?)
--- NW 94: Schleuse_vor_Ausfahrt_MPS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3443", ZylGst:=?)
--- NW 95: Weiche_von_MPS2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3442", ZylGst:=?)
--- NW 96: Schleuse_vor_Einfahrt_MPS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3450", ZylGst:=?)
--- NW 97: Weiche_zu_MPS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3452", ZylGst:=?)
--- NW 98: Schleuse_Vorstau_MPS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3453", ZylGst:=?)
--- NW 99: Weiche_MPS1_zu_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3454", ZylGst:=?)
--- NW 100: Weiche_MPS1_zu_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3460", ZylGst:=?)
--- NW 101: Schleuse_MPS1_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3455", ZylGst:=?)
--- NW 102: Schleuse_MPS1_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3461", ZylGst:=?)
--- NW 103: Schleuse_MPS1_Platz3 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3465", ZylGst:=?)
--- NW 104: Weiche_MPS1_von_Platz1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3470", ZylGst:=?)
--- NW 105: Weiche_MPS1_von_Platz2 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3466", ZylGst:=?)
--- NW 106: Schleuse_MPS1_raus ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3471", ZylGst:=?)
--- NW 107: Schleuse_vor_Ausfahrt_MPS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3473", ZylGst:=?)
--- NW 108: Weiche_von_MPS1 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3472", ZylGst:=?)
--- NW 109: Schleuse_3456 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3540", ZylGst:=?)
--- NW 110: Schleuse_3543 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3543", ZylGst:=?)
--- NW 111: Ende ---
Next: BE
@@ -0,0 +1,48 @@
=== InstanceDB 1199: DArbeitsplätze_Antriebe [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
MA0061 : "MAntrieb_PowerSave"
MA0062 : "MAntrieb_PowerSave"
MA0063 : "MAntrieb_PowerSave"
MA0064 : "MAntrieb_PowerSave"
MA0065 : "MAntrieb_PowerSave"
MA0082 : "MAntrieb_PowerSave"
MA0087 : "MAntrieb_PowerSave"
MA0094 : "MAntrieb_PowerSave"
MA0105 : "MAntrieb_PowerSave"
MA0112 : "MAntrieb_PowerSave"
MA _Einfahrt_PS5 : "MAntrieb_PowerSave"
MA _Nachstau1_PS5 : "MAntrieb_PowerSave"
MA _Nachstau2_PS5 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS5 : "MAntrieb_PowerSave"
MA _Einfahrt_PS4 : "MAntrieb_PowerSave"
MA _Nachstau1_PS4 : "MAntrieb_PowerSave"
MA _Nachstau2_PS4 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS4 : "MAntrieb_PowerSave"
MA _Einfahrt_PS3 : "MAntrieb_PowerSave"
MA _Nachstau1_PS3 : "MAntrieb_PowerSave"
MA _Nachstau2_PS3 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS3 : "MAntrieb_PowerSave"
MA _Einfahrt_PS2 : "MAntrieb_PowerSave"
MA _Nachstau1_PS2 : "MAntrieb_PowerSave"
MA _Nachstau2_PS2 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS2 : "MAntrieb_PowerSave"
MA _Einfahrt_PS1 : "MAntrieb_PowerSave"
MA _Nachstau1_PS1 : "MAntrieb_PowerSave"
MA _Nachstau2_PS1 : "MAntrieb_PowerSave"
MA _Ausfahrt_PS1 : "MAntrieb_PowerSave"
MA _Einfahrt_MPS3 : "MAntrieb_PowerSave"
MA _Nachstau1_MPS3 : "MAntrieb_PowerSave"
MA _Nachstau2_MPS3 : "MAntrieb_PowerSave"
MA _Ausfahrt_MPS3 : "MAntrieb_PowerSave"
MA _Einfahrt_MPS2 : "MAntrieb_PowerSave"
MA _Nachstau1_MPS2 : "MAntrieb_PowerSave"
MA _Nachstau2_MPS2 : "MAntrieb_PowerSave"
MA _Ausfahrt_MPS2 : "MAntrieb_PowerSave"
MA _Einfahrt_MPS1 : "MAntrieb_PowerSave"
MA _Nachstau1_MPS1 : "MAntrieb_PowerSave"
MA _Nachstau2_MPS1 : "MAntrieb_PowerSave"
MA _Ausfahrt_MPS1 : "MAntrieb_PowerSave"
@@ -0,0 +1,72 @@
=== InstanceDB 1190: DArbeitsplätze_Sensoren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Stau_BG3566 : "MSensoren"
Stau_BG3567 : "MSensoren"
Stau_BG3457 : "MSensoren"
Stau_BG3447 : "MSensoren"
Stau_BG3483 : "MSensoren"
Stau_BG3484 : "MSensoren"
Stau_BG3486 : "MSensoren"
Stau_BG3244 : "MSensoren"
Stau_BG3542 : "MSensoren"
Stau_Einfahrt_PS5 : "MSensoren"
Stau_nach_Einfahrt_PS5 : "MSensoren"
Stau_Platz1_PS5 : "MSensoren"
Stau_Platz2_PS5 : "MSensoren"
Stau_Platz3_PS5 : "MSensoren"
Stau_Ausfahrt_PS5 : "MSensoren"
Stau_nach_Ausfahrt_PS5 : "MSensoren"
Stau_Einfahrt_PS4 : "MSensoren"
Stau_nach_Einfahrt_PS4 : "MSensoren"
Stau_Platz1_PS4 : "MSensoren"
Stau_Platz2_PS4 : "MSensoren"
Stau_Platz3_PS4 : "MSensoren"
Stau_Ausfahrt_PS4 : "MSensoren"
Stau_nach_Ausfahrt_PS4 : "MSensoren"
Stau_Einfahrt_PS3 : "MSensoren"
Stau_nach_Einfahrt_PS3 : "MSensoren"
Stau_Platz1_PS3 : "MSensoren"
Stau_Platz2_PS3 : "MSensoren"
Stau_Platz3_PS3 : "MSensoren"
Stau_Ausfahrt_PS3 : "MSensoren"
Stau_nach_Ausfahrt_PS3 : "MSensoren"
Stau_Einfahrt_PS2 : "MSensoren"
Stau_nach_Einfahrt_PS2 : "MSensoren"
Stau_Platz1_PS2 : "MSensoren"
Stau_Platz2_PS2 : "MSensoren"
Stau_Platz3_PS2 : "MSensoren"
Stau_Ausfahrt_PS2 : "MSensoren"
Stau_nach_Ausfahrt_PS2 : "MSensoren"
Stau_Einfahrt_PS1 : "MSensoren"
Stau_nach_Einfahrt_PS1 : "MSensoren"
An_BG3383 : "MSensoren"
Stau_Platz1_PS1 : "MSensoren"
Stau_Platz2_PS1 : "MSensoren"
Stau_Platz3_PS1 : "MSensoren"
Stau_Ausfahrt_PS1 : "MSensoren"
Stau_nach_Ausfahrt_PS1 : "MSensoren"
Stau_Einfahrt_MPS3 : "MSensoren"
Stau_nach_Einfahrt_MPS3 : "MSensoren"
Stau_Platz1_MPS3 : "MSensoren"
Stau_Platz2_MPS3 : "MSensoren"
Stau_Platz3_MPS3 : "MSensoren"
Stau_Ausfahrt_MPS3 : "MSensoren"
Stau_nach_Ausfahrt_MPS3 : "MSensoren"
Stau_Einfahrt_MPS2 : "MSensoren"
Stau_nach_Einfahrt_MPS2 : "MSensoren"
Stau_Platz1_MPS2 : "MSensoren"
Stau_Platz2_MPS2 : "MSensoren"
Stau_Platz3_MPS2 : "MSensoren"
Stau_Ausfahrt_MPS2 : "MSensoren"
Stau_nach_Ausfahrt_MPS2 : "MSensoren"
Stau_Einfahrt_MPS1 : "MSensoren"
Stau_nach_Einfahrt_MPS1 : "MSensoren"
Stau_Platz1_MPS1 : "MSensoren"
Stau_Platz2_MPS1 : "MSensoren"
Stau_Platz3_MPS1 : "MSensoren"
Stau_Ausfahrt_MPS1 : "MSensoren"
Stau_nach_Ausfahrt_MPS1 : "MSensoren"
@@ -0,0 +1,115 @@
=== InstanceDB 1192: DArbeitsplätze_Zylinder [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3456 : "MZylinder"
Schleuse_3481 : "MZylinder"
Weiche_3482 : "MZylinder"
Weiche_3361 : "MZylinder"
Schleuse_3487 : "MZylinder"
Schleuse_Vor_Einfahrt_PS5 : "MZylinder"
Weiche_Einfahrt_PS5 : "MZylinder"
Schleuse_Vorstau_PS5 : "MZylinder"
Weiche_zu_Platz1_PS5 : "MZylinder"
Weiche_zu_Platz2_PS5 : "MZylinder"
Schleuse_Platz1_PS5 : "MZylinder"
Schleuse_Platz2_PS5 : "MZylinder"
Schleuse_Platz3_PS5 : "MZylinder"
Weiche_von_Platz1_PS5 : "MZylinder"
Weiche_von_Platz2_PS5 : "MZylinder"
Schleuse_Ausfahrt_PS5 : "MZylinder"
Schleuse_Vor_Ausfahrt_PS5 : "MZylinder"
Weiche_Ausfahrt_PS5 : "MZylinder"
Schleuse_Vor_Einfahrt_PS4 : "MZylinder"
Weiche_Einfahrt_PS4 : "MZylinder"
Schleuse_Vorstau_PS4 : "MZylinder"
Weiche_zu_Platz1_PS4 : "MZylinder"
Weiche_zu_Platz2_PS4 : "MZylinder"
Schleuse_Platz1_PS4 : "MZylinder"
Schleuse_Platz2_PS4 : "MZylinder"
Schleuse_Platz3_PS4 : "MZylinder"
Weiche_von_Platz1_PS4 : "MZylinder"
Weiche_von_Platz2_PS4 : "MZylinder"
Schleuse_Ausfahrt_PS4 : "MZylinder"
Weiche_Ausfahrt_PS4 : "MZylinder"
Schleuse_Vor_Einfahrt_PS3 : "MZylinder"
Weiche_Einfahrt_PS3 : "MZylinder"
Schleuse_Vorstau_PS3 : "MZylinder"
Weiche_zu_Platz1_PS3 : "MZylinder"
Weiche_zu_Platz2_PS3 : "MZylinder"
Schleuse_Platz1_PS3 : "MZylinder"
Schleuse_Platz2_PS3 : "MZylinder"
Schleuse_Platz3_PS3 : "MZylinder"
Weiche_von_Platz1_PS3 : "MZylinder"
Weiche_von_Platz2_PS3 : "MZylinder"
Schleuse_Ausfahrt_PS3 : "MZylinder"
Schleuse_Vor_Ausfahrt_PS3 : "MZylinder"
Weiche_Ausfahrt_PS3 : "MZylinder"
Schleuse_Vor_Einfahrt_PS2 : "MZylinder"
Weiche_Einfahrt_PS2 : "MZylinder"
Schleuse_Vorstau_PS2 : "MZylinder"
Weiche_zu_Platz1_PS2 : "MZylinder"
Weiche_zu_Platz2_PS2 : "MZylinder"
Schleuse_Platz1_PS2 : "MZylinder"
Schleuse_Platz2_PS2 : "MZylinder"
Schleuse_Platz3_PS2 : "MZylinder"
Weiche_von_Platz1_PS2 : "MZylinder"
Weiche_von_Platz2_PS2 : "MZylinder"
Schleuse_Ausfahrt_PS2 : "MZylinder"
Weiche_Ausfahrt_PS2 : "MZylinder"
Schleuse_Vor_Einfahrt_PS1 : "MZylinder"
Weiche_Einfahrt_PS1 : "MZylinder"
Schleuse_Vorstau_PS1 : "MZylinder"
Weiche_zu_Platz1_PS1 : "MZylinder"
Weiche_zu_Platz2_PS1 : "MZylinder"
Schleuse_Platz1_PS1 : "MZylinder"
Schleuse_Platz2_PS1 : "MZylinder"
Schleuse_Platz3_PS1 : "MZylinder"
Weiche_von_Platz1_PS1 : "MZylinder"
Weiche_von_Platz2_PS1 : "MZylinder"
Schleuse_Ausfahrt_PS1 : "MZylinder"
Schleuse_Vor_Ausfahrt_PS1 : "MZylinder"
Weiche_Ausfahrt_PS1 : "MZylinder"
Schleuse_Vor_Einfahrt_MPS3 : "MZylinder"
Weiche_Einfahrt_MPS3 : "MZylinder"
Schleuse_Vorstau_MPS3 : "MZylinder"
Weiche_zu_Platz1_MPS3 : "MZylinder"
Weiche_zu_Platz2_MPS3 : "MZylinder"
Schleuse_Platz1_MPS3 : "MZylinder"
Schleuse_Platz2_MPS3 : "MZylinder"
Schleuse_Platz3_MPS3 : "MZylinder"
Weiche_von_Platz1_MPS3 : "MZylinder"
Weiche_von_Platz2_MPS3 : "MZylinder"
Schleuse_Ausfahrt_MPS3 : "MZylinder"
Schleuse_Vor_Ausfahrt_MPS3 : "MZylinder"
Weiche_Ausfahrt_MPS3 : "MZylinder"
Schleuse_Vor_Einfahrt_MPS2 : "MZylinder"
Weiche_Einfahrt_MPS2 : "MZylinder"
Schleuse_Vorstau_MPS2 : "MZylinder"
Weiche_zu_Platz1_MPS2 : "MZylinder"
Weiche_zu_Platz2_MPS2 : "MZylinder"
Schleuse_Platz1_MPS2 : "MZylinder"
Schleuse_Platz2_MPS2 : "MZylinder"
Schleuse_Platz3_MPS2 : "MZylinder"
Weiche_von_Platz1_MPS2 : "MZylinder"
Weiche_von_Platz2_MPS2 : "MZylinder"
Schleuse_Ausfahrt_MPS2 : "MZylinder"
Schleuse_Vor_Ausfahrt_MPS2 : "MZylinder"
Weiche_Ausfahrt_MPS2 : "MZylinder"
Schleuse_Vor_Einfahrt_MPS1 : "MZylinder"
Weiche_Einfahrt_MPS1 : "MZylinder"
Schleuse_Vorstau_MPS1 : "MZylinder"
Weiche_zu_Platz1_MPS1 : "MZylinder"
Weiche_zu_Platz2_MPS1 : "MZylinder"
Schleuse_Platz1_MPS1 : "MZylinder"
Schleuse_Platz2_MPS1 : "MZylinder"
Schleuse_Platz3_MPS1 : "MZylinder"
Weiche_von_Platz1_MPS1 : "MZylinder"
Weiche_von_Platz2_MPS1 : "MZylinder"
Schleuse_Ausfahrt_MPS1 : "MZylinder"
Schleuse_Vor_Ausfahrt_MPS1 : "MZylinder"
Weiche_Ausfahrt_MPS1 : "MZylinder"
Schleuse_3540 : "MZylinder"
Schleuse_3543 : "MZylinder"
@@ -0,0 +1,66 @@
=== FB 1129: Abführung_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3540 : "MHMOmniSchleuse"
Schleuse_3543 : "MHMOmniSchleuse"
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// Abführ-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_3540.Dyn.Sk.Auto_akt
= Schleuse_3543.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_3540.Dyn.Sk.Bereich_ok
= Schleuse_3543.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren ---
A "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 3: Schleuse hinter MPS1 ---
CALL FB "None" , (Schleusen_Nr:=3540, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3541", B_InSchleuse:="BG3540", B_AusSchleuse:="BG3542", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_BG3542.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0112", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3540", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3540.Stat.Ast, Error:=DB608.DBW350, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0112.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 4: Schleuse vor BST 4 ---
AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm
AN "6_HMI_Err_UH06_AMR".System.BST4_Feueralarm
AN "6_HMI_Err_UH06_AMR".System.BST4_Geschlossen
AN "6_HMI_Err_UH06_AMR".System."BST4_Störung"
A "DHWtoOB_OmniFahren".Schleuse_3546.Dyn.Sk.Bereich_ok
// / UN #Trolleys_starten.Wartezeit_aktiv //Neu: Vor AFS runter
= Fahren_Ok
A "DHWtoOB_Sensoren".Stau_BG3570.Stat.B_Akt
O "DHWtoOB_Sensoren".Stau_BG3544.Stat.B_Akt
= Stau_raus
CALL FB "None" , (Schleusen_Nr:=3543, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3542", B_InSchleuse:="BG3543", B_AusSchleuse:="BG3570", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0112", Antrieb_plus_aktiv:="MA0113", Schleuse_geöffnet:="MB3543", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3543.Stat.Ast, Error:=DB608.DBW352, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0112.Stat.A_PS, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0113.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0113.Stat.A_start, hStOk:=ErrAnz)
--- NW 5: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 6: Ende ---
BE
@@ -0,0 +1,202 @@
=== FC 1182: Arbeitsplatz_Draussen_FC [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Position : Int
WeichenZiel : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: Rückmeldung ---
SET // Rückmeldungen erst mal resetten
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
--- NW 2: Schleuse 3481: Ausgefahren ? (Einfahrt 180 Grad-ByPass) ---
L "MW190"
L 3481 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC Vor_ByPassE
// Trolley am Arbeitsplatz reservieren:
CALL FC "Reservierung_in_Arbeitsplatz_eintragen" (TrolleyID:="DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse, Ziel:="DZuführung_OmniFahren".Schleuse_3481.Dyn.Trolley_EndZiel, Standort:=w#3481, Gesamt_Trolley_DL:=1000)
// Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse, Ziel:="DZuführung_OmniFahren".Schleuse_3481.Dyn.Trolley_EndZiel, AusfahrZiel:=16#B300, Gesamt_Trolley_DL:=1000)
BEU
Vor_ByPassE: NOP 0
--- NW 3: Schleuse 3241: Ausgefahren ? (Einfahrt PS5) ---
L "MW190"
L 3241 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS5E
// Trolley am Arbeitsplatz reservieren:
CALL FC "Reservierung_in_Arbeitsplatz_eintragen" (TrolleyID:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, Standort:=16#3250, Gesamt_Trolley_DL:=1000)
// Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A500, Gesamt_Trolley_DL:=1000)
BEU
PS5E: NOP 0
--- NW 4: Schleuse 3271: Ausgefahren ? (Einfahrt PS4) ---
L "MW190"
L 3271 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS4E
// /Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A400, Gesamt_Trolley_DL:=1000)
BEU
PS4E: NOP 0
--- NW 5: Schleuse 3293: Ausgefahren ? (Einfahrt PS3) ---
L "MW190"
L 3293 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS3E
// /Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A300, Gesamt_Trolley_DL:=1000)
BEU
PS3E: NOP 0
--- NW 6: Schleuse 3331: Ausgefahren ? (Einfahrt PS2) ---
L "MW190"
L 3331 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS2E
// /Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A200, Gesamt_Trolley_DL:=1000)
BEU
PS2E: NOP 0
--- NW 7: Schleuse 3353: Ausgefahren ? (Einfahrt PS1) ---
L "MW190"
L 3353 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS1E
// /Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A100, Gesamt_Trolley_DL:=1000)
BEU
PS1E: NOP 0
--- NW 8: Schleuse 3390: Ausgefahren ? (Einfahrt MPS3) ---
L "MW190"
L 3390 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS3E
// /Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#B300, Gesamt_Trolley_DL:=1000)
BEU
MPS3E: NOP 0
--- NW 9: Schleuse 3421: Ausgefahren ? (Einfahrt MPS2) ---
L "MW190"
L 3421 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS2E
// /Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#B200, Gesamt_Trolley_DL:=1000)
BEU
MPS2E: NOP 0
--- NW 10: Schleuse 3450: Ausgefahren ? (Einfahrt MPS1) ---
L "MW190"
L 3450 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS1E
// /Trolley an Arbeitsplatz übergeben:
CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#B100, Gesamt_Trolley_DL:=1000)
L "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Weichen_Ziel
L 16#3451 // Gerade ? Also zum OB-Bereich?
<>I // Nein !
BEC
// Trolleydaten in DB1000 löschen, da in AMR fährt und danach kein Leser mehr!
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse)
BEU
MPS1E: NOP 0
--- NW 11: Schleuse 3455: Ausgefahren ? (Platz1 MPS1) ---
L "MW190"
L 3455 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS1P1E
// Trolleydaten in DB1000 löschen, da in AMR fährt und danach kein Leser mehr!
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse)
BEU
MPS1P1E: NOP 0
--- NW 12: Schleuse 3461: Ausgefahren ? (Platz2 MPS1) ---
L "MW190"
L 3461 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS1P2E
// Trolleydaten in DB1000 löschen, da in AMR fährt und danach kein Leser mehr!
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse)
BEU
MPS1P2E: NOP 0
--- NW 13: Schleuse 3465: Ausgefahren ? (Platz3 MPS1) ---
L "MW190"
L 3465 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS1P3E
// Trolleydaten in DB1000 löschen, da in AMR fährt und danach kein Leser mehr!
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse)
BEU
MPS1P3E: NOP 0
--- NW 14: Ende ---
BE
@@ -0,0 +1,910 @@
=== FC 1180: Arbeitsplatz_Leser_FC [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Zielebene : Word
Constant:
Return:
Ret_Val : Void
--- NW 1: Rückmeldung ---
// Keine
L 0 // Evtl. Zwischenziel (MW196)
T "MW196"
--- NW 2: Schleuse 3481: (Vor 180 Grad-ByPass) ---
L "MW190"
L 3481 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC E3481
AN "M180.0" // Lesefehler
JC Y3481
BEU
Y3481: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DZuführung_OmniFahren".Schleuse_3481.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
E3481: NOP 0
--- NW 3: Schleuse 3241: (Vor Einfahrt PS5) ---
L "MW190"
L 3241 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS5E
AN "M180.0" // Lesefehler
JC YPS5
BEU
YPS5: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS5E: NOP 0
--- NW 4: Schleuse 3245: (ABP1/PS5) ---
L "MW190"
L 3245 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS5A1
AN "M180.0" // Lesefehler
JC YPS5A1
BEU
YPS5A1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS5_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS5A1: NOP 0
--- NW 5: Schleuse 3251: (ABP2/PS5) ---
L "MW190"
L 3251 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS5A2
AN "M180.0" // Lesefehler
JC YPS5A2
BEU
YPS5A2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS5_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS5A2: NOP 0
--- NW 6: Schleuse 3255: (ABP3/PS5) ---
L "MW190"
L 3255 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS5A3
AN "M180.0" // Lesefehler
JC YPS5A3
BEU
YPS5A3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS5_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS5A3: NOP 0
--- NW 7: Schleuse 3271: (Vor Einfahrt PS4) ---
L "MW190"
L 3271 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS4E
AN "M180.0" // Lesefehler
JC YPS4
BEU
YPS4: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS4_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS4E: NOP 0
--- NW 8: Schleuse 3275: (ABP1/PS4) ---
L "MW190"
L 3275 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS4A1
AN "M180.0" // Lesefehler
JC YPS4A1
BEU
YPS4A1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS4_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS4_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS4_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS4A1: NOP 0
--- NW 9: Schleuse 3281: (ABP2/PS4) ---
L "MW190"
L 3281 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS4A2
AN "M180.0" // Lesefehler
JC YPS4A2
BEU
YPS4A2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS4_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS4_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS4_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS4A2: NOP 0
--- NW 10: Schleuse 3285: (ABP3/PS4) ---
L "MW190"
L 3285 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS4A3
AN "M180.0" // Lesefehler
JC YPS4A3
BEU
YPS4A3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS4_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS4_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS4_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS4A3: NOP 0
--- NW 11: Schleuse 3293: (Vor Einfahrt PS3) ---
L "MW190"
L 3293 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS3E
AN "M180.0" // Lesefehler
JC YPS3
BEU
YPS3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS3_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS3E: NOP 0
--- NW 12: Schleuse 3305: (ABP1/PS3) ---
L "MW190"
L 3305 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS3A1
AN "M180.0" // Lesefehler
JC YPS3A1
BEU
YPS3A1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS3_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS3A1: NOP 0
--- NW 13: Schleuse 3311: (ABP2/PS3) ---
L "MW190"
L 3311 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS3A2
AN "M180.0" // Lesefehler
JC YPS3A2
BEU
YPS3A2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS3_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS3A2: NOP 0
--- NW 14: Schleuse 3315: (ABP3/PS3) ---
L "MW190"
L 3315 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS3A3
AN "M180.0" // Lesefehler
JC YPS3A3
BEU
YPS3A3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS3_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS3A3: NOP 0
--- NW 15: Schleuse 3331: (Vor Einfahrt PS2) ---
L "MW190"
L 3331 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS2E
AN "M180.0" // Lesefehler
JC YPS2
BEU
YPS2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS2_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS2E: NOP 0
--- NW 16: Schleuse 3335: (ABP1/PS2) ---
L "MW190"
L 3335 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS2A1
AN "M180.0" // Lesefehler
JC YPS2A1
BEU
YPS2A1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS2_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS2A1: NOP 0
--- NW 17: Schleuse 3341: (ABP2/PS2) ---
L "MW190"
L 3341 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS2A2
AN "M180.0" // Lesefehler
JC YPS2A2
BEU
YPS2A2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS2_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS2A2: NOP 0
--- NW 18: Schleuse 3345: (ABP3/PS2) ---
L "MW190"
L 3345 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS2A3
AN "M180.0" // Lesefehler
JC YPS2A3
BEU
YPS2A3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS2_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS2A3: NOP 0
--- NW 19: Schleuse 3353: (Vor Einfahrt PS1) ---
L "MW190"
L 3353 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS1E
AN "M180.0" // Lesefehler
JC YPS1
BEU
YPS1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS1_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS1E: NOP 0
--- NW 20: Schleuse 3365: (ABP1/PS1) ---
L "MW190"
L 3365 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS1A1
AN "M180.0" // Lesefehler
JC YPS1A1
BEU
YPS1A1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS1_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS1A1: NOP 0
--- NW 21: Schleuse 3371: (ABP2/PS1) ---
L "MW190"
L 3371 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS1A2
AN "M180.0" // Lesefehler
JC YPS1A2
BEU
YPS1A2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS1_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS1A2: NOP 0
--- NW 22: Schleuse 3375: (ABP3/PS1) ---
L "MW190"
L 3375 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC PS1A3
AN "M180.0" // Lesefehler
JC YPS1A3
BEU
YPS1A3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS1_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
PS1A3: NOP 0
--- NW 23: Schleuse 3390: (Vor Einfahrt MPS3) ---
L "MW190"
L 3390 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS3E
AN "M180.0" // Lesefehler
JC YMPS3
BEU
YMPS3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS3E: NOP 0
--- NW 24: Schleuse 3395: (ABP1/MPS3) ---
L "MW190"
L 3395 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS3A1
AN "M180.0" // Lesefehler
JC YMPS3A1
BEU
YMPS3A1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS3_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS3A1: NOP 0
--- NW 25: Schleuse 3401: (ABP2/MPS3) ---
L "MW190"
L 3401 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS3A2
AN "M180.0" // Lesefehler
JC YMPS3A2
BEU
YMPS3A2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS3_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS3A2: NOP 0
--- NW 26: Schleuse 3405: (ABP3/MPS3) ---
L "MW190"
L 3405 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS3A3
AN "M180.0" // Lesefehler
JC YMPS3A3
BEU
YMPS3A3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS3_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS3A3: NOP 0
--- NW 27: Schleuse 3421: (Vor Einfahrt MPS2) ---
L "MW190"
L 3421 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS2E
AN "M180.0" // Lesefehler
JC YMPS2
BEU
YMPS2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS2E: NOP 0
--- NW 28: Schleuse 3425: (ABP1/MPS2) ---
L "MW190"
L 3425 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS2A1
AN "M180.0" // Lesefehler
JC YMPS2A1
BEU
YMPS2A1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS2_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS2A1: NOP 0
--- NW 29: Schleuse 3431: (ABP2/MPS2) ---
L "MW190"
L 3431 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS2A2
AN "M180.0" // Lesefehler
JC YMPS2A2
BEU
YMPS2A2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS2_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS2A2: NOP 0
--- NW 30: Schleuse 3435: (ABP3/MPS2) ---
L "MW190"
L 3435 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS2A3
AN "M180.0" // Lesefehler
JC YMPS2A3
BEU
YMPS2A3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS2_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS2A3: NOP 0
--- NW 31: Schleuse 3450: (Vor Einfahrt MPS1) ---
L "MW190"
L 3450 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS1E
AN "M180.0" // Lesefehler
JC YMPS1
BEU
YMPS1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS1E: NOP 0
--- NW 32: Schleuse 3455: (ABP1/MPS1) ---
L "MW190"
L 3455 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS1A1
AN "M180.0" // Lesefehler
JC YMPS1A1
BEU
YMPS1A1: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS1_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS1A1: NOP 0
--- NW 33: Schleuse 3461: (ABP2/MPS1) ---
L "MW190"
L 3461 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS1A2
AN "M180.0" // Lesefehler
JC YMPS1A2
BEU
YMPS1A2: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS1_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS1A2: NOP 0
--- NW 34: Schleuse 3465: (ABP3/MPS1) ---
L "MW190"
L 3465 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC MPS1A3
AN "M180.0" // Lesefehler
JC YMPS1A3
BEU
YMPS1A3: AN "M180.1" // unbekannt in TrolleysDL
BEC
// Daten in Datenbank neu anlegen:
L "DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse
L DINT#0 // ID bekannt?
==D // Nein
BEC
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS1_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0)
BEU
MPS1A3: NOP 0
--- NW 35: Ende ---
BE
@@ -0,0 +1,8 @@
=== InstanceDB 1129: DAbführung_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3540 : "MHMOmniSchleuse"
Schleuse_3543 : "MHMOmniSchleuse"
@@ -0,0 +1,19 @@
=== InstanceDB 1120: DZuführung_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3456 : "MHMOmniSchleuse_Plus"
Schleuse_3481 : "MHMOmniSchleuse"
Weiche_3482 : "MHMOmniWeiche"
Schleuse_3487 : "MHMOmniSchleuse_Plus"
Übergang_3446 : "MHMÜbergang_ohne_Schleuse_AMR"
Übergang_3485 : "MHMÜbergang_ohne_Schleuse_AMR"
Übergang_3490 : "MHMÜbergang_ohne_Schleuse_AMR"
Übergang_3240 : "MHMÜbergang_ohne_Schleuse_AMR"
Übergang_3480 : "MHMÜbergang_ohne_Schleuse_AMR"
Aufzug_freiräumen : Bool
Tastensperre : Bool
Alle_ABPs_anfahren : Bool
Weiche_3482_frei : Bool
@@ -0,0 +1,227 @@
=== FB 1120: Zuführung_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3456 : "MHMOmniSchleuse_Plus"
Schleuse_3481 : "MHMOmniSchleuse"
Weiche_3482 : "MHMOmniWeiche"
Schleuse_3487 : "MHMOmniSchleuse_Plus"
Übergang_3446 : "MHMÜbergang_ohne_Schleuse_AMR"
Übergang_3485 : "MHMÜbergang_ohne_Schleuse_AMR"
Übergang_3490 : "MHMÜbergang_ohne_Schleuse_AMR"
Übergang_3240 : "MHMÜbergang_ohne_Schleuse_AMR"
Übergang_3480 : "MHMÜbergang_ohne_Schleuse_AMR"
Aufzug_freiräumen : Bool
Tastensperre : Bool
Alle_ABPs_anfahren : Bool
Weiche_3482_frei : Bool // Weiche noch nicht benutzt
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_AusSchleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Constant:
--- NW 1: Systemzeug ---
// Zuführ-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_3456.Dyn.Sk.Auto_akt
= Schleuse_3481.Dyn.Sk.Auto_akt
= Weiche_3482.Dyn.Status.Auto_akt
= Schleuse_3487.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06.BereichErr
= Schleuse_3456.Dyn.Sk.Bereich_ok
= Schleuse_3481.Dyn.Sk.Bereich_ok
= Weiche_3482.Dyn.Status.Bereich_ok
= Schleuse_3487.Dyn.Sk.Bereich_ok
--- NW 2: Weiche 3482 noch nicht benutzt ---
AN Schleuse_3481.Status2."Weichen-Schritt" // Beide Quellen
AN "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Status2."Weichen-Schritt"
= Weiche_3482_frei
--- NW 3: Störungen quittieren ---
A "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 4: Aufzugs-Bereich freiräumen ---
A "SF3462"
O "SF3463"
Rise Tastensperre
JCN NixAufzug
AN "Aufzug_freiräumen"
= "Aufzug_freiräumen"
NixAufzug: NOP 0
A "Aufzug_freiräumen"
= "PF3462"
= "PF3463"
= "6_HMI_Err_UH06_AMR".System.Aufzug_Vorrang
--- NW 5: Schleuse vor Aufzug ---
A "BG3566"
O "BG3567"
= B_aktiv
A "DArbeitsplätze_Sensoren".Stau_BG3457.Stat.B_Akt
O "DArbeitsplätze_Sensoren".Stau_BG3447.Stat.B_Akt
O "Übergang_3446"."Am_Übergang".Stat.B_Akt
= Stau_raus
AN "Aufzug_freiräumen"
= Fahren_Ok
CALL FB "None" , (Schleusen_Nr:=3456, ErrQuit:=ErrQuit, B_VorSchleuse:=B_aktiv, B_InSchleuse:="BG3456", B_Zähl:="BG3457", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0061", Antrieb_plus_aktiv:="MA0061", Schleuse_geöffnet:="MB3456", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3456.Stat.Ast, Error:=DB608.DBW342, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0061.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0061.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0061.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0061.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
A "DArbeitsplätze_Sensoren".Stau_BG3457.Stat.B_Akt
AN "DArbeitsplätze_Sensoren".Stau_BG3447.Stat.B_Akt
S "DArbeitsplätze_Antriebe".MA0061.Stat.A_vor
S "DArbeitsplätze_Antriebe".MA0062.Stat.A_vor
A "DArbeitsplätze_Sensoren".Stau_BG3457.Stat.B_Akt
O "DArbeitsplätze_Sensoren".Stau_BG3457.Stat.B_Akt
S "DArbeitsplätze_Antriebe".MA0061.Stat.A_start
S "DArbeitsplätze_Antriebe".MA0062.Stat.A_start
--- NW 6: MA0061/0062 / Übergang 3446 ---
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG3457", B_Am_Übergang:="BG3446", B_Stau_Antrieb_plus:="BG3447", Antrieb_aktiv:="MA0061", Antrieb_plus_aktiv:="MA0062", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0061.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0061.Stat.A_start, Antrieb_stop:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0062.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0062.Stat.A_start)
--- NW 7: MA0062/0063 / Übergang 3480 ---
A "BG3481"
AN "MB3481"
= B_aktiv
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG3447", B_Am_Übergang:="BG3480", B_Stau_Antrieb_plus:=B_aktiv, Antrieb_aktiv:="MA0062", Antrieb_plus_aktiv:="MA0063", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0062.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0062.Stat.A_start, Antrieb_stop:="DArbeitsplätze_Antriebe".MA0062.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0063.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0063.Stat.A_start)
--- NW 8: Schleuse vor 180 Grad-Bypass ---
CALL FB "None" , (Schleusen_Nr:=3481, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3447", B_InSchleuse:="BG3481", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0062", Antrieb_plus_aktiv:="MA0063", Schleuse_geöffnet:="MB3481", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3481.Stat.Ast, Error:=DB608.DBW344, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0062.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0062.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0062.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0062.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0063.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0063.Stat.A_start, hStOk:=ErrAnz) // von Weiche | von Weiche
// ByPass-Weiche wieder freigeben:
A Schleuse_3481.Dyn.Status.Trolley_draussen
R "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_ByPass-Sep_belegt"
--- NW 9: Weiche 180 Grad-Bypass ---
CALL FB "None" , (Weichen_Nr:=3482, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG3483", B_Ziel_abzweig:="BG3383", Antrieb_Weiche_aktiv:="MA0063", Antrieb_Gerade_aktiv:="MA0063", Antrieb_Abzweig_aktiv:="MA0062", Weiche_ist_AST:="MB3482", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_3482.Stat.Ast, Error:=DB608.DBW346, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0063.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0063.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe".MA0062.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe".MA0062.Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o.
--- NW 10: MA0063 / Übergang 3485 ---
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG3483", B_Am_Übergang:="BG3485", B_Stau_Antrieb_plus:="BG3484", Antrieb_aktiv:="MA0063", Antrieb_plus_aktiv:="MA0064", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0063.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0063.Stat.A_start, Antrieb_stop:="DArbeitsplätze_Antriebe".MA0063.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0064.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0064.Stat.A_start)
--- NW 11: Schleuse vor 180 Grad-Turn ---
CALL FB "None" , (Schleusen_Nr:=3487, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3484", B_InSchleuse:="BG3487", B_Zähl:="BG3490", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_BG3486.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0064", Antrieb_plus_aktiv:="MA0064", Schleuse_geöffnet:="MB3487", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3487.Stat.Ast, Error:=DB608.DBW348, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0064.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0064.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0064.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0064.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 12: MA0064 / Übergang 3490 ---
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="MB3487", B_Am_Übergang:="BG3490", B_Stau_Antrieb_plus:="BG3486", Antrieb_aktiv:="MA0064", Antrieb_plus_aktiv:="MA0065", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0064.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0064.Stat.A_start, Antrieb_stop:="DArbeitsplätze_Antriebe".MA0064.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0065.Stat.A_start)
--- NW 13: MA0065 / Übergang 3240 ---
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG3486", B_Am_Übergang:="BG3240", B_Stau_Antrieb_plus:="BG3244", Antrieb_aktiv:="MA0065", Antrieb_plus_aktiv:="MA0082", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0065.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0065.Stat.A_start, Antrieb_stop:="DArbeitsplätze_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start)
--- NW 14: Störungen anzeigen ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 15: Alle Arbeitsplätze anfahren ---
CLR // Für inbetriebnahme
S Alle_ABPs_anfahren
--- NW 16: Simulation an ABP zum Weiterfahren ---
AN "SGes".Ohne_PC_Fahren
JC No
// T21-28
A "SF0057"
L s5t#3s
OnDelay "T28"
A "T28"
S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben"
S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben"
S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben"
A "SF0055"
L s5t#3s
OnDelay "T27"
A "T27"
S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben"
S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben"
S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben"
A "SF0053"
L s5t#3s
OnDelay "T26"
A "T26"
S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben"
S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben"
S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben"
A "SF0051"
L s5t#3s
OnDelay "T25"
A "T25"
S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben"
S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben"
S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben"
A "SF0047"
L s5t#3s
OnDelay "T24"
A "T24"
S "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben"
S "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben"
S "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben"
A "SF0045"
L s5t#3s
OnDelay "T23"
A "T23"
S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben"
S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben"
S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben"
A "SF0043"
L s5t#3s
OnDelay "T22"
A "T22"
S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben"
S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben"
S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben"
A "SF0041"
L s5t#3s
OnDelay "T21"
A "T21"
S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben"
S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben"
S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben"
No: NOP 0
--- NW 17: Ende ---
BE
@@ -0,0 +1,13 @@
=== InstanceDB 2199: DHWtoOB_Antriebe [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
MA0113 : "MAntrieb_PowerSave"
MA0114 : "MAntrieb_PowerSave"
MA0115 : "MAntrieb_PowerSave"
MA0117 : "MAntrieb_PowerSave"
MA0200 : "MAntrieb_PowerSave"
MA0201 : "MAntrieb_PowerSave"
MA0202 : "MAntrieb_PowerSave"
@@ -0,0 +1,17 @@
=== InstanceDB 2190: DHWtoOB_Sensoren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Stau_BG3570 : "MSensoren"
Stau_BG3544 : "MSensoren"
Stau_BG3545 : "MSensoren"
Stau_BG3551 : "MSensoren"
Stau_BG3552 : "MSensoren"
Stau_BG3554 : "MSensoren"
Stau_BG3015 : "MSensoren"
Stau_BG3013 : "MSensoren"
Stau_BG3011 : "MSensoren"
Stau_BG3071 : "MSensoren"
Stau_BG3066 : "MSensoren"
@@ -0,0 +1,13 @@
=== InstanceDB 2192: DHWtoOB_Zylinder [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3546 : "MZylinder"
Schleuse_3552 : "MZylinder"
Schleuse_3014 : "MZylinder"
Schleuse_3012 : "MZylinder"
Schleuse_3010 : "MZylinder"
Schleuse_3070 : "MZylinder"
Schleuse_3073 : "MZylinder"
@@ -0,0 +1,119 @@
=== FB 2199: HWtoOB_Antriebe [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
MA0113 : "MAntrieb_PowerSave"
MA0114 : "MAntrieb_PowerSave"
MA0115 : "MAntrieb_PowerSave"
MA0117 : "MAntrieb_PowerSave"
MA0200 : "MAntrieb_PowerSave"
MA0201 : "MAntrieb_PowerSave"
MA0202 : "MAntrieb_PowerSave"
Temp:
Auto : Bool // Automatik Linie ist aktiv
Hand : Bool // Hand Linie ist aktiv
BereichErr : Bool // Bereichsstörung -> Antrieb stoppen
QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN
FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN
Quit : Bool // Motorschutz-Störung quittieren
Qok : Bool // Motorschutz ok
Jog1 : Bool // Geschwindigkeit 1
Jog2 : Bool // Geschwindigkeit 2
Betrieb : Bool // Betriebsart aktiv
FC105_RET : Word // Returnwert von FC105
Antrieb1 : Bool // Antrieb dazuschalten
Antrieb2 : Bool // Antrieb dazuschalten
F1 : Bool // Geschwindigkeit 1 aktiviert
F2 : Bool // Geschwindigkeit 2 aktiviert
F3 : Bool // Geschwindigkeit 3 aktiviert
Constant:
--- NW 1: Übergabe des Bereichstatus System UH06_Halle4/A01 ---
A "DAMR_Bereich".A01_UH06.Automatik
AN "DAMR_Bereich".A01_UH06.Handbetrieb
= Auto
CLR
= Hand
A "DAMR_Bereich".A01_UH06_Halle4.BereichErr
= BereichErr
AN BereichErr
L S5T#1S
OnDelay "T191"
A "T191"
= QKontroll
= FuKontroll
A "DAMR_Bereich".A01_UH06.StOk_aktiv
= Quit
--- NW 2: MA0113 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0113", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0113", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0113, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 3: MA0114 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0114", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0114", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0114, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 4: MA0115 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0115", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0115", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0115, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 5: MA0117 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0117", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0117", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0117, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 6: Übergabe des Bereichstatus System UC061/A01 ---
A "DAMR_Bereich".A01_UH06.Automatik
AN "DAMR_Bereich".A01_UH06.Handbetrieb
= Auto
CLR
= Hand
A "DAMR_Bereich".A01_UC061.BereichErr
O "DAMR_Bereich".A01_UZ6102.Area_Stop
O "DAMR_Bereich".A01_UZ6103.Area_Stop
O "DAMR_Bereich".A01_UZ6104.Area_Stop
= BereichErr
AN BereichErr
L S5T#1S
OnDelay "T192"
A "T192"
= QKontroll
= FuKontroll
A "DAMR_Bereich".A01_UC061.StOk_aktiv
= Quit
--- NW 7: MA00200 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0200", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0200", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0200, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 8: MA0201 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0201", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=180, Antriebrueck:=?, Antriebvor:="MA0201", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0201, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 9: MA0202 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0202", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0202", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0202, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
--- NW 10: Ende ---
BE
@@ -0,0 +1,77 @@
=== FB 2190: HWtoOB_Sensoren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Stau_BG3570 : "MSensoren" // Stau vor Schleuse 3540
Stau_BG3544 : "MSensoren" // Stau am Sensor Gefälle nach BST 4
Stau_BG3545 : "MSensoren" // Stau am Sensor Einfahrt MA0114
Stau_BG3551 : "MSensoren" // Stau am Sensor Einfahrt MA0115
Stau_BG3552 : "MSensoren" // Stau am Sensor Einfahrt MA0115
Stau_BG3554 : "MSensoren" // Stau am Sensor Einfahrt MA0117
Stau_BG3015 : "MSensoren" // Stau am Sensor Gefälle vor BST 3
Stau_BG3013 : "MSensoren" // Stau am Sensor Gefälle nach BST 3
Stau_BG3011 : "MSensoren" // Stau vor Schleuse 3010
Stau_BG3071 : "MSensoren" // Stau vor Schleuse 3070
Stau_BG3066 : "MSensoren" // Stau am Sensor Einfahrt MA0202
Temp:
T_Ein : Int // Vorgabe Einschaltverzögerung
T_Aus : Int // Zwischenspeicher Ausschaltverzögerung
F1 : Bool // Geschwindigkeit 1 aktiviert
F2 : Bool // Geschwindigkeit 2 aktiviert
F3 : Bool // Geschwindigkeit 3 aktiviert
ESensor : Bool // Sensoren
Antrieb : Bool
VReal : Real // GeschwindigkeitinReal
Zeit : Int // Zeit für Ausschaltverzögerung LT1100
Aktiv : Bool // Zeit aktivieren
Constant:
--- NW 1: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3570", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
--- NW 2: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3544", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=1)
--- NW 3: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3545", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0114")
--- NW 4: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3551", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0115")
--- NW 5: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3552", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0115")
--- NW 6: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3554", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0117")
--- NW 7: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3015", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=1)
--- NW 8: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3013", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=1)
--- NW 9: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3011", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0200")
--- NW 10: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3071", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0201")
--- NW 11: Sensoren entprellen ---
CALL FB "None" , (ESensor:="BG3066", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0202")
--- NW 12: Ende ---
BE
@@ -0,0 +1,74 @@
=== FB 2192: HWtoOB_Zylinder [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3546 : "MZylinder" //
Schleuse_3552 : "MZylinder"
Schleuse_3014 : "MZylinder"
Schleuse_3012 : "MZylinder"
Schleuse_3010 : "MZylinder"
Schleuse_3070 : "MZylinder" //
Schleuse_3073 : "MZylinder" //
Temp:
Auto : Bool // Automatik ist aktiv
Hand : Bool // Hand ist aktiv
ZylAst : Bool // Zylinder ansteuern
Constant:
--- NW 1: Übergabe des Bereichstatus System UH06 / A01 ---
A "DAMR_Bereich".A01_UH06.Automatik
AN "DAMR_Bereich".A01_UH06.Handbetrieb
= Auto
A "DAMR_Bereich".A01_UH06_Halle4.BereichErr
JC Next // Zylinder-Stellung nicht mehr ändern
--- NW 2: Schleuse_3546 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3546", ZylGst:=?)
--- NW 3: Schleuse_3552 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3552", ZylGst:=?)
--- NW 4: Schleuse_3014 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3014", ZylGst:=?)
--- NW 5: Übergabe des Bereichstatus System UC061/A01 ---
Next: A "DAMR_Bereich".A01_UH06.Automatik
AN "DAMR_Bereich".A01_UH06.Handbetrieb
= Auto
CLR
= Hand
A "DAMR_Bereich".A01_UC061.BereichErr
O "DAMR_Bereich".A01_UZ6102.Area_Stop
O "DAMR_Bereich".A01_UZ6103.Area_Stop
O "DAMR_Bereich".A01_UZ6104.Area_Stop
JC Next2 // Zylinder-Stellung nicht mehr ändern
--- NW 6: Schleuse_3012 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3012", ZylGst:=?)
--- NW 7: Schleuse_3010 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3010", ZylGst:=?)
--- NW 8: Schleuse_3070 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3070", ZylGst:=?)
--- NW 9: Schleuse_3073 ---
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3073", ZylGst:=?)
--- NW 10: Ende ---
Next2: BE
@@ -0,0 +1,23 @@
=== FC 2100: HWtoOB_Bereich [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: Baustein-Aufrufe ---
CALL FB "HWtoOB_Sensoren" ,
CALL FB "HWtoOB_OmniFahren" ,
CALL FB "HWtoOB_Zylinder" ,
CALL FB "HWtoOB_Antriebe" ,
--- NW 2: Ende ---
BE
@@ -0,0 +1,19 @@
=== InstanceDB 2128: DHWtoOB_OmniFahren [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3546 : "MHMOmniSchleuse"
Bereich_3550 : "MHMOmniBereich_Plus"
Schleuse_3552 : "MHMOmniSchleuse"
Bereich_3016 : "MHMOmniBereich_Plus"
Schleuse_3014 : "MHMOmniSchleuse"
Schleuse_3012 : "MHMOmniSchleuse"
Schleuse_3010 : "MHMOmniSchleuse_Plus"
Schleuse_3070 : "MHMOmniSchleuse"
Schleuse_3073 : "MHMOmniSchleuse_Plus"
Trolleys_starten : Struct
Flanke : Bool
Wartezeit_aktiv : Bool
Timer_Wartenzeit : Int
@@ -0,0 +1,199 @@
=== FB 2128: HWtoOB_OmniFahren [STL] ===
INTERFACE:
Input:
Output:
InOut:
Static:
Schleuse_3546 : "MHMOmniSchleuse"
Bereich_3550 : "MHMOmniBereich_Plus"
Schleuse_3552 : "MHMOmniSchleuse"
Bereich_3016 : "MHMOmniBereich_Plus"
Schleuse_3014 : "MHMOmniSchleuse"
Schleuse_3012 : "MHMOmniSchleuse"
Schleuse_3010 : "MHMOmniSchleuse_Plus"
Schleuse_3070 : "MHMOmniSchleuse"
Schleuse_3073 : "MHMOmniSchleuse_Plus"
Trolleys_starten : Struct
Flanke : Bool
Wartezeit_aktiv : Bool
Timer_Wartenzeit : Int
Temp:
ErrQuit : Bool
ErrAnz : Bool
Stau_raus : Bool
Start_ok : Bool
B_aktiv : Bool
B_vor_Schleuse : Bool
B_nach_Schleuse : Bool
Antrieb_aktiv : Bool
Antrieb_start : Bool
Antrieb_stop : Bool
Fahren_Ok : Bool
Antrieb_nicht_stoppen : Bool
Constant:
--- NW 1: Systemzeug ---
// HW>OB-Bereich:
A "DAMR_Bereich".A01_UH06.AnlageEin
= Schleuse_3546.Dyn.Sk.Auto_akt
= Bereich_3550.Dyn.Sk.Auto_akt
= Schleuse_3552.Dyn.Sk.Auto_akt
= Bereich_3016.Dyn.Sk.Auto_akt
= Schleuse_3014.Dyn.Sk.Auto_akt
= Schleuse_3012.Dyn.Sk.Auto_akt
= Schleuse_3010.Dyn.Sk.Auto_akt
= Schleuse_3070.Dyn.Sk.Auto_akt
= Schleuse_3073.Dyn.Sk.Auto_akt
AN "DAMR_Bereich".A01_UH06_Halle4.BereichErr
= Schleuse_3546.Dyn.Sk.Bereich_ok
= Bereich_3550.Dyn.Sk.Bereich_ok
= Schleuse_3552.Dyn.Sk.Bereich_ok
= Bereich_3016.Dyn.Sk.Bereich_ok
= Schleuse_3014.Dyn.Sk.Bereich_ok
AN "DAMR_Bereich".A01_UC061.BereichErr
= Schleuse_3012.Dyn.Sk.Bereich_ok
= Schleuse_3010.Dyn.Sk.Bereich_ok
= Schleuse_3070.Dyn.Sk.Bereich_ok
= Schleuse_3073.Dyn.Sk.Bereich_ok
--- NW 2: Störungen quittieren UZ0620 ---
A "DAMR_Bereich".A01_UZ0620.StOk_aktiv
O "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 3: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) ---
A "MB3546"
Rise Trolleys_starten.Flanke
S Trolleys_starten.Wartezeit_aktiv
JCN Warten // Negierter Sprung
L 15 // Wartezeit in Sekunden
T Trolleys_starten.Timer_Wartenzeit
Warten: AN Trolleys_starten.Wartezeit_aktiv
O
A "MB3546" // Schleuse offen
AN "MA0113" // Aber Trolley fährt nicht
ON "1s-Impuls"
JC Wait
L Trolleys_starten.Timer_Wartenzeit
+ -1
T Trolleys_starten.Timer_Wartenzeit
L 0
>I
JC Wait
SET
R Trolleys_starten.Wartezeit_aktiv
Wait: NOP 0
--- NW 4: Schleuse 3546 (hinter BST 4) ---
A "BG3570"
O "BG3544"
= B_vor_Schleuse
AN Trolleys_starten.Wartezeit_aktiv
= Start_ok
CALL FB "None" , (Schleusen_Nr:=3546, ErrQuit:=ErrQuit, B_VorSchleuse:=B_vor_Schleuse, B_InSchleuse:="BG3546", B_AusSchleuse:="BG3545", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3545.Stat.B_Akt, Start_Ok:=Start_ok, Antrieb_Schleuse_aktiv:="MA0113", Antrieb_plus_aktiv:="MA0114", Schleuse_geöffnet:="MB3546", RestZeit_Bereich_plus:=Bereich_3550.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3546.Stat.Ast, Error:=DB608.DBW354, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0113.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0113.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0113.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0113.Stat.A_PS, Antrieb_plus_vor:=Bereich_3550.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 5: Bereich 3550 ---
A "BG3545"
A "MB3546"
= B_vor_Schleuse
CALL FB "None" , (Bereichs_Nr:=3550, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3550", B_Zähl:="BG3551", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3551.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0114", Antrieb_plus_aktiv:="MA0115", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoOB_Antriebe".MA0114.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoOB_Antriebe".MA0114.Stat.Stop_vor, Error:=DB608.DBW170, Antrieb_Bereich_start:="DHWtoOB_Antriebe".MA0114.Stat.A_start, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0115.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0115.Stat.A_start, Antrieb_minus_vor:="DHWtoOB_Antriebe".MA0113.Stat.A_vor, hStOk:=ErrAnz)
--- NW 6: Schleuse 3552 ---
CALL FB "None" , (Schleusen_Nr:=3552, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3551", B_InSchleuse:="BG3552", B_AusSchleuse:="BG3554", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3554.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0115", Antrieb_plus_aktiv:="MA0117", Schleuse_geöffnet:="MB3552", RestZeit_Bereich_plus:=Bereich_3016.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3552.Stat.Ast, Error:=DB608.DBW356, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0115.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0115.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0115.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0115.Stat.A_PS, Antrieb_plus_vor:=Bereich_3016.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
--- NW 7: Bereich 3016 ---
A "BG3554"
A "MB3552"
= B_vor_Schleuse
CALL FB "None" , (Bereichs_Nr:=3016, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3016", B_Zähl:="BG3015", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3015.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0117", Antrieb_plus_aktiv:=1, RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoOB_Antriebe".MA0117.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoOB_Antriebe".MA0117.Stat.Stop_vor, Error:=DB608.DBW154, Antrieb_Bereich_start:="DHWtoOB_Antriebe".MA0117.Stat.A_start, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, Antrieb_minus_vor:="DHWtoOB_Antriebe".MA0115.Stat.A_vor, hStOk:=ErrAnz) // Ohne Antrieb
--- NW 8: Schleuse 3014 (vor BST 3) ---
AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm
AN "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm
AN "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen
AN "6_HMI_Err_UH06_AMR".System."BST3_Störung"
A Schleuse_3012.Dyn.Sk.Bereich_ok
= Fahren_Ok
A "DHWtoOB_Sensoren".Stau_BG3013.Stat.B_Akt
= Stau_raus
CALL FB "None" , (Schleusen_Nr:=3014, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3015", B_InSchleuse:="BG3014", B_AusSchleuse:="BG3013", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0200", Schleuse_geöffnet:="MB3014", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3014.Stat.Ast, Error:=DB608.DBW210, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0200.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0200.Stat.A_start, hStOk:=ErrAnz) // ohne Antrieb | Ohne Antrieb
--- NW 9: Störungen anzeigen UZ0620 ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UZ0620.StOk_blinken
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 10: Störungen quittieren UZ6101 ---
A "DAMR_Bereich".A01_UC061.StOk_aktiv
O "DAMR_Bereich".A01_UH06.StOk_aktiv
= ErrQuit
--- NW 11: Schleuse 3012 (hinter BST 3) ---
CALL FB "None" , (Schleusen_Nr:=3012, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3013", B_InSchleuse:="BG3012", B_AusSchleuse:="BG3011", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3011.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0200", Antrieb_plus_aktiv:="MA0200", Schleuse_geöffnet:="MB3012", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3012.Stat.Ast, Error:=DB608.DBW208, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0200.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0200.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0200.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0200.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // wie oben
--- NW 12: Schleuse 3010 ---
CALL FB "None" , (Schleusen_Nr:=3010, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3011", B_InSchleuse:="BG3010", B_Zähl:="BG3071", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3071.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0200", Antrieb_plus_aktiv:="MA0201", Schleuse_geöffnet:="MB3010", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3010.Stat.Ast, Error:=DB608.DBW206, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0200.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0200.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0200.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0200.Stat.A_PS, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0201.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0201.Stat.A_start, hStOk:=ErrAnz)
--- NW 13: Schleuse 3070 ---
CALL FB "None" , (Schleusen_Nr:=3070, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3071", B_InSchleuse:="BG3070", B_AusSchleuse:="BG3066", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3066.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0201", Antrieb_plus_aktiv:="MA0202", Schleuse_geöffnet:="MB3070", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3070.Stat.Ast, Error:=DB608.DBW214, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0201.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0201.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0201.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0201.Stat.A_PS, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0202.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0202.Stat.A_start, hStOk:=ErrAnz)
--- NW 14: Schleuse 3073 (Übergabe an Outbound / UH07) ---
// Schnittstelle von Outbound: (Verarbeitung s.u.)
A "DSchnittstelle_zu_Outbound".From_UH07.MA0200_aktiv
A "DSchnittstelle_zu_Outbound".From_UH07.MA0200_kein_Stau
// Pro Zyklus neu erzeugen:
SET
R "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor
R "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start
CALL FB "None" , (Schleusen_Nr:=3073, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3066", B_InSchleuse:="BG3073", B_Zähl:="DSchnittstelle_zu_Outbound".From_UH07.BG3724_aktiv, B_Stau_raus:=0, Start_Ok:="DSchnittstelle_zu_Outbound".From_UH07.MA0200_kein_Stau, Antrieb_Schleuse_aktiv:="MA0202", Antrieb_plus_aktiv:="DSchnittstelle_zu_Outbound".From_UH07.MA0200_aktiv, Schleuse_geöffnet:="MB3073", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3073.Stat.Ast, Error:=DB608.DBW362, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0202.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0202.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0202.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0202.Stat.A_PS, Antrieb_plus_vor:="DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor, Antrieb_plus_start:="DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start, hStOk:=ErrAnz)
// Schnittstelle zu Outbound: (Verarbeitung s.o.)
A "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor
A "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start
CLR
--- NW 15: Störungen anzeigen UZ6101 ---
A ErrAnz
R ErrAnz
S "DAMR_Bereich".A01_UC061.StOk_blinken
S "DAMR_Bereich".A01_UH06.StOk_blinken
--- NW 16: Ende ---
BE
@@ -0,0 +1,50 @@
=== FC 2181: HWtoOB_Ziel_FC [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Ziel_hex : Word
Ziel_int : Int
Zielebene : Word
Error : Byte
Position : Int
Lager_DB : Int
Lager_DW : Int
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt // Startwert mit Offset 0
SSDW : Int
EndZiel : Word
Variante : Int
AbrufID : DInt
Fahrlisten_TrolleyID : DInt
Fahrlisten_AbrufID : DInt
Fahrlisten_Lager : Int
Trolley_unbekannt : Bool // Trolley ist nicht in DL
Express_Abruf : Bool
Constant:
Return:
Ret_Val : Void
--- NW 1: Rückmeldung ---
SET // Rückmeldungen erst mal resetten
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
--- NW 2: Schleuse 3014: (BST 3) ---
L "MW190"
L 3014 // Aufruf von Schleuse XXXX?
<>I // Nein!
JC X3014E
SET
S "M180.6" // Weiterfahrt ist erlaubt
BEU
X3014E: NOP 0
--- NW 3: Ende ---
BE
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,134 @@
=== InstanceDB 1001: DAMR_Bereich [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
A01_UH06 : Struct
Anlauf : Bool
AnlageEin : Bool
Not_Aus : Struct
ausgeloest : Bool
Von_OB1 : Bool
Von_OB2 : Bool
Von_ILS1 : Bool
Von_ILS2 : Bool
UH06 : Bool
UZ0601 : Bool
UZ0602 : Bool
UZ0603 : Bool
UZ0611 : Bool
UZ0612 : Bool
UZ0613 : Bool
UZ0614 : Bool
UZ0615 : Bool
UZ0621 : Bool
UZ0622 : Bool
NotErr : Bool
PnErr : Bool
SiErr : Bool
MotErr : Bool
Phasen : Bool
K10Err : Bool
Brandfall : Bool
Automatik : Bool
Handbetrieb : Bool
BereichErr : Bool
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
BereichErr_old : Bool
Anfahrwarnung : Bool
A01_UH06_Halle4 : Struct
Not_Aus : Struct
ausgeloest : Bool
UZ0620 : Bool
NotErr : Bool
K10Err : Bool
BereichErr : Bool
BereichErr_old : Bool
Anfahrwarnung : Bool
A01_UC061 : Struct
Not_Aus : Struct
ausgeloest : Bool
UC061 : Bool
UZ6102 : Bool
UZ6103 : Bool
UZ6104 : Bool
NotErr : Bool
PnErr : Bool
SiErr : Bool
MotErr : Bool
K10Err : Bool
BereichErr : Bool
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
BereichErr_old : Bool
Anfahrwarnung : Bool
A01_UZ0601 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0602 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0603 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0611 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0612 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0613 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0614 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0615 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0620 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0621 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ0622 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
A01_UZ6102 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
Area_Stop : Bool
A01_UZ6103 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
Area_Stop : Bool
A01_UZ6104 : Struct
StOk_blinken : Bool
StOk_Flanke : Bool
StOk_aktiv : Bool
Area_Stop : Bool
ErrDD : DInt
ErrBits : Int
Simulation : Struct
aktiv : Bool
Wartezeit_ok : Bool
AMR : Word
MSekunden : Byte
@@ -0,0 +1,14 @@
=== GlobalDB 7: DSchnittstelle_zu_Outbound [DB] ===
INTERFACE:
Static:
To_UH07 : Struct
MA0200_A_vor : Bool
MA0200_A_start : Bool
MA0203_kein_Stau : Bool
MA0203_aktiv : Bool
From_UH07 : Struct
MA0203_A_vor : Bool
MA0203_A_start : Bool
MA0200_kein_Stau : Bool
MA0200_aktiv : Bool //
BG3724_aktiv : Bool
@@ -0,0 +1,19 @@
=== GlobalDB 3: DSchnittstelle_zu_Safety [DB] ===
INTERFACE:
Static:
ToSafety : Struct
StOk_HSS : Bool
ACK_A01_UH06 : Bool // Quittierung Bereich
ACK_A01_UH06_Halle4 : Bool // Quittierung Bereich
ACK_A01_UC061 : Bool // Quittierung Bereich
Ohne_Partner : Bool // Nur eigener Not-AUS!
FromSafety : Struct
ACK_REQ_A01_UH06_1 : Bool // Quittierung benötigt Bereich
ACK_REQ_A01_UH06_2 : Bool // Quittierung benötigt Bereich
ACK_A01_UH06_fertig : Bool // Quittierung abgearbeitet
ACK_REQ_A01_UH06_Halle4_1 : Bool // Quittierung benötigt Bereich
ACK_REQ_A01_UH06_Halle4_2 : Bool // Quittierung benötigt Bereich
ACK_A01_UH06_Halle4_fertig : Bool // Quittierung abgearbeitet
ACK_REQ_A01_UC061_1 : Bool // Quittierung benötigt Bereich
ACK_REQ_A01_UC061_2 : Bool // Quittierung benötigt Bereich
ACK_A01_UC061_fertig : Bool // Quittierung abgearbeitet
@@ -0,0 +1,109 @@
=== InstanceDB 4711: FB_BarcodeReader_DB [DB] ===
INTERFACE:
Input:
Output:
InOut:
Static:
fbBarcodeReaderBX6100 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6101 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6102 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6103 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6104 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6105 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6106 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6107 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6108 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6109 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6110 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6111 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6112 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6113 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6114 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6115 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6116 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6117 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6118 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6119 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6120 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6121 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6122 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6123 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6124 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6125 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6126 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6127 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6128 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6129 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6130 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6131 : "FB_BarcodeReaderCognex"
fbBarcodeReaderBX6133 : "FB_BarcodeReaderCognex"
stCognexInterface : Struct
BX6100 : "stCognexInterface"
BX6101 : "stCognexInterface"
BX6102 : "stCognexInterface"
BX6103 : "stCognexInterface"
BX6104 : "stCognexInterface"
BX6105 : "stCognexInterface"
BX6106 : "stCognexInterface"
BX6107 : "stCognexInterface"
BX6108 : "stCognexInterface"
BX6109 : "stCognexInterface"
BX6110 : "stCognexInterface"
BX6111 : "stCognexInterface"
BX6112 : "stCognexInterface"
BX6113 : "stCognexInterface"
BX6114 : "stCognexInterface"
BX6115 : "stCognexInterface"
BX6116 : "stCognexInterface"
BX6117 : "stCognexInterface"
BX6118 : "stCognexInterface"
BX6119 : "stCognexInterface"
BX6120 : "stCognexInterface"
BX6121 : "stCognexInterface"
BX6122 : "stCognexInterface"
BX6123 : "stCognexInterface"
BX6124 : "stCognexInterface"
BX6125 : "stCognexInterface"
BX6126 : "stCognexInterface"
BX6127 : "stCognexInterface"
BX6128 : "stCognexInterface"
BX6129 : "stCognexInterface"
BX6130 : "stCognexInterface"
BX6131 : "stCognexInterface"
BX6133 : "stCognexInterface"
stHMI : Struct
stBarcodeReader : Struct
BX6100 : "UDT_BarcodeReader"
BX6101 : "UDT_BarcodeReader"
BX6102 : "UDT_BarcodeReader"
BX6103 : "UDT_BarcodeReader"
BX6104 : "UDT_BarcodeReader"
BX6105 : "UDT_BarcodeReader"
BX6106 : "UDT_BarcodeReader"
BX6107 : "UDT_BarcodeReader"
BX6108 : "UDT_BarcodeReader"
BX6109 : "UDT_BarcodeReader"
BX6110 : "UDT_BarcodeReader"
BX6111 : "UDT_BarcodeReader"
BX6112 : "UDT_BarcodeReader"
BX6113 : "UDT_BarcodeReader"
BX6114 : "UDT_BarcodeReader"
BX6115 : "UDT_BarcodeReader"
BX6116 : "UDT_BarcodeReader"
BX6117 : "UDT_BarcodeReader"
BX6118 : "UDT_BarcodeReader"
BX6119 : "UDT_BarcodeReader"
BX6120 : "UDT_BarcodeReader"
BX6121 : "UDT_BarcodeReader"
BX6122 : "UDT_BarcodeReader"
BX6123 : "UDT_BarcodeReader"
BX6124 : "UDT_BarcodeReader"
BX6125 : "UDT_BarcodeReader"
BX6126 : "UDT_BarcodeReader"
BX6127 : "UDT_BarcodeReader"
BX6128 : "UDT_BarcodeReader"
BX6129 : "UDT_BarcodeReader"
BX6130 : "UDT_BarcodeReader"
BX6131 : "UDT_BarcodeReader"
BX6133 : "UDT_BarcodeReader"
stMainState : "IntfMainState"
@@ -0,0 +1,180 @@
=== GlobalDB 273: DLCognexLeser [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 33 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Leser_6100 : "UDLCognexLeser" // AMR: vor 180 Grad Turn
Leser_6101 : "UDLCognexLeser" // AMR: vor Einfahrt PS5
Leser_6102 : "UDLCognexLeser" // AMR: PS5/1
Leser_6103 : "UDLCognexLeser" // AMR: PS5/2
Leser_6104 : "UDLCognexLeser" // AMR: PS5/3
Leser_6105 : "UDLCognexLeser" // AMR: vor Einfahrt PS4
Leser_6106 : "UDLCognexLeser" // AMR: PS4/1
Leser_6107 : "UDLCognexLeser" // AMR: PS4/2
Leser_6108 : "UDLCognexLeser" // AMR: PS4/3
Leser_6109 : "UDLCognexLeser" // AMR: vor Einfahrt PS3
Leser_6110 : "UDLCognexLeser" // AMR: PS3/1
Leser_6111 : "UDLCognexLeser" // AMR: PS3/2
Leser_6112 : "UDLCognexLeser" // AMR: PS3/3
Leser_6113 : "UDLCognexLeser" // AMR: vor Einfahrt PS2
Leser_6114 : "UDLCognexLeser" // AMR: PS2/1
Leser_6115 : "UDLCognexLeser" // AMR: PS2/2
Leser_6116 : "UDLCognexLeser" // AMR: PS2/3
Leser_6117 : "UDLCognexLeser" // AMR: PS1/1
Leser_6118 : "UDLCognexLeser" // AMR: PS1/2
Leser_6119 : "UDLCognexLeser" // AMR: PS1/3
Leser_6120 : "UDLCognexLeser" // AMR: vor Einfahrt MPS3
Leser_6121 : "UDLCognexLeser" // AMR: MPS3/1
Leser_6122 : "UDLCognexLeser" // AMR: MPS3/2
Leser_6123 : "UDLCognexLeser" // AMR: MPS3/3
Leser_6124 : "UDLCognexLeser" // AMR: vor Einfahrt MPS2
Leser_6125 : "UDLCognexLeser" // AMR: MPS2/1
Leser_6126 : "UDLCognexLeser" // AMR: MPS2/2
Leser_6127 : "UDLCognexLeser" // AMR: MPS2/3
Leser_6128 : "UDLCognexLeser" // AMR: vor Einfahrt MPS1
Leser_6129 : "UDLCognexLeser" // AMR: MPS1/1
Leser_6130 : "UDLCognexLeser" // AMR: MPS1/2
Leser_6131 : "UDLCognexLeser" // AMR: MPS1/3
Leser_6133 : "UDLCognexLeser" // AMR: vor Einfahrt PS1
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
None:
Leser_ID : Word := 16#6100
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 0
None:
Leser_ID : Word := 16#6101
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 1414
None:
Leser_ID : Word := 16#6102
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 2828
None:
Leser_ID : Word := 16#6103
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 4242
None:
Leser_ID : Word := 16#6104
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 5656
None:
Leser_ID : Word := 16#6105
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 7070
None:
Leser_ID : Word := 16#6106
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 8484
None:
Leser_ID : Word := 16#6107
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 9898
None:
Leser_ID : Word := 16#6108
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 11312
None:
Leser_ID : Word := 16#6109
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 12726
None:
Leser_ID : Word := 16#6110
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 14140
None:
Leser_ID : Word := 16#6111
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 15554
None:
Leser_ID : Word := 16#6112
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 16968
None:
Leser_ID : Word := 16#6113
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 18382
None:
Leser_ID : Word := 16#6114
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 19796
None:
Leser_ID : Word := 16#6115
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 21210
None:
Leser_ID : Word := 16#6116
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 22624
None:
Leser_ID : Word := 16#6117
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 24038
None:
Leser_ID : Word := 16#6118
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 25452
None:
Leser_ID : Word := 16#6119
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 26866
None:
Leser_ID : Word := 16#6120
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 28280
None:
Leser_ID : Word := 16#6121
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 29694
None:
Leser_ID : Word := 16#6122
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 31108
None:
Leser_ID : Word := 16#6123
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 32522
None:
Leser_ID : Word := 16#6124
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 33936
None:
Leser_ID : Word := 16#6125
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 35350
None:
Leser_ID : Word := 16#6126
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 36764
None:
Leser_ID : Word := 16#6127
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 38178
None:
Leser_ID : Word := 16#6128
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 39592
None:
Leser_ID : Word := 16#6129
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 41006
None:
Leser_ID : Word := 16#6130
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 42420
None:
Leser_ID : Word := 16#6131
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 43834
None:
Leser_ID : Word := 16#6133
Leser_Dyn_DB : Int := 4711
Leser_Dyn_DD : DInt := 45248
@@ -0,0 +1,143 @@
=== GlobalDB 276: DLHMABP [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 118)
LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Pickstation_5 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5)
Pickstation_4 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5)
Pickstation_3 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5)
Pickstation_2 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5)
Pickstation_1 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5)
MultiPurposestation_3 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5)
MultiPurposestation_2 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5)
MultiPurposestation_1 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5)
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
None:
ABP_Nr : Word := 16#A500
ABP_Dyn_DB : Int := 1121
ABP_Dyn_DW : Int := 600
MaxAnzahl : Int := 8
Mindestzeit_zum_ABP_1 : Int := 15
Mindestzeit_zum_ABP_2 : Int := 20
Mindestzeit_zum_ABP_3 : Int := 23
Mindestzeit_aus_ABP_1 : Int := 18
Mindestzeit_aus_ABP_2 : Int := 18
Mindestzeit_aus_ABP_3 : Int := 18
Host_ABP : Int := 101
Schleusen_Platz_1 : Int := 3245
Schleusen_Platz_2 : Int := 3251
Schleusen_Platz_3 : Int := 3255
None:
ABP_Nr : Word := 16#A400
ABP_Dyn_DB : Int := 1122
ABP_Dyn_DW : Int := 600
MaxAnzahl : Int := 8
Mindestzeit_zum_ABP_1 : Int := 15
Mindestzeit_zum_ABP_2 : Int := 20
Mindestzeit_zum_ABP_3 : Int := 23
Mindestzeit_aus_ABP_1 : Int := 18
Mindestzeit_aus_ABP_2 : Int := 18
Mindestzeit_aus_ABP_3 : Int := 18
Host_ABP : Int := 102
Schleusen_Platz_1 : Int := 3275
Schleusen_Platz_2 : Int := 3281
Schleusen_Platz_3 : Int := 3285
None:
ABP_Nr : Word := 16#A300
ABP_Dyn_DB : Int := 1123
ABP_Dyn_DW : Int := 600
MaxAnzahl : Int := 8
Mindestzeit_zum_ABP_1 : Int := 15
Mindestzeit_zum_ABP_2 : Int := 20
Mindestzeit_zum_ABP_3 : Int := 23
Mindestzeit_aus_ABP_1 : Int := 18
Mindestzeit_aus_ABP_2 : Int := 18
Mindestzeit_aus_ABP_3 : Int := 18
Host_ABP : Int := 103
Schleusen_Platz_1 : Int := 3305
Schleusen_Platz_2 : Int := 3311
Schleusen_Platz_3 : Int := 3315
None:
ABP_Nr : Word := 16#A200
ABP_Dyn_DB : Int := 1124
ABP_Dyn_DW : Int := 600
MaxAnzahl : Int := 8
Mindestzeit_zum_ABP_1 : Int := 15
Mindestzeit_zum_ABP_2 : Int := 20
Mindestzeit_zum_ABP_3 : Int := 23
Mindestzeit_aus_ABP_1 : Int := 18
Mindestzeit_aus_ABP_2 : Int := 18
Mindestzeit_aus_ABP_3 : Int := 18
Host_ABP : Int := 104
Schleusen_Platz_1 : Int := 3335
Schleusen_Platz_2 : Int := 3341
Schleusen_Platz_3 : Int := 3345
None:
ABP_Nr : Word := 16#A100
ABP_Dyn_DB : Int := 1125
ABP_Dyn_DW : Int := 600
MaxAnzahl : Int := 8
Mindestzeit_zum_ABP_1 : Int := 15
Mindestzeit_zum_ABP_2 : Int := 20
Mindestzeit_zum_ABP_3 : Int := 23
Mindestzeit_aus_ABP_1 : Int := 18
Mindestzeit_aus_ABP_2 : Int := 18
Mindestzeit_aus_ABP_3 : Int := 18
Host_ABP : Int := 105
Schleusen_Platz_1 : Int := 3365
Schleusen_Platz_2 : Int := 3371
Schleusen_Platz_3 : Int := 3375
None:
ABP_Nr : Word := 16#B300
ABP_Dyn_DB : Int := 1126
ABP_Dyn_DW : Int := 600
MaxAnzahl : Int := 8
Mindestzeit_zum_ABP_1 : Int := 15
Mindestzeit_zum_ABP_2 : Int := 20
Mindestzeit_zum_ABP_3 : Int := 23
Mindestzeit_aus_ABP_1 : Int := 18
Mindestzeit_aus_ABP_2 : Int := 18
Mindestzeit_aus_ABP_3 : Int := 18
Host_ABP : Int := 106
Schleusen_Platz_1 : Int := 3395
Schleusen_Platz_2 : Int := 3401
Schleusen_Platz_3 : Int := 3405
None:
ABP_Nr : Word := 16#B200
ABP_Dyn_DB : Int := 1127
ABP_Dyn_DW : Int := 600
MaxAnzahl : Int := 8
Mindestzeit_zum_ABP_1 : Int := 15
Mindestzeit_zum_ABP_2 : Int := 20
Mindestzeit_zum_ABP_3 : Int := 23
Mindestzeit_aus_ABP_1 : Int := 18
Mindestzeit_aus_ABP_2 : Int := 18
Mindestzeit_aus_ABP_3 : Int := 18
Host_ABP : Int := 107
Schleusen_Platz_1 : Int := 3425
Schleusen_Platz_2 : Int := 3431
Schleusen_Platz_3 : Int := 3435
None:
ABP_Nr : Word := 16#B100
ABP_Dyn_DB : Int := 1128
ABP_Dyn_DW : Int := 600
MaxAnzahl : Int := 8
Mindestzeit_zum_ABP_1 : Int := 15
Mindestzeit_zum_ABP_2 : Int := 20
Mindestzeit_zum_ABP_3 : Int := 23
Mindestzeit_aus_ABP_1 : Int := 18
Mindestzeit_aus_ABP_2 : Int := 18
Mindestzeit_aus_ABP_3 : Int := 18
Host_ABP : Int := 108
Schleusen_Platz_1 : Int := 3455
Schleusen_Platz_2 : Int := 3461
Schleusen_Platz_3 : Int := 3465
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,141 @@
=== GlobalDB 279: DLOmniWeichen [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 9 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9)
INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Weiche_3482 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Weiche_vor_PS5 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Weiche_vor_PS4 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Weiche_vor_PS3 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Weiche_vor_PS2 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Weiche_vor_PS1 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Weiche_vor_MPS3 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Weiche_vor_MPS2 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Weiche_vor_MPS1 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5)
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
None:
Weichen_Nr : Int := 3482
Weichen_Dyn_DB : Int := 1120
Weichen_Dyn_DW : Int := 400
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3483
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3383
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
None:
Weichen_Nr : Int := 3242
Weichen_Dyn_DB : Int := 1121
Weichen_Dyn_DW : Int := 200
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3264
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3242
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
None:
Weichen_Nr : Int := 3272
Weichen_Dyn_DB : Int := 1122
Weichen_Dyn_DW : Int := 200
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3270
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3272
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
None:
Weichen_Nr : Int := 3302
Weichen_Dyn_DB : Int := 1123
Weichen_Dyn_DW : Int := 200
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3294
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3302
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
None:
Weichen_Nr : Int := 3332
Weichen_Dyn_DB : Int := 1124
Weichen_Dyn_DW : Int := 200
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3330
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3332
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
None:
Weichen_Nr : Int := 3362
Weichen_Dyn_DB : Int := 1125
Weichen_Dyn_DW : Int := 200
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3361
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3362
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
None:
Weichen_Nr : Int := 3392
Weichen_Dyn_DB : Int := 1126
Weichen_Dyn_DW : Int := 200
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3391
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3392
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
None:
Weichen_Nr : Int := 3422
Weichen_Dyn_DB : Int := 1127
Weichen_Dyn_DW : Int := 200
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3445
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3422
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
None:
Weichen_Nr : Int := 3452
Weichen_Dyn_DB : Int := 1128
Weichen_Dyn_DW : Int := 200
Wartezeit_bis_Weiche_leer : Int := 30
Gerade : Struct
Ziel : Word := 16#3451
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
Abzweig : Struct
Ziel : Word := 16#3452
Mindestzeit : Int := 10
Überwachungszeit : Int := 30
@@ -0,0 +1,40 @@
=== FC 19: AMRZeiger_ermitteln [STL] ===
INTERFACE:
Input:
AMR_X : Word // AMR zum Beeinflussen
Output:
AMR_DB : Int
AMR_DW : Int
Error : Bool
InOut:
Temp:
Position : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: Zeiger für AMR_X ermitteln ---
L AMR_X
T "MW200"
// Einsprung AMR ermitteln:
CALL FC "DatenOut" (SSDB:=276, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen
L "MB199"
L 2#1111111 // Bit 7 ausblenden
AW
L 0 // Fehler vorhanden?
<>I // Ja
= "6_HMI_Err_UH06_AMR".Logistik.DB276_Err
= Error
BEC
L "MW224"
T AMR_DB
L "MW226"
T AMR_DW
--- NW 2: Ende ---
BE
@@ -0,0 +1,154 @@
=== FB 11: AMR_TrolleyVersorgung [STL] ===
INTERFACE:
Input:
Output:
Arbeitsplatz : Word
InOut:
Static:
Last_Arbeitsplatz : Word
Temp:
ArbeitsPlatz_zum_Versorgen : Word
Freiplätze_Arbeitsplatz : Int
Constant:
--- NW 1: Initialisierung ---
L 0
T ArbeitsPlatz_zum_Versorgen
T "Freiplätze_Arbeitsplatz"
--- NW 2: Arbeitsplatz PS5 mit größtem Bedarf? ---
L "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden?
L "Freiplätze_Arbeitsplatz"
<=I // Nein !
JC PS5E
CAC
T "Freiplätze_Arbeitsplatz"
L 16#A500
T ArbeitsPlatz_zum_Versorgen
PS5E: NOP 0
--- NW 3: Arbeitsplatz PS4 mit größtem Bedarf? ---
L "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden?
L "Freiplätze_Arbeitsplatz"
<=I // Nein !
JC PS4E
CAC
T "Freiplätze_Arbeitsplatz"
L 16#A400
T ArbeitsPlatz_zum_Versorgen
PS4E: NOP 0
--- NW 4: Arbeitsplatz PS3 mit größtem Bedarf? ---
L "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden?
L "Freiplätze_Arbeitsplatz"
<=I // Nein !
JC PS3E
CAC
T "Freiplätze_Arbeitsplatz"
L 16#A300
T ArbeitsPlatz_zum_Versorgen
PS3E: NOP 0
--- NW 5: Arbeitsplatz PS2 mit größtem Bedarf? ---
L "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden?
L "Freiplätze_Arbeitsplatz"
<=I // Nein !
JC PS2E
CAC
T "Freiplätze_Arbeitsplatz"
L 16#A200
T ArbeitsPlatz_zum_Versorgen
PS2E: NOP 0
--- NW 6: Arbeitsplatz PS1 mit größtem Bedarf? ---
L "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden?
L "Freiplätze_Arbeitsplatz"
<=I // Nein !
JC PS1E
CAC
T "Freiplätze_Arbeitsplatz"
L 16#A100
T ArbeitsPlatz_zum_Versorgen
PS1E: NOP 0
--- NW 7: Versorgung von MPS von Schleuse 3481 sichergestellt? ---
A "BG3481" // Trolley vorhanden
O "MB3481" // Schleuse noch geöffnet
JC Fertig
--- NW 8: Arbeitsplatz MPS3 mit größtem Bedarf? ---
L "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden?
L "Freiplätze_Arbeitsplatz"
<=I // Nein !
JC MPS3E
CAC
T "Freiplätze_Arbeitsplatz"
L 16#B300
T ArbeitsPlatz_zum_Versorgen
MPS3E: NOP 0
--- NW 9: Arbeitsplatz MPS2 mit größtem Bedarf? ---
L "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden?
L "Freiplätze_Arbeitsplatz"
<=I // Nein !
JC MPS2E
CAC
T "Freiplätze_Arbeitsplatz"
L 16#B200
T ArbeitsPlatz_zum_Versorgen
MPS2E: NOP 0
--- NW 10: Arbeitsplatz MPS1 mit größtem Bedarf? ---
L "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden?
L "Freiplätze_Arbeitsplatz"
<=I // Nein !
JC MPS1E
CAC
T "Freiplätze_Arbeitsplatz"
L 16#B100
T ArbeitsPlatz_zum_Versorgen
MPS1E: NOP 0
--- NW 11: Arbeitsplatz übergeben ---
Fertig: L ArbeitsPlatz_zum_Versorgen
T Arbeitsplatz
T Last_Arbeitsplatz // Letzten Arbeitsplatz speichern (oder erst bei Draussen-FC)
--- NW 12: Ende ---
BE
@@ -0,0 +1,16 @@
=== GlobalDB 1000: DLTrolleys [DB] ===
INTERFACE:
Static:
Datenlistenkopf : Struct
KOPF : Word := WORD#16#DA0A // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128)
LAENGE : Int := 1635 // Länge der Datenliste (maximale Anzahl der Datensätze)
STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9)
INDDB : Int := 1080 // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
LAENGEINDDB : Int := 20000 // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!)
INDDATEN_WANDEL_FC : Int := 1000 // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs
Belegt14 : Int // reserviert von Sort-Datenliste
AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!)
Reserve18 : Int // Reserve
Trolley : Array[1..1635] of "UTrolley"
Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE)
@@ -0,0 +1,4 @@
=== GlobalDB 1080: IndexDB1000 [DB] ===
INTERFACE:
Static:
Index : Array[6040000..6060000, 1..1] of Int // vorläufige Platzhaltervariable
@@ -0,0 +1,76 @@
=== FC 4: LeerTrolley to AMR-Platz ermitteln [STL] ===
INTERFACE:
Input:
Erlaubter_Bereich : Word // 0=Alles ok, A000=nur PS, B000=nur MPS ok
Output:
AMR_Platz : Word // AMR-Platz ermitteln
InOut:
Temp:
DLDB : Int
Para : Word
Constant:
Return:
Ret_Val : Void
--- NW 1: Initialisierung ---
L 16#0
T AMR_Platz
L 1112 // Mit DL (12 Trolleys benötigt) beginnen
T DLDB
--- NW 2: Werden 12->1 Trolley(s) benötigt? ---
NextDL: L 16#F100 // 1.Datensatz lesen
T Para
Next: CALL FC "DatenOut" (SSDB:=DLDB, SSDW:=0, PARA:=Para, SEARCHDATEN:=P#M200.0, RE_VAL:="MB198", OUTDATEN:=P#M220.0, Position:="MW196")
A "M198.7" // Datensatz ist vorhanden
JC Check
// Nächst kleiner benötigte Stückzahl:
L DLDB
+ -1
T DLDB
L 1101 // 1 Trolley benötigt
>=I // noch sinnvoll?
JC NextDL // Ja!
BEU
--- NW 3: Check, ob Bereich ok ---
Check: L Erlaubter_Bereich
L 16#0 // Keine Beschränkung ?
==I // Ja !
JC AMR
L "MW220" // Nächstes ABP-Ziel
L 16#F000
AW // maskieren
L Erlaubter_Bereich // wie erlaubter Bereich ?
==I // Ja!
A(
L "MW220" // Nächstes ABP-Ziel
L 16#0 // Sinnvoller Wert ?
<>I // Nein !
)
JC AMR
// Nächsetn Eintrag lesen:
L 16#FF00 // Nächsten Datensatz lesen
T Para
JU Next
--- NW 4: Puffer aufbereiten ---
AMR: L "MW220"
T AMR_Platz
--- NW 5: Ende ---
BE
@@ -0,0 +1,106 @@
=== FC 5: Reservierung_in_Arbeitsplatz_eintragen [STL] ===
INTERFACE:
Input:
TrolleyID : DInt
Ziel : Word
Standort : Word
Gesamt_Trolley_DL : Int
Output:
InOut:
Temp:
ABP_DB : Int
ABP_DW : Int
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt // Startwert mit Offset 0
Position : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: Ziel bekannt -> Reservierung im Puffer ---
L Ziel
T "MW220"
L 16#0
==I
JC NoRes
// Arbeitsplatz checken:
CALL FC "DatenOut" (SSDB:=276, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen
L "MB199"
L 2#1111111 // Bit 7 ausblenden
AW
L 0 // Fehler vorhanden?
<>I // Ja
JC NoRes
L "MW224"
T ABP_DB
L "MW226"
T ABP_DW
L ABP_DW
ITD
T AR1Start // Startwert mit Offset 0
// Anzahl Reservierungen:
L AR1Start // Startwert mit Offset 0
+ DINT#130 // Offset für Reservierungen
SLD 3
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
// ReservierungsAnzahl +1:
OPN DB[ABP_DB] // ABP-DB öffnen
L DBW [AR1Zeiger] // Reservierungen
+ 1 // +1
OPN DB[ABP_DB] // ABP-DB öffnen
T DBW [AR1Zeiger]
NoRes: NOP 0
--- NW 2: TrolleyID + Standort in Trolley-DL eintragen ---
BEU // /
L TrolleyID
L 0
==I
BEC
L Gesamt_Trolley_DL
L 0 // Liste angegeben?
==I // Nein!
BEC
L TrolleyID
T "TrolleyDL_INDaten".INDaten.TrolleyID
L Ziel
T "TrolleyDL_INDaten".INDaten.EndZiel
L DINT#0
T "TrolleyDL_INDaten".INDaten.ShopGroup
// Standort:
L Standort
T "TrolleyDL_INDaten".INDaten.Standort
// Startzeit:
L "SGes".DATE_TIME.Jahr
T "TrolleyDL_INDaten".INDaten.LastTime.Jahr
L "SGes".DATE_TIME.Monat
T "TrolleyDL_INDaten".INDaten.LastTime.Monat
L "SGes".DATE_TIME.Tag
T "TrolleyDL_INDaten".INDaten.LastTime.Tag
L "SGes".DATE_TIME.Stunde
T "TrolleyDL_INDaten".INDaten.LastTime.Stunde
L "SGes".DATE_TIME.Minute
T "TrolleyDL_INDaten".INDaten.LastTime.Minute
L "SGes".DATE_TIME.Sekunde
T "TrolleyDL_INDaten".INDaten.LastTime.Sekunde
// Daten in Datenbank schreiben:
CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198")
--- NW 3: Ende ---
BE
@@ -0,0 +1,144 @@
=== FC 29: Simulation_AMR_Trolley_starten [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Zufallszahl : Int
AMR_DB : Int
AMR_DW : Int
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt // Startwert mit Offset 0
Constant:
Return:
Ret_Val : Void
--- NW 1: Simulation ist aktiv ---
A "T29"
S "DAMR_Bereich".Simulation.Wartezeit_ok
AN "DAMR_Bereich".Simulation.Wartezeit_ok
L s5t#20s
OnDelay "T29"
A "DAMR_Bereich".Simulation.aktiv
= "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert
= "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert
= "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert
= "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert
= "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert
= "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert
= "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert
= "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert
AN "DAMR_Bereich".Simulation.aktiv
ON "DAMR_Bereich".Simulation.Wartezeit_ok
BEC
--- NW 2: Trolley zum Ausfahren vorhanden? ---
A "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit"
O "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit"
O "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit"
O "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit"
O "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit"
O "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit"
O "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit"
O "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit"
JC Zufall
SET
S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart
S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart
S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart
S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart
S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart
S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart
S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart
S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart
L 0
T "DAMR_Bereich".Simulation.AMR
BEU
--- NW 3: AMR zufällig ermitteln ---
Zufall: L "DAMR_Bereich".Simulation.MSekunden
SRW 4
T Zufallszahl
L Zufallszahl
JL Ende
JU s000 // Schritt 0
JU s001 // Schritt 1
JU s002 // Schritt 2
JU s003 // Schritt 3
JU s004 // Schritt 4
JU s005 // Schritt 5
JU s006 // Schritt 6
JU s007 // Schritt 7
JU s008 // Schritt 8
Ende: BEU // Kein AMR
s000: BEU // Kein AMR
s001: L 16#A500 // PS5
JU AMRCheck
s002: L 16#A400 // PS4
JU AMRCheck
s003: L 16#A300 // PS3
JU AMRCheck
s004: L 16#A200 // PS2
JU AMRCheck
s005: L 16#A100 // PS1
JU AMRCheck
s006: L 16#B300 // MPS3
JU AMRCheck
s007: L 16#B200 // MPS2
JU AMRCheck
s008: L 16#B100 // MPS1
JU AMRCheck
--- NW 4: AMR bereit ? ---
AMRCheck: T "DAMR_Bereich".Simulation.AMR
CALL FC "AMRZeiger_ermitteln" (AMR_X:="DAMR_Bereich".Simulation.AMR, AMR_DB:=AMR_DB, AMR_DW:=AMR_DW, Error:="M199.0")
A "M199.0"
BEC
// Ziel-Pointer erzeugen: (PLC-Daten)
L AMR_DW
ITD
T AR1Start // Startwert mit Offset 0
// Hat AMR Trolleys zum Ausfahren?:
L AR1Start // Startwert mit Offset 0
+ DINT#184 // Offset für Simulation
SLD 3
L 3 // Damit DBX_Bit 3
OD
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[AMR_DB] // AMR-DB öffnen
AN DBX [AR1Zeiger] // Trolleys bereit für Ausfahrt
BEC
// Trolley starten:
L AR1Start // Startwert mit Offset 0
+ DINT#184 // Offset für Simulation
SLD 3
L 1 // Damit DBX_Bit 1
OD
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[AMR_DB] // AMR-DB öffnen
SET
= DBX [AR1Zeiger] // Trolley starten
SET
R "DAMR_Bereich".Simulation.Wartezeit_ok // Wartezeit neu starten
--- NW 5: Ende ---
BE
@@ -0,0 +1,4 @@
=== GlobalDB 1010: TrolleyDL_INDaten [DB] ===
INTERFACE:
Static:
INDaten : "UTrolley"
@@ -0,0 +1,4 @@
=== GlobalDB 1011: TrolleyDL_OutDaten [DB] ===
INTERFACE:
Static:
OUTDaten : "UTrolley"
@@ -0,0 +1,4 @@
=== GlobalDB 1012: TrolleyDL_SearchDaten [DB] ===
INTERFACE:
Static:
SEARCHDaten : "UTrolley"
@@ -0,0 +1,52 @@
=== FC 1003: Trolley_DL_Check_ID [STL] ===
INTERFACE:
Input:
TrolleyID : DInt
Output:
Check_EndZiel : Word // Ziel
Check_ZwischenZiel : Word // Für Weiche,...
Check_Variante : Int // Variante auf Trolley
Check_Standort : Word // Standort (Puffer, Heber, unterwegs)
Check_ShopGroup : DInt
Err : Bool
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: Trolley auslesen ---
L TrolleyID
T "MD220"
CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen
L "MB199"
L 2#1111111 // Bit 7 ausblenden
AW
L 0 // Fehler vorhanden?
<>I // Ja
= Err
BEC
--- NW 2: Relevante Daten übergeben ---
L "TrolleyDL_OutDaten".OUTDaten.EndZiel
T Check_EndZiel
L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel
T Check_ZwischenZiel
L "TrolleyDL_OutDaten".OUTDaten.ShopGroup
T Check_Variante
L "TrolleyDL_OutDaten".OUTDaten.Standort
T Check_Standort
L "TrolleyDL_OutDaten".OUTDaten.ShopGroup
T Check_ShopGroup
--- NW 3: Ende ---
BE
@@ -0,0 +1,86 @@
=== FC 1002: Trolley_DL_Neue_Pos [STL] ===
INTERFACE:
Input:
Gesamt_Trolley_DL : Int
TrolleyID : DInt
Position : Word
ShopGroup : DInt
Output:
Err : Bool
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: GesamtTrolly-DL angegeben? ---
L Gesamt_Trolley_DL
L 0 // sinnvolle Angabe?
<=I // Nein!
BEC // Abbruch
--- NW 2: Trolley auslesen ---
L TrolleyID
T "MD220"
CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen
L "MB199"
L 2#1111111 // Bit 7 ausblenden
AW
L 0 // Fehler vorhanden?
<>I // Ja
= Err
BEC
--- NW 3: Zeit übegeben ---
L TrolleyID
T "TrolleyDL_OutDaten".OUTDaten.TrolleyID
L "SGes".DATE_TIME.Jahr
T "TrolleyDL_OutDaten".OUTDaten.LastTime.Jahr
L "SGes".DATE_TIME.Monat
T "TrolleyDL_OutDaten".OUTDaten.LastTime.Monat
L "SGes".DATE_TIME.Tag
T "TrolleyDL_OutDaten".OUTDaten.LastTime.Tag
L "SGes".DATE_TIME.Stunde
T "TrolleyDL_OutDaten".OUTDaten.LastTime.Stunde
L "SGes".DATE_TIME.Minute
T "TrolleyDL_OutDaten".OUTDaten.LastTime.Minute
L "SGes".DATE_TIME.Sekunde
T "TrolleyDL_OutDaten".OUTDaten.LastTime.Sekunde
--- NW 4: Neue Position übergeben ---
L Position
L 0
==I
JC NoNewPos
CAC
T "TrolleyDL_OutDaten".OUTDaten.Standort
NoNewPos: NOP 0
--- NW 5: ShopGroup übergeben ? (bei 0 nichts ändern!) ---
L ShopGroup
L DINT#0
==D
JC NoShopGroup
CAC
T "TrolleyDL_OutDaten".OUTDaten.ShopGroup
NoShopGroup: NOP 0
--- NW 6: Daten schreiben ---
CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1011.DBX0.0, RE_VAL:="MB199")
--- NW 7: Ende ---
BE
@@ -0,0 +1,108 @@
=== FC 6: Trolley_in_Arbeitsplatz_eingefahren [STL] ===
INTERFACE:
Input:
TrolleyID : DInt
Ziel : Word
AusfahrZiel : Word
Gesamt_Trolley_DL : Int
Output:
InOut:
Temp:
ABP_DB : Int
ABP_DW : Int
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
AR1Start : DInt // Startwert mit Offset 0
Position : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: Ziel = AusfahrZiel -> Einfahrt an ABP melden ---
L Ziel
T "MW220"
L 16#0 // Sinnvolles Ziel ?
==I // Nein!
BEC
CAC // Trolley-Ziel
L AusfahrZiel // Bei diesem Ziel ausfahren?
<>I // Nicht identisch!
BEC
// Arbeitsplatz checken:
CALL FC "DatenOut" (SSDB:=276, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen
L "MB199"
L 2#1111111 // Bit 7 ausblenden
AW
L 0 // Fehler vorhanden?
<>I // Ja
BEC
L "MW224"
T ABP_DB
L "MW226"
T ABP_DW
L ABP_DW
ITD
T AR1Start // Startwert mit Offset 0
// Status:
L AR1Start // Startwert mit Offset 0
+ DINT#62 // Offset für Status
SLD 3
L 1 // Damit DBX_Bit 1
OD
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
// Trolley fährt ein:
OPN DB[ABP_DB] // ABP-DB öffnen
SET
= DBX [AR1Zeiger] // Trolley ist eingefahren
--- NW 2: TrolleyID + Standort in Trolley-DL eintragen ---
L TrolleyID
L 0
==I
BEC
L Gesamt_Trolley_DL
L 0 // Liste angegeben?
==I // Nein!
BEC
L TrolleyID
T "TrolleyDL_INDaten".INDaten.TrolleyID
L 16#0 // Ziel löschen
T "TrolleyDL_INDaten".INDaten.EndZiel
L DINT#0
T "TrolleyDL_INDaten".INDaten.ShopGroup
// Standort:
L AusfahrZiel
T "TrolleyDL_INDaten".INDaten.Standort
// Startzeit:
L "SGes".DATE_TIME.Jahr
T "TrolleyDL_INDaten".INDaten.LastTime.Jahr
L "SGes".DATE_TIME.Monat
T "TrolleyDL_INDaten".INDaten.LastTime.Monat
L "SGes".DATE_TIME.Tag
T "TrolleyDL_INDaten".INDaten.LastTime.Tag
L "SGes".DATE_TIME.Stunde
T "TrolleyDL_INDaten".INDaten.LastTime.Stunde
L "SGes".DATE_TIME.Minute
T "TrolleyDL_INDaten".INDaten.LastTime.Minute
L "SGes".DATE_TIME.Sekunde
T "TrolleyDL_INDaten".INDaten.LastTime.Sekunde
// Daten in Datenbank schreiben:
CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198")
--- NW 3: Ende ---
BE
@@ -0,0 +1,34 @@
=== FC 1: Trolleydaten_löschen [STL] ===
INTERFACE:
Input:
Gesamt_Trolley_DL : Int
TrolleyID : DInt
Output:
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: GesamtTrolly-DL angegeben? ---
L Gesamt_Trolley_DL
L 0 // sinnvolle Angabe?
<=I // Nein!
BEC // Abbruch
--- NW 2: Trolleydaten auslesen und verändern ---
// Trolleydaten manipulieren:
L TrolleyID
T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID
CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#E100, SEARCHDATEN:=DB1012.DBX0.0, RE_VAL:="MB198", OUTDATEN:=DB1011.DBX0.0, Position:="MW200") // Eintrag lesen + austragen
L "MB198"
BEU
--- NW 3: Ende ---
BE
@@ -0,0 +1,53 @@
=== FC 3: Trolleydaten_neu_anlegen [STL] ===
INTERFACE:
Input:
Gesamt_Trolley_DL : Int
TrolleyID : DInt
Endziel : Word
ShopGroup : DInt
Output:
InOut:
Temp:
Lager_DB : Int
Lager_DW : Int
SSDW : Int
Position : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: GesamtTrolly-DL angegeben? ---
L Gesamt_Trolley_DL
L 0 // sinnvolle Angabe?
<=I // Nein!
BEC // Abbruch
--- NW 2: Erst mal alte Daten löschen ---
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=Gesamt_Trolley_DL, TrolleyID:=TrolleyID)
--- NW 3: Trolleydaten speichern ---
// Trolleydaten manipulieren:
L TrolleyID
T "TrolleyDL_INDaten".INDaten.TrolleyID
L Endziel // Eingabe über Beobachtungstabelle (Tests)
T "TrolleyDL_INDaten".INDaten.EndZiel
L ShopGroup
T "TrolleyDL_INDaten".INDaten.ShopGroup
// Rest nullen
L 0
T "TrolleyDL_INDaten".INDaten.ZwischenZiel
T "TrolleyDL_INDaten".INDaten.Standort
// Daten in Datenbank schreiben:
CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198")
L "TrolleyDL_INDaten".INDaten.TrolleyID
--- NW 4: Ende ---
BE
@@ -0,0 +1,59 @@
=== FC 2: Trolleydaten_ändern [STL] ===
INTERFACE:
Input:
Gesamt_Trolley_DL : Int
TrolleyID : DInt
Endziel : Word
ShopGroup : DInt
Output:
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: GesamtTrolly-DL angegeben? ---
L Gesamt_Trolley_DL
L 0 // sinnvolle Angabe?
<=I // Nein!
BEC // Abbruch
--- NW 2: Trolleydaten auslesen und verändern ---
// Trolleydaten manipulieren:
L TrolleyID
T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID
CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=DB1012.DBX0.0, RE_VAL:="MB198", OUTDATEN:=DB1011.DBX0.0, Position:="MW200") // Eintrag lesen
L "MB198"
L 2#10000000 // Datensatz vorhanden?
<>I // Nein!
BEC
L "TrolleyDL_OutDaten".OUTDaten.TrolleyID // Zum Beobachten
L Endziel
L -1 // Keine Änderung ?
==I // Ja !
JC Variante // Nichts überschreiben
CAC
T "TrolleyDL_OutDaten".OUTDaten.EndZiel
Variante: L ShopGroup
L DINT#-1 // Keine Änderung ?
==D // Ja !
JC Save // Nichts überschreiben
CAC
T "TrolleyDL_OutDaten".OUTDaten.ShopGroup
Save: CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1011.DBX0.0, RE_VAL:="MB198")
BEU
--- NW 3: Ende ---
BE
@@ -0,0 +1,19 @@
=== FC 1000: Wandel_FC_für_DB1000 [STL] ===
INTERFACE:
Input:
Output:
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: Wandeln der Daten ---
L "MD94"
+ DINT#-6040000 // Funktioniert bis max: 6072767 (Wert + 32767)
T "MW92" // Funktioniert bis max: 32767, danach negativ
--- NW 2: Ende ---
BE
@@ -0,0 +1,82 @@
=== FC 276: AMR_LeerTrolley_Anforderung [STL] ===
INTERFACE:
Input:
LeerTrolleys_benötigt : Int
ArbeitsPlatz : Word
Output:
InOut:
Gespeicherte_LeerTrolleys : Int
Temp:
DLDB : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: Änderung vorhanden? ---
L "LeerTrolleys_benötigt" // Diese Anzahl wird benötigt
L Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert
==I // Identisch!
A(
L "LeerTrolleys_benötigt" // Diese Anzahl wird benötigt
L 0
<>I
)
BEC // Keine Änderung nötig!
--- NW 2: Alle evtl. gespeicherte Anforderungen löschen ---
L 1112 // Mit DL (12 Trolleys benötigt) beginnen
T DLDB
NextDL: L ArbeitsPlatz
T "MW220"
CALL FC "DatenOut" (SSDB:=DLDB, SSDW:=0, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB198", OUTDATEN:=P#M200.0, Position:="MW196") // Daten suchen und austragen
// Nächst kleiner benötigte Stückzahl:
L DLDB
+ -1
T DLDB
L 1101 // 1 Trolley benötigt
>=I // noch sinnvoll?
JC NextDL // Ja!
L 0 // Keine Speicherung mehr
T Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert
--- NW 3: Benötigte Leertrolleys speichern ---
L "LeerTrolleys_benötigt"
L 12
<=I
JC OK
T "LeerTrolleys_benötigt"
OK: L "LeerTrolleys_benötigt"
L 0
==I // Nichts benötigt
JC ESave
CAC
+ 1100 // 1101 ->1112
T DLDB
L ArbeitsPlatz
T "MW220"
CALL FC "DatenIn" (SSDB:=DLDB, SSDW:=0, INDATEN:=P#M220.0, RE_VAL:="MB198")
AN "M198.7" // Eintrag richtig erfolgt
JC ESave
L "LeerTrolleys_benötigt" // Anzahl übergeben
T Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert
ESave: NOP 0
--- NW 4: Ende ---
BE
@@ -0,0 +1,35 @@
=== FC 1276: AMR_LeerTrolley_Anforderung_Del [STL] ===
INTERFACE:
Input:
ArbeitsPlatz : Word
Output:
InOut:
Gespeicherte_LeerTrolleys : Int
Temp:
DLDB : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: Bisherig gespeicherte Anforderung löschen ---
L Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert
L 0
==I // Nichts gespeichert
BEC
CAC
+ 1100 // 1101 ->1109
T DLDB
L ArbeitsPlatz
T "MW220"
CALL FC "DatenOut" (SSDB:=DLDB, SSDW:=0, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB198", OUTDATEN:=P#M200.0, Position:="MW196") // Daten suchen und austragen
L 0 // Keine Speicherung mehr
T Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert
--- NW 2: Ende ---
BE
@@ -0,0 +1,87 @@
=== FC 78: BCD (4stellig)_to_INT [STL] ===
INTERFACE:
Input:
BCD_Wert : Word
Output:
Int_Wert : Int
InOut:
Temp:
BCD_Vergleich : Word
Multiplikator : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: Rückmeldung ---
L 0 // erst mal köschen
T Int_Wert
L 1
T Multiplikator
--- NW 2: BCD-Wert wandeln ---
L BCD_Wert
T BCD_Vergleich
L 16#000F
AW
L Multiplikator
*I
L Int_Wert
+I
T Int_Wert
L Multiplikator
L 16
*I
T Multiplikator
L BCD_Vergleich
SRW 4
T BCD_Vergleich
L 16#000F
AW
L Multiplikator
*I
L Int_Wert
+I
T Int_Wert
L Multiplikator
L 16
*I
T Multiplikator
L BCD_Vergleich
SRW 4
T BCD_Vergleich
L 16#000F
AW
L Multiplikator
*I
L Int_Wert
+I
T Int_Wert
L Multiplikator
L 16
*I
T Multiplikator
L BCD_Vergleich
SRW 4
T BCD_Vergleich
L 16#000F
AW
L Multiplikator
*I
L Int_Wert
+I
T Int_Wert
--- NW 3: Ende ---
BE
@@ -0,0 +1,50 @@
=== FC 99: DBMOV [STL] ===
INTERFACE:
Input:
QuellDB : Int // Quell-DB
QuellDW : Int // Quell-1.DW
ZielDB : Int // Ziel-DB
ZielDW : Int // Ziel-1.DW
Anzahl_DW : Int // Anzahl der zu kopierenden DWs
Output:
RE_VAL : Int // Rückmeldung
InOut:
Temp:
Quelle : Any // Zeiger, wo Rein-Daten sind
Ziel : Any // Zeiger, FIFO-Stelle
Constant:
Return:
Ret_Val : Void
--- NW 1: ---
// Kennung + Datenbytes
L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Anzahl_DW // Datenwords speichern
T LW2
T LW12 // Wiederholungen
// Quelle-Pointer erzeugen:
L QuellDB
T LW4 // DB_Nummer
L QuellDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
L ZielDB
T LW14 // DB_Nummer
L ZielDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD16 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RE_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern
--- NW 2: Ende ---
BE
@@ -0,0 +1,55 @@
=== FC 1004: DL_Einsprung [STL] ===
INTERFACE:
Input:
Bereich_DL : Int // Nur für Stammdaten =1!
ID : Int
Output:
Dyn.DB : Int
AR_Start : DInt
Error : Bool
InOut:
Temp:
Constant:
Return:
Ret_Val : Void
--- NW 1: Inittialisierung ---
L 0
T "Dyn.DB"
L DINT#0
T AR_Start
SET
S Error
--- NW 2: ID suchen ---
L ID
T "MW200"
CALL FC "DatenOut" (SSDB:=Bereich_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag lesen
L "MB199"
L 2#1111111 // Bit 7 ausblenden
AW
L 0 // Fehler vorhanden?
<>I // Ja
= Error
BEC
--- NW 3: Daten übergeben ---
L "MW224"
T "Dyn.DB" // Dyn.DB
L 0 // sinnvoller Wert ?
<=I // Nein !
S Error
BEC
L "MW226"
ITD
T AR_Start
--- NW 4: Ende ---
BE
@@ -0,0 +1,627 @@
=== FC 91: DatenFindOffsetSort [STL] ===
INTERFACE:
Input:
SSDB : Int // Datenlisten-DB
SSDW : Int // Datenlisten-1.DW
PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten)
SEARCHDATEN : Pointer // Such-Daten-Schnittstelle
Output:
RE_VAL : Byte // Rückmeldung
OUTDATEN : Pointer // OutDaten-Schnittstelle
Position : Int // Daten stehen an angegebener Position in Datenbank
InOut:
Temp:
Quelle : Any // Zeiger, wo Rein-Daten sind
Ziel : Any // Zeiger, FIFO-Stelle
Kopf : Byte // Datenliste-Kennnung (DA)
Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128
Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze)
Stammdaten : Int // Stammdatenlänge in Word (1 - 9)
Belegt06 : Int // reserviert von Datenliste
Belegt08 : Int // reserviert von Datenliste
Belegt10 : Int // reserviert von Datenliste
Belegt12 : Int // reserviert von Datenliste
AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Para1 : Byte // 1.Aufrufparameter
Para2 : Byte // 2.Aufrufparameter
Suchzeiger : Int // Suchzeiger
DBDatenliste : Word // Datenlisten-DB
OffsetDaten_1 : Int // Stammdaten beginnen ab hier
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
Datenlisten_Ende : Word // Ende der Datenliste
AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern
Schleife : Word // Loopzähler
DBSuchDaten : Word // Such-Daten-DB, falls angegeben
SuchDaten_Pointer : DWord // Such-Daten-Pointer: Kennung, Adresse
SuchDaten_Startpunkt : Word // Such-Daten-Startpunkt: Adresse
DBOutDaten : Word // Out-Daten-DB, falls angegeben
OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse
OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse
IndPointer : DWord // Zeiger für IndDB
Daten_1 : Word // 1.Datenwort der Indaten
Datenblock_inBytes : Word // Datenblocklänge in Bytes
Suchstelle : Word // Bei angegebenen Datensatz suchen
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
Weitersuchen : Bool // Weitersuchen ist aktiv
Offsetsuchen : Bool // Offsetsuchen ist aktiv
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
tRE_VAL : Byte // Rückmeldung
Constant:
Return:
Ret_Val : Void
--- NW 1: Schnittstellen-DB sinnvoll ? ---
TAR2
T AR2_Speicher // AR2 zwischenspeichern
L SSDB
T DBDatenliste
// CALL TEST_DB
// DB_NUMBER :=#DBDatenliste
// RET_VAL :=#SFC_RET_VAL
// DB_LENGTH :=#SFC_DB_LENGTH
// WRITE_PROT :=#SFC_WRITE_PROT
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT // schreibgeschützt
JC Err0 // kein Datenlisten-Bereich
--- NW 2: Quelle-Pointer erzeugen: ---
L 16#1004 // Kennung 10 + Word=04
T LW0 // Any-Kennung, Datentyp
L 16#000A // 10 Dw´s holen
T LW2 // Wiederholungen
L SSDB
T LW4 // DB_Nummer
L SSDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
--- NW 3: Zeigerüberprüfung ---
L Kopf // Datenliste-Kopf
L 16#DB // = Sort-Datenlistekennung ?
<>I // Nein !
JC Err0 // kein Datenlistebereich
L 1
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L 128
>I
JC Err0 // kein Datenlistebereich
L 1
L Listenlaenge // Max.Anzahl von Datenblöcken
>I
JC Err0 // kein Datenlistebereich
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err0 // kein Datenlistebereich
L 9
>I
JC Err0 // kein Datenlistebereich
L Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I
L 2 // DB byteorientiert
*I
+ 20 // Speichern ab 10.DW
L SSDW
+I
T Datenlisten_Ende
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L Datenlisten_Ende
L SFC_DB_LENGTH
>I // Datenlisten-DB ist zu kurz!
JC Err0 // kein Datenlisten-Bereich
L DBW [AR1Zeiger]
L 16#DAEE // Datenliste-Endekennung ?
<>I // Nein !
A(
CAC
L 16#DBEE // Sort-Datenliste-Endekennung ?
<>I // Nein !
)
JC Err0 // kein Datenlisten-Bereich
L Datensatzlaenge // Datenblocklänge
L 2
*I
T Datenblock_inBytes // Datenblocklänge in Bytes
--- NW 4: Auftrag kontrollieren ---
SET
R Weitersuchen // Weitersuchen ist aktiv
R Offsetsuchen // Offsetsuchen ist aktiv
L 0 // Vorerst kein Offset
T OffsetDaten_1
L PARA
T LW40 // Aufrufparameter zwischenspeichern
L 16#00 // XX = 00 ?
L Para1
==I // Ja!
JC W401
L 16#E1 // XX = E1 ?
==I // Ja!
JC Err3 // Falscher Aufrufparameter
L 16#F1 // XX = F1 ?
L Para1
<>I // Nein !
JC W400
L Para2
L 16#00
<>I
JC Err3 // Falscher Aufrufparameter
SET
S Weitersuchen
L SSDW
+ 20
T Suchzeiger
JU Nw08 // OutDaten ok ?
W400: L 16#FF // XX = FF ?
<>I // Nein !
JC W403
L Para2
L 16#00
<>I
JC Err3 // Falscher Aufrufparameter
SET
S Weitersuchen
L Suchzeiger // Alter Suchzeiger
L Datenblock_inBytes // Datenblocklänge in bytes
+I // Nächsten Datensatz suchen
T Suchzeiger // Neuer Suchzeiger
L Datenblock_inBytes // Datenblocklänge in bytes
L Listenlaenge // Alle möglichen Einträge
*I // Gesamtlänge
L SSDW // Startpunkt
+I
+ 20 // Offset 1.Daten
L Suchzeiger // Schreibzeiger
>I // Noch nicht am Ende !
JC Nw08 // OutDaten ok ?
JU Err2 // Listenende erreicht
W403: L 16#02 // XX < 02 ?
L Para1
>I // Ja!
JC Err3 // Falscher Aufrufparameter
L 16#80 // XX > 80 ?
>I // Ja!
JC Err3 // Falscher Aufrufparameter
CAC
L Datensatzlaenge // XX > Datensatzlänge
>I // Ja!
JC Err3 // Falscher Aufrufparameter
CAC
+ -1 // Angegebener Offset -1
L 2 // DB byteorientiert
*I
T OffsetDaten_1 // Richtiger Offset der 1.Stammdaten
L 0
T Suchzeiger // Suche ab Anfang
SET
S Offsetsuchen
W401: L 16#00 // =0 ?
L Para2 // 2.Aufrufparameter
==I // Ja !
JC W402
T Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err3 // Falscher Aufrufparameter
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err3 // Falscher Aufrufparameter
L 9
>I
JC Err3 // Falscher Aufrufparameter
W402: AN Offsetsuchen
JC Nw05
L Para1 // Offset
+ -1
L Stammdaten
+I // Letzte Stammdaten zu groß ?
L Datensatzlaenge
>I // Ja!
JC Err3 // Falscher Aufrufparameter
--- NW 5: Such-DATEN-Pointer übernehmen: ---
Nw05: L AnzahlEintraege // Anzahl der eingetragenen Datensätze
L 0 // Eintrag vorhanden ?
==I // Nein !
JC Err6 // Datensatz ist nicht vorhanden
L 0
T Suchzeiger // Suchzeiger
L P#
LAR2
L NoneW [AR2,]
T DBSuchDaten // Suchdaten-DB
L NoneD [AR2,] // Kennung, Adresse
T SuchDaten_Pointer
L DBSuchDaten // Suchdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W501
// CALL TEST_DB
// DB_NUMBER :=#DBSuchDaten
// RET_VAL :=#SFC_RET_VAL
// DB_LENGTH :=#SFC_DB_LENGTH
// WRITE_PROT :=#SFC_WRITE_PROT
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBSuchDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
L SFC_RET_VAL
L 2#0000_0000_0000_0000 // Fehler vorhanden ?
<>I // Ja !
JC Err4 // Undefinierte Stammdaten
L NoneD [AR2,] // Kennung, Adresse
L 16#00FF_FFFF // Ohne Kennung
AW
SRW 3 // Ohne Bit
T SuchDaten_Startpunkt
L Datensatzlaenge // Datenblocklänge
L 2 // DB byteorientiert
*I
L SuchDaten_Startpunkt
+I
L SFC_DB_LENGTH
>I // Suchdaten-DB ist zu kurz
JC Err4 // Undefinierte Stammdaten
W501: L SuchDaten_Pointer
LAR2
L DBSuchDaten // Suchdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W502
OPN DB[DBSuchDaten]
W502: L NoneW [AR2,] // Suchdaten überprüfen
T Daten_1 // 1.Suchdaten speichern
L Stammdaten
L500: T Schleife
L DBSuchDaten // Suchdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W503
OPN DB[DBSuchDaten]
W503: L NoneW [AR2,] // Suchdaten überprüfen
L 0 // Etwas angegeben ?
<>I // Ja !
JC Nw07 // Weiter
ADDAR2 P#2.0
L Schleife
LOOP L500
JU Err4 // Undefinierte Stammdaten
--- NW 6: Kontrolle auf gleiche Stammdaten ---
Nw07: L Suchzeiger // Suchzeiger
L 0 // Angegeben ?
==I // Nein !
JC W700 // Suche bei 1.Datensatz beginnen
L Suchzeiger // Suchzeiger
+ -20 // Zeiger 1.Daten
L Datenblock_inBytes // Datenblocklänge in Bytes
/I // Ermittlung der wievielten Daten -1
SRD 16 // Rest ermitteln
L 0 // = 0 ?
<>I // Suchzeiger nicht im Raster !
JC W700 // Suche bei 1.Datensatz beginnen
L 0 // Bei angegebener Stelle suchen
T Suchstelle // Such bei X-ten Datensatz
JU W701
W700: L 1 // Suche bei 1.Datensatz beginnen
T Suchstelle // Such bei X-ten Datensatz
L SSDW
+ 20 // Offset für 1.Daten
T Suchzeiger // Suchzeiger
W701: L Suchzeiger // Suchzeiger
L OffsetDaten_1 // Richtiger Offset der 1.Stammdaten
+I
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L SuchDaten_Pointer
LAR2
L Stammdaten // Anzahl der Stammdaten
L700: T Schleife
L DBSuchDaten // Suchdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W702
OPN DB[DBSuchDaten]
W702: L NoneW [AR2,] // Suchdaten überprüfen mit
OPN DB[DBDatenliste]
L DBW [AR1Zeiger] // Datenliste-Daten lesen
<>I // nicht identisch !
JC W703
L AR1Zeiger
SRD 3
L 2
+D
SLD 3
T AR1Zeiger
ADDAR2 P#2.0
L Schleife
LOOP L700
L 2#0000_0000_1000_0000 // Daten sind vorhanden
T tRE_VAL // Ok-Status
JU Nw08 // Datensatz ist in Liste enthalten
W703: L 0 // Suche bei 1.Datensatz begonnen
L Suchstelle // Such bei X-ten Datensatz
==I // Nein !
JC W700
L Suchstelle // Such bei X-ten Datensatz
+ 1
T Suchstelle // Such bei X-ten Datensatz
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
<=I // Alle Datensätze sind durchsucht
JC W705 // Nein !
JU Err6 // Datensatz ist nicht vorhanden
W705: L Datenblock_inBytes // Datenblocklänge in bytes
L Suchzeiger // Suchzeiger
+I
T Suchzeiger // Suchzeiger
JU W701
--- NW 7: Out-DATEN-Pointer übernehmen: ---
Nw08: L P#
LAR2
L NoneW [AR2,]
T DBOutDaten // Outdaten-DB
L NoneD [AR2,] // Kennung, Adresse
T OutDaten_Pointer
L DBOutDaten // Outdaten-DB
L 0 // Angegeben ?
==I // Nein
JC Nw09
// CALL TEST_DB
// DB_NUMBER :=#DBOutDaten
// RET_VAL :=#SFC_RET_VAL
// DB_LENGTH :=#SFC_DB_LENGTH
// WRITE_PROT :=#SFC_WRITE_PROT
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
L SFC_RET_VAL
L 2#0000_0000_0000_0000 // Fehler vorhanden ?
<>I // Ja !
JC Err5 // Undefinierte Outdaten
L NoneD [AR2,] // Kennung, Adresse
L 16#00FF_FFFF // Ohne Kennung
AW
SRW 3 // Ohne Bit
T OutDaten_Startpunkt
L OutDaten_Startpunkt
L SFC_DB_LENGTH
>I // Outdaten-DB ist zu kurz
JC Err5 // Undefinierte Outdaten
--- NW 8: Quelle-Pointer erzeugen: ---
Nw09: L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Datensatzlaenge // Datenwords speichern
T LW2
T LW12 // Wiederholungen
// DATEN-Pointer übernehmen:
L SSDB
T LW4 // DB_Nummer
L Suchzeiger // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
// Kennung + Datenbytes s.o.
L DBOutDaten
T LW14 // DB_Nummer
L OutDaten_Pointer
T LD16 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
L SSDW
+ 12 // im 12.DW speichern
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L Suchzeiger // Suchzeiger
OPN DB[DBDatenliste]
T DBW [AR1Zeiger] // Speicherung letzter Zugriff
L Suchzeiger // Suchzeiger
+ -20 // Offeset 1.DS
L Datenblock_inBytes // Datenblocklänge in Bytes
/I
+ 1 // Position errechnen
T Position // Daten stehen an angegebener Position in Datenbank
--- NW 9: Weitersuchen aktiv ? Datensatz vorhanden oder 0 ? ---
AN Weitersuchen
JC Ende
L OutDaten_Pointer
LAR2
L Datensatzlaenge
L110: T Schleife
L DBOutDaten // Outdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W111
OPN DB[DBOutDaten]
W111: L NoneW [AR2,] // Outdaten überprüfen
L 0 // Etwas angegeben ?
<>I // Ja !
JC W112 // Ok
ADDAR2 P#2.0
L Schleife
LOOP L110
L 2#0000_0000_0100_0000 // Daten sind nicht vorhanden
T tRE_VAL // Ok-Status
JU Ende
W112: L 2#0000_0000_1000_0000 // Daten sind vorhanden
T tRE_VAL // Ok-Status
JU Ende
--- NW 10: Fehlerausgabe / RET_VAL ---
Ende: SET // VKE = 1 ohne Fehler !!!
L tRE_VAL // Ok-Status
JU Ok
Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich
JU Err
Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler
JU Err
Err2: L 2#0000_0000_0000_0100 // Listenende ist erreicht
JU Err
Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf
JU Err
Err4: L 2#0000_0000_0001_0000 // Undefinierte Suchdaten
JU Err
Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten
JU Err
Err6: L 2#0000_0000_0100_0000 // Datensatz nicht vorhanden
Err: CLR // VKE = 0 bei Fehler !!!
Ok: T tRE_VAL
SAVE // VKE in BIE-Bit speichern
L AR2_Speicher // AR2 zurückspeichern
LAR2
--- NW 11: ---
L tRE_VAL
T RE_VAL
@@ -0,0 +1,552 @@
=== FC 85: DatenIn [STL] ===
INTERFACE:
Input:
SSDB : Int // Datenlisten-DB
SSDW : Int // Datenlisten-1.DW
INDATEN : Pointer // InDaten-Schnittstelle
Output:
RE_VAL : Byte
InOut:
Temp:
Quelle : Any // Zeiger, wo Rein-Daten sind
Ziel : Any // Zeiger, FIFO-Stelle
Kopf : Byte // Datenliste-Kennnung (DA)
Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128
Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze)
Stammdaten : Int // Stammdatenlänge in Word (1 - 9)
IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!)
IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
Schreibzeiger : Int // Speicherung des letzten Zugriffs / Schreibzeiger
Belegt14 : Int // reserviert von Sort-Datenliste
AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!)
Reserve18 : Int // Reserve
DBDatenliste : Word // Datenlisten-DB
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
Datenlisten_Ende : Word // Ende der Datenliste
AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern
Schleife : Word // Loopzähler
DBInDaten : Word // Indaten-DB, falls angegeben
InDaten_Pointer : DWord // In-Daten-Pointer: Kennung, Adresse
InDaten_Startpunkt : Word // In-Daten-Startpunkt: Adresse
IndPointer : DWord // Zeiger für IndDB
Daten_1 : Word // 1.Datenwort der Indaten
Daten_2 : DWord // 1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2)
LeerZeiger : Word // Zeiger für Leerzelle
Datenblock_inBytes : Word // Datenblocklänge in Bytes
Suchstelle : Word // Bei angegebenen Datensatz suchen
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
Indok : Bool // Indizierung möglich
IndZeiger_ok : Bool // Indizier-Zeiger angegeben
Sortliste : Bool // Sortliste wird durchsucht
tRE_VAL : Byte // Rückmeldung
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
DB_Länge : Int
Wandel_FC : Word // Wandel-FC
Constant:
Return:
Ret_Val : Void
--- NW 1: Schnittstellen-DB sinnvoll ? ---
TAR2
T AR2_Speicher // AR2 zwischenspeichern
L SSDB
T DBDatenliste
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT
JC Err0 // kein Datenlisten-Bereich
--- NW 2: Quelle-Pointer erzeugen: ---
L 16#1004 // Kennung 10 + Word=04
T LW0 // Any-Kennung, Datentyp
L 16#000A // 10 Dw´s holen
T LW2 // Wiederholungen
L SSDB
T LW4 // DB_Nummer
L SSDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
--- NW 3: Zeigerüberprüfung ---
L Kopf // Datenliste-Kopf
L 16#DB // = Sort-Datenlistekennung ?
==I // Ja !
= Sortliste // Sortliste wird durchsucht
JC w030
CAC
L 16#DA // = Datenlistekennung ?
<>I // Nein !
JC Err0 // kein Datenlistebereich
w030: L 1
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L 128
>I
JC Err0 // kein Datenlistebereich
L 1
L Listenlaenge // Max.Anzahl von Datenblöcken
>I
JC Err0 // kein Datenlistebereich
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err0 // kein Datenlistebereich
L 9
>I
JC Err0 // kein Datenlistebereich
L Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I
L 2 // DB byteorientiert
*I
+ 20 // Speichern ab 10.DW
L SSDW
+I
T Datenlisten_Ende
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L Datenlisten_Ende
L "DB_Länge"
>I // Datenlisten-DB ist zu kurz!
JC Err0 // kein Datenlisten-Bereich
L DBW [AR1Zeiger]
L 16#DAEE // Datenliste-Endekennung ?
<>I // Nein !
A(
CAC
L 16#DBEE // Sort-Datenliste-Endekennung ?
<>I // Nein !
)
JC Err0 // kein Datenlisten-Bereich
L Datensatzlaenge // Datenblocklänge
L 2
*I
T Datenblock_inBytes // Datenblocklänge in Bytes
--- NW 4: In-DATEN-Pointer übernehmen: ---
L P#
LAR2
L NoneW [AR2,]
T DBInDaten // Indaten-DB
L DBInDaten // Indaten-DB
L 0 // Angegeben ?
==I // Nein
JC W401
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBInDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000 // Fehler vorhanden ?
<>I // Ja !
JC Err4 // Undefinierte Indaten
L NoneD [AR2,] // Kennung, Adresse
L 16#00FF_FFFF // Ohne Kennung
AW
SRW 3 // Ohne Bit
T InDaten_Startpunkt
L Datensatzlaenge // Datenblocklänge
L 2 // DB byteorientiert
*I
L InDaten_Startpunkt
+I
L "DB_Länge"
>I // Indaten-DB ist zu kurz
JC Err4 // Undefinierte Indaten
W401: L NoneD [AR2,] // Kennung, Adresse
T InDaten_Pointer
LAR2
L DBInDaten // Indaten-DB
L 0 // Angegeben ?
==I // Nein
JC W402
OPN DB[DBInDaten]
W402: L NoneW [AR2,] // Indaten überprüfen
T Daten_1 // 1.Indaten speichern
L NoneD [AR2,] // Suchdaten überprüfen
T Daten_2 // 1.Suchdaten speichern
L Stammdaten
L400: T Schleife
L DBInDaten // Indaten-DB
L 0 // Angegeben ?
==I // Nein
JC W403
OPN DB[DBInDaten]
W403: L NoneW [AR2,] // Indaten überprüfen
L 0 // Etwas angegeben ?
<>I // Ja !
JC Nw05 // Weiter
ADDAR2 P#2.0
L Schleife
LOOP L400
JU Err4 // Undefinierte Indaten
--- NW 5: Indiziert speichern ? ---
Nw05: SET
R Indok // Indizierung möglich
R IndZeiger_ok // Indizier-Zeiger angegeben
L IndDB // Indizierter DB
L 0 // Angegeben ?
==I // Nein !
O Sortliste // Sortliste wird durchsucht
JC Nw06
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT
JC Nw06 // kein Indizier-DB vorhanden
L IndDB_Laenge // Länge des Indizierten DB überschritten ?
L 2 // DB byteorientiert
*I
L "DB_Länge"
>I // Indizier-DB ist zu kurz
JC Nw06 // Zeiger ausserhalb Ind.DB
L Stammdaten // Stammdaten
L 3 // zu viele Stammdaten ?
>=I // Ja !
JC Nw06 // ohne Indizierung weiter
L IndDaten_FC // Offset zum Abziehen
T Wandel_FC
L 0 // Parameter vorhanden ?
<=I // Nein
JC NoFC // Bei diesem Schritt weiter
L Daten_1 // Stammdaten (1.DW)
T "MW90" // übergeben
L Daten_2 // Stammdaten (2.DW)
T "MD94" // übergeben
UC DB[Wandel_FC] // Beeinflussung der Weiterfahrt
L "MW92" // Rückwert von FC
JU Ret
NoFC: L Daten_1 // Stammdaten
Ret: T IndPointer // Stelle, wo Zeiger hinterlegt ist
L 0
<I // negativ
JC Nw06 // Zeiger = 0
L IndDB_Laenge // Länge des Indizierten DB überschritten ?
L IndPointer // Stelle, wo Zeiger hinterlegt ist
<=I // Ja !
JC Nw06 // Zeiger ausserhalb Ind.DB
L 2
*I // DB byteorientiert
SLD 3 // Pointer erzeugen
T IndPointer // Pointer, wo Zeiger hinterlegt ist
OPN DB[IndDB] // Indizierter DB
L DBW [IndPointer]
T Schreibzeiger // Schreibzeiger
OPN DB[DBDatenliste] // Datenliste DB
SET
S Indok // Indizierung möglich
S IndZeiger_ok // Indizier-Zeiger angegeben
--- NW 6: Kontrolle auf gleiche Stammdaten ---
Nw06: L 0 // nicht gespeichert
T LeerZeiger // Zeiger Leerzelle
L Schreibzeiger // Schreibzeiger
L 0 // Angegeben ?
==I // Nein !
JC W600 // Suche bei 1.Datensatz beginnen
L Schreibzeiger // Schreibzeiger
+ -20 // Zeiger 1.Daten
L Datenblock_inBytes // Datenblocklänge in Bytes
/I // Ermittlung der wievielten Daten -1
SRD 16 // Rest ermitteln
L 0 // = 0 ?
<>I // Schreibzeiger nicht im Raster !
JC W600 // Suche bei 1.Datensatz beginnen
L 0 // Bei angegebener Stelle suchen
T Suchstelle // Such bei X-ten Datensatz
JU W601
W600: L 1 // Suche bei 1.Datensatz beginnen
T Suchstelle // Such bei X-ten Datensatz
SET
R IndZeiger_ok // Indizier-Zeiger angegeben
L SSDW
+ 20 // Offset für 1.Daten
T Schreibzeiger // Schreibzeiger
W601: L Schreibzeiger // Schreibzeiger
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L InDaten_Pointer
LAR2
L Stammdaten // Anzahl der Stammdaten
L600: T Schleife
L DBInDaten // Indaten-DB
L 0 // Angegeben ?
==I // Nein
JC W602
OPN DB[DBInDaten]
W602: L NoneW [AR2,] // Indaten überprüfen mit
OPN DB[DBDatenliste]
L DBW [AR1Zeiger] // Datenliste-Daten lesen
<>I // nicht identisch !
JC W603
L AR1Zeiger
SRD 3
L DINT#2
+D
SLD 3
T AR1Zeiger
ADDAR2 P#2.0
L Schleife
LOOP L600
L 2#0000_0000_1100_0000 // Daten werden gespeichert + überschrieben
T tRE_VAL // Ok-Status
JU Nw07 // Datensatz ist in Liste enthalten
W603: L 0 // Suche bei 1.Datensatz begonnen
L Suchstelle // Such bei X-ten Datensatz
==I // Nein !
JC W600
L LeerZeiger // Zeiger Leerzelle
L 0 // Gespeichert ?
<>I // Ja !
JC W604
L Schreibzeiger // Schreibzeiger
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L Datensatzlaenge
L601: T Schleife
L DBW [AR1Zeiger] // Daten lesen
L 0 // Leerzelle ?
<>I // Nein !
JC W604
L AR1Zeiger
SRD 3
L DINT#2
+D
SLD 3
T AR1Zeiger
L Schleife
LOOP L601
L Schreibzeiger // Schreibzeiger
T LeerZeiger // Zeiger Leerzelle
W604: L Suchstelle // Such bei X-ten Datensatz
+ 1
T Suchstelle // Such bei X-ten Datensatz
L Listenlaenge // Anzahl aller Daten in Datenliste
<=I // Alle Datensätze sind durchsucht
JC W605 // Nein !
L 0 // Gefunden ?
L LeerZeiger // Zeiger Leerzelle
==I // Nein !
JC Err2 // Datenliste ist voll
T Schreibzeiger // Schreibzeiger
L 2#0000_0000_1000_0000 // Daten werden gespeichert
T tRE_VAL // Ok-Status
JU Nw07
W605: L Datenblock_inBytes // Datenblocklänge in bytes
L Schreibzeiger // Schreibzeiger
+I
T Schreibzeiger // Schreibzeiger
JU W601
--- NW 7: Quelle-Pointer erzeugen: ---
Nw07: L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Datensatzlaenge // Datenwords speichern
T LW2
T LW12 // Wiederholungen
// DATEN-Pointer übernehmen:
L DBInDaten
T LW4 // DB_Nummer
L InDaten_Pointer
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
// Kennung + Datenbytes s.o.
L SSDB
T LW14 // DB_Nummer
L Schreibzeiger // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD16 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
A Sortliste // Sortliste wird durchsucht
JC Nw8
L SSDW
+ 12
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L Schreibzeiger // Schreibzeiger
OPN DB[DBDatenliste]
T DBW [AR1Zeiger] // Speicherung letzter Zugriff
L tRE_VAL // Ok-Status
L 2#0000_0000_1100_0000 // Daten werden gespeichert + überschrieben ?
==I // Ja !
O Indok // Indizierung möglich ((Dann nicht!)
JC Nw8 // Kein Neueintrag !
L SSDW
+ 16 // Offset Anzahl Einträge
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L DBW [AR1Zeiger] // Anzahl der Einträge
+ 1 // Einträge +1
T DBW [AR1Zeiger] // Anzahl der Einträge
--- NW 8: Indizierung ok ? ---
Nw8: AN Indok // Indizierung möglich
O IndZeiger_ok // Indizier-Zeiger angegeben
JC Ende
OPN DB[IndDB] // Indizierter DB
L Schreibzeiger // Schreibzeiger
T DBW [IndPointer]
OPN DB[DBDatenliste] // Datenliste DB
--- NW 9: Fehlerausgabe / RET_VAL ---
Ende: SET // VKE = 1 ohne Fehler !!!
L tRE_VAL // Ok-Status
JU Ok
Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich
JU Err
Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler
JU Err
Err2: L 2#0000_0000_0000_0100 // Datenliste ist voll
JU Err
Err4: L 2#0000_0000_0001_0000 // Undefinierte Indaten
Err: CLR // VKE = 0 bei Fehler !!!
Ok: T tRE_VAL
SAVE // VKE in BIE-Bit speichern
L AR2_Speicher // AR2 zurückspeichern
LAR2
--- NW 10: Ausgangsvariablen schreiben ---
L tRE_VAL
T RE_VAL
@@ -0,0 +1,488 @@
=== FC 88: DatenInSort [STL] ===
INTERFACE:
Input:
SSDB : Int // Datenlisten-DB
SSDW : Int // Datenlisten-1.DW
INDATEN : Pointer // InDaten-Schnittstelle
Output:
RE_VAL : Byte // Rückmeldung
InOut:
Temp:
Quelle : Any // Zeiger, wo Rein-Daten sind
Ziel : Any // Zeiger, FIFO-Stelle
Kopf : Byte // Datenliste-Kennnung (DA)
Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128
Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze)
Stammdaten : Int // Stammdatenlänge in Word (1 - 9)
Belegt06 : Int // reserviert von Datenliste
Belegt08 : Int // reserviert von Datenliste
Belegt10 : Int // reserviert von Datenliste
Belegt12 : Int // reserviert von Datenliste
AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
DBDatenliste : Word // Datenlisten-DB
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
Datenlisten_Ende : Word // Ende der Datenliste
AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern
Schleife : Word // Loopzähler
DBInDaten : Word // Indaten-DB, falls angegeben
InDaten_Pointer : DWord // In-Daten-Pointer: Kennung, Adresse
InDaten_Startpunkt : Word // In-Daten-Startpunkt: Adresse
Sort_Daten : DInt // Einzusortierende Daten (DWord)
Datenblock_inBytes : Word // Datenblocklänge in Bytes
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
Lesestelle : Int // An dieser Stelle Datensatz lesen
Min_Lesestelle : Int // Minimal sinnvolle Lesestelle
Max_Lesestelle : Int // Maximal sinnvolle Lesestelle
Savestelle : Int // An dieser Stelle wird In-Datensatz gespeichert
Lese_Daten : DInt // In Tabelle gelesenen Daten
Holstelle : Int // Freiraum schaffen: Stelle zum Daten holen
Bringstelle : Int // Freiraum schaffen: Stelle zum Daten schreiben
Holzeiger : DWord // Freiraum schaffen: Zeiger zum Daten holen
Bringzeiger : DWord // Freiraum schaffen: Zeiger zum Daten schreiben
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
Constant:
Return:
Ret_Val : Void
--- NW 1: Schnittstellen-DB sinnvoll ? ---
TAR2
T AR2_Speicher // AR2 zwischenspeichern
L SSDB
T DBDatenliste
// CALL TEST_DB
// DB_NUMBER :=#DBDatenliste
// RET_VAL :=#SFC_RET_VAL
// DB_LENGTH :=#SFC_DB_LENGTH
// WRITE_PROT :=#SFC_WRITE_PROT
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT
JC Err0 // kein Datenlisten-Bereich
--- NW 2: Quelle-Pointer erzeugen: ---
L 16#1004 // Kennung 10 + Word=04
T LW0 // Any-Kennung, Datentyp
L 16#000A // 10 Dw´s holen
T LW2 // Wiederholungen
L SSDB
T LW4 // DB_Nummer
L SSDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
--- NW 3: Zeigerüberprüfung ---
L Kopf // Datenliste-Kopf
L 16#DB // = Datenlistekennung ?
<>I // Nein !
JC Err0 // kein Datenlistebereich
L 1
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L 128
>I
JC Err0 // kein Datenlistebereich
L 1
L Listenlaenge // Max.Anzahl von Datenblöcken
>I
JC Err0 // kein Datenlistebereich
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err0 // kein Datenlistebereich
L 9
>I
JC Err0 // kein Datenlistebereich
L Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I
L 2 // DB byteorientiert
*I
+ 20 // Speichern ab 10.DW
L SSDW
+I
T Datenlisten_Ende
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L Datenlisten_Ende
L SFC_DB_LENGTH
>I // Datenlisten-DB ist zu kurz!
JC Err0 // kein Datenlisten-Bereich
L DBW [AR1Zeiger]
L 16#DBEE // Datenliste-Endekennung ?
<>I // Nein !
JC Err0 // kein Datenlisten-Bereich
L Datensatzlaenge // Datenblocklänge
L 2
*I
T Datenblock_inBytes // Datenblocklänge in Bytes
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
L Listenlaenge // Max.Anzahl von Datenblöcken
>=I // Nein !
JC Err2 // Datenliste ist voll
--- NW 4: Indaten definiert ? ---
// In-DATEN-Pointer übernehmen:
L P#
LAR2
L NoneW [AR2,]
T DBInDaten // Indaten-DB
L DBInDaten // Indaten-DB
L 0 // Angegeben ?
==I // Nein
JC W401
// CALL TEST_DB
// DB_NUMBER :=#DBInDaten
// RET_VAL :=#SFC_RET_VAL
// DB_LENGTH :=#SFC_DB_LENGTH
// WRITE_PROT :=#SFC_WRITE_PROT
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBInDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
L SFC_RET_VAL
L 2#0000_0000_0000_0000 // Fehler vorhanden ?
<>I // Ja !
JC Err4 // Undefinierte Indaten
L NoneD [AR2,] // Kennung, Adresse
L 16#00FF_FFFF // Ohne Kennung
AW
SRW 3 // Ohne Bit
T InDaten_Startpunkt
L Datensatzlaenge // Datenblocklänge
L 2 // DB byteorientiert
*I
L InDaten_Startpunkt
+I
L SFC_DB_LENGTH
>I // Indaten-DB ist zu kurz
JC Err4 // Undefinierte Indaten
W401: L NoneD [AR2,] // Kennung, Adresse
T InDaten_Pointer
LAR2
L DBInDaten // Indaten-DB
L 0 // Angegeben ?
==I // Nein
JC W402
OPN DB[DBInDaten]
W402: L NoneD [AR2,] // Indaten überprüfen
T Sort_Daten // 1.Indaten speichern
L Stammdaten
L400: T Schleife
L DBInDaten // Indaten-DB
L 0 // Angegeben ?
==I // Nein
JC W403
OPN DB[DBInDaten]
W403: L NoneW [AR2,] // Indaten überprüfen
L 0 // Etwas angegeben ?
<>I // Ja !
JC Nw05 // Weiter
ADDAR2 P#2.0
L Schleife
LOOP L400
JU Err4 // Undefinierte Indaten
Nw05: NOP 0
--- NW 5: Minimale + maximale Lesestelle am Anfang ---
L 1
T Min_Lesestelle // Minimal sinnvolle Lesestelle
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
T Max_Lesestelle // Maximal sinnvolle Lesestelle
// Sonderfall: noch kein Eintrag:
L 0 // Eintrag schon vorhanden ?
>I // Ja !
JC en05
L 1 // An 1.Stelle speichern
T Savestelle // Adresse
JU Save
en05: NOP 0
--- NW 6: Aktuelle Lesestelle errechnen ---
New: L Max_Lesestelle // Maximal sinnvolle Lesestelle
+ 1
L Min_Lesestelle // Minimal sinnvolle Lesestelle
-I
L 2
/I
L Min_Lesestelle // Minimal sinnvolle Lesestelle
+I
T Lesestelle // An dieser Stelle Datensatz lesen
--- NW 7: Daten an Lesestelle auslesen ---
L Lesestelle // An dieser Stelle Datensatz lesen
+ -1
L Datenblock_inBytes // Datenblocklänge in Bytes
*I
L SSDW
+I
+ 20 // Offset für 1.Daten
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L DBD [AR1Zeiger] // Datenliste-Daten lesen
T Lese_Daten // In Tabelle gelesenen Daten
L 0 // Nichts gespeicher oder negativ ?
<=D // Ja !
JC Err5
--- NW 8: Suche fertig ? ---
L Max_Lesestelle // Maximal sinnvolle Lesestelle
L Min_Lesestelle // Minimal sinnvolle Lesestelle
-I
L 0 // Suche fertig ?
<I // Ja !
JC ok
--- NW 9: Gelesene Daten auswerten ---
L Sort_Daten // Einzusortierende Daten
L Lese_Daten // In Tabelle gelesenen Daten
>D // Sort > Tabelle
JC MinP
L Sort_Daten // Einzusortierende Daten
>D // Tabelle > Sort
JC MaxM
L Lesestelle // An dieser Stelle Datensatz lesen
T Savestelle // An dieser Stelle wird In-Datensatz gespeichert
JC Frei // Freiplatz schaffen
MinP: L Lesestelle // An dieser Stelle Datensatz lesen
+ 1
T Min_Lesestelle // Minimal sinnvolle Lesestelle
L Max_Lesestelle // Maximal sinnvolle Lesestelle
>I // Suche ist fertig
JC ok
JU New
MaxM: L Lesestelle // An dieser Stelle Datensatz lesen
+ -1
T Max_Lesestelle // Maximal sinnvolle Lesestelle
L Min_Lesestelle // Minimal sinnvolle Lesestelle
<I // Suche ist fertig
JC ok
JU New
--- NW 10: Speicherstelle ermitteln ---
ok: L Sort_Daten // Einzusortierende Daten
L Lese_Daten // In Tabelle gelesenen Daten
>D // Sort > Tabelle
JC Plus
L Lesestelle // An dieser Stelle Datensatz lesen
T Savestelle // An dieser Stelle wird In-Datensatz gespeichert
JU Frei // Freiplatz schaffen
Plus: L Lesestelle // An dieser Stelle Datensatz lesen
+ 1
T Savestelle // An dieser Stelle wird In-Datensatz gespeichert
--- NW 11: Freiraum für Speicherung schaffen ---
Frei: L Savestelle // An dieser Stelle wird In-Datensatz gespeichert
T "MW240"
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
>I // Eintrag ans Ende !
JC Save
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
L Datenblock_inBytes // Datenblocklänge in Bytes
*I
L SSDW
+I
+ 20 // Offset für 1.Daten
+ -2 // Letzte Daten letzter Eintrag
T Holstelle // Freiraum schaffen: Stelle zum Daten holen
L Holstelle // Freiraum schaffen: Stelle zum Daten holen
L Datenblock_inBytes // Datenblocklänge in Bytes
+I
T Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
L Savestelle // An dieser Stelle wird In-Datensatz gespeichert
-I
+ 1
L Datenblock_inBytes // Datenblocklänge in Bytes
*I
L 2 // da DW-Zugriff (2Byte)
/I
L110: T Schleife
L Holstelle // Freiraum schaffen: Stelle zum Daten holen
ITD
SLD 3
T Holzeiger // Freiraum schaffen: Zeiger zum Daten holen
L Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben
ITD
SLD 3
T Bringzeiger // Freiraum schaffen: Zeiger zum Daten schreiben
OPN DB[DBDatenliste]
L DBW [Holzeiger] // Datenliste-Daten lesen
T DBW [Bringzeiger] // Datenliste-Daten verschieben
L Holstelle
+ -2 // 2 Byte wegen DW-Zugriff
T Holstelle // Freiraum schaffen: Stelle zum Daten holen
L Bringstelle
+ -2 // 2 Byte wegen DW-Zugriff
T Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben
L Schleife
LOOP L110
--- NW 12: Daten in Datenliste schreiben ---
// Quelle-Pointer erzeugen:
Save: L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Datensatzlaenge // Datenwords speichern
T LW2
T LW12 // Wiederholungen
// DATEN-Pointer übernehmen:
L DBInDaten
T LW4 // DB_Nummer
L InDaten_Pointer
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
// Kennung + Datenbytes s.o.
L SSDB
T LW14 // DB_Nummer
L Savestelle // Adresse
+ -1
L Datenblock_inBytes // Datenblocklänge in Bytes
*I
L SSDW
+I
+ 20 // Offset für 1.Daten
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD16 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
L SSDW
+ 14 // Anzahl der Einträge
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L DBW [AR1Zeiger] // Anzahl der Einträge
+ 1 // Einträge +1
T DBW [AR1Zeiger] // Anzahl der Einträge
--- NW 13: Fehlerausgabe / RET_VAL ---
SET // VKE = 1 ohne Fehler !!!
L 2#0000_0000_1000_0000 // Daten wurden gespeichert
JU Ok_Mig
Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich
JU Err
Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler
JU Err
Err2: L 2#0000_0000_0000_0100 // Datenliste ist voll
JU Err
Err4: L 2#0000_0000_0001_0000 // Undefinierte Indaten
JU Err
Err5: L 2#0000_0000_0010_0000 // Gespeicherte Daten <= 0 (Inhalt ungültig)
Err: CLR // VKE = 0 bei Fehler !!!
Ok_Mig: T RE_VAL
SAVE // VKE in BIE-Bit speichern
L AR2_Speicher // AR2 zurückspeichern
LAR2
@@ -0,0 +1,894 @@
=== FC 86: DatenOut [STL] ===
INTERFACE:
Input:
SSDB : Int // Datenlisten-DB
SSDW : Int // Datenlisten-1.DW
PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten)
SEARCHDATEN : Pointer // Such-Daten-Schnittstelle
Output:
RE_VAL : Byte // Rückmeldung
OUTDATEN : Pointer // OutDaten-Schnittstelle
Position : Int // Daten stehen an angegebener Position in Datenbank
InOut:
Temp:
Quelle : Any // Zeiger, wo Rein-Daten sind
Ziel : Any // Zeiger, FIFO-Stelle
Kopf : Byte // Datenliste-Kennnung (DA)
Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128
Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze)
Stammdaten : Int // Stammdatenlänge in Word (1 - 9)
IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!)
IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger
Belegt14 : Int // reserviert von Sort-Datenliste
AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!)
Reserve18 : Int // Reserve
Para1 : Byte // 1.Aufrufparameter
Para2 : Byte // 2.Aufrufparameter
DBDatenliste : Word // Datenlisten-DB
OffsetDaten_1 : Int // Stammdaten beginnen ab hier
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
Datenlisten_Ende : Int // Ende der Datenliste
AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern
Schleife : Word // Loopzähler
DBSuchDaten : Word // Such-Daten-DB, falls angegeben
SuchDaten_Pointer : DWord // Such-Daten-Pointer: Kennung, Adresse
SuchDaten_Startpunkt : Word // Such-Daten-Startpunkt: Adresse
DBOutDaten : Word // Out-Daten-DB, falls angegeben
OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse
OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse
IndPointer : DWord // Zeiger für IndDB
Daten_1 : Word // 1.Datenwort der Indaten
Daten_2 : DWord // 1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2)
Datenblock_inBytes : Word // Datenblocklänge in Bytes
Suchstelle : Word // Bei angegebenen Datensatz suchen
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
Indok : Bool // Indizierung möglich
IndZeiger_ok : Bool // Indizier-Zeiger angegeben
Weitersuchen : Bool // Weitersuchen ist aktiv
Offsetsuchen : Bool // Offsetsuchen ist aktiv
Sortliste : Bool // Sortliste wird durchsucht
WandelFC : Bool // Wnadel-FC für ind.Suchen vorhanden
tRE_VAL : Byte // Rückmeldung
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
DB_Länge : Int
NichtCopy : Int // Datenmenge, die nicht vorschoben wird
LoeschPos : Word // Lösch-Position
Wandel_FC : Word // Wandel-FC
Constant:
Return:
Ret_Val : Void
--- NW 1: Schnittstellen-DB sinnvoll ? ---
TAR2
T AR2_Speicher // AR2 zwischenspeichern
L SSDB
T DBDatenliste
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT // schreibgeschützt
JC Err0 // kein Datenlisten-Bereich
--- NW 2: Quelle-Pointer erzeugen: ---
L 16#1004 // Kennung 10 + Word=04
T LW0 // Any-Kennung, Datentyp
L 16#000A // 10 Dw´s holen
T LW2 // Wiederholungen
L SSDB
T LW4 // DB_Nummer
L SSDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
--- NW 3: Zeigerüberprüfung ---
L Kopf // Datenliste-Kopf
L 16#DB // = Sort-Datenlistekennung ?
==I // Ja !
= Sortliste // Sortliste wird durchsucht
JC w030
CAC
L 16#DA // = Datenlistekennung ?
<>I // Nein !
JC Err0 // kein Datenlistebereich
w030: L 1
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L 128
>I
JC Err0 // kein Datenlistebereich
L 1
L Listenlaenge // Max.Anzahl von Datenblöcken
>I
JC Err0 // kein Datenlistebereich
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err0 // kein Datenlistebereich
L 9
>I
JC Err0 // kein Datenlistebereich
L Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I
L 2 // DB byteorientiert
*I
+ 20 // Speichern ab 10.DW
L SSDW
+I
T Datenlisten_Ende
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L Datenlisten_Ende
L "DB_Länge"
>I // Datenlisten-DB ist zu kurz!
JC Err0 // kein Datenlisten-Bereich
L DBW [AR1Zeiger]
L 16#DAEE // Datenliste-Endekennung ?
<>I // Nein !
A(
CAC
L 16#DBEE // Sort-Datenliste-Endekennung ?
<>I // Nein !
)
JC Err0 // kein Datenlisten-Bereich
L Datensatzlaenge // Datenblocklänge
L 2
*I
T Datenblock_inBytes // Datenblocklänge in Bytes
--- NW 4: Auftrag kontrollieren ---
SET
R Indok // Indizierung möglich
R IndZeiger_ok // Indizier-Zeiger angegeben
R Weitersuchen // Weitersuchen ist aktiv
R Offsetsuchen // Offsetsuchen ist aktiv
L 0 // Vorerst kein Offset
T OffsetDaten_1
L PARA
T LW40 // Aufrufparameter zwischenspeichern
L 16#00 // XX = 00 ?
L Para1
==I // Ja!
JC W401
L 16#E1 // XX = E1 ?
==I // Ja!
A Sortliste // Sortliste wird durchsucht
JC Err3 // Falscher Aufrufparameter (austragen nicht erlaubt !)
CAC
L 16#E1 // XX = E1 ?
==I // Ja!
JC W401
L 16#F1 // XX = F1 ?
L Para1
<>I // Nein !
JC W400
L Para2
L 16#00
<>I
O Sortliste // Sortliste wird durchsucht
JC Err3 // Falscher Aufrufparameter
SET
S Weitersuchen
L SSDW
+ 20
T Suchzeiger
JU Nw08 // OutDaten ok ?
W400: L 16#FF // XX = FF ?
<>I // Nein !
JC W403
L Para2
L 16#00
<>I
O Sortliste // Sortliste wird durchsucht
JC Err3 // Falscher Aufrufparameter
SET
S Weitersuchen
L Suchzeiger // Alter Suchzeiger
L Datenblock_inBytes // Datenblocklänge in bytes
+I // Nächsten Datensatz suchen
T Suchzeiger // Neuer Suchzeiger
L Datenblock_inBytes // Datenblocklänge in bytes
L Listenlaenge // Alle möglichen Einträge
*I // Gesamtlänge
L SSDW // Startpunkt
+I
+ 20 // Offset 1.Daten
L Suchzeiger // Schreibzeiger
>I // Noch nicht am Ende !
JC Nw08 // OutDaten ok ?
JU Err2 // Listenende erreicht
W403: L 16#02 // XX < 02 ?
L Para1
>I // Ja!
JC Err3 // Falscher Aufrufparameter
L 16#80 // XX > 80 ?
>I // Ja!
JC Err3 // Falscher Aufrufparameter
CAC
L Datensatzlaenge // XX > Datensatzlänge
>I // Ja!
JC Err3 // Falscher Aufrufparameter
CAC
+ -1 // Angegebener Offset -1
L 2 // DB byteorientiert
*I
T OffsetDaten_1 // Richtiger Offset der 1.Stammdaten
L 0
T Suchzeiger // Suche ab Anfang
SET
S Offsetsuchen
W401: L 16#00 // =0 ?
L Para2 // 2.Aufrufparameter
==I // Ja !
JC W402
T Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err3 // Falscher Aufrufparameter
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err3 // Falscher Aufrufparameter
L 9
>I
JC Err3 // Falscher Aufrufparameter
W402: AN Offsetsuchen
JC Nw05
L Para1 // Offset
+ -1
L Stammdaten
+I // Letzte Stammdaten zu groß ?
L Datensatzlaenge
>I // Ja!
JC Err3 // Falscher Aufrufparameter
--- NW 5: Such-DATEN-Pointer übernehmen: ---
Nw05: L 0
T Suchzeiger // Suchzeiger
L P#
LAR2
L NoneW [AR2,]
T DBSuchDaten // Suchdaten-DB
L NoneD [AR2,] // Kennung, Adresse
T SuchDaten_Pointer
L DBSuchDaten // Suchdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W501
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBSuchDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000 // Fehler vorhanden ?
<>I // Ja !
JC Err4 // Undefinierte Stammdaten
L NoneD [AR2,] // Kennung, Adresse
L 16#00FF_FFFF // Ohne Kennung
AW
SRW 3 // Ohne Bit
T SuchDaten_Startpunkt
L Datensatzlaenge // Datenblocklänge
L 2 // DB byteorientiert
*I
L SuchDaten_Startpunkt
+I
L "DB_Länge"
>I // Suchdaten-DB ist zu kurz
JC Err4 // Undefinierte Stammdaten
W501: L SuchDaten_Pointer
LAR2
L DBSuchDaten // Suchdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W502
OPN DB[DBSuchDaten]
W502: L NoneW [AR2,] // Suchdaten überprüfen
T Daten_1 // 1.Suchdaten speichern
L NoneD [AR2,] // Suchdaten überprüfen
T Daten_2 // 1.Suchdaten speichern
L Stammdaten
L500: T Schleife
L DBSuchDaten // Suchdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W503
OPN DB[DBSuchDaten]
W503: L NoneW [AR2,] // Suchdaten überprüfen
L 0 // Etwas angegeben ?
<>I // Ja !
JC Nw06 // Weiter
ADDAR2 P#2.0
L Schleife
LOOP L500
JU Err4 // Undefinierte Stammdaten
--- NW 6: Indiziert suchen ? ---
Nw06: L IndDB // Indizierter DB
L 0 // =0 ?
==I // Kein indizierter DB !
O Offsetsuchen
O Sortliste // Sortliste wird durchsucht
JC Nw07
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT
JC Nw07 // kein Indizier-DB vorhanden
L IndDB_Laenge // Länge des Indizierten DB überschritten ?
L DINT#2 // DB byteorientiert
*D
L "DB_Länge"
>I // Indizier-DB ist zu kurz
JC Nw07 // Zeiger ausserhalb Ind.DB
L Stammdaten // Stammdaten
L 3 // zu viele Stammdaten ?
>=I // Ja !
JC Nw07 // ohne Indizierung weiter
L IndDaten_FC // Offset zum Abziehen
T Wandel_FC
L 0 // Parameter vorhanden ?
<=I // Nein
JC NoFC // Bei diesem Schritt weiter
L Daten_1 // Stammdaten (1.DW)
T "MW90" // übergeben
L Daten_2 // Stammdaten (2.DW)
T "MD94" // übergeben
UC DB[Wandel_FC] // Beeinflussung der Weiterfahrt
L "MW92" // Rückwert von FC
JU Ret
NoFC: L Daten_1 // Stammdaten
Ret: T IndPointer // Stelle, wo Zeiger hinterlegt ist
L 0
<I // negativ
JC Nw07 // Zeiger = 0
L IndDB_Laenge // Länge des Indizierten DB überschritten ?
L IndPointer // Stelle, wo Zeiger hinterlegt ist
<=I // Ja !
JC Nw07 // Zeiger ausserhalb Ind.DB
L 2
*I // DB byteorientiert
ITD
SLD 3 // Pointer erzeugen
T IndPointer // Pointer, wo Zeiger hinterlegt ist
OPN DB[IndDB] // Indizierter DB
L DBW [IndPointer]
T Suchzeiger // Suchzeiger
OPN DB[DBDatenliste] // Datenliste DB
SET
S Indok // Indizierung möglich
S IndZeiger_ok // Indizier-Zeiger angegeben
--- NW 7: Kontrolle auf gleiche Stammdaten ---
Nw07: L Suchzeiger // Suchzeiger
L 0 // Angegeben ?
==I // Nein !
JC W700 // Suche bei 1.Datensatz beginnen
L Suchzeiger // Suchzeiger
+ -20 // Zeiger 1.Daten
L Datenblock_inBytes // Datenblocklänge in Bytes
/I // Ermittlung der wievielten Daten -1
SRD 16 // Rest ermitteln
L 0 // = 0 ?
<>I // Suchzeiger nicht im Raster !
JC W700 // Suche bei 1.Datensatz beginnen
L 0 // Bei angegebener Stelle suchen
T Suchstelle // Such bei X-ten Datensatz
JU W701
W700: L 1 // Suche bei 1.Datensatz beginnen
T Suchstelle // Such bei X-ten Datensatz
SET
R IndZeiger_ok // Indizier-Zeiger angegeben
L SSDW
+ 20 // Offset für 1.Daten
T Suchzeiger // Suchzeiger
W701: L Suchzeiger // Suchzeiger
L OffsetDaten_1 // Richtiger Offset der 1.Stammdaten
+I
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L SuchDaten_Pointer
LAR2
L Stammdaten // Anzahl der Stammdaten
L700: T Schleife
L DBSuchDaten // Suchdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W702
OPN DB[DBSuchDaten]
W702: L NoneW [AR2,] // Suchdaten überprüfen mit
OPN DB[DBDatenliste]
L DBW [AR1Zeiger] // Datenliste-Daten lesen
<>I // nicht identisch !
JC W703
L AR1Zeiger
SRD 3
L DINT#2
+D
SLD 3
T AR1Zeiger
ADDAR2 P#2.0
L Schleife
LOOP L700
L 2#0000_0000_1000_0000 // Daten sind vorhanden
T tRE_VAL // Ok-Status
JU Nw08 // Datensatz ist in Liste enthalten
W703: L 0 // Suche bei 1.Datensatz begonnen
L Suchstelle // Such bei X-ten Datensatz
==I // Nein !
JC W700
L Suchstelle // Such bei X-ten Datensatz
+ 1
T Suchstelle // Such bei X-ten Datensatz
L Listenlaenge // Anzahl aller Daten in Datenliste
<=I // Alle Datensätze sind durchsucht
JC W705 // Nein !
JU Err6 // Datensatz ist nicht vorhanden
W705: L Datenblock_inBytes // Datenblocklänge in bytes
L Suchzeiger // Suchzeiger
+I
T Suchzeiger // Suchzeiger
JU W701
--- NW 8: Out-DATEN-Pointer übernehmen: ---
Nw08: L P#
LAR2
L NoneW [AR2,]
T DBOutDaten // Outdaten-DB
L NoneD [AR2,] // Kennung, Adresse
T OutDaten_Pointer
L DBOutDaten // Outdaten-DB
L 0 // Angegeben ?
==I // Nein
JC Nw09
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000 // Fehler vorhanden ?
<>I // Ja !
JC Err5 // Undefinierte Outdaten
L NoneD [AR2,] // Kennung, Adresse
L 16#00FF_FFFF // Ohne Kennung
AW
SRW 3 // Ohne Bit
T OutDaten_Startpunkt
L OutDaten_Startpunkt
L "DB_Länge"
>I // Outdaten-DB ist zu kurz
JC Err5 // Undefinierte Outdaten
--- NW 9: Quelle-Pointer erzeugen: ---
Nw09: L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Datensatzlaenge // Datenwords speichern
T LW2
T LW12 // Wiederholungen
// DATEN-Pointer übernehmen:
L SSDB
T LW4 // DB_Nummer
L Suchzeiger // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
// Kennung + Datenbytes s.o.
L DBOutDaten
T LW14 // DB_Nummer
L OutDaten_Pointer
T LD16 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
A SFC_WRITE_PROT // Datenliste kann nicht beschrieben werden
JC Nw10
L SSDW
+ 12 // Offset letzter Zugriff
ITD
SLD 3 // Pointer erzeugen
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L Suchzeiger // Suchzeiger
OPN DB[DBDatenliste]
T DBW [AR1Zeiger] // Speicherung letzter Zugriff
L Suchstelle // Such bei X-ten Datensatz
T Position // Übergabe nach außen
--- NW 10: Daten aus Datenliste löschen ? (nicht indiziert!) ---
Nw10: L 16#E1 // Daten löschen ?
L Para1 // 1.Aufrufparameter
<>I // Nein !
O SFC_WRITE_PROT // Datenliste kann nicht beschrieben werden
JC Nw11
A Indok // Indizierung möglich
JC X010 // Bei ind.Zugriff nur löschen, nicht verschieben, keine Anzahl!
// Gemeinsame Daten für Pointer erzeugen:
L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Suchzeiger // Stelle, wo gelöscht werden soll
+ -20
L SSDW
-I
L Datenblock_inBytes // Datenblocklänge in bytes
/I
+ 1 // Stelle, die gelöscht werden soll
T LoeschPos // Lösch-Position
L Listenlaenge // Länge der Datenliste (Letzter Eintrag zum Löschen ?)
==I // Ja !
JC Last // Ohne Verschieben letzten Eintrag löschen
L LoeschPos // Lösch-Position
L Datensatzlaenge // Datenblocklänge
*I // Gesamtdatenlänge in Words
T NichtCopy // Datenmenge, die nicht vorschoben wird
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I // Gesamtdatenlänge in Words
L NichtCopy // Datenmenge, die nicht vorschoben wird
-I // abziehen
T LW2
T LW12 // Wiederholungen
L SSDB
T LW4
T LW14 // DB_Nummer
// Quelle-Pointer erzeugen:
L Suchzeiger // Stelle, wo gelöscht werden soll
L Datenblock_inBytes // Datenblocklänge in Bytes
+I
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
L Suchzeiger // Stelle, wo gelöscht werden soll
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD16 // Kennung, Adresse
// Daten verschieben:
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
// Letzte Daten löschen:
Last: L Datenlisten_Ende // Ende des Datenbereichs
L Datenblock_inBytes // Datenblocklänge in Bytes
-I // Ab hier löschen !
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L Datensatzlaenge // Datensatzlänge
L080: T Schleife
OPN DB[DBDatenliste]
L 0 // Daten löschen
T DBW [AR1Zeiger]
L AR1Zeiger
SRD 3
L 2 // nächstes DW
+D
SLD 3
T AR1Zeiger
L Schleife
LOOP L080
// Speicherung letzter Zugriff:
L SSDW
+ 12 // Offset letzter Zugriff
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L 0 // löschen
T DBW [AR1Zeiger] // Speicherung letzter Zugriff
T Suchzeiger // Suchzeiger
SET
R IndZeiger_ok // Indizier-Zeiger angegeben
// Anzahl Einträge:
L SSDW
+ 16 // Offset Anzahl Einträge
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L DBW [AR1Zeiger] // Anzahl der Einträge
+ -1 // -1
T DBW [AR1Zeiger] // Anzahl der Einträge
L 0
>=I
JC w080
T DBW [AR1Zeiger] // Minimum übergeben
w080: JU Nw11
--- NW 11: Daten aus Datenliste löschen ? (indiziert) ---
X010: L 16#E1 // Daten löschen ?
L Para1 // 1.Aufrufparameter
<>I // Nein !
JC Nw11
L Suchzeiger // Suchzeiger
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L Datensatzlaenge
LA00: T Schleife
L 0
T DBW [AR1Zeiger]
L AR1Zeiger
SRD 3
L DINT#2
+D
SLD 3
T AR1Zeiger
L Schleife
LOOP LA00
L SSDW
+ 12
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L 0 // Löschen
T Suchzeiger // Suchzeiger
T DBW [AR1Zeiger]
SET
R IndZeiger_ok // Indizier-Zeiger angegeben
--- NW 12: Weitersuchen aktiv ? Datensatz vorhanden oder 0 ? ---
Nw11: AN Weitersuchen
JC Nw12
L OutDaten_Pointer
LAR2
L Datensatzlaenge
L110: T Schleife
L DBOutDaten // Outdaten-DB
L 0 // Angegeben ?
==I // Nein
JC W111
OPN DB[DBOutDaten]
W111: L NoneW [AR2,] // Outdaten überprüfen
L 0 // Etwas angegeben ?
<>I // Ja !
JC W112 // Ok
ADDAR2 P#2.0
L Schleife
LOOP L110
L 2#0000_0000_0100_0000 // Daten sind nicht vorhanden
T tRE_VAL // Ok-Status
JU Ende
W112: L 2#0000_0000_1000_0000 // Daten sind vorhanden
T tRE_VAL // Ok-Status
JU Ende
--- NW 13: Indizierung ok ? ---
Nw12: AN Indok // Indizierung möglich
O IndZeiger_ok // Indizier-Zeiger angegeben
JC Ende
OPN DB[IndDB] // Indizierter DB
L Suchzeiger // Suchzeiger
T DBW [IndPointer]
OPN DB[DBDatenliste] // Datenliste DB
--- NW 14: Fehlerausgabe / RET_VAL ---
Ende: SET // VKE = 1 ohne Fehler !!!
L tRE_VAL // Ok-Status
JU Ok
Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich
JU Err
Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler
JU Err
Err2: L 2#0000_0000_0000_0100 // Listenende ist erreicht
JU Err
Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf
JU Err
Err4: L 2#0000_0000_0001_0000 // Undefinierte Suchdaten
JU Err
Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten
JU Err
Err6: L 2#0000_0000_0100_0000 // Datensatz nicht vorhanden
Err: CLR // VKE = 0 bei Fehler !!!
Ok: T tRE_VAL
SAVE // VKE in BIE-Bit speichern
L AR2_Speicher // AR2 zurückspeichern
LAR2
--- NW 15: Ende ---
L tRE_VAL
T RE_VAL
@@ -0,0 +1,532 @@
=== FC 89: DatenOutSort [STL] ===
INTERFACE:
Input:
SSDB : Int // Datenlisten-DB
SSDW : Int // Datenlisten-1.DW
PARA : Word // Aufrufparameter (Auftrag , Offset/Anzahl Daten)
Output:
OUTDATEN : Pointer // OutDaten-Schnittstelle
RE_VAL : Byte // Rückmeldung
InOut:
Temp:
Quelle : Any // Zeiger, wo Rein-Daten sind
Ziel : Any // Zeiger, FIFO-Stelle
Kopf : Byte // Datenliste-Kennnung (DA)
Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128
Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze)
Stammdaten : Int // Stammdatenlänge in Word (1 - 9)
Belegt06 : Int // reserviert von Datenliste
Belegt08 : Int // reserviert von Datenliste
Belegt10 : Int // reserviert von Datenliste
Belegt12 : Int // reserviert von Datenliste
AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Para1 : Byte // 1.Aufrufparameter
Para2 : Byte // 2.Aufrufparameter
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
LeseStelle : Int // Stelle, wo gelesen werden soll
EraseStelle : Int // Stelle, wo gelöscht werden soll
FirstStelle : Int // Stelle, wo 1. zu bleibende Daten sind
DBDatenliste : Word // Datenlisten-DB
Datenlisten_Ende : Word // Ende der Datenliste
AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern
DBOutDaten : Word // Out-Daten-DB, falls angegeben
OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse
OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse
Datenblock_inBytes : Word // Datenblocklänge in Bytes
Suchstelle : Word // Bei angegebenen Datensatz suchen
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
NichtCopy : Int // Datenmenge, die nicht vorschoben wird
Schleife : Word // Loopzähler
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
Constant:
Return:
Ret_Val : Void
--- NW 1: Schnittstellen-DB sinnvoll ? ---
TAR2
T AR2_Speicher // AR2 zwischenspeichern
L SSDB
T DBDatenliste
// CALL TEST_DB
// DB_NUMBER :=#DBDatenliste
// RET_VAL :=#SFC_RET_VAL
// DB_LENGTH :=#SFC_DB_LENGTH
// WRITE_PROT :=#SFC_WRITE_PROT
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT // schreibgeschützt
JC Err0 // kein Datenlisten-Bereich
--- NW 2: Quelle-Pointer erzeugen: ---
L 16#1004 // Kennung 10 + Word=04
T LW0 // Any-Kennung, Datentyp
L 16#000A // 10 Dw´s holen
T LW2 // Wiederholungen
L SSDB
T LW4 // DB_Nummer
L SSDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
--- NW 3: Zeigerüberprüfung ---
L Kopf // Datenliste-Kopf
L 16#DB // = Datenlistekennung ?
<>I // Nein !
JC Err0 // kein Datenlistebereich
L 1
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L 128
>I
JC Err0 // kein Datenlistebereich
L 1
L Listenlaenge // Max.Anzahl von Datenblöcken
>I
JC Err0 // kein Datenlistebereich
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err0 // kein Datenlistebereich
L 9
>I
JC Err0 // kein Datenlistebereich
L Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I
L 2 // DB byteorientiert
*I
+ 20 // Speichern ab 10.DW
L SSDW
+I
T Datenlisten_Ende
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L Datenlisten_Ende
L SFC_DB_LENGTH
>I // Datenlisten-DB ist zu kurz!
JC Err0 // kein Datenlisten-Bereich
L DBW [AR1Zeiger]
L 16#DBEE // Datenliste-Endekennung ?
<>I // Nein !
JC Err0 // kein Datenlisten-Bereich
L Datensatzlaenge // Datenblocklänge
L 2
*I
T Datenblock_inBytes // Datenblocklänge in Bytes
--- NW 4: Auftrag kontrollieren ---
L PARA
T LW40 // Aufrufparameter zwischenspeichern
L Para2
L 16#00
<=I
JC Err3 // Falscher Aufrufparameter
CAC
L Listenlaenge // Länge der Datenliste (maximale Anzahl der Datensätze)
>I
JC Err3 // Falscher Aufrufparameter
L 16#0A // XX = 0A ? (Datensatz YY lesen)
L Para1
<>I // Nein !
JC W400
// Eintrag lesen:
L Para2 // Datensatz YY
+ -1 // 1.Datensatz ohne Offset
L Datenblock_inBytes // Datenblocklänge in bytes
*I
+ 20
L SSDW
+I
T LeseStelle // Stelle, wo gelesen werden soll
JU Nw06 // OutDaten ok ?
W400: L 16#0E // XX = 0E ? (Datensatz YY löschen)
<>I // Nein !
JC W401
// Datensatz löschen:
L AnzahlEintraege
L 0
==I
JC Err2 // Liste ist leer
L Para2 // Datensatz YY
L AnzahlEintraege // zu löschender Datensatz ist grösser als Einträge ?
>I // Ja !
JC Ende // Keine Aktion
L Para2 // Datensatz YY
+ -1 // 1.Datensatz ohne Offset
L Datenblock_inBytes // Datenblocklänge in bytes
*I
+ 20
L SSDW
+I
T EraseStelle // Stelle, wo gelöscht werden soll
JU Nw08 // Daten löschen
W401: L 16#0D // XX = 0D ? (Datensätze YY löschen, ab 1.DS)
L Para1
<>I // Nein !
JC W402
// Datenblock löschen:
L AnzahlEintraege
L 0
==I
JC Err2 // Liste ist leer
L Para2 // Anzahl Datensätze YY
L Datenblock_inBytes // Datenblocklänge in bytes
*I
+ 20
L SSDW
+I
T FirstStelle // Stelle, wo 1. zu bleibende Daten sind
JU Nw09
BEU
W402: JU Err3 // Falscher Aufrufparameter
--- NW 5: Outdaten ok ? ---
// Out-DATEN-Pointer übernehmen:
Nw06: L P#
LAR2
L NoneW [AR2,]
T DBOutDaten // Outdaten-DB
L NoneD [AR2,] // Kennung, Adresse
T OutDaten_Pointer
L DBOutDaten // Outdaten-DB
L 0 // Angegeben ?
==I // Nein
JC Nw07
// CALL TEST_DB
// DB_NUMBER :=#DBOutDaten
// RET_VAL :=#SFC_RET_VAL
// DB_LENGTH :=#SFC_DB_LENGTH
// WRITE_PROT :=#SFC_WRITE_PROT
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
L SFC_RET_VAL
L 2#0000_0000_0000_0000 // Fehler vorhanden ?
<>I // Ja !
JC Err5 // Undefinierte Outdaten
L NoneD [AR2,] // Kennung, Adresse
L 16#00FF_FFFF // Ohne Kennung
AW
SRW 3 // Ohne Bit
T OutDaten_Startpunkt
L OutDaten_Startpunkt
L SFC_DB_LENGTH
>I // Outdaten-DB ist zu kurz
JC Err5 // Undefinierte Outdaten
--- NW 6: Daten aus Datenliste lesen (in OUTDaten übergeben) ---
// Quelle-Pointer erzeugen:
Nw07: L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Datensatzlaenge // Datenwords speichern
T LW2
T LW12 // Wiederholungen
// DATEN-Pointer übernehmen:
L SSDB
T LW4 // DB_Nummer
L LeseStelle // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
// Kennung + Datenbytes s.o.
L DBOutDaten
T LW14 // DB_Nummer
L OutDaten_Pointer
T LD16 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten speichern
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
JU Ende
--- NW 7: Daten aus Datenliste löschen ? ---
// Gemeinsame Daten für Pointer erzeugen:
Nw08: L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Datensatzlaenge // Datensatzlänge
L Para2 // Datensatz YY
*I
T NichtCopy // Datenmenge, die nicht vorschoben wird
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I // Gesamtdatenlänge in Words
L NichtCopy // Datenmenge, die nicht vorschoben wird
-I // abziehen
T LW2
T LW12 // Wiederholungen
L SSDB
T LW4
T LW14 // DB_Nummer
// Quelle-Pointer erzeugen:
L EraseStelle // Stelle, wo gelöscht werden soll
L Datenblock_inBytes // Datenblocklänge in Bytes
+I
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
L EraseStelle // Stelle, wo gelöscht werden soll
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD16 // Kennung, Adresse
// Daten verschieben:
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
// Letzte Daten löschen:
L Datenlisten_Ende // Ende des Datenbereichs
L Datenblock_inBytes // Datenblocklänge in Bytes
-I // Ab hier löschen !
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L Datensatzlaenge // Datensatzlänge
L080: T Schleife
OPN DB[DBDatenliste]
L 0 // Daten löschen
T DBW [AR1Zeiger]
L AR1Zeiger
SRD 3
L 2
+D
SLD 3
T AR1Zeiger
L Schleife
LOOP L080
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
+ -1
T AnzahlEintraege
L 0
>=I
JC w080
T AnzahlEintraege // Minimum übergeben
w080: L SSDW
+ 14 // Anzahl der Einträge
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
T DBW [AR1Zeiger] // Anzahl der Einträge
JU Ende
--- NW 8: Datensätze aus Datenliste löschen ? ---
// Gemeinsame Daten für Pointer erzeugen:
Nw09: L 16#1004 // Kennung 10 + Word=04
T LW0
T LW10 // Any-Kennung, Datentyp
L Datensatzlaenge // Datensatzlänge
L Para2 // Anzahl Datensätze YY
*I
T NichtCopy // Datenmenge, die nicht vorschoben wird
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I // Gesamtdatenlänge in Words
L NichtCopy // Datenmenge, die nicht vorschoben wird
-I // abziehen
T LW2
T LW12 // Wiederholungen
L SSDB
T LW4
T LW14 // DB_Nummer
// Quelle-Pointer erzeugen:
L FirstStelle // Stelle, wo 1. zu bleibende Daten sind
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
// Ziel-Pointer erzeugen:
L SSDW
+ 20 // 1.DS
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD16 // Kennung, Adresse
// Daten verschieben:
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
// Letzte Daten löschen:
L Datenlisten_Ende // Ende des Datenbereichs
L NichtCopy // Datenmenge, die nicht vorschoben wird
-I
L NichtCopy // 2 mal, da Angabe in Word (Angabe in Byte benötigt!)
-I // Ab hier löschen !
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L NichtCopy // Datenmenge, die nicht vorschoben wird
L090: T Schleife
OPN DB[DBDatenliste]
L 0 // Daten löschen
T DBW [AR1Zeiger]
L AR1Zeiger
SRD 3
L 2
+D
SLD 3
T AR1Zeiger
L Schleife
LOOP L090
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
L Para2 // Anzahl Datensätze YY
-I
T AnzahlEintraege
L 0
>=I
JC w090
T AnzahlEintraege // Minimum übergeben
w090: L SSDW
+ 14 // Anzahl der Einträge
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L AnzahlEintraege // Anzahl der eingetragenen Datensätze
T DBW [AR1Zeiger] // Anzahl der Einträge
JU Ende
--- NW 9: Fehlerausgabe / RET_VAL ---
Ende: SET // VKE = 1 ohne Fehler !!!
L 2#0000_0000_0000_0000 // Ok-Status
JU Ok
Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich
JU Err
Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler
JU Err
Err2: L 2#0000_0000_0000_0100 // Sortliste ist leer
JU Err
Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf
JU Err
Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten
Err: CLR // VKE = 0 bei Fehler !!!
Ok: T RE_VAL
SAVE // VKE in BIE-Bit speichern
L AR2_Speicher // AR2 zurückspeichern
LAR2
@@ -0,0 +1,234 @@
=== FC 87: DatenReset [STL] ===
INTERFACE:
Input:
SSDB : Int // Datenlisten-DB
SSDW : Int // Datenlisten-1.DW
Output:
RE_VAL : Byte // Rückmeldung
InOut:
Temp:
Quelle : Any // Zeiger, wo Rein-Daten sind
Ziel : Any // Zeiger, FIFO-Stelle
Kopf : Byte // Datenliste-Kennnung (DA)
Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128
Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze)
Stammdaten : Int // Stammdatenlänge in Word (1 - 9)
IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!)
IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!)
IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!)
Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger
Belegt14 : Int // reserviert von Sort-Datenliste
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
DBDatenliste : Word // Datenlisten-DB
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
Datenlisten_Ende : Word // Ende der Datenliste
Schleife : Word // Loopzähler
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
DB_Länge : Int
Constant:
Return:
Ret_Val : Void
--- NW 1: Schnittstellen-DB sinnvoll ? ---
L SSDB
T DBDatenliste
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT
JC Err0 // kein Datenlisten-Bereich
--- NW 2: Quelle-Pointer erzeugen: ---
L 16#1004 // Kennung 10 + Word=04
T LW0 // Any-Kennung, Datentyp
L 16#000A // 10 Dw´s holen
T LW2 // Wiederholungen
L SSDB
T LW4 // DB_Nummer
L SSDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
--- NW 3: Zeigerüberprüfung ---
L Kopf // Datenliste-Kopf
L 16#DA // = Datenlistekennung ?
<>I // Nein !
JC Err0 // kein Datenlistebereich
L 1
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L 128
>I
JC Err0 // kein Datenlistebereich
L 1
L Listenlaenge // Max.Anzahl von Datenblöcken
>I
JC Err0 // kein Datenlistebereich
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err0 // kein Datenlistebereich
L 9
>I
JC Err0 // kein Datenlistebereich
L Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I
L 2 // DB byteorientiert
*I
+ 20 // Speichern ab 10.DW
L SSDW
+I
T Datenlisten_Ende
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L Datenlisten_Ende
L "DB_Länge"
>I // Datenlisten-DB ist zu kurz!
JC Err0 // kein Datenlisten-Bereich
L DBW [AR1Zeiger]
L 16#DAEE // Datenliste-Endekennung ?
<>I // Nein !
JC Err0 // kein Datenlisten-Bereich
--- NW 4: Indizierung löschen ? ---
L IndDB // Indizierter DB
L 0 // =0 ?
==I // Kein indizierter DB !
JC Nw05
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT
JC Nw05 // kein Indizier-DB vorhanden
L 0
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[IndDB]
L "DB_Länge" // In Bytes angegeben
L400: T Schleife
L 0
T DBB [AR1Zeiger] // Inhalte löschen
L AR1Zeiger
SRD 3
L DINT#1
+D
SLD 3
T AR1Zeiger
L Schleife
LOOP L400
--- NW 5: Datenliste löschen ---
Nw05: L SSDW
+ 12 // 12.Dw
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L 0
T DBW [AR1Zeiger] // Letzte Speicherung löschen
L SSDW
+ 16 // 16.Dw
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L 0
T DBW [AR1Zeiger] // Anzahl Einträge löschen
L SSDW
+ 20 // Daten ab 20.Dw
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L Datensatzlaenge
L Listenlaenge
*I
L500: T Schleife
OPN DB[DBDatenliste]
L 0
T DBW [AR1Zeiger] // Inhalte löschen
L AR1Zeiger
SRD 3
L DINT#2
+D
SLD 3
T AR1Zeiger
L Schleife
LOOP L500
--- NW 6: Fehlerausgabe / RET_VAL ---
SET // VKE = 1 ohne Fehler !!!
JU Ok
Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich
JU Err
Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler
Err: CLR // VKE = 0 bei Fehler !!!
Ok: T RE_VAL
SAVE // VKE in BIE-Bit speichern
@@ -0,0 +1,183 @@
=== FC 90: DatenResetSort [STL] ===
INTERFACE:
Input:
SSDB : Int // Datenlisten-DB
SSDW : Int // Datenlisten-1.DW
Output:
RE_VAL : Byte // Rückmeldung
InOut:
Temp:
Quelle : Any // Zeiger, wo Rein-Daten sind
Ziel : Any // Zeiger, FIFO-Stelle
Kopf : Byte // Datenliste-Kennnung (DA)
Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128
Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze)
Stammdaten : Int // Stammdatenlänge in Word (1 - 9)
Belegt06 : Int // reserviert von Datenliste
Belegt08 : Int // reserviert von Datenliste
Belegt10 : Int // reserviert von Datenliste
Belegt12 : Int // reserviert von Datenliste
AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze
Reserve16 : Int // Reserve
Reserve18 : Int // Reserve
Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger
DBDatenliste : Word // Datenlisten-DB
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
Datenlisten_Ende : Word // Ende der Datenliste
Schleife : Word // Loopzähler
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
Constant:
Return:
Ret_Val : Void
--- NW 1: Schnittstellen-DB sinnvoll ? ---
L SSDB
T DBDatenliste
// CALL TEST_DB
// DB_NUMBER :=#DBDatenliste
// RET_VAL :=#SFC_RET_VAL
// DB_LENGTH :=#SFC_DB_LENGTH
// WRITE_PROT :=#SFC_WRITE_PROT
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
O SFC_WRITE_PROT
JC Err0 // kein Datenlisten-Bereich
--- NW 2: Quelle-Pointer erzeugen: ---
L 16#1004 // Kennung 10 + Word=04
T LW0 // Any-Kennung, Datentyp
L 16#000A // 10 Dw´s holen
T LW2 // Wiederholungen
L SSDB
T LW4 // DB_Nummer
L SSDW // Adresse
SLD 3
L 16#8400_0000 // Kennung: Daten
OD
T LD6 // Kennung, Adresse
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
L SFC_RET_VAL
L 2#0000_0000_0000_0000
<>I
JC Err1
--- NW 3: Zeigerüberprüfung ---
L Kopf // Datenliste-Kopf
L 16#DB // = DatenSortlistekennung ?
<>I // Nein !
JC Err0 // kein Datenlistebereich
L 1
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L 128
>I
JC Err0 // kein Datenlistebereich
L 1
L Listenlaenge // Max.Anzahl von Datenblöcken
>I
JC Err0 // kein Datenlistebereich
L 1
L Stammdaten // Anzahl der Stammdaten
>I
JC Err0 // kein Datenlistebereich
L 9
>I
JC Err0 // kein Datenlistebereich
L Stammdaten // Anzahl der Stammdaten
L Datensatzlaenge // Datenblocklänge
>I
JC Err0 // kein Datenlistebereich
L Listenlaenge // Länge der Datenliste
L Datensatzlaenge // Datenblocklänge
*I
L 2 // DB byteorientiert
*I
+ 20 // Speichern ab 10.DW
L SSDW
+I
T Datenlisten_Ende
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L Datenlisten_Ende
L SFC_DB_LENGTH
>I // Datenlisten-DB ist zu kurz!
JC Err0 // kein Datenlisten-Bereich
L DBW [AR1Zeiger]
L 16#DBEE // DatenSortliste-Endekennung ?
<>I // Nein !
JC Err0 // kein Datenlisten-Bereich
--- NW 4: Datenliste löschen ---
L SSDW
+ 14 // 14.Dw
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
OPN DB[DBDatenliste]
L 0
T DBW [AR1Zeiger] // Anzahl Einträge löschen
L SSDW
+ 20 // 20.Dw
ITD
SLD 3
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
L Datensatzlaenge
L Listenlaenge
*I
L500: T Schleife
L 0 // Daten löschen
T DBW [AR1Zeiger]
L AR1Zeiger
SRD 3
L 2
+D
SLD 3
T AR1Zeiger
L Schleife
LOOP L500
--- NW 5: Fehlerausgabe / RET_VAL ---
SET // VKE = 1 ohne Fehler !!!
JU Ok
Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich
JU Err
Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler
Err: CLR // VKE = 0 bei Fehler !!!
Ok: T RE_VAL
SAVE // VKE in BIE-Bit speichern

Some files were not shown because too many files have changed in this diff Show More