UH07 Original .awl Bausteine von Andi importiert
This commit is contained in:
@@ -1,169 +1,286 @@
|
||||
=== FB 199: HWtoVP_Antriebe [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
MA0200 : "MAntrieb_PowerSave"
|
||||
MA0201 : "MAntrieb_PowerSave"
|
||||
MA0260 : "MAntrieb_PowerSave"
|
||||
MA0261 : "MAntrieb_PowerSave"
|
||||
MA0262 : "MAntrieb_PowerSave"
|
||||
MA0263 : "MAntrieb_PowerSave"
|
||||
MA0140 : "MAntrieb_PowerSave"
|
||||
MA0141 : "MAntrieb_PowerSave"
|
||||
MA0142 : "MAntrieb_PowerSave"
|
||||
MA0143 : "MAntrieb_PowerSave"
|
||||
MA0144 : "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:
|
||||
FUNCTION_BLOCK "HWtoVP_Antriebe"
|
||||
TITLE = Antriebe HW > VP
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
MA0200 : "MAntrieb_PowerSave";
|
||||
MA0201 : "MAntrieb_PowerSave";
|
||||
MA0260 : "MAntrieb_PowerSave";
|
||||
MA0261 : "MAntrieb_PowerSave";
|
||||
MA0262 : "MAntrieb_PowerSave";
|
||||
MA0263 : "MAntrieb_PowerSave";
|
||||
MA0140 : "MAntrieb_PowerSave";
|
||||
MA0141 : "MAntrieb_PowerSave";
|
||||
MA0142 : "MAntrieb_PowerSave";
|
||||
MA0143 : "MAntrieb_PowerSave";
|
||||
MA0144 : "MAntrieb_PowerSave";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UC072/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
A(
|
||||
A "DOutbound_Bereich".A01_UC072.BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7201.Area_Stop
|
||||
O "DOutbound_Bereich".A01_UZ7202.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
|
||||
AN BereichErr
|
||||
L S5T#1S
|
||||
OnDelay "T192"
|
||||
|
||||
A "T192"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
|
||||
A "DOutbound_Bereich".A01_UC072.StOk_aktiv
|
||||
= Quit
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: MA0200 ---
|
||||
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:="7_HMI_Err_UH07_OB".QErr.MA0200, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC072/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U(;
|
||||
U "DOutbound_Bereich".A01_UC072.BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7201.Area_Stop;
|
||||
O "DOutbound_Bereich".A01_UZ7202.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
UN #BereichErr;
|
||||
L S5T#1S;
|
||||
SE "T192";
|
||||
|
||||
U "T192";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC072.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0200
|
||||
CALL #MA0200
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0200" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0200" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0200
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 3: MA0201 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0201", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0201", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0201, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0201
|
||||
CALL #MA0201
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0201" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0201" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0201
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC073/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 4: Übergabe des Bereichstatus System UC073/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
U "DOutbound_Bereich".A01_UC073.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
A "DOutbound_Bereich".A01_UC073.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
UN #BereichErr;
|
||||
L S5T#1S;
|
||||
SE "T193";
|
||||
|
||||
AN BereichErr
|
||||
L S5T#1S
|
||||
OnDelay "T193"
|
||||
U "T193";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
A "T193"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
U "DOutbound_Bereich".A01_UC073.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
A "DOutbound_Bereich".A01_UC073.StOk_aktiv
|
||||
= Quit
|
||||
NETWORK
|
||||
TITLE = MA0260
|
||||
CALL #MA0260
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0260" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0260" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0260
|
||||
);
|
||||
|
||||
|
||||
--- NW 5: MA0260 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0260", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0260", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0260, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0261
|
||||
CALL #MA0261
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0261" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0261" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0261
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 6: MA0261 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0261", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0261", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0261, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0262
|
||||
CALL #MA0262
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0262" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0262" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0262
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 7: MA0262 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0262", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0262", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0262, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0263
|
||||
CALL #MA0263
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0263" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0263" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0263
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC071/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 8: MA0263 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0263", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0263", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0263, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
U(;
|
||||
O "DOutbound_Bereich".A01_UC071.BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7102.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
UN #BereichErr;
|
||||
L S5T#1S;
|
||||
SE "T191";
|
||||
|
||||
U "T191";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC071.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0140
|
||||
CALL #MA0140
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0140" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0140" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0140
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 9: Übergabe des Bereichstatus System UC071/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
|
||||
A(
|
||||
O "DOutbound_Bereich".A01_UC071.BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7102.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
|
||||
AN BereichErr
|
||||
L S5T#1S
|
||||
OnDelay "T191"
|
||||
|
||||
A "T191"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
|
||||
A "DOutbound_Bereich".A01_UC071.StOk_aktiv
|
||||
= Quit
|
||||
NETWORK
|
||||
TITLE = MA0141
|
||||
CALL #MA0141
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0141" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0141" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0141
|
||||
);
|
||||
|
||||
|
||||
--- NW 10: MA0140 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0140", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0140", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0140, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0142
|
||||
CALL #MA0142
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0142" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0142" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0142
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 11: MA0141 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0141", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0141", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0141, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0143
|
||||
CALL #MA0143
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0143" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0143" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0143
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0144
|
||||
CALL #MA0144
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0144" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0144" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0144
|
||||
);
|
||||
|
||||
--- NW 12: MA0142 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0142", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0142", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0142, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
|
||||
--- NW 13: MA0143 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0143", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0143", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0143, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
|
||||
|
||||
|
||||
--- NW 14: MA0144 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0144", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0144", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0144, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
|
||||
|
||||
--- NW 15: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,111 +1,244 @@
|
||||
=== FB 190: HWtoVP_Sensoren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Stau_BG3730 : "MSensoren" // Stau am Sensor Einfahrt MA0201
|
||||
Stau_BG4202 : "MSensoren" // Stau am Sensor Einfahrt MA0261
|
||||
Stau_BG4204 : "MSensoren" // Stau am Sensor Einfahrt MA0262
|
||||
Stau_BG4206 : "MSensoren" // Stau am Sensor Einfahrt MA0263
|
||||
Stau_BG4210 : "MSensoren" // Stau am Sensor Weiche MB4210
|
||||
Stau_BG4211 : "MSensoren" // Stau am Sensor Weiche MB4210
|
||||
Stau_BG4213 : "MSensoren" // Stau am Sensor
|
||||
Stau_BG4215 : "MSensoren" // Stau am Sensor Einfahrt MA140
|
||||
Stau_BG3144 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3144
|
||||
Stau_BG3142 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3142
|
||||
Stau_BG3130 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3130
|
||||
Stau_BG3127 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3127
|
||||
Stau_BG3132 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3132
|
||||
Stau_BG3133 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3132
|
||||
Stau_BG3135 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3135
|
||||
Stau_BG4216 : "MSensoren" // Stau am Sensor Einfahrt MA140
|
||||
Stau_BG3724 : "MSensoren" // Stau am Sensor Einfahrt MA200
|
||||
Stau_BG4201 : "MSensoren" // Stau am Sensor hinter BST2
|
||||
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:
|
||||
FUNCTION_BLOCK "HWtoVP_Sensoren"
|
||||
TITLE = Sensoren Outbound: HW > VP
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Stau_BG3730 : "MSensoren"; // Stau am Sensor Einfahrt MA0201
|
||||
Stau_BG4202 : "MSensoren"; // Stau am Sensor Einfahrt MA0261
|
||||
Stau_BG4204 : "MSensoren"; // Stau am Sensor Einfahrt MA0262
|
||||
Stau_BG4206 : "MSensoren"; // Stau am Sensor Einfahrt MA0263
|
||||
Stau_BG4210 : "MSensoren"; // Stau am Sensor Weiche MB4210
|
||||
Stau_BG4211 : "MSensoren"; // Stau am Sensor Weiche MB4210
|
||||
Stau_BG4213 : "MSensoren"; // Stau am Sensor
|
||||
Stau_BG4215 : "MSensoren"; // Stau am Sensor Einfahrt MA140
|
||||
Stau_BG3144 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3144
|
||||
Stau_BG3142 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3142
|
||||
Stau_BG3130 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3130
|
||||
Stau_BG3127 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3127
|
||||
Stau_BG3132 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3132
|
||||
Stau_BG3133 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3132
|
||||
Stau_BG3135 : "MSensoren"; // Stau am Sensor Einfahrt Schleuse3135
|
||||
Stau_BG4216 : "MSensoren"; // Stau am Sensor Einfahrt MA140
|
||||
Stau_BG3724 : "MSensoren"; // Stau am Sensor Einfahrt MA200
|
||||
Stau_BG4201 : "MSensoren"; // Stau am Sensor hinter BST2
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3730", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4202", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0201
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3730
|
||||
( ESensor := "BG3730" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0261
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4202
|
||||
( ESensor := "BG4202" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 3: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4204", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0262
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4204
|
||||
( ESensor := "BG4204" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0263
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4206
|
||||
( ESensor := "BG4206" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 4: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4206", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor vor Weiche MB4210
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4210
|
||||
( ESensor := "BG4210" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 101 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor nach Weiche MB4210
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4211
|
||||
( ESensor := "BG4211" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 5: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4210", T_Ein:=80, T_Aus:=101, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Weiche MB4213
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4213
|
||||
( ESensor := "BG4213" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0140
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4215
|
||||
( ESensor := "BG4215" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 6: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4211", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt Schleuse3144
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3144
|
||||
( ESensor := "BG3144" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt Schleuse3142
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3142
|
||||
( ESensor := "BG3142" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := True
|
||||
);
|
||||
|
||||
--- NW 7: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4213", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt Schleuse3130
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3130
|
||||
( ESensor := "BG3130" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := True
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt Schleuse3127
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3127
|
||||
( ESensor := "BG3127" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 8: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4215", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt Schleuse3132
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3132
|
||||
( ESensor := "BG3132" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt Schleuse3133
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3133
|
||||
( ESensor := "BG3133" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 9: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3144", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt Schleuse3135
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3135
|
||||
( ESensor := "BG3135" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt Schleuse4207
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4216
|
||||
( ESensor := "BG4216" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 10: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3142", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=True)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0200
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3724
|
||||
( ESensor := "BG3724" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor hinter BST2
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4201
|
||||
( ESensor := "BG4201" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 30 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 11: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3130", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=True)
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 12: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3127", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 13: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3132", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 14: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3133", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 15: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3135", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 16: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4216", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 17: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3724", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 18: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4201", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 19: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,117 +1,202 @@
|
||||
=== FB 192: HWtoVP_Zylinder [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_3725 : "MZylinder" //
|
||||
Schleuse_4200 : "MZylinder"
|
||||
Schleuse_4207 : "MZylinder"
|
||||
Schleuse_4212 : "MZylinder"
|
||||
Schleuse_4214 : "MZylinder"
|
||||
Schleuse_3143 : "MZylinder" //
|
||||
Schleuse_3141 : "MZylinder" //
|
||||
Weiche_3137 : "MZylinder" //
|
||||
Weiche_3140 : "MZylinder" //
|
||||
Schleuse_3131 : "MZylinder" //
|
||||
Schleuse_3134 : "MZylinder" //
|
||||
Schleuse_3136 : "MZylinder" //
|
||||
Schleuse_4217 : "MZylinder" //
|
||||
Temp:
|
||||
Auto : Bool // Automatik ist aktiv
|
||||
Hand : Bool // Hand ist aktiv
|
||||
ZylAst : Bool // Zylinder ansteuern
|
||||
Constant:
|
||||
FUNCTION_BLOCK "HWtoVP_Zylinder"
|
||||
TITLE = Zylinder Outbound Highway > Vollpuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_3725 : "MZylinder"; //
|
||||
Schleuse_4200 : "MZylinder";
|
||||
Schleuse_4207 : "MZylinder";
|
||||
Schleuse_4212 : "MZylinder";
|
||||
Schleuse_4214 : "MZylinder";
|
||||
Schleuse_3143 : "MZylinder"; //
|
||||
Schleuse_3141 : "MZylinder"; //
|
||||
Weiche_3137 : "MZylinder"; //
|
||||
Weiche_3140 : "MZylinder"; //
|
||||
Schleuse_3131 : "MZylinder"; //
|
||||
Schleuse_3134 : "MZylinder"; //
|
||||
Schleuse_3136 : "MZylinder"; //
|
||||
Schleuse_4217 : "MZylinder"; //
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UC072/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
A(
|
||||
A "DOutbound_Bereich".A01_UC072.BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7201.Area_Stop
|
||||
O "DOutbound_Bereich".A01_UZ7202.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next // Zylinder-Stellung nicht mehr ändern
|
||||
VAR_TEMP
|
||||
Auto : Bool; // Automatik ist aktiv
|
||||
Hand : Bool; // Hand ist aktiv
|
||||
ZylAst : Bool; // Zylinder ansteuern
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse_3725 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3725", ZylGst:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC072/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U(;
|
||||
U "DOutbound_Bereich".A01_UC072.BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7201.Area_Stop;
|
||||
O "DOutbound_Bereich".A01_UZ7202.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
--- NW 3: Übergabe des Bereichstatus System UC073/A01 ---
|
||||
Next: A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
NETWORK
|
||||
TITLE = Schleuse_3725
|
||||
CALL #Schleuse_3725
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3725"
|
||||
);
|
||||
|
||||
A "DOutbound_Bereich".A01_UC073.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next2 // Zylinder-Stellung nicht mehr ändern
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC073/A01
|
||||
Next: U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC073.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next2 ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
--- NW 4: Schleuse_4200 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4200", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4200
|
||||
CALL #Schleuse_4200
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4200"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4207
|
||||
CALL #Schleuse_4207
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4207"
|
||||
);
|
||||
|
||||
--- NW 5: Schleuse_4207 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4207", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4212
|
||||
CALL #Schleuse_4212
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4212"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4214
|
||||
CALL #Schleuse_4214
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4214"
|
||||
);
|
||||
|
||||
--- NW 6: Schleuse_4212 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4212", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC071/A01
|
||||
Next2: U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U(;
|
||||
O "DOutbound_Bereich".A01_UC071.BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7102.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next3 ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
--- NW 7: Schleuse_4214 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4214", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_3143
|
||||
CALL #Schleuse_3143
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3143"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_3141
|
||||
CALL #Schleuse_3141
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3141"
|
||||
);
|
||||
|
||||
--- NW 8: Übergabe des Bereichstatus System UC071/A01 ---
|
||||
Next2: A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
NETWORK
|
||||
TITLE = Weiche_3137
|
||||
CALL #Weiche_3137
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3137"
|
||||
);
|
||||
|
||||
A(
|
||||
O "DOutbound_Bereich".A01_UC071.BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7102.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next3 // Zylinder-Stellung nicht mehr ändern
|
||||
NETWORK
|
||||
TITLE = Weiche_3140
|
||||
CALL #Weiche_3140
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3140"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_3131
|
||||
CALL #Schleuse_3131
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3131"
|
||||
);
|
||||
|
||||
--- NW 9: Schleuse_3143 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3143", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_3134
|
||||
CALL #Schleuse_3134
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3134"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_3136
|
||||
CALL #Schleuse_3136
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3136"
|
||||
);
|
||||
|
||||
--- NW 10: Schleuse_3141 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3141", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4217
|
||||
CALL #Schleuse_4217
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4217"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
Next3: BE;
|
||||
|
||||
--- NW 11: Weiche_3137 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3137", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 12: Weiche_3140 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3140", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 13: Schleuse_3131 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3131", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 14: Schleuse_3134 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3134", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 15: Schleuse_3136 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3136", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 16: Schleuse_4217 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4217", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 17: Ende ---
|
||||
Next3: BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
=== FC 100: HWtoOB_Bereich [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "HWtoOB_Bereich" : Void
|
||||
TITLE = Bereich Outbound: HW > VP
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Baustein-Aufrufe ---
|
||||
CALL FB "HWtoVP_Sensoren" ,
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Baustein-Aufrufe
|
||||
CALL "HWtoVP_Sensoren", "DHWtoVP_Sensoren";
|
||||
|
||||
CALL FB "HWtoVP_OmniFahren" ,
|
||||
CALL "HWtoVP_OmniFahren", "DHWtoVP_OmniFahren";
|
||||
|
||||
CALL FB "HWtoVP_Zylinder" ,
|
||||
CALL "HWtoVP_Zylinder", "DHWtoVP_Zylinder";
|
||||
|
||||
CALL FB "HWtoVP_Antriebe" ,
|
||||
CALL "HWtoVP_Antriebe", "DHWtoVP_Antriebe";
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+83
-63
@@ -1,84 +1,104 @@
|
||||
=== FC 182: HWtoVP_Draussen [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Error.Bit : Bool
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
SET // Rückmeldungen erst mal resetten
|
||||
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
|
||||
FUNCTION "HWtoVP_Draussen" : Void
|
||||
TITLE = Draussen-FC: HW > VP
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_TEMP
|
||||
"Error.Bit" : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 4207 (Vor ByPass vom LP): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 4207 // Aufruf von Schleuse 4207?
|
||||
<>I // Nein!
|
||||
JC X4207E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Weichen_Ziel
|
||||
L 16#4224 // Gerade ? Also zum AMR-Bereich?
|
||||
==I // Ja !
|
||||
BEC
|
||||
NETWORK
|
||||
TITLE = Schleuse 4207 (Vor ByPass vom LP): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 4207 ;//Aufruf von Schleuse 4207?
|
||||
<>I;//Nein!
|
||||
SPB X4207E;
|
||||
|
||||
// Partner-Trolley will zu VP fahren:
|
||||
// Bei Partner (Schleuse 4221) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0
|
||||
T "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Sk.Akt_Schritt
|
||||
L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Weichen_Ziel;
|
||||
L 16#4224 ;//Gerade ? Also zum AMR-Bereich?
|
||||
==I ;//Ja !
|
||||
BEB;
|
||||
|
||||
X4207E: NOP 0
|
||||
//Partner-Trolley will zu VP fahren:
|
||||
//Bei Partner (Schleuse 4221) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0;
|
||||
T "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Sk.Akt_Schritt;
|
||||
|
||||
X4207E: NOP 0;
|
||||
|
||||
--- NW 3: Schleuse 3141: (Vor Einfahrt Kontrollplatz) ---
|
||||
L "MW190"
|
||||
L 3141 // Aufruf von Schleuse 3141 ?
|
||||
<>I // Nein!
|
||||
JC X3141E
|
||||
NETWORK
|
||||
TITLE = Schleuse 3141: (Vor Einfahrt Kontrollplatz)
|
||||
L "MW190";
|
||||
L 3141 ;//Aufruf von Schleuse 3141 ?
|
||||
<>I;//Nein!
|
||||
SPB X3141E;
|
||||
|
||||
// Bei Partner (Schleuse 3136) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0
|
||||
T "DHWtoVP_OmniFahren".Schleuse_3136.Dyn.Sk.Akt_Schritt
|
||||
//Bei Partner (Schleuse 3136) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0;
|
||||
T "DHWtoVP_OmniFahren".Schleuse_3136.Dyn.Sk.Akt_Schritt;
|
||||
|
||||
// Leerer Trolley vom Leerpuffer?
|
||||
L "MD182" // ShopGroup
|
||||
L DINT#-1 // Leer-Trolley?
|
||||
==D // Ja !
|
||||
BEC // Kein Telegramm!
|
||||
//Leerer Trolley vom Leerpuffer?
|
||||
L "MD182" ;//ShopGroup
|
||||
L DINT#-1 ;//Leer-Trolley?
|
||||
==D ;//Ja !
|
||||
BEB;//Kein Telegramm!
|
||||
|
||||
// GOHDUM an Host senden:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Weichen_Ziel
|
||||
BTI
|
||||
T "Daten_für_SendFIFO".Puffer_LinienNr
|
||||
//GOHDUM an Host senden:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Weichen_Ziel;
|
||||
BTI;
|
||||
T "Daten_für_SendFIFO".Puffer_LinienNr;
|
||||
|
||||
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='U', TelegrammKennung[6]:='M', TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse, StationsNr:=3141, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit")
|
||||
CALL "Daten_in_SendFIFO_speichern", "Daten_für_SendFIFO"
|
||||
( "TelegrammKennung[1]" := 'G' ,
|
||||
"TelegrammKennung[2]" := 'O' ,
|
||||
"TelegrammKennung[3]" := 'H' ,
|
||||
"TelegrammKennung[4]" := 'D' ,
|
||||
"TelegrammKennung[5]" := 'U' ,
|
||||
"TelegrammKennung[6]" := 'M' ,
|
||||
TrolleyID := "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse ,
|
||||
StationsNr := 3141 ,
|
||||
Port := 2 ,
|
||||
Ret_Val_FIFO_IN := "MB199" ,
|
||||
Error := #"Error.Bit"
|
||||
);
|
||||
|
||||
// Endziel wieder nullen:
|
||||
CALL FC "Trolleydaten_ändern" (Gesamt_Trolley_DL:=1000, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse, Endziel:=W#16#0, ShopGroup:=0)
|
||||
//Endziel wieder nullen:
|
||||
CALL "Trolleydaten_ändern"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 0 ,
|
||||
ShopGroup := 0
|
||||
);
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
X3141E: NOP 0
|
||||
X3141E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3136: (Vor Einfahrt Kontrollplatz)
|
||||
L "MW190";
|
||||
L 3136 ;//Aufruf von Schleuse 3136 ?
|
||||
<>I;//Nein!
|
||||
SPB X3136E;
|
||||
|
||||
--- NW 4: Schleuse 3136: (Vor Einfahrt Kontrollplatz) ---
|
||||
L "MW190"
|
||||
L 3136 // Aufruf von Schleuse 3136 ?
|
||||
<>I // Nein!
|
||||
JC X3136E
|
||||
//Bei Partner (Schleuse 3141) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0;
|
||||
T "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Sk.Akt_Schritt;
|
||||
|
||||
// Bei Partner (Schleuse 3141) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0
|
||||
T "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Sk.Akt_Schritt
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
X3136E: NOP 0;
|
||||
|
||||
X3136E: NOP 0
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+90
-71
@@ -1,101 +1,120 @@
|
||||
=== FC 180: HWtoVP_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"
|
||||
FUNCTION "HWtoVP_Leser_FC" : Void
|
||||
TITLE = Leser-FC: ZG
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_TEMP
|
||||
Zielebene : Word;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 3143: (Anfrage KontrollPlatz) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 3143 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X3143E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y3143
|
||||
//Keine
|
||||
L 0;//Evtl. Zwischenziel (MW196)
|
||||
T "MW196";
|
||||
|
||||
BEU
|
||||
NETWORK
|
||||
TITLE = Schleuse 3143: (Anfrage KontrollPlatz)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 3143 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X3143E;
|
||||
|
||||
Y3143: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y3143;
|
||||
|
||||
// Daten in Datenbank erzeugen:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse
|
||||
L DINT#0 // ID bekannt?
|
||||
==D // Nein
|
||||
BEC
|
||||
BEA;
|
||||
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DHWtoVP_OmniFahren".Schleuse_3143.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#0) // Voll-Puffer-Bereich
|
||||
Y3143: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
BEU
|
||||
//Daten in Datenbank erzeugen:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse;
|
||||
L DINT#0 ;//ID bekannt?
|
||||
==D;//Nein
|
||||
BEB;
|
||||
|
||||
X3143E: NOP 0
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DHWtoVP_OmniFahren".Schleuse_3143.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#B000 , //Voll-Puffer-Bereich
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
BEA;
|
||||
|
||||
--- NW 3: Schleuse 3141: (Vor Einfahrt KontrollPlatz) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 3141 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X3141E
|
||||
X3143E: NOP 0;
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y3141
|
||||
NETWORK
|
||||
TITLE = Schleuse 3141: (Vor Einfahrt KontrollPlatz)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 3141 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X3141E;
|
||||
|
||||
BEU
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y3141;
|
||||
|
||||
Y3141: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
BEA;
|
||||
|
||||
// Daten in Datenbank erzeugen:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse
|
||||
L DINT#0 // ID bekannt?
|
||||
==D // Nein
|
||||
BEC
|
||||
Y3141: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DHWtoVP_OmniFahren".Schleuse_3141.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#0) // Voll-Puffer-Bereich
|
||||
//Daten in Datenbank erzeugen:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse;
|
||||
L DINT#0 ;//ID bekannt?
|
||||
==D;//Nein
|
||||
BEB;
|
||||
|
||||
BEU
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DHWtoVP_OmniFahren".Schleuse_3141.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#B000 , //Voll-Puffer-Bereich
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
X3141E: NOP 0
|
||||
BEA;
|
||||
|
||||
X3141E: NOP 0;
|
||||
|
||||
--- NW 4: Schleuse 3134: (KontrollPlatz) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 3134 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X3134E
|
||||
NETWORK
|
||||
TITLE = Schleuse 3134: (KontrollPlatz)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 3134 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X3134E;
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y3134
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y3134;
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
Y3134: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
Y3134: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
// Daten in Datenbank erzeugen:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3134.Dyn.TrolleyID_Schleuse
|
||||
L DINT#0 // ID bekannt?
|
||||
==D // Nein
|
||||
BEC
|
||||
//Daten in Datenbank erzeugen:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3134.Dyn.TrolleyID_Schleuse;
|
||||
L DINT#0 ;//ID bekannt?
|
||||
==D;//Nein
|
||||
BEB;
|
||||
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DHWtoVP_OmniFahren".Schleuse_3134.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3134.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#0) // Voll-Puffer-Bereich
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DHWtoVP_OmniFahren".Schleuse_3134.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DHWtoVP_OmniFahren".Schleuse_3134.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#B000 , //Voll-Puffer-Bereich
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
X3134E: NOP 0
|
||||
X3134E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+694
-384
File diff suppressed because it is too large
Load Diff
+307
-271
@@ -1,284 +1,320 @@
|
||||
=== FC 181: HWtoVP_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
|
||||
Error.Bit : 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 3731: (BST 2) ---
|
||||
L "MW190"
|
||||
L 3731 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X3731E
|
||||
|
||||
SET
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
FUNCTION "HWtoVP_Ziel_FC" : Void
|
||||
TITLE = Ziel-FC: HW>VP_OmniFahren
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_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;
|
||||
"Error.Bit" : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3731: (BST 2)
|
||||
L "MW190";
|
||||
L 3731 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X3731E;
|
||||
|
||||
SET;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
X3731E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 4203: Weiterfahren erlaubt ? (AFS von BST)
|
||||
L "MW190";
|
||||
L 4203 ;//Aufruf von Schleuse 4203 ?
|
||||
<>I;//Nein!
|
||||
SPB X4203E;
|
||||
|
||||
SET;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
X4203E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4207: (Vor BypPass von LP)
|
||||
L "MW190";
|
||||
L 4207 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X4207E;
|
||||
|
||||
//Quell-Steuerung:
|
||||
L "DLPtoHW_OmniFahren".Weiche_4223.Dyn.Weichen_Ziel;
|
||||
L 16#4211;//Fahren Trolleys zu BG4211?
|
||||
==I;//Ja!
|
||||
O "MB4223";//Weiche ist auf Abzweig
|
||||
O "DLPtoHW_OmniFahren".Weiche_4223.Dyn.Status.Reset_aktiv;
|
||||
BEB;//Warten !
|
||||
|
||||
//Ziel-Check:
|
||||
UN "MB4223" ;//Weiche Einfahrt ByPass
|
||||
UN "MB4210";
|
||||
UN "DHWtoVP_Sensoren".Stau_BG4210.Stat.B_Akt;
|
||||
UN "DHWtoVP_Sensoren".Stau_BG4211.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
X4207E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 3145: Weiterfahren erlaubt ? (AFS von 1.Ebene)
|
||||
L "MW190";
|
||||
L 3145 ;//Aufruf von Schleuse 3145 ?
|
||||
<>I;//Nein!
|
||||
SPB X3145E;
|
||||
|
||||
SET;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
X3145E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3143: (Anfrage KontrollPlatz)
|
||||
L "MW190";
|
||||
L 3143 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X3143E;
|
||||
|
||||
L "MD182" ;//ShopGroup
|
||||
L DINT#-1 ;//Leer-Trolley?
|
||||
==D ;//Ja !
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
BEB;//Kein Telegramm!
|
||||
|
||||
U "SGes".Ohne_PC_Fahren;//Also ohne Anfrage
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
SPB N3143;
|
||||
|
||||
//GOHDReqM an Host senden:
|
||||
U "DHWtoVP_OmniFahren".Schleuse_3143.Status2.Telegramm_gesendet;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
BEB;
|
||||
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse;
|
||||
L 0;//Barcode bekannt?
|
||||
==D;//Nein!
|
||||
BEB;//Warten!
|
||||
|
||||
CALL "Daten_in_SendFIFO_speichern", "Daten_für_SendFIFO"
|
||||
( "TelegrammKennung[1]" := 'G' ,
|
||||
"TelegrammKennung[2]" := 'O' ,
|
||||
"TelegrammKennung[3]" := 'H' ,
|
||||
"TelegrammKennung[4]" := 'D' ,
|
||||
"TelegrammKennung[5]" := 'R' ,
|
||||
"TelegrammKennung[6]" := 'e' ,
|
||||
"TelegrammKennung[7]" := 'q' ,
|
||||
"TelegrammKennung[8]" := 'M' ,
|
||||
TrolleyID := "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse ,
|
||||
StationsNr := 3143 ,
|
||||
Port := 2 ,
|
||||
Ret_Val_FIFO_IN := "MB199" ,
|
||||
Error := #"Error.Bit"
|
||||
);
|
||||
|
||||
UN #"Error.Bit";
|
||||
S "DHWtoVP_OmniFahren".Schleuse_3143.Status2.Telegramm_gesendet;
|
||||
|
||||
//Trolleydaten neu anlegen: (Falls noch als Daten-Leiche vorhanden war)
|
||||
N3143: CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DHWtoVP_OmniFahren".Schleuse_3143.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#0000 , //Kein Ziel
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
BEA;
|
||||
|
||||
X3143E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3141: (Vor Einfahrt Kontrollplatz)
|
||||
L "MW190";
|
||||
L 3141 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X3141E;
|
||||
|
||||
//Quell-Steuerung:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3136.Dyn.Raus_Trolleys;
|
||||
L 0;
|
||||
>I;//Weiche von 2.Quelle schon belegt
|
||||
O "MB3136" ;//Andere Quelle aktiv
|
||||
BEB;
|
||||
|
||||
//Leerer Trolley vom Leerpuffer?
|
||||
L "MD182" ;//ShopGroup
|
||||
L DINT#-1 ;//Leer-Trolley?
|
||||
==D ;//Ja !
|
||||
O "SGes".Ohne_PC_Fahren;//Also Ziel simulieren
|
||||
SPB G3141;//Kein Telegramm!
|
||||
|
||||
//Telegramm schon gesendet?
|
||||
L "MW194" ;//Endziel
|
||||
L 16#3130 ;//sinnvoll?
|
||||
<>I ;//Nein! (nochmalige Anfrage)
|
||||
U(;
|
||||
TAK;
|
||||
L 16#3127 ;//sinnvoll?
|
||||
<>I ;//Nein! (nochmalige Anfrage)
|
||||
);
|
||||
UN "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet;
|
||||
SPB T3141;
|
||||
|
||||
//Ziel-Check:
|
||||
L "MW194";//EndZiel (wurde über Host-Telegramm in Datenbank eingetragen)
|
||||
L 16#3130 ;//Kontroll-Platz?
|
||||
==I;//Ja !
|
||||
SPB A3141 ;//Abzweig fahren
|
||||
|
||||
TAK;
|
||||
L 16#3127 ;//Zum VP?
|
||||
==I;//Ja !
|
||||
SPB G3141;
|
||||
|
||||
U "10s-Impuls";//Nach 10s
|
||||
R "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet;//Erneute Anfrage
|
||||
|
||||
BEA;
|
||||
|
||||
A3141: L 16#3130;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
UN "DHWtoVP_Sensoren".Stau_BG3130.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
G3141: L 16#3127;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
UN "DHWtoVP_Sensoren".Stau_BG3127.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
//GOHDReqM an Host senden:
|
||||
T3141: L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse;
|
||||
L 0;//Barcode bekannt?
|
||||
==D;//Nein!
|
||||
BEB;//Warten!
|
||||
|
||||
CALL "Daten_in_SendFIFO_speichern", "Daten_für_SendFIFO"
|
||||
( "TelegrammKennung[1]" := 'G' ,
|
||||
"TelegrammKennung[2]" := 'O' ,
|
||||
"TelegrammKennung[3]" := 'H' ,
|
||||
"TelegrammKennung[4]" := 'D' ,
|
||||
"TelegrammKennung[5]" := 'R' ,
|
||||
"TelegrammKennung[6]" := 'e' ,
|
||||
"TelegrammKennung[7]" := 'q' ,
|
||||
"TelegrammKennung[8]" := 'M' ,
|
||||
TrolleyID := "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse ,
|
||||
StationsNr := 3143 , //3141
|
||||
Port := 2 ,
|
||||
Ret_Val_FIFO_IN := "MB199" ,
|
||||
Error := #"Error.Bit"
|
||||
);
|
||||
|
||||
UN #"Error.Bit";
|
||||
S "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet;
|
||||
|
||||
BEA;
|
||||
|
||||
X3141E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3134: (Kontrollplatz)
|
||||
L "MW190";
|
||||
L 3134 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X3134E;
|
||||
|
||||
//Trolley kann gestartet werden: (Vorerst immer)
|
||||
U "BG3134" ;//Trolley ist in Schleuse
|
||||
U "Clock_2Hz";
|
||||
= "PF0136";
|
||||
|
||||
//Ausfahren mit Taste:
|
||||
U "SF0136";
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
X3134E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3136: (Vor Ausfahrt Kontrollplatz)
|
||||
L "MW190";
|
||||
L 3136 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X3136E;
|
||||
|
||||
BEU
|
||||
|
||||
X3731E: NOP 0
|
||||
//Quell-Steuerung:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Raus_Trolleys;
|
||||
L 0;
|
||||
>I;//Weiche von 2.Quelle schon belegt
|
||||
O "MB3141" ;//Andere Quelle aktiv
|
||||
BEB;
|
||||
|
||||
//Ziel-Check:
|
||||
L #EndZiel;
|
||||
L 16#BAAA ;//Kontroll-Platz?
|
||||
==I;//Ja !
|
||||
SPB A3136 ;//Abzweig fahren
|
||||
|
||||
--- NW 3: Bereich 4203: Weiterfahren erlaubt ? (AFS von BST) ---
|
||||
L "MW190"
|
||||
L 4203 // Aufruf von Schleuse 4203 ?
|
||||
<>I // Nein!
|
||||
JC X4203E
|
||||
|
||||
SET
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
X4203E: NOP 0
|
||||
|
||||
|
||||
--- NW 4: Schleuse 4207: (Vor BypPass von LP) ---
|
||||
L "MW190"
|
||||
L 4207 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X4207E
|
||||
|
||||
// Quell-Steuerung:
|
||||
L "DLPtoHW_OmniFahren".Weiche_4223.Dyn.Weichen_Ziel
|
||||
L 16#4211 // Fahren Trolleys zu BG4211?
|
||||
==I // Ja!
|
||||
O "MB4223" // Weiche ist auf Abzweig
|
||||
O "DLPtoHW_OmniFahren".Weiche_4223.Dyn.Status.Reset_aktiv
|
||||
BEC // Warten !
|
||||
|
||||
// Ziel-Check:
|
||||
AN "MB4223" // Weiche Einfahrt ByPass
|
||||
AN "MB4210"
|
||||
AN "DHWtoVP_Sensoren".Stau_BG4210.Stat.B_Akt
|
||||
AN "DHWtoVP_Sensoren".Stau_BG4211.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
X4207E: NOP 0
|
||||
|
||||
|
||||
--- NW 5: Bereich 3145: Weiterfahren erlaubt ? (AFS von 1.Ebene) ---
|
||||
L "MW190"
|
||||
L 3145 // Aufruf von Schleuse 3145 ?
|
||||
<>I // Nein!
|
||||
JC X3145E
|
||||
|
||||
SET
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
X3145E: NOP 0
|
||||
|
||||
|
||||
--- NW 6: Schleuse 3143: (Anfrage KontrollPlatz) ---
|
||||
L "MW190"
|
||||
L 3143 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X3143E
|
||||
|
||||
L "MD182" // ShopGroup
|
||||
L DINT#-1 // Leer-Trolley?
|
||||
==D // Ja !
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
BEC // Kein Telegramm!
|
||||
|
||||
A "SGes".Ohne_PC_Fahren // Also ohne Anfrage
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
JC N3143
|
||||
SPA G3136;
|
||||
|
||||
// GOHDReqM an Host senden:
|
||||
A "DHWtoVP_OmniFahren".Schleuse_3143.Status2.Telegramm_gesendet
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
BEC
|
||||
A3136: L 16#3130;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse
|
||||
L 0 // Barcode bekannt?
|
||||
==D // Nein!
|
||||
BEC // Warten!
|
||||
UN "DHWtoVP_Sensoren".Stau_BG3130.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse, StationsNr:=3143, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit")
|
||||
BEA;
|
||||
|
||||
AN "Error.Bit"
|
||||
S "DHWtoVP_OmniFahren".Schleuse_3143.Status2.Telegramm_gesendet
|
||||
G3136: L 16#3127;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
// Trolleydaten neu anlegen: (Falls noch als Daten-Leiche vorhanden war)
|
||||
N3143: CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DHWtoVP_OmniFahren".Schleuse_3143.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) // Kein Ziel
|
||||
UN "DHWtoVP_Sensoren".Stau_BG3127.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
X3143E: NOP 0
|
||||
X3136E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 7: Schleuse 3141: (Vor Einfahrt Kontrollplatz) ---
|
||||
L "MW190"
|
||||
L 3141 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X3141E
|
||||
|
||||
// Quell-Steuerung:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3136.Dyn.Raus_Trolleys
|
||||
L 0
|
||||
>I // Weiche von 2.Quelle schon belegt
|
||||
O "MB3136" // Andere Quelle aktiv
|
||||
BEC
|
||||
|
||||
// Leerer Trolley vom Leerpuffer?
|
||||
L "MD182" // ShopGroup
|
||||
L DINT#-1 // Leer-Trolley?
|
||||
==D // Ja !
|
||||
O "SGes".Ohne_PC_Fahren // Also Ziel simulieren
|
||||
JC G3141 // Kein Telegramm!
|
||||
|
||||
// Telegramm schon gesendet?
|
||||
L "MW194" // Endziel
|
||||
L 16#3130 // sinnvoll?
|
||||
<>I // Nein! (nochmalige Anfrage)
|
||||
A(
|
||||
CAC
|
||||
L 16#3127 // sinnvoll?
|
||||
<>I // Nein! (nochmalige Anfrage)
|
||||
)
|
||||
AN "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet
|
||||
JC T3141
|
||||
|
||||
// Ziel-Check:
|
||||
L "MW194" // EndZiel (wurde über Host-Telegramm in Datenbank eingetragen)
|
||||
L 16#3130 // Kontroll-Platz?
|
||||
==I // Ja !
|
||||
JC A3141 // Abzweig fahren
|
||||
|
||||
CAC
|
||||
L 16#3127 // Zum VP?
|
||||
==I // Ja !
|
||||
JC G3141
|
||||
|
||||
A "10s-Impuls" // Nach 10s
|
||||
R "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet // Erneute Anfrage
|
||||
|
||||
BEU
|
||||
|
||||
A3141: L 16#3130
|
||||
T "MW198" // Weichenziel
|
||||
|
||||
AN "DHWtoVP_Sensoren".Stau_BG3130.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
G3141: L 16#3127
|
||||
T "MW198" // Weichenziel
|
||||
|
||||
AN "DHWtoVP_Sensoren".Stau_BG3127.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
// GOHDReqM an Host senden:
|
||||
T3141: L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse
|
||||
L 0 // Barcode bekannt?
|
||||
==D // Nein!
|
||||
BEC // Warten!
|
||||
|
||||
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse, StationsNr:=3143, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit") // 3141
|
||||
|
||||
AN "Error.Bit"
|
||||
S "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet
|
||||
|
||||
BEU
|
||||
|
||||
X3141E: NOP 0
|
||||
|
||||
|
||||
--- NW 8: Schleuse 3134: (Kontrollplatz) ---
|
||||
L "MW190"
|
||||
L 3134 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X3134E
|
||||
|
||||
// Trolley kann gestartet werden: (Vorerst immer)
|
||||
A "BG3134" // Trolley ist in Schleuse
|
||||
A "Clock_2Hz"
|
||||
= "PF0136"
|
||||
|
||||
// Ausfahren mit Taste:
|
||||
A "SF0136"
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
X3134E: NOP 0
|
||||
|
||||
|
||||
--- NW 9: Schleuse 3136: (Vor Ausfahrt Kontrollplatz) ---
|
||||
L "MW190"
|
||||
L 3136 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X3136E
|
||||
|
||||
// Quell-Steuerung:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Raus_Trolleys
|
||||
L 0
|
||||
>I // Weiche von 2.Quelle schon belegt
|
||||
O "MB3141" // Andere Quelle aktiv
|
||||
BEC
|
||||
|
||||
// Ziel-Check:
|
||||
L EndZiel
|
||||
L 16#BAAA // Kontroll-Platz?
|
||||
==I // Ja !
|
||||
JC A3136 // Abzweig fahren
|
||||
|
||||
JU G3136
|
||||
|
||||
A3136: L 16#3130
|
||||
T "MW198" // Weichenziel
|
||||
|
||||
AN "DHWtoVP_Sensoren".Stau_BG3130.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
G3136: L 16#3127
|
||||
T "MW198" // Weichenziel
|
||||
|
||||
AN "DHWtoVP_Sensoren".Stau_BG3127.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
X3136E: NOP 0
|
||||
|
||||
|
||||
--- NW 10: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,103 +1,160 @@
|
||||
=== FB 1199: VP_Antriebe [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
MA0145 : "MAntrieb_PowerSave"
|
||||
MA0146 : "MAntrieb_PowerSave"
|
||||
MA0147 : "MAntrieb_PowerSave"
|
||||
MA0150 : "MAntrieb_PowerSave"
|
||||
MA0152 : "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
|
||||
BereichErr_Zusatz_7102 : Bool // Bereichsstörung -> Antrieb stoppen
|
||||
BereichErr_Zusatz_7104 : Bool // Bereichsstörung -> Antrieb stoppen
|
||||
BereichErr_Zusatz_7102_7104 : Bool // Bereichsstörung -> Antrieb stoppen
|
||||
Constant:
|
||||
FUNCTION_BLOCK "VP_Antriebe"
|
||||
TITLE = Antriebe UC071
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
MA0145 : "MAntrieb_PowerSave";
|
||||
MA0146 : "MAntrieb_PowerSave";
|
||||
MA0147 : "MAntrieb_PowerSave";
|
||||
MA0150 : "MAntrieb_PowerSave";
|
||||
MA0152 : "MAntrieb_PowerSave";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UC071/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
|
||||
A "DOutbound_Bereich".A01_UC071.BereichErr
|
||||
= BereichErr
|
||||
|
||||
// Bereichhalte:
|
||||
A(
|
||||
O BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7102.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr_Zusatz_7102
|
||||
|
||||
A(
|
||||
O BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7104.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr_Zusatz_7104
|
||||
|
||||
A(
|
||||
O BereichErr
|
||||
O BereichErr_Zusatz_7102
|
||||
O BereichErr_Zusatz_7104
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr_Zusatz_7102_7104
|
||||
|
||||
A "T191"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
|
||||
A "DOutbound_Bereich".A01_UC071.StOk_aktiv
|
||||
= Quit
|
||||
VAR_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
|
||||
BereichErr_Zusatz_7102 : Bool; // Bereichsstörung -> Antrieb stoppen
|
||||
BereichErr_Zusatz_7104 : Bool; // Bereichsstörung -> Antrieb stoppen
|
||||
BereichErr_Zusatz_7102_7104 : Bool; // Bereichsstörung -> Antrieb stoppen
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: MA0145 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7102, Q:="FC0145", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0145", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0145, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC071/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC071.BereichErr;
|
||||
= #BereichErr;
|
||||
|
||||
//Bereichhalte:
|
||||
U(;
|
||||
O #BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7102.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr_Zusatz_7102;
|
||||
|
||||
U(;
|
||||
O #BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7104.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr_Zusatz_7104;
|
||||
|
||||
U(;
|
||||
O #BereichErr;
|
||||
O #BereichErr_Zusatz_7102;
|
||||
O #BereichErr_Zusatz_7104;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr_Zusatz_7102_7104;
|
||||
|
||||
U "T191";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC071.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0145
|
||||
CALL #MA0145
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr_Zusatz_7102 ,
|
||||
Q := "FC0145" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0145" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0145
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 3: MA0146 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7102, Q:="FC0146", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0146", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0146, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0146
|
||||
CALL #MA0146
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr_Zusatz_7102 ,
|
||||
Q := "FC0146" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0146" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0146
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 4: MA0147 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7104, Q:="FC0147", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0147", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0147, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0147
|
||||
CALL #MA0147
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr_Zusatz_7104 ,
|
||||
Q := "FC0147" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0147" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0147
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 5: MA0150 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7104, Q:="FC0150", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0150", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0150, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0150
|
||||
CALL #MA0150
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr_Zusatz_7104 ,
|
||||
Q := "FC0150" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0150" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0150
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 6: MA0152 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7102_7104, Q:="FC0152", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0152", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0152, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0152
|
||||
CALL #MA0152
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr_Zusatz_7102_7104 ,
|
||||
Q := "FC0152" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0152" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0152
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 7: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+72
-62
@@ -1,84 +1,94 @@
|
||||
=== FC 1182: VP_Draussen_FC [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "VP_Draussen_FC" : Void
|
||||
TITLE = Draussen-FC: VollPuffer
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
SET // Rückmeldungen erst mal resetten
|
||||
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3121 (Sorter VP_A von KontrollPlatz): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 3121 ;//Aufruf von Schleuse 3121 ?
|
||||
<>I;//Nein!
|
||||
SPB X3121E;
|
||||
|
||||
--- NW 2: Schleuse 3121 (Sorter VP_A von KontrollPlatz): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 3121 // Aufruf von Schleuse 3121 ?
|
||||
<>I // Nein!
|
||||
JC X3121E
|
||||
L "MD182" ;//ShopGroup
|
||||
|
||||
L "MD182" // ShopGroup
|
||||
L "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX;
|
||||
|
||||
L "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX
|
||||
CALL "Reservierung_in_Puffer_eintragen"
|
||||
( TrolleyID := "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX ,
|
||||
Ziel := "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel ,
|
||||
ShopGroup := "MD182" ,
|
||||
Gesamt_Trolley_DL := 1000
|
||||
);
|
||||
|
||||
CALL FC "Reservierung_in_Puffer_eintragen" (TrolleyID:="DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX, Ziel:="DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel, ShopGroup:="MD182", Gesamt_Trolley_DL:=1000)
|
||||
//Daten in Sep 3121 löschen:
|
||||
L DINT#0;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
// Daten in Sep 3121 löschen:
|
||||
L DINT#0
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel
|
||||
//Bei Partner (Schleuse 3123) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0;
|
||||
T "DVP_OmniFahren".Schleuse_3123.Dyn.Sk.Akt_Schritt;
|
||||
|
||||
// Bei Partner (Schleuse 3123) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0
|
||||
T "DVP_OmniFahren".Schleuse_3123.Dyn.Sk.Akt_Schritt
|
||||
L DINT#0;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
L DINT#0
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
X3121E: NOP 0;
|
||||
|
||||
X3121E: NOP 0
|
||||
NETWORK
|
||||
TITLE = Schleuse 3123 (Sorter VP_A von RückführStrecke): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 3123 ;//Aufruf von Schleuse 3123 ?
|
||||
<>I;//Nein!
|
||||
SPB X3123E;
|
||||
|
||||
SET;
|
||||
/// R "M83.1"
|
||||
|
||||
--- NW 3: Schleuse 3123 (Sorter VP_A von RückführStrecke): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 3123 // Aufruf von Schleuse 3123 ?
|
||||
<>I // Nein!
|
||||
JC X3123E
|
||||
L "MD182" ;//ShopGroup
|
||||
L "DVP_OmniFahren".Schleuse_3123.Dyn.Trolley_ShopGroup;//Shop-Gruppe
|
||||
|
||||
SET
|
||||
// / R "M83.1"
|
||||
CALL "Reservierung_in_Puffer_eintragen"
|
||||
( TrolleyID := "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX ,
|
||||
Ziel := "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel ,
|
||||
ShopGroup := "MD182" ,
|
||||
Gesamt_Trolley_DL := 1000
|
||||
);
|
||||
|
||||
L "MD182" // ShopGroup
|
||||
L "DVP_OmniFahren".Schleuse_3123.Dyn.Trolley_ShopGroup // Shop-Gruppe
|
||||
//Daten in Sep 3123 löschen:
|
||||
L DINT#0;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
CALL FC "Reservierung_in_Puffer_eintragen" (TrolleyID:="DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX, Ziel:="DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel, ShopGroup:="MD182", Gesamt_Trolley_DL:=1000)
|
||||
//Bei Partner (Schleuse 3121) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0;
|
||||
T "DVP_OmniFahren".Schleuse_3121.Dyn.Sk.Akt_Schritt;
|
||||
|
||||
// Daten in Sep 3123 löschen:
|
||||
L DINT#0
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel
|
||||
L DINT#0;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
// Bei Partner (Schleuse 3121) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0
|
||||
T "DVP_OmniFahren".Schleuse_3121.Dyn.Sk.Akt_Schritt
|
||||
BEA;
|
||||
|
||||
L DINT#0
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel
|
||||
X3123E: NOP 0;
|
||||
|
||||
BEU
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
X3123E: NOP 0
|
||||
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+90
-71
@@ -1,101 +1,120 @@
|
||||
=== FC 1180: VP_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"
|
||||
FUNCTION "VP_Leser_FC" : Void
|
||||
TITLE = Leser-FC: Vollpuffer
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_TEMP
|
||||
Zielebene : Word;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 3121: (Sorter VP A / KontrollPlatz) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 3121 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X3121E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y3121
|
||||
//Keine
|
||||
L 0;//Evtl. Zwischenziel (MW196)
|
||||
T "MW196";
|
||||
|
||||
BEU
|
||||
NETWORK
|
||||
TITLE = Schleuse 3121: (Sorter VP A / KontrollPlatz)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 3121 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X3121E;
|
||||
|
||||
Y3121: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y3121;
|
||||
|
||||
// Daten in Datenbank erzeugen:
|
||||
L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse
|
||||
L DINT#0 // ID bekannt?
|
||||
==D // Nein
|
||||
BEC
|
||||
BEA;
|
||||
|
||||
// /In Zukunft Anfrage bei Host!
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3121.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#815) // /
|
||||
Y3121: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
BEU
|
||||
//Daten in Datenbank erzeugen:
|
||||
L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse;
|
||||
L DINT#0 ;//ID bekannt?
|
||||
==D;//Nein
|
||||
BEB;
|
||||
|
||||
X3121E: NOP 0
|
||||
///In Zukunft Anfrage bei Host!
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DVP_OmniFahren".Schleuse_3121.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#0000 ,
|
||||
ShopGroup := DINT#815 ///
|
||||
);
|
||||
|
||||
BEA;
|
||||
|
||||
--- NW 3: Schleuse 3123: (Sorter VP A / RückführStecke) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 3123 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X3123E
|
||||
X3121E: NOP 0;
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y3123
|
||||
NETWORK
|
||||
TITLE = Schleuse 3123: (Sorter VP A / RückführStecke)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 3123 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X3123E;
|
||||
|
||||
BEU
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y3123;
|
||||
|
||||
Y3123: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
BEA;
|
||||
|
||||
// Daten in Datenbank erzeugen:
|
||||
L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse
|
||||
L DINT#0 // ID bekannt?
|
||||
==D // Nein
|
||||
BEC
|
||||
Y3123: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
// /In Zukunft Anfrage bei Host!
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3123.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#815) // /
|
||||
//Daten in Datenbank erzeugen:
|
||||
L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse;
|
||||
L DINT#0 ;//ID bekannt?
|
||||
==D;//Nein
|
||||
BEB;
|
||||
|
||||
BEU
|
||||
///In Zukunft Anfrage bei Host!
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DVP_OmniFahren".Schleuse_3123.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#0000 ,
|
||||
ShopGroup := DINT#815 ///
|
||||
);
|
||||
|
||||
X3123E: NOP 0
|
||||
BEA;
|
||||
|
||||
X3123E: NOP 0;
|
||||
|
||||
--- NW 4: Schleuse 3244: (nach Puffer-Ausfahrt) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 3244 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X3244E
|
||||
NETWORK
|
||||
TITLE = Schleuse 3244: (nach Puffer-Ausfahrt)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 3244 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X3244E;
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y3244
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y3244;
|
||||
|
||||
SET
|
||||
// / S "DVP_OmniFahren".Schleuse_3244.Dyn.HMI.Abzweig_fahren///
|
||||
SET;
|
||||
/// S "DVP_OmniFahren".Schleuse_3244.Dyn.HMI.Abzweig_fahren///
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
Y3244: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
Y3244: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
// /In Zukunft Anfrage bei Host!
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3244.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3244.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=815) // Erst mal, da kein Host! | /
|
||||
///In Zukunft Anfrage bei Host!
|
||||
CALL "Trolleydaten_neu_anlegen"//Erst mal, da kein Host!
|
||||
( Gesamt_Trolley_DL := "DVP_OmniFahren".Schleuse_3244.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DVP_OmniFahren".Schleuse_3244.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#0000 ,
|
||||
ShopGroup := 815 ///
|
||||
);
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
X3244E: NOP 0
|
||||
X3244E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+234
-155
@@ -1,191 +1,270 @@
|
||||
=== FB 1128: VP_OmniFahren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_3121 : "MHMOmniSchleuse"
|
||||
Schleuse_3123 : "MHMOmniSchleuse"
|
||||
Schleuse_3244 : "MHMOmniSchleuse_Plus"
|
||||
Weiche_3245 : "MHMOmniWeiche_Plus"
|
||||
Trolleys_starten : Struct
|
||||
Flanke : Bool
|
||||
Wartezeit_aktiv : Bool
|
||||
Timer_Wartenzeit : Int
|
||||
Einfahrt_VP : Struct
|
||||
3121_stop : Bool
|
||||
3123_stop : Bool
|
||||
3121_Ziel : Int
|
||||
3123_Ziel : Int
|
||||
Ausfahrt_VP : Struct
|
||||
3244_stop : Bool
|
||||
3244_Ziel : Word
|
||||
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_vor : Bool
|
||||
Antrieb_stop : Bool
|
||||
Fahren_Ok : Bool
|
||||
PS_aktivieren : Bool
|
||||
Constant:
|
||||
FUNCTION_BLOCK "VP_OmniFahren"
|
||||
TITLE = Omnifahren Outbound Vollpuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_3121 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Schleuse_3123 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Schleuse_3244 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Weiche_3245 : "MHMOmniWeiche_Plus";
|
||||
Trolleys_starten : Struct
|
||||
Flanke : Bool;
|
||||
Wartezeit_aktiv : Bool;
|
||||
Timer_Wartenzeit { S7_SetPoint := 'True'} : Int;
|
||||
END_STRUCT;
|
||||
Einfahrt_VP : Struct
|
||||
"3121_stop" : Bool;
|
||||
"3123_stop" : Bool;
|
||||
"3121_Ziel" : Int;
|
||||
"3123_Ziel" : Int;
|
||||
END_STRUCT;
|
||||
Ausfahrt_VP : Struct
|
||||
"3244_stop" : Bool;
|
||||
"3244_Ziel" : Word;
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Systemzeug ---
|
||||
// VollPuffer-Bereich:
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
= Schleuse_3121.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3123.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3244.Dyn.Sk.Auto_akt
|
||||
= Weiche_3245.Dyn.Status.Auto_akt
|
||||
|
||||
AN "DOutbound_Bereich".A01_UC071.BereichErr
|
||||
= Schleuse_3121.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3123.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3244.Dyn.Sk.Bereich_ok
|
||||
= Weiche_3245.Dyn.Status.Bereich_ok
|
||||
VAR_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_vor : Bool;
|
||||
Antrieb_stop : Bool;
|
||||
Fahren_Ok : Bool;
|
||||
PS_aktivieren : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Störungen quittieren UZ7102 ---
|
||||
A "DOutbound_Bereich".A01_UZ7102.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC071.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Systemzeug
|
||||
|
||||
//VollPuffer-Bereich:
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
= #Schleuse_3121.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3123.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3244.Dyn.Sk.Auto_akt;
|
||||
= #Weiche_3245.Dyn.Status.Auto_akt;
|
||||
|
||||
--- NW 3: Schleuse 3121 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=3121, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3127", B_InSchleuse:="BG3121", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0144", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3121", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW500, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0144.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0144.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0144.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0144.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // weiterfahrt über Sorter-Sep | weiterfahrt über Sorter-Sep
|
||||
UN "DOutbound_Bereich".A01_UC071.BereichErr;
|
||||
= #Schleuse_3121.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3123.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3244.Dyn.Sk.Bereich_ok;
|
||||
= #Weiche_3245.Dyn.Status.Bereich_ok;
|
||||
|
||||
AN Schleuse_3121.Dyn.Status.Reset_aktiv
|
||||
JC NoR3121
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7102
|
||||
U "DOutbound_Bereich".A01_UZ7102.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC071.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
L DINT#0
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Separator.Default_Ziel
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel
|
||||
NETWORK
|
||||
TITLE = Schleuse 3121
|
||||
CALL #Schleuse_3121
|
||||
( Schleusen_Nr := 3121 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3127" ,
|
||||
B_InSchleuse := "BG3121" ,
|
||||
B_AusSchleuse := , //weiterfahrt über Sorter-Sep
|
||||
Antrieb_Schleuse_aktiv := "MA0144" ,
|
||||
Schleuse_geöffnet := "MB3121" ,
|
||||
Y_Schleuse_Auf := , //weiterfahrt über Sorter-Sep
|
||||
Error := %DB708.DBW500 ,
|
||||
Antrieb_Schleuse_vor := "DHWtoVP_Antriebe".MA0144.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DHWtoVP_Antriebe".MA0144.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DHWtoVP_Antriebe".MA0144.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DHWtoVP_Antriebe".MA0144.Stat.A_PS ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NoR3121: NOP 0
|
||||
UN #Schleuse_3121.Dyn.Status.Reset_aktiv;
|
||||
SPB NoR3121;
|
||||
|
||||
L DINT#0;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Separator.Default_Ziel;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
--- NW 4: Schleuse 3123 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=3123, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3243", B_InSchleuse:="BG3123", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0152", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3123", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW502, Antrieb_Schleuse_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_Schleuse_start:="DVP_Antriebe".MA0152.Stat.A_start, Antrieb_Schleuse_stop:="DVP_Antriebe".MA0152.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVP_Antriebe".MA0152.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // weiterfahrt über Sorter-Sep | weiterfahrt über Sorter-Sep
|
||||
NoR3121: NOP 0;
|
||||
|
||||
AN Schleuse_3123.Dyn.Status.Reset_aktiv
|
||||
JC NoR3123
|
||||
NETWORK
|
||||
TITLE = Schleuse 3123
|
||||
CALL #Schleuse_3123
|
||||
( Schleusen_Nr := 3123 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3243" ,
|
||||
B_InSchleuse := "BG3123" ,
|
||||
B_AusSchleuse := , //weiterfahrt über Sorter-Sep
|
||||
Antrieb_Schleuse_aktiv := "MA0152" ,
|
||||
Schleuse_geöffnet := "MB3123" ,
|
||||
Y_Schleuse_Auf := , //weiterfahrt über Sorter-Sep
|
||||
Error := %DB708.DBW502 ,
|
||||
Antrieb_Schleuse_vor := "DVP_Antriebe".MA0152.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVP_Antriebe".MA0152.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVP_Antriebe".MA0152.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DVP_Antriebe".MA0152.Stat.A_PS ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
L DINT#0
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Separator.Default_Ziel
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel
|
||||
UN #Schleuse_3123.Dyn.Status.Reset_aktiv;
|
||||
SPB NoR3123;
|
||||
|
||||
NoR3123: NOP 0
|
||||
L DINT#0;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Separator.Default_Ziel;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
NoR3123: NOP 0;
|
||||
|
||||
--- NW 5: Störungen anzeigen UZ7102 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7102.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC071.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7102
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7102.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC071.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7105
|
||||
U "DOutbound_Bereich".A01_UZ7105.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC071.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
--- NW 6: Störungen quittieren UZ7105 ---
|
||||
A "DOutbound_Bereich".A01_UZ7105.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC071.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
NETWORK
|
||||
TITLE = Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung)
|
||||
U "MB3244";
|
||||
FP #Trolleys_starten.Flanke;
|
||||
S #Trolleys_starten.Wartezeit_aktiv;
|
||||
SPBN Warten ;//Negierter Sprung
|
||||
|
||||
L 15 ;//Wartezeit in Sekunden
|
||||
T #Trolleys_starten.Timer_Wartenzeit;
|
||||
|
||||
--- NW 7: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) ---
|
||||
A "MB3244"
|
||||
Rise Trolleys_starten.Flanke
|
||||
S Trolleys_starten.Wartezeit_aktiv
|
||||
JCN Warten // Negierter Sprung
|
||||
Warten: UN #Trolleys_starten.Wartezeit_aktiv;
|
||||
O;
|
||||
U "MB3244";//Schleuse offen
|
||||
UN "MA0150";//Aber Trolley fährt nicht
|
||||
ON "1s-Impuls";
|
||||
SPB Wait;
|
||||
|
||||
L 15 // Wartezeit in Sekunden
|
||||
T Trolleys_starten.Timer_Wartenzeit
|
||||
L #Trolleys_starten.Timer_Wartenzeit;
|
||||
+ -1;
|
||||
T #Trolleys_starten.Timer_Wartenzeit;
|
||||
L 0;
|
||||
>I;
|
||||
SPB Wait;
|
||||
|
||||
Warten: AN Trolleys_starten.Wartezeit_aktiv
|
||||
O
|
||||
A "MB3244" // Schleuse offen
|
||||
AN "MA0150" // Aber Trolley fährt nicht
|
||||
ON "1s-Impuls"
|
||||
JC Wait
|
||||
SET;
|
||||
R #Trolleys_starten.Wartezeit_aktiv;
|
||||
|
||||
L Trolleys_starten.Timer_Wartenzeit
|
||||
+ -1
|
||||
T Trolleys_starten.Timer_Wartenzeit
|
||||
L 0
|
||||
>I
|
||||
JC Wait
|
||||
Wait: NOP 0;
|
||||
|
||||
SET
|
||||
R Trolleys_starten.Wartezeit_aktiv
|
||||
NETWORK
|
||||
TITLE = Schleuse 3244
|
||||
SET;
|
||||
R #PS_aktivieren;
|
||||
|
||||
Wait: NOP 0
|
||||
UN #Trolleys_starten.Wartezeit_aktiv;
|
||||
= #Fahren_Ok;
|
||||
|
||||
CALL #Schleuse_3244
|
||||
( Schleusen_Nr := 3244 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3242" ,
|
||||
B_InSchleuse := "BG3244" ,
|
||||
B_Zähl := , //Über Weiche +1
|
||||
B_Stau_raus := , //Ziel-FC
|
||||
Start_Ok := #Fahren_Ok ,
|
||||
Antrieb_Schleuse_aktiv := "MA0150" ,
|
||||
Antrieb_plus_aktiv := "MA0152" ,
|
||||
Schleuse_geöffnet := "MB3244" ,
|
||||
Y_Schleuse_Auf := "DVP_Zylinder".Schleuse_3244.Stat.Ast ,
|
||||
Error := %DB708.DBW516 ,
|
||||
Antrieb_Schleuse_vor := "DVP_Antriebe".MA0150.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVP_Antriebe".MA0150.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVP_Antriebe".MA0150.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := #PS_aktivieren ,
|
||||
Antrieb_plus_vor := "DVP_Antriebe".MA0152.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DVP_Antriebe".MA0152.Stat.A_start ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
--- NW 8: Schleuse 3244 ---
|
||||
SET
|
||||
R PS_aktivieren
|
||||
U #PS_aktivieren;
|
||||
L s5t#40s;
|
||||
SE "T28";
|
||||
|
||||
AN Trolleys_starten.Wartezeit_aktiv
|
||||
= Fahren_Ok
|
||||
U "T28";
|
||||
= "DVP_Antriebe".MA0150.Stat.A_PS;
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=3244, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3242", B_InSchleuse:="BG3244", B_Zähl:=?, B_Stau_raus:=?, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0150", Antrieb_plus_aktiv:="MA0152", Schleuse_geöffnet:="MB3244", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVP_Zylinder".Schleuse_3244.Stat.Ast, Error:=DB708.DBW516, Antrieb_Schleuse_vor:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_Schleuse_start:="DVP_Antriebe".MA0150.Stat.A_start, Antrieb_Schleuse_stop:="DVP_Antriebe".MA0150.Stat.Stop_vor, Antrieb_Schleuse_PS:=PS_aktivieren, Antrieb_plus_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_plus_start:="DVP_Antriebe".MA0152.Stat.A_start, hStOk:=ErrAnz) // Über Weiche +1 | Ziel-FC
|
||||
NETWORK
|
||||
TITLE = Weiche 3245
|
||||
U "MA0150";
|
||||
U "MA0152";
|
||||
= #Antrieb_aktiv;
|
||||
SET;
|
||||
R #Antrieb_vor;
|
||||
R #Antrieb_stop;
|
||||
|
||||
A PS_aktivieren
|
||||
L s5t#40s
|
||||
OnDelay "T28"
|
||||
CALL #Weiche_3245
|
||||
( Weichen_Nr := 3245 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Fahren_Ok := 1 ,
|
||||
B_Ziel_gerade := "BG3246" ,
|
||||
B_Ziel_abzweig := "BG3243" ,
|
||||
Antrieb_Weiche_aktiv := #Antrieb_aktiv ,
|
||||
Antrieb_Gerade_aktiv := "MA0151" ,
|
||||
Antrieb_Abzweig_aktiv := "MA0152" ,
|
||||
Weiche_ist_AST := "MB3245" ,
|
||||
Y_Weiche_abzweig := "DVP_Zylinder".Weiche_3245.Stat.Ast ,
|
||||
Error := %DB708.DBW518 ,
|
||||
Antrieb_Weiche_vor := #Antrieb_vor ,
|
||||
Antrieb_Weiche_stop := #Antrieb_stop ,
|
||||
Antrieb_Weiche_gerade_vor := "DVPtoEP_Antriebe".MA0151.Stat.A_vor ,
|
||||
Antrieb_Weiche_gerade_stop := "DVPtoEP_Antriebe".MA0151.Stat.Stop_vor ,
|
||||
Antrieb_Weiche_abzweig_vor := "DVP_Antriebe".MA0152.Stat.A_vor ,
|
||||
Antrieb_Weiche_abzweig_stop := "DVP_Antriebe".MA0152.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
A "T28"
|
||||
= "DVP_Antriebe".MA0150.Stat.A_PS
|
||||
U #Antrieb_vor;
|
||||
U(;
|
||||
UN "MB3245";//Weiche gerade
|
||||
UN "DVP_Sensoren".Stau_BG3246.Stat.B_Akt;
|
||||
O;
|
||||
U "MB3245" ;//Weiche auf Abzweig
|
||||
UN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt;
|
||||
);
|
||||
S "DVP_Antriebe".MA0150.Stat.A_vor;
|
||||
|
||||
U #Antrieb_vor;
|
||||
S "DVP_Antriebe".MA0152.Stat.A_vor;
|
||||
S "DVP_Antriebe".MA0150.Stat.A_start;
|
||||
S "DVP_Antriebe".MA0152.Stat.A_start;
|
||||
|
||||
--- NW 9: Weiche 3245 ---
|
||||
A "MA0150"
|
||||
A "MA0152"
|
||||
= Antrieb_aktiv
|
||||
SET
|
||||
R Antrieb_vor
|
||||
R Antrieb_stop
|
||||
U #Antrieb_stop;
|
||||
S "DVP_Antriebe".MA0150.Stat.Stop_vor;
|
||||
/// S "DVP_Antriebe".MA0152.Stat.Stop_vor //Sonst Blockade
|
||||
|
||||
CALL FB "None" , (Weichen_Nr:=3245, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG3246", B_Ziel_abzweig:="BG3243", Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0151", Antrieb_Abzweig_aktiv:="MA0152", Weiche_ist_AST:="MB3245", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DVP_Zylinder".Weiche_3245.Stat.Ast, Error:=DB708.DBW518, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, Antrieb_Weiche_gerade_stop:="DVPtoEP_Antriebe".MA0151.Stat.Stop_vor, Antrieb_Weiche_abzweig_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DVP_Antriebe".MA0152.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7105
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7105.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC071.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
A Antrieb_vor
|
||||
A(
|
||||
AN "MB3245" // Weiche gerade
|
||||
AN "DVP_Sensoren".Stau_BG3246.Stat.B_Akt
|
||||
O
|
||||
A "MB3245" // Weiche auf Abzweig
|
||||
AN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt
|
||||
)
|
||||
S "DVP_Antriebe".MA0150.Stat.A_vor
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
A Antrieb_vor
|
||||
S "DVP_Antriebe".MA0152.Stat.A_vor
|
||||
S "DVP_Antriebe".MA0150.Stat.A_start
|
||||
S "DVP_Antriebe".MA0152.Stat.A_start
|
||||
|
||||
A Antrieb_stop
|
||||
S "DVP_Antriebe".MA0150.Stat.Stop_vor
|
||||
// / S "DVP_Antriebe".MA0152.Stat.Stop_vor //Sonst Blockade
|
||||
|
||||
|
||||
--- NW 10: Störungen anzeigen UZ7105 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7105.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC071.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 11: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
+485
-422
@@ -1,424 +1,487 @@
|
||||
=== FC 1181: VP_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
|
||||
ZielGruppe : Word
|
||||
Trolley_unbekannt : Bool // Trolley ist nicht in DL
|
||||
Express_Abruf : Bool
|
||||
Error.Bit : 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 3121: Weiterfahren erlaubt ? (Sorter VP_A von KontrollPlatz) ---
|
||||
L "MW190"
|
||||
L 3121 // Aufruf von Schleuse 3121 ?
|
||||
<>I // Nein!
|
||||
JC X3121E
|
||||
|
||||
L "VP_TravelFIFO_A".Travel_FIFO_BG3120.FIFO.ANZAHL
|
||||
L 0 // Daten noch im Travel-FIFO?
|
||||
<>I // Ja !
|
||||
O "MB3121" // Trolley fährt schon
|
||||
O "DVP_OmniFahren".Einfahrt_VP."3121_stop"
|
||||
BEC
|
||||
|
||||
L 0
|
||||
T Ziel_hex
|
||||
|
||||
A "SGes".Ohne_PC_Fahren // Also Ziel simulieren
|
||||
JC Sim3121
|
||||
|
||||
AN "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet
|
||||
JC T3121
|
||||
|
||||
// Shop-Group definiert ?
|
||||
L "MD182" // ShopGroup
|
||||
L DINT#0 // bekannt?
|
||||
<>D // Ja !
|
||||
A(
|
||||
CAC
|
||||
L DINT#0815 // bekannt?
|
||||
<>D // Ja !
|
||||
O "SGes".Ohne_PC_Fahren // 815 nur ohne PC fahren Ok!
|
||||
)
|
||||
JC VP3121
|
||||
|
||||
// Erneute Anfrage bei Host!
|
||||
A "10s-Impuls"
|
||||
R "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet
|
||||
|
||||
BEU
|
||||
|
||||
// Voll-Puffer ermitteln oder Ziel schon fest?
|
||||
VP3121: L Ziel_hex // Evtl. von Simulation
|
||||
L 16#0 // schon angegeben?
|
||||
<>I // Ja!
|
||||
JC ZielFest3121
|
||||
|
||||
CALL FC "ShopGroup to Rein-Lager ermitteln" (ShopGroup:="MD182", Puffer:=Ziel_hex)
|
||||
|
||||
// Ziel = Voll-Lager?
|
||||
ZielFest3121: L Ziel_hex
|
||||
L 16#F000
|
||||
AW
|
||||
L 16#B000 // Ziel = VollLager ?
|
||||
==I // Ja!
|
||||
R "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager
|
||||
JC LagerOk_3121
|
||||
|
||||
SET
|
||||
S "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager
|
||||
|
||||
BEU // Nicht ins Lager fahren !
|
||||
|
||||
LagerOk_3121: L Ziel_hex
|
||||
L 16#FFF
|
||||
AW
|
||||
BTI // Damit Int 101-151 als Ziel !
|
||||
T Ziel_int
|
||||
|
||||
// Check, ob Ziel-Lager Inilauf aktiv hat:
|
||||
T "MW220"
|
||||
|
||||
CALL FC "DatenOut" (SSDB:=275, 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 Lager_DB
|
||||
L "MW226"
|
||||
T Lager_DW
|
||||
ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#28 // Offset Status2 (Bit 7: Inilauf)
|
||||
SLD 3
|
||||
L 7 // Damit DBX_Bit 7
|
||||
OD
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
OPN DB[Lager_DB] // Lager-DB öffnen
|
||||
|
||||
A DBX [AR1Zeiger] // Lager hat Inilauf aktiv
|
||||
BEC // Sonst kann der Inilauf nie beendet werden!
|
||||
|
||||
// Check, ob Ziel-Lager Platz hat:
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#28 // Offset Status2 (Bit 1: Piuffer hat Platz_IN)
|
||||
SLD 3
|
||||
L 1 // Damit DBX_Bit 1
|
||||
OD
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
OPN DB[Lager_DB] // Lager-DB öffnen
|
||||
|
||||
AN DBX [AR1Zeiger] // Lager hat keinen Platz
|
||||
BEC
|
||||
|
||||
// Ziel übergeben:
|
||||
L Ziel_int
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Separator.Default_Ziel
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel
|
||||
|
||||
// Scanner-IDX übergeben:
|
||||
L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX
|
||||
|
||||
CLR // Wird über MSorterRein (FB1423/5) gestartet!
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
// GOHDReqM an Host senden:
|
||||
T3121: L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse
|
||||
L 0 // Barcode bekannt?
|
||||
==D // Nein!
|
||||
BEC // Warten!
|
||||
|
||||
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse, StationsNr:=3121, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit")
|
||||
FUNCTION "VP_Ziel_FC" : Void
|
||||
TITLE = Ziel-FC: Vollpuffer_OmniFahren
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_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;
|
||||
ZielGruppe : Word;
|
||||
Trolley_unbekannt : Bool; // Trolley ist nicht in DL
|
||||
Express_Abruf : Bool;
|
||||
"Error.Bit" : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3121: Weiterfahren erlaubt ? (Sorter VP_A von KontrollPlatz)
|
||||
L "MW190";
|
||||
L 3121 ;//Aufruf von Schleuse 3121 ?
|
||||
<>I;//Nein!
|
||||
SPB X3121E;
|
||||
|
||||
L "VP_TravelFIFO_A".Travel_FIFO_BG3120.FIFO.ANZAHL;
|
||||
L 0;//Daten noch im Travel-FIFO?
|
||||
<>I;//Ja !
|
||||
O "MB3121" ;//Trolley fährt schon
|
||||
O "DVP_OmniFahren".Einfahrt_VP."3121_stop";
|
||||
BEB;
|
||||
|
||||
L 0;
|
||||
T #Ziel_hex;
|
||||
|
||||
U "SGes".Ohne_PC_Fahren;//Also Ziel simulieren
|
||||
SPB Sim3121;
|
||||
|
||||
UN "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet;
|
||||
SPB T3121;
|
||||
|
||||
//Shop-Group definiert ?
|
||||
L "MD182" ;//ShopGroup
|
||||
L DINT#0;//bekannt?
|
||||
<>D;//Ja !
|
||||
U(;
|
||||
TAK;
|
||||
L DINT#0815 ;//bekannt?
|
||||
<>D;//Ja !
|
||||
O "SGes".Ohne_PC_Fahren;//815 nur ohne PC fahren Ok!
|
||||
);
|
||||
SPB VP3121;
|
||||
|
||||
//Erneute Anfrage bei Host!
|
||||
U "10s-Impuls";
|
||||
R "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet;
|
||||
|
||||
BEA;
|
||||
|
||||
//Voll-Puffer ermitteln oder Ziel schon fest?
|
||||
VP3121: L #Ziel_hex ;//Evtl. von Simulation
|
||||
L 16#0 ;//schon angegeben?
|
||||
<>I;//Ja!
|
||||
SPB ZielFest3121;
|
||||
|
||||
CALL "ShopGroup_Rein-Lager ermitteln"
|
||||
( ShopGroup := "MD182" ,
|
||||
Puffer := #Ziel_hex
|
||||
);
|
||||
|
||||
//Ziel = Voll-Lager?
|
||||
ZielFest3121: L #Ziel_hex;
|
||||
L 16#F000;
|
||||
UW;
|
||||
L 16#B000 ;//Ziel = VollLager ?
|
||||
==I ;//Ja!
|
||||
R "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager;
|
||||
SPB LagerOk_3121;
|
||||
|
||||
SET;
|
||||
S "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager;
|
||||
|
||||
BEA;//Nicht ins Lager fahren !
|
||||
|
||||
LagerOk_3121: L #Ziel_hex;
|
||||
L 16#FFF;
|
||||
UW;
|
||||
BTI ;//Damit Int 101-151 als Ziel !
|
||||
T #Ziel_int;
|
||||
|
||||
//Check, ob Ziel-Lager Inilauf aktiv hat:
|
||||
T "MW220";
|
||||
|
||||
CALL "DatenOut"
|
||||
( SSDB := 275 ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M220.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := #Position
|
||||
);
|
||||
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
BEB;
|
||||
|
||||
L "MW224";
|
||||
T #Lager_DB;
|
||||
L "MW226";
|
||||
T #Lager_DW;
|
||||
ITD;
|
||||
T #AR1Start ;//Startwert mit Offset 0
|
||||
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#28 ;//Offset Status2 (Bit 7: Inilauf)
|
||||
SLD 3;
|
||||
L 7 ;//Damit DBX_Bit 7
|
||||
OD;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF DB[ #Lager_DB] ;//Lager-DB öffnen
|
||||
|
||||
U DBX[ #AR1Zeiger] ;//Lager hat Inilauf aktiv
|
||||
BEB;//Sonst kann der Inilauf nie beendet werden!
|
||||
|
||||
//Check, ob Ziel-Lager Platz hat:
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#28 ;//Offset Status2 (Bit 1: Piuffer hat Platz_IN)
|
||||
SLD 3;
|
||||
L 1 ;//Damit DBX_Bit 1
|
||||
OD;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF DB[ #Lager_DB] ;//Lager-DB öffnen
|
||||
|
||||
UN DBX[ #AR1Zeiger] ;//Lager hat keinen Platz
|
||||
BEB;
|
||||
|
||||
//Ziel übergeben:
|
||||
L #Ziel_int;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Separator.Default_Ziel;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
//Scanner-IDX übergeben:
|
||||
L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse;
|
||||
T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX;//IDX
|
||||
|
||||
CLR ;//Wird über MSorterRein (FB1423/5) gestartet!
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
//GOHDReqM an Host senden:
|
||||
T3121: L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse;
|
||||
L 0;//Barcode bekannt?
|
||||
==D;//Nein!
|
||||
BEB;//Warten!
|
||||
|
||||
CALL "Daten_in_SendFIFO_speichern", "Daten_für_SendFIFO"
|
||||
( "TelegrammKennung[1]" := 'G' ,
|
||||
"TelegrammKennung[2]" := 'O' ,
|
||||
"TelegrammKennung[3]" := 'H' ,
|
||||
"TelegrammKennung[4]" := 'D' ,
|
||||
"TelegrammKennung[5]" := 'R' ,
|
||||
"TelegrammKennung[6]" := 'e' ,
|
||||
"TelegrammKennung[7]" := 'q' ,
|
||||
"TelegrammKennung[8]" := 'M' ,
|
||||
TrolleyID := "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse ,
|
||||
StationsNr := 3121 ,
|
||||
Port := 2 ,
|
||||
Ret_Val_FIFO_IN := "MB199" ,
|
||||
Error := #"Error.Bit"
|
||||
);
|
||||
|
||||
UN #"Error.Bit";
|
||||
S "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet;
|
||||
|
||||
BEA;
|
||||
|
||||
///Zum Testen bei Inbetriebnahme:
|
||||
Sim3121: L "DVP_OmniFahren".Einfahrt_VP."3121_Ziel";
|
||||
T #Ziel_hex;
|
||||
|
||||
//Shop-Group definiert ?
|
||||
L "MD182" ;//ShopGroup
|
||||
L DINT#0;//bekannt?
|
||||
<>D;//Ja !
|
||||
SPB VP3121;
|
||||
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DVP_OmniFahren".Schleuse_3121.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#0000 ,
|
||||
ShopGroup := DINT#815 ///
|
||||
);
|
||||
|
||||
BEA;
|
||||
|
||||
X3121E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3123: Weiterfahren erlaubt ? (Sorter VP_A von RückführStrecke)
|
||||
L "MW190";
|
||||
L 3123 ;//Aufruf von Schleuse 3123 ?
|
||||
<>I;//Nein!
|
||||
SPB X3123E;
|
||||
|
||||
L "VP_TravelFIFO_A".Travel_FIFO_BG3120.FIFO.ANZAHL;
|
||||
L 0;//Daten noch im Travel-FIFO?
|
||||
<>I;//Ja !
|
||||
O "MB3123" ;//Trolley fährt schon
|
||||
O "DVP_OmniFahren".Einfahrt_VP."3123_stop";
|
||||
BEB;
|
||||
|
||||
L 0;
|
||||
T #Ziel_hex;
|
||||
|
||||
U "SGes".Ohne_PC_Fahren;//Also Ziel simulieren
|
||||
SPB Sim3123;
|
||||
|
||||
UN "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet;
|
||||
SPB T3123;
|
||||
|
||||
//Shop-Group definiert ?
|
||||
L "MD182" ;//ShopGroup
|
||||
L DINT#0;//bekannt?
|
||||
<>D;//Ja !
|
||||
U(;
|
||||
TAK;
|
||||
L DINT#0815 ;//bekannt?
|
||||
<>D;//Ja !
|
||||
O "SGes".Ohne_PC_Fahren;//815 nur ohne PC fahren Ok!
|
||||
);
|
||||
SPB VP3123;
|
||||
|
||||
//Erneute Anfrage bei Host!
|
||||
U "10s-Impuls";
|
||||
R "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet;
|
||||
|
||||
BEA;
|
||||
|
||||
//Voll-Puffer ermitteln oder Ziel schon fest?
|
||||
VP3123: L #Ziel_hex ;//Evtl. von Simulation
|
||||
L 16#0 ;//schon angegeben?
|
||||
<>I;//Ja!
|
||||
SPB ZielFest3123;
|
||||
|
||||
CALL "ShopGroup_Rein-Lager ermitteln"
|
||||
( ShopGroup := "MD182" ,
|
||||
Puffer := #Ziel_hex
|
||||
);
|
||||
|
||||
//Ziel = Voll-Lager?
|
||||
ZielFest3123: L #Ziel_hex;
|
||||
L 16#F000;
|
||||
UW;
|
||||
L 16#B000 ;//Ziel = VollLager ?
|
||||
==I ;//Ja!
|
||||
R "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager;
|
||||
SPB LagerOk_3123;
|
||||
|
||||
SET;
|
||||
S "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager;
|
||||
|
||||
//Im Kreis nur fahren, falls Stau in Rückführstrecke:
|
||||
UN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt;
|
||||
BEB ;//Nicht ins Lager fahren !
|
||||
|
||||
L 16#B151 ;///Vorerst immer Lager 51 fahren
|
||||
T #Ziel_hex;
|
||||
|
||||
LagerOk_3123: L #Ziel_hex;
|
||||
L 16#FFF;
|
||||
UW;
|
||||
BTI ;//Damit Int101-151 als Ziel !
|
||||
T #Ziel_int;
|
||||
|
||||
//Check, ob Ziel-Lager Inilauf aktiv hat:
|
||||
T "MW220";
|
||||
|
||||
CALL "DatenOut"
|
||||
( SSDB := 275 ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M220.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := #Position
|
||||
);
|
||||
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
BEB;
|
||||
|
||||
L "MW224";
|
||||
T #Lager_DB;
|
||||
L "MW226";
|
||||
T #Lager_DW;
|
||||
ITD;
|
||||
T #AR1Start;//Startwert mit Offset 0
|
||||
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#28 ;//Offset Status2 (Bit 7: Inilauf)
|
||||
SLD 3;
|
||||
L 7 ;//Damit DBX_Bit 7
|
||||
OD;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF DB[ #Lager_DB] ;//Lager-DB öffnen
|
||||
|
||||
U DBX[ #AR1Zeiger] ;//Lager hat Inilauf aktiv
|
||||
BEB;//Sonst kann der Inilauf nie beendet werden!
|
||||
|
||||
//Check, ob Ziel-Lager Platz hat:
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#28 ;//Offset Status2 (Bit 1: Puffer hat Platz_IN)
|
||||
SLD 3;
|
||||
L 1 ;//Damit DBX_Bit 1
|
||||
OD;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF DB[ #Lager_DB] ;//Lager-DB öffnen
|
||||
|
||||
UN DBX[ #AR1Zeiger] ;//Lager hat keinen Platz
|
||||
BEB;//Sonst kann der Inilauf nie beendet werden!
|
||||
|
||||
//Ziel übergeben:
|
||||
L #Ziel_int;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Separator.Default_Ziel;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
//Scanner-IDX übergeben:
|
||||
L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse;
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX;//IDX
|
||||
|
||||
CLR ;//Wird über MSorterRein (FB1423/5) gestartet!
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
//GOHDReqM an Host senden:
|
||||
T3123: L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse;
|
||||
L 0;//Barcode bekannt?
|
||||
==D;//Nein!
|
||||
BEB;//Warten!
|
||||
|
||||
CALL "Daten_in_SendFIFO_speichern", "Daten_für_SendFIFO"
|
||||
( "TelegrammKennung[1]" := 'G' ,
|
||||
"TelegrammKennung[2]" := 'O' ,
|
||||
"TelegrammKennung[3]" := 'H' ,
|
||||
"TelegrammKennung[4]" := 'D' ,
|
||||
"TelegrammKennung[5]" := 'R' ,
|
||||
"TelegrammKennung[6]" := 'e' ,
|
||||
"TelegrammKennung[7]" := 'q' ,
|
||||
"TelegrammKennung[8]" := 'M' ,
|
||||
TrolleyID := "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse ,
|
||||
StationsNr := 3123 ,
|
||||
Port := 2 ,
|
||||
Ret_Val_FIFO_IN := "MB199" ,
|
||||
Error := #"Error.Bit"
|
||||
);
|
||||
|
||||
UN #"Error.Bit";
|
||||
S "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet;
|
||||
|
||||
BEA;
|
||||
|
||||
///Zum Testen bei Inbetriebnahme:
|
||||
Sim3123: L "DVP_OmniFahren".Einfahrt_VP."3123_Ziel";
|
||||
T #Ziel_hex;
|
||||
|
||||
//Shop-Group definiert ?
|
||||
L "MD182" ;//ShopGroup
|
||||
L DINT#0;//bekannt?
|
||||
<>D;//Ja !
|
||||
SPB VP3123;
|
||||
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DVP_OmniFahren".Schleuse_3123.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#0000 ,
|
||||
ShopGroup := DINT#815 ///
|
||||
);
|
||||
|
||||
BEA;
|
||||
|
||||
X3123E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3244: (Nach LagerAusfahrt)
|
||||
L "MW190";
|
||||
L 3244 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB PS5E;
|
||||
|
||||
U "DVP_OmniFahren".Ausfahrt_VP."3244_stop";
|
||||
BEB;
|
||||
|
||||
L "DVP_OmniFahren".Ausfahrt_VP."3244_Ziel";
|
||||
L 16#0;//Vorgabe?
|
||||
==I;//Nein!
|
||||
SPB N3244;
|
||||
|
||||
TAK;
|
||||
L 16#B000;//Vollpuffer
|
||||
==I;//Ja!
|
||||
SPB A3244;
|
||||
|
||||
TAK;
|
||||
L 16#E000 ;//Entnahmepuffer
|
||||
==I;//Ja!
|
||||
SPB G3244;
|
||||
|
||||
BEA;
|
||||
|
||||
//Aufgrund der Daten fahren:
|
||||
N3244: NOP 0;
|
||||
//EndZiel = Entnahmepuffer?
|
||||
L "MW194";//EndZiel
|
||||
L 16#F000;
|
||||
UW;
|
||||
T #ZielGruppe;
|
||||
L 16#E000 ;//Entnahme-Puffer
|
||||
==I;//Ja !
|
||||
SPB G3244 ;//Gerade fahren
|
||||
|
||||
//Leer-Trolley?:
|
||||
L "DVP_OmniFahren".Schleuse_3244.Dyn.Trolley_ShopGroup;
|
||||
L DINT#-1 ;//leerer Trolley ?
|
||||
==D ;//Ja !
|
||||
U(;
|
||||
L "DLLeerPuffer_leer".Datenlistenkopf.AnzahlEintraege;
|
||||
L 5 ;//Genügend Platz vorhanden ?
|
||||
>=I ;//Ja !
|
||||
);
|
||||
SPB G3244;//Gerade fahren
|
||||
|
||||
SPA A3244 ;//Rest Abzweig fahren
|
||||
|
||||
A3244: L 16#3243;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
UN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
G3244: L 16#3246;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
UN "DVP_Sensoren".Stau_BG3246.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
PS5E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
AN "Error.Bit"
|
||||
S "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet
|
||||
|
||||
BEU
|
||||
|
||||
// /Zum Testen bei Inbetriebnahme:
|
||||
Sim3121: L "DVP_OmniFahren".Einfahrt_VP."3121_Ziel"
|
||||
T Ziel_hex
|
||||
|
||||
// Shop-Group definiert ?
|
||||
L "MD182" // ShopGroup
|
||||
L DINT#0 // bekannt?
|
||||
<>D // Ja !
|
||||
JC VP3121
|
||||
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3121.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#815) // /
|
||||
|
||||
BEU
|
||||
|
||||
X3121E: NOP 0
|
||||
|
||||
|
||||
--- NW 3: Schleuse 3123: Weiterfahren erlaubt ? (Sorter VP_A von RückführStrecke) ---
|
||||
L "MW190"
|
||||
L 3123 // Aufruf von Schleuse 3123 ?
|
||||
<>I // Nein!
|
||||
JC X3123E
|
||||
|
||||
L "VP_TravelFIFO_A".Travel_FIFO_BG3120.FIFO.ANZAHL
|
||||
L 0 // Daten noch im Travel-FIFO?
|
||||
<>I // Ja !
|
||||
O "MB3123" // Trolley fährt schon
|
||||
O "DVP_OmniFahren".Einfahrt_VP."3123_stop"
|
||||
BEC
|
||||
|
||||
L 0
|
||||
T Ziel_hex
|
||||
|
||||
A "SGes".Ohne_PC_Fahren // Also Ziel simulieren
|
||||
JC Sim3123
|
||||
|
||||
AN "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet
|
||||
JC T3123
|
||||
|
||||
// Shop-Group definiert ?
|
||||
L "MD182" // ShopGroup
|
||||
L DINT#0 // bekannt?
|
||||
<>D // Ja !
|
||||
A(
|
||||
CAC
|
||||
L DINT#0815 // bekannt?
|
||||
<>D // Ja !
|
||||
O "SGes".Ohne_PC_Fahren // 815 nur ohne PC fahren Ok!
|
||||
)
|
||||
JC VP3123
|
||||
|
||||
// Erneute Anfrage bei Host!
|
||||
A "10s-Impuls"
|
||||
R "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet
|
||||
|
||||
BEU
|
||||
|
||||
// Voll-Puffer ermitteln oder Ziel schon fest?
|
||||
VP3123: L Ziel_hex // Evtl. von Simulation
|
||||
L 16#0 // schon angegeben?
|
||||
<>I // Ja!
|
||||
JC ZielFest3123
|
||||
|
||||
CALL FC "ShopGroup to Rein-Lager ermitteln" (ShopGroup:="MD182", Puffer:=Ziel_hex)
|
||||
|
||||
// Ziel = Voll-Lager?
|
||||
ZielFest3123: L Ziel_hex
|
||||
L 16#F000
|
||||
AW
|
||||
L 16#B000 // Ziel = VollLager ?
|
||||
==I // Ja!
|
||||
R "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager
|
||||
JC LagerOk_3123
|
||||
|
||||
SET
|
||||
S "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager
|
||||
|
||||
// Im Kreis nur fahren, falls Stau in Rückführstrecke:
|
||||
AN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt
|
||||
BEC // Nicht ins Lager fahren !
|
||||
|
||||
L 16#B151 // /Vorerst immer Lager 51 fahren
|
||||
T Ziel_hex
|
||||
|
||||
LagerOk_3123: L Ziel_hex
|
||||
L 16#FFF
|
||||
AW
|
||||
BTI // Damit Int101-151 als Ziel !
|
||||
T Ziel_int
|
||||
|
||||
// Check, ob Ziel-Lager Inilauf aktiv hat:
|
||||
T "MW220"
|
||||
|
||||
CALL FC "DatenOut" (SSDB:=275, 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 Lager_DB
|
||||
L "MW226"
|
||||
T Lager_DW
|
||||
ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#28 // Offset Status2 (Bit 7: Inilauf)
|
||||
SLD 3
|
||||
L 7 // Damit DBX_Bit 7
|
||||
OD
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
OPN DB[Lager_DB] // Lager-DB öffnen
|
||||
|
||||
A DBX [AR1Zeiger] // Lager hat Inilauf aktiv
|
||||
BEC // Sonst kann der Inilauf nie beendet werden!
|
||||
|
||||
// Check, ob Ziel-Lager Platz hat:
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#28 // Offset Status2 (Bit 1: Puffer hat Platz_IN)
|
||||
SLD 3
|
||||
L 1 // Damit DBX_Bit 1
|
||||
OD
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
OPN DB[Lager_DB] // Lager-DB öffnen
|
||||
|
||||
AN DBX [AR1Zeiger] // Lager hat keinen Platz
|
||||
BEC // Sonst kann der Inilauf nie beendet werden!
|
||||
|
||||
// Ziel übergeben:
|
||||
L Ziel_int
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Separator.Default_Ziel
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel
|
||||
|
||||
// Scanner-IDX übergeben:
|
||||
L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse
|
||||
T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX
|
||||
|
||||
CLR // Wird über MSorterRein (FB1423/5) gestartet!
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
// GOHDReqM an Host senden:
|
||||
T3123: L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse
|
||||
L 0 // Barcode bekannt?
|
||||
==D // Nein!
|
||||
BEC // Warten!
|
||||
|
||||
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse, StationsNr:=3123, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit")
|
||||
|
||||
AN "Error.Bit"
|
||||
S "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet
|
||||
|
||||
BEU
|
||||
|
||||
// /Zum Testen bei Inbetriebnahme:
|
||||
Sim3123: L "DVP_OmniFahren".Einfahrt_VP."3123_Ziel"
|
||||
T Ziel_hex
|
||||
|
||||
// Shop-Group definiert ?
|
||||
L "MD182" // ShopGroup
|
||||
L DINT#0 // bekannt?
|
||||
<>D // Ja !
|
||||
JC VP3123
|
||||
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3123.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#815) // /
|
||||
|
||||
BEU
|
||||
|
||||
X3123E: NOP 0
|
||||
|
||||
|
||||
--- NW 4: Schleuse 3244: (Nach LagerAusfahrt) ---
|
||||
L "MW190"
|
||||
L 3244 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC PS5E
|
||||
|
||||
A "DVP_OmniFahren".Ausfahrt_VP."3244_stop"
|
||||
BEC
|
||||
|
||||
L "DVP_OmniFahren".Ausfahrt_VP."3244_Ziel"
|
||||
L 16#0 // Vorgabe?
|
||||
==I // Nein!
|
||||
JC N3244
|
||||
|
||||
CAC
|
||||
L 16#B000 // Vollpuffer
|
||||
==I // Ja!
|
||||
JC A3244
|
||||
|
||||
CAC
|
||||
L 16#E000 // Entnahmepuffer
|
||||
==I // Ja!
|
||||
JC G3244
|
||||
|
||||
BEU
|
||||
|
||||
// Aufgrund der Daten fahren:
|
||||
N3244: NOP 0
|
||||
// EndZiel = Entnahmepuffer?
|
||||
L "MW194" // EndZiel
|
||||
L 16#F000
|
||||
AW
|
||||
T ZielGruppe
|
||||
L 16#E000 // Entnahme-Puffer
|
||||
==I // Ja !
|
||||
JC G3244 // Gerade fahren
|
||||
|
||||
// Leer-Trolley?:
|
||||
L "DVP_OmniFahren".Schleuse_3244.Dyn.Trolley_ShopGroup
|
||||
L DINT#-1 // leerer Trolley ?
|
||||
==D // Ja !
|
||||
A(
|
||||
L "DLLeerPuffer_leer".Datenlistenkopf.AnzahlEintraege
|
||||
L 5 // Genügend Platz vorhanden ?
|
||||
>=I // Ja !
|
||||
)
|
||||
JC G3244 // Gerade fahren
|
||||
|
||||
JU A3244 // Rest Abzweig fahren
|
||||
|
||||
A3244: L 16#3243
|
||||
T "MW198" // Weichenziel
|
||||
|
||||
AN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
G3244: L 16#3246
|
||||
T "MW198" // Weichenziel
|
||||
|
||||
AN "DVP_Sensoren".Stau_BG3246.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
|
||||
PS5E: NOP 0
|
||||
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+1012
-644
File diff suppressed because it is too large
Load Diff
+689
-376
File diff suppressed because it is too large
Load Diff
@@ -1,33 +1,32 @@
|
||||
=== FC 1100: VP_Bereich [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "VP_Bereich" : Void
|
||||
TITLE = Bereich Outbound: Vollpuffer
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Baustein-Aufrufe ---
|
||||
CALL FB "VP_Sensoren" ,
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Baustein-Aufrufe
|
||||
CALL "VP_Sensoren", "DVP_Sensoren";
|
||||
|
||||
CALL FB "VP_OmniFahren" ,
|
||||
CALL "VP_OmniFahren", "DVP_OmniFahren";
|
||||
|
||||
CALL FB "VollPufferStreckenA" ,
|
||||
CALL "VollPufferStrecken_A", "DVollPufferStrecken_A";
|
||||
|
||||
CALL FB "VollPufferStreckenB" ,
|
||||
CALL "VollPufferStrecken_B", "DVollPufferStrecken_B";
|
||||
|
||||
CALL FB "VP_Sorter_A" ,
|
||||
CALL "VP_Sorter_A", "DVP_Sorter_A";
|
||||
|
||||
CALL FB "VP_Sorter_B" ,
|
||||
CALL "VP_Sorter_B", "DVP_Sorter_B";
|
||||
|
||||
CALL FB "VPAuslagern" ,
|
||||
CALL "VP_Auslagern", "DVP_Auslagern";
|
||||
|
||||
CALL FB "VP_Zylinder" ,
|
||||
CALL "VP_Zylinder", "DVP_Zylinder";
|
||||
|
||||
CALL FB "VP_Antriebe" ,
|
||||
CALL "VP_Antriebe", "DVP_Antriebe";
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,156 +1,255 @@
|
||||
=== FB 2199: VPtoEP_Antriebe [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
MA0151 : "MAntrieb_PowerSave"
|
||||
MA0060 : "MAntrieb_PowerSave"
|
||||
MA0061 : "MAntrieb_PowerSave"
|
||||
MA0320 : "MAntrieb_PowerSave"
|
||||
MA0321 : "MAntrieb_PowerSave"
|
||||
MA0322 : "MAntrieb_PowerSave"
|
||||
MA0323 : "MAntrieb_PowerSave"
|
||||
MA0324 : "MAntrieb_PowerSave"
|
||||
MA0325 : "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:
|
||||
FUNCTION_BLOCK "VPtoEP_Antriebe"
|
||||
TITLE = Antriebe Outbound Vollpuffer > Entnahmepuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
MA0151 : "MAntrieb_PowerSave";
|
||||
MA0060 : "MAntrieb_PowerSave";
|
||||
MA0061 : "MAntrieb_PowerSave";
|
||||
MA0320 : "MAntrieb_PowerSave";
|
||||
MA0321 : "MAntrieb_PowerSave";
|
||||
MA0322 : "MAntrieb_PowerSave";
|
||||
MA0323 : "MAntrieb_PowerSave";
|
||||
MA0324 : "MAntrieb_PowerSave";
|
||||
MA0325 : "MAntrieb_PowerSave";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UC071/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
|
||||
A(
|
||||
O "DOutbound_Bereich".A01_UC071.BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7104.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
|
||||
A "T191"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
|
||||
A "DOutbound_Bereich".A01_UC071.StOk_aktiv
|
||||
= Quit
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: MA0151 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0151", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0151", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0151, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC071/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
U(;
|
||||
O "DOutbound_Bereich".A01_UC071.BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7104.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
U "T191";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC071.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0151
|
||||
CALL #MA0151
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0151" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
T_Nachlauf := 120 ,
|
||||
Antriebvor := "MA0151" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0151
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UH07/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 3: Übergabe des Bereichstatus System UH07/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
U "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
UN #BereichErr;
|
||||
L S5T#1S;
|
||||
SE "T197";
|
||||
|
||||
AN BereichErr
|
||||
L S5T#1S
|
||||
OnDelay "T197"
|
||||
U "T197";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
A "T197"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
U "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= Quit
|
||||
NETWORK
|
||||
TITLE = MA0060
|
||||
CALL #MA0060
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0060" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0060" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0060
|
||||
);
|
||||
|
||||
|
||||
--- NW 4: MA0060 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0060", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0060", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0060, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0061
|
||||
CALL #MA0061
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0061" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0061" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0061
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC074/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 5: MA0061 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0061", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0061", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0061, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
UN #BereichErr;
|
||||
L S5T#1S;
|
||||
SE "T194";
|
||||
|
||||
U "T194";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC074.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0320
|
||||
CALL #MA0320
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0320" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0320" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0320
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 6: Übergabe des Bereichstatus System UC074/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
|
||||
A "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
|
||||
AN BereichErr
|
||||
L S5T#1S
|
||||
OnDelay "T194"
|
||||
|
||||
A "T194"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
|
||||
A "DOutbound_Bereich".A01_UC074.StOk_aktiv
|
||||
= Quit
|
||||
NETWORK
|
||||
TITLE = MA0321
|
||||
CALL #MA0321
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0321" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0321" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0321
|
||||
);
|
||||
|
||||
|
||||
--- NW 7: MA0320 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0320", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0320", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0320, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0322
|
||||
CALL #MA0322
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0322" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
T_Nachlauf := 90 ,
|
||||
Antriebvor := "MA0322" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0322
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 8: MA0321 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0321", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0321", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0321, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0323
|
||||
CALL #MA0323
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0323" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0323" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0323
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 9: MA0322 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0322", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=90, Antriebrueck:=?, Antriebvor:="MA0322", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0322, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0324
|
||||
CALL #MA0324
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0324" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0324" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0324
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0325
|
||||
CALL #MA0325
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0325" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0325" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0325
|
||||
);
|
||||
|
||||
--- NW 10: MA0323 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0323", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0323", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0323, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
/// U "M902.0"
|
||||
/// UN "DEP_Sorter".Sync_BG4527.Dyn.Error.Keine_TeachPktdaten
|
||||
/// S "MA0325" //Zusätzlich im Lastbaustein VP>EP_Antriebe, da Aufruf vor Sorter-FB
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 11: MA0324 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0324", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0324", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0324, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
|
||||
|
||||
|
||||
--- NW 12: MA0325 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0325", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0325", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0325, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
|
||||
// / U "M902.0"
|
||||
// / UN "DEP_Sorter".Sync_BG4527.Dyn.Error.Keine_TeachPktdaten
|
||||
// / S "MA0325" //Zusätzlich im Lastbaustein VP>EP_Antriebe, da Aufruf vor Sorter-FB
|
||||
|
||||
|
||||
--- NW 13: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,104 +1,216 @@
|
||||
=== FB 2190: VPtoEP_Sensoren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Stau_BG3246 : "MSensoren" // Stau am Sensor Einfahrt MA0151
|
||||
Stau_BG3251 : "MSensoren" // Stau am Sensor Mitte MA0151
|
||||
Stau_BG3274 : "MSensoren" // Stau am Sensor Einfahrt MA0060
|
||||
Stau_BG3362 : "MSensoren" // Stau am Sensor Einfahrt MA0061
|
||||
Stau_BG3364 : "MSensoren" // Stau am Sensor Mitte MA0061
|
||||
Stau_BG4440 : "MSensoren" // Stau am Sensor nach BST1
|
||||
Stau_BG4442 : "MSensoren" // Stau am Sensor Einfahrt MA321
|
||||
Sack_BG4444 : "MSensoren" // Sack erkannt
|
||||
Stau_BG4445 : "MSensoren" // Stau am Sensor Mitte MA321
|
||||
Stau_BG4447 : "MSensoren" // Stau am Sensor hinter Weiche4445
|
||||
Stau_BG4451 : "MSensoren" // Stau am Sensor Ausfahrt Schleuse4450
|
||||
Stau_BG4453 : "MSensoren" // Stau am Sensor Einfahrt MA0323
|
||||
Stau_BG4500 : "MSensoren" // Stau am Sensor Einfahrt MA0324
|
||||
Stau_BG4530 : "MSensoren" // Stau am Sensor Mitte MA0324
|
||||
Stau_BG4502 : "MSensoren" // Stau am Sensor Einfahrt MA0325
|
||||
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:
|
||||
FUNCTION_BLOCK "VPtoEP_Sensoren"
|
||||
TITLE = Sensoren Outbound: VP > EP
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Stau_BG3246 : "MSensoren"; // Stau am Sensor Einfahrt MA0151
|
||||
Stau_BG3251 : "MSensoren"; // Stau am Sensor Mitte MA0151
|
||||
Stau_BG3274 : "MSensoren"; // Stau am Sensor Einfahrt MA0060
|
||||
Stau_BG3362 : "MSensoren"; // Stau am Sensor Einfahrt MA0061
|
||||
Stau_BG3364 : "MSensoren"; // Stau am Sensor Mitte MA0061
|
||||
Stau_BG4440 : "MSensoren"; // Stau am Sensor nach BST1
|
||||
Stau_BG4442 : "MSensoren"; // Stau am Sensor Einfahrt MA321
|
||||
Sack_BG4444 : "MSensoren"; // Sack erkannt
|
||||
Stau_BG4445 : "MSensoren"; // Stau am Sensor Mitte MA321
|
||||
Stau_BG4447 : "MSensoren"; // Stau am Sensor hinter Weiche4445
|
||||
Stau_BG4451 : "MSensoren"; // Stau am Sensor Ausfahrt Schleuse4450
|
||||
Stau_BG4453 : "MSensoren"; // Stau am Sensor Einfahrt MA0323
|
||||
Stau_BG4500 : "MSensoren"; // Stau am Sensor Einfahrt MA0324
|
||||
Stau_BG4530 : "MSensoren"; // Stau am Sensor Mitte MA0324
|
||||
Stau_BG4502 : "MSensoren"; // Stau am Sensor Einfahrt MA0325
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3246", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3251", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0151
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3246
|
||||
( ESensor := "BG3246" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA0151
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3251
|
||||
( ESensor := "BG3251" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 3: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3274", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0060
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3274
|
||||
( ESensor := "BG3274" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0061
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3362
|
||||
( ESensor := "BG3362" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 4: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3362", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA0061
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3364
|
||||
( ESensor := "BG3364" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 21 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor hinter BST1
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4440
|
||||
( ESensor := "BG4440" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 30 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 5: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3364", T_Ein:=80, T_Aus:=21, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0321
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4442
|
||||
( ESensor := "BG4442" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Sack in Schleuse 4221 erkannt (Vor ByPass zu VP)
|
||||
//Sensoren entprellen
|
||||
UN "MB4443" ;//Alt-Trolley noch beim Ausfahren
|
||||
U(;
|
||||
O "MA0321";
|
||||
O "BG4443";
|
||||
);
|
||||
= #Aktiv;
|
||||
|
||||
--- NW 6: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4440", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
CALL #Sack_BG4444
|
||||
( ESensor := "BG4444" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := #Aktiv ,
|
||||
taus_aktiv := "MB4443"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA0321
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4445
|
||||
( ESensor := "BG4445" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 7: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4442", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor hinter Weiche4445
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4447
|
||||
( ESensor := "BG4447" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Ausfahrt Schleuse4450
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4451
|
||||
( ESensor := "BG4451" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 8: Sensoren entprellen ---
|
||||
AN "MB4443" // Alt-Trolley noch beim Ausfahren
|
||||
A(
|
||||
O "MA0321"
|
||||
O "BG4443"
|
||||
)
|
||||
= Aktiv
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0323
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4453
|
||||
( ESensor := "BG4453" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
CALL FB "None" , (ESensor:="BG4444", T_Ein:=1, T_Aus:=11, tein_aktiv:=Aktiv, taus_aktiv:="MB4443")
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0324
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4500
|
||||
( ESensor := "BG4500" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA0324
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4530
|
||||
( ESensor := "BG4530" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 9: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4445", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0325
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4502
|
||||
( ESensor := "BG4502" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 10: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4447", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 11: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4451", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 12: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4453", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 13: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4500", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 14: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4530", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 15: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4502", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 16: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,86 +1,135 @@
|
||||
=== FB 2192: VPtoEP_Zylinder [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_3247 : "MZylinder" //
|
||||
Schleuse_3275 : "MZylinder" //
|
||||
Schleuse_3363 : "MZylinder"
|
||||
Schleuse_3366 : "MZylinder"
|
||||
Schleuse_4443 : "MZylinder"
|
||||
Weiche_4445 : "MZylinder" //
|
||||
Schleuse_4450 : "MZylinder" //
|
||||
Temp:
|
||||
Auto : Bool // Automatik ist aktiv
|
||||
Hand : Bool // Hand ist aktiv
|
||||
ZylAst : Bool // Zylinder ansteuern
|
||||
Constant:
|
||||
FUNCTION_BLOCK "VPtoEP_Zylinder"
|
||||
TITLE = Zylinder Outbound Vollpuffer > Entnahmepuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_3247 : "MZylinder"; //
|
||||
Schleuse_3275 : "MZylinder"; //
|
||||
Schleuse_3363 : "MZylinder";
|
||||
Schleuse_3366 : "MZylinder";
|
||||
Schleuse_4443 : "MZylinder";
|
||||
Weiche_4445 : "MZylinder"; //
|
||||
Schleuse_4450 : "MZylinder"; //
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UC071/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
A(
|
||||
O "DOutbound_Bereich".A01_UC071.BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7104.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next // Zylinder-Stellung nicht mehr ändern
|
||||
VAR_TEMP
|
||||
Auto : Bool; // Automatik ist aktiv
|
||||
Hand : Bool; // Hand ist aktiv
|
||||
ZylAst : Bool; // Zylinder ansteuern
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse_3247 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3247", ZylGst:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC071/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U(;
|
||||
O "DOutbound_Bereich".A01_UC071.BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7104.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
--- NW 3: Schleuse_3275 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3275", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_3247
|
||||
CALL #Schleuse_3247
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3247"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_3275
|
||||
CALL #Schleuse_3275
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3275"
|
||||
);
|
||||
|
||||
--- NW 4: Übergabe des Bereichstatus System UH07/A01 ---
|
||||
Next: A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UH07/A01
|
||||
Next: U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next1 // Zylinder-Stellung nicht mehr ändern
|
||||
U "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next1 ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_3363
|
||||
CALL #Schleuse_3363
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3363"
|
||||
);
|
||||
|
||||
--- NW 5: Schleuse_3363 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3363", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_3366
|
||||
CALL #Schleuse_3366
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3366"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC074/A01
|
||||
Next1: U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 6: Schleuse_3366 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3366", ZylGst:=?)
|
||||
U "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next2 ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4443
|
||||
CALL #Schleuse_4443
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4443"
|
||||
);
|
||||
|
||||
--- NW 7: Übergabe des Bereichstatus System UC074/A01 ---
|
||||
Next1: A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
NETWORK
|
||||
TITLE = Weiche_4445
|
||||
CALL #Weiche_4445
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4445"
|
||||
);
|
||||
|
||||
A "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next2 // Zylinder-Stellung nicht mehr ändern
|
||||
U "MB4445";
|
||||
= "MB4457";
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4450
|
||||
CALL #Schleuse_4450
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4450"
|
||||
);
|
||||
|
||||
--- NW 8: Schleuse_4443 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4443", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
Next2: BE;
|
||||
|
||||
|
||||
--- NW 9: Weiche_4445 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4445", ZylGst:=?)
|
||||
|
||||
A "MB4445"
|
||||
= "MB4457"
|
||||
|
||||
|
||||
--- NW 10: Schleuse_4450 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4450", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 11: Ende ---
|
||||
Next2: BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
+45
-37
@@ -1,49 +1,57 @@
|
||||
=== FC 2182: VPtoEP_Draussen_FC [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "VPtoEP_Draussen_FC" : Void
|
||||
TITLE = Draussen-FC: VollPuffer
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
SET // Rückmeldungen erst mal resetten
|
||||
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4443 (Vor ByPass zum LP): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 4443 ;//Aufruf von Schleuse 4443 ?
|
||||
<>I;//Nein!
|
||||
SPB X4443E;
|
||||
|
||||
--- NW 2: Schleuse 4443 (Vor ByPass zum LP): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 4443 // Aufruf von Schleuse 4443 ?
|
||||
<>I // Nein!
|
||||
JC X4443E
|
||||
//Evtl. erkannten Sack löschen:
|
||||
SET;
|
||||
R "DVPtoEP_Sensoren".Sack_BG4444.Stat.B_Akt;
|
||||
|
||||
// Evtl. erkannten Sack löschen:
|
||||
SET
|
||||
R "DVPtoEP_Sensoren".Sack_BG4444.Stat.B_Akt
|
||||
L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Weichen_Ziel;
|
||||
L 16#4461;//Abzweig ?
|
||||
<>I;//Nein !
|
||||
SPB EP;
|
||||
|
||||
L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Weichen_Ziel
|
||||
L 16#4461 // Abzweig ?
|
||||
<>I // Nein !
|
||||
JC EP
|
||||
//Trolley fährt zum LP:
|
||||
//Trolleydaten in DB1000 löschen, da zum LP fährt und danach kein Leser mehr!
|
||||
CALL "Trolleydaten_löschen"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse //IDX"DLP>HW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse
|
||||
);
|
||||
|
||||
// Trolley fährt zum LP:
|
||||
// Trolleydaten in DB1000 löschen, da zum LP fährt und danach kein Leser mehr!
|
||||
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse) // IDX"DLP>HW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse
|
||||
//Bei Partner (Schleuse 4466) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0;
|
||||
T "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Sk.Akt_Schritt;
|
||||
|
||||
// Bei Partner (Schleuse 4466) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0
|
||||
T "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Sk.Akt_Schritt
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
//Trolleydaten in DB1000 ändern:
|
||||
EP: CALL "Trolleydaten_ändern"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse , //IDX
|
||||
Endziel := 16#E000 , //Entnahmepuffer
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
// Trolleydaten in DB1000 ändern:
|
||||
EP: CALL FC "Trolleydaten_ändern" (Gesamt_Trolley_DL:=1000, TrolleyID:="DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse, Endziel:=16#E000, ShopGroup:=DINT#0) // IDX | Entnahmepuffer
|
||||
X4443E: NOP 0;
|
||||
|
||||
X4443E: NOP 0
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+44
-35
@@ -1,47 +1,56 @@
|
||||
=== FC 2180: VPtoEP_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"
|
||||
FUNCTION "VPtoEP_Leser_FC" : Void
|
||||
TITLE = Leser-FC: VP>EP
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_TEMP
|
||||
Zielebene : Word;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 4443: (Vor ByPass zurück zu LP) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 4443 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X4443E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y4443
|
||||
//Keine
|
||||
L 0;//Evtl. Zwischenziel (MW196)
|
||||
T "MW196";
|
||||
|
||||
BEU
|
||||
NETWORK
|
||||
TITLE = Schleuse 4443: (Vor ByPass zurück zu LP)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 4443 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X4443E;
|
||||
|
||||
Y4443: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y4443;
|
||||
|
||||
// Daten in Datenbank erzeugen:
|
||||
L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse
|
||||
L DINT#0 // ID bekannt?
|
||||
==D // Nein
|
||||
BEC
|
||||
BEA;
|
||||
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVPtoEP_OmniFahren".Schleuse_4443.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse, Endziel:=16#C000, ShopGroup:=DINT#0) // Entnahme-Puffer-Bereich
|
||||
Y4443: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
BEU
|
||||
//Daten in Datenbank erzeugen:
|
||||
L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse;
|
||||
L DINT#0 ;//ID bekannt?
|
||||
==D;//Nein
|
||||
BEB;
|
||||
|
||||
X4443E: NOP 0
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DVPtoEP_OmniFahren".Schleuse_4443.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#C000 , //Entnahme-Puffer-Bereich
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
BEA;
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
X4443E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+426
-217
@@ -1,251 +1,460 @@
|
||||
=== FB 2128: VPtoEP_OmniFahren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_3247 : "MHMOmniSchleuse_Plus"
|
||||
Schleuse_3275 : "MHMOmniSchleuse"
|
||||
Bereich_3361 : "MHMOmniBereich_Plus"
|
||||
Schleuse_3363 : "MHMOmniSchleuse"
|
||||
Schleuse_3366 : "MHMOmniSchleuse"
|
||||
Bereich_4441 : "MHMOmniBereich_Plus"
|
||||
Schleuse_4443 : "MHMOmniSchleuse_Plus"
|
||||
Weiche_4445 : "MHMOmniWeiche_Plus"
|
||||
Schleuse_4450 : "MHMOmniSchleuse_Plus"
|
||||
Bereich_4454 : "MHMOmniBereich_Plus"
|
||||
Übergang_4501 : "MHMÜbergang_ohne_Schleuse"
|
||||
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_vor : Bool
|
||||
Antrieb_stop : Bool
|
||||
Fahren_Ok : Bool
|
||||
Antrieb_nicht_stoppen : Bool
|
||||
Constant:
|
||||
FUNCTION_BLOCK "VPtoEP_OmniFahren"
|
||||
TITLE = Omnifahren Outbound Vollpuffer > Entnahmepuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_3247 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Schleuse_3275 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Bereich_3361 : "MHMOmniBereich_Plus";
|
||||
Schleuse_3363 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Schleuse_3366 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Bereich_4441 : "MHMOmniBereich_Plus";
|
||||
Schleuse_4443 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Weiche_4445 : "MHMOmniWeiche_Plus";
|
||||
Schleuse_4450 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Bereich_4454 : "MHMOmniBereich_Plus";
|
||||
Übergang_4501 { S7_SetPoint := 'False'} : "MHMÜbergang_ohne_Schleuse";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Systemzeug ---
|
||||
// Verschiedene Bereiche:
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
= Schleuse_3247.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3275.Dyn.Sk.Auto_akt
|
||||
= Bereich_3361.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3363.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3366.Dyn.Sk.Auto_akt
|
||||
= Bereich_4441.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4443.Dyn.Sk.Auto_akt
|
||||
= Weiche_4445.Dyn.Status.Auto_akt
|
||||
= Schleuse_4450.Dyn.Sk.Auto_akt
|
||||
= Bereich_4454.Dyn.Sk.Auto_akt
|
||||
|
||||
AN "DOutbound_Bereich".A01_UC071.BereichErr
|
||||
= Schleuse_3247.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3275.Dyn.Sk.Bereich_ok
|
||||
AN "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
= Bereich_3361.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3363.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3366.Dyn.Sk.Bereich_ok
|
||||
AN "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
= Bereich_4441.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4443.Dyn.Sk.Bereich_ok
|
||||
= Weiche_4445.Dyn.Status.Bereich_ok
|
||||
= Schleuse_4450.Dyn.Sk.Bereich_ok
|
||||
= Bereich_4454.Dyn.Sk.Bereich_ok
|
||||
VAR_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_vor : Bool;
|
||||
Antrieb_stop : Bool;
|
||||
Fahren_Ok : Bool;
|
||||
Antrieb_nicht_stoppen : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Störungen quittieren UZ7105 ---
|
||||
A "DOutbound_Bereich".A01_UZ7105.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC071.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Systemzeug
|
||||
|
||||
//Verschiedene Bereiche:
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
= #Schleuse_3247.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3275.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_3361.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3363.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3366.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_4441.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4443.Dyn.Sk.Auto_akt;
|
||||
= #Weiche_4445.Dyn.Status.Auto_akt;
|
||||
= #Schleuse_4450.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_4454.Dyn.Sk.Auto_akt;
|
||||
|
||||
UN "DOutbound_Bereich".A01_UC071.BereichErr;
|
||||
= #Schleuse_3247.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3275.Dyn.Sk.Bereich_ok;
|
||||
UN "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
= #Bereich_3361.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3363.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3366.Dyn.Sk.Bereich_ok;
|
||||
UN "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
= #Bereich_4441.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4443.Dyn.Sk.Bereich_ok;
|
||||
= #Weiche_4445.Dyn.Status.Bereich_ok;
|
||||
= #Schleuse_4450.Dyn.Sk.Bereich_ok;
|
||||
= #Bereich_4454.Dyn.Sk.Bereich_ok;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7105
|
||||
U "DOutbound_Bereich".A01_UZ7105.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC071.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3247
|
||||
CALL #Schleuse_3247
|
||||
( Schleusen_Nr := 3247 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3246" ,
|
||||
B_InSchleuse := "BG3247" ,
|
||||
B_Zähl := "BG3251" ,
|
||||
B_Stau_raus := "DVPtoEP_Sensoren".Stau_BG3251.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0151" ,
|
||||
Antrieb_plus_aktiv := "MA0151" ,
|
||||
Schleuse_geöffnet := "MB3247" ,
|
||||
Y_Schleuse_Auf := "DVPtoEP_Zylinder".Schleuse_3247.Stat.Ast ,
|
||||
Error := %DB708.DBW520 ,
|
||||
Antrieb_Schleuse_vor := "DVPtoEP_Antriebe".MA0151.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVPtoEP_Antriebe".MA0151.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVPtoEP_Antriebe".MA0151.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DVPtoEP_Antriebe".MA0151.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //Identisch
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3275
|
||||
CALL #Schleuse_3275
|
||||
( Schleusen_Nr := 3275 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3251" ,
|
||||
B_InSchleuse := "BG3275" ,
|
||||
B_AusSchleuse := "BG3274" ,
|
||||
B_Stau_raus := "DVPtoEP_Sensoren".Stau_BG3274.Stat.B_Akt ,
|
||||
Start_Ok := #Bereich_3361.Dyn.Sk.Bereich_ok ,
|
||||
Antrieb_Schleuse_aktiv := "MA0151" ,
|
||||
Antrieb_plus_aktiv := "MA0060" ,
|
||||
Schleuse_geöffnet := "MB3275" ,
|
||||
RestZeit_Bereich_plus := #Bereich_3361.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DVPtoEP_Zylinder".Schleuse_3275.Stat.Ast ,
|
||||
Error := %DB708.DBW570 ,
|
||||
Antrieb_Schleuse_vor := "DVPtoEP_Antriebe".MA0151.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVPtoEP_Antriebe".MA0151.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVPtoEP_Antriebe".MA0151.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DVPtoEP_Antriebe".MA0151.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Bereich_3361.Dyn.Status.Trolley_kommt_in_Bereich ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7105
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7105.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC071.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7105/0701
|
||||
U "DOutbound_Bereich".A01_UZ7105.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UZ0701.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC071.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 3361
|
||||
U "BG3274";
|
||||
U "MB3275";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
CALL #Bereich_3361
|
||||
( Bereichs_Nr := 3361 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := #B_vor_Schleuse ,
|
||||
B_BereichsEnde := "BG3361" ,
|
||||
B_Zähl := "BG3362" ,
|
||||
B_Stau_raus := "DVPtoEP_Sensoren".Stau_BG3362.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Bereich_aktiv := "MA0060" ,
|
||||
Antrieb_plus_aktiv := "MA0061" ,
|
||||
Antrieb_Bereich_vor := "DVPtoEP_Antriebe".MA0060.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DVPtoEP_Antriebe".MA0060.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW454 ,
|
||||
Antrieb_Bereich_start := "DVPtoEP_Antriebe".MA0060.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DVPtoEP_Antriebe".MA0061.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DVPtoEP_Antriebe".MA0061.Stat.A_start ,
|
||||
Antrieb_minus_vor := "DVPtoEP_Antriebe".MA0151.Stat.A_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7105/0701
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7105.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ0701.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC071.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ0701
|
||||
U "DOutbound_Bereich".A01_UZ0701.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3363
|
||||
CALL #Schleuse_3363
|
||||
( Schleusen_Nr := 3363 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3362" ,
|
||||
B_InSchleuse := "BG3363" ,
|
||||
B_AusSchleuse := "BG3364" ,
|
||||
B_Stau_raus := "DVPtoEP_Sensoren".Stau_BG3364.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0061" ,
|
||||
Antrieb_plus_aktiv := "MA0061" ,
|
||||
Schleuse_geöffnet := "MB3363" ,
|
||||
Y_Schleuse_Auf := "DVPtoEP_Zylinder".Schleuse_3363.Stat.Ast ,
|
||||
Error := %DB708.DBW528 ,
|
||||
Antrieb_Schleuse_vor := "DVPtoEP_Antriebe".MA0061.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVPtoEP_Antriebe".MA0061.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVPtoEP_Antriebe".MA0061.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DVPtoEP_Antriebe".MA0061.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //Identisch
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
|
||||
--- NW 3: Schleuse 3247 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=3247, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3246", B_InSchleuse:="BG3247", B_Zähl:="BG3251", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG3251.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0151", Antrieb_plus_aktiv:="MA0151", Schleuse_geöffnet:="MB3247", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_3247.Stat.Ast, Error:=DB708.DBW520, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0151.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0151.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0151.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch
|
||||
NETWORK
|
||||
TITLE = Schleuse 3366 (vor BST 1)
|
||||
UN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3;
|
||||
UN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST1_Feueralarm;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST1_Geschlossen;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST1_Störung;
|
||||
U #Bereich_4441.Dyn.Sk.Bereich_ok;
|
||||
= #Fahren_Ok;
|
||||
|
||||
CALL #Schleuse_3366
|
||||
( Schleusen_Nr := 3366 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3364" ,
|
||||
B_InSchleuse := "BG3366" ,
|
||||
B_AusSchleuse := "BG4440" ,
|
||||
B_Stau_raus := "DVPtoEP_Sensoren".Stau_BG4440.Stat.B_Akt ,
|
||||
Start_Ok := #Fahren_Ok ,
|
||||
Antrieb_Schleuse_aktiv := "MA0061" ,
|
||||
Antrieb_plus_aktiv := "MA0320" ,
|
||||
Schleuse_geöffnet := "MB3366" ,
|
||||
RestZeit_Bereich_plus := #Bereich_4441.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DVPtoEP_Zylinder".Schleuse_3366.Stat.Ast ,
|
||||
Error := %DB708.DBW530 ,
|
||||
Antrieb_Schleuse_vor := "DVPtoEP_Antriebe".MA0061.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVPtoEP_Antriebe".MA0061.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVPtoEP_Antriebe".MA0061.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DVPtoEP_Antriebe".MA0061.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Bereich_4441.Dyn.Status.Trolley_kommt_in_Bereich ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
--- NW 4: Schleuse 3275 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=3275, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3251", B_InSchleuse:="BG3275", B_AusSchleuse:="BG3274", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG3274.Stat.B_Akt, Start_Ok:=Bereich_3361.Dyn.Sk.Bereich_ok, Antrieb_Schleuse_aktiv:="MA0151", Antrieb_plus_aktiv:="MA0060", Schleuse_geöffnet:="MB3275", RestZeit_Bereich_plus:=Bereich_3361.Dyn.Restzeit, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_3275.Stat.Ast, Error:=DB708.DBW570, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0151.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0151.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0151.Stat.A_PS, Antrieb_plus_vor:=Bereich_3361.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ0701
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ0701.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7401
|
||||
U "DOutbound_Bereich".A01_UZ7401.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
--- NW 5: Störungen anzeigen UZ7105 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7105.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC071.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
NETWORK
|
||||
TITLE = Bereich 4441 (hinter BST 1)
|
||||
|
||||
//Falls Trolley hinter BST noch gespeichert
|
||||
U "DVPtoEP_Sensoren".Stau_BG4440.Stat.B_Akt;
|
||||
S "DVPtoEP_Antriebe".MA0320.Stat.A_start;
|
||||
|
||||
--- NW 6: Störungen quittieren UZ7105/0701 ---
|
||||
A "DOutbound_Bereich".A01_UZ7105.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UZ0701.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC071.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
U "BG4440";
|
||||
U "MB3366";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
CALL #Bereich_4441
|
||||
( Bereichs_Nr := 4441 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := #B_vor_Schleuse ,
|
||||
B_BereichsEnde := "BG4441" ,
|
||||
B_Zähl := "BG4442" ,
|
||||
B_Stau_raus := "DVPtoEP_Sensoren".Stau_BG4442.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Bereich_aktiv := "MA0320" ,
|
||||
Antrieb_plus_aktiv := "MA0321" ,
|
||||
Antrieb_Bereich_vor := "DVPtoEP_Antriebe".MA0320.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DVPtoEP_Antriebe".MA0320.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW474 ,
|
||||
Antrieb_Bereich_start := "DVPtoEP_Antriebe".MA0320.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DVPtoEP_Antriebe".MA0321.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DVPtoEP_Antriebe".MA0321.Stat.A_start ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
--- NW 7: Bereich 3361 ---
|
||||
A "BG3274"
|
||||
A "MB3275"
|
||||
= B_vor_Schleuse
|
||||
NETWORK
|
||||
TITLE = Schleuse 4443
|
||||
CALL #Schleuse_4443
|
||||
( Schleusen_Nr := 4443 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4442" ,
|
||||
B_InSchleuse := "BG4443" ,
|
||||
B_Zähl := , //über Weiche
|
||||
B_Stau_raus := "DVPtoEP_Sensoren".Stau_BG4445.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0321" ,
|
||||
Antrieb_plus_aktiv := , //über Weiche
|
||||
Schleuse_geöffnet := "MB4443" ,
|
||||
Y_Schleuse_Auf := "DVPtoEP_Zylinder".Schleuse_4443.Stat.Ast ,
|
||||
Error := %DB708.DBW554 ,
|
||||
Antrieb_Schleuse_vor := "DVPtoEP_Antriebe".MA0321.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVPtoEP_Antriebe".MA0321.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVPtoEP_Antriebe".MA0321.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DVPtoEP_Antriebe".MA0321.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //über Weiche
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=3361, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3361", B_Zähl:="BG3362", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG3362.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0060", Antrieb_plus_aktiv:="MA0061", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DVPtoEP_Antriebe".MA0060.Stat.A_vor, Antrieb_Bereich_stop:="DVPtoEP_Antriebe".MA0060.Stat.Stop_vor, Error:=DB708.DBW454, Antrieb_Bereich_start:="DVPtoEP_Antriebe".MA0060.Stat.A_start, Antrieb_plus_vor:="DVPtoEP_Antriebe".MA0061.Stat.A_vor, Antrieb_plus_start:="DVPtoEP_Antriebe".MA0061.Stat.A_start, Antrieb_minus_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, hStOk:=ErrAnz)
|
||||
NETWORK
|
||||
TITLE = Weiche 4445
|
||||
U "MA0321";
|
||||
U "MA0332";
|
||||
= #Antrieb_aktiv;
|
||||
|
||||
SET;
|
||||
R #Antrieb_vor;
|
||||
R #Antrieb_stop;
|
||||
|
||||
--- NW 8: Störungen anzeigen UZ7105/0701 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7105.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ0701.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC071.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
CALL #Weiche_4445
|
||||
( Weichen_Nr := 4445 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Fahren_Ok := 1 ,
|
||||
B_Ziel_gerade := "BG4447" ,
|
||||
B_Ziel_abzweig := "BG4461" ,
|
||||
Antrieb_Weiche_aktiv := #Antrieb_aktiv ,
|
||||
Antrieb_Gerade_aktiv := "MA0322" ,
|
||||
Antrieb_Abzweig_aktiv := "MA0331" ,
|
||||
Weiche_ist_AST := "MB4445" ,
|
||||
Y_Weiche_abzweig := "DVPtoEP_Zylinder".Weiche_4445.Stat.Ast ,
|
||||
Error := %DB708.DBW556 ,
|
||||
Antrieb_Weiche_vor := #Antrieb_vor , //da 2 Antriebe notwendig
|
||||
Antrieb_Weiche_stop := #Antrieb_stop ,
|
||||
Antrieb_Weiche_gerade_vor := "DVPtoEP_Antriebe".MA0322.Stat.A_vor ,
|
||||
Antrieb_Weiche_gerade_stop := "DVPtoEP_Antriebe".MA0322.Stat.Stop_vor ,
|
||||
Antrieb_Weiche_abzweig_vor := "DEPtoLP_Antriebe".MA0331.Stat.A_vor ,
|
||||
Antrieb_Weiche_abzweig_stop := "DEPtoLP_Antriebe".MA0331.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
U #Antrieb_vor;
|
||||
S "DVPtoEP_Antriebe".MA0321.Stat.A_vor;
|
||||
S "DEPtoLP_Antriebe".MA0332.Stat.A_vor;
|
||||
S "DVPtoEP_Antriebe".MA0321.Stat.A_start;
|
||||
S "DEPtoLP_Antriebe".MA0332.Stat.A_start;
|
||||
|
||||
--- NW 9: Störungen quittieren UZ0701 ---
|
||||
A "DOutbound_Bereich".A01_UZ0701.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
U #Antrieb_stop;
|
||||
S "DVPtoEP_Antriebe".MA0321.Stat.Stop_vor;
|
||||
|
||||
U #Antrieb_stop;
|
||||
U "MB4445";//Nur bei Abzweig
|
||||
S "DEPtoLP_Antriebe".MA0332.Stat.Stop_vor;
|
||||
|
||||
--- NW 10: Schleuse 3363 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=3363, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3362", B_InSchleuse:="BG3363", B_AusSchleuse:="BG3364", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG3364.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0061", Antrieb_plus_aktiv:="MA0061", Schleuse_geöffnet:="MB3363", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_3363.Stat.Ast, Error:=DB708.DBW528, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0061.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0061.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0061.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0061.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch
|
||||
//Damit Partner fahren kann:
|
||||
U #Weiche_4445.Dyn.Status.Weiche_frei;
|
||||
R "DVPtoEP_Zylinder".Weiche_4445.Stat.Ast;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4450
|
||||
SET;
|
||||
R #Antrieb_vor;
|
||||
|
||||
CALL #Schleuse_4450
|
||||
( Schleusen_Nr := 4450 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4447" ,
|
||||
B_InSchleuse := "BG4450" ,
|
||||
B_Zähl := "BG4451" ,
|
||||
B_Stau_raus := "DVPtoEP_Sensoren".Stau_BG4451.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0322" ,
|
||||
Antrieb_plus_aktiv := "MA0323" ,
|
||||
Schleuse_geöffnet := "MB4450" ,
|
||||
RestZeit_Bereich_plus := #Bereich_4454.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DVPtoEP_Zylinder".Schleuse_4450.Stat.Ast ,
|
||||
Error := %DB708.DBW558 ,
|
||||
Antrieb_Schleuse_vor := "DVPtoEP_Antriebe".MA0322.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVPtoEP_Antriebe".MA0322.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVPtoEP_Antriebe".MA0322.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DVPtoEP_Antriebe".MA0322.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Antrieb_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
--- NW 11: Schleuse 3366 (vor BST 1) ---
|
||||
AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3
|
||||
AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4
|
||||
AN "7_HMI_Err_UH07_OB".System.BST1_Feueralarm
|
||||
AN "7_HMI_Err_UH07_OB".System.BST1_Geschlossen
|
||||
AN "7_HMI_Err_UH07_OB".System."BST1_Störung"
|
||||
A Bereich_4441.Dyn.Sk.Bereich_ok
|
||||
= Fahren_Ok
|
||||
U #Antrieb_vor;
|
||||
S "DVPtoEP_Antriebe".MA0322.Stat.A_vor;
|
||||
S #Bereich_4454.Dyn.Status.Trolley_kommt_in_Bereich;
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=3366, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3364", B_InSchleuse:="BG3366", B_AusSchleuse:="BG4440", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG4440.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0061", Antrieb_plus_aktiv:="MA0320", Schleuse_geöffnet:="MB3366", RestZeit_Bereich_plus:=Bereich_4441.Dyn.Restzeit, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_3366.Stat.Ast, Error:=DB708.DBW530, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0061.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0061.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0061.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0061.Stat.A_PS, Antrieb_plus_vor:=Bereich_4441.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7401
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7401.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7401/7402
|
||||
U "DOutbound_Bereich".A01_UZ7401.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UZ7402.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
--- NW 12: Störungen anzeigen UZ0701 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ0701.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
NETWORK
|
||||
TITLE = Bereich 4454
|
||||
U "BG4453";
|
||||
U "MB4450";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
U "DVPtoEP_Sensoren".Stau_BG4500.Stat.B_Akt;
|
||||
O "DVPtoEP_Sensoren".Stau_BG4530.Stat.B_Akt;
|
||||
O "DVPtoEP_Sensoren".Stau_BG4502.Stat.B_Akt;
|
||||
= #Stau_raus;
|
||||
|
||||
--- NW 13: Störungen quittieren UZ7401 ---
|
||||
A "DOutbound_Bereich".A01_UZ7401.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
CALL #Bereich_4454
|
||||
( Bereichs_Nr := 4454 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := #B_vor_Schleuse ,
|
||||
B_BereichsEnde := "BG4454" ,
|
||||
B_Zähl := "BG4500" ,
|
||||
B_Stau_raus := #Stau_raus ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Bereich_aktiv := "MA0323" ,
|
||||
Antrieb_plus_aktiv := "MA0324" ,
|
||||
Antrieb_Bereich_vor := "DVPtoEP_Antriebe".MA0323.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DVPtoEP_Antriebe".MA0323.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW476 ,
|
||||
Antrieb_Bereich_start := "DVPtoEP_Antriebe".MA0323.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DVPtoEP_Antriebe".MA0324.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DVPtoEP_Antriebe".MA0324.Stat.A_start ,
|
||||
Antrieb_minus_vor := "DVPtoEP_Antriebe".MA0322.Stat.A_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0324 / Übergang 4501
|
||||
U "BG4500";
|
||||
O "BG4530";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
--- NW 14: Bereich 4441 (hinter BST 1) ---
|
||||
// Falls Trolley hinter BST noch gespeichert
|
||||
A "DVPtoEP_Sensoren".Stau_BG4440.Stat.B_Akt
|
||||
S "DVPtoEP_Antriebe".MA0320.Stat.A_start
|
||||
CALL #Übergang_4501
|
||||
( ErrQuit := #ErrQuit ,
|
||||
B_Anfang := #B_vor_Schleuse ,
|
||||
B_Am_Übergang := "BG4501" ,
|
||||
B_Stau_Antrieb_plus := "BG4502" ,
|
||||
Antrieb_aktiv := "MA0324" ,
|
||||
Antrieb_plus_aktiv := "MA0325" ,
|
||||
Antrieb_vor := "DVPtoEP_Antriebe".MA0324.Stat.A_vor ,
|
||||
Antrieb_start := "DVPtoEP_Antriebe".MA0324.Stat.A_start ,
|
||||
Antrieb_stop := "DVPtoEP_Antriebe".MA0324.Stat.A_PS ,
|
||||
Antrieb_plus_vor := "DVPtoEP_Antriebe".MA0325.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DVPtoEP_Antriebe".MA0325.Stat.A_start
|
||||
);
|
||||
|
||||
A "BG4440"
|
||||
A "MB3366"
|
||||
= B_vor_Schleuse
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7401/7402
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7401.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ7402.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=4441, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4441", B_Zähl:="BG4442", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG4442.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0320", Antrieb_plus_aktiv:="MA0321", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DVPtoEP_Antriebe".MA0320.Stat.A_vor, Antrieb_Bereich_stop:="DVPtoEP_Antriebe".MA0320.Stat.Stop_vor, Error:=DB708.DBW474, Antrieb_Bereich_start:="DVPtoEP_Antriebe".MA0320.Stat.A_start, Antrieb_plus_vor:="DVPtoEP_Antriebe".MA0321.Stat.A_vor, Antrieb_plus_start:="DVPtoEP_Antriebe".MA0321.Stat.A_start, Antrieb_minus_vor:=?, hStOk:=ErrAnz)
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 15: Schleuse 4443 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4443, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4442", B_InSchleuse:="BG4443", B_Zähl:=?, B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG4445.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0321", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB4443", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_4443.Stat.Ast, Error:=DB708.DBW554, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0321.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0321.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0321.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0321.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // über Weiche | über Weiche | über Weiche
|
||||
|
||||
|
||||
--- NW 16: Weiche 4445 ---
|
||||
A "MA0321"
|
||||
A "MA0332"
|
||||
= Antrieb_aktiv
|
||||
|
||||
SET
|
||||
R Antrieb_vor
|
||||
R Antrieb_stop
|
||||
|
||||
CALL FB "None" , (Weichen_Nr:=4445, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG4447", B_Ziel_abzweig:="BG4461", Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0322", Antrieb_Abzweig_aktiv:="MA0331", Weiche_ist_AST:="MB4445", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DVPtoEP_Zylinder".Weiche_4445.Stat.Ast, Error:=DB708.DBW556, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:="DVPtoEP_Antriebe".MA0322.Stat.A_vor, Antrieb_Weiche_gerade_stop:="DVPtoEP_Antriebe".MA0322.Stat.Stop_vor, Antrieb_Weiche_abzweig_vor:="DEPtoLP_Antriebe".MA0331.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DEPtoLP_Antriebe".MA0331.Stat.Stop_vor, hStOk:=ErrAnz) // da 2 Antriebe notwendig
|
||||
|
||||
A Antrieb_vor
|
||||
S "DVPtoEP_Antriebe".MA0321.Stat.A_vor
|
||||
S "DEPtoLP_Antriebe".MA0332.Stat.A_vor
|
||||
S "DVPtoEP_Antriebe".MA0321.Stat.A_start
|
||||
S "DEPtoLP_Antriebe".MA0332.Stat.A_start
|
||||
|
||||
A Antrieb_stop
|
||||
S "DVPtoEP_Antriebe".MA0321.Stat.Stop_vor
|
||||
|
||||
A Antrieb_stop
|
||||
A "MB4445" // Nur bei Abzweig
|
||||
S "DEPtoLP_Antriebe".MA0332.Stat.Stop_vor
|
||||
|
||||
// Damit Partner fahren kann:
|
||||
A Weiche_4445.Dyn.Status.Weiche_frei
|
||||
R "DVPtoEP_Zylinder".Weiche_4445.Stat.Ast
|
||||
|
||||
|
||||
--- NW 17: Schleuse 4450 ---
|
||||
SET
|
||||
R Antrieb_vor
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=4450, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4447", B_InSchleuse:="BG4450", B_Zähl:="BG4451", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG4451.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0322", Antrieb_plus_aktiv:="MA0323", Schleuse_geöffnet:="MB4450", RestZeit_Bereich_plus:=Bereich_4454.Dyn.Restzeit, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_4450.Stat.Ast, Error:=DB708.DBW558, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0322.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0322.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0322.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0322.Stat.A_PS, Antrieb_plus_vor:=Antrieb_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
A Antrieb_vor
|
||||
S "DVPtoEP_Antriebe".MA0322.Stat.A_vor
|
||||
S Bereich_4454.Dyn.Status.Trolley_kommt_in_Bereich
|
||||
|
||||
|
||||
--- NW 18: Störungen anzeigen UZ7401 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7401.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 19: Störungen quittieren UZ7401/7402 ---
|
||||
A "DOutbound_Bereich".A01_UZ7401.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UZ7402.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 20: Bereich 4454 ---
|
||||
A "BG4453"
|
||||
A "MB4450"
|
||||
= B_vor_Schleuse
|
||||
|
||||
A "DVPtoEP_Sensoren".Stau_BG4500.Stat.B_Akt
|
||||
O "DVPtoEP_Sensoren".Stau_BG4530.Stat.B_Akt
|
||||
O "DVPtoEP_Sensoren".Stau_BG4502.Stat.B_Akt
|
||||
= Stau_raus
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=4454, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4454", B_Zähl:="BG4500", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0323", Antrieb_plus_aktiv:="MA0324", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DVPtoEP_Antriebe".MA0323.Stat.A_vor, Antrieb_Bereich_stop:="DVPtoEP_Antriebe".MA0323.Stat.Stop_vor, Error:=DB708.DBW476, Antrieb_Bereich_start:="DVPtoEP_Antriebe".MA0323.Stat.A_start, Antrieb_plus_vor:="DVPtoEP_Antriebe".MA0324.Stat.A_vor, Antrieb_plus_start:="DVPtoEP_Antriebe".MA0324.Stat.A_start, Antrieb_minus_vor:="DVPtoEP_Antriebe".MA0322.Stat.A_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 21: MA0324 / Übergang 4501 ---
|
||||
A "BG4500"
|
||||
O "BG4530"
|
||||
= B_vor_Schleuse
|
||||
|
||||
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:=B_vor_Schleuse, B_Am_Übergang:="BG4501", B_Stau_Antrieb_plus:="BG4502", Antrieb_aktiv:="MA0324", Antrieb_plus_aktiv:="MA0325", Antrieb_vor:="DVPtoEP_Antriebe".MA0324.Stat.A_vor, Antrieb_start:="DVPtoEP_Antriebe".MA0324.Stat.A_start, Antrieb_stop:="DVPtoEP_Antriebe".MA0324.Stat.A_PS, Antrieb_plus_vor:="DVPtoEP_Antriebe".MA0325.Stat.A_vor, Antrieb_plus_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start)
|
||||
|
||||
|
||||
--- NW 22: Störungen anzeigen UZ7401/7402 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7401.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ7402.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 23: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
+95
-92
@@ -1,120 +1,123 @@
|
||||
=== FC 2181: VPtoEP_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
|
||||
FUNCTION "VPtoEP_Ziel_FC" : Void
|
||||
TITLE = Ziel-FC: VP>EP
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_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;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Bereich 3361: Weiterfahren erlaubt ? (Ende MA0060) ---
|
||||
L "MW190"
|
||||
L 3361 // Aufruf von Schleuse 3361 ?
|
||||
<>I // Nein!
|
||||
JC X3361E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
AN "DVPtoEP_Sensoren".Stau_BG3362.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
NETWORK
|
||||
TITLE = Bereich 3361: Weiterfahren erlaubt ? (Ende MA0060)
|
||||
L "MW190";
|
||||
L 3361 ;//Aufruf von Schleuse 3361 ?
|
||||
<>I;//Nein!
|
||||
SPB X3361E;
|
||||
|
||||
BEU
|
||||
UN "DVPtoEP_Sensoren".Stau_BG3362.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
X3361E: NOP 0
|
||||
BEA;
|
||||
|
||||
X3361E: NOP 0;
|
||||
|
||||
--- NW 3: Schleuse 3366: (BST 1) ---
|
||||
L "MW190"
|
||||
L 3366 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X3366E
|
||||
NETWORK
|
||||
TITLE = Schleuse 3366: (BST 1)
|
||||
L "MW190";
|
||||
L 3366 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X3366E;
|
||||
|
||||
SET
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
SET;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
X3366E: NOP 0
|
||||
X3366E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 4441: Weiterfahren erlaubt ? (Ende MA0320)
|
||||
L "MW190";
|
||||
L 4441 ;//Aufruf von Schleuse 4441 ?
|
||||
<>I;//Nein!
|
||||
SPB X4441E;
|
||||
|
||||
--- NW 4: Bereich 4441: Weiterfahren erlaubt ? (Ende MA0320) ---
|
||||
L "MW190"
|
||||
L 4441 // Aufruf von Schleuse 4441 ?
|
||||
<>I // Nein!
|
||||
JC X4441E
|
||||
UN "DVPtoEP_Sensoren".Stau_BG4442.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
AN "DVPtoEP_Sensoren".Stau_BG4442.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
X4441E: NOP 0;
|
||||
|
||||
X4441E: NOP 0
|
||||
NETWORK
|
||||
TITLE = Schleuse 4443: (Vor ByPass zurück zu LP)
|
||||
L "MW190";
|
||||
L 4443 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB PS5E;
|
||||
|
||||
//Ziel-Check:
|
||||
L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Trolley_ShopGroup;
|
||||
L DINT#-1 ;//leerer Trolley ?
|
||||
==D ;//Ja !
|
||||
UN "DVPtoEP_Sensoren".Sack_BG4444.Stat.B_Akt;//Kein Sack erkannt
|
||||
SPB A4443 ;//Abzweig fahren
|
||||
|
||||
--- NW 5: Schleuse 4443: (Vor ByPass zurück zu LP) ---
|
||||
L "MW190"
|
||||
L 4443 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC PS5E
|
||||
SPA G4443 ;//Rest Gerade fahren
|
||||
|
||||
// Ziel-Check:
|
||||
L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Trolley_ShopGroup
|
||||
L DINT#-1 // leerer Trolley ?
|
||||
==D // Ja !
|
||||
AN "DVPtoEP_Sensoren".Sack_BG4444.Stat.B_Akt // Kein Sack erkannt
|
||||
JC A4443 // Abzweig fahren
|
||||
A4443: L 16#4461;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
JU G4443 // Rest Gerade fahren
|
||||
//Quell-Steuerung:
|
||||
L "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Raus_Trolleys;
|
||||
L 0 ;//Sind Trolleys zur Weiche MB4210 unterwegs?
|
||||
>I;//Ja!
|
||||
O "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Status.Reset_aktiv;
|
||||
O "MB4466" ;//Andere Quelle aktiv
|
||||
BEB;
|
||||
|
||||
A4443: L 16#4461
|
||||
T "MW198" // Weichenziel
|
||||
UN "DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
// Quell-Steuerung:
|
||||
L "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Raus_Trolleys
|
||||
L 0 // Sind Trolleys zur Weiche MB4210 unterwegs?
|
||||
>I // Ja!
|
||||
O "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Status.Reset_aktiv
|
||||
O "MB4466" // Andere Quelle aktiv
|
||||
BEC
|
||||
BEA;
|
||||
|
||||
AN "DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
G4443: L 16#4447;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
BEU
|
||||
UN "DVPtoEP_Sensoren".Stau_BG4447.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
G4443: L 16#4447
|
||||
T "MW198" // Weichenziel
|
||||
BEA;
|
||||
|
||||
AN "DVPtoEP_Sensoren".Stau_BG4447.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
PS5E: NOP 0;
|
||||
|
||||
BEU
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
PS5E: NOP 0
|
||||
|
||||
|
||||
--- NW 6: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
=== FC 2100: VPtoEP_Bereich [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "VPtoEP_Bereich" : Void
|
||||
TITLE = Bereich Outbound: VP > EP
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Baustein-Aufrufe ---
|
||||
CALL FB "VPtoEP_Sensoren" ,
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Baustein-Aufrufe
|
||||
CALL "VPtoEP_Sensoren", "DVPtoEP_Sensoren";
|
||||
|
||||
CALL FB "VPtoEP_OmniFahren" ,
|
||||
CALL "VPtoEP_OmniFahren", "DVPtoEP_OmniFahren";
|
||||
|
||||
CALL FB "VPtoEP_Zylinder" ,
|
||||
CALL "VPtoEP_Zylinder", "DVPtoEP_Zylinder";
|
||||
|
||||
CALL FB "VPtoEP_Antriebe" ,
|
||||
CALL "VPtoEP_Antriebe", "DVPtoEP_Antriebe";
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,42 +1,77 @@
|
||||
=== FB 3190: EP_Sensoren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Stau_EP1 : "MSensoren"
|
||||
Stau_EP2 : "MSensoren"
|
||||
Stau_EP3 : "MSensoren"
|
||||
Stau_EP4 : "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:
|
||||
FUNCTION_BLOCK "EP_Sensoren"
|
||||
TITLE = Einige Sensoren entprellen EntnahmePuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Stau_EP1 : "MSensoren";
|
||||
Stau_EP2 : "MSensoren";
|
||||
Stau_EP3 : "MSensoren";
|
||||
Stau_EP4 : "MSensoren";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4504", T_Ein:=100, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4505", T_Ein:=100, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Stau EntnahmePuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_EP1
|
||||
( ESensor := "BG4504" ,
|
||||
T_Ein := 100 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau EntnahmePuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_EP2
|
||||
( ESensor := "BG4505" ,
|
||||
T_Ein := 100 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 3: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4506", T_Ein:=100, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau EntnahmePuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_EP3
|
||||
( ESensor := "BG4506" ,
|
||||
T_Ein := 100 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau EntnahmePuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_EP4
|
||||
( ESensor := "BG4507" ,
|
||||
T_Ein := 100 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 4: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4507", T_Ein:=100, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,50 +1,86 @@
|
||||
=== FB 3192: EP_Zylinder [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Sorter_4503 : "MZylinder" //
|
||||
Weiche_EP1 : "MZylinder" //
|
||||
Weiche_EP2 : "MZylinder"
|
||||
Weiche_EP3 : "MZylinder"
|
||||
Weiche_EP4 : "MZylinder"
|
||||
Temp:
|
||||
Auto : Bool // Automatik ist aktiv
|
||||
Hand : Bool // Hand ist aktiv
|
||||
ZylAst : Bool // Zylinder ansteuern
|
||||
Constant:
|
||||
FUNCTION_BLOCK "EP_Zylinder"
|
||||
TITLE = Zylinder Outbound Entnahmepuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Sorter_4503 : "MZylinder"; //
|
||||
Weiche_EP1 : "MZylinder"; //
|
||||
Weiche_EP2 : "MZylinder";
|
||||
Weiche_EP3 : "MZylinder";
|
||||
Weiche_EP4 : "MZylinder";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UC074/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
A "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next // Zylinder-Stellung nicht mehr ändern
|
||||
VAR_TEMP
|
||||
Auto : Bool; // Automatik ist aktiv
|
||||
Hand : Bool; // Hand ist aktiv
|
||||
ZylAst : Bool; // Zylinder ansteuern
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse_4503 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4503", ZylGst:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC074/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
--- NW 3: Weiche_EP1 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4504", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4503
|
||||
CALL #Sorter_4503
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4503"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche_EP1
|
||||
CALL #Weiche_EP1
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4504"
|
||||
);
|
||||
|
||||
--- NW 4: Weiche_EP2 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4505", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Weiche_EP2
|
||||
CALL #Weiche_EP2
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4505"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche_EP3
|
||||
CALL #Weiche_EP3
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4506"
|
||||
);
|
||||
|
||||
--- NW 5: Weiche_EP3 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4506", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Weiche_EP4
|
||||
CALL #Weiche_EP4
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
Next: BE;
|
||||
|
||||
--- NW 6: Weiche_EP4 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:=?, ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 7: Ende ---
|
||||
Next: BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,25 +1,24 @@
|
||||
=== FC 3100: EP_Bereich [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "EP_Bereich" : Void
|
||||
TITLE = Bereich Outbound: EntnahmePuffer
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Baustein-Aufrufe ---
|
||||
CALL FB "EP_Sensoren" ,
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Baustein-Aufrufe
|
||||
CALL "EP_Sensoren", "DEP_Sensoren";
|
||||
|
||||
CALL FB "EP_OmniFahren" ,
|
||||
CALL "EP_OmniFahren", "DEP_OmniFahren";
|
||||
|
||||
CALL FB "EntnahmePufferStrecken" ,
|
||||
CALL "EntnahmePufferStrecken", "DEntnahmePufferStrecken";
|
||||
|
||||
CALL FB "EP_Sorter" ,
|
||||
CALL "EP_Sorter", "DEP_Sorter";
|
||||
|
||||
CALL FB "EP_Zylinder" ,
|
||||
CALL "EP_Zylinder", "DEP_Zylinder";
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+32
-29
@@ -1,38 +1,41 @@
|
||||
=== FC 3182: EP_Draussen_FC [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "EP_Draussen_FC" : Void
|
||||
TITLE = Draussen-FC: EntnahmePuffer
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
SET // Rückmeldungen erst mal resetten
|
||||
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4503 (Sorter EP): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 4503 ;//Aufruf von Schleuse 4503 ?
|
||||
<>I;//Nein!
|
||||
SPB X4503E;
|
||||
|
||||
--- NW 2: Schleuse 4503 (Sorter EP): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 4503 // Aufruf von Schleuse 4503 ?
|
||||
<>I // Nein!
|
||||
JC X4503E
|
||||
//Trolleydaten in DB1000 löschen, da danach zum LP fährt und dann kein Leser mehr!
|
||||
CALL "Trolleydaten_löschen"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX //IDX
|
||||
);
|
||||
|
||||
// Trolleydaten in DB1000 löschen, da danach zum LP fährt und dann kein Leser mehr!
|
||||
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX) // IDX
|
||||
//Daten in Sep 4503 löschen:
|
||||
L DINT#0;
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
// Daten in Sep 4503 löschen:
|
||||
L DINT#0
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
X4503E: NOP 0;
|
||||
|
||||
X4503E: NOP 0
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+40
-31
@@ -1,42 +1,51 @@
|
||||
=== FC 3180: EP_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"
|
||||
FUNCTION "EP_Leser_FC" : Void
|
||||
TITLE = Leser-FC: EntnahmePuffer
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_TEMP
|
||||
Zielebene : Word;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 4503: (Sorter EP) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 4503 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X4503E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y4503
|
||||
//Keine
|
||||
L 0;//Evtl. Zwischenziel (MW196)
|
||||
T "MW196";
|
||||
|
||||
BEU
|
||||
NETWORK
|
||||
TITLE = Schleuse 4503: (Sorter EP)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 4503 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X4503E;
|
||||
|
||||
Y4503: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y4503;
|
||||
|
||||
// /In Zukunft Anfrage bei Host!
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DEP_OmniFahren".Schleuse_4503.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse, Endziel:=16#E201, ShopGroup:=0) // Erst mal, da kein Host! | Entnahme-Puffer 1
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
Y4503: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
X4503E: NOP 0
|
||||
///In Zukunft Anfrage bei Host!
|
||||
CALL "Trolleydaten_neu_anlegen"//Erst mal, da kein Host!
|
||||
( Gesamt_Trolley_DL := "DEP_OmniFahren".Schleuse_4503.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#E201 , //Entnahme-Puffer 1
|
||||
ShopGroup := 0
|
||||
);
|
||||
|
||||
BEA;
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
X4503E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+76
-55
@@ -1,68 +1,89 @@
|
||||
=== FB 3128: EP_OmniFahren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_4503 : "MHMOmniSchleuse"
|
||||
EP_1_voll : Bool
|
||||
EP_2_voll : Bool
|
||||
EP_3_voll : Bool
|
||||
EP_4_voll : Bool
|
||||
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:
|
||||
FUNCTION_BLOCK "EP_OmniFahren"
|
||||
TITLE = Omnifahren Outbound EntnahmePuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_4503 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
EP_1_voll { S7_SetPoint := 'True'} : Bool;
|
||||
EP_2_voll { S7_SetPoint := 'True'} : Bool;
|
||||
EP_3_voll { S7_SetPoint := 'True'} : Bool;
|
||||
EP_4_voll { S7_SetPoint := 'True'} : Bool;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Systemzeug ---
|
||||
// VollPuffer-Bereich:
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
= Schleuse_4503.Dyn.Sk.Auto_akt
|
||||
|
||||
AN "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
= Schleuse_4503.Dyn.Sk.Bereich_ok
|
||||
VAR_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;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Störungen quittieren UZ7402 ---
|
||||
A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Systemzeug
|
||||
|
||||
//VollPuffer-Bereich:
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
= #Schleuse_4503.Dyn.Sk.Auto_akt;
|
||||
|
||||
--- NW 3: Schleuse 4503 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4503, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4502", B_InSchleuse:="BG4503", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0325", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB4503", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW564, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0325.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0325.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // weiterfahrt über Sorter-Sep
|
||||
UN "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
= #Schleuse_4503.Dyn.Sk.Bereich_ok;
|
||||
|
||||
AN Schleuse_4503.Dyn.Status.Reset_aktiv
|
||||
JC NoR4503
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7402
|
||||
U "DOutbound_Bereich".A01_UZ7402.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
L DINT#0
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DEP_Sorter".Sorter_MB4503.Separator.Default_Ziel
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel
|
||||
NETWORK
|
||||
TITLE = Schleuse 4503
|
||||
CALL #Schleuse_4503
|
||||
( Schleusen_Nr := 4503 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4502" ,
|
||||
B_InSchleuse := "BG4503" ,
|
||||
B_AusSchleuse := , //weiterfahrt über Sorter-Sep
|
||||
Antrieb_Schleuse_aktiv := "MA0325" ,
|
||||
Schleuse_geöffnet := "MB4503" ,
|
||||
Error := %DB708.DBW564 ,
|
||||
Antrieb_Schleuse_vor := "DVPtoEP_Antriebe".MA0325.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DVPtoEP_Antriebe".MA0325.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DVPtoEP_Antriebe".MA0325.Stat.A_PS ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NoR4503: NOP 0
|
||||
UN #Schleuse_4503.Dyn.Status.Reset_aktiv;
|
||||
SPB NoR4503;
|
||||
|
||||
L DINT#0;
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DEP_Sorter".Sorter_MB4503.Separator.Default_Ziel;
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
--- NW 4: Störungen anzeigen UZ7402 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7402.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
NoR4503: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7402
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7402.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
+152
-132
@@ -1,165 +1,185 @@
|
||||
=== FC 3181: EP_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
|
||||
Error.Bit : Bool
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
SET // Rückmeldungen erst mal resetten
|
||||
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
|
||||
FUNCTION "EP_Ziel_FC" : Void
|
||||
TITLE = Ziel-FC: EntnahmePuffer_OmniFahren
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_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;
|
||||
"Error.Bit" : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 4503: Weiterfahren erlaubt ? (Sorter EP) ---
|
||||
L "MW190"
|
||||
L 4503 // Aufruf von Schleuse 4503 ?
|
||||
<>I // Nein!
|
||||
JC X4503E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
L "EP_TravelFIFO".Travel_FIFO_BG4527.FIFO.ANZAHL
|
||||
L 0 // Daten noch im Travel-FIFO?
|
||||
<>I // Ja !
|
||||
O "MB4503" // Trolley fährt schon
|
||||
BEC
|
||||
NETWORK
|
||||
TITLE = Schleuse 4503: Weiterfahren erlaubt ? (Sorter EP)
|
||||
L "MW190";
|
||||
L 4503 ;//Aufruf von Schleuse 4503 ?
|
||||
<>I;//Nein!
|
||||
SPB X4503E;
|
||||
|
||||
A "SGes".Ohne_PC_Fahren // Also Ziel simulieren
|
||||
JC Sim
|
||||
L "EP_TravelFIFO".Travel_FIFO_BG4527.FIFO.ANZAHL;
|
||||
L 0;//Daten noch im Travel-FIFO?
|
||||
<>I;//Ja !
|
||||
O "MB4503" ;//Trolley fährt schon
|
||||
BEB;
|
||||
|
||||
// Telegramm schon gesendet?
|
||||
AN "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet
|
||||
JC T4503
|
||||
U "SGes".Ohne_PC_Fahren;//Also Ziel simulieren
|
||||
SPB Sim;
|
||||
|
||||
SimOk: CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:="MW194", Int_Wert:=Ziel_int)
|
||||
//Telegramm schon gesendet?
|
||||
UN "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet;
|
||||
SPB T4503;
|
||||
|
||||
// Ziel-Überprüfung auf voll:
|
||||
L Ziel_int
|
||||
L 1
|
||||
==I
|
||||
AN "DEP_Sensoren".Stau_EP1.Stat.B_Akt
|
||||
JC ZielOk
|
||||
SimOk: CALL "BCD (4stellig)_to_INT"
|
||||
( BCD_Wert := "MW194" ,
|
||||
Int_Wert := #Ziel_int
|
||||
);
|
||||
|
||||
CAC
|
||||
L 2
|
||||
==I
|
||||
AN "DEP_Sensoren".Stau_EP2.Stat.B_Akt
|
||||
JC ZielOk
|
||||
//Ziel-Überprüfung auf voll:
|
||||
L #Ziel_int;
|
||||
L 1;
|
||||
==I;
|
||||
UN "DEP_Sensoren".Stau_EP1.Stat.B_Akt;
|
||||
SPB ZielOk;
|
||||
|
||||
CAC
|
||||
L 3
|
||||
==I
|
||||
AN "DEP_Sensoren".Stau_EP3.Stat.B_Akt
|
||||
JC ZielOk
|
||||
TAK;
|
||||
L 2;
|
||||
==I;
|
||||
UN "DEP_Sensoren".Stau_EP2.Stat.B_Akt;
|
||||
SPB ZielOk;
|
||||
|
||||
CAC
|
||||
L 4
|
||||
==I
|
||||
AN "DEP_Sensoren".Stau_EP4.Stat.B_Akt
|
||||
JC ZielOk
|
||||
TAK;
|
||||
L 3;
|
||||
==I;
|
||||
UN "DEP_Sensoren".Stau_EP3.Stat.B_Akt;
|
||||
SPB ZielOk;
|
||||
|
||||
A "10s-Impuls" // Nach 10s
|
||||
R "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet // Erneute Anfrage
|
||||
TAK;
|
||||
L 4;
|
||||
==I;
|
||||
UN "DEP_Sensoren".Stau_EP4.Stat.B_Akt;
|
||||
SPB ZielOk;
|
||||
|
||||
BEU // Warten, da Ziel unklar oder voll
|
||||
U "10s-Impuls";//Nach 10s
|
||||
R "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet;//Erneute Anfrage
|
||||
|
||||
ZielOk: L Ziel_int
|
||||
+ 200
|
||||
T "DEP_Sorter".Sorter_MB4503.Separator.Default_Ziel
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel
|
||||
BEA;//Warten, da Ziel unklar oder voll
|
||||
|
||||
// Scanner-IDX übergeben:
|
||||
L "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX // IDX
|
||||
ZielOk: L #Ziel_int;
|
||||
+ 200;
|
||||
T "DEP_Sorter".Sorter_MB4503.Separator.Default_Ziel;
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
CLR // Wird über MSorterRein (FB1423/5) gestartet!
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
//Scanner-IDX übergeben:
|
||||
L "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse;
|
||||
T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX;//IDX
|
||||
|
||||
BEU
|
||||
CLR ;//Wird über MSorterRein (FB1423/5) gestartet!
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
// GOHDReqM an Host senden:
|
||||
T4503: L "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse
|
||||
L 0 // Barcode bekannt?
|
||||
==D // Nein!
|
||||
BEC // Warten!
|
||||
BEA;
|
||||
|
||||
// Pufferstatus (Stau) ermitteln:
|
||||
A "DEP_Sensoren".Stau_EP1.Stat.B_Akt
|
||||
= "Daten_für_SendFIFO"."Status_2_Bit[0]"
|
||||
A "DEP_Sensoren".Stau_EP2.Stat.B_Akt
|
||||
= "Daten_für_SendFIFO"."Status_2_Bit[1]"
|
||||
A "DEP_Sensoren".Stau_EP3.Stat.B_Akt
|
||||
= "Daten_für_SendFIFO"."Status_2_Bit[2]"
|
||||
A "DEP_Sensoren".Stau_EP4.Stat.B_Akt
|
||||
= "Daten_für_SendFIFO"."Status_2_Bit[3]"
|
||||
//GOHDReqM an Host senden:
|
||||
T4503: L "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse;
|
||||
L 0;//Barcode bekannt?
|
||||
==D;//Nein!
|
||||
BEB;//Warten!
|
||||
|
||||
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse, StationsNr:=4503, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit")
|
||||
//Pufferstatus (Stau) ermitteln:
|
||||
U "DEP_Sensoren".Stau_EP1.Stat.B_Akt;
|
||||
= "Daten_für_SendFIFO"."Status_2_Bit[0]";
|
||||
U "DEP_Sensoren".Stau_EP2.Stat.B_Akt;
|
||||
= "Daten_für_SendFIFO"."Status_2_Bit[1]";
|
||||
U "DEP_Sensoren".Stau_EP3.Stat.B_Akt;
|
||||
= "Daten_für_SendFIFO"."Status_2_Bit[2]";
|
||||
U "DEP_Sensoren".Stau_EP4.Stat.B_Akt;
|
||||
= "Daten_für_SendFIFO"."Status_2_Bit[3]";
|
||||
|
||||
AN "Error.Bit"
|
||||
S "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet
|
||||
CALL "Daten_in_SendFIFO_speichern", "Daten_für_SendFIFO"
|
||||
( "TelegrammKennung[1]" := 'G' ,
|
||||
"TelegrammKennung[2]" := 'O' ,
|
||||
"TelegrammKennung[3]" := 'H' ,
|
||||
"TelegrammKennung[4]" := 'D' ,
|
||||
"TelegrammKennung[5]" := 'R' ,
|
||||
"TelegrammKennung[6]" := 'e' ,
|
||||
"TelegrammKennung[7]" := 'q' ,
|
||||
"TelegrammKennung[8]" := 'M' ,
|
||||
TrolleyID := "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse ,
|
||||
StationsNr := 4503 ,
|
||||
Port := 2 ,
|
||||
Ret_Val_FIFO_IN := "MB199" ,
|
||||
Error := #"Error.Bit"
|
||||
);
|
||||
|
||||
BEU
|
||||
UN #"Error.Bit";
|
||||
S "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet;
|
||||
|
||||
// /Zum Testen bei Inbetriebnahme ohne PC:
|
||||
Sim: A "DEP_Sensoren".Stau_EP1.Stat.B_Akt
|
||||
S "DEP_OmniFahren".EP_1_voll
|
||||
L 16#1 // /Tests mit Puffer 1
|
||||
AN "DEP_OmniFahren".EP_1_voll
|
||||
JC StartSim
|
||||
BEA;
|
||||
|
||||
A "DEP_Sensoren".Stau_EP2.Stat.B_Akt
|
||||
S "DEP_OmniFahren".EP_2_voll
|
||||
L 16#2 // /Tests mit Puffer 2
|
||||
AN "DEP_OmniFahren".EP_2_voll
|
||||
JC StartSim
|
||||
///Zum Testen bei Inbetriebnahme ohne PC:
|
||||
Sim: U "DEP_Sensoren".Stau_EP1.Stat.B_Akt;
|
||||
S "DEP_OmniFahren".EP_1_voll;
|
||||
L 16#1 ;///Tests mit Puffer 1
|
||||
UN "DEP_OmniFahren".EP_1_voll;
|
||||
SPB StartSim;
|
||||
|
||||
A "DEP_Sensoren".Stau_EP3.Stat.B_Akt
|
||||
S "DEP_OmniFahren".EP_3_voll
|
||||
L 16#3 // /Tests mit Puffer 3
|
||||
AN "DEP_OmniFahren".EP_3_voll
|
||||
JC StartSim
|
||||
U "DEP_Sensoren".Stau_EP2.Stat.B_Akt;
|
||||
S "DEP_OmniFahren".EP_2_voll;
|
||||
L 16#2 ;///Tests mit Puffer 2
|
||||
UN "DEP_OmniFahren".EP_2_voll;
|
||||
SPB StartSim;
|
||||
|
||||
A "DEP_Sensoren".Stau_EP4.Stat.B_Akt
|
||||
S "DEP_OmniFahren".EP_4_voll
|
||||
L 16#4 // /Tests mit Puffer 4
|
||||
AN "DEP_OmniFahren".EP_4_voll
|
||||
JC StartSim
|
||||
U "DEP_Sensoren".Stau_EP3.Stat.B_Akt;
|
||||
S "DEP_OmniFahren".EP_3_voll;
|
||||
L 16#3 ;///Tests mit Puffer 3
|
||||
UN "DEP_OmniFahren".EP_3_voll;
|
||||
SPB StartSim;
|
||||
|
||||
SET
|
||||
R "DEP_OmniFahren".EP_1_voll
|
||||
R "DEP_OmniFahren".EP_2_voll
|
||||
R "DEP_OmniFahren".EP_3_voll
|
||||
R "DEP_OmniFahren".EP_4_voll
|
||||
U "DEP_Sensoren".Stau_EP4.Stat.B_Akt;
|
||||
S "DEP_OmniFahren".EP_4_voll;
|
||||
L 16#4 ;///Tests mit Puffer 4
|
||||
UN "DEP_OmniFahren".EP_4_voll;
|
||||
SPB StartSim;
|
||||
|
||||
BEU
|
||||
SET;
|
||||
R "DEP_OmniFahren".EP_1_voll;
|
||||
R "DEP_OmniFahren".EP_2_voll;
|
||||
R "DEP_OmniFahren".EP_3_voll;
|
||||
R "DEP_OmniFahren".EP_4_voll;
|
||||
|
||||
StartSim: T "MW194"
|
||||
BEA;
|
||||
|
||||
JU SimOk
|
||||
StartSim: T "MW194";
|
||||
|
||||
X4503E: NOP 0
|
||||
SPA SimOk;
|
||||
|
||||
X4503E: NOP 0;
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+408
-295
@@ -1,296 +1,409 @@
|
||||
=== FB 3423: EP_Sorter [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Sorter_MB4503 : "MSepSorterRein"
|
||||
Sync_BG4527 : "MStartSync"
|
||||
Weiche_EP1 : "MWeiche_Sorter_EP"
|
||||
Weiche_EP2 : "MWeiche_Sorter_EP"
|
||||
Weiche_EP3 : "MWeiche_Sorter_EP"
|
||||
Weiche_EP4 : "MWeiche_Sorter_EP"
|
||||
Impuls_BG4526 : "MImpulsGeber"
|
||||
Ohne_PC_fahren : Bool
|
||||
SorterReset : Bool
|
||||
Temp:
|
||||
ErrQuit : Bool
|
||||
ErrAnz : Bool
|
||||
Antrieb : Bool
|
||||
Stau : Bool
|
||||
Start_Ok : Bool
|
||||
Error_aktiv : Bool
|
||||
Leer : Bool
|
||||
Err_DW : DInt
|
||||
Err_Bits : Int
|
||||
Constant:
|
||||
|
||||
--- NW 1: Systemzeug ---
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
= Sorter_MB4503.Dyn.Sk.Auto_akt
|
||||
|
||||
AN "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
= Sorter_MB4503.Dyn.Sk.Bereich_ok
|
||||
|
||||
// Bereichshalt:
|
||||
CLR // nicht verbaut
|
||||
R Sorter_MB4503.Dyn.Sk.Bereich_ok
|
||||
|
||||
// Sonderbetriebsarten Weichen:
|
||||
CLR
|
||||
= Weiche_EP1.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_EP2.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_EP3.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_EP4.Dyn.Status.Weichentest_aktiv
|
||||
|
||||
A Sync_BG4527.Dyn.Status.TeachModus_Aktiv
|
||||
= Weiche_EP1.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_EP2.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_EP3.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_EP4.Dyn.Status.TeachModus_aktiv
|
||||
|
||||
CLR
|
||||
= Sorter_MB4503.Dyn.Error.Korrektur_Modus_aktiv
|
||||
|
||||
L 3474 // DLSeps
|
||||
T "MW174"
|
||||
L 3478 // DLWeichen
|
||||
T "MW178"
|
||||
|
||||
// Nach neuen Daten suchen:
|
||||
A "1s-Impuls"
|
||||
= "Weiche_NewData"
|
||||
|
||||
|
||||
--- NW 2: Linien mit PLC_Ziel anfahren ---
|
||||
A Ohne_PC_fahren
|
||||
JCN En03
|
||||
|
||||
A "MB4503"
|
||||
CU "Z102"
|
||||
|
||||
L "Z102"
|
||||
L 1
|
||||
<I
|
||||
A(
|
||||
L Sorter_MB4503.Separator.Default_Ziel
|
||||
L 0 // Bekannt ?
|
||||
>I // Ja !
|
||||
)
|
||||
JC En03
|
||||
|
||||
SET
|
||||
R "Z102"
|
||||
|
||||
L Sorter_MB4503.Separator.Default_Ziel
|
||||
L 0 // unbekannt ?
|
||||
==I
|
||||
L 101 // Beginn mit Ausfahrziel 1.Puffer
|
||||
JC X399
|
||||
|
||||
// Nächste Weiche suchen:
|
||||
L Sorter_MB4503.Separator.Default_Ziel
|
||||
T "MW200"
|
||||
|
||||
CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel)
|
||||
|
||||
AN "M199.7" // Datensatz ist nicht vorhanden
|
||||
O "M208.0" // Letzte Weiche
|
||||
L 0 // Neubeginn
|
||||
JC X400
|
||||
|
||||
X398: CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#FF00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nächsten Datensatz lesen
|
||||
|
||||
L "MW206" // Weichentyp
|
||||
L 178 // Sorterweiche ?
|
||||
<>I // Nein!
|
||||
O "M199.2" // Ende erreicht
|
||||
L 0
|
||||
JC X400
|
||||
|
||||
A "M208.5" // Weiche für PLC-Ziel disabled !
|
||||
JC X398
|
||||
|
||||
L "MW226"
|
||||
T Sorter_MB4503.Separator.Default_Ziel
|
||||
|
||||
JU En03
|
||||
|
||||
// 1.Weiche checken:
|
||||
X399: T "MW200"
|
||||
|
||||
CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel)
|
||||
|
||||
AN "M199.7" // Datensatz ist nicht vorhanden
|
||||
JC En03
|
||||
|
||||
A "M208.5" // Weiche für PLC-Ziel disabled !
|
||||
JC X398
|
||||
|
||||
L "MW226"
|
||||
X400: T Sorter_MB4503.Separator.Default_Ziel
|
||||
|
||||
En03: NOP 0
|
||||
|
||||
|
||||
--- NW 3: Störung aktiv? ---
|
||||
CALL FC "Err_vorhanden" (Check_DB:=708, Anfangs_DW:=DINT#154, Ende_DW:=DINT#162, Stoerung:=Error_aktiv, ErrDW:=Err_DW, ErrBits:=Err_Bits) // Störungsanzeige
|
||||
A Error_aktiv // s.o.
|
||||
= Error_aktiv // Sorter Lager Weichen-Störung (Sorter-Antrieb gestoppt!)
|
||||
|
||||
A "BG4527" // Verlassen-Sensor
|
||||
L S5T#250MS
|
||||
OffDelay "T340"
|
||||
|
||||
|
||||
--- NW 4: Störung quittieren UZ7402 ---
|
||||
A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 5: Sorter-GesamtReset ---
|
||||
// Sorter-Reset starten:
|
||||
A "DEP_OmniFahren".Schleuse_4503.Dyn.Status.Reset_aktiv // Bei Schleusen-Reset -> Sorter mit resetten!
|
||||
S "DEP_Sorter".Sorter_MB4503.Dyn.GesamtSorterReset
|
||||
|
||||
|
||||
--- NW 6: Separator 4503 vor Sorter ---
|
||||
L DB708.DBW152 // Err beim Synchronisieren
|
||||
L 0 // Störung vorhanden ?
|
||||
==I // Nein !
|
||||
AN Sync_BG4527.Dyn.Stop // Rein-Separator stoppen
|
||||
AN Error_aktiv // Sorter Batch Weichen-Störung (Sorter-Antrieb gestoppt!)
|
||||
AN Sorter_MB4503.Dyn.GesamtSorterReset_aktiv
|
||||
= Start_Ok
|
||||
|
||||
SET // Da Leiste im Sep und Zusatz-Zylinder im Separator -> BT steht sofort sauber im Sep
|
||||
S Sorter_MB4503.Dyn.BT_beruhigt // 1. einfahrender BügelTräger ist im Sep
|
||||
|
||||
A "T340"
|
||||
= Sorter_MB4503.B_AusSep // Entprellung Verlassen-Sensor
|
||||
|
||||
// Triggern / Scanner-Auswertung über EP_Omnifahren (FC3128/3)
|
||||
// Ziel über Default-Ziel (EP_Ziel_FC, FC3181)
|
||||
|
||||
CALL FB "None" , (Separator_Nr:=4503, ErrQuit:=ErrQuit, B_VorSep:=?, B_ImSep:="BG4503", B_AusSep:=?, B_Beladen_im_Sep:=?, B_Pinsensor:="BG4526", B_Beladen_nach_Sep:=?, Start_Ok:=Start_Ok, Antrieb_aktiv:="MA0325", Antrieb_plus_aktiv:="MA0325", Y_Sep_Auf:="DEP_Zylinder".Sorter_4503.Stat.Ast, K_Sanner_triggern:=?, Sorter_Reset:=SorterReset, Error:=DB708.DBW150, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_vor, Antrieb_plus_start:=?, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
// Default-Ziel jeden Zyklus neu!:
|
||||
L 0
|
||||
T Sorter_MB4503.Separator.Default_Ziel
|
||||
|
||||
|
||||
--- NW 7: Reset ist aktiv ---
|
||||
A Sorter_MB4503.Dyn.GesamtSorterReset_aktiv
|
||||
= "7_HMI_Err_UH07_OB".Sorter_MB4503.Reset_aktiv
|
||||
|
||||
A Sorter_MB4503.Dyn.GesamtSorterReset_aktiv
|
||||
= Weiche_EP1.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_EP2.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_EP3.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_EP4.Dyn.Ohne_VerklemmKontrolle
|
||||
|
||||
// Diesen Sorterbereich zurücksetzen:
|
||||
A SorterReset // Ein Zyklus
|
||||
S Sync_BG4527.Dyn.Reset
|
||||
S Weiche_EP1.Dyn.Status.Reset
|
||||
S Weiche_EP2.Dyn.Status.Reset
|
||||
S Weiche_EP3.Dyn.Status.Reset
|
||||
S Weiche_EP4.Dyn.Status.Reset
|
||||
|
||||
|
||||
--- NW 8: Inkremente über Zahnrad-Sensor ---
|
||||
CALL FB "None" , (Ink_DB:=3483, B_Zaehlen:="BG4526", Antrieb_aktiv:="MA0325", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=?, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang)
|
||||
|
||||
A(
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang
|
||||
)
|
||||
AN ErrQuit
|
||||
S "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor
|
||||
|
||||
A(
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang
|
||||
)
|
||||
S ErrAnz
|
||||
|
||||
|
||||
--- NW 9: Trolley synchronisieren BG4527 ---
|
||||
// Teachen: Ref-Sensor ueber Sync-Sensor
|
||||
A "BG4527"
|
||||
AN Sync_BG4527.Dyn.Refpunkt_ok // Nur eimalige Auswertung
|
||||
= Sync_BG4527.B_RefPunkt // uebergabe fuer unten
|
||||
|
||||
A "MA0325"
|
||||
L S5T#500ms
|
||||
OffDelay "T343"
|
||||
A "T343"
|
||||
AN Sync_BG4527.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls
|
||||
O
|
||||
A "MA0325"
|
||||
A Sync_BG4527.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls
|
||||
= Antrieb
|
||||
|
||||
// Keine Hauptstrangdaten vorhanden ? (Fuer Sync-Pkt):
|
||||
L "EP_HS_oF".Datensortkopf.AnzahlEintraege
|
||||
L "EP_HS_mF".Datensortkopf.AnzahlEintraege
|
||||
+I
|
||||
L 0 // Daten vorhanden ?
|
||||
==I // Nein !
|
||||
= "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
|
||||
A "BG4527"
|
||||
L s5t#500ms // Da trotz Entprellung Doppel-Impulse
|
||||
OffDelay "T344"
|
||||
A "T344"
|
||||
= Sync_BG4527.B_BT_da
|
||||
|
||||
CALL FB "None" , (Sync_Nr:=4527, ErrQuit:=ErrQuit, B_BT_da:=?, B_RefPunkt:=?, B_TeachPunk:="BG4504", Antrieb_aktiv:=Antrieb, Error:=DB708.DBW152, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, hStOk:=ErrAnz) // Teach-Sensor
|
||||
|
||||
A Sync_BG4527.Dyn.Error.Inkrementalgeber
|
||||
S "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor
|
||||
|
||||
// Keine Hauptstrangdaten vorhanden ?:
|
||||
L "EP_HS_oF".Datensortkopf.AnzahlEintraege
|
||||
L "EP_HS_mF".Datensortkopf.AnzahlEintraege
|
||||
+I
|
||||
L 0 // Daten vorhanden ?
|
||||
==I // Nein !
|
||||
= "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
|
||||
// Spezial, da Sorter-Antrieb über SorterRein-Sep geht!: (Sonst Antriebs-Stop wegen PS)
|
||||
AN "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
O "MB4503" // Neuer Sort-Trolley kommt
|
||||
O "BG4527"
|
||||
L s5t#20s
|
||||
OffDelay "T341"
|
||||
|
||||
A "T341" // Alle Sort-Trolleys sind ins Puffer ausgefahren
|
||||
S "DVPtoEP_Antriebe".MA0325.Stat.A_vor
|
||||
|
||||
|
||||
--- NW 10: Weiche 4504 / EntnahmePuffer EP1 ---
|
||||
CALL FB "None" , (Weichen_Nr:=1, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:=0, B_Gerade:=?, B_Ausfahrt:="BG4504", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DEP_Zylinder".Weiche_EP1.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW154, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) // "DEP_Sensoren".Stau_EP1.Stat.B_Akt
|
||||
|
||||
|
||||
--- NW 11: Weiche 4505 / EntnahmePuffer EP2 ---
|
||||
CALL FB "None" , (Weichen_Nr:=2, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:=0, B_Gerade:=?, B_Ausfahrt:="BG4505", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DEP_Zylinder".Weiche_EP2.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW156, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) // "DEP_Sensoren".Stau_EP2.Stat.B_Akt
|
||||
|
||||
|
||||
--- NW 12: Weiche 4506 / EntnahmePuffer EP3 ---
|
||||
CALL FB "None" , (Weichen_Nr:=3, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:=0, B_Gerade:=?, B_Ausfahrt:="BG4506", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DEP_Zylinder".Weiche_EP3.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW158, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) // "DEP_Sensoren".Stau_EP3.Stat.B_Akt
|
||||
|
||||
|
||||
--- NW 13: Pseudo-Weiche / EntnahmePuffer EP4 ---
|
||||
CALL FB "None" , (Weichen_Nr:=4, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:=0, B_Gerade:=?, B_Ausfahrt:="BG4507", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DEP_Zylinder".Weiche_EP4.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW160, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) // "DEP_Sensoren".Stau_EP4.Stat.B_Akt
|
||||
|
||||
|
||||
--- NW 14: Störungen anzeigen UZ7102/7103 ---
|
||||
A ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7102.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ7103.StOk_blinken
|
||||
|
||||
|
||||
--- NW 15: Ende ---
|
||||
BE
|
||||
FUNCTION_BLOCK "EP_Sorter"
|
||||
TITLE = Sorter EntnahmePuffer 1-4
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Sorter_MB4503 : "MSepSorterRein";
|
||||
Sync_BG4527 : "MStartSync";
|
||||
Weiche_EP1 : "MWeiche_Sorter_EP";
|
||||
Weiche_EP2 : "MWeiche_Sorter_EP";
|
||||
Weiche_EP3 : "MWeiche_Sorter_EP";
|
||||
Weiche_EP4 : "MWeiche_Sorter_EP";
|
||||
Impuls_BG4526 : "MImpulsGeber";
|
||||
Ohne_PC_fahren { S7_SetPoint := 'True'} : Bool;
|
||||
SorterReset { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
ErrQuit : Bool;
|
||||
ErrAnz : Bool;
|
||||
Antrieb : Bool;
|
||||
Stau : Bool;
|
||||
Start_Ok : Bool;
|
||||
Error_aktiv : Bool;
|
||||
Leer : Bool;
|
||||
Err_DW : DInt;
|
||||
Err_Bits : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Systemzeug
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
= #Sorter_MB4503.Dyn.Sk.Auto_akt;
|
||||
|
||||
UN "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
= #Sorter_MB4503.Dyn.Sk.Bereich_ok;
|
||||
|
||||
//Bereichshalt:
|
||||
CLR;//nicht verbaut
|
||||
R #Sorter_MB4503.Dyn.Sk.Bereich_ok;
|
||||
|
||||
//Sonderbetriebsarten Weichen:
|
||||
CLR;
|
||||
= #Weiche_EP1.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_EP2.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_EP3.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_EP4.Dyn.Status.Weichentest_aktiv;
|
||||
|
||||
U #Sync_BG4527.Dyn.Status.TeachModus_Aktiv;
|
||||
= #Weiche_EP1.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_EP2.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_EP3.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_EP4.Dyn.Status.TeachModus_aktiv;
|
||||
|
||||
CLR;
|
||||
= #Sorter_MB4503.Dyn.Error.Korrektur_Modus_aktiv;
|
||||
|
||||
L 3474 ;//DLSeps
|
||||
T "MW174";
|
||||
L 3478 ;//DLWeichen
|
||||
T "MW178";
|
||||
|
||||
//Nach neuen Daten suchen:
|
||||
U "1s-Impuls";
|
||||
= "Weiche_NewData";
|
||||
|
||||
NETWORK
|
||||
TITLE = Linien mit PLC_Ziel anfahren
|
||||
U #Ohne_PC_fahren;
|
||||
SPBN En03;
|
||||
|
||||
U "MB4503";
|
||||
ZV "Z102";
|
||||
|
||||
L "Z102";
|
||||
L 1;
|
||||
<I;
|
||||
U(;
|
||||
L #Sorter_MB4503.Separator.Default_Ziel;
|
||||
L 0;//Bekannt ?
|
||||
>I;//Ja !
|
||||
);
|
||||
SPB En03;
|
||||
|
||||
SET;
|
||||
R "Z102";
|
||||
|
||||
L #Sorter_MB4503.Separator.Default_Ziel;
|
||||
L 0 ;//unbekannt ?
|
||||
==I;
|
||||
L 101 ;//Beginn mit Ausfahrziel 1.Puffer
|
||||
SPB X399;
|
||||
|
||||
//Nächste Weiche suchen:
|
||||
L #Sorter_MB4503.Separator.Default_Ziel;
|
||||
T "MW200";
|
||||
|
||||
CALL "DatenOut"
|
||||
( SSDB := "MW178" ,
|
||||
SSDW := 0 ,
|
||||
PARA := WORD#16#0E00 , //Nach angegeben Datenbyte suchen (Abzweig-Ziel)
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M200.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
UN "M199.7" ;//Datensatz ist nicht vorhanden
|
||||
O "M208.0" ;//Letzte Weiche
|
||||
L 0;//Neubeginn
|
||||
SPB X400;
|
||||
|
||||
X398: CALL "DatenOut"
|
||||
( SSDB := "MW178" ,
|
||||
SSDW := 0 ,
|
||||
PARA := WORD#16#FF00 , //Nächsten Datensatz lesen
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M200.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
L "MW206";//Weichentyp
|
||||
L 178;//Sorterweiche ?
|
||||
<>I;//Nein!
|
||||
O "M199.2" ;//Ende erreicht
|
||||
L 0;
|
||||
SPB X400;
|
||||
|
||||
U "M208.5" ;//Weiche für PLC-Ziel disabled !
|
||||
SPB X398;
|
||||
|
||||
L "MW226";
|
||||
T #Sorter_MB4503.Separator.Default_Ziel;
|
||||
|
||||
SPA En03;
|
||||
|
||||
//1.Weiche checken:
|
||||
X399: T "MW200";
|
||||
|
||||
CALL "DatenOut"
|
||||
( SSDB := "MW178" ,
|
||||
SSDW := 0 ,
|
||||
PARA := WORD#16#0E00 , //Nach angegeben Datenbyte suchen (Abzweig-Ziel)
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M200.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
UN "M199.7" ;//Datensatz ist nicht vorhanden
|
||||
SPB En03;
|
||||
|
||||
U "M208.5" ;//Weiche für PLC-Ziel disabled !
|
||||
SPB X398;
|
||||
|
||||
L "MW226";
|
||||
X400: T #Sorter_MB4503.Separator.Default_Ziel;
|
||||
|
||||
En03: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störung aktiv?
|
||||
CALL "Err_vorhanden" //Störungsanzeige
|
||||
( Check_DB := 708 ,
|
||||
Anfangs_DW := DINT#154 ,
|
||||
Ende_DW := DINT#162 ,
|
||||
Stoerung := #Error_aktiv ,
|
||||
ErrDW := #Err_DW ,
|
||||
ErrBits := #Err_Bits
|
||||
);
|
||||
U #Error_aktiv ;//s.o.
|
||||
= #Error_aktiv ;//Sorter Lager Weichen-Störung (Sorter-Antrieb gestoppt!)
|
||||
|
||||
U "BG4527" ;//Verlassen-Sensor
|
||||
L S5T#250MS;
|
||||
SA "T340";
|
||||
|
||||
NETWORK
|
||||
TITLE = Störung quittieren UZ7402
|
||||
U "DOutbound_Bereich".A01_UZ7402.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Sorter-GesamtReset
|
||||
|
||||
//Sorter-Reset starten:
|
||||
U "DEP_OmniFahren".Schleuse_4503.Dyn.Status.Reset_aktiv;//Bei Schleusen-Reset -> Sorter mit resetten!
|
||||
S "DEP_Sorter".Sorter_MB4503.Dyn.GesamtSorterReset;
|
||||
|
||||
NETWORK
|
||||
TITLE = Separator 4503 vor Sorter
|
||||
L %DB708.DBW152 ;//Err beim Synchronisieren
|
||||
L 0;//Störung vorhanden ?
|
||||
==I;//Nein !
|
||||
UN #Sync_BG4527.Dyn.Stop;//Rein-Separator stoppen
|
||||
UN #Error_aktiv;//Sorter Batch Weichen-Störung (Sorter-Antrieb gestoppt!)
|
||||
UN #Sorter_MB4503.Dyn.GesamtSorterReset_aktiv;
|
||||
= #Start_Ok;
|
||||
|
||||
SET ;//Da Leiste im Sep und Zusatz-Zylinder im Separator -> BT steht sofort sauber im Sep
|
||||
S #Sorter_MB4503.Dyn.BT_beruhigt;//1. einfahrender BügelTräger ist im Sep
|
||||
|
||||
U "T340";
|
||||
= #Sorter_MB4503.B_AusSep;//Entprellung Verlassen-Sensor
|
||||
|
||||
//Triggern / Scanner-Auswertung über EP_Omnifahren (FC3128/3)
|
||||
//Ziel über Default-Ziel (EP_Ziel_FC, FC3181)
|
||||
|
||||
CALL #Sorter_MB4503
|
||||
( Separator_Nr := 4503 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_ImSep := "BG4503" ,
|
||||
B_Pinsensor := "BG4526" ,
|
||||
Start_Ok := #Start_Ok ,
|
||||
Antrieb_aktiv := "MA0325" ,
|
||||
Antrieb_plus_aktiv := "MA0325" ,
|
||||
Y_Sep_Auf := "DEP_Zylinder".Sorter_4503.Stat.Ast ,
|
||||
Sorter_Reset := #SorterReset ,
|
||||
Error := %DB708.DBW150 ,
|
||||
Antrieb_start := "DVPtoEP_Antriebe".MA0325.Stat.A_vor ,
|
||||
Antrieb_stoppen := "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
//Default-Ziel jeden Zyklus neu!:
|
||||
L 0;
|
||||
T #Sorter_MB4503.Separator.Default_Ziel;
|
||||
|
||||
NETWORK
|
||||
TITLE = Reset ist aktiv
|
||||
U #Sorter_MB4503.Dyn.GesamtSorterReset_aktiv;
|
||||
= "7_HMI_Err_UH07_OB".Sorter_MB4503.Reset_aktiv;
|
||||
|
||||
U #Sorter_MB4503.Dyn.GesamtSorterReset_aktiv;
|
||||
= #Weiche_EP1.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_EP2.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_EP3.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_EP4.Dyn.Ohne_VerklemmKontrolle;
|
||||
|
||||
//Diesen Sorterbereich zurücksetzen:
|
||||
U #SorterReset;//Ein Zyklus
|
||||
S #Sync_BG4527.Dyn.Reset;
|
||||
S #Weiche_EP1.Dyn.Status.Reset;
|
||||
S #Weiche_EP2.Dyn.Status.Reset;
|
||||
S #Weiche_EP3.Dyn.Status.Reset;
|
||||
S #Weiche_EP4.Dyn.Status.Reset;
|
||||
|
||||
NETWORK
|
||||
TITLE = Inkremente über Zahnrad-Sensor
|
||||
CALL #Impuls_BG4526
|
||||
( Ink_DB := 3483 ,
|
||||
B_Zaehlen := "BG4526" ,
|
||||
Antrieb_aktiv := "MA0325" ,
|
||||
Quit := #ErrQuit ,
|
||||
Err_Kein_Signal := "7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal ,
|
||||
Err_Signal_zu_lang := "7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang
|
||||
);
|
||||
|
||||
U(;
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal;
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang;
|
||||
);
|
||||
UN #ErrQuit;
|
||||
S "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor;
|
||||
|
||||
U(;
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal;
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang;
|
||||
);
|
||||
S #ErrAnz;
|
||||
|
||||
NETWORK
|
||||
TITLE = Trolley synchronisieren BG4527
|
||||
|
||||
//Teachen: Ref-Sensor ueber Sync-Sensor
|
||||
U "BG4527";
|
||||
UN #Sync_BG4527.Dyn.Refpunkt_ok;//Nur eimalige Auswertung
|
||||
= #Sync_BG4527.B_RefPunkt;//uebergabe fuer unten
|
||||
|
||||
U "MA0325";
|
||||
L S5T#500ms;
|
||||
SA "T343";
|
||||
U "T343";
|
||||
UN #Sync_BG4527.Dyn.Status.TeachModus_Aktiv;//sonst Probleme bei Doppelimpuls
|
||||
O;
|
||||
U "MA0325";
|
||||
U #Sync_BG4527.Dyn.Status.TeachModus_Aktiv;//sonst Probleme bei Doppelimpuls
|
||||
= #Antrieb;
|
||||
|
||||
//Keine Hauptstrangdaten vorhanden ? (Fuer Sync-Pkt):
|
||||
L "EP_HS_oF".Datensortkopf.AnzahlEintraege;
|
||||
L "EP_HS_mF".Datensortkopf.AnzahlEintraege;
|
||||
+I;
|
||||
L 0;//Daten vorhanden ?
|
||||
==I;//Nein !
|
||||
= "Hauptstrang_leer";//Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
|
||||
U "BG4527";
|
||||
L s5t#500ms;//Da trotz Entprellung Doppel-Impulse
|
||||
SA "T344";
|
||||
U "T344";
|
||||
= #Sync_BG4527.B_BT_da;
|
||||
|
||||
CALL #Sync_BG4527
|
||||
( Sync_Nr := 4527 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_TeachPunk := "BG4504" , //Teach-Sensor
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Error := %DB708.DBW152 ,
|
||||
Antrieb_start := "DVPtoEP_Antriebe".MA0325.Stat.A_start ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
U #Sync_BG4527.Dyn.Error.Inkrementalgeber;
|
||||
S "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor;
|
||||
|
||||
//Keine Hauptstrangdaten vorhanden ?:
|
||||
L "EP_HS_oF".Datensortkopf.AnzahlEintraege;
|
||||
L "EP_HS_mF".Datensortkopf.AnzahlEintraege;
|
||||
+I;
|
||||
L 0;//Daten vorhanden ?
|
||||
==I;//Nein !
|
||||
= "Hauptstrang_leer" ;//Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
|
||||
//Spezial, da Sorter-Antrieb über SorterRein-Sep geht!: (Sonst Antriebs-Stop wegen PS)
|
||||
UN "Hauptstrang_leer" ;//Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
O "MB4503" ;//Neuer Sort-Trolley kommt
|
||||
O "BG4527";
|
||||
L s5t#20s;
|
||||
SA "T341";
|
||||
|
||||
U "T341" ;//Alle Sort-Trolleys sind ins Puffer ausgefahren
|
||||
S "DVPtoEP_Antriebe".MA0325.Stat.A_vor;
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 4504 / EntnahmePuffer EP1
|
||||
CALL #Weiche_EP1
|
||||
( Weichen_Nr := 1 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := 0 , //"DEP_Sensoren".Stau_EP1.Stat.B_Akt
|
||||
B_Ausfahrt := "BG4504" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DEP_Zylinder".Weiche_EP1.Stat.Ast ,
|
||||
Error := %DB708.DBW154 ,
|
||||
Antrieb_start := "DVPtoEP_Antriebe".MA0325.Stat.A_start ,
|
||||
Antrieb_stoppen := "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 4505 / EntnahmePuffer EP2
|
||||
CALL #Weiche_EP2
|
||||
( Weichen_Nr := 2 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := 0 , //"DEP_Sensoren".Stau_EP2.Stat.B_Akt
|
||||
B_Ausfahrt := "BG4505" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DEP_Zylinder".Weiche_EP2.Stat.Ast ,
|
||||
Error := %DB708.DBW156 ,
|
||||
Antrieb_start := "DVPtoEP_Antriebe".MA0325.Stat.A_start ,
|
||||
Antrieb_stoppen := "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 4506 / EntnahmePuffer EP3
|
||||
CALL #Weiche_EP3
|
||||
( Weichen_Nr := 3 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := 0 , //"DEP_Sensoren".Stau_EP3.Stat.B_Akt
|
||||
B_Ausfahrt := "BG4506" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DEP_Zylinder".Weiche_EP3.Stat.Ast ,
|
||||
Error := %DB708.DBW158 ,
|
||||
Antrieb_start := "DVPtoEP_Antriebe".MA0325.Stat.A_start ,
|
||||
Antrieb_stoppen := "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Pseudo-Weiche / EntnahmePuffer EP4
|
||||
CALL #Weiche_EP4
|
||||
( Weichen_Nr := 4 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := 0 , //"DEP_Sensoren".Stau_EP4.Stat.B_Akt
|
||||
B_Ausfahrt := "BG4507" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DEP_Zylinder".Weiche_EP4.Stat.Ast ,
|
||||
Error := %DB708.DBW160 ,
|
||||
Antrieb_start := "DVPtoEP_Antriebe".MA0325.Stat.A_start ,
|
||||
Antrieb_stoppen := "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7102/7103
|
||||
U #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7102.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ7103.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,125 +1,222 @@
|
||||
=== FB 4199: EPtoLP_Antriebe [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
MA0326 : "MAntrieb_PowerSave"
|
||||
MA0327 : "MAntrieb_PowerSave"
|
||||
MA0330 : "MAntrieb_PowerSave"
|
||||
MA0331 : "MAntrieb_PowerSave"
|
||||
MA0332 : "MAntrieb_PowerSave"
|
||||
MA0333 : "MAntrieb_PowerSave"
|
||||
MA0062 : "MAntrieb_PowerSave"
|
||||
MA0063 : "MAntrieb_PowerSave"
|
||||
MA0064 : "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:
|
||||
FUNCTION_BLOCK "EPtoLP_Antriebe"
|
||||
TITLE = Antriebe UC074
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
MA0326 : "MAntrieb_PowerSave";
|
||||
MA0327 : "MAntrieb_PowerSave";
|
||||
MA0330 : "MAntrieb_PowerSave";
|
||||
MA0331 : "MAntrieb_PowerSave";
|
||||
MA0332 : "MAntrieb_PowerSave";
|
||||
MA0333 : "MAntrieb_PowerSave";
|
||||
MA0062 : "MAntrieb_PowerSave";
|
||||
MA0063 : "MAntrieb_PowerSave";
|
||||
MA0064 : "MAntrieb_PowerSave";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UC074/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
|
||||
A "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
|
||||
A "T194"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
|
||||
A "DOutbound_Bereich".A01_UC074.StOk_aktiv
|
||||
= Quit
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: MA0326 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0326", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0326", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0326, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC074/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
U "T194";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC074.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0326
|
||||
CALL #MA0326
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0326" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0326" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0326
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 3: MA0327 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0327", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0327", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0327, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0327
|
||||
CALL #MA0327
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0327" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0327" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0327
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 4: MA0330 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0330", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0330", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0330, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0330
|
||||
CALL #MA0330
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0330" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0330" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0330
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 5: MA0331 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0331", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0331", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0331, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0331
|
||||
CALL #MA0331
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0331" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0331" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0331
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 6: MA0332 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0332", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0332", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0332, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0332
|
||||
CALL #MA0332
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0332" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0332" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0332
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 7: MA0333 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0333", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0333", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0333, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0333
|
||||
CALL #MA0333
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0333" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0333" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0333
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UH07/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 8: Übergabe des Bereichstatus System UH07/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
U "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
U "T197";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
A "T197"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
U "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= Quit
|
||||
NETWORK
|
||||
TITLE = MA0062
|
||||
CALL #MA0062
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0062" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0062" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0062
|
||||
);
|
||||
|
||||
|
||||
--- NW 9: MA0062 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0062", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0062", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0062, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0063
|
||||
CALL #MA0063
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0063" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0063" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0063
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0064
|
||||
CALL #MA0064
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0064" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0064" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0064
|
||||
);
|
||||
|
||||
--- NW 10: MA0063 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0063", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0063", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0063, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
/// U "M900.0"
|
||||
/// UN "DLP_Sorter".Sync_BG3306.Dyn.Error.Keine_TeachPktdaten
|
||||
/// S "MA0064"
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 11: MA0064 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0064", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0064", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0064, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
|
||||
// / U "M900.0"
|
||||
// / UN "DLP_Sorter".Sync_BG3306.Dyn.Error.Keine_TeachPktdaten
|
||||
// / S "MA0064"
|
||||
|
||||
|
||||
--- NW 12: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,107 +1,233 @@
|
||||
=== FB 4190: EPtoLP_Sensoren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Stau_BG4531 : "MSensoren" // Stau am Sensor Einfahrt MA0326
|
||||
Stau_BG4513 : "MSensoren" // Stau am Sensor Mitte MA0326
|
||||
Stau_BG4515 : "MSensoren" // Stau am Sensor Einfahrt MA0327
|
||||
Stau_BG4517 : "MSensoren" // Stau am Sensor Mitte MA0327
|
||||
Stau_BG4521 : "MSensoren" // Stau am Sensor Ende MA0327
|
||||
Stau_BG4455 : "MSensoren" // Stau am Sensor Einfahrt MA0330
|
||||
Stau_BG4457 : "MSensoren" // Stau am Sensor Einfahrt MA0331
|
||||
Stau_BG4467 : "MSensoren" // Stau am Sensor Mitte MA0331
|
||||
Stau_BG4461 : "MSensoren" // Stau am Sensor Einfahrt MA0332
|
||||
Stau_BG4460 : "MSensoren" // Stau am Sensor Mitte MA0332
|
||||
Stau_BG4464 : "MSensoren" // Stau am Sensor Einfahrt MA0330
|
||||
Stau_BG3367 : "MSensoren" // Stau am hinter BST 1
|
||||
Stau_BG3371 : "MSensoren" // Stau am Sensor Einfahrt MA0063
|
||||
Stau_BG3372 : "MSensoren" // Stau am Sensor Einfahrt MA0063
|
||||
Stau_BG3376 : "MSensoren" // Stau am Sensor Einfahrt MA0064
|
||||
Stau_BG3377 : "MSensoren" // Stau am Sensor Mitte MA0064
|
||||
Stau_BG3304 : "MSensoren" // Stau am Sensor vor Schleuse MB3305
|
||||
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:
|
||||
FUNCTION_BLOCK "EPtoLP_Sensoren"
|
||||
TITLE = Sensoren Outbound: EP > LP
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Stau_BG4531 : "MSensoren"; // Stau am Sensor Einfahrt MA0326
|
||||
Stau_BG4513 : "MSensoren"; // Stau am Sensor Mitte MA0326
|
||||
Stau_BG4515 : "MSensoren"; // Stau am Sensor Einfahrt MA0327
|
||||
Stau_BG4517 : "MSensoren"; // Stau am Sensor Mitte MA0327
|
||||
Stau_BG4521 : "MSensoren"; // Stau am Sensor Ende MA0327
|
||||
Stau_BG4455 : "MSensoren"; // Stau am Sensor Einfahrt MA0330
|
||||
Stau_BG4457 : "MSensoren"; // Stau am Sensor Einfahrt MA0331
|
||||
Stau_BG4467 : "MSensoren"; // Stau am Sensor Mitte MA0331
|
||||
Stau_BG4461 : "MSensoren"; // Stau am Sensor Einfahrt MA0332
|
||||
Stau_BG4460 : "MSensoren"; // Stau am Sensor Mitte MA0332
|
||||
Stau_BG4464 : "MSensoren"; // Stau am Sensor Einfahrt MA0330
|
||||
Stau_BG3367 : "MSensoren"; // Stau am hinter BST 1
|
||||
Stau_BG3371 : "MSensoren"; // Stau am Sensor Einfahrt MA0063
|
||||
Stau_BG3372 : "MSensoren"; // Stau am Sensor Einfahrt MA0063
|
||||
Stau_BG3376 : "MSensoren"; // Stau am Sensor Einfahrt MA0064
|
||||
Stau_BG3377 : "MSensoren"; // Stau am Sensor Mitte MA0064
|
||||
Stau_BG3304 : "MSensoren"; // Stau am Sensor vor Schleuse MB3305
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4531", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4513", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor nach Schleuse 4512
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4531
|
||||
( ESensor := "BG4531" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor nach Schleuse 4532
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4513
|
||||
( ESensor := "BG4513" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 3: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4515", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0327
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4515
|
||||
( ESensor := "BG4515" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA0327
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4517
|
||||
( ESensor := "BG4517" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 4: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4517", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Ende MA0327
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4521
|
||||
( ESensor := "BG4521" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0330
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4455
|
||||
( ESensor := "BG4455" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 5: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4521", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0331
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4457
|
||||
( ESensor := "BG4457" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA0331
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4467
|
||||
( ESensor := "BG4467" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 6: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4455", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0332
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4461
|
||||
( ESensor := "BG4461" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Ende MA0332
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4460
|
||||
( ESensor := "BG4460" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 7: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4457", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Anfang MA0333
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4464
|
||||
( ESensor := "BG4464" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor hinter BST1
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3367
|
||||
( ESensor := "BG3367" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 30 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 8: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4467", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor vor MA0063
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3371
|
||||
( ESensor := "BG3371" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Anfang MA0063
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3372
|
||||
( ESensor := "BG3372" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 9: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4461", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0064
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3376
|
||||
( ESensor := "BG3376" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA0064
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3377
|
||||
( ESensor := "BG3377" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 10: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4460", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA0064 (vor Schleuse 3305)
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3304
|
||||
( ESensor := "BG3304" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 11: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4464", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 12: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3367", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 13: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3371", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 14: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3372", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 15: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3376", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 16: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3377", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 17: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3304", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 18: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,85 +1,152 @@
|
||||
=== FB 4192: EPtoLP_Zylinder [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_4512 : "MZylinder" //
|
||||
Schleuse_4532 : "MZylinder"
|
||||
Schleuse_4516 : "MZylinder" //
|
||||
Schleuse_4522 : "MZylinder" //
|
||||
Schleuse_4520 : "MZylinder"
|
||||
Schleuse_4466 : "MZylinder"
|
||||
Schleuse_4462 : "MZylinder"
|
||||
Schleuse_4463 : "MZylinder"
|
||||
Schleuse_3370 : "MZylinder"
|
||||
Schleuse_3303 : "MZylinder"
|
||||
Temp:
|
||||
Auto : Bool // Automatik ist aktiv
|
||||
Hand : Bool // Hand ist aktiv
|
||||
ZylAst : Bool // Zylinder ansteuern
|
||||
Constant:
|
||||
FUNCTION_BLOCK "EPtoLP_Zylinder"
|
||||
TITLE = Zylinder Outbound Entnahmepuffer > Leerpuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_4512 : "MZylinder"; //
|
||||
Schleuse_4532 : "MZylinder";
|
||||
Schleuse_4516 : "MZylinder"; //
|
||||
Schleuse_4522 : "MZylinder"; //
|
||||
Schleuse_4520 : "MZylinder";
|
||||
Schleuse_4466 : "MZylinder";
|
||||
Schleuse_4462 : "MZylinder";
|
||||
Schleuse_4463 : "MZylinder";
|
||||
Schleuse_3370 : "MZylinder";
|
||||
Schleuse_3303 : "MZylinder";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UC074/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
A "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next // Zylinder-Stellung nicht mehr ändern
|
||||
VAR_TEMP
|
||||
Auto : Bool; // Automatik ist aktiv
|
||||
Hand : Bool; // Hand ist aktiv
|
||||
ZylAst : Bool; // Zylinder ansteuern
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse_4512 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4512", ZylGst:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC074/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
--- NW 3: Schleuse_4532 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4532", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4512
|
||||
CALL #Schleuse_4512
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4512"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4532
|
||||
CALL #Schleuse_4532
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4532"
|
||||
);
|
||||
|
||||
--- NW 4: Schleuse_4516 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4516", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4516
|
||||
CALL #Schleuse_4516
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4516"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4522
|
||||
CALL #Schleuse_4522
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4522"
|
||||
);
|
||||
|
||||
--- NW 5: Schleuse_4522 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4522", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4520
|
||||
CALL #Schleuse_4520
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4520"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4466
|
||||
CALL #Schleuse_4466
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4466"
|
||||
);
|
||||
|
||||
--- NW 6: Schleuse_4520 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4520", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4462
|
||||
CALL #Schleuse_4462
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4462"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UH07/A01
|
||||
Next: U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 7: Schleuse_4466 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4466", ZylGst:=?)
|
||||
U "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next1 ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4463
|
||||
CALL #Schleuse_4463
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4463"
|
||||
);
|
||||
|
||||
--- NW 8: Schleuse_4462 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4462", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_3370
|
||||
CALL #Schleuse_3370
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3370"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_3303
|
||||
CALL #Schleuse_3303
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3303"
|
||||
);
|
||||
|
||||
--- NW 9: Übergabe des Bereichstatus System UH07/A01 ---
|
||||
Next: A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
Next1: BE;
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next1 // Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
|
||||
--- NW 10: Schleuse_4463 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4463", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 11: Schleuse_3370 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3370", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 12: Schleuse_3303 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3303", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 13: Ende ---
|
||||
Next1: BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
=== FC 4100: EPtoLP_Bereich [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "EPtoLP_Bereich" : Void
|
||||
TITLE = Bereich Outbound: EP > LP
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Baustein-Aufrufe ---
|
||||
CALL FB "EPtoLP_Sensoren" ,
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Baustein-Aufrufe
|
||||
CALL "EPtoLP_Sensoren", "DEPtoLP_Sensoren";
|
||||
|
||||
CALL FB "EPtoLP_OmniFahren" ,
|
||||
CALL "EPtoLP_OmniFahren", "DEPtoLP_OmniFahren";
|
||||
|
||||
CALL FB "EPtoLP_Zylinder" ,
|
||||
CALL "EPtoLP_Zylinder", "DEPtoLP_Zylinder";
|
||||
|
||||
CALL FB "EPtoLP_Antriebe" ,
|
||||
CALL "EPtoLP_Antriebe", "DEPtoLP_Antriebe";
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+33
-30
@@ -1,38 +1,41 @@
|
||||
=== FC 4182: EPtoLP_Draussen [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Error.Bit : Bool
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
SET // Rückmeldungen erst mal resetten
|
||||
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
|
||||
FUNCTION "EPtoLP_Draussen" : Void
|
||||
TITLE = Draussen-FC: EP > LP
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_TEMP
|
||||
"Error.Bit" : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 4466 (Vor ByPass vom VP): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 4466 // Aufruf von Schleuse 4466?
|
||||
<>I // Nein!
|
||||
JC X4466E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Weichen_Ziel
|
||||
L 16#4461 // Abzweig ?
|
||||
<>I // Nein !
|
||||
BEC
|
||||
NETWORK
|
||||
TITLE = Schleuse 4466 (Vor ByPass vom VP): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 4466 ;//Aufruf von Schleuse 4466?
|
||||
<>I;//Nein!
|
||||
SPB X4466E;
|
||||
|
||||
// Partner-Trolley will zu LP fahren:
|
||||
// Bei Partner (Schleuse 4443) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0
|
||||
T "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Sk.Akt_Schritt
|
||||
L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Weichen_Ziel;
|
||||
L 16#4461;//Abzweig ?
|
||||
<>I;//Nein !
|
||||
BEB;
|
||||
|
||||
X4466E: NOP 0
|
||||
//Partner-Trolley will zu LP fahren:
|
||||
//Bei Partner (Schleuse 4443) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0;
|
||||
T "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Sk.Akt_Schritt;
|
||||
|
||||
X4466E: NOP 0;
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+567
-302
@@ -1,303 +1,568 @@
|
||||
=== FB 4128: EPtoLP_OmniFahren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_4512 : "MHMOmniSchleuse_Plus"
|
||||
Schleuse_4532 : "MHMOmniSchleuse_Plus"
|
||||
Schleuse_4516 : "MHMOmniSchleuse"
|
||||
Schleuse_4520 : "MHMOmniSchleuse"
|
||||
Bereich_4456 : "MHMOmniBereich_Plus"
|
||||
Schleuse_4466 : "MHMOmniSchleuse_Plus"
|
||||
Schleuse_4462 : "MHMOmniSchleuse_Plus"
|
||||
Bereich_4465 : "MHMOmniBereich_Plus"
|
||||
Schleuse_3370 : "MHMOmniSchleuse"
|
||||
Bereich_3373 : "MHMOmniBereich_Plus"
|
||||
Schleuse_3303 : "MHMOmniSchleuse"
|
||||
Schleuse_4522 : "MHMOmniSchleuse"
|
||||
Schleuse_4463 : "MHMOmniSchleuse"
|
||||
Übergang_4514 : "MHMÜbergang_ohne_Schleuse"
|
||||
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 ---
|
||||
// Verschiedene Bereiche:
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
= Schleuse_4512.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4532.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4516.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4522.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4520.Dyn.Sk.Auto_akt
|
||||
= Bereich_4456.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4466.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4462.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4463.Dyn.Sk.Auto_akt
|
||||
= Bereich_4465.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3370.Dyn.Sk.Auto_akt
|
||||
= Bereich_3373.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3303.Dyn.Sk.Auto_akt
|
||||
|
||||
AN "DOutbound_Bereich".A01_UC074.BereichErr
|
||||
= Schleuse_4512.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4532.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4516.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4522.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4520.Dyn.Sk.Bereich_ok
|
||||
= Bereich_4456.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4466.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4462.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4463.Dyn.Sk.Bereich_ok
|
||||
= Bereich_4465.Dyn.Sk.Bereich_ok
|
||||
AN "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
= Schleuse_3370.Dyn.Sk.Bereich_ok
|
||||
= Bereich_3373.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3303.Dyn.Sk.Bereich_ok
|
||||
|
||||
|
||||
--- NW 2: Störungen quittieren UZ7402/7403 ---
|
||||
A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UZ7403.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 3: Schleuse 4512 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4512, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4511", B_InSchleuse:="BG4512", B_Zähl:="BG4531", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4531.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0326", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB4512", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4512.Stat.Ast, Error:=DB708.DBW576, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0326.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0326.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0326.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0326.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch
|
||||
|
||||
|
||||
--- NW 4: Schleuse 4532 ---
|
||||
A "DEPtoLP_Sensoren".Stau_BG4513.Stat.B_Akt
|
||||
// / O "DEP>LP_Sensoren".Stau_BG4515.Stat.B_Akt
|
||||
= Stau_raus
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=4532, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4531", B_InSchleuse:="BG4532", B_Zähl:="BG4513", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0326", Antrieb_plus_aktiv:="MA0326", Schleuse_geöffnet:="MB4532", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4532.Stat.Ast, Error:=DB708.DBW578, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0326.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0326.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0326.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0326.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 5: MA0326 / Übergang 4514 ---
|
||||
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG4513", B_Am_Übergang:="BG4514", B_Stau_Antrieb_plus:="BG4515", Antrieb_aktiv:="MA0326", Antrieb_plus_aktiv:="MA0327", Antrieb_vor:="DEPtoLP_Antriebe".MA0326.Stat.A_vor, Antrieb_start:="DEPtoLP_Antriebe".MA0326.Stat.A_start, Antrieb_stop:="DEPtoLP_Antriebe".MA0326.Stat.A_PS, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0327.Stat.A_start)
|
||||
|
||||
|
||||
--- NW 6: Schleuse 4516 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4516, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4515", B_InSchleuse:="BG4516", B_AusSchleuse:="BG4517", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4517.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0327", Antrieb_plus_aktiv:="MA0327", Schleuse_geöffnet:="MB4516", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4516.Stat.Ast, Error:=DB708.DBW566, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0327.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0327.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch
|
||||
|
||||
|
||||
--- NW 7: Schleuse 4522 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4522, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4517", B_InSchleuse:="BG4522", B_AusSchleuse:="BG4521", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4521.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0327", Antrieb_plus_aktiv:="MA0327", Schleuse_geöffnet:="MB4522", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4522.Stat.Ast, Error:=DB708.DBW582, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0327.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0327.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch
|
||||
|
||||
|
||||
--- NW 8: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) ---
|
||||
A "MB4520"
|
||||
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 "MB4520" // Schleuse offen
|
||||
AN "MA0327" // 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 9: Schleuse 4520 ---
|
||||
AN Trolleys_starten.Wartezeit_aktiv
|
||||
= Fahren_Ok
|
||||
|
||||
A "BG4517"
|
||||
O "BG4521"
|
||||
= B_vor_Schleuse
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=4520, ErrQuit:=ErrQuit, B_VorSchleuse:=B_vor_Schleuse, B_InSchleuse:="BG4520", B_AusSchleuse:="BG4455", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4455.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0327", Antrieb_plus_aktiv:="MA0330", Schleuse_geöffnet:="MB4520", RestZeit_Bereich_plus:=Bereich_4456.Dyn.Restzeit, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4520.Stat.Ast, Error:=DB708.DBW568, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0327.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0327.Stat.A_PS, Antrieb_plus_vor:=Bereich_4456.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 10: Störungen anzeigen UZ7402/7403 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7402.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ7403.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 11: Störungen quittieren UZ7402/7401 ---
|
||||
A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UZ7401.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 12: Bereich 4456 ---
|
||||
A "MB4520"
|
||||
A "BG4455"
|
||||
= B_vor_Schleuse
|
||||
|
||||
A "DEPtoLP_Sensoren".Stau_BG4457.Stat.B_Akt
|
||||
O "DEPtoLP_Sensoren".Stau_BG4467.Stat.B_Akt
|
||||
= Stau_raus
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=4456, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4456", B_Zähl:="BG4467", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0330", Antrieb_plus_aktiv:="MA0331", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DEPtoLP_Antriebe".MA0330.Stat.A_vor, Antrieb_Bereich_stop:="DEPtoLP_Antriebe".MA0330.Stat.Stop_vor, Error:=DB708.DBW478, Antrieb_Bereich_start:="DEPtoLP_Antriebe".MA0330.Stat.A_start, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0331.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0331.Stat.A_start, Antrieb_minus_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 13: Störungen anzeigen UZ7402/7401 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7402.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ7401.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 14: Störungen quittieren UZ7401 ---
|
||||
A "DOutbound_Bereich".A01_UZ7401.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 15: Schleuse 4466 ---
|
||||
AN "MB4445" // Weiche Einfahrt ByPass
|
||||
AN "MB4457"
|
||||
= Start_ok
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=4466, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4457", B_InSchleuse:="BG4466", B_Zähl:="BG4461", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt, Start_Ok:=Start_ok, Antrieb_Schleuse_aktiv:="MA0331", Antrieb_plus_aktiv:="MA0332", Schleuse_geöffnet:="MB4466", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4466.Stat.Ast, Error:=DB708.DBW562, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0331.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0331.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0331.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0331.Stat.A_PS, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0332.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0332.Stat.A_start, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
|
||||
--- NW 16: Schleuse 4462 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4462, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4461", B_InSchleuse:="BG4462", B_Zähl:="BG4460", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4460.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0332", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB4462", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4462.Stat.Ast, Error:=DB708.DBW560, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0332.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0332.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0332.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0332.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 17: Schleuse 4463 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4463, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4460", B_InSchleuse:="BG4463", B_AusSchleuse:="BG4464", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4464.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0332", Antrieb_plus_aktiv:="MA0333", Schleuse_geöffnet:="MB4463", RestZeit_Bereich_plus:=Bereich_4465.Dyn.Restzeit, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4463.Stat.Ast, Error:=DB708.DBW584, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0332.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0332.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0332.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0332.Stat.A_PS, Antrieb_plus_vor:=Bereich_4465.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 18: Bereich 4465 (vor BST 1) ---
|
||||
AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3
|
||||
AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4
|
||||
AN "7_HMI_Err_UH07_OB".System.BST1_Feueralarm
|
||||
AN "7_HMI_Err_UH07_OB".System.BST1_Geschlossen
|
||||
AN "7_HMI_Err_UH07_OB".System."BST1_Störung"
|
||||
A Schleuse_3370.Dyn.Sk.Bereich_ok
|
||||
= Fahren_Ok
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=4465, ErrQuit:=ErrQuit, B_BereichsAnfang:="BG4464", B_BereichsEnde:="BG4465", B_Zähl:="BG3367", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Bereich_aktiv:="MA0333", Antrieb_plus_aktiv:="MA0062", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DEPtoLP_Antriebe".MA0333.Stat.A_vor, Antrieb_Bereich_stop:="DEPtoLP_Antriebe".MA0333.Stat.Stop_vor, Error:=DB708.DBW480, Antrieb_Bereich_start:="DEPtoLP_Antriebe".MA0333.Stat.A_start, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0062.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0062.Stat.A_start, Antrieb_minus_vor:="DEPtoLP_Antriebe".MA0332.Stat.A_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 19: Störungen anzeigen UZ7401 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7401.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 20: Störungen quittieren UZ0701 ---
|
||||
A "DOutbound_Bereich".A01_UZ0701.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 21: Schleuse 3370 (hinter BST 1) ---
|
||||
// Hinter BST freiräumen:
|
||||
A Bereich_4465.Dyn.Status."Trolley_fährt_aus"
|
||||
O
|
||||
A "DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt
|
||||
AN "BG3370"
|
||||
S "DEPtoLP_Antriebe".MA0062.Stat.A_vor
|
||||
|
||||
A "DEPtoLP_Sensoren".Stau_BG3371.Stat.B_Akt
|
||||
O "DEPtoLP_Sensoren".Stau_BG3372.Stat.B_Akt
|
||||
O "DEPtoLP_Sensoren".Stau_BG3377.Stat.B_Akt // Stau hinter ASF im EG
|
||||
= Stau_raus
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=3370, ErrQuit:=ErrQuit, B_VorSchleuse:="DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt, B_InSchleuse:="BG3370", B_AusSchleuse:="BG3372", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0062", Antrieb_plus_aktiv:="MA0063", Schleuse_geöffnet:="MB3370", RestZeit_Bereich_plus:=Bereich_3373.Dyn.Restzeit, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_3370.Stat.Ast, Error:=DB708.DBW532, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0062.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0062.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0062.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0062.Stat.A_PS, Antrieb_plus_vor:=Bereich_3373.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 22: Störungen anzeigen UZ0701 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ0701.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 23: Störungen quittieren UZ0701/0702 ---
|
||||
A "DOutbound_Bereich".A01_UZ0701.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UZ0702.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 24: Bereich 3373 (Runter ins EG) ---
|
||||
A "MB3370"
|
||||
A "BG3372"
|
||||
= B_vor_Schleuse
|
||||
|
||||
A "DEPtoLP_Sensoren".Stau_BG3376.Stat.B_Akt
|
||||
O "DEPtoLP_Sensoren".Stau_BG3377.Stat.B_Akt
|
||||
= Stau_raus
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=3373, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3373", B_Zähl:="BG3377", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0063", Antrieb_plus_aktiv:="MA0064", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DEPtoLP_Antriebe".MA0063.Stat.A_vor, Antrieb_Bereich_stop:="DEPtoLP_Antriebe".MA0063.Stat.Stop_vor, Error:=DB708.DBW456, Antrieb_Bereich_start:="DEPtoLP_Antriebe".MA0063.Stat.A_start, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0064.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_minus_vor:="DEPtoLP_Antriebe".MA0062.Stat.A_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 25: Störungen anzeigen UZ0701/0702 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ0701.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ0702.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 26: Störungen quittieren UZ0702 ---
|
||||
A "DOutbound_Bereich".A01_UZ0702.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 27: Schleuse 3303 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=3303, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3377", B_InSchleuse:="BG3303", B_AusSchleuse:="BG3304", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG3304.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0064", Antrieb_plus_aktiv:="MA0064", Schleuse_geöffnet:="MB3303", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_3303.Stat.Ast, Error:=DB708.DBW522, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0064.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0064.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // wie oben
|
||||
|
||||
|
||||
--- NW 28: Störungen anzeigen UZ0702 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ0702.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 29: Ende ---
|
||||
BE
|
||||
FUNCTION_BLOCK "EPtoLP_OmniFahren"
|
||||
TITLE = Omnifahren Outbound Entnahmepuffer > Leerpuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_4512 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Schleuse_4532 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Schleuse_4516 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Schleuse_4520 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Bereich_4456 : "MHMOmniBereich_Plus";
|
||||
Schleuse_4466 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Schleuse_4462 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Bereich_4465 : "MHMOmniBereich_Plus";
|
||||
Schleuse_3370 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Bereich_3373 : "MHMOmniBereich_Plus";
|
||||
Schleuse_3303 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Schleuse_4522 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Schleuse_4463 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Übergang_4514 { S7_SetPoint := 'False'} : "MHMÜbergang_ohne_Schleuse";
|
||||
Trolleys_starten : Struct
|
||||
Flanke : Bool;
|
||||
Wartezeit_aktiv : Bool;
|
||||
Timer_Wartenzeit { S7_SetPoint := 'True'} : Int;
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
VAR_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;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Systemzeug
|
||||
|
||||
//Verschiedene Bereiche:
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
= #Schleuse_4512.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4532.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4516.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4522.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4520.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_4456.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4466.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4462.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4463.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_4465.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3370.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_3373.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3303.Dyn.Sk.Auto_akt;
|
||||
|
||||
UN "DOutbound_Bereich".A01_UC074.BereichErr;
|
||||
= #Schleuse_4512.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4532.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4516.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4522.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4520.Dyn.Sk.Bereich_ok;
|
||||
= #Bereich_4456.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4466.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4462.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4463.Dyn.Sk.Bereich_ok;
|
||||
= #Bereich_4465.Dyn.Sk.Bereich_ok;
|
||||
UN "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
= #Schleuse_3370.Dyn.Sk.Bereich_ok;
|
||||
= #Bereich_3373.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3303.Dyn.Sk.Bereich_ok;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7402/7403
|
||||
U "DOutbound_Bereich".A01_UZ7402.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UZ7403.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4512
|
||||
CALL #Schleuse_4512
|
||||
( Schleusen_Nr := 4512 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4511" ,
|
||||
B_InSchleuse := "BG4512" ,
|
||||
B_Zähl := "BG4531" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG4531.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0326" ,
|
||||
Schleuse_geöffnet := "MB4512" ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_4512.Stat.Ast ,
|
||||
Error := %DB708.DBW576 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0326.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0326.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0326.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0326.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //Identisch
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4532
|
||||
U "DEPtoLP_Sensoren".Stau_BG4513.Stat.B_Akt;
|
||||
/// O "DEP>LP_Sensoren".Stau_BG4515.Stat.B_Akt
|
||||
= #Stau_raus;
|
||||
|
||||
CALL #Schleuse_4532
|
||||
( Schleusen_Nr := 4532 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4531" ,
|
||||
B_InSchleuse := "BG4532" ,
|
||||
B_Zähl := "BG4513" ,
|
||||
B_Stau_raus := #Stau_raus ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0326" ,
|
||||
Antrieb_plus_aktiv := "MA0326" ,
|
||||
Schleuse_geöffnet := "MB4532" ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_4532.Stat.Ast ,
|
||||
Error := %DB708.DBW578 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0326.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0326.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0326.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0326.Stat.A_PS ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0326 / Übergang 4514
|
||||
CALL #Übergang_4514
|
||||
( ErrQuit := #ErrQuit ,
|
||||
B_Anfang := "BG4513" ,
|
||||
B_Am_Übergang := "BG4514" ,
|
||||
B_Stau_Antrieb_plus := "BG4515" ,
|
||||
Antrieb_aktiv := "MA0326" ,
|
||||
Antrieb_plus_aktiv := "MA0327" ,
|
||||
Antrieb_vor := "DEPtoLP_Antriebe".MA0326.Stat.A_vor ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0326.Stat.A_start ,
|
||||
Antrieb_stop := "DEPtoLP_Antriebe".MA0326.Stat.A_PS ,
|
||||
Antrieb_plus_vor := "DEPtoLP_Antriebe".MA0327.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DEPtoLP_Antriebe".MA0327.Stat.A_start
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4516
|
||||
CALL #Schleuse_4516
|
||||
( Schleusen_Nr := 4516 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4515" ,
|
||||
B_InSchleuse := "BG4516" ,
|
||||
B_AusSchleuse := "BG4517" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG4517.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0327" ,
|
||||
Antrieb_plus_aktiv := "MA0327" ,
|
||||
Schleuse_geöffnet := "MB4516" ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_4516.Stat.Ast ,
|
||||
Error := %DB708.DBW566 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0327.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0327.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0327.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0327.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //Identisch
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4522
|
||||
CALL #Schleuse_4522
|
||||
( Schleusen_Nr := 4522 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4517" ,
|
||||
B_InSchleuse := "BG4522" ,
|
||||
B_AusSchleuse := "BG4521" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG4521.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0327" ,
|
||||
Antrieb_plus_aktiv := "MA0327" ,
|
||||
Schleuse_geöffnet := "MB4522" ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_4522.Stat.Ast ,
|
||||
Error := %DB708.DBW582 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0327.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0327.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0327.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0327.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //Identisch
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung)
|
||||
U "MB4520";
|
||||
FP #Trolleys_starten.Flanke;
|
||||
S #Trolleys_starten.Wartezeit_aktiv;
|
||||
SPBN Warten ;//Negierter Sprung
|
||||
|
||||
L 15 ;//Wartezeit in Sekunden
|
||||
T #Trolleys_starten.Timer_Wartenzeit;
|
||||
|
||||
Warten: UN #Trolleys_starten.Wartezeit_aktiv;
|
||||
O;
|
||||
U "MB4520" ;//Schleuse offen
|
||||
UN "MA0327" ;//Aber Trolley fährt nicht
|
||||
ON "1s-Impuls";
|
||||
SPB Wait;
|
||||
|
||||
L #Trolleys_starten.Timer_Wartenzeit;
|
||||
+ -1;
|
||||
T #Trolleys_starten.Timer_Wartenzeit;
|
||||
L 0;
|
||||
>I;
|
||||
SPB Wait;
|
||||
|
||||
SET;
|
||||
R #Trolleys_starten.Wartezeit_aktiv;
|
||||
|
||||
Wait: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4520
|
||||
UN #Trolleys_starten.Wartezeit_aktiv;
|
||||
= #Fahren_Ok;
|
||||
|
||||
U "BG4517";
|
||||
O "BG4521";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
CALL #Schleuse_4520
|
||||
( Schleusen_Nr := 4520 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := #B_vor_Schleuse ,
|
||||
B_InSchleuse := "BG4520" ,
|
||||
B_AusSchleuse := "BG4455" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG4455.Stat.B_Akt ,
|
||||
Start_Ok := #Fahren_Ok ,
|
||||
Antrieb_Schleuse_aktiv := "MA0327" ,
|
||||
Antrieb_plus_aktiv := "MA0330" ,
|
||||
Schleuse_geöffnet := "MB4520" ,
|
||||
RestZeit_Bereich_plus := #Bereich_4456.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_4520.Stat.Ast ,
|
||||
Error := %DB708.DBW568 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0327.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0327.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0327.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0327.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Bereich_4456.Dyn.Status.Trolley_kommt_in_Bereich ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7402/7403
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7402.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ7403.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7402/7401
|
||||
U "DOutbound_Bereich".A01_UZ7402.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UZ7401.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 4456
|
||||
U "MB4520";
|
||||
U "BG4455";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
U "DEPtoLP_Sensoren".Stau_BG4457.Stat.B_Akt;
|
||||
O "DEPtoLP_Sensoren".Stau_BG4467.Stat.B_Akt;
|
||||
= #Stau_raus;
|
||||
|
||||
CALL #Bereich_4456
|
||||
( Bereichs_Nr := 4456 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := #B_vor_Schleuse ,
|
||||
B_BereichsEnde := "BG4456" ,
|
||||
B_Zähl := "BG4467" ,
|
||||
B_Stau_raus := #Stau_raus ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Bereich_aktiv := "MA0330" ,
|
||||
Antrieb_plus_aktiv := "MA0331" ,
|
||||
Antrieb_Bereich_vor := "DEPtoLP_Antriebe".MA0330.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DEPtoLP_Antriebe".MA0330.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW478 ,
|
||||
Antrieb_Bereich_start := "DEPtoLP_Antriebe".MA0330.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DEPtoLP_Antriebe".MA0331.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DEPtoLP_Antriebe".MA0331.Stat.A_start ,
|
||||
Antrieb_minus_vor := "DEPtoLP_Antriebe".MA0327.Stat.A_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7402/7401
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7402.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ7401.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7401
|
||||
U "DOutbound_Bereich".A01_UZ7401.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC074.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4466
|
||||
UN "MB4445" ;//Weiche Einfahrt ByPass
|
||||
UN "MB4457";
|
||||
= #Start_ok;
|
||||
|
||||
CALL #Schleuse_4466
|
||||
( Schleusen_Nr := 4466 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4457" ,
|
||||
B_InSchleuse := "BG4466" ,
|
||||
B_Zähl := "BG4461" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt ,
|
||||
Start_Ok := #Start_ok ,
|
||||
Antrieb_Schleuse_aktiv := "MA0331" ,
|
||||
Antrieb_plus_aktiv := "MA0332" ,
|
||||
Schleuse_geöffnet := "MB4466" ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_4466.Stat.Ast ,
|
||||
Error := %DB708.DBW562 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0331.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0331.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0331.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0331.Stat.A_PS ,
|
||||
Antrieb_plus_vor := "DEPtoLP_Antriebe".MA0332.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DEPtoLP_Antriebe".MA0332.Stat.A_start ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4462
|
||||
CALL #Schleuse_4462
|
||||
( Schleusen_Nr := 4462 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4461" ,
|
||||
B_InSchleuse := "BG4462" ,
|
||||
B_Zähl := "BG4460" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG4460.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0332" ,
|
||||
Schleuse_geöffnet := "MB4462" ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_4462.Stat.Ast ,
|
||||
Error := %DB708.DBW560 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0332.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0332.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0332.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0332.Stat.A_PS ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4463
|
||||
CALL #Schleuse_4463
|
||||
( Schleusen_Nr := 4463 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4460" ,
|
||||
B_InSchleuse := "BG4463" ,
|
||||
B_AusSchleuse := "BG4464" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG4464.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0332" ,
|
||||
Antrieb_plus_aktiv := "MA0333" ,
|
||||
Schleuse_geöffnet := "MB4463" ,
|
||||
RestZeit_Bereich_plus := #Bereich_4465.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_4463.Stat.Ast ,
|
||||
Error := %DB708.DBW584 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0332.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0332.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0332.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0332.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Bereich_4465.Dyn.Status.Trolley_kommt_in_Bereich ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 4465 (vor BST 1)
|
||||
UN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3;
|
||||
UN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST1_Feueralarm;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST1_Geschlossen;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST1_Störung;
|
||||
U #Schleuse_3370.Dyn.Sk.Bereich_ok;
|
||||
= #Fahren_Ok;
|
||||
|
||||
CALL #Bereich_4465
|
||||
( Bereichs_Nr := 4465 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := "BG4464" ,
|
||||
B_BereichsEnde := "BG4465" ,
|
||||
B_Zähl := "BG3367" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt ,
|
||||
Start_Ok := #Fahren_Ok ,
|
||||
Antrieb_Bereich_aktiv := "MA0333" ,
|
||||
Antrieb_plus_aktiv := "MA0062" ,
|
||||
Antrieb_Bereich_vor := "DEPtoLP_Antriebe".MA0333.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DEPtoLP_Antriebe".MA0333.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW480 ,
|
||||
Antrieb_Bereich_start := "DEPtoLP_Antriebe".MA0333.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DEPtoLP_Antriebe".MA0062.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DEPtoLP_Antriebe".MA0062.Stat.A_start ,
|
||||
Antrieb_minus_vor := "DEPtoLP_Antriebe".MA0332.Stat.A_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7401
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7401.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC074.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ0701
|
||||
U "DOutbound_Bereich".A01_UZ0701.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3370 (hinter BST 1)
|
||||
|
||||
//Hinter BST freiräumen:
|
||||
U #Bereich_4465.Dyn.Status.Trolley_fährt_aus;
|
||||
O;
|
||||
U "DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt;
|
||||
UN "BG3370";
|
||||
S "DEPtoLP_Antriebe".MA0062.Stat.A_vor;
|
||||
|
||||
U "DEPtoLP_Sensoren".Stau_BG3371.Stat.B_Akt;
|
||||
O "DEPtoLP_Sensoren".Stau_BG3372.Stat.B_Akt;
|
||||
O "DEPtoLP_Sensoren".Stau_BG3377.Stat.B_Akt;//Stau hinter ASF im EG
|
||||
= #Stau_raus;
|
||||
|
||||
CALL #Schleuse_3370
|
||||
( Schleusen_Nr := 3370 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt ,
|
||||
B_InSchleuse := "BG3370" ,
|
||||
B_AusSchleuse := "BG3372" ,
|
||||
B_Stau_raus := #Stau_raus ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0062" ,
|
||||
Antrieb_plus_aktiv := "MA0063" ,
|
||||
Schleuse_geöffnet := "MB3370" ,
|
||||
RestZeit_Bereich_plus := #Bereich_3373.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_3370.Stat.Ast ,
|
||||
Error := %DB708.DBW532 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0062.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0062.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0062.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0062.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Bereich_3373.Dyn.Status.Trolley_kommt_in_Bereich ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ0701
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ0701.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ0701/0702
|
||||
U "DOutbound_Bereich".A01_UZ0701.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UZ0702.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 3373 (Runter ins EG)
|
||||
U "MB3370";
|
||||
U "BG3372";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
U "DEPtoLP_Sensoren".Stau_BG3376.Stat.B_Akt;
|
||||
O "DEPtoLP_Sensoren".Stau_BG3377.Stat.B_Akt;
|
||||
= #Stau_raus;
|
||||
|
||||
CALL #Bereich_3373
|
||||
( Bereichs_Nr := 3373 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := #B_vor_Schleuse ,
|
||||
B_BereichsEnde := "BG3373" ,
|
||||
B_Zähl := "BG3377" ,
|
||||
B_Stau_raus := #Stau_raus ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Bereich_aktiv := "MA0063" ,
|
||||
Antrieb_plus_aktiv := "MA0064" ,
|
||||
Antrieb_Bereich_vor := "DEPtoLP_Antriebe".MA0063.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DEPtoLP_Antriebe".MA0063.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW456 ,
|
||||
Antrieb_Bereich_start := "DEPtoLP_Antriebe".MA0063.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DEPtoLP_Antriebe".MA0064.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_minus_vor := "DEPtoLP_Antriebe".MA0062.Stat.A_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ0701/0702
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ0701.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ0702.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ0702
|
||||
U "DOutbound_Bereich".A01_UZ0702.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3303
|
||||
CALL #Schleuse_3303
|
||||
( Schleusen_Nr := 3303 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3377" ,
|
||||
B_InSchleuse := "BG3303" ,
|
||||
B_AusSchleuse := "BG3304" ,
|
||||
B_Stau_raus := "DEPtoLP_Sensoren".Stau_BG3304.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0064" ,
|
||||
Antrieb_plus_aktiv := "MA0064" ,
|
||||
Schleuse_geöffnet := "MB3303" ,
|
||||
Y_Schleuse_Auf := "DEPtoLP_Zylinder".Schleuse_3303.Stat.Ast ,
|
||||
Error := %DB708.DBW522 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0064.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0064.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //wie oben
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ0702
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ0702.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
+63
-60
@@ -1,74 +1,77 @@
|
||||
=== FC 4181: EPtoLP_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
|
||||
FUNCTION "EPtoLP_Ziel_FC" : Void
|
||||
TITLE = Ziel-FC: EP>LP_OmniFahren
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_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;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Bereich 4465: (BST 1) ---
|
||||
L "MW190"
|
||||
L 4465 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X4465E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
SET
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
NETWORK
|
||||
TITLE = Bereich 4465: (BST 1)
|
||||
L "MW190";
|
||||
L 4465 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X4465E;
|
||||
|
||||
BEU
|
||||
SET;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
X4465E: NOP 0
|
||||
BEA;
|
||||
|
||||
X4465E: NOP 0;
|
||||
|
||||
--- NW 3: Schleuse 4466: (Vor Einfahrt ByPass) ---
|
||||
L "MW190"
|
||||
L 4466 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X4466E
|
||||
NETWORK
|
||||
TITLE = Schleuse 4466: (Vor Einfahrt ByPass)
|
||||
L "MW190";
|
||||
L 4466 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X4466E;
|
||||
|
||||
// Quell-Steuerung:
|
||||
L "DVPtoEP_OmniFahren".Weiche_4445.Dyn.Weichen_Ziel
|
||||
L 16#4461 // Fahren Trolleys zu BG4461?
|
||||
==I // Ja!
|
||||
O "MB4445" // Weiche ist auf Abzweig
|
||||
O "DVPtoEP_OmniFahren".Weiche_4445.Dyn.Status.Reset_aktiv
|
||||
BEC // Warten !
|
||||
//Quell-Steuerung:
|
||||
L "DVPtoEP_OmniFahren".Weiche_4445.Dyn.Weichen_Ziel;
|
||||
L 16#4461 ;//Fahren Trolleys zu BG4461?
|
||||
==I;//Ja!
|
||||
O "MB4445" ;//Weiche ist auf Abzweig
|
||||
O "DVPtoEP_OmniFahren".Weiche_4445.Dyn.Status.Reset_aktiv;
|
||||
BEB;//Warten !
|
||||
|
||||
AN "MB4445" // Weiche Einfahrt ByPass
|
||||
AN "MB4457"
|
||||
AN "DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
UN "MB4445" ;//Weiche Einfahrt ByPass
|
||||
UN "MB4457";
|
||||
UN "DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
X4466E: NOP 0
|
||||
X4466E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,82 +1,173 @@
|
||||
=== FB 5190: LP_Sensoren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Stau_LP1 : "MSensoren"
|
||||
Stau_LP2 : "MSensoren"
|
||||
Stau_LP3 : "MSensoren"
|
||||
Stau_LP4 : "MSensoren"
|
||||
Stau_LP5 : "MSensoren"
|
||||
Stau_LP6 : "MSensoren"
|
||||
Stau_LP7 : "MSensoren"
|
||||
Stau_LP8 : "MSensoren"
|
||||
Stau_LP9 : "MSensoren"
|
||||
Stau_LP10 : "MSensoren"
|
||||
Stau_BG3322 : "MSensoren" // Stau am Sensor Einfahrt MA0065
|
||||
Stau_BG3327 : "MSensoren" // Stau am Sensor Einfahrt MA0065
|
||||
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:
|
||||
FUNCTION_BLOCK "LP_Sensoren"
|
||||
TITLE = Einige Sensoren entprellen Outbound Leerpuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Stau_LP1 : "MSensoren";
|
||||
Stau_LP2 : "MSensoren";
|
||||
Stau_LP3 : "MSensoren";
|
||||
Stau_LP4 : "MSensoren";
|
||||
Stau_LP5 : "MSensoren";
|
||||
Stau_LP6 : "MSensoren";
|
||||
Stau_LP7 : "MSensoren";
|
||||
Stau_LP8 : "MSensoren";
|
||||
Stau_LP9 : "MSensoren";
|
||||
Stau_LP10 : "MSensoren";
|
||||
Stau_BG3322 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
|
||||
Stau_BG3327 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3320", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3317", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP1
|
||||
( ESensor := "BG3320" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP2
|
||||
( ESensor := "BG3317" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 3: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3316", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP3
|
||||
( ESensor := "BG3316" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP4
|
||||
( ESensor := "BG3315" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 4: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3315", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP5
|
||||
( ESensor := "BG3314" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP6
|
||||
( ESensor := "BG3313" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 5: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3314", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP7
|
||||
( ESensor := "BG3312" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP8
|
||||
( ESensor := "BG3311" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 6: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3313", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP9
|
||||
( ESensor := "BG3310" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau LeerPuffer
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_LP10
|
||||
( ESensor := "BG3307" ,
|
||||
T_Ein := 01 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 7: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3312", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor vor Beladung
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3322
|
||||
( ESensor := "BG3322" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Steigung vor Beladung
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3327
|
||||
( ESensor := "BG3327" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 8: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3311", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 9: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3310", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 10: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3307", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 11: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3322", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 12: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3327", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 13: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,130 +1,262 @@
|
||||
=== FB 5192: LP_Zylinder [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Sorter_3305 : "MZylinder" //
|
||||
Weiche_LP1 : "MZylinder" //
|
||||
Weiche_LP2 : "MZylinder"
|
||||
Weiche_LP3 : "MZylinder"
|
||||
Weiche_LP4 : "MZylinder"
|
||||
Weiche_LP5 : "MZylinder"
|
||||
Weiche_LP6 : "MZylinder"
|
||||
Weiche_LP7 : "MZylinder"
|
||||
Weiche_LP8 : "MZylinder"
|
||||
Weiche_LP9 : "MZylinder"
|
||||
Weiche_LP10 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP1 : "MZylinder" //
|
||||
Schleuse_Ausfahrt_LP2 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP3 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP4 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP5 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP6 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP7 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP8 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP9 : "MZylinder"
|
||||
Schleuse_Ausfahrt_LP10 : "MZylinder"
|
||||
Temp:
|
||||
Auto : Bool // Automatik ist aktiv
|
||||
Hand : Bool // Hand ist aktiv
|
||||
ZylAst : Bool // Zylinder ansteuern
|
||||
Constant:
|
||||
FUNCTION_BLOCK "LP_Zylinder"
|
||||
TITLE = Zylinder Outbound Leerpuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Sorter_3305 : "MZylinder"; //
|
||||
Weiche_LP1 : "MZylinder"; //
|
||||
Weiche_LP2 : "MZylinder";
|
||||
Weiche_LP3 : "MZylinder";
|
||||
Weiche_LP4 : "MZylinder";
|
||||
Weiche_LP5 : "MZylinder";
|
||||
Weiche_LP6 : "MZylinder";
|
||||
Weiche_LP7 : "MZylinder";
|
||||
Weiche_LP8 : "MZylinder";
|
||||
Weiche_LP9 : "MZylinder";
|
||||
Weiche_LP10 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP1 : "MZylinder"; //
|
||||
Schleuse_Ausfahrt_LP2 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP3 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP4 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP5 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP6 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP7 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP8 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP9 : "MZylinder";
|
||||
Schleuse_Ausfahrt_LP10 : "MZylinder";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UH07/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next // Zylinder-Stellung nicht mehr ändern
|
||||
VAR_TEMP
|
||||
Auto : Bool; // Automatik ist aktiv
|
||||
Hand : Bool; // Hand ist aktiv
|
||||
ZylAst : Bool; // Zylinder ansteuern
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse_3305 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3305", ZylGst:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UH07/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
--- NW 3: Weiche_LP1 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3320", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_3305
|
||||
CALL #Sorter_3305
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3305"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche_LP1
|
||||
CALL #Weiche_LP1
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3320"
|
||||
);
|
||||
|
||||
--- NW 4: Weiche_LP2 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3317", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Weiche_LP2
|
||||
CALL #Weiche_LP2
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3317"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche_LP3
|
||||
CALL #Weiche_LP3
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3316"
|
||||
);
|
||||
|
||||
--- NW 5: Weiche_LP3 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3316", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Weiche_LP4
|
||||
CALL #Weiche_LP4
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3315"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche_LP5
|
||||
CALL #Weiche_LP5
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3314"
|
||||
);
|
||||
|
||||
--- NW 6: Weiche_LP4 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3315", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Weiche_LP6
|
||||
CALL #Weiche_LP6
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3313"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche_LP7
|
||||
CALL #Weiche_LP7
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3312"
|
||||
);
|
||||
|
||||
--- NW 7: Weiche_LP5 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3314", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Weiche_LP8
|
||||
CALL #Weiche_LP8
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3311"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche_LP9
|
||||
CALL #Weiche_LP9
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3310"
|
||||
);
|
||||
|
||||
--- NW 8: Weiche_LP6 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3313", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Weiche_LP10
|
||||
CALL #Weiche_LP10
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP1
|
||||
CALL #Schleuse_Ausfahrt_LP1
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3341"
|
||||
);
|
||||
|
||||
--- NW 9: Weiche_LP7 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3312", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP2
|
||||
CALL #Schleuse_Ausfahrt_LP2
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3340"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP3
|
||||
CALL #Schleuse_Ausfahrt_LP3
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3337"
|
||||
);
|
||||
|
||||
--- NW 10: Weiche_LP8 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3311", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP4
|
||||
CALL #Schleuse_Ausfahrt_LP4
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3336"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP5
|
||||
CALL #Schleuse_Ausfahrt_LP5
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3335"
|
||||
);
|
||||
|
||||
--- NW 11: Weiche_LP9 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3310", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP6
|
||||
CALL #Schleuse_Ausfahrt_LP6
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3334"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP7
|
||||
CALL #Schleuse_Ausfahrt_LP7
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3333"
|
||||
);
|
||||
|
||||
--- NW 12: Weiche_LP10 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:=?, ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP8
|
||||
CALL #Schleuse_Ausfahrt_LP8
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3332"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP9
|
||||
CALL #Schleuse_Ausfahrt_LP9
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3331"
|
||||
);
|
||||
|
||||
--- NW 13: Schleuse_Ausfahrt_LP1 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3341", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_Ausfahrt_LP10
|
||||
CALL #Schleuse_Ausfahrt_LP10
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3330"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
Next: BE;
|
||||
|
||||
--- NW 14: Schleuse_Ausfahrt_LP2 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3340", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 15: Schleuse_Ausfahrt_LP3 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3337", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 16: Schleuse_Ausfahrt_LP4 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3336", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 17: Schleuse_Ausfahrt_LP5 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3335", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 18: Schleuse_Ausfahrt_LP6 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3334", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 19: Schleuse_Ausfahrt_LP7 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3333", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 20: Schleuse_Ausfahrt_LP8 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3332", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 21: Schleuse_Ausfahrt_LP9 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3331", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 22: Schleuse_Ausfahrt_LP10 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3330", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 23: Ende ---
|
||||
Next: BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
=== FC 5100: LP_Bereich [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "LP_Bereich" : Void
|
||||
TITLE = Bereich Outbound: Leerpuffer
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Durchfahr- / Saugmodus ---
|
||||
// In LeerPufferStrecken [FB5431] /Nw8ff
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Durchfahr- / Saugmodus
|
||||
|
||||
--- NW 2: Baustein-Aufrufe ---
|
||||
CALL FB "LP_Sensoren" ,
|
||||
//In LeerPufferStrecken [FB5431] /Nw8ff
|
||||
NETWORK
|
||||
TITLE = Baustein-Aufrufe
|
||||
CALL "LP_Sensoren", "DLP_Sensoren";
|
||||
|
||||
CALL FB "LP_OmniFahren" ,
|
||||
CALL "LP_OmniFahren", "DLP_OmniFahren";
|
||||
|
||||
CALL FB "LeerPufferStrecken" ,
|
||||
CALL "LeerPufferStrecken", "DLeerPufferStrecken";
|
||||
|
||||
CALL FB "LP_Sorter" ,
|
||||
CALL "LP_Sorter", "DLP_Sorter";
|
||||
|
||||
CALL FB "LP_Auslagern" ,
|
||||
CALL "LP_Auslagern", "DLP_Auslagern";
|
||||
|
||||
CALL FB "LP_Zylinder" ,
|
||||
CALL "LP_Zylinder", "DLP_Zylinder";
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+33
-28
@@ -1,37 +1,42 @@
|
||||
=== FC 5182: LP_Draussen_FC [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "LP_Draussen_FC" : Void
|
||||
TITLE = Draussen-FC: LeerPuffer
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
SET // Rückmeldungen erst mal resetten
|
||||
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3305 (vor Sorter LP): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 3305 ;//Aufruf von Schleuse 3305 ?
|
||||
<>I;//Nein!
|
||||
SPB X3305E;
|
||||
|
||||
--- NW 2: Schleuse 3305 (vor Sorter LP): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 3305 // Aufruf von Schleuse 3305 ?
|
||||
<>I // Nein!
|
||||
JC X3305E
|
||||
CALL "Reservierung_in_Puffer_eintragen"
|
||||
( TrolleyID := "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX ,
|
||||
Ziel := "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel ,
|
||||
ShopGroup := DINT#0 ,
|
||||
Gesamt_Trolley_DL := 0
|
||||
);
|
||||
|
||||
CALL FC "Reservierung_in_Puffer_eintragen" (TrolleyID:="DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX, Ziel:="DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel, ShopGroup:=DINT#0, Gesamt_Trolley_DL:=0)
|
||||
//Daten in Sep 3305 löschen:
|
||||
L DINT#0;
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
// Daten in Sep 3305 löschen:
|
||||
L DINT#0
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
X3305E: NOP 0;
|
||||
|
||||
X3305E: NOP 0
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+70
-49
@@ -1,62 +1,83 @@
|
||||
=== FB 5128: LP_OmniFahren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_3305 : "MHMOmniSchleuse"
|
||||
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:
|
||||
FUNCTION_BLOCK "LP_OmniFahren"
|
||||
TITLE = Omnifahren Outbound Leerpuffer
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_3305 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Systemzeug ---
|
||||
// Verschiedene Bereiche:
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
= Schleuse_3305.Dyn.Sk.Auto_akt
|
||||
|
||||
AN "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
= Schleuse_3305.Dyn.Sk.Bereich_ok
|
||||
VAR_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;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Störungen quittieren UZ0702 ---
|
||||
A "DOutbound_Bereich".A01_UZ0702.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Systemzeug
|
||||
|
||||
//Verschiedene Bereiche:
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
= #Schleuse_3305.Dyn.Sk.Auto_akt;
|
||||
|
||||
--- NW 3: Schleuse 3305 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=3305, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3304", B_InSchleuse:="BG3305", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0064", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3305", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW524, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0064.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0064.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // weiterfahrt über Sorter-Sep
|
||||
UN "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
= #Schleuse_3305.Dyn.Sk.Bereich_ok;
|
||||
|
||||
AN Schleuse_3305.Dyn.Status.Reset_aktiv
|
||||
JC NoR3305
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ0702
|
||||
U "DOutbound_Bereich".A01_UZ0702.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
L DINT#0
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX // IDX
|
||||
L 0
|
||||
T "DLP_Sorter".Sorter_MB3305.Separator.Default_Ziel
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel
|
||||
NETWORK
|
||||
TITLE = Schleuse 3305
|
||||
CALL #Schleuse_3305
|
||||
( Schleusen_Nr := 3305 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3304" ,
|
||||
B_InSchleuse := "BG3305" ,
|
||||
B_AusSchleuse := , //weiterfahrt über Sorter-Sep
|
||||
Antrieb_Schleuse_aktiv := "MA0064" ,
|
||||
Schleuse_geöffnet := "MB3305" ,
|
||||
Error := %DB708.DBW524 ,
|
||||
Antrieb_Schleuse_vor := "DEPtoLP_Antriebe".MA0064.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DEPtoLP_Antriebe".MA0064.Stat.A_PS ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NoR3305: NOP 0
|
||||
UN #Schleuse_3305.Dyn.Status.Reset_aktiv;
|
||||
SPB NoR3305;
|
||||
|
||||
L DINT#0;
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L 0;
|
||||
T "DLP_Sorter".Sorter_MB3305.Separator.Default_Ziel;
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
--- NW 4: Störungen anzeigen UZ0702 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ0702.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
NoR3305: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ0702
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ0702.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
+109
-96
@@ -1,119 +1,132 @@
|
||||
=== FC 5181: LP_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
|
||||
FUNCTION "LP_Ziel_FC" : Void
|
||||
TITLE = Ziel-FC: LeerPuffer_OmniFahren
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_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;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 3305: Weiterfahren erlaubt ? (Sorter LP) ---
|
||||
L "MW190"
|
||||
L 3305 // Aufruf von Schleuse 3305 ?
|
||||
<>I // Nein!
|
||||
JC X3305E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
A "MB3305"
|
||||
BEC
|
||||
NETWORK
|
||||
TITLE = Schleuse 3305: Weiterfahren erlaubt ? (Sorter LP)
|
||||
L "MW190";
|
||||
L 3305 ;//Aufruf von Schleuse 3305 ?
|
||||
<>I;//Nein!
|
||||
SPB X3305E;
|
||||
|
||||
// Leer-Puffer ermitteln:
|
||||
CALL FC "Leerpuffer to Rein-Lager ermitteln" (Puffer:=Ziel_hex)
|
||||
U "MB3305";
|
||||
BEB;
|
||||
|
||||
// Ziel = Leer-Lager?
|
||||
L Ziel_hex
|
||||
L 16#f000
|
||||
AW
|
||||
L 16#A000 // Ziel = Leer-Lager ?
|
||||
==I // Ja!
|
||||
JC LagerOk_3305
|
||||
//Leer-Puffer ermitteln:
|
||||
CALL "Leerpuffer_Rein-Lager ermitteln"
|
||||
( Puffer := #Ziel_hex
|
||||
);
|
||||
|
||||
BEU // Kein Lager frei!
|
||||
//Ziel = Leer-Lager?
|
||||
L #Ziel_hex;
|
||||
L 16#f000;
|
||||
UW;
|
||||
L 16#A000 ;//Ziel = Leer-Lager ?
|
||||
==I ;//Ja!
|
||||
SPB LagerOk_3305;
|
||||
|
||||
LagerOk_3305: L Ziel_hex
|
||||
L 16#FF
|
||||
AW
|
||||
BTI // Damit Int 1-10 als Ziel !
|
||||
T Ziel_int
|
||||
BEA ;//Kein Lager frei!
|
||||
|
||||
// Check, ob Ziel-Lager Inilauf aktiv hat:
|
||||
T "MW220"
|
||||
LagerOk_3305: L #Ziel_hex;
|
||||
L 16#FF;
|
||||
UW;
|
||||
BTI ;//Damit Int 1-10 als Ziel !
|
||||
T #Ziel_int;
|
||||
|
||||
CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen
|
||||
//Check, ob Ziel-Lager Inilauf aktiv hat:
|
||||
T "MW220";
|
||||
|
||||
L "MB199"
|
||||
L 2#1111111 // Bit 7 ausblenden
|
||||
AW
|
||||
L 0 // Fehler vorhanden?
|
||||
<>I // Ja
|
||||
JC Egal
|
||||
CALL "DatenOut"
|
||||
( SSDB := 275 ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M220.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := #Position
|
||||
);
|
||||
|
||||
L "MW224"
|
||||
T Lager_DB
|
||||
L "MW226"
|
||||
T Lager_DW
|
||||
ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
SPB Egal;
|
||||
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#70 // Offset Status (Bit 7: Inilauf)
|
||||
SLD 3
|
||||
L 7 // Damit DBX_Bit 7
|
||||
OD
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
L "MW224";
|
||||
T #Lager_DB;
|
||||
L "MW226";
|
||||
T #Lager_DW;
|
||||
ITD;
|
||||
T #AR1Start;//Startwert mit Offset 0
|
||||
|
||||
OPN DB[Lager_DB] // Lager-DB öffnen
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#70 ;//Offset Status (Bit 7: Inilauf)
|
||||
SLD 3;
|
||||
L 7 ;//Damit DBX_Bit 7
|
||||
OD;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
A DBX [AR1Zeiger] // Lager hat Inilauf aktiv
|
||||
BEC // Sonst kann der Inilauf nie beendet werden!
|
||||
AUF DB[ #Lager_DB] ;//Lager-DB öffnen
|
||||
|
||||
Egal: L Ziel_int
|
||||
T "DLP_Sorter".Sorter_MB3305.Separator.Default_Ziel
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel
|
||||
U DBX[ #AR1Zeiger] ;//Lager hat Inilauf aktiv
|
||||
BEB;//Sonst kann der Inilauf nie beendet werden!
|
||||
|
||||
// Pseudo-IDX übergeben:
|
||||
L "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX // IDX
|
||||
L DINT#0 // Daten schon erzeugt?
|
||||
<>D // Ja!
|
||||
BEC
|
||||
Egal: L #Ziel_int;
|
||||
T "DLP_Sorter".Sorter_MB3305.Separator.Default_Ziel;
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel;
|
||||
|
||||
L "DLP_Sorter".Pseudo_IDX // Da kein Leser verbaut
|
||||
L dint#1
|
||||
+D
|
||||
T "DLP_Sorter".Pseudo_IDX
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX // IDX
|
||||
//Pseudo-IDX übergeben:
|
||||
L "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX;//IDX
|
||||
L DINT#0 ;//Daten schon erzeugt?
|
||||
<>D;//Ja!
|
||||
BEB;
|
||||
|
||||
CLR // Wird über MSorterRein (FB5423/5) gestartet!
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
L "DLP_Sorter".Pseudo_IDX;//Da kein Leser verbaut
|
||||
L dint#1;
|
||||
+D;
|
||||
T "DLP_Sorter".Pseudo_IDX;
|
||||
T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX;//IDX
|
||||
|
||||
BEU
|
||||
CLR ;//Wird über MSorterRein (FB5423/5) gestartet!
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
X3305E: NOP 0
|
||||
BEA;
|
||||
|
||||
X3305E: NOP 0;
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+531
-357
@@ -1,358 +1,532 @@
|
||||
=== FB 5423: LP_Sorter [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Sorter_MB3305 : "MSepSorterRein"
|
||||
Sync_BG3306 : "MStartSync"
|
||||
Weiche_LP1 : "MWeiche_Sorter"
|
||||
Weiche_LP2 : "MWeiche_Sorter"
|
||||
Weiche_LP3 : "MWeiche_Sorter"
|
||||
Weiche_LP4 : "MWeiche_Sorter"
|
||||
Weiche_LP5 : "MWeiche_Sorter"
|
||||
Weiche_LP6 : "MWeiche_Sorter"
|
||||
Weiche_LP7 : "MWeiche_Sorter"
|
||||
Weiche_LP8 : "MWeiche_Sorter"
|
||||
Weiche_LP9 : "MWeiche_Sorter"
|
||||
Weiche_LP10 : "MWeiche_Sorter"
|
||||
Impuls_BG3374 : "MImpulsGeber"
|
||||
Pseudo_IDX : DInt // Pseudo-Trolley-Nr. da kein Leser vor Sorter
|
||||
Ohne_PC_fahren : Bool
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Dyn : Struct
|
||||
GesamtSorterReset : Bool := 1
|
||||
Temp:
|
||||
ErrQuit : Bool
|
||||
ErrAnz : Bool
|
||||
Antrieb : Bool
|
||||
Stau : Bool
|
||||
Start_Ok : Bool
|
||||
SorterReset : Bool
|
||||
Error_aktiv : Bool
|
||||
Leer : Bool
|
||||
Err_DW : DInt
|
||||
Err_Bits : Int
|
||||
Constant:
|
||||
|
||||
--- NW 1: Systemzeug ---
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
= Sorter_MB3305.Dyn.Sk.Auto_akt
|
||||
|
||||
AN "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
= Sorter_MB3305.Dyn.Sk.Bereich_ok
|
||||
|
||||
// Bereichshalt:
|
||||
CLR // nicht verbaut
|
||||
R Sorter_MB3305.Dyn.Sk.Bereich_ok
|
||||
|
||||
// Sonderbetriebsarten Weichen:
|
||||
CLR
|
||||
= Weiche_LP1.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP2.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP3.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP4.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP5.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP6.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP7.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP8.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP9.Dyn.Status.Weichentest_aktiv
|
||||
= Weiche_LP10.Dyn.Status.Weichentest_aktiv
|
||||
|
||||
A Sync_BG3306.Dyn.Status.TeachModus_Aktiv
|
||||
= Weiche_LP1.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP2.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP3.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP4.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP5.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP6.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP7.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP8.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP9.Dyn.Status.TeachModus_aktiv
|
||||
= Weiche_LP10.Dyn.Status.TeachModus_aktiv
|
||||
|
||||
CLR
|
||||
= Sorter_MB3305.Dyn.Error.Korrektur_Modus_aktiv
|
||||
|
||||
L 5474 // DLSeps
|
||||
T "MW174"
|
||||
L 5478 // DLWeichen
|
||||
T "MW178"
|
||||
|
||||
// Nach neuen Daten suchen:
|
||||
A "1s-Impuls"
|
||||
= "Weiche_NewData"
|
||||
|
||||
|
||||
--- NW 2: Linien mit PLC_Ziel anfahren ---
|
||||
A Ohne_PC_fahren
|
||||
JCN En03
|
||||
|
||||
A "MB3121"
|
||||
O "MB3123"
|
||||
CU "Z102"
|
||||
|
||||
L "Z102"
|
||||
L 1
|
||||
<I
|
||||
A(
|
||||
L Sorter_MB3305.Separator.Default_Ziel
|
||||
L 0 // Bekannt ?
|
||||
>I // Ja !
|
||||
)
|
||||
JC En03
|
||||
|
||||
SET
|
||||
R "Z102"
|
||||
|
||||
L Sorter_MB3305.Separator.Default_Ziel
|
||||
L 0 // unbekannt ?
|
||||
==I
|
||||
L 5030 // Beginn mit Ausfahrziel 1.Puffer
|
||||
JC X399
|
||||
|
||||
// Nächste Weiche suchen:
|
||||
L Sorter_MB3305.Separator.Default_Ziel
|
||||
T "MW200"
|
||||
|
||||
CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel)
|
||||
|
||||
AN "M199.7" // Datensatz ist nicht vorhanden
|
||||
O "M208.0" // Letzte Weiche
|
||||
L 0 // Neubeginn
|
||||
JC X400
|
||||
|
||||
X398: CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#FF00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nächsten Datensatz lesen
|
||||
|
||||
L "MW206" // Weichentyp
|
||||
L 178 // Sorterweiche ?
|
||||
<>I // Nein!
|
||||
O "M199.2" // Ende erreicht
|
||||
L 0
|
||||
JC X400
|
||||
|
||||
A "M208.5" // Weiche für PLC-Ziel disabled !
|
||||
JC X398
|
||||
|
||||
L "MW226"
|
||||
T Sorter_MB3305.Separator.Default_Ziel
|
||||
|
||||
JU En03
|
||||
|
||||
// 1.Weiche checken:
|
||||
X399: T "MW200"
|
||||
|
||||
CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel)
|
||||
|
||||
AN "M199.7" // Datensatz ist nicht vorhanden
|
||||
JC En03
|
||||
|
||||
A "M208.5" // Weiche für PLC-Ziel disabled !
|
||||
JC X398
|
||||
|
||||
L "MW226"
|
||||
X400: T Sorter_MB3305.Separator.Default_Ziel
|
||||
|
||||
En03: NOP 0
|
||||
|
||||
|
||||
--- NW 3: Störung vorhanden ? ---
|
||||
CALL FC "Err_vorhanden" (Check_DB:=708, Anfangs_DW:=DINT#100, Ende_DW:=DINT#122, Stoerung:=Error_aktiv, ErrDW:=Err_DW, ErrBits:=Err_Bits) // Störungsanzeige
|
||||
A Error_aktiv // s.o.
|
||||
= Error_aktiv // Sorter Lager Weichen-Störung (Sorter-Antrieb gestoppt!)
|
||||
|
||||
A "BG3306" // Verlassen-Sensor
|
||||
L S5T#250MS
|
||||
OffDelay "T540"
|
||||
|
||||
|
||||
--- NW 4: Störung quittieren UH07 ---
|
||||
A "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 5: Sorter-GesamtReset ---
|
||||
// Sorter-Reset starten:
|
||||
A "DLP_OmniFahren".Schleuse_3305.Dyn.Status.Reset_aktiv // Bei Schleusen-Reset -> Sorter mit resetten!
|
||||
AN "DLP_Sorter".Sorter_MB3305.Dyn.GesamtSorterReset_aktiv
|
||||
S "DLP_Sorter".Sorter_MB3305.Dyn.GesamtSorterReset
|
||||
|
||||
|
||||
--- NW 6: Separator 3305 vor Sorter ---
|
||||
L DB708.DBW102 // Err beim Synchronisieren
|
||||
L 0 // Störung vorhanden ?
|
||||
==I // Nein !
|
||||
AN Sync_BG3306.Dyn.Stop // Rein-Separator stoppen
|
||||
AN Error_aktiv // Sorter Batch Weichen-Störung (Sorter-Antrieb gestoppt!)
|
||||
AN Sorter_MB3305.Dyn.GesamtSorterReset_aktiv
|
||||
= Start_Ok
|
||||
|
||||
SET // Da Leiste im Sep und Zusatz-Zylinder im Separator -> BT steht sofort sauber im Sep
|
||||
S Sorter_MB3305.Dyn.BT_beruhigt // 1. einfahrender BügelTräger ist im Sep
|
||||
|
||||
A "T540"
|
||||
= Sorter_MB3305.B_AusSep // Entprellung Verlassen-Sensor
|
||||
|
||||
// Triggern / Scanner-Auswertung über HW>VP_Omnifahren (FC128/27)
|
||||
// Ziel über Default-Ziel (HW>VP_Ziel_FC, FC181)
|
||||
|
||||
CALL FB "None" , (Separator_Nr:=3305, ErrQuit:=ErrQuit, B_VorSep:=?, B_ImSep:="BG3305", B_AusSep:=?, B_Beladen_im_Sep:=?, B_Pinsensor:="BG3374", B_Beladen_nach_Sep:=?, Start_Ok:=Start_Ok, Antrieb_aktiv:="MA0064", Antrieb_plus_aktiv:="MA0064", Y_Sep_Auf:="DLP_Zylinder".Sorter_3305.Stat.Ast, K_Sanner_triggern:=?, Sorter_Reset:=SorterReset, Error:=DB708.DBW100, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0064.Stat.A_vor, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
// Default-Ziel jeden Zyklus neu!:
|
||||
L 0
|
||||
T Sorter_MB3305.Separator.Default_Ziel
|
||||
|
||||
|
||||
--- NW 7: Reset ist aktiv ---
|
||||
A Sorter_MB3305.Dyn.GesamtSorterReset_aktiv
|
||||
= "7_HMI_Err_UH07_OB".Sorter_MB3305.Reset_aktiv
|
||||
|
||||
A Sorter_MB3305.Dyn.GesamtSorterReset_aktiv
|
||||
= Weiche_LP1.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP2.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP3.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP4.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP5.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP6.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP7.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP8.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP9.Dyn.Ohne_VerklemmKontrolle
|
||||
= Weiche_LP10.Dyn.Ohne_VerklemmKontrolle
|
||||
|
||||
// Diesen Sorterbereich zurücksetzen:
|
||||
A SorterReset // Ein Zyklus
|
||||
S Sync_BG3306.Dyn.Reset
|
||||
S Weiche_LP1.Dyn.Status.Reset
|
||||
S Weiche_LP2.Dyn.Status.Reset
|
||||
S Weiche_LP3.Dyn.Status.Reset
|
||||
S Weiche_LP4.Dyn.Status.Reset
|
||||
S Weiche_LP5.Dyn.Status.Reset
|
||||
S Weiche_LP6.Dyn.Status.Reset
|
||||
S Weiche_LP7.Dyn.Status.Reset
|
||||
S Weiche_LP8.Dyn.Status.Reset
|
||||
S Weiche_LP9.Dyn.Status.Reset
|
||||
S Weiche_LP10.Dyn.Status.Reset
|
||||
|
||||
|
||||
--- NW 8: Inkremente über Zahnrad-Sensor ---
|
||||
CALL FB "None" , (Ink_DB:=5483, B_Zaehlen:="BG3374", Antrieb_aktiv:="MA0064", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=?, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang)
|
||||
|
||||
A(
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang
|
||||
)
|
||||
AN ErrQuit
|
||||
S "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor
|
||||
|
||||
A(
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang
|
||||
)
|
||||
S ErrAnz
|
||||
|
||||
|
||||
--- NW 9: Trolley synchronisieren BG3306 ---
|
||||
// Teachen: Ref-Sensor ueber Sync-Sensor
|
||||
A "BG3306"
|
||||
AN Sync_BG3306.Dyn.Refpunkt_ok // Nur eimalige Auswertung
|
||||
= Sync_BG3306.B_RefPunkt // uebergabe fuer unten
|
||||
|
||||
A "MA0064"
|
||||
L S5T#500ms
|
||||
OffDelay "T543"
|
||||
A "T543"
|
||||
AN Sync_BG3306.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls
|
||||
O
|
||||
A "MA0064"
|
||||
A Sync_BG3306.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls
|
||||
= Antrieb
|
||||
|
||||
// Keine Hauptstrangdaten vorhanden ? (Fuer Sync-Pkt):
|
||||
L "LP_HS_oF".Datensortkopf.AnzahlEintraege
|
||||
L "LP_HS_mF".Datensortkopf.AnzahlEintraege
|
||||
+I
|
||||
L 0 // Daten vorhanden ?
|
||||
==I // Nein !
|
||||
= "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
|
||||
A "BG3306"
|
||||
L s5t#500ms // Da trotz Entprellung Doppel-Impulse
|
||||
OffDelay "T544"
|
||||
A "T544"
|
||||
= Sync_BG3306.B_BT_da
|
||||
|
||||
CALL FB "None" , (Sync_Nr:=3306, ErrQuit:=ErrQuit, B_BT_da:=?, B_RefPunkt:=?, B_TeachPunk:=?, Antrieb_aktiv:=Antrieb, Error:=DB708.DBW102, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, hStOk:=ErrAnz) // Teach-Sensor
|
||||
|
||||
A Sync_BG3306.Dyn.Error.Inkrementalgeber
|
||||
S "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor
|
||||
|
||||
// Keine Hauptstrangdaten vorhanden ?:
|
||||
L "LP_HS_oF".Datensortkopf.AnzahlEintraege
|
||||
L "LP_HS_mF".Datensortkopf.AnzahlEintraege
|
||||
+I
|
||||
L 0 // Daten vorhanden ?
|
||||
==I // Nein !
|
||||
= "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
|
||||
// Spezial, da Sorter-Antrieb über SorterRein-Sep geht!: (Sonst Antriebs-Stop wegen PS)
|
||||
AN "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
O "MB3305" // Neuer Sort-Trolley kommt
|
||||
O "BG3306"
|
||||
L s5t#20s
|
||||
OffDelay "T541"
|
||||
|
||||
A "T541" // Alle Sort-Trolleys sind ins Puffer ausgefahren
|
||||
S "DEPtoLP_Antriebe".MA0064.Stat.A_vor
|
||||
|
||||
|
||||
--- NW 10: Weiche 3320 / Leerpuffer LP1 ---
|
||||
CALL FB "None" , (Weichen_Nr:=1, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP1.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3320", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP1.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW104, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 11: Weiche 3317 / Leerpuffer LP2 ---
|
||||
CALL FB "None" , (Weichen_Nr:=2, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP2.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3317", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP2.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW106, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 12: Weiche 3316 / Leerpuffer LP3 ---
|
||||
CALL FB "None" , (Weichen_Nr:=3, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP3.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3316", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP3.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW108, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 13: Weiche 3315 / Leerpuffer LP4 ---
|
||||
CALL FB "None" , (Weichen_Nr:=4, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP4.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3315", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP4.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW110, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 14: Weiche 3314 / Leerpuffer LP5 ---
|
||||
CALL FB "None" , (Weichen_Nr:=5, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP5.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3314", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP5.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW112, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 15: Weiche 3313 / Leerpuffer LP6 ---
|
||||
CALL FB "None" , (Weichen_Nr:=6, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP6.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3313", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP6.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW114, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 16: Weiche 3312 / Leerpuffer LP7 ---
|
||||
CALL FB "None" , (Weichen_Nr:=7, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP7.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3312", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP7.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW116, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 17: Weiche 3311 / Leerpuffer LP8 ---
|
||||
CALL FB "None" , (Weichen_Nr:=8, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP8.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3311", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP8.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW118, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 18: Weiche 3310 / Leerpuffer LP9 ---
|
||||
CALL FB "None" , (Weichen_Nr:=9, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP9.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3310", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP9.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW120, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 19: Pseudo-Weiche / Leerpuffer LP10 ---
|
||||
CALL FB "None" , (Weichen_Nr:=10, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP10.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3307", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP10.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW122, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 20: Störungen anzeigen UH07 ---
|
||||
A ErrAnz
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 21: Ende ---
|
||||
BE
|
||||
FUNCTION_BLOCK "LP_Sorter"
|
||||
TITLE = Sorter Leerpuffer 1-10
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Sorter_MB3305 : "MSepSorterRein";
|
||||
Sync_BG3306 : "MStartSync";
|
||||
Weiche_LP1 : "MWeiche_Sorter";
|
||||
Weiche_LP2 : "MWeiche_Sorter";
|
||||
Weiche_LP3 : "MWeiche_Sorter";
|
||||
Weiche_LP4 : "MWeiche_Sorter";
|
||||
Weiche_LP5 : "MWeiche_Sorter";
|
||||
Weiche_LP6 : "MWeiche_Sorter";
|
||||
Weiche_LP7 : "MWeiche_Sorter";
|
||||
Weiche_LP8 : "MWeiche_Sorter";
|
||||
Weiche_LP9 : "MWeiche_Sorter";
|
||||
Weiche_LP10 : "MWeiche_Sorter";
|
||||
Impuls_BG3374 : "MImpulsGeber";
|
||||
Pseudo_IDX { S7_SetPoint := 'True'} : DInt; // Pseudo-Trolley-Nr. da kein Leser vor Sorter
|
||||
Ohne_PC_fahren { S7_SetPoint := 'True'} : Bool;
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
ErrQuit : Bool;
|
||||
ErrAnz : Bool;
|
||||
Antrieb : Bool;
|
||||
Stau : Bool;
|
||||
Start_Ok : Bool;
|
||||
SorterReset : Bool;
|
||||
Error_aktiv : Bool;
|
||||
Leer : Bool;
|
||||
Err_DW : DInt;
|
||||
Err_Bits : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Systemzeug
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
= #Sorter_MB3305.Dyn.Sk.Auto_akt;
|
||||
|
||||
UN "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
= #Sorter_MB3305.Dyn.Sk.Bereich_ok;
|
||||
|
||||
//Bereichshalt:
|
||||
CLR;//nicht verbaut
|
||||
R #Sorter_MB3305.Dyn.Sk.Bereich_ok;
|
||||
|
||||
//Sonderbetriebsarten Weichen:
|
||||
CLR;
|
||||
= #Weiche_LP1.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP2.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP3.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP4.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP5.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP6.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP7.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP8.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP9.Dyn.Status.Weichentest_aktiv;
|
||||
= #Weiche_LP10.Dyn.Status.Weichentest_aktiv;
|
||||
|
||||
U #Sync_BG3306.Dyn.Status.TeachModus_Aktiv;
|
||||
= #Weiche_LP1.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP2.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP3.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP4.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP5.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP6.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP7.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP8.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP9.Dyn.Status.TeachModus_aktiv;
|
||||
= #Weiche_LP10.Dyn.Status.TeachModus_aktiv;
|
||||
|
||||
CLR;
|
||||
= #Sorter_MB3305.Dyn.Error.Korrektur_Modus_aktiv;
|
||||
|
||||
L 5474 ;//DLSeps
|
||||
T "MW174";
|
||||
L 5478 ;//DLWeichen
|
||||
T "MW178";
|
||||
|
||||
//Nach neuen Daten suchen:
|
||||
U "1s-Impuls";
|
||||
= "Weiche_NewData";
|
||||
|
||||
NETWORK
|
||||
TITLE = Linien mit PLC_Ziel anfahren
|
||||
U #Ohne_PC_fahren;
|
||||
SPBN En03;
|
||||
|
||||
U "MB3121";
|
||||
O "MB3123";
|
||||
ZV "Z102";
|
||||
|
||||
L "Z102";
|
||||
L 1;
|
||||
<I;
|
||||
U(;
|
||||
L #Sorter_MB3305.Separator.Default_Ziel;
|
||||
L 0;//Bekannt ?
|
||||
>I;//Ja !
|
||||
);
|
||||
SPB En03;
|
||||
|
||||
SET;
|
||||
R "Z102";
|
||||
|
||||
L #Sorter_MB3305.Separator.Default_Ziel;
|
||||
L 0 ;//unbekannt ?
|
||||
==I;
|
||||
L 5030 ;//Beginn mit Ausfahrziel 1.Puffer
|
||||
SPB X399;
|
||||
|
||||
//Nächste Weiche suchen:
|
||||
L #Sorter_MB3305.Separator.Default_Ziel;
|
||||
T "MW200";
|
||||
|
||||
CALL "DatenOut"
|
||||
( SSDB := "MW178" ,
|
||||
SSDW := 0 ,
|
||||
PARA := WORD#16#0E00 , //Nach angegeben Datenbyte suchen (Abzweig-Ziel)
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M200.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
UN "M199.7" ;//Datensatz ist nicht vorhanden
|
||||
O "M208.0" ;//Letzte Weiche
|
||||
L 0;//Neubeginn
|
||||
SPB X400;
|
||||
|
||||
X398: CALL "DatenOut"
|
||||
( SSDB := "MW178" ,
|
||||
SSDW := 0 ,
|
||||
PARA := WORD#16#FF00 , //Nächsten Datensatz lesen
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M200.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
L "MW206";//Weichentyp
|
||||
L 178;//Sorterweiche ?
|
||||
<>I;//Nein!
|
||||
O "M199.2" ;//Ende erreicht
|
||||
L 0;
|
||||
SPB X400;
|
||||
|
||||
U "M208.5" ;//Weiche für PLC-Ziel disabled !
|
||||
SPB X398;
|
||||
|
||||
L "MW226";
|
||||
T #Sorter_MB3305.Separator.Default_Ziel;
|
||||
|
||||
SPA En03;
|
||||
|
||||
//1.Weiche checken:
|
||||
X399: T "MW200";
|
||||
|
||||
CALL "DatenOut"
|
||||
( SSDB := "MW178" ,
|
||||
SSDW := 0 ,
|
||||
PARA := WORD#16#0E00 , //Nach angegeben Datenbyte suchen (Abzweig-Ziel)
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M200.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
UN "M199.7" ;//Datensatz ist nicht vorhanden
|
||||
SPB En03;
|
||||
|
||||
U "M208.5" ;//Weiche für PLC-Ziel disabled !
|
||||
SPB X398;
|
||||
|
||||
L "MW226";
|
||||
X400: T #Sorter_MB3305.Separator.Default_Ziel;
|
||||
|
||||
En03: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störung vorhanden ?
|
||||
CALL "Err_vorhanden" //Störungsanzeige
|
||||
( Check_DB := 708 ,
|
||||
Anfangs_DW := DINT#100 ,
|
||||
Ende_DW := DINT#122 ,
|
||||
Stoerung := #Error_aktiv ,
|
||||
ErrDW := #Err_DW ,
|
||||
ErrBits := #Err_Bits
|
||||
);
|
||||
U #Error_aktiv ;//s.o.
|
||||
= #Error_aktiv ;//Sorter Lager Weichen-Störung (Sorter-Antrieb gestoppt!)
|
||||
|
||||
U "BG3306" ;//Verlassen-Sensor
|
||||
L S5T#250MS;
|
||||
SA "T540";
|
||||
|
||||
NETWORK
|
||||
TITLE = Störung quittieren UH07
|
||||
U "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Sorter-GesamtReset
|
||||
|
||||
//Sorter-Reset starten:
|
||||
U "DLP_OmniFahren".Schleuse_3305.Dyn.Status.Reset_aktiv;//Bei Schleusen-Reset -> Sorter mit resetten!
|
||||
UN "DLP_Sorter".Sorter_MB3305.Dyn.GesamtSorterReset_aktiv;
|
||||
S "DLP_Sorter".Sorter_MB3305.Dyn.GesamtSorterReset;
|
||||
|
||||
NETWORK
|
||||
TITLE = Separator 3305 vor Sorter
|
||||
L %DB708.DBW102 ;//Err beim Synchronisieren
|
||||
L 0;//Störung vorhanden ?
|
||||
==I;//Nein !
|
||||
UN #Sync_BG3306.Dyn.Stop;//Rein-Separator stoppen
|
||||
UN #Error_aktiv;//Sorter Batch Weichen-Störung (Sorter-Antrieb gestoppt!)
|
||||
UN #Sorter_MB3305.Dyn.GesamtSorterReset_aktiv;
|
||||
= #Start_Ok;
|
||||
|
||||
SET ;//Da Leiste im Sep und Zusatz-Zylinder im Separator -> BT steht sofort sauber im Sep
|
||||
S #Sorter_MB3305.Dyn.BT_beruhigt;//1. einfahrender BügelTräger ist im Sep
|
||||
|
||||
U "T540";
|
||||
= #Sorter_MB3305.B_AusSep;//Entprellung Verlassen-Sensor
|
||||
|
||||
//Triggern / Scanner-Auswertung über HW>VP_Omnifahren (FC128/27)
|
||||
//Ziel über Default-Ziel (HW>VP_Ziel_FC, FC181)
|
||||
|
||||
CALL #Sorter_MB3305
|
||||
( Separator_Nr := 3305 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_ImSep := "BG3305" ,
|
||||
B_Pinsensor := "BG3374" ,
|
||||
Start_Ok := #Start_Ok ,
|
||||
Antrieb_aktiv := "MA0064" ,
|
||||
Antrieb_plus_aktiv := "MA0064" ,
|
||||
Y_Sep_Auf := "DLP_Zylinder".Sorter_3305.Stat.Ast ,
|
||||
Sorter_Reset := #SorterReset ,
|
||||
Error := %DB708.DBW100 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_plus_start := "DEPtoLP_Antriebe".MA0064.Stat.A_vor ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
//Default-Ziel jeden Zyklus neu!:
|
||||
L 0;
|
||||
T #Sorter_MB3305.Separator.Default_Ziel;
|
||||
|
||||
NETWORK
|
||||
TITLE = Reset ist aktiv
|
||||
U #Sorter_MB3305.Dyn.GesamtSorterReset_aktiv;
|
||||
= "7_HMI_Err_UH07_OB".Sorter_MB3305.Reset_aktiv;
|
||||
|
||||
U #Sorter_MB3305.Dyn.GesamtSorterReset_aktiv;
|
||||
= #Weiche_LP1.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP2.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP3.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP4.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP5.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP6.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP7.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP8.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP9.Dyn.Ohne_VerklemmKontrolle;
|
||||
= #Weiche_LP10.Dyn.Ohne_VerklemmKontrolle;
|
||||
|
||||
//Diesen Sorterbereich zurücksetzen:
|
||||
U #SorterReset;//Ein Zyklus
|
||||
S #Sync_BG3306.Dyn.Reset;
|
||||
S #Weiche_LP1.Dyn.Status.Reset;
|
||||
S #Weiche_LP2.Dyn.Status.Reset;
|
||||
S #Weiche_LP3.Dyn.Status.Reset;
|
||||
S #Weiche_LP4.Dyn.Status.Reset;
|
||||
S #Weiche_LP5.Dyn.Status.Reset;
|
||||
S #Weiche_LP6.Dyn.Status.Reset;
|
||||
S #Weiche_LP7.Dyn.Status.Reset;
|
||||
S #Weiche_LP8.Dyn.Status.Reset;
|
||||
S #Weiche_LP9.Dyn.Status.Reset;
|
||||
S #Weiche_LP10.Dyn.Status.Reset;
|
||||
|
||||
NETWORK
|
||||
TITLE = Inkremente über Zahnrad-Sensor
|
||||
CALL #Impuls_BG3374
|
||||
( Ink_DB := 5483 ,
|
||||
B_Zaehlen := "BG3374" ,
|
||||
Antrieb_aktiv := "MA0064" ,
|
||||
Quit := #ErrQuit ,
|
||||
Err_Kein_Signal := "7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal ,
|
||||
Err_Signal_zu_lang := "7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang
|
||||
);
|
||||
|
||||
U(;
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal;
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang;
|
||||
);
|
||||
UN #ErrQuit;
|
||||
S "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor;
|
||||
|
||||
U(;
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal;
|
||||
O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang;
|
||||
);
|
||||
S #ErrAnz;
|
||||
|
||||
NETWORK
|
||||
TITLE = Trolley synchronisieren BG3306
|
||||
|
||||
//Teachen: Ref-Sensor ueber Sync-Sensor
|
||||
U "BG3306";
|
||||
UN #Sync_BG3306.Dyn.Refpunkt_ok;//Nur eimalige Auswertung
|
||||
= #Sync_BG3306.B_RefPunkt;//uebergabe fuer unten
|
||||
|
||||
U "MA0064";
|
||||
L S5T#500ms;
|
||||
SA "T543";
|
||||
U "T543";
|
||||
UN #Sync_BG3306.Dyn.Status.TeachModus_Aktiv;//sonst Probleme bei Doppelimpuls
|
||||
O;
|
||||
U "MA0064";
|
||||
U #Sync_BG3306.Dyn.Status.TeachModus_Aktiv;//sonst Probleme bei Doppelimpuls
|
||||
= #Antrieb;
|
||||
|
||||
//Keine Hauptstrangdaten vorhanden ? (Fuer Sync-Pkt):
|
||||
L "LP_HS_oF".Datensortkopf.AnzahlEintraege;
|
||||
L "LP_HS_mF".Datensortkopf.AnzahlEintraege;
|
||||
+I;
|
||||
L 0;//Daten vorhanden ?
|
||||
==I;//Nein !
|
||||
= "Hauptstrang_leer";//Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
|
||||
U "BG3306";
|
||||
L s5t#500ms;//Da trotz Entprellung Doppel-Impulse
|
||||
SA "T544";
|
||||
U "T544";
|
||||
= #Sync_BG3306.B_BT_da;
|
||||
|
||||
CALL #Sync_BG3306
|
||||
( Sync_Nr := 3306 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_TeachPunk := , //Teach-Sensor
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Error := %DB708.DBW102 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
U #Sync_BG3306.Dyn.Error.Inkrementalgeber;
|
||||
S "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor;
|
||||
|
||||
//Keine Hauptstrangdaten vorhanden ?:
|
||||
L "LP_HS_oF".Datensortkopf.AnzahlEintraege;
|
||||
L "LP_HS_mF".Datensortkopf.AnzahlEintraege;
|
||||
+I;
|
||||
L 0;//Daten vorhanden ?
|
||||
==I;//Nein !
|
||||
= "Hauptstrang_leer" ;//Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
|
||||
//Spezial, da Sorter-Antrieb über SorterRein-Sep geht!: (Sonst Antriebs-Stop wegen PS)
|
||||
UN "Hauptstrang_leer" ;//Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen
|
||||
O "MB3305" ;//Neuer Sort-Trolley kommt
|
||||
O "BG3306";
|
||||
L s5t#20s;
|
||||
SA "T541";
|
||||
|
||||
U "T541" ;//Alle Sort-Trolleys sind ins Puffer ausgefahren
|
||||
S "DEPtoLP_Antriebe".MA0064.Stat.A_vor;
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3320 / Leerpuffer LP1
|
||||
CALL #Weiche_LP1
|
||||
( Weichen_Nr := 1 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP1.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3320" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP1.Stat.Ast ,
|
||||
Error := %DB708.DBW104 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3317 / Leerpuffer LP2
|
||||
CALL #Weiche_LP2
|
||||
( Weichen_Nr := 2 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP2.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3317" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP2.Stat.Ast ,
|
||||
Error := %DB708.DBW106 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3316 / Leerpuffer LP3
|
||||
CALL #Weiche_LP3
|
||||
( Weichen_Nr := 3 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP3.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3316" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP3.Stat.Ast ,
|
||||
Error := %DB708.DBW108 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3315 / Leerpuffer LP4
|
||||
CALL #Weiche_LP4
|
||||
( Weichen_Nr := 4 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP4.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3315" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP4.Stat.Ast ,
|
||||
Error := %DB708.DBW110 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3314 / Leerpuffer LP5
|
||||
CALL #Weiche_LP5
|
||||
( Weichen_Nr := 5 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP5.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3314" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP5.Stat.Ast ,
|
||||
Error := %DB708.DBW112 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3313 / Leerpuffer LP6
|
||||
CALL #Weiche_LP6
|
||||
( Weichen_Nr := 6 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP6.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3313" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP6.Stat.Ast ,
|
||||
Error := %DB708.DBW114 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3312 / Leerpuffer LP7
|
||||
CALL #Weiche_LP7
|
||||
( Weichen_Nr := 7 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP7.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3312" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP7.Stat.Ast ,
|
||||
Error := %DB708.DBW116 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3311 / Leerpuffer LP8
|
||||
CALL #Weiche_LP8
|
||||
( Weichen_Nr := 8 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP8.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3311" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP8.Stat.Ast ,
|
||||
Error := %DB708.DBW118 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 3310 / Leerpuffer LP9
|
||||
CALL #Weiche_LP9
|
||||
( Weichen_Nr := 9 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP9.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3310" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP9.Stat.Ast ,
|
||||
Error := %DB708.DBW120 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Pseudo-Weiche / Leerpuffer LP10
|
||||
CALL #Weiche_LP10
|
||||
( Weichen_Nr := 10 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Stau_Ausfahrtbereich := "DLP_Sensoren".Stau_LP10.Stat.B_Akt ,
|
||||
B_Ausfahrt := "BG3307" ,
|
||||
Antrieb_aktiv := #Antrieb ,
|
||||
Y_Weiche_abzweigen := "DLP_Zylinder".Weiche_LP10.Stat.Ast ,
|
||||
Error := %DB708.DBW122 ,
|
||||
Antrieb_start := "DEPtoLP_Antriebe".MA0064.Stat.A_start ,
|
||||
Antrieb_stoppen := "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UH07
|
||||
U #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,146 +1,244 @@
|
||||
=== FB 6199: LPtoHW_Antriebe [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
MA0065 : "MAntrieb_PowerSave"
|
||||
MA0066 : "MAntrieb_PowerSave"
|
||||
MA0264 : "MAntrieb_PowerSave"
|
||||
MA0265 : "MAntrieb_PowerSave"
|
||||
MA0266 : "MAntrieb_PowerSave"
|
||||
MA0267 : "MAntrieb_PowerSave"
|
||||
MA0270 : "MAntrieb_PowerSave"
|
||||
MA0202 : "MAntrieb_PowerSave"
|
||||
MA0203 : "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:
|
||||
FUNCTION_BLOCK "LPtoHW_Antriebe"
|
||||
TITLE = Antriebe UH07
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
MA0065 : "MAntrieb_PowerSave";
|
||||
MA0066 : "MAntrieb_PowerSave";
|
||||
MA0264 : "MAntrieb_PowerSave";
|
||||
MA0265 : "MAntrieb_PowerSave";
|
||||
MA0266 : "MAntrieb_PowerSave";
|
||||
MA0267 : "MAntrieb_PowerSave";
|
||||
MA0270 : "MAntrieb_PowerSave";
|
||||
MA0202 : "MAntrieb_PowerSave";
|
||||
MA0203 : "MAntrieb_PowerSave";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UH07/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
|
||||
A "T197"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= Quit
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: 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:="7_HMI_Err_UH07_OB".QErr.MA0065, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UH07/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
U "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
U "T197";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
U "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0065
|
||||
CALL #MA0065
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0065" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0065" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0065
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 3: MA0066 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0066", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0066", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0066, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0066
|
||||
CALL #MA0066
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0066" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0066" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0066
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC073/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 4: Übergabe des Bereichstatus System UC073/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
U "DOutbound_Bereich".A01_UC073.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
A "DOutbound_Bereich".A01_UC073.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
U "T193";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
A "T193"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
U "DOutbound_Bereich".A01_UC073.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
A "DOutbound_Bereich".A01_UC073.StOk_aktiv
|
||||
= Quit
|
||||
NETWORK
|
||||
TITLE = MA0264
|
||||
CALL #MA0264
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0264" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0264" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0264
|
||||
);
|
||||
|
||||
|
||||
--- NW 5: MA0264 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0264", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0264", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0264, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0265
|
||||
CALL #MA0265
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0265" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
T_Nachlauf := 90 ,
|
||||
Antriebvor := "MA0265" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0265
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 6: MA0265 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0265", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=90, Antriebrueck:=?, Antriebvor:="MA0265", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0265, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0266
|
||||
CALL #MA0266
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0266" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0266" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0266
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 7: MA0266 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0266", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0266", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0266, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0267
|
||||
CALL #MA0267
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0267" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0267" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0267
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 8: MA0267 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0267", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0267", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0267, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = MA0270
|
||||
CALL #MA0270
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0270" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0270" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0270
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC072/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 9: MA0270 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0270", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0270", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0270, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
CLR;
|
||||
= #Hand;
|
||||
|
||||
U(;
|
||||
O "DOutbound_Bereich".A01_UC072.BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7201.Area_Stop;
|
||||
O "DOutbound_Bereich".A01_UZ7202.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
= #BereichErr;
|
||||
|
||||
U "T192";
|
||||
= #QKontroll;
|
||||
= #FuKontroll;
|
||||
|
||||
U "DOutbound_Bereich".A01_UC072.StOk_aktiv;
|
||||
= #Quit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0202
|
||||
CALL #MA0202
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0202" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0202" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0202
|
||||
);
|
||||
|
||||
|
||||
|
||||
--- NW 10: Übergabe des Bereichstatus System UC072/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
CLR
|
||||
= Hand
|
||||
|
||||
A(
|
||||
O "DOutbound_Bereich".A01_UC072.BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7201.Area_Stop
|
||||
O "DOutbound_Bereich".A01_UZ7202.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
= BereichErr
|
||||
|
||||
A "T192"
|
||||
= QKontroll
|
||||
= FuKontroll
|
||||
|
||||
A "DOutbound_Bereich".A01_UC072.StOk_aktiv
|
||||
= Quit
|
||||
NETWORK
|
||||
TITLE = MA0203
|
||||
CALL #MA0203
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := #Hand ,
|
||||
BereichErr := #BereichErr ,
|
||||
Q := "FC0203" ,
|
||||
Ptc := TRUE ,
|
||||
QKontroll := #QKontroll ,
|
||||
ErrQuit := #Quit ,
|
||||
Antriebvor := "MA0203" ,
|
||||
QErr := "7_HMI_Err_UH07_OB".QErr.MA0203
|
||||
);
|
||||
|
||||
|
||||
--- NW 11: MA0202 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0202", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0202", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0202, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
|
||||
--- NW 12: MA0203 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0203", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0203", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0203, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?)
|
||||
|
||||
|
||||
|
||||
--- NW 13: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,145 +1,278 @@
|
||||
=== FB 6190: LPtoHW_Sensoren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
An_BG3323 : "MSensoren" // Trolley am Sensor BG3323
|
||||
Sack_BG3324 : "MSensoren" // Sack erkannt
|
||||
Stau_BG3343 : "MSensoren" // Stau am Sensor Einfahrt MA0065
|
||||
An_BG3343 : "MSensoren" // Stau am Sensor Einfahrt MA0065
|
||||
Stau_BG3344 : "MSensoren" // Stau am Sensor Einfahrt MA0065
|
||||
An_BG3344 : "MSensoren" // Stau am Sensor Einfahrt MA0065
|
||||
Stau_BG3326 : "MSensoren" // Stau am Sensor Einfahrt MA0066
|
||||
Stau_BG4220 : "MSensoren" // Stau am Sensor Einfahrt MA0264
|
||||
Sack_BG4222 : "MSensoren" // Sack erkannt
|
||||
Stau_BG4224 : "MSensoren" // Stau am Sensor Einfahrt MA0265
|
||||
Stau_BG4226 : "MSensoren" // Stau am Sensor Einfahrt MA0266
|
||||
Stau_BG4231 : "MSensoren" // Stau am Sensor Einfahrt MA0267
|
||||
Stau_BG4233 : "MSensoren" // Stau am Sensor Einfahrt MA0270
|
||||
Stau_BG4234 : "MSensoren" // Stau am Sensor Mitte MA0270
|
||||
Stau_BG3720 : "MSensoren" // Stau am Sensor hinter BST2
|
||||
Stau_BG3721 : "MSensoren" // Stau am Sensor Einfahrt MA0203
|
||||
Stau_BG3723 : "MSensoren" // Stau am Sensor Ausfahrt MB3722
|
||||
Fährt_zu_UH06 : "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:
|
||||
FUNCTION_BLOCK "LPtoHW_Sensoren"
|
||||
TITLE = Sensoren Outbound: LP > HW
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
An_BG3323 : "MSensoren"; // Trolley am Sensor BG3323
|
||||
Sack_BG3324 : "MSensoren"; // Sack erkannt
|
||||
Stau_BG3343 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
|
||||
An_BG3343 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
|
||||
Stau_BG3344 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
|
||||
An_BG3344 : "MSensoren"; // Stau am Sensor Einfahrt MA0065
|
||||
Stau_BG3326 : "MSensoren"; // Stau am Sensor Einfahrt MA0066
|
||||
Stau_BG4220 : "MSensoren"; // Stau am Sensor Einfahrt MA0264
|
||||
Sack_BG4222 : "MSensoren"; // Sack erkannt
|
||||
Stau_BG4224 : "MSensoren"; // Stau am Sensor Einfahrt MA0265
|
||||
Stau_BG4226 : "MSensoren"; // Stau am Sensor Einfahrt MA0266
|
||||
Stau_BG4231 : "MSensoren"; // Stau am Sensor Einfahrt MA0267
|
||||
Stau_BG4233 : "MSensoren"; // Stau am Sensor Einfahrt MA0270
|
||||
Stau_BG4234 : "MSensoren"; // Stau am Sensor Mitte MA0270
|
||||
Stau_BG3720 : "MSensoren"; // Stau am Sensor hinter BST2
|
||||
Stau_BG3721 : "MSensoren"; // Stau am Sensor Einfahrt MA0203
|
||||
Stau_BG3723 : "MSensoren"; // Stau am Sensor Ausfahrt MB3722
|
||||
Fährt_zu_UH06 : "MSensoren";
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Sensoren entprellen ---
|
||||
A "BG3323"
|
||||
AN "MB3323"
|
||||
= ESensor
|
||||
|
||||
CALL FB "None" , (ESensor:=ESensor, T_Ein:=1, T_Aus:=300, tein_aktiv:=1, taus_aktiv:=1) // Falls Trolley entnommen wurde
|
||||
|
||||
A "MB3323" // Beim Öffnen löschen
|
||||
A "MA0065"
|
||||
R "DLPtoHW_Sensoren".An_BG3323.Stat.B_Akt
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Sensoren entprellen ---
|
||||
AN "MB3323" // Alt-Trolley noch beim Ausfahren
|
||||
A(
|
||||
O "MA0065"
|
||||
O "BG3323"
|
||||
)
|
||||
= Aktiv
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Trolley in Schleuse 3323 erkannt (Beladung)
|
||||
//Sensoren entprellen
|
||||
U "BG3323";
|
||||
UN "MB3323";
|
||||
= #ESensor;
|
||||
|
||||
CALL FB "None" , (ESensor:="BG3324", T_Ein:=10, T_Aus:=0, tein_aktiv:=Aktiv, taus_aktiv:=1)
|
||||
CALL #An_BG3323
|
||||
( ESensor := #ESensor ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 300 , //Falls Trolley entnommen wurde
|
||||
tein_aktiv := 1 ,
|
||||
taus_aktiv := 1
|
||||
);
|
||||
|
||||
U "MB3323";//Beim Öffnen löschen
|
||||
U "MA0065";
|
||||
R "DLPtoHW_Sensoren".An_BG3323.Stat.B_Akt;
|
||||
|
||||
--- NW 3: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3343", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Sack in Schleuse 3323 erkannt (Beladung)
|
||||
//Sensoren entprellen
|
||||
UN "MB3323" ;//Alt-Trolley noch beim Ausfahren
|
||||
U(;
|
||||
O "MA0065";
|
||||
O "BG3323";
|
||||
);
|
||||
= #Aktiv;
|
||||
|
||||
CALL #Sack_BG3324
|
||||
( ESensor := "BG3324" ,
|
||||
T_Ein := 10 ,
|
||||
T_Aus := 0 ,
|
||||
tein_aktiv := #Aktiv ,
|
||||
taus_aktiv := 1
|
||||
);
|
||||
|
||||
--- NW 4: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3343", T_Ein:=1, T_Aus:=200, tein_aktiv:=TRUE, taus_aktiv:="MA0065")
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor nach Beladung
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3343
|
||||
( ESensor := "BG3343" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Trolley am Sensor nach Beladung
|
||||
//Sensoren entprellen
|
||||
CALL #An_BG3343
|
||||
( ESensor := "BG3343" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 200 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := "MA0065"
|
||||
);
|
||||
|
||||
--- NW 5: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3344", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor nach Beladung
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3344
|
||||
( ESensor := "BG3344" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Trolley am Sensor nach Beladung
|
||||
//Sensoren entprellen
|
||||
CALL #An_BG3344
|
||||
( ESensor := "BG3344" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 200 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := "MA0065"
|
||||
);
|
||||
|
||||
--- NW 6: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3344", T_Ein:=1, T_Aus:=200, tein_aktiv:=TRUE, taus_aktiv:="MA0065")
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0066
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3326
|
||||
( ESensor := "BG3326" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0264
|
||||
//Sensoren entprellen
|
||||
UN "BG4221";
|
||||
= #Aktiv;
|
||||
|
||||
--- NW 7: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3326", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
CALL #Stau_BG4220
|
||||
( ESensor := "BG4220" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := #Aktiv //Trolley wieder aus Schleuse 4221
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Sack in Schleuse 4221 erkannt (Vor ByPass zu VP)
|
||||
//Sensoren entprellen
|
||||
UN "MB4221";//Alt-Trolley noch beim Ausfahren
|
||||
U(;
|
||||
O "MA0264";
|
||||
O "BG4221";
|
||||
);
|
||||
= #Aktiv;
|
||||
|
||||
--- NW 8: Sensoren entprellen ---
|
||||
AN "BG4221"
|
||||
= Aktiv
|
||||
CALL #Sack_BG4222
|
||||
( ESensor := "BG4222" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := #Aktiv ,
|
||||
taus_aktiv := "MB4221"
|
||||
);
|
||||
|
||||
CALL FB "None" , (ESensor:="BG4220", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=Aktiv) // Trolley wieder aus Schleuse 4221
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0265
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4224
|
||||
( ESensor := "BG4224" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0266
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4226
|
||||
( ESensor := "BG4226" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 9: Sensoren entprellen ---
|
||||
AN "MB4221" // Alt-Trolley noch beim Ausfahren
|
||||
A(
|
||||
O "MA0264"
|
||||
O "BG4221"
|
||||
)
|
||||
= Aktiv
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0267
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4231
|
||||
( ESensor := "BG4231" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
CALL FB "None" , (ESensor:="BG4222", T_Ein:=1, T_Aus:=11, tein_aktiv:=Aktiv, taus_aktiv:="MB4221")
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA021
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4233
|
||||
( ESensor := "BG4233" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Mitte MA021
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG4234
|
||||
( ESensor := "BG4234" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 10: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4224", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor hinter BST2
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3720
|
||||
( ESensor := "BG3720" ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 30 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Einfahrt MA0203
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3721
|
||||
( ESensor := "BG3721" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
--- NW 11: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4226", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Stau am Sensor Ausfahrt MB3722
|
||||
//Sensoren entprellen
|
||||
CALL #Stau_BG3723
|
||||
( ESensor := "BG3723" ,
|
||||
T_Ein := 80 ,
|
||||
T_Aus := 11 ,
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := TRUE
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Fährt zu UH06
|
||||
//Sensoren entprellen
|
||||
U "MB3722";
|
||||
O "BG3723";
|
||||
= #ESensor;
|
||||
|
||||
--- NW 12: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4231", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
U "MA0203";
|
||||
U "DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv;
|
||||
= #Aktiv;
|
||||
|
||||
CALL #Fährt_zu_UH06
|
||||
( ESensor := #ESensor ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 300 , //30s Nachlauf
|
||||
tein_aktiv := TRUE ,
|
||||
taus_aktiv := #Aktiv
|
||||
);
|
||||
|
||||
--- NW 13: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4233", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- NW 14: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG4234", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 15: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3720", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 16: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3721", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 17: Sensoren entprellen ---
|
||||
CALL FB "None" , (ESensor:="BG3723", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE)
|
||||
|
||||
|
||||
--- NW 18: Sensoren entprellen ---
|
||||
A "MB3722"
|
||||
O "BG3723"
|
||||
= ESensor
|
||||
|
||||
A "MA0203"
|
||||
A "DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv
|
||||
= Aktiv
|
||||
|
||||
CALL FB "None" , (ESensor:=ESensor, T_Ein:=1, T_Aus:=300, tein_aktiv:=TRUE, taus_aktiv:=Aktiv) // 30s Nachlauf
|
||||
|
||||
|
||||
--- NW 19: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,102 +1,169 @@
|
||||
=== FB 6192: LPtoHW_Zylinder [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_3342 : "MZylinder" //
|
||||
Schleuse_3323 : "MZylinder" //
|
||||
Schleuse_3345 : "MZylinder" //
|
||||
Schleuse_3325 : "MZylinder" //
|
||||
Schleuse_4221 : "MZylinder"
|
||||
Weiche_4223 : "MZylinder" //
|
||||
Schleuse_4227 : "MZylinder" //
|
||||
Schleuse_4235 : "MZylinder" //
|
||||
Schleuse_3722 : "MZylinder" //
|
||||
Stopper_3324 : "MZylinder" //
|
||||
Temp:
|
||||
Auto : Bool // Automatik ist aktiv
|
||||
Hand : Bool // Hand ist aktiv
|
||||
ZylAst : Bool // Zylinder ansteuern
|
||||
Constant:
|
||||
FUNCTION_BLOCK "LPtoHW_Zylinder"
|
||||
TITLE = Zylinder Outbound Leerpuffer > Highway
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_3342 : "MZylinder"; //
|
||||
Schleuse_3323 : "MZylinder"; //
|
||||
Schleuse_3345 : "MZylinder"; //
|
||||
Schleuse_3325 : "MZylinder"; //
|
||||
Schleuse_4221 : "MZylinder";
|
||||
Weiche_4223 : "MZylinder"; //
|
||||
Schleuse_4227 : "MZylinder"; //
|
||||
Schleuse_4235 : "MZylinder"; //
|
||||
Schleuse_3722 : "MZylinder"; //
|
||||
Stopper_3324 : "MZylinder"; //
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Übergabe des Bereichstatus System UH07/A01 ---
|
||||
A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
A "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next // Zylinder-Stellung nicht mehr ändern
|
||||
VAR_TEMP
|
||||
Auto : Bool; // Automatik ist aktiv
|
||||
Hand : Bool; // Hand ist aktiv
|
||||
ZylAst : Bool; // Zylinder ansteuern
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse_3342 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3342", ZylGst:=?)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UH07/A01
|
||||
U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
U "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
--- NW 3: Schleuse_3323 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3323", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_3342
|
||||
CALL #Schleuse_3342
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3342"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_3323
|
||||
CALL #Schleuse_3323
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3323"
|
||||
);
|
||||
|
||||
--- NW 4: Schleuse_3345 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3345", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_3345
|
||||
CALL #Schleuse_3345
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3345"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_3325
|
||||
CALL #Schleuse_3325
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3325"
|
||||
);
|
||||
|
||||
--- NW 5: Schleuse_3325 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3325", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Stopper 3324
|
||||
CALL #Stopper_3324
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3324"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC073/A01
|
||||
Next: U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 6: Stopper 3324 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3324", ZylGst:=?)
|
||||
U "DOutbound_Bereich".A01_UC073.BereichErr;
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next1 ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4221
|
||||
CALL #Schleuse_4221
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4221"
|
||||
);
|
||||
|
||||
--- NW 7: Übergabe des Bereichstatus System UC073/A01 ---
|
||||
Next: A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
NETWORK
|
||||
TITLE = Weiche_4223
|
||||
CALL #Weiche_4223
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4223"
|
||||
);
|
||||
|
||||
A "DOutbound_Bereich".A01_UC073.BereichErr
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next1 // Zylinder-Stellung nicht mehr ändern
|
||||
U "MB4223";
|
||||
= "MB4210";
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse_4227
|
||||
CALL #Schleuse_4227
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4227"
|
||||
);
|
||||
|
||||
--- NW 8: Schleuse_4221 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4221", ZylGst:=?)
|
||||
NETWORK
|
||||
TITLE = Schleuse_4235
|
||||
CALL #Schleuse_4235
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB4235"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Übergabe des Bereichstatus System UC072/A01
|
||||
Next1: U "DOutbound_Bereich".A01_UH07.Automatik;
|
||||
UN "DOutbound_Bereich".A01_UH07.Handbetrieb;
|
||||
= #Auto;
|
||||
|
||||
--- NW 9: Weiche_4223 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4223", ZylGst:=?)
|
||||
U(;
|
||||
O "DOutbound_Bereich".A01_UC072.BereichErr;
|
||||
O "DOutbound_Bereich".A01_UZ7201.Area_Stop;
|
||||
O "DOutbound_Bereich".A01_UZ7202.Area_Stop;
|
||||
);
|
||||
UN "SGes".Simulation_ohne_HW_aktiv;
|
||||
SPB Next2 ;//Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
A "MB4223"
|
||||
= "MB4210"
|
||||
NETWORK
|
||||
TITLE = Schleuse_3722
|
||||
CALL #Schleuse_3722
|
||||
( Automatik := #Auto ,
|
||||
Handbetrieb := FALSE ,
|
||||
T_Ast := 0 ,
|
||||
T_Gst := 5 ,
|
||||
ZylAst := "MB3722"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
Next2: BE;
|
||||
|
||||
--- NW 10: Schleuse_4227 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4227", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 11: Schleuse_4235 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4235", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 12: Übergabe des Bereichstatus System UC072/A01 ---
|
||||
Next1: A "DOutbound_Bereich".A01_UH07.Automatik
|
||||
AN "DOutbound_Bereich".A01_UH07.Handbetrieb
|
||||
= Auto
|
||||
|
||||
A(
|
||||
O "DOutbound_Bereich".A01_UC072.BereichErr
|
||||
O "DOutbound_Bereich".A01_UZ7201.Area_Stop
|
||||
O "DOutbound_Bereich".A01_UZ7202.Area_Stop
|
||||
)
|
||||
AN "SGes".Simulation_ohne_HW_aktiv
|
||||
JC Next2 // Zylinder-Stellung nicht mehr ändern
|
||||
|
||||
|
||||
--- NW 13: Schleuse_3722 ---
|
||||
CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3722", ZylGst:=?)
|
||||
|
||||
|
||||
--- NW 14: Ende ---
|
||||
Next2: BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
=== FC 6100: LPtoHW_Bereich [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "LPtoHW_Bereich" : Void
|
||||
TITLE = Bereich Outbound: LP > HW
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Baustein-Aufrufe ---
|
||||
CALL FB "LPtoHW_Sensoren" ,
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Baustein-Aufrufe
|
||||
CALL "LPtoHW_Sensoren", "DLPtoHW_Sensoren";
|
||||
|
||||
CALL FB "LPtoHW_OmniFahren" ,
|
||||
CALL "LPtoHW_OmniFahren", "DLPtoHW_OmniFahren";
|
||||
|
||||
CALL FB "LPtoHW_Zylinder" ,
|
||||
CALL "LPtoHW_Zylinder", "DLPtoHW_Zylinder";
|
||||
|
||||
CALL FB "LPtoHW_Antriebe" ,
|
||||
CALL "LPtoHW_Antriebe", "DLPtoHW_Antriebe";
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+96
-71
@@ -1,96 +1,121 @@
|
||||
=== FC 6182: LPtoHW_Draussen_FC [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "LPtoHW_Draussen_FC" : Void
|
||||
TITLE = Draussen-FC: LP>HW
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
SET // Rückmeldungen erst mal resetten
|
||||
R "M180.6" // Weiterfahrt von Ziel-FC erlaubt
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3323 (Trolley-Beladung): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 3323 ;//Aufruf von Schleuse 3323 ?
|
||||
<>I;//Nein!
|
||||
SPB X3323E;
|
||||
|
||||
--- NW 2: Schleuse 3323 (Trolley-Beladung): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 3323 // Aufruf von Schleuse 3323 ?
|
||||
<>I // Nein!
|
||||
JC X3323E
|
||||
//Evtl. erkannten Sack löschen:
|
||||
SET;
|
||||
R "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt;
|
||||
|
||||
// Evtl. erkannten Sack löschen:
|
||||
SET
|
||||
R "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt
|
||||
//Trolleydaten ändern:
|
||||
UN "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
SPB SackTrolley ;//Sack-Trolleydaten erzeugen
|
||||
|
||||
// Trolleydaten ändern:
|
||||
AN "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
JC SackTrolley // Sack-Trolleydaten erzeugen
|
||||
//Leer-Trolley für VP-Daten:
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#B000 , //Vollpuffer
|
||||
ShopGroup := DINT#-1 //ShopGroup = -1 bei Leertrolly für Vollpuffer!
|
||||
);
|
||||
|
||||
// Leer-Trolley für VP-Daten:
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#-1) // Vollpuffer | ShopGroup = -1 bei Leertrolly für Vollpuffer!
|
||||
//Standort übermitteln:
|
||||
CALL "Trolley_DL_Neue_Pos"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse ,
|
||||
Position := 16#7108 , //Leser 7108
|
||||
ShopGroup := Dint#0 ,
|
||||
Err := "M199.0"
|
||||
);
|
||||
|
||||
// Standort übermitteln:
|
||||
CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Position:=16#7108, ShopGroup:=Dint#0, Err:="M199.0") // Leser 7108
|
||||
L "DLeerPufferStrecken".DurchfahrModus.RestTrolleys;
|
||||
+ -1;
|
||||
T "DLeerPufferStrecken".DurchfahrModus.RestTrolleys;
|
||||
|
||||
L "DLeerPufferStrecken".DurchfahrModus.RestTrolleys
|
||||
+ -1
|
||||
T "DLeerPufferStrecken".DurchfahrModus.RestTrolleys
|
||||
L 0;//Noch Rest-Trolleys vorhanden ?
|
||||
>I;//Ja!
|
||||
BEB;
|
||||
|
||||
L 0 // Noch Rest-Trolleys vorhanden ?
|
||||
>I // Ja!
|
||||
BEC
|
||||
SET;
|
||||
R "DLeerPufferStrecken".DurchfahrModus.Aktiv;//Erst mal beenden
|
||||
|
||||
SET
|
||||
R "DLeerPufferStrecken".DurchfahrModus.Aktiv // Erst mal beenden
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
SackTrolley: CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#AAAA , //AMR-Bereich
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
SackTrolley: CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Endziel:=16#AAAA, ShopGroup:=DINT#0) // AMR-Bereich
|
||||
//Standort übermitteln:
|
||||
CALL "Trolley_DL_Neue_Pos"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse ,
|
||||
Position := 16#7108 , //Leser 7108
|
||||
ShopGroup := Dint#0 ,
|
||||
Err := "M199.0"
|
||||
);
|
||||
|
||||
// Standort übermitteln:
|
||||
CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Position:=16#7108, ShopGroup:=Dint#0, Err:="M199.0") // Leser 7108
|
||||
//Umschalten auf Durchfahr-Modus:
|
||||
U "DLeerPufferStrecken".DurchfahrModus.Anmelden;
|
||||
R "DLeerPufferStrecken".DurchfahrModus.Anmelden;
|
||||
S "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
|
||||
// Umschalten auf Durchfahr-Modus:
|
||||
A "DLeerPufferStrecken".DurchfahrModus.Anmelden
|
||||
R "DLeerPufferStrecken".DurchfahrModus.Anmelden
|
||||
S "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
X3323E: NOP 0;
|
||||
|
||||
X3323E: NOP 0
|
||||
NETWORK
|
||||
TITLE = Schleuse 4221 (Vor ByPass zum VP): Ausgefahren ?
|
||||
L "MW190";
|
||||
L 4221 ;//Aufruf von Schleuse 4221?
|
||||
<>I;//Nein!
|
||||
SPB X4221E;
|
||||
|
||||
//Evtl. erkannten Sack löschen:
|
||||
SET;
|
||||
R "DLPtoHW_Sensoren".Sack_BG4222.Stat.B_Akt;
|
||||
|
||||
--- NW 3: Schleuse 4221 (Vor ByPass zum VP): Ausgefahren ? ---
|
||||
L "MW190"
|
||||
L 4221 // Aufruf von Schleuse 4221?
|
||||
<>I // Nein!
|
||||
JC X4221E
|
||||
L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Weichen_Ziel;
|
||||
L 16#4224 ;//Gerade ? Also zum AMR-Bereich?
|
||||
==I ;//Ja !
|
||||
SPBN X4221;//Negierter Sprung
|
||||
|
||||
// Evtl. erkannten Sack löschen:
|
||||
SET
|
||||
R "DLPtoHW_Sensoren".Sack_BG4222.Stat.B_Akt
|
||||
//Trolley fährt zum AMR:
|
||||
//Trolleydaten in DB1000 löschen, da zum AMR fährt und danach kein Leser mehr!
|
||||
CALL "Trolleydaten_löschen"
|
||||
( Gesamt_Trolley_DL := 1000 ,
|
||||
TrolleyID := "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse
|
||||
);
|
||||
|
||||
L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Weichen_Ziel
|
||||
L 16#4224 // Gerade ? Also zum AMR-Bereich?
|
||||
==I // Ja !
|
||||
JCN X4221 // Negierter Sprung
|
||||
BEA;
|
||||
|
||||
// Trolley fährt zum AMR:
|
||||
// Trolleydaten in DB1000 löschen, da zum AMR fährt und danach kein Leser mehr!
|
||||
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse)
|
||||
X4221: NOP 0;
|
||||
//Trolley fährt zu VP:
|
||||
//Bei Partner (Schleuse 4207) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0;
|
||||
T "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Sk.Akt_Schritt;
|
||||
|
||||
BEU
|
||||
X4221E: NOP 0;
|
||||
|
||||
X4221: NOP 0
|
||||
// Trolley fährt zu VP:
|
||||
// Bei Partner (Schleuse 4207) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf)
|
||||
L 0
|
||||
T "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Sk.Akt_Schritt
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
X4221E: NOP 0
|
||||
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+67
-53
@@ -1,74 +1,88 @@
|
||||
=== FC 6180: LPtoHW_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"
|
||||
FUNCTION "LPtoHW_Leser_FC" : Void
|
||||
TITLE = Leser-FC: LP > HW
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_TEMP
|
||||
Zielebene : Word;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 3323: (Trolley-Beladung) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 3323 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X3323E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y3323
|
||||
//Keine
|
||||
L 0;//Evtl. Zwischenziel (MW196)
|
||||
T "MW196";
|
||||
|
||||
BEU
|
||||
NETWORK
|
||||
TITLE = Schleuse 3323: (Trolley-Beladung)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 3323 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X3323E;
|
||||
|
||||
Y3323: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y3323;
|
||||
|
||||
// Daten in Datenbank erzeugen:
|
||||
L "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse
|
||||
L DINT#0 // ID bekannt?
|
||||
==D // Nein
|
||||
BEC
|
||||
BEA;
|
||||
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DLPtoHW_OmniFahren".Schleuse_3323.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Endziel:=16#A000, ShopGroup:=DINT#0) // Leerpuffer-Bereich
|
||||
Y3323: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
BEU
|
||||
//Daten in Datenbank erzeugen:
|
||||
L "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse;
|
||||
L DINT#0 ;//ID bekannt?
|
||||
==D;//Nein
|
||||
BEB;
|
||||
|
||||
X3323E: NOP 0
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DLPtoHW_OmniFahren".Schleuse_3323.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#A000 , //Leerpuffer-Bereich
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
BEA;
|
||||
|
||||
--- NW 3: Schleuse 4221: (Vor ByPass zurück zum VP) ---
|
||||
L "MW190" // Schleusen-Nr.
|
||||
L 4221 // Aufruf von Schleuse ?
|
||||
<>I // Nein!
|
||||
JC X4221E
|
||||
X3323E: NOP 0;
|
||||
|
||||
AN "M180.0" // Lesefehler
|
||||
JC Y4221
|
||||
NETWORK
|
||||
TITLE = Schleuse 4221: (Vor ByPass zurück zum VP)
|
||||
L "MW190" ;//Schleusen-Nr.
|
||||
L 4221 ;//Aufruf von Schleuse ?
|
||||
<>I;//Nein!
|
||||
SPB X4221E;
|
||||
|
||||
BEU
|
||||
UN "M180.0";//Lesefehler
|
||||
SPB Y4221;
|
||||
|
||||
Y4221: AN "M180.1" // unbekannt in TrolleysDL
|
||||
BEC
|
||||
BEA;
|
||||
|
||||
// Daten in Datenbank erzeugen:
|
||||
L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse
|
||||
L DINT#0 // ID bekannt?
|
||||
==D // Nein
|
||||
BEC
|
||||
Y4221: UN "M180.1" ;//unbekannt in TrolleysDL
|
||||
BEB;
|
||||
|
||||
CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DLPtoHW_OmniFahren".Schleuse_4221.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse, Endziel:=16#AAAA, ShopGroup:=DINT#0) // AMR-Bereich-Bereich
|
||||
//Daten in Datenbank erzeugen:
|
||||
L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse;
|
||||
L DINT#0 ;//ID bekannt?
|
||||
==D;//Nein
|
||||
BEB;
|
||||
|
||||
BEU
|
||||
CALL "Trolleydaten_neu_anlegen"
|
||||
( Gesamt_Trolley_DL := "DLPtoHW_OmniFahren".Schleuse_4221.Schleuse.Gesamt_Trolley_DL ,
|
||||
TrolleyID := "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse ,
|
||||
Endziel := 16#AAAA , //AMR-Bereich-Bereich
|
||||
ShopGroup := DINT#0
|
||||
);
|
||||
|
||||
X4221E: NOP 0
|
||||
BEA;
|
||||
|
||||
X4221E: NOP 0;
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
+599
-352
@@ -1,353 +1,600 @@
|
||||
=== FB 6128: LPtoHW_OmniFahren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Schleuse_3342 : "MHMOmniSchleuse"
|
||||
Schleuse_3323 : "MHMOmniSchleuse"
|
||||
Schleuse_3325 : "MHMOmniSchleuse_Plus"
|
||||
Bereich_4236 : "MHMOmniBereich_Plus"
|
||||
Schleuse_4221 : "MHMOmniSchleuse_Plus"
|
||||
Weiche_4223 : "MHMOmniWeiche_Plus"
|
||||
Schleuse_4227 : "MHMOmniSchleuse"
|
||||
Bereich_4232 : "MHMOmniBereich_Plus"
|
||||
Schleuse_4235 : "MHMOmniSchleuse"
|
||||
Bereich_3732 : "MHMOmniBereich_Plus"
|
||||
Schleuse_3722 : "MHMOmniSchleuse_Plus"
|
||||
Schleuse_3345 : "MHMOmniSchleuse"
|
||||
Übergang_4225 : "MHMÜbergang_ohne_Schleuse"
|
||||
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_vor : Bool
|
||||
Antrieb_stop : Bool
|
||||
Fahren_Ok : Bool
|
||||
Antrieb_nicht_stoppen : Bool
|
||||
Constant:
|
||||
|
||||
--- NW 1: Systemzeug ---
|
||||
// Verschiedene Bereiche:
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
= Schleuse_3342.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3323.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3345.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3325.Dyn.Sk.Auto_akt
|
||||
= Bereich_4236.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4221.Dyn.Sk.Auto_akt
|
||||
= Weiche_4223.Dyn.Status.Auto_akt
|
||||
= Schleuse_4227.Dyn.Sk.Auto_akt
|
||||
= Bereich_4232.Dyn.Sk.Auto_akt
|
||||
= Schleuse_4235.Dyn.Sk.Auto_akt
|
||||
= Bereich_3732.Dyn.Sk.Auto_akt
|
||||
= Schleuse_3722.Dyn.Sk.Auto_akt
|
||||
|
||||
AN "DOutbound_Bereich".A01_UH07.BereichErr
|
||||
= Schleuse_3342.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3323.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3345.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3325.Dyn.Sk.Bereich_ok
|
||||
= Bereich_4236.Dyn.Sk.Bereich_ok
|
||||
AN "DOutbound_Bereich".A01_UC073.BereichErr
|
||||
= Schleuse_4221.Dyn.Sk.Bereich_ok
|
||||
= Weiche_4223.Dyn.Status.Bereich_ok
|
||||
= Schleuse_4227.Dyn.Sk.Bereich_ok
|
||||
= Bereich_4232.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_4235.Dyn.Sk.Bereich_ok
|
||||
AN "DOutbound_Bereich".A01_UC072.BereichErr
|
||||
= Bereich_3732.Dyn.Sk.Bereich_ok
|
||||
= Schleuse_3722.Dyn.Sk.Bereich_ok
|
||||
|
||||
|
||||
--- NW 2: Störungen quittieren UZ0703 ---
|
||||
A "DOutbound_Bereich".A01_UZ0703.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 3: Schleuse 3342 (Vor BeladePlatz) ---
|
||||
A "DLPtoHW_Sensoren".An_BG3323.Stat.B_Akt
|
||||
= Stau_raus
|
||||
= B_nach_Schleuse
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=3342, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3322", B_InSchleuse:="BG3342", B_AusSchleuse:=B_nach_Schleuse, B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0065", Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3342", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3342.Stat.Ast, Error:=DB708.DBW572, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0065.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch
|
||||
|
||||
|
||||
--- NW 4: Schleuse 3323 (BeladePlatz) ---
|
||||
// Beladen erlaubt:
|
||||
A "DOutbound_Bereich".A01_UH07.AnlageEin
|
||||
A(
|
||||
A "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
A "Clock_5Hz" // Bei Durchfahrmodus blinken
|
||||
ON "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
)
|
||||
= "PF0046" // Beladung bereit bei Dauerlicht
|
||||
|
||||
// Untere Anzeigen werden im Ziel-FC gesetzt:
|
||||
L Schleuse_3323.Dyn.Sk.Akt_Schritt
|
||||
L 12
|
||||
<>I
|
||||
R "PF0033" // Signalsäule blau
|
||||
R "PF0044" // Trolley starten ok
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=3323, ErrQuit:=ErrQuit, B_VorSchleuse:="MB3342", B_InSchleuse:="BG3323", B_AusSchleuse:="BG3343", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3343.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0065", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3323", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3323.Stat.Ast, Error:=DB708.DBW526, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0065.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 5: Schleuse 3345 (Hinter BeladePlatz) ---
|
||||
CALL FB "None" , (Schleusen_Nr:=3345, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3343", B_InSchleuse:="BG3345", B_AusSchleuse:="BG3344", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3344.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0065", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3345", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3345.Stat.Ast, Error:=DB708.DBW586, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0065.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 6: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) ---
|
||||
A "MB3325"
|
||||
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 "MB3325" // Schleuse offen
|
||||
AN "MA0065" // 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 7: Schleuse 3325 ---
|
||||
AN Trolleys_starten.Wartezeit_aktiv
|
||||
= Fahren_Ok
|
||||
|
||||
A "BG3343"
|
||||
O "BG3344"
|
||||
= B_vor_Schleuse
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=3325, ErrQuit:=ErrQuit, B_VorSchleuse:=B_vor_Schleuse, B_InSchleuse:="BG3325", B_Zähl:="BG3326", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3326.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0065", Antrieb_plus_aktiv:="MA0066", Schleuse_geöffnet:="MB3325", RestZeit_Bereich_plus:=Bereich_4236.Dyn.Restzeit, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3325.Stat.Ast, Error:=DB708.DBW574, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0065.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:=Bereich_4236.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 8: Störungen anzeigen UZ0703 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ0703.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 9: Störungen quittieren UZ0703/7303 ---
|
||||
A "DOutbound_Bereich".A01_UZ0703.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UZ7303.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 10: Bereich 4236 ---
|
||||
A "BG3326"
|
||||
A "MB3325"
|
||||
= B_vor_Schleuse
|
||||
|
||||
A Schleuse_4221.Dyn.Sk.Bereich_ok
|
||||
AN "BG4221" // Da kein Platz für 2.Trolley wegen Kurve
|
||||
= Fahren_Ok
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=4236, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4236", B_Zähl:="BG4220", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG4220.Stat.B_Akt, Start_Ok:=Schleuse_4221.Dyn.Sk.Bereich_ok, Antrieb_Bereich_aktiv:="MA0066", Antrieb_plus_aktiv:="MA0264", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DLPtoHW_Antriebe".MA0066.Stat.A_vor, Antrieb_Bereich_stop:="DLPtoHW_Antriebe".MA0066.Stat.Stop_vor, Error:=DB708.DBW472, Antrieb_Bereich_start:="DLPtoHW_Antriebe".MA0066.Stat.A_start, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0264.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0264.Stat.A_start, Antrieb_minus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 11: Störungen anzeigen UZ0703/7303 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ0703.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ7303.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 12: Störungen quittieren UZ7303 ---
|
||||
A "DOutbound_Bereich".A01_UZ7303.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC073.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 13: Schleuse 4221 (vor ByPass) ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4221, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4220", B_InSchleuse:="BG4221", B_Zähl:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0264", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB4221", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_4221.Stat.Ast, Error:=DB708.DBW550, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0264.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0264.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0264.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0264.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // über Weiche | über Weiche | über Weiche | über Weiche
|
||||
|
||||
|
||||
|
||||
--- NW 14: Weiche 4223 (ByPass zu VP) ---
|
||||
SET
|
||||
R Antrieb_vor
|
||||
R Antrieb_stop
|
||||
|
||||
A "MA0264"
|
||||
A "MA0265"
|
||||
= Antrieb_aktiv
|
||||
|
||||
CALL FB "None" , (Weichen_Nr:=4223, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG4224", B_Ziel_abzweig:="BG4211", Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0265", Antrieb_Abzweig_aktiv:="MA0263", Weiche_ist_AST:="MB4223", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DLPtoHW_Zylinder".Weiche_4223.Stat.Ast, Error:=DB708.DBW546, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DHWtoVP_Antriebe".MA0263.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DHWtoVP_Antriebe".MA0263.Stat.Stop_vor, hStOk:=ErrAnz) // schon gesetzt | schon gesetzt
|
||||
|
||||
A Antrieb_vor
|
||||
S "DLPtoHW_Antriebe".MA0264.Stat.A_vor
|
||||
S "DLPtoHW_Antriebe".MA0265.Stat.A_vor
|
||||
A Antrieb_stop
|
||||
S "DLPtoHW_Antriebe".MA0264.Stat.Stop_vor
|
||||
S "DLPtoHW_Antriebe".MA0265.Stat.Stop_vor
|
||||
|
||||
// Damit Partner fahren kann:
|
||||
A Weiche_4223.Dyn.Status.Weiche_frei
|
||||
R "DLPtoHW_Zylinder".Weiche_4223.Stat.Ast
|
||||
|
||||
|
||||
--- NW 15: Störungen anzeigen UZ7303 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7303.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC073.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 16: Störungen quittieren UZ7303/7302 ---
|
||||
A "DOutbound_Bereich".A01_UZ7303.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UZ7302.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC073.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 17: MA0265 / Übergang 4225 ---
|
||||
CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG4224", B_Am_Übergang:="BG4225", B_Stau_Antrieb_plus:="BG4226", Antrieb_aktiv:="MA0265", Antrieb_plus_aktiv:="MA0266", Antrieb_vor:="DLPtoHW_Antriebe".MA0265.Stat.A_vor, Antrieb_start:="DLPtoHW_Antriebe".MA0265.Stat.A_start, Antrieb_stop:="DLPtoHW_Antriebe".MA0265.Stat.A_PS, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0266.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0266.Stat.A_start)
|
||||
|
||||
|
||||
--- NW 18: Schleuse 4227 ---
|
||||
CALL FB "None" , (Schleusen_Nr:=4227, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4225", B_InSchleuse:="BG4227", B_AusSchleuse:="BG4231", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG4231.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0266", Antrieb_plus_aktiv:="MA0267", Schleuse_geöffnet:="MB4227", RestZeit_Bereich_plus:=Bereich_4232.Dyn.Restzeit, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_4227.Stat.Ast, Error:=DB708.DBW548, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0266.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0266.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0266.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0266.Stat.A_PS, Antrieb_plus_vor:=Bereich_4232.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 19: Störungen anzeigen UZ7303/7302 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7303.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ7302.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC073.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 20: Störungen quittieren UZ7302 ---
|
||||
A "DOutbound_Bereich".A01_UZ7302.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC073.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 21: Bereich 4232 ---
|
||||
A "BG4231"
|
||||
A "MB4227"
|
||||
= B_vor_Schleuse
|
||||
|
||||
A "DLPtoHW_Sensoren".Stau_BG4233.Stat.B_Akt
|
||||
O "DLPtoHW_Sensoren".Stau_BG4234.Stat.B_Akt
|
||||
= Stau_raus
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=4232, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4232", B_Zähl:="BG4233", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0267", Antrieb_plus_aktiv:="MA0270", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DLPtoHW_Antriebe".MA0267.Stat.A_vor, Antrieb_Bereich_stop:="DLPtoHW_Antriebe".MA0267.Stat.Stop_vor, Error:=DB708.DBW470, Antrieb_Bereich_start:="DLPtoHW_Antriebe".MA0267.Stat.A_start, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0270.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0270.Stat.A_start, Antrieb_minus_vor:="DLPtoHW_Antriebe".MA0266.Stat.A_vor, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 22: Schleuse 4235 (vor BST 2) ---
|
||||
AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3
|
||||
AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4
|
||||
AN "7_HMI_Err_UH07_OB".System.BST2_Feueralarm
|
||||
AN "7_HMI_Err_UH07_OB".System.BST2_Geschlossen
|
||||
AN "7_HMI_Err_UH07_OB".System."BST2_Störung"
|
||||
A Bereich_3732.Dyn.Sk.Bereich_ok
|
||||
= Fahren_Ok
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=4235, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4233", B_InSchleuse:="BG4235", B_AusSchleuse:="BG3720", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3720.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0270", Antrieb_plus_aktiv:="MA0202", Schleuse_geöffnet:="MB4235", RestZeit_Bereich_plus:=Bereich_3732.Dyn.Restzeit, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_4235.Stat.Ast, Error:=DB708.DBW552, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0270.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0270.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0270.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0270.Stat.A_PS, Antrieb_plus_vor:=Bereich_3732.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 23: Störungen anzeigen UZ7302 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7302.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC073.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 24: Störungen quittieren UZ7202 ---
|
||||
A "DOutbound_Bereich".A01_UZ7202.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC072.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 25: Bereich 3732 (hinter BST 2) ---
|
||||
A "BG3720"
|
||||
A "MB4235"
|
||||
= B_vor_Schleuse
|
||||
|
||||
CALL FB "None" , (Bereichs_Nr:=3732, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3732", B_Zähl:="BG3721", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3721.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0202", Antrieb_plus_aktiv:="MA0203", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DLPtoHW_Antriebe".MA0202.Stat.A_vor, Antrieb_Bereich_stop:="DLPtoHW_Antriebe".MA0202.Stat.Stop_vor, Error:=DB708.DBW460, Antrieb_Bereich_start:="DLPtoHW_Antriebe".MA0202.Stat.A_start, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0203.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0203.Stat.A_start, Antrieb_minus_vor:=?, hStOk:=ErrAnz)
|
||||
|
||||
|
||||
--- NW 26: Störungen anzeigen UZ7202 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7202.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC072.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 27: Störungen quittieren UZ7202/7201 ---
|
||||
A "DOutbound_Bereich".A01_UZ7202.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UZ7201.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UC072.StOk_aktiv
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv
|
||||
= ErrQuit
|
||||
|
||||
|
||||
--- NW 28: Schleuse 3722 (Übergabe an AMR / UH06) ---
|
||||
// Schnittstelle von Outbound: (Verarbeitung s.u.)
|
||||
A "DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv
|
||||
|
||||
A "DSchnittstelle_zu_AMR".From_UH06.MA0203_kein_Stau
|
||||
|
||||
// Pro Zyklus neu erzeugen:
|
||||
SET
|
||||
R "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor
|
||||
R "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start
|
||||
|
||||
CALL FB "None" , (Schleusen_Nr:=3722, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3721", B_InSchleuse:="BG3722", B_Zähl:="BG3723", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3723.Stat.B_Akt, Start_Ok:="DSchnittstelle_zu_AMR".From_UH06.MA0203_kein_Stau, Antrieb_Schleuse_aktiv:="MA0203", Antrieb_plus_aktiv:="DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv, Schleuse_geöffnet:="MB3722", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3722.Stat.Ast, Error:=DB708.DBW534, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0203.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0203.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0203.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0203.Stat.A_PS, Antrieb_plus_vor:="DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor, Antrieb_plus_start:="DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start, hStOk:=ErrAnz)
|
||||
|
||||
// Schnittstelle zu Outbound: (Verarbeitung s.o.)
|
||||
A "DLPtoHW_Sensoren"."Fährt_zu_UH06".Stat.B_Akt
|
||||
S "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor
|
||||
S "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start
|
||||
S "DLPtoHW_Antriebe".MA0203.Stat.A_vor
|
||||
|
||||
|
||||
--- NW 29: Störungen anzeigen UZ7202/7201 ---
|
||||
A ErrAnz
|
||||
R ErrAnz
|
||||
S "DOutbound_Bereich".A01_UZ7202.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UZ7201.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UC072.StOk_blinken
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken
|
||||
|
||||
|
||||
--- NW 30: Ende ---
|
||||
BE
|
||||
FUNCTION_BLOCK "LPtoHW_OmniFahren"
|
||||
TITLE = Omnifahren Outbound Leerpuffer > Highway
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
Schleuse_3342 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Schleuse_3323 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Schleuse_3325 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Bereich_4236 : "MHMOmniBereich_Plus";
|
||||
Schleuse_4221 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Weiche_4223 : "MHMOmniWeiche_Plus";
|
||||
Schleuse_4227 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Bereich_4232 : "MHMOmniBereich_Plus";
|
||||
Schleuse_4235 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Bereich_3732 : "MHMOmniBereich_Plus";
|
||||
Schleuse_3722 { S7_SetPoint := 'False'} : "MHMOmniSchleuse_Plus";
|
||||
Schleuse_3345 { S7_SetPoint := 'False'} : "MHMOmniSchleuse";
|
||||
Übergang_4225 { S7_SetPoint := 'False'} : "MHMÜbergang_ohne_Schleuse";
|
||||
Trolleys_starten : Struct
|
||||
Flanke : Bool;
|
||||
Wartezeit_aktiv : Bool;
|
||||
Timer_Wartenzeit { S7_SetPoint := 'True'} : Int;
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
VAR_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_vor : Bool;
|
||||
Antrieb_stop : Bool;
|
||||
Fahren_Ok : Bool;
|
||||
Antrieb_nicht_stoppen : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Systemzeug
|
||||
|
||||
//Verschiedene Bereiche:
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
= #Schleuse_3342.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3323.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3345.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3325.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_4236.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4221.Dyn.Sk.Auto_akt;
|
||||
= #Weiche_4223.Dyn.Status.Auto_akt;
|
||||
= #Schleuse_4227.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_4232.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_4235.Dyn.Sk.Auto_akt;
|
||||
= #Bereich_3732.Dyn.Sk.Auto_akt;
|
||||
= #Schleuse_3722.Dyn.Sk.Auto_akt;
|
||||
|
||||
UN "DOutbound_Bereich".A01_UH07.BereichErr;
|
||||
= #Schleuse_3342.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3323.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3345.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3325.Dyn.Sk.Bereich_ok;
|
||||
= #Bereich_4236.Dyn.Sk.Bereich_ok;
|
||||
UN "DOutbound_Bereich".A01_UC073.BereichErr;
|
||||
= #Schleuse_4221.Dyn.Sk.Bereich_ok;
|
||||
= #Weiche_4223.Dyn.Status.Bereich_ok;
|
||||
= #Schleuse_4227.Dyn.Sk.Bereich_ok;
|
||||
= #Bereich_4232.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_4235.Dyn.Sk.Bereich_ok;
|
||||
UN "DOutbound_Bereich".A01_UC072.BereichErr;
|
||||
= #Bereich_3732.Dyn.Sk.Bereich_ok;
|
||||
= #Schleuse_3722.Dyn.Sk.Bereich_ok;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ0703
|
||||
U "DOutbound_Bereich".A01_UZ0703.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3342 (Vor BeladePlatz)
|
||||
U "DLPtoHW_Sensoren".An_BG3323.Stat.B_Akt;
|
||||
= #Stau_raus;
|
||||
= #B_nach_Schleuse;
|
||||
|
||||
CALL #Schleuse_3342
|
||||
( Schleusen_Nr := 3342 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3322" ,
|
||||
B_InSchleuse := "BG3342" ,
|
||||
B_AusSchleuse := #B_nach_Schleuse ,
|
||||
B_Stau_raus := #Stau_raus ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0065" ,
|
||||
Antrieb_plus_aktiv := "MA0065" ,
|
||||
Schleuse_geöffnet := "MB3342" ,
|
||||
Y_Schleuse_Auf := "DLPtoHW_Zylinder".Schleuse_3342.Stat.Ast ,
|
||||
Error := %DB708.DBW572 ,
|
||||
Antrieb_Schleuse_vor := "DLPtoHW_Antriebe".MA0065.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DLPtoHW_Antriebe".MA0065.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DLPtoHW_Antriebe".MA0065.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DLPtoHW_Antriebe".MA0065.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //Identisch
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3323 (BeladePlatz)
|
||||
|
||||
//Beladen erlaubt:
|
||||
U "DOutbound_Bereich".A01_UH07.AnlageEin;
|
||||
U(;
|
||||
U "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
U "Clock_5Hz";//Bei Durchfahrmodus blinken
|
||||
ON "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
);
|
||||
= "PF0046" ;//Beladung bereit bei Dauerlicht
|
||||
|
||||
//Untere Anzeigen werden im Ziel-FC gesetzt:
|
||||
L #Schleuse_3323.Dyn.Sk.Akt_Schritt;
|
||||
L 12;
|
||||
<>I;
|
||||
R "PF0033" ;//Signalsäule blau
|
||||
R "PF0044";//Trolley starten ok
|
||||
|
||||
CALL #Schleuse_3323
|
||||
( Schleusen_Nr := 3323 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "MB3342" ,
|
||||
B_InSchleuse := "BG3323" ,
|
||||
B_AusSchleuse := "BG3343" ,
|
||||
B_Stau_raus := "DLPtoHW_Sensoren".Stau_BG3343.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0065" ,
|
||||
Schleuse_geöffnet := "MB3323" ,
|
||||
Y_Schleuse_Auf := "DLPtoHW_Zylinder".Schleuse_3323.Stat.Ast ,
|
||||
Error := %DB708.DBW526 ,
|
||||
Antrieb_Schleuse_vor := "DLPtoHW_Antriebe".MA0065.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DLPtoHW_Antriebe".MA0065.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DLPtoHW_Antriebe".MA0065.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DLPtoHW_Antriebe".MA0065.Stat.A_PS ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3345 (Hinter BeladePlatz)
|
||||
CALL #Schleuse_3345
|
||||
( Schleusen_Nr := 3345 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3343" ,
|
||||
B_InSchleuse := "BG3345" ,
|
||||
B_AusSchleuse := "BG3344" ,
|
||||
B_Stau_raus := "DLPtoHW_Sensoren".Stau_BG3344.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0065" ,
|
||||
Schleuse_geöffnet := "MB3345" ,
|
||||
Y_Schleuse_Auf := "DLPtoHW_Zylinder".Schleuse_3345.Stat.Ast ,
|
||||
Error := %DB708.DBW586 ,
|
||||
Antrieb_Schleuse_vor := "DLPtoHW_Antriebe".MA0065.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DLPtoHW_Antriebe".MA0065.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DLPtoHW_Antriebe".MA0065.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DLPtoHW_Antriebe".MA0065.Stat.A_PS ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung)
|
||||
U "MB3325";
|
||||
FP #Trolleys_starten.Flanke;
|
||||
S #Trolleys_starten.Wartezeit_aktiv;
|
||||
SPBN Warten ;//Negierter Sprung
|
||||
|
||||
L 15 ;//Wartezeit in Sekunden
|
||||
T #Trolleys_starten.Timer_Wartenzeit;
|
||||
|
||||
Warten: UN #Trolleys_starten.Wartezeit_aktiv;
|
||||
O;
|
||||
U "MB3325" ;//Schleuse offen
|
||||
UN "MA0065" ;//Aber Trolley fährt nicht
|
||||
ON "1s-Impuls";
|
||||
SPB Wait;
|
||||
|
||||
L #Trolleys_starten.Timer_Wartenzeit;
|
||||
+ -1;
|
||||
T #Trolleys_starten.Timer_Wartenzeit;
|
||||
L 0;
|
||||
>I;
|
||||
SPB Wait;
|
||||
|
||||
SET;
|
||||
R #Trolleys_starten.Wartezeit_aktiv;
|
||||
|
||||
Wait: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3325
|
||||
UN #Trolleys_starten.Wartezeit_aktiv;
|
||||
= #Fahren_Ok;
|
||||
|
||||
U "BG3343";
|
||||
O "BG3344";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
CALL #Schleuse_3325
|
||||
( Schleusen_Nr := 3325 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := #B_vor_Schleuse ,
|
||||
B_InSchleuse := "BG3325" ,
|
||||
B_Zähl := "BG3326" ,
|
||||
B_Stau_raus := "DLPtoHW_Sensoren".Stau_BG3326.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0065" ,
|
||||
Antrieb_plus_aktiv := "MA0066" ,
|
||||
Schleuse_geöffnet := "MB3325" ,
|
||||
RestZeit_Bereich_plus := #Bereich_4236.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DLPtoHW_Zylinder".Schleuse_3325.Stat.Ast ,
|
||||
Error := %DB708.DBW574 ,
|
||||
Antrieb_Schleuse_vor := "DLPtoHW_Antriebe".MA0065.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DLPtoHW_Antriebe".MA0065.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DLPtoHW_Antriebe".MA0065.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DLPtoHW_Antriebe".MA0065.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Bereich_4236.Dyn.Status.Trolley_kommt_in_Bereich ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ0703
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ0703.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ0703/7303
|
||||
U "DOutbound_Bereich".A01_UZ0703.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UZ7303.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 4236
|
||||
U "BG3326";
|
||||
U "MB3325";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
U #Schleuse_4221.Dyn.Sk.Bereich_ok;
|
||||
UN "BG4221";//Da kein Platz für 2.Trolley wegen Kurve
|
||||
= #Fahren_Ok;
|
||||
|
||||
CALL #Bereich_4236
|
||||
( Bereichs_Nr := 4236 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := #B_vor_Schleuse ,
|
||||
B_BereichsEnde := "BG4236" ,
|
||||
B_Zähl := "BG4220" ,
|
||||
B_Stau_raus := "DLPtoHW_Sensoren".Stau_BG4220.Stat.B_Akt ,
|
||||
Start_Ok := #Schleuse_4221.Dyn.Sk.Bereich_ok ,
|
||||
Antrieb_Bereich_aktiv := "MA0066" ,
|
||||
Antrieb_plus_aktiv := "MA0264" ,
|
||||
Antrieb_Bereich_vor := "DLPtoHW_Antriebe".MA0066.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DLPtoHW_Antriebe".MA0066.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW472 ,
|
||||
Antrieb_Bereich_start := "DLPtoHW_Antriebe".MA0066.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DLPtoHW_Antriebe".MA0264.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DLPtoHW_Antriebe".MA0264.Stat.A_start ,
|
||||
Antrieb_minus_vor := "DLPtoHW_Antriebe".MA0065.Stat.A_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ0703/7303
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ0703.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ7303.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7303
|
||||
U "DOutbound_Bereich".A01_UZ7303.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC073.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4221 (vor ByPass)
|
||||
CALL #Schleuse_4221
|
||||
( Schleusen_Nr := 4221 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4220" ,
|
||||
B_InSchleuse := "BG4221" ,
|
||||
B_Zähl := , //über Weiche
|
||||
B_Stau_raus := , //über Weiche
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0264" ,
|
||||
Antrieb_plus_aktiv := 1 ,
|
||||
Schleuse_geöffnet := "MB4221" ,
|
||||
Y_Schleuse_Auf := "DLPtoHW_Zylinder".Schleuse_4221.Stat.Ast ,
|
||||
Error := %DB708.DBW550 ,
|
||||
Antrieb_Schleuse_vor := "DLPtoHW_Antriebe".MA0264.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DLPtoHW_Antriebe".MA0264.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DLPtoHW_Antriebe".MA0264.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DLPtoHW_Antriebe".MA0264.Stat.A_PS ,
|
||||
Antrieb_plus_vor := , //über Weiche
|
||||
Antrieb_plus_start := , //über Weiche
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
|
||||
NETWORK
|
||||
TITLE = Weiche 4223 (ByPass zu VP)
|
||||
SET;
|
||||
R #Antrieb_vor;
|
||||
R #Antrieb_stop;
|
||||
|
||||
U "MA0264";
|
||||
U "MA0265";
|
||||
= #Antrieb_aktiv;
|
||||
|
||||
CALL #Weiche_4223
|
||||
( Weichen_Nr := 4223 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
Fahren_Ok := 1 ,
|
||||
B_Ziel_gerade := "BG4224" ,
|
||||
B_Ziel_abzweig := "BG4211" ,
|
||||
Antrieb_Weiche_aktiv := #Antrieb_aktiv ,
|
||||
Antrieb_Gerade_aktiv := "MA0265" ,
|
||||
Antrieb_Abzweig_aktiv := "MA0263" ,
|
||||
Weiche_ist_AST := "MB4223" ,
|
||||
Y_Weiche_abzweig := "DLPtoHW_Zylinder".Weiche_4223.Stat.Ast ,
|
||||
Error := %DB708.DBW546 ,
|
||||
Antrieb_Weiche_vor := #Antrieb_vor ,
|
||||
Antrieb_Weiche_stop := #Antrieb_stop ,
|
||||
Antrieb_Weiche_gerade_vor := , //schon gesetzt
|
||||
Antrieb_Weiche_gerade_stop := , //schon gesetzt
|
||||
Antrieb_Weiche_abzweig_vor := "DHWtoVP_Antriebe".MA0263.Stat.A_vor ,
|
||||
Antrieb_Weiche_abzweig_stop := "DHWtoVP_Antriebe".MA0263.Stat.Stop_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
U #Antrieb_vor;
|
||||
S "DLPtoHW_Antriebe".MA0264.Stat.A_vor;
|
||||
S "DLPtoHW_Antriebe".MA0265.Stat.A_vor;
|
||||
U #Antrieb_stop;
|
||||
S "DLPtoHW_Antriebe".MA0264.Stat.Stop_vor;
|
||||
S "DLPtoHW_Antriebe".MA0265.Stat.Stop_vor;
|
||||
|
||||
//Damit Partner fahren kann:
|
||||
U #Weiche_4223.Dyn.Status.Weiche_frei;
|
||||
R "DLPtoHW_Zylinder".Weiche_4223.Stat.Ast;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7303
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7303.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC073.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7303/7302
|
||||
U "DOutbound_Bereich".A01_UZ7303.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UZ7302.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC073.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = MA0265 / Übergang 4225
|
||||
CALL #Übergang_4225
|
||||
( ErrQuit := #ErrQuit ,
|
||||
B_Anfang := "BG4224" ,
|
||||
B_Am_Übergang := "BG4225" ,
|
||||
B_Stau_Antrieb_plus := "BG4226" ,
|
||||
Antrieb_aktiv := "MA0265" ,
|
||||
Antrieb_plus_aktiv := "MA0266" ,
|
||||
Antrieb_vor := "DLPtoHW_Antriebe".MA0265.Stat.A_vor ,
|
||||
Antrieb_start := "DLPtoHW_Antriebe".MA0265.Stat.A_start ,
|
||||
Antrieb_stop := "DLPtoHW_Antriebe".MA0265.Stat.A_PS ,
|
||||
Antrieb_plus_vor := "DLPtoHW_Antriebe".MA0266.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DLPtoHW_Antriebe".MA0266.Stat.A_start
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4227
|
||||
CALL #Schleuse_4227
|
||||
( Schleusen_Nr := 4227 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4225" ,
|
||||
B_InSchleuse := "BG4227" ,
|
||||
B_AusSchleuse := "BG4231" ,
|
||||
B_Stau_raus := "DLPtoHW_Sensoren".Stau_BG4231.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Schleuse_aktiv := "MA0266" ,
|
||||
Antrieb_plus_aktiv := "MA0267" ,
|
||||
Schleuse_geöffnet := "MB4227" ,
|
||||
RestZeit_Bereich_plus := #Bereich_4232.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DLPtoHW_Zylinder".Schleuse_4227.Stat.Ast ,
|
||||
Error := %DB708.DBW548 ,
|
||||
Antrieb_Schleuse_vor := "DLPtoHW_Antriebe".MA0266.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DLPtoHW_Antriebe".MA0266.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DLPtoHW_Antriebe".MA0266.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DLPtoHW_Antriebe".MA0266.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Bereich_4232.Dyn.Status.Trolley_kommt_in_Bereich ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7303/7302
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7303.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ7302.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC073.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7302
|
||||
U "DOutbound_Bereich".A01_UZ7302.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC073.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 4232
|
||||
U "BG4231";
|
||||
U "MB4227";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
U "DLPtoHW_Sensoren".Stau_BG4233.Stat.B_Akt;
|
||||
O "DLPtoHW_Sensoren".Stau_BG4234.Stat.B_Akt;
|
||||
= #Stau_raus;
|
||||
|
||||
CALL #Bereich_4232
|
||||
( Bereichs_Nr := 4232 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := #B_vor_Schleuse ,
|
||||
B_BereichsEnde := "BG4232" ,
|
||||
B_Zähl := "BG4233" ,
|
||||
B_Stau_raus := #Stau_raus ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Bereich_aktiv := "MA0267" ,
|
||||
Antrieb_plus_aktiv := "MA0270" ,
|
||||
Antrieb_Bereich_vor := "DLPtoHW_Antriebe".MA0267.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DLPtoHW_Antriebe".MA0267.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW470 ,
|
||||
Antrieb_Bereich_start := "DLPtoHW_Antriebe".MA0267.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DLPtoHW_Antriebe".MA0270.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DLPtoHW_Antriebe".MA0270.Stat.A_start ,
|
||||
Antrieb_minus_vor := "DLPtoHW_Antriebe".MA0266.Stat.A_vor ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4235 (vor BST 2)
|
||||
UN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3;
|
||||
UN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST2_Feueralarm;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST2_Geschlossen;
|
||||
UN "7_HMI_Err_UH07_OB".System.BST2_Störung;
|
||||
U #Bereich_3732.Dyn.Sk.Bereich_ok;
|
||||
= #Fahren_Ok;
|
||||
|
||||
CALL #Schleuse_4235
|
||||
( Schleusen_Nr := 4235 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG4233" ,
|
||||
B_InSchleuse := "BG4235" ,
|
||||
B_AusSchleuse := "BG3720" ,
|
||||
B_Stau_raus := "DLPtoHW_Sensoren".Stau_BG3720.Stat.B_Akt ,
|
||||
Start_Ok := #Fahren_Ok ,
|
||||
Antrieb_Schleuse_aktiv := "MA0270" ,
|
||||
Antrieb_plus_aktiv := "MA0202" ,
|
||||
Schleuse_geöffnet := "MB4235" ,
|
||||
RestZeit_Bereich_plus := #Bereich_3732.Dyn.Restzeit ,
|
||||
Y_Schleuse_Auf := "DLPtoHW_Zylinder".Schleuse_4235.Stat.Ast ,
|
||||
Error := %DB708.DBW552 ,
|
||||
Antrieb_Schleuse_vor := "DLPtoHW_Antriebe".MA0270.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DLPtoHW_Antriebe".MA0270.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DLPtoHW_Antriebe".MA0270.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DLPtoHW_Antriebe".MA0270.Stat.A_PS ,
|
||||
Antrieb_plus_vor := #Bereich_3732.Dyn.Status.Trolley_kommt_in_Bereich ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7302
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7302.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC073.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7202
|
||||
U "DOutbound_Bereich".A01_UZ7202.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC072.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Bereich 3732 (hinter BST 2)
|
||||
U "BG3720";
|
||||
U "MB4235";
|
||||
= #B_vor_Schleuse;
|
||||
|
||||
CALL #Bereich_3732
|
||||
( Bereichs_Nr := 3732 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_BereichsAnfang := #B_vor_Schleuse ,
|
||||
B_BereichsEnde := "BG3732" ,
|
||||
B_Zähl := "BG3721" ,
|
||||
B_Stau_raus := "DLPtoHW_Sensoren".Stau_BG3721.Stat.B_Akt ,
|
||||
Start_Ok := 1 ,
|
||||
Antrieb_Bereich_aktiv := "MA0202" ,
|
||||
Antrieb_plus_aktiv := "MA0203" ,
|
||||
Antrieb_Bereich_vor := "DLPtoHW_Antriebe".MA0202.Stat.A_vor ,
|
||||
Antrieb_Bereich_stop := "DLPtoHW_Antriebe".MA0202.Stat.Stop_vor ,
|
||||
Error := %DB708.DBW460 ,
|
||||
Antrieb_Bereich_start := "DLPtoHW_Antriebe".MA0202.Stat.A_start ,
|
||||
Antrieb_plus_vor := "DLPtoHW_Antriebe".MA0203.Stat.A_vor ,
|
||||
Antrieb_plus_start := "DLPtoHW_Antriebe".MA0203.Stat.A_start ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7202
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7202.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC072.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen quittieren UZ7202/7201
|
||||
U "DOutbound_Bereich".A01_UZ7202.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UZ7201.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UC072.StOk_aktiv;
|
||||
O "DOutbound_Bereich".A01_UH07.StOk_aktiv;
|
||||
= #ErrQuit;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 3722 (Übergabe an AMR / UH06)
|
||||
|
||||
//Schnittstelle von Outbound: (Verarbeitung s.u.)
|
||||
U "DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv;
|
||||
|
||||
U "DSchnittstelle_zu_AMR".From_UH06.MA0203_kein_Stau;
|
||||
|
||||
//Pro Zyklus neu erzeugen:
|
||||
SET;
|
||||
R "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor;
|
||||
R "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start;
|
||||
|
||||
CALL #Schleuse_3722
|
||||
( Schleusen_Nr := 3722 ,
|
||||
ErrQuit := #ErrQuit ,
|
||||
B_VorSchleuse := "BG3721" ,
|
||||
B_InSchleuse := "BG3722" ,
|
||||
B_Zähl := "BG3723" ,
|
||||
B_Stau_raus := "DLPtoHW_Sensoren".Stau_BG3723.Stat.B_Akt ,
|
||||
Start_Ok := "DSchnittstelle_zu_AMR".From_UH06.MA0203_kein_Stau ,
|
||||
Antrieb_Schleuse_aktiv := "MA0203" ,
|
||||
Antrieb_plus_aktiv := "DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv ,
|
||||
Schleuse_geöffnet := "MB3722" ,
|
||||
Y_Schleuse_Auf := "DLPtoHW_Zylinder".Schleuse_3722.Stat.Ast ,
|
||||
Error := %DB708.DBW534 ,
|
||||
Antrieb_Schleuse_vor := "DLPtoHW_Antriebe".MA0203.Stat.A_vor ,
|
||||
Antrieb_Schleuse_start := "DLPtoHW_Antriebe".MA0203.Stat.A_start ,
|
||||
Antrieb_Schleuse_stop := "DLPtoHW_Antriebe".MA0203.Stat.Stop_vor ,
|
||||
Antrieb_Schleuse_PS := "DLPtoHW_Antriebe".MA0203.Stat.A_PS ,
|
||||
Antrieb_plus_vor := "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor ,
|
||||
Antrieb_plus_start := "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start ,
|
||||
hStOk := #ErrAnz
|
||||
);
|
||||
|
||||
//Schnittstelle zu Outbound: (Verarbeitung s.o.)
|
||||
U "DLPtoHW_Sensoren".Fährt_zu_UH06.Stat.B_Akt;
|
||||
S "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor;
|
||||
S "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start;
|
||||
S "DLPtoHW_Antriebe".MA0203.Stat.A_vor;
|
||||
|
||||
NETWORK
|
||||
TITLE = Störungen anzeigen UZ7202/7201
|
||||
U #ErrAnz;
|
||||
R #ErrAnz;
|
||||
S "DOutbound_Bereich".A01_UZ7202.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UZ7201.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UC072.StOk_blinken;
|
||||
S "DOutbound_Bereich".A01_UH07.StOk_blinken;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
+140
-137
@@ -1,173 +1,176 @@
|
||||
=== FC 6181: LPtoHW_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
|
||||
FUNCTION "LPtoHW_Ziel_FC" : Void
|
||||
TITLE = Ziel-FC: LP>HW
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
VAR_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;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Schleuse 3342: Weiterfahren erlaubt ? (Vor Trolley-Beladung) ---
|
||||
L "MW190"
|
||||
L 3342 // Aufruf von Schleuse 3342 ?
|
||||
<>I // Nein!
|
||||
JC X3342E
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
SET;//Rückmeldungen erst mal resetten
|
||||
R "M180.6";//Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
SET
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
NETWORK
|
||||
TITLE = Schleuse 3342: Weiterfahren erlaubt ? (Vor Trolley-Beladung)
|
||||
L "MW190";
|
||||
L 3342 ;//Aufruf von Schleuse 3342 ?
|
||||
<>I;//Nein!
|
||||
SPB X3342E;
|
||||
|
||||
BEU
|
||||
SET;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
X3342E: NOP 0
|
||||
BEA;
|
||||
|
||||
X3342E: NOP 0;
|
||||
|
||||
--- NW 3: Schleuse 3323: Weiterfahren erlaubt ? (Trolley-Beladung) ---
|
||||
L "MW190"
|
||||
L 3323 // Aufruf von Schleuse 3323 ?
|
||||
<>I // Nein!
|
||||
JC X3323E
|
||||
NETWORK
|
||||
TITLE = Schleuse 3323: Weiterfahren erlaubt ? (Trolley-Beladung)
|
||||
L "MW190";
|
||||
L 3323 ;//Aufruf von Schleuse 3323 ?
|
||||
<>I;//Nein!
|
||||
SPB X3323E;
|
||||
|
||||
// Umschalten auf Durchfahr-Modus:
|
||||
A "DLeerPufferStrecken".DurchfahrModus.Anmelden
|
||||
AN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Noch kein Sack behängt
|
||||
R "DLeerPufferStrecken".DurchfahrModus.Anmelden
|
||||
S "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
//Umschalten auf Durchfahr-Modus:
|
||||
U "DLeerPufferStrecken".DurchfahrModus.Anmelden;
|
||||
UN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt ;//Noch kein Sack behängt
|
||||
R "DLeerPufferStrecken".DurchfahrModus.Anmelden;
|
||||
S "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
|
||||
// Trolley-Err-Anzeige (blau):
|
||||
A "BG3323" // Trolley ist in Schleuse
|
||||
A(
|
||||
A "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
A "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Aber Sack behängt
|
||||
O
|
||||
AN "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
AN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Noch kein Sack behängt
|
||||
)
|
||||
= "PF0033"
|
||||
//Trolley-Err-Anzeige (blau):
|
||||
U "BG3323";//Trolley ist in Schleuse
|
||||
U(;
|
||||
U "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
U "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt;//Aber Sack behängt
|
||||
O;
|
||||
UN "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
UN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt;//Noch kein Sack behängt
|
||||
);
|
||||
= "PF0033";
|
||||
|
||||
// Trolley kann gestartet werden:
|
||||
A "BG3323" // Trolley ist in Schleuse
|
||||
AN "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
A "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Sack behängt
|
||||
A "Clock_2Hz"
|
||||
= "PF0044"
|
||||
//Trolley kann gestartet werden:
|
||||
U "BG3323";//Trolley ist in Schleuse
|
||||
UN "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
U "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt;//Sack behängt
|
||||
U "Clock_2Hz";
|
||||
= "PF0044";
|
||||
|
||||
// Bestätigung durch Bediener:
|
||||
A "BG3323" // Trolley ist in Schleuse
|
||||
A(
|
||||
A "SF0044" // Bestätigung mit Taster
|
||||
AN "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
A "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Sack behängt
|
||||
O
|
||||
// Durchfahr-Modus aktiv:
|
||||
A "DLeerPufferStrecken".DurchfahrModus.Aktiv
|
||||
AN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Aber Sack behängt
|
||||
)
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
//Bestätigung durch Bediener:
|
||||
U "BG3323";//Trolley ist in Schleuse
|
||||
U(;
|
||||
U "SF0044" ;//Bestätigung mit Taster
|
||||
UN "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
U "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt;//Sack behängt
|
||||
O;
|
||||
//Durchfahr-Modus aktiv:
|
||||
U "DLeerPufferStrecken".DurchfahrModus.Aktiv;
|
||||
UN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt;//Aber Sack behängt
|
||||
);
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
X3323E: NOP 0
|
||||
X3323E: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Schleuse 4221: (Vor ByPass zum VP)
|
||||
L "MW190";
|
||||
L 4221 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB PS5E;
|
||||
|
||||
--- NW 4: Schleuse 4221: (Vor ByPass zum VP) ---
|
||||
L "MW190"
|
||||
L 4221 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC PS5E
|
||||
//Ziel-Check:
|
||||
L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Trolley_EndZiel;
|
||||
L 16#B000 ;//Vollpuffer ?
|
||||
==I;//Ja !
|
||||
UN "DLPtoHW_Sensoren".Sack_BG4222.Stat.B_Akt;//Kein Sack erkannt
|
||||
SPB A4221 ;//Abzweig fahren
|
||||
|
||||
// Ziel-Check:
|
||||
L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Trolley_EndZiel
|
||||
L 16#B000 // Vollpuffer ?
|
||||
==I // Ja !
|
||||
AN "DLPtoHW_Sensoren".Sack_BG4222.Stat.B_Akt // Kein Sack erkannt
|
||||
JC A4221 // Abzweig fahren
|
||||
SPB G4221;
|
||||
|
||||
JC G4221
|
||||
SPA G4221 ;//Rest Gerade fahren
|
||||
|
||||
JU G4221 // Rest Gerade fahren
|
||||
//Abzweig fahren:
|
||||
A4221: L 16#4211;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
// Abzweig fahren:
|
||||
A4221: L 16#4211
|
||||
T "MW198" // Weichenziel
|
||||
//Quell-Steuerung:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Raus_Trolleys;
|
||||
L 0 ;//Sind Trolleys zur Weiche MB4210 unterwegs?
|
||||
>I;//Ja!
|
||||
O "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Status.Reset_aktiv;
|
||||
O "MB4207" ;//Andere Quelle aktiv
|
||||
BEB;
|
||||
|
||||
// Quell-Steuerung:
|
||||
L "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Raus_Trolleys
|
||||
L 0 // Sind Trolleys zur Weiche MB4210 unterwegs?
|
||||
>I // Ja!
|
||||
O "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Status.Reset_aktiv
|
||||
O "MB4207" // Andere Quelle aktiv
|
||||
BEC
|
||||
UN "DHWtoVP_Sensoren".Stau_BG4210.Stat.B_Akt;
|
||||
UN "DHWtoVP_Sensoren".Stau_BG4211.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
AN "DHWtoVP_Sensoren".Stau_BG4210.Stat.B_Akt
|
||||
AN "DHWtoVP_Sensoren".Stau_BG4211.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
//Gerade fahren:
|
||||
G4221: L 16#4224;
|
||||
T "MW198" ;//Weichenziel
|
||||
|
||||
// Gerade fahren:
|
||||
G4221: L 16#4224
|
||||
T "MW198" // Weichenziel
|
||||
UN "DLPtoHW_Sensoren".Stau_BG4224.Stat.B_Akt;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
AN "DLPtoHW_Sensoren".Stau_BG4224.Stat.B_Akt
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
PS5E: NOP 0;
|
||||
|
||||
PS5E: NOP 0
|
||||
NETWORK
|
||||
TITLE = Schleuse 4235: (BST 2)
|
||||
L "MW190";
|
||||
L 4235 ;//Aufruf von Schleuse XXXX?
|
||||
<>I;//Nein!
|
||||
SPB X4235E;
|
||||
|
||||
SET;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
--- NW 5: Schleuse 4235: (BST 2) ---
|
||||
L "MW190"
|
||||
L 4235 // Aufruf von Schleuse XXXX?
|
||||
<>I // Nein!
|
||||
JC X4235E
|
||||
BEA;
|
||||
|
||||
SET
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
X4235E: NOP 0;
|
||||
|
||||
BEU
|
||||
NETWORK
|
||||
TITLE = Schleuse 3722: Übergabe an UH06/AMR
|
||||
L "MW190";
|
||||
L 3722 ;//Aufruf von Schleuse 3722 ?
|
||||
<>I;//Nein!
|
||||
SPB X3722E;
|
||||
|
||||
X4235E: NOP 0
|
||||
SET;
|
||||
S "M180.6" ;//Weiterfahrt ist erlaubt
|
||||
|
||||
BEA;
|
||||
|
||||
--- NW 6: Schleuse 3722: Übergabe an UH06/AMR ---
|
||||
L "MW190"
|
||||
L 3722 // Aufruf von Schleuse 3722 ?
|
||||
<>I // Nein!
|
||||
JC X3722E
|
||||
X3722E: NOP 0;
|
||||
|
||||
SET
|
||||
S "M180.6" // Weiterfahrt ist erlaubt
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
BEU
|
||||
|
||||
X3722E: NOP 0
|
||||
|
||||
|
||||
--- NW 7: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,44 +1,60 @@
|
||||
=== FC 9: PufferZeiger_ermitteln [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Puffer_X : Int // Puffer zum Auslagern
|
||||
Output:
|
||||
Puffer_DB : Int
|
||||
Puffer_DW : Int
|
||||
Error : Bool
|
||||
InOut:
|
||||
Temp:
|
||||
Position : Int
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "PufferZeiger_ermitteln" : Void
|
||||
TITLE = PufferZeiger ermitteln
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Puffer_X : Int; // Puffer zum Auslagern
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Zeiger für Puffer_X ermitteln ---
|
||||
L Puffer_X
|
||||
T "MW200"
|
||||
L 0 // sinnvolle Angabe?
|
||||
==I // Nein!
|
||||
= Error
|
||||
BEC
|
||||
VAR_OUTPUT
|
||||
Puffer_DB : Int;
|
||||
Puffer_DW : Int;
|
||||
Error : Bool;
|
||||
END_VAR
|
||||
|
||||
// Einsprung Puffer ermitteln:
|
||||
CALL FC "DatenOut" (SSDB:=275, 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
|
||||
= "7_HMI_Err_UH07_OB".Logistik.DB275_Err
|
||||
= Error
|
||||
BEC
|
||||
|
||||
L "MW224"
|
||||
T Puffer_DB
|
||||
L "MW226"
|
||||
T Puffer_DW
|
||||
VAR_TEMP
|
||||
Position : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Zeiger für Puffer_X ermitteln
|
||||
L #Puffer_X;
|
||||
T "MW200";
|
||||
L 0;//sinnvolle Angabe?
|
||||
==I;//Nein!
|
||||
= #Error;
|
||||
BEB;
|
||||
|
||||
//Einsprung Puffer ermitteln:
|
||||
CALL "DatenOut"
|
||||
( SSDB := 275 ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := #Position
|
||||
);
|
||||
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
= "7_HMI_Err_UH07_OB".Logistik.DB275_Err;
|
||||
= #Error;
|
||||
BEB;
|
||||
|
||||
L "MW224";
|
||||
T #Puffer_DB;
|
||||
L "MW226";
|
||||
T #Puffer_DW;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,130 +1,153 @@
|
||||
=== FC 5: Reservierung_in_Puffer_eintragen [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
TrolleyID : DInt
|
||||
Ziel : Int
|
||||
ShopGroup : DInt
|
||||
Gesamt_Trolley_DL : Int
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Lager_DB : Int
|
||||
Lager_DW : Int
|
||||
SSDW : Int
|
||||
Position : Int
|
||||
LeerPuffer : Bool
|
||||
VollPuffer : Bool
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "Reservierung_in_Puffer_eintragen" : Void
|
||||
TITLE = Reservierung an Puffer senden / Trolley-Daten in Gesamt-Trolley-Liste sichern /
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
TrolleyID : DInt;
|
||||
Ziel : Int;
|
||||
ShopGroup : DInt;
|
||||
Gesamt_Trolley_DL : Int;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: TrolleyID + Ziel bekannt -> Reservierung im Puffer ---
|
||||
L TrolleyID
|
||||
L 0
|
||||
==I
|
||||
BEC
|
||||
|
||||
L Ziel
|
||||
L 0
|
||||
==I
|
||||
BEC
|
||||
|
||||
// Ziel checken:
|
||||
L 1
|
||||
>=I
|
||||
A(
|
||||
CAC
|
||||
L 10
|
||||
<=I
|
||||
)
|
||||
= LeerPuffer
|
||||
|
||||
CAC
|
||||
L 101
|
||||
>=I
|
||||
A(
|
||||
CAC
|
||||
L 151
|
||||
<=I
|
||||
)
|
||||
= VollPuffer
|
||||
|
||||
// Puffer checken:
|
||||
L Ziel
|
||||
T "MW220"
|
||||
|
||||
CALL FC "DatenOut" (SSDB:=275, 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 Lager_DB
|
||||
L "MW226"
|
||||
T Lager_DW
|
||||
|
||||
// Eintrag in Trolley-Reservierungsliste
|
||||
L TrolleyID
|
||||
T "MD220"
|
||||
L ShopGroup
|
||||
T "MD224"
|
||||
|
||||
L Lager_DW
|
||||
L 200
|
||||
+I
|
||||
T SSDW
|
||||
|
||||
CALL FC "DatenIn" (SSDB:=Lager_DB, SSDW:=SSDW, INDATEN:=P#M220.0, RE_VAL:="MB198")
|
||||
VAR_TEMP
|
||||
Lager_DB : Int;
|
||||
Lager_DW : Int;
|
||||
SSDW : Int;
|
||||
Position : Int;
|
||||
LeerPuffer : Bool;
|
||||
VollPuffer : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: BC in Trolley-DL eintragen ---
|
||||
L Gesamt_Trolley_DL
|
||||
L 0 // Liste angegeben?
|
||||
==I // Nein!
|
||||
BEC
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = TrolleyID + Ziel bekannt -> Reservierung im Puffer
|
||||
L #TrolleyID;
|
||||
L 0;
|
||||
==I;
|
||||
BEB;
|
||||
|
||||
L TrolleyID
|
||||
T "TrolleyDL_INDaten".INDaten.TrolleyID
|
||||
L Ziel
|
||||
T "TrolleyDL_INDaten".INDaten.EndZiel
|
||||
L ShopGroup
|
||||
T "TrolleyDL_INDaten".INDaten.ShopGroup
|
||||
L #Ziel;
|
||||
L 0;
|
||||
==I;
|
||||
BEB;
|
||||
|
||||
// Standort:
|
||||
L 16#A000
|
||||
A LeerPuffer
|
||||
JC Standort
|
||||
//Ziel checken:
|
||||
L 1;
|
||||
>=I;
|
||||
U(;
|
||||
TAK;
|
||||
L 10;
|
||||
<=I;
|
||||
);
|
||||
= #LeerPuffer;
|
||||
|
||||
L 16#B000
|
||||
A VollPuffer
|
||||
JC Standort
|
||||
TAK;
|
||||
L 101;
|
||||
>=I;
|
||||
U(;
|
||||
TAK;
|
||||
L 151;
|
||||
<=I;
|
||||
);
|
||||
= #VollPuffer;
|
||||
|
||||
L 16#0
|
||||
//Puffer checken:
|
||||
L #Ziel;
|
||||
T "MW220";
|
||||
|
||||
Standort: T "TrolleyDL_INDaten".INDaten.Standort
|
||||
CALL "DatenOut"
|
||||
( SSDB := 275 ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M220.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := #Position
|
||||
);
|
||||
|
||||
// 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
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
BEB;
|
||||
|
||||
// Daten in Datenbank schreiben:
|
||||
CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198")
|
||||
L "MW224";
|
||||
T #Lager_DB;
|
||||
L "MW226";
|
||||
T #Lager_DW;
|
||||
|
||||
//Eintrag in Trolley-Reservierungsliste
|
||||
L #TrolleyID;
|
||||
T "MD220";
|
||||
L #ShopGroup;
|
||||
T "MD224";
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
L #Lager_DW;
|
||||
L 200;
|
||||
+I;
|
||||
T #SSDW;
|
||||
|
||||
CALL "DatenIn"
|
||||
( SSDB := #Lager_DB ,
|
||||
SSDW := #SSDW ,
|
||||
INDATEN := P#M220.0 ,
|
||||
RE_VAL := "MB198"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = BC in Trolley-DL eintragen
|
||||
L #Gesamt_Trolley_DL;
|
||||
L 0;//Liste angegeben?
|
||||
==I;//Nein!
|
||||
BEB;
|
||||
|
||||
L #TrolleyID;
|
||||
T "TrolleyDL_INDaten".INDaten.TrolleyID;
|
||||
L #Ziel;
|
||||
T "TrolleyDL_INDaten".INDaten.EndZiel;
|
||||
L #ShopGroup;
|
||||
T "TrolleyDL_INDaten".INDaten.ShopGroup;
|
||||
|
||||
//Standort:
|
||||
L 16#A000;
|
||||
U #LeerPuffer;
|
||||
SPB Standort;
|
||||
|
||||
L 16#B000;
|
||||
U #VollPuffer;
|
||||
SPB Standort;
|
||||
|
||||
L 16#0;
|
||||
|
||||
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 "DatenIn"
|
||||
( SSDB := #Gesamt_Trolley_DL ,
|
||||
SSDW := 0 ,
|
||||
INDATEN := %DB1010.DBX0.0 ,
|
||||
RE_VAL := "MB198"
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,39 +1,55 @@
|
||||
=== FC 20: SchleusenZeiger_ermitteln [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Schleuse_X : Int // Schleuse zum Beeinflussen
|
||||
Output:
|
||||
Schleusen_DB : Int
|
||||
Schleusen_DW : Int
|
||||
Error : Bool
|
||||
InOut:
|
||||
Temp:
|
||||
Position : Int
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "SchleusenZeiger_ermitteln" : Void
|
||||
TITLE = AMRZeiger ermitteln
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Schleuse_X : Int; // Schleuse zum Beeinflussen
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Zeiger für Schleuse_X ermitteln ---
|
||||
L Schleuse_X
|
||||
T "MW200"
|
||||
VAR_OUTPUT
|
||||
Schleusen_DB : Int;
|
||||
Schleusen_DW : Int;
|
||||
Error : Bool;
|
||||
END_VAR
|
||||
|
||||
// Einsprung Schleuse ermitteln:
|
||||
CALL FC "DatenOut" (SSDB:=274, 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
|
||||
= Error
|
||||
BEC
|
||||
|
||||
L "MW224"
|
||||
T Schleusen_DB
|
||||
L "MW226"
|
||||
T Schleusen_DW
|
||||
VAR_TEMP
|
||||
Position : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Zeiger für Schleuse_X ermitteln
|
||||
L #Schleuse_X;
|
||||
T "MW200";
|
||||
|
||||
//Einsprung Schleuse ermitteln:
|
||||
CALL "DatenOut"
|
||||
( SSDB := 274 ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := #Position
|
||||
);
|
||||
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
= #Error;
|
||||
BEB;
|
||||
|
||||
L "MW224";
|
||||
T #Schleusen_DB;
|
||||
L "MW226";
|
||||
T #Schleusen_DW;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,212 +1,227 @@
|
||||
=== FC 29: Simulation_Aus_VP_Trolley_starten [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
VollPuffer : Int
|
||||
VP_DB : Int
|
||||
VP_DW : Int
|
||||
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AR1Start : DInt // Startwert mit Offset 0
|
||||
PARA : Word
|
||||
Position : Int
|
||||
Schleife1 : Word // Loopzähler 1
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
|
||||
--- NW 1: Ausfahrt schon aktiv ? ---
|
||||
A "DVollPufferStreckenA".VollPuffer_01.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_02.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_03.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_04.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_05.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_06.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_07.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_08.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_09.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_10.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_11.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_12.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_13.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_14.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_15.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_16.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_17.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_18.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_19.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_20.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_21.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_22.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_23.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_24.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenA".VollPuffer_25.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_26.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_27.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_28.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_29.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_30.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_31.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_32.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_33.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_34.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_35.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_36.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_37.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_38.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_39.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_40.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_41.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_42.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_43.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_44.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_45.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_46.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_47.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_48.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_49.Status2.Alles_ausfahren_OUT
|
||||
O "DVollPufferStreckenB".VollPuffer_50.Status2.Alles_ausfahren_OUT
|
||||
= "DVPAuslagern".Simulation_Auslagern.Auslagern_aktiv
|
||||
BEC
|
||||
|
||||
L 0
|
||||
T "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Aktiv
|
||||
FUNCTION "Simulation_Aus_VP_Trolley_starten" : Void
|
||||
TITLE = Simulation zum Starten von Trolleys aus AMRs
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_TEMP
|
||||
VollPuffer : Int;
|
||||
VP_DB : Int;
|
||||
VP_DW : Int;
|
||||
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AR1Start : DInt; // Startwert mit Offset 0
|
||||
PARA : Word;
|
||||
Position : Int;
|
||||
Schleife1 : Word; // Loopzähler 1
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Puffer aus Ausfahrliste holen ---
|
||||
L "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Check
|
||||
T VollPuffer
|
||||
L 0
|
||||
<>I
|
||||
JC Check
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Ausfahrt schon aktiv ?
|
||||
U "DVollPufferStrecken_A".VollPuffer_01.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_02.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_03.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_04.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_05.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_06.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_07.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_08.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_09.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_10.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_11.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_12.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_13.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_14.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_15.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_16.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_17.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_18.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_19.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_20.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_21.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_22.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_23.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_24.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_A".VollPuffer_25.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_26.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_27.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_28.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_29.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_30.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_31.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_32.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_33.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_34.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_35.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_36.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_37.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_38.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_39.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_40.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_41.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_42.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_43.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_44.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_45.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_46.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_47.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_48.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_49.Status2.Alles_ausfahren_OUT;
|
||||
O "DVollPufferStrecken_B".VollPuffer_50.Status2.Alles_ausfahren_OUT;
|
||||
= "DVP_Auslagern".Simulation_Auslagern.Auslagern_aktiv;
|
||||
BEB;
|
||||
|
||||
L 16#F100 // 1.Eintrag lesen !!! (da noch 2.Suche erforderlich!)
|
||||
T PARA
|
||||
L 0;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Vollpuffer_Aktiv;
|
||||
|
||||
L "DLVollPuffer_ShopGroup_abrufen".Datenlistenkopf.AnzahlEintraege
|
||||
L 0
|
||||
==I
|
||||
BEC
|
||||
NETWORK
|
||||
TITLE = Puffer aus Ausfahrliste holen
|
||||
L "DVP_Auslagern".Simulation_Auslagern.Vollpuffer_Check;
|
||||
T #VollPuffer;
|
||||
L 0;
|
||||
<>I;
|
||||
SPB Check;
|
||||
|
||||
CAC
|
||||
L100: T Schleife1
|
||||
L 16#F100;//1.Eintrag lesen !!! (da noch 2.Suche erforderlich!)
|
||||
T #PARA;
|
||||
|
||||
// Einträge lesen:
|
||||
CALL FC "DatenOut" (SSDB:=102, SSDW:=0, PARA:=PARA, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="DVPAuslagern".Simulation_Auslagern.Position) // Reihenfolge abrufen
|
||||
L "DLVollPuffer_ShopGroup_abrufen".Datenlistenkopf.AnzahlEintraege;
|
||||
L 0;
|
||||
==I;
|
||||
BEB;
|
||||
|
||||
L 16#FF00 // Nächsten Eintrag lesen !!! (Vergleich ausserhalb s.u.)
|
||||
T PARA
|
||||
TAK;
|
||||
L100: T #Schleife1;
|
||||
|
||||
JBI OkVP
|
||||
//Einträge lesen:
|
||||
CALL "DatenOut"
|
||||
( SSDB := 102 , //Reihenfolge abrufen
|
||||
SSDW := 0 ,
|
||||
PARA := #PARA ,
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB219" ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := "DVP_Auslagern".Simulation_Auslagern.Position
|
||||
);
|
||||
|
||||
BEU
|
||||
L 16#FF00 ;//Nächsten Eintrag lesen !!! (Vergleich ausserhalb s.u.)
|
||||
T #PARA;
|
||||
|
||||
OkVP: L "MW220"
|
||||
T VollPuffer
|
||||
T "DVPAuslagern".Simulation_Auslagern.Last_Check
|
||||
SPBI OkVP;
|
||||
|
||||
BEA;
|
||||
|
||||
--- NW 3: VP mit 0815-ShopGroup, 5 Daten und Sensor in Schleuse ? ---
|
||||
Check: CALL FC "PufferZeiger_ermitteln" (Puffer_X:=VollPuffer, Puffer_DB:=VP_DB, Puffer_DW:=VP_DW, Error:="M199.0")
|
||||
OkVP: L "MW220";
|
||||
T #VollPuffer;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Last_Check;
|
||||
|
||||
A "M199.0"
|
||||
BEC
|
||||
NETWORK
|
||||
TITLE = VP mit 0815-ShopGroup, 5 Daten und Sensor in Schleuse ?
|
||||
Check: CALL "PufferZeiger_ermitteln"
|
||||
( Puffer_X := #VollPuffer ,
|
||||
Puffer_DB := #VP_DB ,
|
||||
Puffer_DW := #VP_DW ,
|
||||
Error := "M199.0"
|
||||
);
|
||||
|
||||
// Ziel-Pointer erzeugen: (PLC-Daten)
|
||||
L VP_DW
|
||||
ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
U "M199.0";
|
||||
BEB;
|
||||
|
||||
// Hat Lager Shopgroup 815 ?:
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#88 // Offset für ShopGroup_Out
|
||||
SLD 3
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
OPN DB[VP_DB] // AMR-DB öffnen
|
||||
//Ziel-Pointer erzeugen: (PLC-Daten)
|
||||
L #VP_DW;
|
||||
ITD;
|
||||
T #AR1Start;//Startwert mit Offset 0
|
||||
|
||||
L DBD [AR1Zeiger]
|
||||
L DINT#815
|
||||
<>D
|
||||
JC next
|
||||
//Hat Lager Shopgroup 815 ?:
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#88 ;//Offset für ShopGroup_Out
|
||||
SLD 3;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AUF DB[ #VP_DB] ;//AMR-DB öffnen
|
||||
|
||||
// Hat Lager unten 5 Trolleys ?:
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#516 // Offset für Anzahl OUT-DL
|
||||
SLD 3
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
OPN DB[VP_DB] // AMR-DB öffnen
|
||||
L DBD[ #AR1Zeiger];
|
||||
L DINT#815;
|
||||
<>D;
|
||||
SPB next;
|
||||
|
||||
L DBW [AR1Zeiger]
|
||||
L 0
|
||||
==I
|
||||
JC next
|
||||
//Hat Lager unten 5 Trolleys ?:
|
||||
L #AR1Start ;//Startwert mit Offset 0
|
||||
+ DINT#516 ;//Offset für Anzahl OUT-DL
|
||||
SLD 3;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AUF DB[ #VP_DB] ;//AMR-DB öffnen
|
||||
|
||||
// Sensor BSchleuse_Out:
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#2 // Offset für B-Schleuse out
|
||||
SLD 3
|
||||
L 3 // Damit DBX_Bit 3
|
||||
OD
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
OPN DB[VP_DB] // AMR-DB öffnen
|
||||
AN DBX [AR1Zeiger] // Trolley in Schleuse
|
||||
JC next
|
||||
L DBW[ #AR1Zeiger];
|
||||
L 0;
|
||||
==I;
|
||||
SPB next;
|
||||
|
||||
// Sensor BVollpuffer-Einfahrt:
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#2 // BVollpuffer-Einfahrt
|
||||
SLD 3
|
||||
L 1 // Damit DBX_Bit 1
|
||||
OD
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
OPN DB[VP_DB] // AMR-DB öffnen
|
||||
AN DBX [AR1Zeiger] // Stau simuliert
|
||||
JC next
|
||||
//Sensor BSchleuse_Out:
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#2 ;//Offset für B-Schleuse out
|
||||
SLD 3;
|
||||
L 3 ;//Damit DBX_Bit 3
|
||||
OD;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AUF DB[ #VP_DB] ;//AMR-DB öffnen
|
||||
UN DBX[ #AR1Zeiger] ;//Trolley in Schleuse
|
||||
SPB next;
|
||||
|
||||
L VollPuffer
|
||||
T "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Check
|
||||
//Sensor BVollpuffer-Einfahrt:
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#2 ;//BVollpuffer-Einfahrt
|
||||
SLD 3;
|
||||
L 1 ;//Damit DBX_Bit 1
|
||||
OD;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AUF DB[ #VP_DB] ;//AMR-DB öffnen
|
||||
UN DBX[ #AR1Zeiger] ;//Stau simuliert
|
||||
SPB next;
|
||||
|
||||
AN "100ms-Impuls"
|
||||
BEC
|
||||
L #VollPuffer;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Vollpuffer_Check;
|
||||
|
||||
L "DVPAuslagern".Simulation_Auslagern.Wartezeit
|
||||
+ +1
|
||||
T "DVPAuslagern".Simulation_Auslagern.Wartezeit
|
||||
UN "100ms-Impuls";
|
||||
BEB;
|
||||
|
||||
L 30 // 3s rum
|
||||
<I
|
||||
BEC // Warten
|
||||
L "DVP_Auslagern".Simulation_Auslagern.Wartezeit;
|
||||
+ +1;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Wartezeit;
|
||||
|
||||
// Alles auslagern:
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#29 // Offset für Status 2 HighByte
|
||||
SLD 3
|
||||
L 4 // Damit DBX_Bit 4
|
||||
OD
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
OPN DB[VP_DB] // AMR-DB öffnen
|
||||
SET
|
||||
S DBX [AR1Zeiger] // Alles auslagern
|
||||
L 30 ;//3s rum
|
||||
<I;
|
||||
BEB;//Warten
|
||||
|
||||
L "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Check
|
||||
T "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Aktiv
|
||||
//Alles auslagern:
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#29 ;//Offset für Status 2 HighByte
|
||||
SLD 3;
|
||||
L 4 ;//Damit DBX_Bit 4
|
||||
OD;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AUF DB[ #VP_DB] ;//AMR-DB öffnen
|
||||
SET;
|
||||
S DBX[ #AR1Zeiger] ;//Alles auslagern
|
||||
|
||||
L 0
|
||||
T "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Check
|
||||
T "DVPAuslagern".Simulation_Auslagern.Last_Check
|
||||
T "DVPAuslagern".Simulation_Auslagern.Wartezeit
|
||||
L "DVP_Auslagern".Simulation_Auslagern.Vollpuffer_Check;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Vollpuffer_Aktiv;
|
||||
|
||||
BEU
|
||||
L 0;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Vollpuffer_Check;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Last_Check;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Wartezeit;
|
||||
|
||||
next: L 0
|
||||
T "DVPAuslagern".Simulation_Auslagern.Wartezeit
|
||||
T "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Check // Puffer verwerfen
|
||||
BEA;
|
||||
|
||||
L Schleife1
|
||||
LOOP L100
|
||||
next: L 0;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Wartezeit;
|
||||
T "DVP_Auslagern".Simulation_Auslagern.Vollpuffer_Check;//Puffer verwerfen
|
||||
|
||||
L #Schleife1;
|
||||
LOOP L100;
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,56 +1,69 @@
|
||||
=== FC 1003: Trolley_DL_Check_ID [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Gesamt_Trolley_DL : Int
|
||||
TrolleyID : DInt
|
||||
Output:
|
||||
Check_EndZiel : Word // Ziel
|
||||
Check_ZwischenZiel : Word // Für Weiche,...
|
||||
Check_ShopGroup : DInt // Shop-Gruppe
|
||||
Check_Standort : Word // Standort (Puffer, unterwegs)
|
||||
Err : Bool
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "Trolley_DL_Check_ID" : Void
|
||||
TITLE = Trolley_ID checken
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Gesamt_Trolley_DL : Int;
|
||||
TrolleyID : DInt;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: GesamtTrolly-DL angegeben? ---
|
||||
L Gesamt_Trolley_DL
|
||||
L 0 // sinnvolle Angabe?
|
||||
<=I // Nein!
|
||||
BEC // Abbruch
|
||||
VAR_OUTPUT
|
||||
Check_EndZiel : Word; // Ziel
|
||||
Check_ZwischenZiel : Word; // Für Weiche,...
|
||||
Check_ShopGroup : DInt; // Shop-Gruppe
|
||||
Check_Standort : Word; // Standort (Puffer, unterwegs)
|
||||
Err : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Trolley auslesen ---
|
||||
L TrolleyID
|
||||
T "MD220"
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = GesamtTrolly-DL angegeben?
|
||||
L #Gesamt_Trolley_DL;
|
||||
L 0;//sinnvolle Angabe?
|
||||
<=I;//Nein!
|
||||
BEB;//Abbruch
|
||||
|
||||
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
|
||||
NETWORK
|
||||
TITLE = Trolley auslesen
|
||||
L #TrolleyID;
|
||||
T "MD220";
|
||||
|
||||
L "MB199"
|
||||
L 2#1111111 // Bit 7 ausblenden
|
||||
AW
|
||||
L 0 // Fehler vorhanden?
|
||||
<>I // Ja
|
||||
= Err
|
||||
BEC
|
||||
CALL "DatenOut"
|
||||
( SSDB := #Gesamt_Trolley_DL ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M220.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := %DB1011.DBX0.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
= #Err;
|
||||
BEB;
|
||||
|
||||
--- NW 3: Relevante Daten übergeben ---
|
||||
L "TrolleyDL_OutDaten".OUTDaten.EndZiel
|
||||
T Check_EndZiel
|
||||
NETWORK
|
||||
TITLE = Relevante Daten übergeben
|
||||
L "TrolleyDL_OutDaten".OUTDaten.EndZiel;
|
||||
T #Check_EndZiel;
|
||||
|
||||
L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel
|
||||
T Check_ZwischenZiel
|
||||
L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel;
|
||||
T #Check_ZwischenZiel;
|
||||
|
||||
L "TrolleyDL_OutDaten".OUTDaten.ShopGroup
|
||||
T Check_ShopGroup
|
||||
L "TrolleyDL_OutDaten".OUTDaten.ShopGroup;
|
||||
T #Check_ShopGroup;
|
||||
|
||||
L "TrolleyDL_OutDaten".OUTDaten.Standort
|
||||
T Check_Standort
|
||||
L "TrolleyDL_OutDaten".OUTDaten.Standort;
|
||||
T #Check_Standort;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,86 +1,104 @@
|
||||
=== 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
|
||||
FUNCTION "Trolley_DL_Neue_Pos" : Void
|
||||
TITLE = Neue Position an Gesamt-Trolley-DL melden
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Gesamt_Trolley_DL : Int;
|
||||
TrolleyID : DInt;
|
||||
Position : Word;
|
||||
ShopGroup : DInt;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: GesamtTrolly-DL angegeben? ---
|
||||
L Gesamt_Trolley_DL
|
||||
L 0 // sinnvolle Angabe?
|
||||
<=I // Nein!
|
||||
BEC // Abbruch
|
||||
VAR_OUTPUT
|
||||
Err : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Trolley auslesen ---
|
||||
L TrolleyID
|
||||
T "MD220"
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = GesamtTrolly-DL angegeben?
|
||||
L #Gesamt_Trolley_DL;
|
||||
L 0;//sinnvolle Angabe?
|
||||
<=I;//Nein!
|
||||
BEB;//Abbruch
|
||||
|
||||
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
|
||||
NETWORK
|
||||
TITLE = Trolley auslesen
|
||||
L #TrolleyID;
|
||||
T "MD220";
|
||||
|
||||
L "MB199"
|
||||
L 2#1111111 // Bit 7 ausblenden
|
||||
AW
|
||||
L 0 // Fehler vorhanden?
|
||||
<>I // Ja
|
||||
= Err
|
||||
BEC
|
||||
CALL "DatenOut"
|
||||
( SSDB := #Gesamt_Trolley_DL ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M220.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := %DB1011.DBX0.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
= #Err;
|
||||
BEB;
|
||||
|
||||
NETWORK
|
||||
TITLE = 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;
|
||||
|
||||
NETWORK
|
||||
TITLE = Neue Position übergeben
|
||||
L #Position;
|
||||
L 0;
|
||||
==I;
|
||||
SPB NoNewPos;
|
||||
|
||||
TAK;
|
||||
T "TrolleyDL_OutDaten".OUTDaten.Standort;
|
||||
|
||||
NoNewPos: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = ShopGroup übergeben ? (bei 0 nichts ändern!)
|
||||
L #ShopGroup;
|
||||
L DINT#0;
|
||||
==D;
|
||||
SPB NoShopGroup;
|
||||
|
||||
TAK;
|
||||
T "TrolleyDL_OutDaten".OUTDaten.ShopGroup;
|
||||
|
||||
NoShopGroup: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Daten schreiben
|
||||
CALL "DatenIn"
|
||||
( SSDB := #Gesamt_Trolley_DL ,
|
||||
SSDW := 0 ,
|
||||
INDATEN := %DB1011.DBX0.0 ,
|
||||
RE_VAL := "MB199"
|
||||
);
|
||||
|
||||
|
||||
--- 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
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
--- 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
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,34 +1,45 @@
|
||||
=== 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
|
||||
FUNCTION "Trolleydaten_löschen" : Void
|
||||
TITLE = Trolleydaten manipulieren (nur für Inbetriebnahme / zum Testen)
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Gesamt_Trolley_DL : Int;
|
||||
TrolleyID : DInt;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Trolleydaten auslesen und verändern ---
|
||||
// Trolleydaten manipulieren:
|
||||
L TrolleyID
|
||||
T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = GesamtTrolly-DL angegeben?
|
||||
L #Gesamt_Trolley_DL;
|
||||
L 0;//sinnvolle Angabe?
|
||||
<=I;//Nein!
|
||||
BEB;//Abbruch
|
||||
|
||||
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
|
||||
NETWORK
|
||||
TITLE = Trolleydaten auslesen und verändern
|
||||
|
||||
L "MB198"
|
||||
//Trolleydaten manipulieren:
|
||||
L #TrolleyID;
|
||||
T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID;
|
||||
|
||||
BEU
|
||||
CALL "DatenOut"
|
||||
( SSDB := #Gesamt_Trolley_DL ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#E100 , //Eintrag lesen + austragen
|
||||
SEARCHDATEN := %DB1012.DBX0.0 ,
|
||||
RE_VAL := "MB198" ,
|
||||
OUTDATEN := %DB1011.DBX0.0 ,
|
||||
Position := "MW200"
|
||||
);
|
||||
|
||||
L "MB198";
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
BEA;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,53 +1,67 @@
|
||||
=== 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
|
||||
FUNCTION "Trolleydaten_neu_anlegen" : Void
|
||||
TITLE = Trolleydaten neu anlegen (nur für Inbetriebnahme / zum Testen)
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Gesamt_Trolley_DL : Int;
|
||||
TrolleyID : DInt;
|
||||
Endziel : Word;
|
||||
ShopGroup : DInt;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: GesamtTrolly-DL angegeben? ---
|
||||
L Gesamt_Trolley_DL
|
||||
L 0 // sinnvolle Angabe?
|
||||
<=I // Nein!
|
||||
BEC // Abbruch
|
||||
VAR_TEMP
|
||||
Lager_DB : Int;
|
||||
Lager_DW : Int;
|
||||
SSDW : Int;
|
||||
Position : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Erst mal alte Daten löschen ---
|
||||
CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=Gesamt_Trolley_DL, TrolleyID:=TrolleyID)
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = GesamtTrolly-DL angegeben?
|
||||
L #Gesamt_Trolley_DL;
|
||||
L 0;//sinnvolle Angabe?
|
||||
<=I;//Nein!
|
||||
BEB;//Abbruch
|
||||
|
||||
NETWORK
|
||||
TITLE = Erst mal alte Daten löschen
|
||||
CALL "Trolleydaten_löschen"
|
||||
( Gesamt_Trolley_DL := #Gesamt_Trolley_DL ,
|
||||
TrolleyID := #TrolleyID
|
||||
);
|
||||
|
||||
--- NW 3: Trolleydaten speichern ---
|
||||
// Trolleydaten manipulieren:
|
||||
L TrolleyID
|
||||
T "TrolleyDL_INDaten".INDaten.TrolleyID
|
||||
NETWORK
|
||||
TITLE = Trolleydaten speichern
|
||||
|
||||
L Endziel // Eingabe über Beobachtungstabelle (Tests)
|
||||
T "TrolleyDL_INDaten".INDaten.EndZiel
|
||||
L ShopGroup
|
||||
T "TrolleyDL_INDaten".INDaten.ShopGroup
|
||||
//Trolleydaten manipulieren:
|
||||
L #TrolleyID;
|
||||
T "TrolleyDL_INDaten".INDaten.TrolleyID;
|
||||
|
||||
// Rest nullen
|
||||
L 0
|
||||
T "TrolleyDL_INDaten".INDaten.ZwischenZiel
|
||||
T "TrolleyDL_INDaten".INDaten.Standort
|
||||
L #Endziel ;//Eingabe über Beobachtungstabelle (Tests)
|
||||
T "TrolleyDL_INDaten".INDaten.EndZiel;
|
||||
L #ShopGroup;
|
||||
T "TrolleyDL_INDaten".INDaten.ShopGroup;
|
||||
|
||||
// Daten in Datenbank schreiben:
|
||||
CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198")
|
||||
//Rest nullen
|
||||
L 0;
|
||||
T "TrolleyDL_INDaten".INDaten.ZwischenZiel;
|
||||
T "TrolleyDL_INDaten".INDaten.Standort;
|
||||
|
||||
L "TrolleyDL_INDaten".INDaten.TrolleyID
|
||||
//Daten in Datenbank schreiben:
|
||||
CALL "DatenIn"
|
||||
( SSDB := #Gesamt_Trolley_DL ,
|
||||
SSDW := 0 ,
|
||||
INDATEN := %DB1010.DBX0.0 ,
|
||||
RE_VAL := "MB198"
|
||||
);
|
||||
|
||||
L "TrolleyDL_INDaten".INDaten.TrolleyID;
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,59 +1,75 @@
|
||||
=== 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
|
||||
FUNCTION "Trolleydaten_ändern" : Void
|
||||
TITLE = Trolleydaten manipulieren (nur für Inbetriebnahme / zum Testen)
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Gesamt_Trolley_DL : Int;
|
||||
TrolleyID : DInt;
|
||||
Endziel : Word;
|
||||
ShopGroup : DInt;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Trolleydaten auslesen und verändern ---
|
||||
// Trolleydaten manipulieren:
|
||||
L TrolleyID
|
||||
T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = GesamtTrolly-DL angegeben?
|
||||
L #Gesamt_Trolley_DL;
|
||||
L 0;//sinnvolle Angabe?
|
||||
<=I;//Nein!
|
||||
BEB;//Abbruch
|
||||
|
||||
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
|
||||
NETWORK
|
||||
TITLE = Trolleydaten auslesen und verändern
|
||||
|
||||
L "MB198"
|
||||
L 2#10000000 // Datensatz vorhanden?
|
||||
<>I // Nein!
|
||||
BEC
|
||||
//Trolleydaten manipulieren:
|
||||
L #TrolleyID;
|
||||
T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID;
|
||||
|
||||
L "TrolleyDL_OutDaten".OUTDaten.TrolleyID // Zum Beobachten
|
||||
CALL "DatenOut"
|
||||
( SSDB := #Gesamt_Trolley_DL ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := %DB1012.DBX0.0 ,
|
||||
RE_VAL := "MB198" ,
|
||||
OUTDATEN := %DB1011.DBX0.0 ,
|
||||
Position := "MW200"
|
||||
);
|
||||
|
||||
L Endziel
|
||||
L -1 // Keine Änderung ?
|
||||
==I // Ja !
|
||||
JC Variante // Nichts überschreiben
|
||||
L "MB198";
|
||||
L 2#10000000 ;//Datensatz vorhanden?
|
||||
<>I;//Nein!
|
||||
BEB;
|
||||
|
||||
CAC
|
||||
T "TrolleyDL_OutDaten".OUTDaten.EndZiel
|
||||
L "TrolleyDL_OutDaten".OUTDaten.TrolleyID;//Zum Beobachten
|
||||
|
||||
Variante: L ShopGroup
|
||||
L DINT#-1 // Keine Änderung ?
|
||||
==D // Ja !
|
||||
JC Save // Nichts überschreiben
|
||||
L #Endziel;
|
||||
L -1 ;//Keine Änderung ?
|
||||
==I ;//Ja !
|
||||
SPB Variante ;//Nichts überschreiben
|
||||
|
||||
CAC
|
||||
T "TrolleyDL_OutDaten".OUTDaten.ShopGroup
|
||||
TAK;
|
||||
T "TrolleyDL_OutDaten".OUTDaten.EndZiel;
|
||||
|
||||
Save: CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1011.DBX0.0, RE_VAL:="MB198")
|
||||
Variante: L #ShopGroup;
|
||||
L DINT#-1 ;//Keine Änderung ?
|
||||
==D ;//Ja !
|
||||
SPB Save ;//Nichts überschreiben
|
||||
|
||||
BEU
|
||||
TAK;
|
||||
T "TrolleyDL_OutDaten".OUTDaten.ShopGroup;
|
||||
|
||||
Save: CALL "DatenIn"
|
||||
( SSDB := #Gesamt_Trolley_DL ,
|
||||
SSDW := 0 ,
|
||||
INDATEN := %DB1011.DBX0.0 ,
|
||||
RE_VAL := "MB198"
|
||||
);
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
BEA;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
=== FC 1000: Wandel_FC_für_DB1000 [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Output:
|
||||
InOut:
|
||||
Temp:
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "Wandel_FC_für_DB1000" : Void
|
||||
TITLE = Wandel-FC für indizierte Speicherung der DB1000-Daten
|
||||
{ S7_Optimized_Access := 'FALSE' ; S7_Pass_Registers := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
|
||||
--- NW 1: Wandeln der Daten ---
|
||||
L "MD94"
|
||||
+ DINT#-6040000 // Funktioniert bis max: 6072767 (Wert + 32767)
|
||||
T "MW92" // Funktioniert bis max: 32767, danach negativ
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Wandeln der Daten
|
||||
L "MD94";
|
||||
+ DINT#-6040000 ;//Funktioniert bis max: 6072767 (Wert + 32767)
|
||||
T "MW92" ;//Funktioniert bis max: 32767, danach negativ
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,87 +1,97 @@
|
||||
=== 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
|
||||
FUNCTION "BCD (4stellig)_to_INT" : Void
|
||||
TITLE = BCD-Wert (2-Stellig) in INT-Wert wandeln (Max 00FF)
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
//
|
||||
//
|
||||
VAR_INPUT
|
||||
BCD_Wert : Word;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
L 0 // erst mal köschen
|
||||
T Int_Wert
|
||||
VAR_OUTPUT
|
||||
Int_Wert : Int;
|
||||
END_VAR
|
||||
|
||||
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
|
||||
VAR_TEMP
|
||||
BCD_Vergleich : Word;
|
||||
Multiplikator : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 3: Ende ---
|
||||
BE
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
L 0;//erst mal köschen
|
||||
T #Int_Wert;
|
||||
|
||||
L 1;
|
||||
T #Multiplikator;
|
||||
NETWORK
|
||||
TITLE = BCD-Wert wandeln
|
||||
L #BCD_Wert;
|
||||
T #BCD_Vergleich;
|
||||
L 16#000F;
|
||||
UW;
|
||||
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;
|
||||
UW;
|
||||
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;
|
||||
UW;
|
||||
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;
|
||||
UW;
|
||||
L #Multiplikator;
|
||||
*I;
|
||||
L #Int_Wert;
|
||||
+I;
|
||||
T #Int_Wert;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,50 +1,72 @@
|
||||
=== 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
|
||||
FUNCTION "DBMOV" : Void
|
||||
TITLE = DB-Bereiche kopieren
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
FAMILY : FIFO
|
||||
NAME : FifoIn
|
||||
VERSION : 0.1
|
||||
//COPYRIGHT by Ingenieurbüro A.Emmert
|
||||
//Ortsstr.33, D-869925 Fuchstal (Germany)
|
||||
//Tel.: 0049(0)8243-1254
|
||||
//Version: H&M / 06.12.2025
|
||||
//
|
||||
VAR_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
|
||||
END_VAR
|
||||
|
||||
--- 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
|
||||
VAR_OUTPUT
|
||||
RE_VAL : Int; // Rückmeldung
|
||||
END_VAR
|
||||
|
||||
// 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
|
||||
VAR_TEMP
|
||||
Quelle : Any; // Zeiger, wo Rein-Daten sind
|
||||
Ziel : Any; // Zeiger, FIFO-Stelle
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE =
|
||||
|
||||
//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 BLKMOV//Datenliste-Daten speichern
|
||||
{blk_type := 'Variant'}
|
||||
( SRCBLK := #Quelle ,
|
||||
RET_VAL := #RE_VAL ,
|
||||
DSTBLK := #Ziel
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,55 +1,68 @@
|
||||
=== 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
|
||||
FUNCTION "DL_Einsprung" : Void
|
||||
TITLE = Bereich-DL: Einsprungs-DW ermitteln
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Bereich_DL : Int; // Nur für Stammdaten =1!
|
||||
ID : Int;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Inittialisierung ---
|
||||
L 0
|
||||
T "Dyn.DB"
|
||||
L DINT#0
|
||||
T AR_Start
|
||||
SET
|
||||
S Error
|
||||
VAR_OUTPUT
|
||||
"Dyn.DB" : Int;
|
||||
AR_Start : DInt;
|
||||
Error : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: ID suchen ---
|
||||
L ID
|
||||
T "MW200"
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Inittialisierung
|
||||
L 0;
|
||||
T #"Dyn.DB";
|
||||
L DINT#0;
|
||||
T #AR_Start;
|
||||
SET;
|
||||
S #Error;
|
||||
|
||||
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
|
||||
NETWORK
|
||||
TITLE = ID suchen
|
||||
L #ID;
|
||||
T "MW200";
|
||||
|
||||
L "MB199"
|
||||
L 2#1111111 // Bit 7 ausblenden
|
||||
AW
|
||||
L 0 // Fehler vorhanden?
|
||||
<>I // Ja
|
||||
= Error
|
||||
BEC
|
||||
CALL "DatenOut"
|
||||
( SSDB := #Bereich_DL ,
|
||||
SSDW := 0 ,
|
||||
PARA := 16#0000 , //Eintrag lesen
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := "MB199" ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
L "MB199";
|
||||
L 2#1111111 ;//Bit 7 ausblenden
|
||||
UW;
|
||||
L 0;//Fehler vorhanden?
|
||||
<>I;//Ja
|
||||
= #Error;
|
||||
BEB;
|
||||
|
||||
--- NW 3: Daten übergeben ---
|
||||
L "MW224"
|
||||
T "Dyn.DB" // Dyn.DB
|
||||
L 0 // sinnvoller Wert ?
|
||||
<=I // Nein !
|
||||
S Error
|
||||
BEC
|
||||
NETWORK
|
||||
TITLE = Daten übergeben
|
||||
L "MW224";
|
||||
T #"Dyn.DB" ;//Dyn.DB
|
||||
L 0;//sinnvoller Wert ?
|
||||
<=I;//Nein !
|
||||
S #Error;
|
||||
BEB;
|
||||
|
||||
L "MW226"
|
||||
ITD
|
||||
T AR_Start
|
||||
L "MW226";
|
||||
ITD;
|
||||
T #AR_Start;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,234 +1,286 @@
|
||||
=== 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
|
||||
FUNCTION "DatenReset" : Void
|
||||
TITLE = Datenlisten-Modul
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
FAMILY : DLISTE
|
||||
NAME : DatenIn
|
||||
VERSION : 0.1
|
||||
//COPYRIGHT by Ingenieurbüro A.Emmert
|
||||
//Ortsstr.33, D-869925 Fuchstal (Germany)
|
||||
//Tel.: 0049(0)8243-1254
|
||||
//Version: P&O / 10.2024
|
||||
//Version: ILS2100 / 06.11.2009
|
||||
//
|
||||
//Datenblock in Datenliste resetten
|
||||
//SSDB: Datenlisten-DB
|
||||
//SSDW: Datenlisten-1.DW
|
||||
//RE_VAL: Rückmeldungen:
|
||||
// Bit0: Kein Datenlistenbereich / falscher Kopfinhalt / Endekennung
|
||||
// Bit1: SFC20-Aufruf mit Fehler
|
||||
// Bit2: Frei
|
||||
// Bit3: Frei
|
||||
// Bit4: Frei
|
||||
// Bit5: Frei
|
||||
// Bit6: Frei
|
||||
// Bit7: Frei
|
||||
//
|
||||
VAR_INPUT
|
||||
SSDB : Int; // Datenlisten-DB
|
||||
SSDW : Int; // Datenlisten-1.DW
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Schnittstellen-DB sinnvoll ? ---
|
||||
L SSDB
|
||||
T DBDatenliste
|
||||
VAR_OUTPUT
|
||||
RE_VAL : Byte; // Rückmeldung
|
||||
END_VAR
|
||||
|
||||
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
|
||||
VAR_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;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- 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
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Schnittstellen-DB sinnvoll ?
|
||||
L #SSDB;
|
||||
T #DBDatenliste;
|
||||
|
||||
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
|
||||
CALL "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
|
||||
JC Err1
|
||||
CALL "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;
|
||||
SPB Err0;//kein Datenlisten-Bereich
|
||||
|
||||
NETWORK
|
||||
TITLE = Datenlistekopf holen
|
||||
//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 BLKMOV//1.-10.DW Datenliste holen
|
||||
{blk_type := 'Variant'}
|
||||
( SRCBLK := #Quelle ,
|
||||
RET_VAL := #SFC_RET_VAL ,
|
||||
DSTBLK := P#L20.0 WORD 10
|
||||
);
|
||||
|
||||
L #SFC_RET_VAL;
|
||||
L 2#0000_0000_0000_0000;
|
||||
<>I;
|
||||
SPB Err1;
|
||||
|
||||
NETWORK
|
||||
TITLE = Zeigerüberprüfung
|
||||
L #Kopf;//Datenliste-Kopf
|
||||
L 16#DA;//= Datenlistekennung ?
|
||||
<>I;//Nein !
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L 1;
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L 128;
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L 1;
|
||||
L #Listenlaenge;//Max.Anzahl von Datenblöcken
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L 1;
|
||||
L #Stammdaten;//Anzahl der Stammdaten
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L 9;
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L #Stammdaten;//Anzahl der Stammdaten
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
>I;
|
||||
SPB 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)
|
||||
|
||||
AUF DB[ #DBDatenliste];
|
||||
|
||||
L #Datenlisten_Ende;
|
||||
L #DB_Länge;
|
||||
>I ;//Datenlisten-DB ist zu kurz!
|
||||
SPB Err0;//kein Datenlisten-Bereich
|
||||
|
||||
L DBW[ #AR1Zeiger];
|
||||
L 16#DAEE;//Datenliste-Endekennung ?
|
||||
<>I;//Nein !
|
||||
SPB Err0;//kein Datenlisten-Bereich
|
||||
|
||||
NETWORK
|
||||
TITLE = Indizierung löschen ?
|
||||
L #IndDB;//Indizierter DB
|
||||
L 0;//=0 ?
|
||||
==I;//Kein indizierter DB !
|
||||
SPB Nw05;
|
||||
|
||||
CALL "TEST_DB_TO_ATTR_DB"
|
||||
( DB_Number := #IndDB ,
|
||||
RetVal := #SFC_RET_VAL ,
|
||||
DB_Length := #SFC_DB_LENGTH ,
|
||||
Write_Prot := #SFC_WRITE_PROT
|
||||
);
|
||||
|
||||
CALL "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;
|
||||
SPB Nw05;//kein Indizier-DB vorhanden
|
||||
|
||||
L 0;
|
||||
ITD;
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF 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 3: Zeigerüberprüfung ---
|
||||
L Kopf // Datenliste-Kopf
|
||||
L 16#DA // = Datenlistekennung ?
|
||||
<>I // Nein !
|
||||
JC Err0 // kein Datenlistebereich
|
||||
NETWORK
|
||||
TITLE = Datenliste löschen
|
||||
Nw05: L #SSDW;
|
||||
+ 12 ;//12.Dw
|
||||
ITD;
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
L 1
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
AUF DB[ #DBDatenliste];
|
||||
|
||||
L 128
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
L 0;
|
||||
T DBW[ #AR1Zeiger] ;//Letzte Speicherung löschen
|
||||
|
||||
L 1
|
||||
L Listenlaenge // Max.Anzahl von Datenblöcken
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
L #SSDW;
|
||||
+ 16 ;//16.Dw
|
||||
ITD;
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
L 1
|
||||
L Stammdaten // Anzahl der Stammdaten
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
AUF DB[ #DBDatenliste];
|
||||
|
||||
L 9
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
L 0;
|
||||
T DBW[ #AR1Zeiger] ;//Anzahl Einträge löschen
|
||||
|
||||
L Stammdaten // Anzahl der Stammdaten
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
L #SSDW;
|
||||
+ 20 ;//Daten ab 20.Dw
|
||||
ITD;
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
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)
|
||||
L #Datensatzlaenge;
|
||||
L #Listenlaenge;
|
||||
*I;
|
||||
L500: T #Schleife;
|
||||
|
||||
OPN DB[DBDatenliste]
|
||||
AUF DB[ #DBDatenliste];
|
||||
|
||||
L Datenlisten_Ende
|
||||
L "DB_Länge"
|
||||
>I // Datenlisten-DB ist zu kurz!
|
||||
JC Err0 // kein Datenlisten-Bereich
|
||||
L 0;
|
||||
T DBW[ #AR1Zeiger] ;//Inhalte löschen
|
||||
|
||||
L DBW [AR1Zeiger]
|
||||
L 16#DAEE // Datenliste-Endekennung ?
|
||||
<>I // Nein !
|
||||
JC Err0 // kein Datenlisten-Bereich
|
||||
L #AR1Zeiger;
|
||||
SRD 3;
|
||||
L DINT#2;
|
||||
+D;
|
||||
SLD 3;
|
||||
T #AR1Zeiger;
|
||||
|
||||
L #Schleife;
|
||||
LOOP L500;
|
||||
|
||||
|
||||
--- NW 4: Indizierung löschen ? ---
|
||||
L IndDB // Indizierter DB
|
||||
L 0 // =0 ?
|
||||
==I // Kein indizierter DB !
|
||||
JC Nw05
|
||||
NETWORK
|
||||
TITLE = Fehlerausgabe / RET_VAL
|
||||
SET;//VKE = 1 ohne Fehler !!!
|
||||
SPA Ok;
|
||||
Err0: L 2#0000_0000_0000_0001;//Kein Fifobereich
|
||||
SPA Err;
|
||||
Err1: L 2#0000_0000_0000_0010;//SFC20-Aufruf mit Fehler
|
||||
|
||||
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
|
||||
Err: CLR;//VKE = 0 bei Fehler !!!
|
||||
Ok: T #RE_VAL;
|
||||
|
||||
CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge")
|
||||
SAVE;//VKE in BIE-Bit speichern
|
||||
|
||||
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
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,183 +1,223 @@
|
||||
=== 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
|
||||
FUNCTION "DatenResetSort" : Void
|
||||
TITLE = Datenlisten-Modul
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
FAMILY : DLISTE
|
||||
NAME : DatenIn
|
||||
VERSION : 0.1
|
||||
//COPYRIGHT by Ingenieurbüro A.Emmert
|
||||
//Ortsstr.33, D-869925 Fuchstal (Germany)
|
||||
//Tel.: 0049(0)8243-1254
|
||||
//Version: ILS2100 / 06.11.2009
|
||||
//
|
||||
//Datenblock in Datenliste resetten
|
||||
//SSDB: Datenlisten-DB
|
||||
//SSDW: Datenlisten-1.DW
|
||||
//RE_VAL: Rückmeldungen:
|
||||
// Bit0: Kein Datenlistenbereich / falscher Kopfinhalt / Endekennung
|
||||
// Bit1: SFC20-Aufruf mit Fehler
|
||||
// Bit2: Frei
|
||||
// Bit3: Frei
|
||||
// Bit4: Frei
|
||||
// Bit5: Frei
|
||||
// Bit6: Frei
|
||||
// Bit7: Frei
|
||||
//
|
||||
VAR_INPUT
|
||||
SSDB : Int; // Datenlisten-DB
|
||||
SSDW : Int; // Datenlisten-1.DW
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Schnittstellen-DB sinnvoll ? ---
|
||||
L SSDB
|
||||
T DBDatenliste
|
||||
VAR_OUTPUT
|
||||
RE_VAL : Byte; // Rückmeldung
|
||||
END_VAR
|
||||
|
||||
// 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
|
||||
VAR_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)
|
||||
END_VAR
|
||||
|
||||
|
||||
--- 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
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Schnittstellen-DB sinnvoll ?
|
||||
L #SSDB;
|
||||
T #DBDatenliste;
|
||||
|
||||
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen
|
||||
// CALL TEST_DB
|
||||
// DB_NUMBER :=#DBDatenliste
|
||||
// RET_VAL :=#SFC_RET_VAL
|
||||
// DB_LENGTH :=#SFC_DB_LENGTH
|
||||
// WRITE_PROT :=#SFC_WRITE_PROT
|
||||
|
||||
L SFC_RET_VAL
|
||||
L 2#0000_0000_0000_0000
|
||||
<>I
|
||||
JC Err1
|
||||
CALL "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;
|
||||
SPB Err0;//kein Datenlisten-Bereich
|
||||
|
||||
--- NW 3: Zeigerüberprüfung ---
|
||||
L Kopf // Datenliste-Kopf
|
||||
L 16#DB // = DatenSortlistekennung ?
|
||||
<>I // Nein !
|
||||
JC Err0 // kein Datenlistebereich
|
||||
NETWORK
|
||||
TITLE = Datenlistekopf holen
|
||||
//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
|
||||
|
||||
L 1
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
CALL BLKMOV//1.-10.DW Datenliste holen
|
||||
{blk_type := 'Variant'}
|
||||
( SRCBLK := #Quelle ,
|
||||
RET_VAL := #SFC_RET_VAL ,
|
||||
DSTBLK := P#L20.0 WORD 10
|
||||
);
|
||||
|
||||
L 128
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
L #SFC_RET_VAL;
|
||||
L 2#0000_0000_0000_0000;
|
||||
<>I;
|
||||
SPB Err1;
|
||||
|
||||
L 1
|
||||
L Listenlaenge // Max.Anzahl von Datenblöcken
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
NETWORK
|
||||
TITLE = Zeigerüberprüfung
|
||||
L #Kopf;//Datenliste-Kopf
|
||||
L 16#DB;//= DatenSortlistekennung ?
|
||||
<>I;//Nein !
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L 1
|
||||
L Stammdaten // Anzahl der Stammdaten
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
L 1;
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L 9
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
L 128;
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L Stammdaten // Anzahl der Stammdaten
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
>I
|
||||
JC Err0 // kein Datenlistebereich
|
||||
L 1;
|
||||
L #Listenlaenge;//Max.Anzahl von Datenblöcken
|
||||
>I;
|
||||
SPB 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)
|
||||
L 1;
|
||||
L #Stammdaten;//Anzahl der Stammdaten
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
OPN DB[DBDatenliste]
|
||||
L 9;
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L Datenlisten_Ende
|
||||
L SFC_DB_LENGTH
|
||||
>I // Datenlisten-DB ist zu kurz!
|
||||
JC Err0 // kein Datenlisten-Bereich
|
||||
L #Stammdaten;//Anzahl der Stammdaten
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
>I;
|
||||
SPB Err0;//kein Datenlistebereich
|
||||
|
||||
L DBW [AR1Zeiger]
|
||||
L 16#DBEE // DatenSortliste-Endekennung ?
|
||||
<>I // Nein !
|
||||
JC Err0 // kein Datenlisten-Bereich
|
||||
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)
|
||||
|
||||
AUF DB[ #DBDatenliste];
|
||||
|
||||
--- 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)
|
||||
L #Datenlisten_Ende;
|
||||
L #SFC_DB_LENGTH;
|
||||
>I;//Datenlisten-DB ist zu kurz!
|
||||
SPB Err0;//kein Datenlisten-Bereich
|
||||
|
||||
OPN DB[DBDatenliste]
|
||||
L DBW[ #AR1Zeiger];
|
||||
L 16#DBEE;//DatenSortliste-Endekennung ?
|
||||
<>I;//Nein !
|
||||
SPB Err0;//kein Datenlisten-Bereich
|
||||
|
||||
L 0
|
||||
T DBW [AR1Zeiger] // Anzahl Einträge löschen
|
||||
NETWORK
|
||||
TITLE = Datenliste löschen
|
||||
L #SSDW;
|
||||
+ 14;//14.Dw
|
||||
ITD;
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
L SSDW
|
||||
+ 20 // 20.Dw
|
||||
ITD
|
||||
SLD 3
|
||||
T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AUF DB[ #DBDatenliste];
|
||||
|
||||
L Datensatzlaenge
|
||||
L Listenlaenge
|
||||
*I
|
||||
L500: T Schleife
|
||||
L 0;
|
||||
T DBW[ #AR1Zeiger];//Anzahl Einträge löschen
|
||||
|
||||
L 0 // Daten löschen
|
||||
T DBW [AR1Zeiger]
|
||||
L #SSDW;
|
||||
+ 20;//20.Dw
|
||||
ITD;
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
L AR1Zeiger
|
||||
SRD 3
|
||||
L 2
|
||||
+D
|
||||
SLD 3
|
||||
T AR1Zeiger
|
||||
L #Datensatzlaenge;
|
||||
L #Listenlaenge;
|
||||
*I;
|
||||
L500: T #Schleife;
|
||||
|
||||
L Schleife
|
||||
LOOP L500
|
||||
L 0;//Daten löschen
|
||||
T DBW[ #AR1Zeiger];
|
||||
|
||||
L #AR1Zeiger;
|
||||
SRD 3;
|
||||
L 2;
|
||||
+D;
|
||||
SLD 3;
|
||||
T #AR1Zeiger;
|
||||
|
||||
--- 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
|
||||
L #Schleife;
|
||||
LOOP L500;
|
||||
|
||||
Err: CLR // VKE = 0 bei Fehler !!!
|
||||
Ok: T RE_VAL
|
||||
NETWORK
|
||||
TITLE = Fehlerausgabe / RET_VAL
|
||||
SET;//VKE = 1 ohne Fehler !!!
|
||||
SPA Ok;
|
||||
Err0: L 2#0000_0000_0000_0001;//Kein Fifobereich
|
||||
SPA Err;
|
||||
Err1: L 2#0000_0000_0000_0010;//SFC20-Aufruf mit Fehler
|
||||
|
||||
SAVE // VKE in BIE-Bit speichern
|
||||
Err: CLR;//VKE = 0 bei Fehler !!!
|
||||
Ok: T #RE_VAL;
|
||||
|
||||
SAVE;//VKE in BIE-Bit speichern
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,65 +1,73 @@
|
||||
=== FC 125: Err_vorhanden [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Check_DB : Int
|
||||
Anfangs_DW : DInt
|
||||
Ende_DW : DInt
|
||||
Output:
|
||||
Stoerung : Bool // Störung vorhanden
|
||||
ErrDW : DInt
|
||||
ErrBits : Int
|
||||
InOut:
|
||||
Temp:
|
||||
Anzeige_DB : Int
|
||||
Zeiger : DInt // Startwert mit Offset 0
|
||||
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "Err_vorhanden" : Void
|
||||
TITLE = Störung aktiv
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Check_DB : Int;
|
||||
Anfangs_DW : DInt;
|
||||
Ende_DW : DInt;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Check-DB von "Abfangs_DW" bis "Ende_DW" checken ---
|
||||
SET // GST
|
||||
R Stoerung
|
||||
L DINT#-1 // Sonst Störung in DBD0 nicht erkennbar
|
||||
T ErrDW
|
||||
L 0
|
||||
T ErrBits
|
||||
VAR_OUTPUT
|
||||
Stoerung : Bool; // Störung vorhanden
|
||||
ErrDW : DInt;
|
||||
ErrBits : Int;
|
||||
END_VAR
|
||||
|
||||
L Check_DB
|
||||
T Anzeige_DB
|
||||
|
||||
L Anfangs_DW // Mit diesem DW beginnen
|
||||
T Zeiger // Zeiger
|
||||
|
||||
Loop: L Zeiger // Zeiger
|
||||
SLD 3
|
||||
T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
OPN DB[Anzeige_DB]
|
||||
|
||||
L DBW [AR1Zeiger] // Störungsbits
|
||||
T ErrBits
|
||||
L 0 // aktiv ?
|
||||
<>I // Ja !
|
||||
JC Err
|
||||
|
||||
L Zeiger // Startwert mit Offset 0
|
||||
L 2
|
||||
+D
|
||||
T Zeiger // Zeiger
|
||||
L Ende_DW // Letztes DW überschritten?
|
||||
<=D // Nein !
|
||||
JC Loop
|
||||
|
||||
BEU
|
||||
|
||||
Err: SET
|
||||
S Stoerung
|
||||
|
||||
L Zeiger // Zeiger
|
||||
T ErrDW
|
||||
VAR_TEMP
|
||||
Anzeige_DB : Int;
|
||||
Zeiger : DInt; // Startwert mit Offset 0
|
||||
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Check-DB von "Abfangs_DW" bis "Ende_DW" checken
|
||||
SET;//GST
|
||||
R #Stoerung;
|
||||
L DINT#-1;//Sonst Störung in DBD0 nicht erkennbar
|
||||
T #ErrDW;
|
||||
L 0;
|
||||
T #ErrBits;
|
||||
|
||||
L #Check_DB;
|
||||
T #Anzeige_DB;
|
||||
|
||||
L #Anfangs_DW;//Mit diesem DW beginnen
|
||||
T #Zeiger;//Zeiger
|
||||
|
||||
Loop: L #Zeiger;//Zeiger
|
||||
SLD 3;
|
||||
T #AR1Zeiger;//Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF DB[ #Anzeige_DB];
|
||||
|
||||
L DBW[ #AR1Zeiger];//Störungsbits
|
||||
T #ErrBits;
|
||||
L 0;//aktiv ?
|
||||
<>I;//Ja !
|
||||
SPB Err;
|
||||
|
||||
L #Zeiger;//Startwert mit Offset 0
|
||||
L 2;
|
||||
+D;
|
||||
T #Zeiger;//Zeiger
|
||||
L #Ende_DW;//Letztes DW überschritten?
|
||||
<=D;//Nein !
|
||||
SPB Loop;
|
||||
|
||||
BEA;
|
||||
|
||||
Err: SET;
|
||||
S #Stoerung;
|
||||
|
||||
L #Zeiger;//Zeiger
|
||||
T #ErrDW;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,327 +1,375 @@
|
||||
=== FC 84: FIFOChange [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
SSDB : Int // Schnittstellen-DB
|
||||
SSDW : Int // Schnittstellen-1.DW
|
||||
CH_POS : Int // Position des Eintrags, der zu ändernden Daten
|
||||
CHANGEDATEN : Pointer // Wechsel-Daten-Schnittstelle
|
||||
Output:
|
||||
RE_VAL : Byte // Rückmeldung
|
||||
InOut:
|
||||
Temp:
|
||||
Quelle : Any // Zeiger, wo Rein-Daten sind
|
||||
Ziel : Any // Zeiger, FIFO-Stelle
|
||||
Kopf : Byte // Fifo-Kennung (FF)
|
||||
Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128)
|
||||
FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze)
|
||||
Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird
|
||||
Holzeiger : Int // Zeiger, woher nächste Daten geholt werden
|
||||
Anzahl : Int // Anzahl der Datensätze (eingetragene)
|
||||
Status : Word // Status des Fifo
|
||||
Err : Byte // Fehlerbits
|
||||
MinHolzeiger : Int // Minimum Holzeiger
|
||||
MaxHolzeiger : Int // Maximum Holzeiger
|
||||
DBFifo : Word // FIFO-DB
|
||||
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
|
||||
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
|
||||
Fifo_Ende : Word // Ende des Fifo
|
||||
AlleDaten : Word // Anzahl der bytes für alle Daten
|
||||
Offset : Word // Offset zu überschreibender Datensatz
|
||||
NixSave : Bool // Status nicht speichern
|
||||
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
|
||||
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AR1Start : DInt // Startwert mit Offset 0
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "FIFOChange" : Void
|
||||
TITLE = Fifo-Modul
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
FAMILY : FIFO
|
||||
NAME : FifoIn
|
||||
VERSION : 0.1
|
||||
//COPYRIGHT by Ingenieurbüro A.Emmert
|
||||
//Ortsstr.33, D-869925 Fuchstal (Germany)
|
||||
//Tel.: 0049(0)8243-960629
|
||||
//Version: KyungBang00 / 14.04.2009
|
||||
//
|
||||
//Datenblock in Fifo überschreiben
|
||||
//SSDB: FIFO-DB
|
||||
//SSDW: FIFO-1.DW
|
||||
//CH_POS: angegebene Position überschreiben
|
||||
//CHANGEDATEN: Pointer, wo zu ändernde Daten stehen (P#DB1.DBX0.0, P#M220.0)
|
||||
//RE_VAL: Rückmeldungen:
|
||||
// Bit0: Kein Fifobereich / falscher Kopfinhalt / Endekennung
|
||||
// Bit1: SFC20-Aufruf mit Fehler
|
||||
// Bit2: Fifo ist leer
|
||||
// Bit3: Falscher Parameter bei Aufruf
|
||||
// Bit4: Position nicht belegt
|
||||
// Bit5: Bringzeiger ist ausserhalb
|
||||
// Bit6: Holzeiger ist ausserhalb
|
||||
// Bit7: Versatz Bring-/Holzeiger
|
||||
//
|
||||
VAR_INPUT
|
||||
SSDB : Int; // Schnittstellen-DB
|
||||
SSDW : Int; // Schnittstellen-1.DW
|
||||
CH_POS : Int; // Position des Eintrags, der zu ändernden Daten
|
||||
CHANGEDATEN : Pointer; // Wechsel-Daten-Schnittstelle
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Schnittstellen-DB sinnvoll ? ---
|
||||
L SSDB
|
||||
T DBFifo
|
||||
VAR_OUTPUT
|
||||
RE_VAL : Byte; // Rückmeldung
|
||||
END_VAR
|
||||
|
||||
// CALL TEST_DB
|
||||
// DB_NUMBER :=#DBFifo
|
||||
// RET_VAL :=#SFC_RET_VAL
|
||||
// DB_LENGTH :=#SFC_DB_LENGTH
|
||||
// WRITE_PROT :=#SFC_WRITE_PROT
|
||||
|
||||
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT)
|
||||
VAR_TEMP
|
||||
Quelle : Any; // Zeiger, wo Rein-Daten sind
|
||||
Ziel : Any; // Zeiger, FIFO-Stelle
|
||||
Kopf : Byte; // Fifo-Kennung (FF)
|
||||
Datensatzlaenge : Byte; // Datensatzlänge in Word (1 - 128)
|
||||
FifoLaenge : Int; // Länge des Fifo (maximale Anzahl der Datensätze)
|
||||
Bringzeiger : Int; // Zeiger, wohin nächster Eintrag gespeichert wird
|
||||
Holzeiger : Int; // Zeiger, woher nächste Daten geholt werden
|
||||
Anzahl : Int; // Anzahl der Datensätze (eingetragene)
|
||||
Status : Word; // Status des Fifo
|
||||
Err : Byte; // Fehlerbits
|
||||
MinHolzeiger : Int; // Minimum Holzeiger
|
||||
MaxHolzeiger : Int; // Maximum Holzeiger
|
||||
DBFifo : Word; // FIFO-DB
|
||||
SFC_RET_VAL : Int; // Rückmeldung SFC-Aufruf
|
||||
SFC_DB_LENGTH : Word; // Rückmeldung SFC-Aufruf
|
||||
Fifo_Ende : Word; // Ende des Fifo
|
||||
AlleDaten : Word; // Anzahl der bytes für alle Daten
|
||||
Offset : Word; // Offset zu überschreibender Datensatz
|
||||
NixSave : Bool; // Status nicht speichern
|
||||
SFC_WRITE_PROT : Bool; // Rückmeldung SFC-Aufruf
|
||||
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AR1Start : DInt; // Startwert mit Offset 0
|
||||
END_VAR
|
||||
|
||||
|
||||
L SFC_RET_VAL
|
||||
L 2#0000_0000_0000_0000
|
||||
<>I
|
||||
O SFC_WRITE_PROT
|
||||
= NixSave // Status nicht speichern
|
||||
JC Err0 // kein Fifobereich
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Schnittstellen-DB sinnvoll ?
|
||||
L #SSDB;
|
||||
T #DBFifo;
|
||||
|
||||
// CALL TEST_DB
|
||||
// DB_NUMBER :=#DBFifo
|
||||
// RET_VAL :=#SFC_RET_VAL
|
||||
// DB_LENGTH :=#SFC_DB_LENGTH
|
||||
// WRITE_PROT :=#SFC_WRITE_PROT
|
||||
|
||||
CALL "TEST_DB_TO_ATTR_DB"
|
||||
( DB_Number := #DBFifo ,
|
||||
RetVal := #SFC_RET_VAL ,
|
||||
DB_Length := #SFC_DB_LENGTH ,
|
||||
Write_Prot := #SFC_WRITE_PROT
|
||||
);
|
||||
|
||||
|
||||
--- NW 2: Quelle-Pointer erzeugen: ---
|
||||
L 16#1004 // Kennung 10 + Word=04
|
||||
T LW0 // Any-Kennung, Datentyp
|
||||
L 16#0006 // 6 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
|
||||
L #SFC_RET_VAL;
|
||||
L 2#0000_0000_0000_0000;
|
||||
<>I;
|
||||
O #SFC_WRITE_PROT;
|
||||
= #NixSave;//Status nicht speichern
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen
|
||||
NETWORK
|
||||
TITLE = Fifokopfdaten holen
|
||||
//Quelle-Pointer erzeugen:
|
||||
L 16#1004;//Kennung 10 + Word=04
|
||||
T %LW0;//Any-Kennung, Datentyp
|
||||
L 16#0006;//6 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
|
||||
|
||||
L Status
|
||||
L 2#0000_0000_1110_0000
|
||||
AW
|
||||
T Err
|
||||
JP Err // Kapitalfehler vorhanden
|
||||
CALL BLKMOV//1.-6.DW FIFO holen
|
||||
{blk_type := 'Variant'}
|
||||
( SRCBLK := #Quelle ,
|
||||
RET_VAL := #SFC_RET_VAL ,
|
||||
DSTBLK := P#L20.0 WORD 6
|
||||
);
|
||||
|
||||
L SFC_RET_VAL
|
||||
L 2#0000_0000_0000_0000
|
||||
<>I
|
||||
JC Err1
|
||||
L #Status;
|
||||
L 2#0000_0000_1110_0000;
|
||||
UW;
|
||||
T #Err;
|
||||
SPP Err;//Kapitalfehler vorhanden
|
||||
|
||||
L #SFC_RET_VAL;
|
||||
L 2#0000_0000_0000_0000;
|
||||
<>I;
|
||||
SPB Err1;
|
||||
|
||||
NETWORK
|
||||
TITLE = Zeigerüberprüfung
|
||||
L #Kopf;//Fifo-Kopf
|
||||
L 16#FF;//= Fifokennung ?
|
||||
<>I;//Nein !
|
||||
= #NixSave;//Status nicht speichern
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 1;
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 128;
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 1;
|
||||
L #FifoLaenge;//Max.Anzahl von Datenblöcken
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L #SSDW;
|
||||
+ 40;//Speichern ab 20.DW
|
||||
T #MinHolzeiger;//Minimum Bringzeiger
|
||||
|
||||
L #FifoLaenge;//Länge FIFO (in Word)
|
||||
+ -1;
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
*I;
|
||||
L 2;//DB byteorientiert
|
||||
*I;
|
||||
+ 40;//Speichern ab 20.DW
|
||||
L #SSDW;
|
||||
+I;
|
||||
T #MaxHolzeiger;//Maximum Bringzeiger
|
||||
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
L 2;//DB byteorientiert
|
||||
*I;
|
||||
L #MaxHolzeiger;//Maximum Holzeiger
|
||||
+I;//Zeiger Endekennung
|
||||
T #Fifo_Ende;
|
||||
ITD;
|
||||
T #AR1Start;//Startwert mit Offset 0
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF DB[ #DBFifo];
|
||||
|
||||
L #Fifo_Ende;
|
||||
L #SFC_DB_LENGTH;
|
||||
>I;//Fifo-DB ist zu kurz!
|
||||
SPB Err0;//kein Fifo-Bereich
|
||||
|
||||
L DBW[ #AR1Zeiger];
|
||||
L 16#FFEE;//Fifo-Endekennung ?
|
||||
<>I;//Nein !
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L #MinHolzeiger;//Minimum Holzeiger
|
||||
L #Holzeiger;//Holzeiger
|
||||
<=I;//Ok ?
|
||||
SPB W300;//Ja!
|
||||
|
||||
L 0;//Grundstellung ?
|
||||
<>I;//Nein !
|
||||
SPB Err6;//Holzeiger ist ausserhalb
|
||||
|
||||
L #Holzeiger;//Holzeiger Grundstellung ?
|
||||
<>I;//Nein !
|
||||
SPB Err6;//Holzeiger ist ausserhalb
|
||||
|
||||
L #Anzahl;//Anzahl Datensätze
|
||||
L 0;//Grundstellung ?
|
||||
<>I;//Nein !
|
||||
SPB Err6;//Holzeiger ist ausserhalb
|
||||
|
||||
L #MinHolzeiger;//Minimum Holzeiger
|
||||
T #Bringzeiger;//Bringzeiger
|
||||
T #Holzeiger;//Holzeiger
|
||||
|
||||
W300: L #MaxHolzeiger;//Maximum Holzeiger
|
||||
<=I;//Ok ?
|
||||
SPB W301;//Ja!
|
||||
SPA Err6;//Holzeiger ist ausserhalb
|
||||
|
||||
|
||||
--- NW 3: Zeigerüberprüfung ---
|
||||
L Kopf // Fifo-Kopf
|
||||
L 16#FF // = Fifokennung ?
|
||||
<>I // Nein !
|
||||
= NixSave // Status nicht speichern
|
||||
JC Err0 // kein Fifobereich
|
||||
W301: L #Bringzeiger;//Bringzeiger
|
||||
L #Holzeiger;//Holzeiger
|
||||
==I;//Identisch !
|
||||
U(;
|
||||
L #FifoLaenge;
|
||||
L #Anzahl;//Anzahl der gespeicherten Datensätze
|
||||
<>I;//Fifo noch nicht voll !
|
||||
);
|
||||
U(;
|
||||
L 0;
|
||||
<>I;//Datensätze aber noch vorhanden !
|
||||
);
|
||||
SPB Err7;//Versatz Bring-/Holzeiger
|
||||
|
||||
L 1
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
L #Bringzeiger;//Bringzeiger
|
||||
L #Holzeiger;//Holzeiger
|
||||
<>I;//Ungleich !
|
||||
U(;
|
||||
L #FifoLaenge;
|
||||
L #Anzahl;//Anzahl der gespeicherten Datensätze
|
||||
==I;//Aber Fifo ist voll !
|
||||
O(;
|
||||
L 0;
|
||||
==I;//Aber keine Datensätze vorhanden !
|
||||
);
|
||||
);
|
||||
SPB Err7;//Versatz Bring-/Holzeiger
|
||||
|
||||
L 128
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
L #Anzahl;//Anzahl der gespeicherten Datensätze
|
||||
L 0;
|
||||
==I;//Keine Datensätze vorhanden !
|
||||
SPB Err2;//Fifo ist leer
|
||||
|
||||
L 1
|
||||
L FifoLaenge // Max.Anzahl von Datenblöcken
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
NETWORK
|
||||
TITLE = Offset bilden
|
||||
L 0;
|
||||
L #CH_POS;
|
||||
>=I;
|
||||
SPB Err3;//falscher Parameter bei Aufruf
|
||||
|
||||
L SSDW
|
||||
+ 40 // Speichern ab 20.DW
|
||||
T MinHolzeiger // Minimum Bringzeiger
|
||||
L #FifoLaenge;//Max.Anzahl von Datenblöcken
|
||||
>I;
|
||||
SPB Err3;//falscher Parameter bei Aufruf
|
||||
|
||||
L FifoLaenge // Länge FIFO (in Word)
|
||||
+ -1
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
*I
|
||||
L 2 // DB byteorientiert
|
||||
*I
|
||||
+ 40 // Speichern ab 20.DW
|
||||
L SSDW
|
||||
+I
|
||||
T MaxHolzeiger // Maximum Bringzeiger
|
||||
L #Anzahl;//Anzahl der Datensätze
|
||||
L #CH_POS;
|
||||
<I;
|
||||
SPB Err4;//Fifo ist leer
|
||||
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
L 2 // DB byteorientiert
|
||||
*I
|
||||
L MaxHolzeiger // Maximum Holzeiger
|
||||
+I // Zeiger Endekennung
|
||||
T Fifo_Ende
|
||||
ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
SLD 3
|
||||
T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
+ -1;//1.Teil = Holzeiger !
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
*I;
|
||||
L 2;//DB byteorientiert
|
||||
*I;
|
||||
L #Holzeiger;//Holzeiger
|
||||
+I;
|
||||
W400: T #Offset;//Schreibzeiger
|
||||
L #MaxHolzeiger;//Maximum Holzeiger
|
||||
<=I;
|
||||
SPB Nw05;
|
||||
|
||||
OPN DB[DBFifo]
|
||||
L #FifoLaenge;//Max.Anzahl von Datenblöcken
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
*I;
|
||||
L 2;//DB byteorientiert
|
||||
*I;
|
||||
T #AlleDaten;//Bytes für alle Datensätze
|
||||
|
||||
L Fifo_Ende
|
||||
L SFC_DB_LENGTH
|
||||
>I // Fifo-DB ist zu kurz!
|
||||
JC Err0 // kein Fifo-Bereich
|
||||
L #Offset;//Schreibzeiger
|
||||
L #AlleDaten;
|
||||
-I;
|
||||
SPA W400;
|
||||
|
||||
L DBW [AR1Zeiger]
|
||||
L 16#FFEE // Fifo-Endekennung ?
|
||||
<>I // Nein !
|
||||
JC Err0 // kein Fifobereich
|
||||
NETWORK
|
||||
TITLE = Fifodaten überschreiben
|
||||
//Quelle-Pointer erzeugen:
|
||||
Nw05: L 16#1004;//Kennung 10 + Word=04
|
||||
T %LW0;
|
||||
T %LW10;//Any-Kennung, Datentyp
|
||||
L #Datensatzlaenge;//Datenbytes speichern
|
||||
T %LW2;
|
||||
T %LW12;//Wiederholungen
|
||||
|
||||
L MinHolzeiger // Minimum Holzeiger
|
||||
L Holzeiger // Holzeiger
|
||||
<=I // Ok ?
|
||||
JC W300 // Ja!
|
||||
//DATEN-Pointer übernehmen:
|
||||
L P##CHANGEDATEN;
|
||||
LAR1;
|
||||
|
||||
L 0 // Grundstellung ?
|
||||
<>I // Nein !
|
||||
JC Err6 // Holzeiger ist ausserhalb
|
||||
L W[ AR1, P#0.0];
|
||||
T %LW4;//DB_Nummer
|
||||
L D[ AR1, P#2.0];
|
||||
T %LD6;//Kennung, Adresse
|
||||
|
||||
L Holzeiger // Holzeiger Grundstellung ?
|
||||
<>I // Nein !
|
||||
JC Err6 // Holzeiger ist ausserhalb
|
||||
//Ziel-Pointer erzeugen:
|
||||
//Kennung + Datenbytes s.o.
|
||||
|
||||
L Anzahl // Anzahl Datensätze
|
||||
L 0 // Grundstellung ?
|
||||
<>I // Nein !
|
||||
JC Err6 // Holzeiger ist ausserhalb
|
||||
L #SSDB;
|
||||
T %LW14;//DB_Nummer
|
||||
L #Offset;//Adresse
|
||||
SLD 3;
|
||||
L 16#8400_0000;//Kennung: Daten
|
||||
OD;
|
||||
T %LD16;//Kennung, Adresse
|
||||
|
||||
L MinHolzeiger // Minimum Holzeiger
|
||||
T Bringzeiger // Bringzeiger
|
||||
T Holzeiger // Holzeiger
|
||||
CALL BLKMOV//FIFO-Daten speichern
|
||||
{blk_type := 'Variant'}
|
||||
( SRCBLK := #Quelle ,
|
||||
RET_VAL := #SFC_RET_VAL ,
|
||||
DSTBLK := #Ziel
|
||||
);
|
||||
|
||||
W300: L MaxHolzeiger // Maximum Holzeiger
|
||||
<=I // Ok ?
|
||||
JC W301 // Ja!
|
||||
JU Err6 // Holzeiger ist ausserhalb
|
||||
L #SFC_RET_VAL;
|
||||
L 2#0000_0000_0000_0000;
|
||||
<>I;
|
||||
SPB Err1;
|
||||
|
||||
NETWORK
|
||||
TITLE = Fehlerausgabe / RET_VAL
|
||||
SET;//VKE = 1 ohne Fehler !!!
|
||||
SPA Ok;
|
||||
Err0: L 2#0000_0000_0000_0001;//Kein Fifobereich
|
||||
T #Err;
|
||||
SPA Err;
|
||||
Err1: S %L32.1;//SFC20-Aufruf mit Fehler
|
||||
SPA Err;
|
||||
Err2: S %L32.2;//Fifo ist voll
|
||||
SPA Err;
|
||||
Err3: S %L32.3;//Falscher Parameter
|
||||
SPA Err;
|
||||
Err4: S %L32.4;//Position nicht belegt
|
||||
SPA Err;
|
||||
Err6: S %L32.6;//Holzeiger außerhalb
|
||||
SPA Err;
|
||||
Err7: S %L32.7;//Versatz Bring-/Holzeiger
|
||||
|
||||
W301: L Bringzeiger // Bringzeiger
|
||||
L Holzeiger // Holzeiger
|
||||
==I // Identisch !
|
||||
A(
|
||||
L FifoLaenge
|
||||
L Anzahl // Anzahl der gespeicherten Datensätze
|
||||
<>I // Fifo noch nicht voll !
|
||||
)
|
||||
A(
|
||||
L 0
|
||||
<>I // Datensätze aber noch vorhanden !
|
||||
)
|
||||
JC Err7 // Versatz Bring-/Holzeiger
|
||||
Err: CLR;//VKE = 0 bei Fehler !!!
|
||||
Ok: L #Err;
|
||||
T #RE_VAL;
|
||||
L #Status;
|
||||
OW;
|
||||
T #Status;
|
||||
|
||||
L Bringzeiger // Bringzeiger
|
||||
L Holzeiger // Holzeiger
|
||||
<>I // Ungleich !
|
||||
A(
|
||||
L FifoLaenge
|
||||
L Anzahl // Anzahl der gespeicherten Datensätze
|
||||
==I // Aber Fifo ist voll !
|
||||
O(
|
||||
L 0
|
||||
==I // Aber keine Datensätze vorhanden !
|
||||
)
|
||||
)
|
||||
JC Err7 // Versatz Bring-/Holzeiger
|
||||
SAVE;//VKE in BIE-Bit speichern
|
||||
|
||||
L Anzahl // Anzahl der gespeicherten Datensätze
|
||||
L 0
|
||||
==I // Keine Datensätze vorhanden !
|
||||
JC Err2 // Fifo ist leer
|
||||
NETWORK
|
||||
TITLE = Fifokopfdaten speichern
|
||||
U %L32.0;//Falscher Parameter
|
||||
U #NixSave;//Status nicht speichern
|
||||
BEB;
|
||||
|
||||
L #SSDW;
|
||||
+ 10;//Status
|
||||
ITD;
|
||||
T #AR1Start;//Startwert mit Offset 0
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
--- NW 4: Offset bilden ---
|
||||
L 0
|
||||
L CH_POS
|
||||
>=I
|
||||
JC Err3 // falscher Parameter bei Aufruf
|
||||
AUF DB[ #DBFifo];
|
||||
|
||||
L FifoLaenge // Max.Anzahl von Datenblöcken
|
||||
>I
|
||||
JC Err3 // falscher Parameter bei Aufruf
|
||||
L #Err;
|
||||
T DBW[ #AR1Zeiger];
|
||||
|
||||
L Anzahl // Anzahl der Datensätze
|
||||
L CH_POS
|
||||
<I
|
||||
JC Err4 // Fifo ist leer
|
||||
|
||||
+ -1 // 1.Teil = Holzeiger !
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
*I
|
||||
L 2 // DB byteorientiert
|
||||
*I
|
||||
L Holzeiger // Holzeiger
|
||||
+I
|
||||
W400: T Offset // Schreibzeiger
|
||||
L MaxHolzeiger // Maximum Holzeiger
|
||||
<=I
|
||||
JC Nw05
|
||||
|
||||
L FifoLaenge // Max.Anzahl von Datenblöcken
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
*I
|
||||
L 2 // DB byteorientiert
|
||||
*I
|
||||
T AlleDaten // Bytes für alle Datensätze
|
||||
|
||||
L Offset // Schreibzeiger
|
||||
L AlleDaten
|
||||
-I
|
||||
JU W400
|
||||
|
||||
|
||||
--- NW 5: Quelle-Pointer erzeugen: ---
|
||||
Nw05: L 16#1004 // Kennung 10 + Word=04
|
||||
T LW0
|
||||
T LW10 // Any-Kennung, Datentyp
|
||||
L Datensatzlaenge // Datenbytes speichern
|
||||
T LW2
|
||||
T LW12 // Wiederholungen
|
||||
|
||||
// DATEN-Pointer übernehmen:
|
||||
L P#
|
||||
LAR1
|
||||
|
||||
L NoneW [AR1,]
|
||||
T LW4 // DB_Nummer
|
||||
L NoneD [AR1,]
|
||||
T LD6 // Kennung, Adresse
|
||||
|
||||
// Ziel-Pointer erzeugen:
|
||||
// Kennung + Datenbytes s.o.
|
||||
|
||||
L SSDB
|
||||
T LW14 // DB_Nummer
|
||||
L Offset // 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) // FIFO-Daten speichern
|
||||
|
||||
L SFC_RET_VAL
|
||||
L 2#0000_0000_0000_0000
|
||||
<>I
|
||||
JC Err1
|
||||
|
||||
|
||||
--- NW 6: Fehlerausgabe / RET_VAL ---
|
||||
SET // VKE = 1 ohne Fehler !!!
|
||||
JU Ok
|
||||
Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich
|
||||
T Err
|
||||
JU Err
|
||||
Err1: S L32.1 // SFC20-Aufruf mit Fehler
|
||||
JU Err
|
||||
Err2: S L32.2 // Fifo ist voll
|
||||
JU Err
|
||||
Err3: S L32.3 // Falscher Parameter
|
||||
JU Err
|
||||
Err4: S L32.4 // Position nicht belegt
|
||||
JU Err
|
||||
Err6: S L32.6 // Holzeiger außerhalb
|
||||
JU Err
|
||||
Err7: S L32.7 // Versatz Bring-/Holzeiger
|
||||
|
||||
Err: CLR // VKE = 0 bei Fehler !!!
|
||||
Ok: L Err
|
||||
T RE_VAL
|
||||
L Status
|
||||
OW
|
||||
T Status
|
||||
|
||||
SAVE // VKE in BIE-Bit speichern
|
||||
|
||||
|
||||
--- NW 7: Fifokopfdaten speichern ---
|
||||
A L32.0 // Falscher Parameter
|
||||
A NixSave // Status nicht speichern
|
||||
BEC
|
||||
|
||||
L SSDW
|
||||
+ 10 // Status
|
||||
ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
SLD 3
|
||||
T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
OPN DB[DBFifo]
|
||||
|
||||
L Err
|
||||
T DBW [AR1Zeiger]
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,376 +1,423 @@
|
||||
=== FC 83: FIFOSearch [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
SSDB : Int // Schnittstellen-DB
|
||||
SSDW : Int // Schnittstellen-1.DW
|
||||
SEARCHDATEN : Pointer // SuchDaten-Schnittstelle
|
||||
Laenge : Int // Anzahl der DWs zum Vergleichen im Datensatz
|
||||
Output:
|
||||
RE_POS : Int // Position des Eintrags, der gesuchten Daten
|
||||
RE_VAL : Byte // Rückmeldungen
|
||||
InOut:
|
||||
Temp:
|
||||
Quelle : Any // Zeiger, wo Rein-Daten sind
|
||||
Ziel : Any // Zeiger, FIFO-Stelle
|
||||
Kopf : Byte // Fifo-Kennung (FF)
|
||||
Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128)
|
||||
FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze)
|
||||
Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird
|
||||
Holzeiger : Int // Zeiger, woher nächste Daten geholt werden
|
||||
Anzahl : Int // Anzahl der Datensätze (eingetragene)
|
||||
Status : Word // Status des Fifo
|
||||
Err : Byte // Fehlerbits
|
||||
MinHolzeiger : Int // Minimum Holzeiger
|
||||
MaxHolzeiger : Int // Maximum Holzeiger
|
||||
DBFifo : Word // FIFO-DB
|
||||
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
|
||||
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
|
||||
Fifo_Ende : Word // Ende des Fifo
|
||||
AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern
|
||||
DBSuchdaten : Word // Solldaten-DB, falls angegeben
|
||||
SuchDaten_Startpunkt : Word // SuchDaten-Startpunkt: Adresse
|
||||
SuchZeiger : Word // Suchzeiger
|
||||
Schleife : Word // Loopzähler
|
||||
NixSave : Bool // Status nicht speichern
|
||||
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
|
||||
AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AR1Start : DInt // Startwert mit Offset 0
|
||||
sRE_POS : Int // Position des Eintrags, der gesuchten Daten
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
|
||||
--- NW 1: Schnittstellen-DB sinnvoll ? ---
|
||||
TAR2
|
||||
T AR2_Speicher // AR2 zwischenspeichern
|
||||
|
||||
L SSDB
|
||||
T DBFifo
|
||||
|
||||
// CALL TEST_DB
|
||||
// DB_NUMBER :=#DBFifo
|
||||
// RET_VAL :=#SFC_RET_VAL
|
||||
// DB_LENGTH :=#SFC_DB_LENGTH
|
||||
// WRITE_PROT :=#SFC_WRITE_PROT
|
||||
|
||||
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, 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
|
||||
= NixSave // Status nicht speichern
|
||||
O SFC_WRITE_PROT
|
||||
JC Err0 // kein Fifobereich
|
||||
|
||||
|
||||
--- NW 2: Quelle-Pointer erzeugen: ---
|
||||
L 16#1004 // Kennung 10 + Word=04
|
||||
T sRE_POS // Any-Kennung, Datentyp
|
||||
L 16#0006 // 6 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 6) // 1.-6.DW FIFO holen
|
||||
|
||||
L Status
|
||||
L 2#0000_0000_1110_0000
|
||||
AW
|
||||
T Err
|
||||
JP Err // Kapitalfehler vorhanden
|
||||
|
||||
L SFC_RET_VAL
|
||||
L 2#0000_0000_0000_0000
|
||||
<>I
|
||||
JC Err1
|
||||
|
||||
|
||||
--- NW 3: Zeigerüberprüfung ---
|
||||
L Kopf // Fifo-Kopf
|
||||
L 16#FF // = Fifokennung ?
|
||||
<>I // Nein !
|
||||
= NixSave // Status nicht speichern
|
||||
JC Err0 // kein Fifobereich
|
||||
|
||||
L 1
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
|
||||
L 128
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
|
||||
L 1
|
||||
L FifoLaenge // Max.Anzahl von Datenblöcken
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
|
||||
L SSDW
|
||||
+ 40 // Speichern ab 20.DW
|
||||
T MinHolzeiger // Minimum Holzeiger
|
||||
|
||||
L FifoLaenge // Länge FIFO (in Word)
|
||||
+ -1
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
*I
|
||||
L 2 // DB byteorientiert
|
||||
*I
|
||||
+ 40 // Speichern ab 20.DW
|
||||
L SSDW
|
||||
+I
|
||||
T MaxHolzeiger // Maximum Holzeiger
|
||||
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
L 2 // DB byteorientiert
|
||||
*I
|
||||
L MaxHolzeiger // Maximum Holzeiger
|
||||
+I // Zeiger Endekennung
|
||||
T Fifo_Ende
|
||||
ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
SLD 3
|
||||
T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
OPN DB[DBFifo]
|
||||
|
||||
L Fifo_Ende
|
||||
L SFC_DB_LENGTH
|
||||
>I // Fifo-DB ist zu kurz!
|
||||
JC Err0 // kein Fifo-Bereich
|
||||
|
||||
L DBW [AR1Zeiger]
|
||||
L 16#FFEE // Fifo-Endekennung ?
|
||||
<>I // Nein !
|
||||
JC Err0 // kein Fifobereich
|
||||
|
||||
L MinHolzeiger // Minimum Holzeiger
|
||||
L Holzeiger // Holzeiger
|
||||
<=I // Ok ?
|
||||
JC W300 // Ja!
|
||||
|
||||
L 0 // Grundstellung ?
|
||||
<>I // Nein !
|
||||
JC Err6 // Holzeiger ist ausserhalb
|
||||
|
||||
L Bringzeiger // Bringzeiger Grundstellung ?
|
||||
<>I // Nein !
|
||||
JC Err6 // Holzeiger ist ausserhalb
|
||||
|
||||
L Anzahl // Anzahl Datensätze
|
||||
L 0 // Grundstellung ?
|
||||
<>I // Nein !
|
||||
JC Err6 // Holzeiger ist ausserhalb
|
||||
|
||||
L MinHolzeiger // Minimum Holzeiger
|
||||
T Bringzeiger // Bringzeiger
|
||||
T Holzeiger // Holzeiger
|
||||
|
||||
JU Err2 // Fifo ist leer
|
||||
|
||||
W300: L MaxHolzeiger // Maximum Holzeiger
|
||||
<=I // Ok ?
|
||||
JC W301 // Ja!
|
||||
JU Err6 // Holzeiger ist ausserhalb
|
||||
|
||||
|
||||
W301: L Bringzeiger // Bringzeiger
|
||||
L Holzeiger // Holzeiger
|
||||
==I // Identisch !
|
||||
A(
|
||||
L FifoLaenge
|
||||
L Anzahl // Anzahl der gespeicherten Datensätze
|
||||
<>I // Fifo noch nicht voll !
|
||||
)
|
||||
A(
|
||||
L 0
|
||||
<>I // Datensätze aber noch vorhanden !
|
||||
)
|
||||
JC Err7 // Versatz Bring-/Holzeiger
|
||||
|
||||
L Bringzeiger // Bringzeiger
|
||||
L Holzeiger // Holzeiger
|
||||
<>I // Ungleich !
|
||||
A(
|
||||
L FifoLaenge
|
||||
L Anzahl // Anzahl der gespeicherten Datensätze
|
||||
==I // Aber Fifo ist voll !
|
||||
O(
|
||||
L 0
|
||||
==I // Aber keine Datensätze vorhanden !
|
||||
)
|
||||
)
|
||||
JC Err7 // Versatz Bring-/Holzeiger
|
||||
|
||||
L Anzahl // Anzahl der gespeicherten Datensätze
|
||||
L 0
|
||||
==I // Keine Datensätze vorhanden !
|
||||
JC Err2 // Fifo ist leer
|
||||
|
||||
|
||||
--- NW 4: Fifodaten suchen ---
|
||||
L 1
|
||||
T sRE_POS // RET-POS
|
||||
|
||||
L Holzeiger // Holzeiger
|
||||
T SuchZeiger // Suchzeiger
|
||||
W400: ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
SLD 3
|
||||
T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
// DATEN-Pointer übernehmen:
|
||||
L P#
|
||||
LAR2
|
||||
|
||||
L NoneW [AR2,]
|
||||
T DBSuchdaten // Solldaten-DB
|
||||
|
||||
L DBSuchdaten // Solldaten-DB
|
||||
L 0 // Angegeben ?
|
||||
==I // Nein
|
||||
JC W401
|
||||
|
||||
// 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 Err1 // SFC20-Aufruf mit Fehler
|
||||
|
||||
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 // Indaten-DB ist zu kurz
|
||||
JC Err1 // SFC20-Aufruf mit Fehler
|
||||
|
||||
W401: L NoneD [AR2,] // Kennung, Adresse
|
||||
LAR2
|
||||
|
||||
L Laenge // Anzahl der DWs zum Vergleichen im Datensatz
|
||||
L400: T Schleife
|
||||
|
||||
L DBSuchdaten // Solldaten-DB
|
||||
L 0 // Angegeben ?
|
||||
==I // Nein
|
||||
JC W402
|
||||
|
||||
OPN DB[DBSuchdaten]
|
||||
|
||||
W402: L NoneW [AR2,] // Mit Solldaten überprüfen
|
||||
OPN DB[DBFifo]
|
||||
L DBW [AR1Zeiger] // Fifo-Daten lesen
|
||||
<>I // nicht identisch !
|
||||
JC W403
|
||||
|
||||
L AR1Start // Startwert mit Offset 0
|
||||
+ DINT#2
|
||||
T AR1Start // Startwert mit nächstem Offset
|
||||
SLD 3
|
||||
T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
ADDAR2 P#2.0
|
||||
|
||||
L Schleife
|
||||
LOOP L400
|
||||
|
||||
JU Ende // Datensatz ist in Fifo enthalten
|
||||
|
||||
W403: L sRE_POS // RET-POS
|
||||
+ 1
|
||||
T sRE_POS // RET-POS
|
||||
L Anzahl // Anzahl der Daten im Fifo
|
||||
>I // Alle Datensätze sind durchsucht
|
||||
JC Err2
|
||||
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
L 2 // DB byteorientiert
|
||||
*I
|
||||
L SuchZeiger // Suchzeiger
|
||||
+I
|
||||
T SuchZeiger // Suchzeiger
|
||||
L MaxHolzeiger // Maximum Holzeiger
|
||||
<=I // Ende erreicht? Nein!
|
||||
JC W404
|
||||
|
||||
L MinHolzeiger // Minimum Holzeiger
|
||||
T SuchZeiger
|
||||
|
||||
W404: L SuchZeiger // Suchzeiger
|
||||
JU W400
|
||||
|
||||
|
||||
--- NW 5: Fehlerausgabe / RET_VAL ---
|
||||
Ende: SET // VKE = 1 ohne Fehler !!!
|
||||
JU Ok
|
||||
Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich
|
||||
T Err
|
||||
JU Err
|
||||
Err1: S L32.1 // SFC20-Aufruf mit Fehler
|
||||
JU Err
|
||||
Err2: S L32.2 // Fifo ist leer
|
||||
JU Err
|
||||
Err6: S L32.6 // Holzeiger außerhalb
|
||||
JU Err
|
||||
Err7: S L32.7 // Versatz Bring-/Holzeiger
|
||||
|
||||
Err: L 0
|
||||
T sRE_POS // RET-POS = 0
|
||||
|
||||
CLR // VKE = 0 bei Fehler !!!
|
||||
|
||||
Ok: L Err
|
||||
T RE_VAL
|
||||
L Status
|
||||
OW
|
||||
T Status
|
||||
|
||||
SAVE // VKE in BIE-Bit speichern
|
||||
|
||||
|
||||
--- NW 6: Fifokopfdaten speichern ---
|
||||
L AR2_Speicher // AR2 zurückspeichern
|
||||
LAR2
|
||||
|
||||
A L32.0 // Falscher Parameter
|
||||
A NixSave // Status nicht speichern
|
||||
BEC
|
||||
|
||||
L SSDW
|
||||
+ 10 // Status
|
||||
ITD
|
||||
T AR1Start // Startwert mit Offset 0
|
||||
SLD 3
|
||||
T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
FUNCTION "FIFOSearch" : Void
|
||||
TITLE = Fifo-Modul
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
FAMILY : FIFO
|
||||
NAME : FifoIn
|
||||
VERSION : 0.1
|
||||
//COPYRIGHT by Ingenieurbüro A.Emmert
|
||||
//Ortsstr.33, D-869925 Fuchstal (Germany)
|
||||
//Tel.: 0049(0)8243-960629
|
||||
//Version: KyungBang00 / 14.04.2009
|
||||
//
|
||||
//Datenblock in Fifo suchen
|
||||
//SSDB: FIFO-DB
|
||||
//SSDW: FIFO-1.DW
|
||||
//SEARCHDATEN: Pointer, wo zu suchende Daten stehen (P#DB1.DBX0.0, P#M220.0)
|
||||
//RE_POS: Position an welcher sich Datensatz befindet
|
||||
//RE_VAL: Rückmeldungen:
|
||||
// Bit0: Kein Fifobereich / falscher Kopfinhalt / Endekennung
|
||||
// Bit1: SFC20-Aufruf mit Fehler
|
||||
// Bit2: Fifo ist leer
|
||||
// Bit3: Frei
|
||||
// Bit4: Frei
|
||||
// Bit5: Bringzeiger ist ausserhalb
|
||||
// Bit6: Holzeiger ist ausserhalb
|
||||
// Bit7: Versatz Bring-/Holzeiger
|
||||
//
|
||||
VAR_INPUT
|
||||
SSDB : Int; // Schnittstellen-DB
|
||||
SSDW : Int; // Schnittstellen-1.DW
|
||||
SEARCHDATEN : Pointer; // SuchDaten-Schnittstelle
|
||||
Laenge : Int; // Anzahl der DWs zum Vergleichen im Datensatz
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
RE_POS : Int; // Position des Eintrags, der gesuchten Daten
|
||||
RE_VAL : Byte; // Rückmeldungen
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
Quelle : Any; // Zeiger, wo Rein-Daten sind
|
||||
Ziel : Any; // Zeiger, FIFO-Stelle
|
||||
Kopf : Byte; // Fifo-Kennung (FF)
|
||||
Datensatzlaenge : Byte; // Datensatzlänge in Word (1 - 128)
|
||||
FifoLaenge : Int; // Länge des Fifo (maximale Anzahl der Datensätze)
|
||||
Bringzeiger : Int; // Zeiger, wohin nächster Eintrag gespeichert wird
|
||||
Holzeiger : Int; // Zeiger, woher nächste Daten geholt werden
|
||||
Anzahl : Int; // Anzahl der Datensätze (eingetragene)
|
||||
Status : Word; // Status des Fifo
|
||||
Err : Byte; // Fehlerbits
|
||||
MinHolzeiger : Int; // Minimum Holzeiger
|
||||
MaxHolzeiger : Int; // Maximum Holzeiger
|
||||
DBFifo : Word; // FIFO-DB
|
||||
SFC_RET_VAL : Int; // Rückmeldung SFC-Aufruf
|
||||
SFC_DB_LENGTH : Word; // Rückmeldung SFC-Aufruf
|
||||
Fifo_Ende : Word; // Ende des Fifo
|
||||
AR2_Speicher : DWord; // Adress-Register 2 zwischenspeichern
|
||||
DBSuchdaten : Word; // Solldaten-DB, falls angegeben
|
||||
SuchDaten_Startpunkt : Word; // SuchDaten-Startpunkt: Adresse
|
||||
SuchZeiger : Word; // Suchzeiger
|
||||
Schleife : Word; // Loopzähler
|
||||
NixSave : Bool; // Status nicht speichern
|
||||
SFC_WRITE_PROT : Bool; // Rückmeldung SFC-Aufruf
|
||||
AR1Zeiger : DWord; // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
AR1Start : DInt; // Startwert mit Offset 0
|
||||
sRE_POS : Int; // Position des Eintrags, der gesuchten Daten
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Schnittstellen-DB sinnvoll ?
|
||||
TAR2;
|
||||
T #AR2_Speicher;//AR2 zwischenspeichern
|
||||
|
||||
L #SSDB;
|
||||
T #DBFifo;
|
||||
|
||||
// CALL TEST_DB
|
||||
// DB_NUMBER :=#DBFifo
|
||||
// RET_VAL :=#SFC_RET_VAL
|
||||
// DB_LENGTH :=#SFC_DB_LENGTH
|
||||
// WRITE_PROT :=#SFC_WRITE_PROT
|
||||
|
||||
CALL "TEST_DB_TO_ATTR_DB"
|
||||
( DB_Number := #DBFifo ,
|
||||
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;
|
||||
= #NixSave;//Status nicht speichern
|
||||
O #SFC_WRITE_PROT;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
NETWORK
|
||||
TITLE = Fifokopfdaten holen
|
||||
//Quelle-Pointer erzeugen:
|
||||
L 16#1004;//Kennung 10 + Word=04
|
||||
T #sRE_POS;//Any-Kennung, Datentyp
|
||||
L 16#0006;//6 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 BLKMOV//1.-6.DW FIFO holen
|
||||
{blk_type := 'Variant'}
|
||||
( SRCBLK := #Quelle ,
|
||||
RET_VAL := #SFC_RET_VAL ,
|
||||
DSTBLK := P#L20.0 WORD 6
|
||||
);
|
||||
|
||||
L #Status;
|
||||
L 2#0000_0000_1110_0000;
|
||||
UW;
|
||||
T #Err;
|
||||
SPP Err;//Kapitalfehler vorhanden
|
||||
|
||||
L #SFC_RET_VAL;
|
||||
L 2#0000_0000_0000_0000;
|
||||
<>I;
|
||||
SPB Err1;
|
||||
|
||||
NETWORK
|
||||
TITLE = Zeigerüberprüfung
|
||||
L #Kopf;//Fifo-Kopf
|
||||
L 16#FF;//= Fifokennung ?
|
||||
<>I;//Nein !
|
||||
= #NixSave;//Status nicht speichern
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 1;
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 128;
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 1;
|
||||
L #FifoLaenge;//Max.Anzahl von Datenblöcken
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L #SSDW;
|
||||
+ 40;//Speichern ab 20.DW
|
||||
T #MinHolzeiger;//Minimum Holzeiger
|
||||
|
||||
L #FifoLaenge;//Länge FIFO (in Word)
|
||||
+ -1;
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
*I;
|
||||
L 2;//DB byteorientiert
|
||||
*I;
|
||||
+ 40;//Speichern ab 20.DW
|
||||
L #SSDW;
|
||||
+I;
|
||||
T #MaxHolzeiger;//Maximum Holzeiger
|
||||
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
L 2;//DB byteorientiert
|
||||
*I;
|
||||
L #MaxHolzeiger;//Maximum Holzeiger
|
||||
+I;//Zeiger Endekennung
|
||||
T #Fifo_Ende;
|
||||
ITD;
|
||||
T #AR1Start;//Startwert mit Offset 0
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF DB[ #DBFifo];
|
||||
|
||||
L #Fifo_Ende;
|
||||
L #SFC_DB_LENGTH;
|
||||
>I;//Fifo-DB ist zu kurz!
|
||||
SPB Err0;//kein Fifo-Bereich
|
||||
|
||||
L DBW[ #AR1Zeiger];
|
||||
L 16#FFEE;//Fifo-Endekennung ?
|
||||
<>I;//Nein !
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L #MinHolzeiger;//Minimum Holzeiger
|
||||
L #Holzeiger;//Holzeiger
|
||||
<=I;//Ok ?
|
||||
SPB W300;//Ja!
|
||||
|
||||
L 0;//Grundstellung ?
|
||||
<>I;//Nein !
|
||||
SPB Err6;//Holzeiger ist ausserhalb
|
||||
|
||||
L #Bringzeiger;//Bringzeiger Grundstellung ?
|
||||
<>I;//Nein !
|
||||
SPB Err6;//Holzeiger ist ausserhalb
|
||||
|
||||
L #Anzahl;//Anzahl Datensätze
|
||||
L 0;//Grundstellung ?
|
||||
<>I;//Nein !
|
||||
SPB Err6;//Holzeiger ist ausserhalb
|
||||
|
||||
L #MinHolzeiger;//Minimum Holzeiger
|
||||
T #Bringzeiger;//Bringzeiger
|
||||
T #Holzeiger;//Holzeiger
|
||||
|
||||
SPA Err2;//Fifo ist leer
|
||||
|
||||
W300: L #MaxHolzeiger;//Maximum Holzeiger
|
||||
<=I;//Ok ?
|
||||
SPB W301;//Ja!
|
||||
SPA Err6;//Holzeiger ist ausserhalb
|
||||
|
||||
|
||||
W301: L #Bringzeiger;//Bringzeiger
|
||||
L #Holzeiger;//Holzeiger
|
||||
==I;//Identisch !
|
||||
U(;
|
||||
L #FifoLaenge;
|
||||
L #Anzahl;//Anzahl der gespeicherten Datensätze
|
||||
<>I;//Fifo noch nicht voll !
|
||||
);
|
||||
U(;
|
||||
L 0;
|
||||
<>I;//Datensätze aber noch vorhanden !
|
||||
);
|
||||
SPB Err7;//Versatz Bring-/Holzeiger
|
||||
|
||||
L #Bringzeiger;//Bringzeiger
|
||||
L #Holzeiger;//Holzeiger
|
||||
<>I;//Ungleich !
|
||||
U(;
|
||||
L #FifoLaenge;
|
||||
L #Anzahl;//Anzahl der gespeicherten Datensätze
|
||||
==I;//Aber Fifo ist voll !
|
||||
O(;
|
||||
L 0;
|
||||
==I;//Aber keine Datensätze vorhanden !
|
||||
);
|
||||
);
|
||||
SPB Err7;//Versatz Bring-/Holzeiger
|
||||
|
||||
L #Anzahl;//Anzahl der gespeicherten Datensätze
|
||||
L 0;
|
||||
==I;//Keine Datensätze vorhanden !
|
||||
SPB Err2;//Fifo ist leer
|
||||
|
||||
NETWORK
|
||||
TITLE = Fifodaten suchen
|
||||
L 1;
|
||||
T #sRE_POS;//RET-POS
|
||||
|
||||
L #Holzeiger;//Holzeiger
|
||||
T #SuchZeiger;//Suchzeiger
|
||||
W400: ITD;
|
||||
T #AR1Start;//Startwert mit Offset 0
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
//DATEN-Pointer übernehmen:
|
||||
L P##SEARCHDATEN;
|
||||
LAR2;
|
||||
|
||||
L W[ AR2, P#0.0];
|
||||
T #DBSuchdaten;//Solldaten-DB
|
||||
|
||||
L #DBSuchdaten;//Solldaten-DB
|
||||
L 0;//Angegeben ?
|
||||
==I;//Nein
|
||||
SPB W401;
|
||||
|
||||
// CALL TEST_DB
|
||||
// DB_NUMBER :=#DBSuchdaten
|
||||
// RET_VAL :=#SFC_RET_VAL
|
||||
// DB_LENGTH :=#SFC_DB_LENGTH
|
||||
// WRITE_PROT :=#SFC_WRITE_PROT
|
||||
|
||||
CALL "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 !
|
||||
SPB Err1;//SFC20-Aufruf mit Fehler
|
||||
|
||||
L D[ AR2, P#2.0];//Kennung, Adresse
|
||||
L 16#00FF_FFFF;//Ohne Kennung
|
||||
UW;
|
||||
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;//Indaten-DB ist zu kurz
|
||||
SPB Err1;//SFC20-Aufruf mit Fehler
|
||||
|
||||
W401: L D[ AR2, P#2.0];//Kennung, Adresse
|
||||
LAR2;
|
||||
|
||||
L #Laenge;//Anzahl der DWs zum Vergleichen im Datensatz
|
||||
L400: T #Schleife;
|
||||
|
||||
L #DBSuchdaten;//Solldaten-DB
|
||||
L 0;//Angegeben ?
|
||||
==I;//Nein
|
||||
SPB W402;
|
||||
|
||||
AUF DB[ #DBSuchdaten];
|
||||
|
||||
W402: L W[ AR2, P#0.0];//Mit Solldaten überprüfen
|
||||
AUF DB[ #DBFifo];
|
||||
L DBW[ #AR1Zeiger];//Fifo-Daten lesen
|
||||
<>I;//nicht identisch !
|
||||
SPB W403;
|
||||
|
||||
L #AR1Start;//Startwert mit Offset 0
|
||||
+ DINT#2;
|
||||
T #AR1Start;//Startwert mit nächstem Offset
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
+AR2 P#2.0;
|
||||
|
||||
L #Schleife;
|
||||
LOOP L400;
|
||||
|
||||
SPA Ende;//Datensatz ist in Fifo enthalten
|
||||
|
||||
W403: L #sRE_POS;//RET-POS
|
||||
+ 1;
|
||||
T #sRE_POS;//RET-POS
|
||||
L #Anzahl;//Anzahl der Daten im Fifo
|
||||
>I;//Alle Datensätze sind durchsucht
|
||||
SPB Err2;
|
||||
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
L 2;//DB byteorientiert
|
||||
*I;
|
||||
L #SuchZeiger;//Suchzeiger
|
||||
+I;
|
||||
T #SuchZeiger;//Suchzeiger
|
||||
L #MaxHolzeiger;//Maximum Holzeiger
|
||||
<=I;//Ende erreicht? Nein!
|
||||
SPB W404;
|
||||
|
||||
L #MinHolzeiger;//Minimum Holzeiger
|
||||
T #SuchZeiger;
|
||||
|
||||
W404: L #SuchZeiger;//Suchzeiger
|
||||
SPA W400;
|
||||
|
||||
NETWORK
|
||||
TITLE = Fehlerausgabe / RET_VAL
|
||||
Ende: SET;//VKE = 1 ohne Fehler !!!
|
||||
SPA Ok;
|
||||
Err0: L 2#0000_0000_0000_0001;//Kein Fifobereich
|
||||
T #Err;
|
||||
SPA Err;
|
||||
Err1: S %L32.1;//SFC20-Aufruf mit Fehler
|
||||
SPA Err;
|
||||
Err2: S %L32.2;//Fifo ist leer
|
||||
SPA Err;
|
||||
Err6: S %L32.6;//Holzeiger außerhalb
|
||||
SPA Err;
|
||||
Err7: S %L32.7;//Versatz Bring-/Holzeiger
|
||||
|
||||
Err: L 0;
|
||||
T #sRE_POS;//RET-POS = 0
|
||||
|
||||
CLR;//VKE = 0 bei Fehler !!!
|
||||
|
||||
Ok: L #Err;
|
||||
T #RE_VAL;
|
||||
L #Status;
|
||||
OW;
|
||||
T #Status;
|
||||
|
||||
SAVE;//VKE in BIE-Bit speichern
|
||||
|
||||
NETWORK
|
||||
TITLE = Fifokopfdaten speichern
|
||||
L #AR2_Speicher;//AR2 zurückspeichern
|
||||
LAR2;
|
||||
|
||||
U %L32.0;//Falscher Parameter
|
||||
U #NixSave;//Status nicht speichern
|
||||
BEB;
|
||||
|
||||
L #SSDW;
|
||||
+ 10;//Status
|
||||
ITD;
|
||||
T #AR1Start;//Startwert mit Offset 0
|
||||
SLD 3;
|
||||
T #AR1Zeiger;///Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes)
|
||||
|
||||
AUF DB[ #DBFifo];
|
||||
|
||||
L #Err;
|
||||
T DBW[ #AR1Zeiger];
|
||||
|
||||
NETWORK
|
||||
TITLE =
|
||||
L #sRE_POS;
|
||||
T #RE_POS;
|
||||
END_FUNCTION
|
||||
|
||||
OPN DB[DBFifo]
|
||||
|
||||
L Err
|
||||
T DBW [AR1Zeiger]
|
||||
|
||||
|
||||
--- NW 7: ---
|
||||
L sRE_POS
|
||||
T RE_POS
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,204 +1,248 @@
|
||||
=== FC 82: FifoReset [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
SSDB : Int // Schnittstellen-DB
|
||||
SSDW : Int // Schnittstellen-1.DW
|
||||
PARA : Word // Aufrufparameter (Durchlaufspeicher?)
|
||||
Output:
|
||||
RE_VAL : Byte // Rückmeldung
|
||||
InOut:
|
||||
Temp:
|
||||
Quelle : Any // Zeiger, wo Rein-Daten sind
|
||||
Kopf : Byte // Fifo-Kennung (FF)
|
||||
Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128)
|
||||
FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze)
|
||||
Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird
|
||||
Holzeiger : Int // Zeiger, woher nächste Daten geholt werden
|
||||
Anzahl : Int // Anzahl der Datensätze (eingetragene)
|
||||
Status : Word // Status des Fifo
|
||||
DBFifo : Word // FIFO-DB
|
||||
SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf
|
||||
SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf
|
||||
Fifo_Ende : Word // Ende des Fifo
|
||||
Schleife : Word // Loopzähler
|
||||
SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "FifoReset" : Void
|
||||
TITLE = Fifo-Modul
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : IBAE
|
||||
FAMILY : FIFO
|
||||
NAME : FifoIn
|
||||
VERSION : 0.1
|
||||
//COPYRIGHT by Ingenieurbüro A.Emmert
|
||||
//Ortsstr.33, D-869925 Fuchstal (Germany)
|
||||
//Tel.: 0049(0)8243-1254
|
||||
//Version: ILS2100 / 06.11.2009
|
||||
//
|
||||
//Fifo resetten
|
||||
//SSDB: FIFO-DB
|
||||
//SSDW: FIFO-1.DW
|
||||
//PARA: Aufrufparameter 00XX:
|
||||
// XX: 00 = Normaler FIFO (alles löschen)
|
||||
// D0 = Durchlaufspeicher (alles mit Nullen füllen)
|
||||
// D1 = Durchlaufspeicher (alles mit FFFF füllen)
|
||||
// Rückmeldungen:
|
||||
// Bit0: Kein Fifobereich / falscher Kopfinhalt / Endekennung
|
||||
// Bit1: SFC20-Aufruf mit Fehler
|
||||
// Bit2: Frei
|
||||
// Bit3: Frei
|
||||
// Bit4: Frei
|
||||
// Bit5: Frei
|
||||
// Bit6: Frei
|
||||
// Bit7: Frei
|
||||
//
|
||||
VAR_INPUT
|
||||
SSDB : Int; // Schnittstellen-DB
|
||||
SSDW : Int; // Schnittstellen-1.DW
|
||||
PARA : Word; // Aufrufparameter (Durchlaufspeicher?)
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Schnittstellen-DB sinnvoll ? ---
|
||||
L SSDB
|
||||
T DBFifo
|
||||
VAR_OUTPUT
|
||||
RE_VAL : Byte; // Rückmeldung
|
||||
END_VAR
|
||||
|
||||
// CALL TEST_DB
|
||||
// DB_NUMBER :=#DBFifo
|
||||
// RET_VAL :=#SFC_RET_VAL
|
||||
// DB_LENGTH :=#SFC_DB_LENGTH
|
||||
// WRITE_PROT :=#SFC_WRITE_PROT
|
||||
|
||||
CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, 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 Fifobereich
|
||||
VAR_TEMP
|
||||
Quelle : Any; // Zeiger, wo Rein-Daten sind
|
||||
Kopf : Byte; // Fifo-Kennung (FF)
|
||||
Datensatzlaenge : Byte; // Datensatzlänge in Word (1 - 128)
|
||||
FifoLaenge : Int; // Länge des Fifo (maximale Anzahl der Datensätze)
|
||||
Bringzeiger : Int; // Zeiger, wohin nächster Eintrag gespeichert wird
|
||||
Holzeiger : Int; // Zeiger, woher nächste Daten geholt werden
|
||||
Anzahl : Int; // Anzahl der Datensätze (eingetragene)
|
||||
Status : Word; // Status des Fifo
|
||||
DBFifo : Word; // FIFO-DB
|
||||
SFC_RET_VAL : Int; // Rückmeldung SFC-Aufruf
|
||||
SFC_DB_LENGTH : Word; // Rückmeldung SFC-Aufruf
|
||||
Fifo_Ende : Word; // Ende des Fifo
|
||||
Schleife : Word; // Loopzähler
|
||||
SFC_WRITE_PROT : Bool; // Rückmeldung SFC-Aufruf
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Quelle-Pointer erzeugen: ---
|
||||
L 16#1004 // Kennung 10 + Word=04
|
||||
T LW0 // Any-Kennung, Datentyp
|
||||
L 16#0006 // 6 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
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Schnittstellen-DB sinnvoll ?
|
||||
L #SSDB;
|
||||
T #DBFifo;
|
||||
|
||||
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L10.0 WORD 6) // 1.-6.DW FIFO holen
|
||||
// CALL TEST_DB
|
||||
// DB_NUMBER :=#DBFifo
|
||||
// RET_VAL :=#SFC_RET_VAL
|
||||
// DB_LENGTH :=#SFC_DB_LENGTH
|
||||
// WRITE_PROT :=#SFC_WRITE_PROT
|
||||
|
||||
L SFC_RET_VAL
|
||||
L 2#0000_0000_0000_0000
|
||||
<>I
|
||||
JC Err1
|
||||
CALL "TEST_DB_TO_ATTR_DB"
|
||||
( DB_Number := #DBFifo ,
|
||||
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;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
NETWORK
|
||||
TITLE = Fifokopfdaten holen
|
||||
//Quelle-Pointer erzeugen:
|
||||
L 16#1004;//Kennung 10 + Word=04
|
||||
T %LW0;//Any-Kennung, Datentyp
|
||||
L 16#0006;//6 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 BLKMOV//1.-6.DW FIFO holen
|
||||
{blk_type := 'Variant'}
|
||||
( SRCBLK := #Quelle ,
|
||||
RET_VAL := #SFC_RET_VAL ,
|
||||
DSTBLK := P#L10.0 WORD 6
|
||||
);
|
||||
|
||||
L #SFC_RET_VAL;
|
||||
L 2#0000_0000_0000_0000;
|
||||
<>I;
|
||||
SPB Err1;
|
||||
|
||||
NETWORK
|
||||
TITLE = Zeigerüberprüfung
|
||||
L #Kopf;//Fifo-Kopf
|
||||
L 16#FF;//= Fifokennung ?
|
||||
<>I;//Nein !
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 1;
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 128;
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L 1;
|
||||
L #FifoLaenge;//Max.Anzahl von Datenblöcken
|
||||
>I;
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
L #FifoLaenge;//Länge FIFO (in Word)
|
||||
L #Datensatzlaenge;//Datenblocklänge
|
||||
*I;
|
||||
L 2;//DB byteorientiert
|
||||
*I;
|
||||
+ 40;//Speichern ab 20.DW
|
||||
L #SSDW;
|
||||
+I;
|
||||
T #Fifo_Ende;
|
||||
SLW 3;//Pointer erzeugen
|
||||
LAR1;
|
||||
|
||||
AUF DB[ #DBFifo];
|
||||
|
||||
L #Fifo_Ende;
|
||||
L #SFC_DB_LENGTH;
|
||||
>I;//Fifo-DB ist zu kurz!
|
||||
SPB Err0;//kein Fifo-Bereich
|
||||
|
||||
L DBW[ AR1, P#0.0];
|
||||
L 16#FFEE;//Fifo-Endekennung ?
|
||||
<>I;//Nein !
|
||||
SPB Err0;//kein Fifobereich
|
||||
|
||||
NETWORK
|
||||
TITLE = Fifo-Daten löschen
|
||||
L #SSDW;
|
||||
+ 4;//Ab 2.Dw
|
||||
SLW 3;//Pointer erzeugen
|
||||
LAR1;
|
||||
|
||||
AUF DB[ #DBFifo];
|
||||
|
||||
L #Datensatzlaenge;
|
||||
L #FifoLaenge;
|
||||
*I;
|
||||
+ 18;//18 Datenwörter (wortorientiert)
|
||||
L400: T #Schleife;
|
||||
|
||||
L 0;
|
||||
T DBW[ AR1, P#0.0];
|
||||
|
||||
+AR1 P#2.0;
|
||||
|
||||
L #Schleife;
|
||||
LOOP L400;
|
||||
|
||||
|
||||
--- NW 3: Zeigerüberprüfung ---
|
||||
L Kopf // Fifo-Kopf
|
||||
L 16#FF // = Fifokennung ?
|
||||
<>I // Nein !
|
||||
JC Err0 // kein Fifobereich
|
||||
NETWORK
|
||||
TITLE = Durchlaufspeicher ?
|
||||
L #PARA;//Aufrufparameter
|
||||
SRW 4;
|
||||
L 16#000D;//Durchlaufspeicher ?
|
||||
<>I;//Nein !
|
||||
SPB N006;
|
||||
|
||||
L 1
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
L #SSDW;
|
||||
+ 4;//Speichern ab 4.DW
|
||||
SLW 3;//Pointer erzeugen
|
||||
LAR1;
|
||||
|
||||
L 128
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
AUF DB[ #DBFifo];
|
||||
|
||||
L 1
|
||||
L FifoLaenge // Max.Anzahl von Datenblöcken
|
||||
>I
|
||||
JC Err0 // kein Fifobereich
|
||||
L #SSDW;
|
||||
+ 40;//1.Speicherzelle
|
||||
T DBW[ AR1, P#0.0];//Bringzeiger
|
||||
T DBW[ AR1, P#2.0];//Holzeiger
|
||||
|
||||
L FifoLaenge // Länge FIFO (in Word)
|
||||
L Datensatzlaenge // Datenblocklänge
|
||||
*I
|
||||
L 2 // DB byteorientiert
|
||||
*I
|
||||
+ 40 // Speichern ab 20.DW
|
||||
L SSDW
|
||||
+I
|
||||
T Fifo_Ende
|
||||
SLW 3 // Pointer erzeugen
|
||||
LAR1
|
||||
L #FifoLaenge;//Fifo ist voll
|
||||
T DBW[ AR1, P#4.0];//Anzahl
|
||||
|
||||
OPN DB[DBFifo]
|
||||
L #PARA;//Aufrufparameter
|
||||
L 16#00D1;//Durchlaufspeicher mit FFFF füllen
|
||||
<>I;//Nein !
|
||||
SPB N006;
|
||||
|
||||
L Fifo_Ende
|
||||
L SFC_DB_LENGTH
|
||||
>I // Fifo-DB ist zu kurz!
|
||||
JC Err0 // kein Fifo-Bereich
|
||||
L #FifoLaenge;//Fifo ist voll
|
||||
T DBW[ AR1, P#8.0];//1.Zusatz-Dw (Anzahl der Daten)
|
||||
|
||||
L DBW [AR1,]
|
||||
L 16#FFEE // Fifo-Endekennung ?
|
||||
<>I // Nein !
|
||||
JC Err0 // kein Fifobereich
|
||||
L 2#0000_0000_0000_0011;//Daten vorhanden/kommen raus
|
||||
T DBW[ AR1, P#14.0];//4.Zusatz-Dw (Status)
|
||||
|
||||
L #SSDW;
|
||||
+ 40;//Ab 20.Dw
|
||||
SLW 3;//Pointer erzeugen
|
||||
LAR1;
|
||||
|
||||
--- NW 4: Fifo-Daten löschen ---
|
||||
L SSDW
|
||||
+ 4 // Ab 2.Dw
|
||||
SLW 3 // Pointer erzeugen
|
||||
LAR1
|
||||
AUF DB[ #DBFifo];
|
||||
|
||||
OPN DB[DBFifo]
|
||||
L #Datensatzlaenge;
|
||||
L #FifoLaenge;
|
||||
*I;
|
||||
L500: T #Schleife;
|
||||
|
||||
L Datensatzlaenge
|
||||
L FifoLaenge
|
||||
*I
|
||||
+ 18 // 18 Datenwörter (wortorientiert)
|
||||
L400: T Schleife
|
||||
L 16#FFFF;
|
||||
T DBW[ AR1, P#0.0];
|
||||
|
||||
L 0
|
||||
T DBW [AR1,]
|
||||
+AR1 P#2.0;
|
||||
|
||||
ADDAR1 P#2.0
|
||||
L #Schleife;
|
||||
LOOP L500;
|
||||
|
||||
L Schleife
|
||||
LOOP L400
|
||||
NETWORK
|
||||
TITLE = Fehlerausgabe / RET_VAL
|
||||
N006: SET;//VKE = 1 ohne Fehler !!!
|
||||
L 2#0000_0000_0000_0000;
|
||||
SPA Ok;
|
||||
Err0: L 2#0000_0000_0000_0001;//Kein Fifobereich
|
||||
SPA 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
|
||||
|
||||
--- NW 5: Durchlaufspeicher ? ---
|
||||
L PARA // Aufrufparameter
|
||||
SRW 4
|
||||
L 16#000D // Durchlaufspeicher ?
|
||||
<>I // Nein !
|
||||
JC N006
|
||||
|
||||
L SSDW
|
||||
+ 4 // Speichern ab 4.DW
|
||||
SLW 3 // Pointer erzeugen
|
||||
LAR1
|
||||
|
||||
OPN DB[DBFifo]
|
||||
|
||||
L SSDW
|
||||
+ 40 // 1.Speicherzelle
|
||||
T DBW [AR1,] // Bringzeiger
|
||||
T DBW [AR1,] // Holzeiger
|
||||
|
||||
L FifoLaenge // Fifo ist voll
|
||||
T DBW [AR1,] // Anzahl
|
||||
|
||||
L PARA // Aufrufparameter
|
||||
L 16#00D1 // Durchlaufspeicher mit FFFF füllen
|
||||
<>I // Nein !
|
||||
JC N006
|
||||
|
||||
L FifoLaenge // Fifo ist voll
|
||||
T DBW [AR1,] // 1.Zusatz-Dw (Anzahl der Daten)
|
||||
|
||||
L 2#0000_0000_0000_0011 // Daten vorhanden/kommen raus
|
||||
T DBW [AR1,] // 4.Zusatz-Dw (Status)
|
||||
|
||||
L SSDW
|
||||
+ 40 // Ab 20.Dw
|
||||
SLW 3 // Pointer erzeugen
|
||||
LAR1
|
||||
|
||||
OPN DB[DBFifo]
|
||||
|
||||
L Datensatzlaenge
|
||||
L FifoLaenge
|
||||
*I
|
||||
L500: T Schleife
|
||||
|
||||
L 16#FFFF
|
||||
T DBW [AR1,]
|
||||
|
||||
ADDAR1 P#2.0
|
||||
|
||||
L Schleife
|
||||
LOOP L500
|
||||
|
||||
|
||||
--- NW 6: Fehlerausgabe / RET_VAL ---
|
||||
N006: SET // VKE = 1 ohne Fehler !!!
|
||||
L 2#0000_0000_0000_0000
|
||||
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
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
@@ -1,52 +1,62 @@
|
||||
=== FC 79: INT_to_BCD (4stellig) [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Int_Wert : Int
|
||||
Output:
|
||||
BCD_Wert : Word
|
||||
InOut:
|
||||
Temp:
|
||||
Rest : Int
|
||||
Ergebnis : Int
|
||||
Constant:
|
||||
Return:
|
||||
Ret_Val : Void
|
||||
FUNCTION "INT_to_BCD (4stellig)" : Void
|
||||
TITLE = INT-Wert (bis 9999) in BCD-Wert (4-Stellig) wandeln
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
//
|
||||
//
|
||||
VAR_INPUT
|
||||
Int_Wert : Int;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Rückmeldung ---
|
||||
L 0 // erst mal köschen
|
||||
T BCD_Wert
|
||||
VAR_OUTPUT
|
||||
BCD_Wert : Word;
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
Rest : Int;
|
||||
Ergebnis : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Int-Wert ok ? ---
|
||||
L Int_Wert
|
||||
L 0
|
||||
<I
|
||||
BEC
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Rückmeldung
|
||||
L 0;//erst mal köschen
|
||||
T #BCD_Wert;
|
||||
|
||||
CAC
|
||||
L 9999
|
||||
>I
|
||||
BEC
|
||||
NETWORK
|
||||
TITLE = Int-Wert ok ?
|
||||
L #Int_Wert;
|
||||
L 0;
|
||||
<I;
|
||||
BEB;
|
||||
|
||||
TAK;
|
||||
L 9999;
|
||||
>I;
|
||||
BEB;
|
||||
|
||||
--- NW 3: INT-Wert wandeln ---
|
||||
L Int_Wert
|
||||
L 10 // Damit die linken 3 Stellen
|
||||
/I
|
||||
T LD0 // temporär speichen (s.o.)
|
||||
NETWORK
|
||||
TITLE = INT-Wert wandeln
|
||||
L #Int_Wert;
|
||||
L 10;//Damit die linken 3 Stellen
|
||||
/I;
|
||||
T %LD0;//temporär speichen (s.o.)
|
||||
|
||||
L Ergebnis // linken 3 Stellen
|
||||
ITB // wandeln
|
||||
SLW 4 // Wieder nach links schieben
|
||||
T BCD_Wert // zwischen speichern
|
||||
L #Ergebnis;//linken 3 Stellen
|
||||
ITB;//wandeln
|
||||
SLW 4;//Wieder nach links schieben
|
||||
T #BCD_Wert;//zwischen speichern
|
||||
|
||||
L Rest // rechte Stelle
|
||||
ITB // wandeln
|
||||
L BCD_Wert // Zwischenergebis
|
||||
OW // rechte Stelle dazu
|
||||
T BCD_Wert // BDC-Ergebnis
|
||||
L #Rest;//rechte Stelle
|
||||
ITB;//wandeln
|
||||
L #BCD_Wert;//Zwischenergebis
|
||||
OW;//rechte Stelle dazu
|
||||
T #BCD_Wert;//BDC-Ergebnis
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
END_FUNCTION
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,82 +1,95 @@
|
||||
=== FB 182: MAusfahrFreigabe_neu [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Impuls : Bool // Zähl-Impuls
|
||||
Vorbei_1 : Bool // BM ist an Sensor vorbeigefahren
|
||||
Vorbei_2 : Bool // BM ist an Sensor vorbeigefahren
|
||||
Vorbei_3 : Bool // BM ist an Sensor vorbeigefahren
|
||||
Vorbei_4 : Bool // BM ist an Sensor vorbeigefahren
|
||||
Vorbei_5 : Bool // BM ist an Sensor vorbeigefahren
|
||||
Inks_Vorbei_1 : Int // Rest-Inks für diese Position
|
||||
Inks_Vorbei_2 : Int // Rest-Inks für diese Position
|
||||
Inks_Vorbei_3 : Int // Rest-Inks für diese Position
|
||||
Inks_Vorbei_4 : Int // Rest-Inks für diese Position
|
||||
Inks_Vorbei_5 : Int // Rest-Inks für diese Position
|
||||
Output:
|
||||
InOut:
|
||||
Antrieb_ein : Bool // Antrieb einschalten
|
||||
Static:
|
||||
Dyn : Struct
|
||||
Rest_Inks : Int := 1 // BM noch unterwegs [Inks]
|
||||
Temp:
|
||||
tAktiv : Int
|
||||
Constant:
|
||||
FUNCTION_BLOCK "MAusfahrFreigabe_neu"
|
||||
TITLE = Ausfahrfreigabe für Pufferstrecken
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Impuls : Bool; // Zähl-Impuls
|
||||
Vorbei_1 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
|
||||
Vorbei_2 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
|
||||
Vorbei_3 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
|
||||
Vorbei_4 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
|
||||
Vorbei_5 { ExternalWritable := 'False'} : Bool; // BM ist an Sensor vorbeigefahren
|
||||
Inks_Vorbei_1 : Int; // Rest-Inks für diese Position
|
||||
Inks_Vorbei_2 : Int; // Rest-Inks für diese Position
|
||||
Inks_Vorbei_3 : Int; // Rest-Inks für diese Position
|
||||
Inks_Vorbei_4 : Int; // Rest-Inks für diese Position
|
||||
Inks_Vorbei_5 : Int; // Rest-Inks für diese Position
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Vorbei-Sensoren auswerten ---
|
||||
L Inks_Vorbei_5
|
||||
A Vorbei_5
|
||||
JC Chek
|
||||
L Inks_Vorbei_4
|
||||
A Vorbei_4
|
||||
JC Chek
|
||||
L Inks_Vorbei_3
|
||||
A Vorbei_3
|
||||
JC Chek
|
||||
L Inks_Vorbei_2
|
||||
A Vorbei_2
|
||||
JC Chek
|
||||
L Inks_Vorbei_1
|
||||
A Vorbei_1
|
||||
JC Chek
|
||||
VAR_IN_OUT
|
||||
Antrieb_ein : Bool; // Antrieb einschalten
|
||||
END_VAR
|
||||
|
||||
JU En02
|
||||
VAR
|
||||
Dyn : Struct
|
||||
Rest_Inks : Int := 1; // BM noch unterwegs [Inks]
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
Chek: L Dyn.Rest_Inks // Neuer Wert kleiner?
|
||||
<I // Ja !
|
||||
JC En02 // Ohne Speicherung weiter
|
||||
|
||||
CAC // Neuen Wert übernehmen
|
||||
T Dyn.Rest_Inks // Wert speichern
|
||||
|
||||
En02: NOP 0
|
||||
VAR_TEMP
|
||||
tAktiv : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Rest-Inks verändern ---
|
||||
AN Impuls // Von MImpulsGeber
|
||||
JC En04
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Vorbei-Sensoren auswerten
|
||||
L #Inks_Vorbei_5;
|
||||
U #Vorbei_5;
|
||||
SPB Chek;
|
||||
L #Inks_Vorbei_4;
|
||||
U #Vorbei_4;
|
||||
SPB Chek;
|
||||
L #Inks_Vorbei_3;
|
||||
U #Vorbei_3;
|
||||
SPB Chek;
|
||||
L #Inks_Vorbei_2;
|
||||
U #Vorbei_2;
|
||||
SPB Chek;
|
||||
L #Inks_Vorbei_1;
|
||||
U #Vorbei_1;
|
||||
SPB Chek;
|
||||
|
||||
// BT ist unterwegs:
|
||||
L Dyn.Rest_Inks
|
||||
+ -1
|
||||
T Dyn.Rest_Inks
|
||||
SPA En02;
|
||||
|
||||
L 0 // Minimum erreicht?
|
||||
>I // Nein !
|
||||
JC En04
|
||||
Chek: L #Dyn.Rest_Inks ;//Neuer Wert kleiner?
|
||||
<I;//Ja !
|
||||
SPB En02 ;//Ohne Speicherung weiter
|
||||
|
||||
L 1
|
||||
T Dyn.Rest_Inks // Minimum übergeben
|
||||
TAK;//Neuen Wert übernehmen
|
||||
T #Dyn.Rest_Inks;//Wert speichern
|
||||
|
||||
En04: NOP 0
|
||||
En02: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Rest-Inks verändern
|
||||
UN #Impuls ;//Von MImpulsGeber
|
||||
SPB En04;
|
||||
|
||||
--- NW 3: Antrieb einschalten ---
|
||||
L Dyn.Rest_Inks
|
||||
L 1 // vorhanden ?
|
||||
>I // Ja !
|
||||
S Antrieb_ein
|
||||
//BT ist unterwegs:
|
||||
L #Dyn.Rest_Inks;
|
||||
+ -1;
|
||||
T #Dyn.Rest_Inks;
|
||||
|
||||
L 0;//Minimum erreicht?
|
||||
>I;//Nein !
|
||||
SPB En04;
|
||||
|
||||
--- NW 4: Ende ---
|
||||
BE
|
||||
L 1;
|
||||
T #Dyn.Rest_Inks;//Minimum übergeben
|
||||
|
||||
En04: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Antrieb einschalten
|
||||
L #Dyn.Rest_Inks;
|
||||
L 1 ;//vorhanden ?
|
||||
>I;//Ja !
|
||||
S #Antrieb_ein;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,153 +1,163 @@
|
||||
=== FB 94: MBlinken [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Impulsdauer : Bool // Impulsdauer
|
||||
Error_1 : Bool
|
||||
Error_2 : Bool
|
||||
Error_3 : Bool
|
||||
Error_4 : Bool
|
||||
Error_5 : Bool
|
||||
Error_6 : Bool
|
||||
Error_7 : Bool
|
||||
Error_8 : Bool
|
||||
Error_9 : Bool
|
||||
Error_10 : Bool
|
||||
Output:
|
||||
hAnzeige : Bool // Anzeige
|
||||
InOut:
|
||||
Static:
|
||||
Flanke_Ausschalttakt : Bool
|
||||
Kein_Blinken : Bool
|
||||
Ausschalttakte : Int // Betriebsbereit ist ausgeschaltet
|
||||
Temp:
|
||||
Constant:
|
||||
FUNCTION_BLOCK "MBlinken"
|
||||
TITLE = Anzeige blinken lassen
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Impulsdauer : Bool; // Impulsdauer
|
||||
Error_1 : Bool;
|
||||
Error_2 : Bool;
|
||||
Error_3 : Bool;
|
||||
Error_4 : Bool;
|
||||
Error_5 : Bool;
|
||||
Error_6 : Bool;
|
||||
Error_7 : Bool;
|
||||
Error_8 : Bool;
|
||||
Error_9 : Bool;
|
||||
Error_10 : Bool;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Anzeige bei Error 1-10 1-10 mal blinken lassen ---
|
||||
// Anzeige ausschalten:
|
||||
AN Error_1
|
||||
AN Error_2
|
||||
AN Error_3
|
||||
AN Error_4
|
||||
AN Error_5
|
||||
AN Error_6
|
||||
AN Error_7
|
||||
AN Error_8
|
||||
AN Error_9
|
||||
AN Error_10
|
||||
R hAnzeige
|
||||
R Flanke_Ausschalttakt
|
||||
R Kein_Blinken
|
||||
JC NoAn
|
||||
VAR_OUTPUT
|
||||
hAnzeige : Bool; // Anzeige
|
||||
END_VAR
|
||||
|
||||
// Anzeige aktivieren
|
||||
A Impulsdauer
|
||||
AN Kein_Blinken
|
||||
= hAnzeige
|
||||
|
||||
A Impulsdauer
|
||||
Fall Flanke_Ausschalttakt
|
||||
JCN mHu
|
||||
|
||||
L Ausschalttakte
|
||||
+ 1
|
||||
T Ausschalttakte
|
||||
VAR
|
||||
Flanke_Ausschalttakt : Bool;
|
||||
Kein_Blinken : Bool;
|
||||
Ausschalttakte : Int; // Betriebsbereit ist ausgeschaltet
|
||||
END_VAR
|
||||
|
||||
|
||||
mHu: L Ausschalttakte
|
||||
L 2
|
||||
>=I
|
||||
A Kein_Blinken
|
||||
R Kein_Blinken
|
||||
JC NoAn
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Anzeige bei Error 1-10 1-10 mal blinken lassen
|
||||
|
||||
A Kein_Blinken
|
||||
JC En01
|
||||
//Anzeige ausschalten:
|
||||
UN #Error_1;
|
||||
UN #Error_2;
|
||||
UN #Error_3;
|
||||
UN #Error_4;
|
||||
UN #Error_5;
|
||||
UN #Error_6;
|
||||
UN #Error_7;
|
||||
UN #Error_8;
|
||||
UN #Error_9;
|
||||
UN #Error_10;
|
||||
R #hAnzeige;
|
||||
R #Flanke_Ausschalttakt;
|
||||
R #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
CAC
|
||||
L 1
|
||||
>=I
|
||||
A Error_1
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
//Anzeige aktivieren
|
||||
U #Impulsdauer;
|
||||
UN #Kein_Blinken;
|
||||
= #hAnzeige;
|
||||
|
||||
CAC
|
||||
L 2
|
||||
>=I
|
||||
A Error_2
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
U #Impulsdauer;
|
||||
FN #Flanke_Ausschalttakt;
|
||||
SPBN mHu;
|
||||
|
||||
CAC
|
||||
L 3
|
||||
>=I
|
||||
A Error_3
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
CAC
|
||||
L 4
|
||||
>=I
|
||||
A Error_4
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
CAC
|
||||
L 5
|
||||
>=I
|
||||
A Error_5
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
CAC
|
||||
L 6
|
||||
>=I
|
||||
A Error_6
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
CAC
|
||||
L 7
|
||||
>=I
|
||||
A Error_7
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
CAC
|
||||
L 8
|
||||
>=I
|
||||
A Error_8
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
CAC
|
||||
L 9
|
||||
>=I
|
||||
A Error_9
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
CAC
|
||||
L 10
|
||||
>=I
|
||||
A Error_10
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
CAC
|
||||
L 10
|
||||
>I
|
||||
S Kein_Blinken
|
||||
JC NoAn
|
||||
|
||||
JU En01
|
||||
|
||||
NoAn: L 0
|
||||
T Ausschalttakte
|
||||
|
||||
En01: NOP 0
|
||||
L #Ausschalttakte;
|
||||
+ 1;
|
||||
T #Ausschalttakte;
|
||||
|
||||
|
||||
--- NW 2: Ende ---
|
||||
BE
|
||||
mHu: L #Ausschalttakte;
|
||||
L 2;
|
||||
>=I;
|
||||
U #Kein_Blinken;
|
||||
R #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
U #Kein_Blinken;
|
||||
SPB En01;
|
||||
|
||||
TAK;
|
||||
L 1;
|
||||
>=I;
|
||||
U #Error_1;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 2;
|
||||
>=I;
|
||||
U #Error_2;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 3;
|
||||
>=I;
|
||||
U #Error_3;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 4;
|
||||
>=I;
|
||||
U #Error_4;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 5;
|
||||
>=I;
|
||||
U #Error_5;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 6;
|
||||
>=I;
|
||||
U #Error_6;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 7;
|
||||
>=I;
|
||||
U #Error_7;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 8;
|
||||
>=I;
|
||||
U #Error_8;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 9;
|
||||
>=I;
|
||||
U #Error_9;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 10;
|
||||
>=I;
|
||||
U #Error_10;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
TAK;
|
||||
L 10;
|
||||
>I;
|
||||
S #Kein_Blinken;
|
||||
SPB NoAn;
|
||||
|
||||
SPA En01;
|
||||
|
||||
NoAn: L 0;
|
||||
T #Ausschalttakte;
|
||||
|
||||
En01: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,208 +1,278 @@
|
||||
=== FB 1278: MHMEntnahmepuffer [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
EntnahmePuffer_Nr : Int // Aufruf für Leer-Puffer
|
||||
B_LeerpufferEinfahrt : Bool // Sensor Trolley fährt in Leerpuffer
|
||||
Output:
|
||||
Error : Word // Störungen übergeben
|
||||
InOut:
|
||||
hStOk : Bool // Anzeige Start n. Störung aktivieren
|
||||
Static:
|
||||
Res16 : Array[1..4] of Int // Reserve
|
||||
SAVE : Struct
|
||||
Weichen_DB : Int // Weichen-FIFO-DB
|
||||
Weichen_DW : Int // Weichen-FIFO-DW
|
||||
Para : Struct // Parameter
|
||||
Entnahmepuffer_DL_DB : Int // Einsprung Leerpuffer-Datenliste-DB
|
||||
Entnahmepuffer_DL_DW : Int // Einsprung Leerpuffer-Datenliste-DW
|
||||
Res1 : Array[1..2] of Int // Reserve
|
||||
Status2 : Struct
|
||||
Abruf_ist_möglich : Bool // Abruf ist möglich
|
||||
Kein_Stop_mehr : Bool
|
||||
Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLLPPuffer_leer (DB500) erfolgt
|
||||
Eintrag_DL_Reinliste_erfolgt : Bool // Eintrag in DLLPPuffer_Einfahren (DB501) erfolgt
|
||||
Eintrag_Abrufliste_erfolgt : Bool // Eintrag in DLLPPuffer_Ausfahren (DB502) erfolgt
|
||||
Puffer : "UDLHMEntnahmePuffer" // Statische Leerpufferdaten (aus DL)
|
||||
Dyn : Struct // Dynamische Daten
|
||||
Status : Struct
|
||||
Puffer_OUT_leer : Bool // Puffer ist leer
|
||||
Puffer_OUT_hat Platz : Bool // Puffer hat noch Kapazität
|
||||
Undef.Trolley_in_Schleuse_OUT : Bool // Undefinierter Trolley in Schleuse unten erkannt
|
||||
Trolley_fährt_in_Schleuse_OUT : Bool // Trolley fährt in Schleuse (unten)
|
||||
Trolley_wartet_Auftrag : Bool // Trolley wartet auf Auftrag (unten)
|
||||
Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 (unten)
|
||||
Trolley_fährt_aus_OUT : Bool // Trolley fährt aus (unten)
|
||||
MindestZeit_ok_OUT : Bool // Schleuse ist MindestZeit geöffnet
|
||||
Trolley_draussen_Out : Bool // Trolley ist ausgefahren
|
||||
Trolley_OUT_nicht_in_Schleuse : Bool // Trolley fährt nicht in Schleuse
|
||||
Leer_Check_OUT : Bool // Leerpuffer wird auf leer gecheckt
|
||||
Alles_ausfahren : Bool // Alle Trolleys ausfahren
|
||||
Leerpuffer_initialisieren : Bool // Leerpuffer initialisieren
|
||||
Error_aktiv : Bool // Störung vorhanden
|
||||
Reset_aktiv_OUT : Bool // Reset aktiv
|
||||
TrolleyID_Einfahrt : DInt // Trolley-Nr ist eingefahren
|
||||
Rueckmld : Struct
|
||||
RET_VAL_BLKMOV_EntnahmePuffer : Int // Rückmeldung nach BLKMOV-Aufruf
|
||||
RET_VAL_DL_EntnahmePuffer : Byte // Rückmeldung nach DatenOut-Aufruf
|
||||
RET_VAL_DL_Res_OUT : Byte // Rückmeldung nach DatenOut-Aufruf
|
||||
RET_VAL_DL_EntnahmePufferTrolley_IN : Byte // Rückmeldung nach DatenIN-Aufruf
|
||||
RET_VAL_DL_EntnahmePufferTrolley_OUT : Byte // Rückmeldung nach DatenOut-Aufruf
|
||||
Error : "UErrHMEntnahmePuffer"
|
||||
Stau_Zeit : Int // Sensor B_Einfahrt ist belegt [1s]
|
||||
Stop_Ursache : Word // Stop-Stelle: Nw + Position
|
||||
Res500 : Array[1..206] of Int
|
||||
Temp:
|
||||
Quelle : Any // Zeiger, wo Rein-Daten sind
|
||||
Ziel : Any // Zeiger, FIFO-Stelle
|
||||
Ueb_akt : Bool // Überwachungszeit aktivieren
|
||||
Weiter : Bool // Weiterschaltbedingung ist erfüllt
|
||||
Warte_neu : Bool // Wartezeit neu triggern
|
||||
Warte_stop : Bool // Wartezeit stoppen
|
||||
Inks_Ok : Bool // Starten aufgrund der Inks erlaubt
|
||||
Puffer_ist_leer : Bool // Leerpuffer zeitlang ohne Sensor
|
||||
Abruf_Trolley_vorne : Bool // Abruf-Trolley ist in Schleuse
|
||||
Oberen_Puffer_Freigeben : Bool
|
||||
GesamtAnzahl : Int
|
||||
SSDW : Int
|
||||
Schleife : Word // Loopzähler
|
||||
Trolley : Int
|
||||
Position : Int
|
||||
Constant:
|
||||
FUNCTION_BLOCK "MHMEntnahmepuffer"
|
||||
TITLE = Omni H&M-EntnahmePuffer-Modul
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
VERSION : 0.1
|
||||
//COPYRIGHT by Ingenieurbüro A.Emmert
|
||||
//Ortsstr.33, D-869925 Fuchstal (Germany)
|
||||
//Tel.: 0049(0)8243-960629
|
||||
//
|
||||
//Version: H&M Leerpuffer / 10.2025
|
||||
//
|
||||
//Version: Omniflow 2100 / 10.2024
|
||||
//
|
||||
//Schritt 0: Warten auf Trolley
|
||||
//Schritt 1: Betriebsart ok/angegeben?
|
||||
//Schritt 5: Mit Scanner fahren: Defaultziel ?
|
||||
//Schritt 6: Scanner triggern
|
||||
//Schritt 7: "DREQ" an PC senden
|
||||
//Schritt 8: Warten auf PC-Antwort
|
||||
//Schritt 9: PC-Antwort auswerten
|
||||
//Schritt 10: Fahrtrichtung ermitteln
|
||||
//Schritt 11: Ausfahren ok ?
|
||||
//Schritt 12: Warten auf Pin-Signal
|
||||
//Schritt 13: Weichenbereich raus bereit ?
|
||||
//Schritt 14: Daten an Rausweiche übergeben
|
||||
//Schritt 15: Schleuse Mindestzeit öffnen
|
||||
//Schritt 16: Trolley ausgefahren ?
|
||||
//Schritt 17: Trolley ist draussen
|
||||
//Schritt 18: BM wurde vereinzelt
|
||||
//Schritt 19: Beladezustand checken
|
||||
//Schritt 20: Schleuse resetten
|
||||
//Schritt 21: Reset ist zu Ende
|
||||
//
|
||||
VAR_INPUT
|
||||
EntnahmePuffer_Nr { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Aufruf für Leer-Puffer
|
||||
B_LeerpufferEinfahrt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Sensor Trolley fährt in Leerpuffer
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Parameter-Übergabe ---
|
||||
L EntnahmePuffer_Nr
|
||||
VAR_OUTPUT
|
||||
Error { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Word; // Störungen übergeben
|
||||
END_VAR
|
||||
|
||||
L 275 // Einsprung Puffer-DL
|
||||
T Para.Entnahmepuffer_DL_DB // vor Aufruf übergeben!
|
||||
L 0
|
||||
T Para.Entnahmepuffer_DL_DW
|
||||
VAR_IN_OUT
|
||||
hStOk : Bool; // Anzeige Start n. Störung aktivieren
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Res16 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[1..4] of Int; // Reserve
|
||||
SAVE { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
|
||||
Weichen_DB { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Weichen-FIFO-DB
|
||||
Weichen_DW { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Weichen-FIFO-DW
|
||||
END_STRUCT;
|
||||
Para { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct // Parameter
|
||||
Entnahmepuffer_DL_DB { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Einsprung Leerpuffer-Datenliste-DB
|
||||
Entnahmepuffer_DL_DW { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Einsprung Leerpuffer-Datenliste-DW
|
||||
Res1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[1..2] of Int; // Reserve
|
||||
END_STRUCT;
|
||||
Status2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
|
||||
Abruf_ist_möglich { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Abruf ist möglich
|
||||
Kein_Stop_mehr { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
|
||||
Eintrag_DL_Leerliste_erfolgt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Eintrag in DLLPPuffer_leer (DB500) erfolgt
|
||||
Eintrag_DL_Reinliste_erfolgt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Eintrag in DLLPPuffer_Einfahren (DB501) erfolgt
|
||||
Eintrag_Abrufliste_erfolgt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Eintrag in DLLPPuffer_Ausfahren (DB502) erfolgt
|
||||
END_STRUCT;
|
||||
Puffer { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : "UDLHMEntnahmePuffer"; // Statische Leerpufferdaten (aus DL)
|
||||
Dyn : Struct // Dynamische Daten
|
||||
Status { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
|
||||
Puffer_OUT_leer { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Puffer ist leer
|
||||
"Puffer_OUT_hat Platz" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Puffer hat noch Kapazität
|
||||
"Undef.Trolley_in_Schleuse_OUT" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Undefinierter Trolley in Schleuse unten erkannt
|
||||
Trolley_fährt_in_Schleuse_OUT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Trolley fährt in Schleuse (unten)
|
||||
Trolley_wartet_Auftrag { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Trolley wartet auf Auftrag (unten)
|
||||
"Trolley_wartet_Bereich+1" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Trolley wartet auf Bereich +1 (unten)
|
||||
Trolley_fährt_aus_OUT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Trolley fährt aus (unten)
|
||||
MindestZeit_ok_OUT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Schleuse ist MindestZeit geöffnet
|
||||
Trolley_draussen_Out { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Trolley ist ausgefahren
|
||||
Trolley_OUT_nicht_in_Schleuse { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Trolley fährt nicht in Schleuse
|
||||
Leer_Check_OUT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Leerpuffer wird auf leer gecheckt
|
||||
Alles_ausfahren { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Alle Trolleys ausfahren
|
||||
Leerpuffer_initialisieren { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Leerpuffer initialisieren
|
||||
Error_aktiv { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Störung vorhanden
|
||||
Reset_aktiv_OUT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Reset aktiv
|
||||
END_STRUCT;
|
||||
TrolleyID_Einfahrt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DInt; // Trolley-Nr ist eingefahren
|
||||
Rueckmld { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
|
||||
RET_VAL_BLKMOV_EntnahmePuffer { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Rückmeldung nach BLKMOV-Aufruf
|
||||
RET_VAL_DL_EntnahmePuffer { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Byte; // Rückmeldung nach DatenOut-Aufruf
|
||||
RET_VAL_DL_Res_OUT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Byte; // Rückmeldung nach DatenOut-Aufruf
|
||||
RET_VAL_DL_EntnahmePufferTrolley_IN { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Byte; // Rückmeldung nach DatenIN-Aufruf
|
||||
RET_VAL_DL_EntnahmePufferTrolley_OUT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Byte; // Rückmeldung nach DatenOut-Aufruf
|
||||
END_STRUCT;
|
||||
Error { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : "UErrHMEntnahmePuffer";
|
||||
Stau_Zeit { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // Sensor B_Einfahrt ist belegt [1s]
|
||||
Stop_Ursache { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Word; // Stop-Stelle: Nw + Position
|
||||
Res500 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[1..206] of Int;
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
Quelle : Any; // Zeiger, wo Rein-Daten sind
|
||||
Ziel : Any; // Zeiger, FIFO-Stelle
|
||||
Ueb_akt : Bool; // Überwachungszeit aktivieren
|
||||
Weiter : Bool; // Weiterschaltbedingung ist erfüllt
|
||||
Warte_neu : Bool; // Wartezeit neu triggern
|
||||
Warte_stop : Bool; // Wartezeit stoppen
|
||||
Inks_Ok : Bool; // Starten aufgrund der Inks erlaubt
|
||||
Puffer_ist_leer : Bool; // Leerpuffer zeitlang ohne Sensor
|
||||
Abruf_Trolley_vorne : Bool; // Abruf-Trolley ist in Schleuse
|
||||
Oberen_Puffer_Freigeben : Bool;
|
||||
GesamtAnzahl : Int;
|
||||
SSDW : Int;
|
||||
Schleife : Word; // Loopzähler
|
||||
Trolley : Int;
|
||||
Position : Int;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Statische Entnahmepuffer-Parameter holen ---
|
||||
L Puffer.EntnahmePuffer_Nr // Nummer des EntnahmePuffers
|
||||
L EntnahmePuffer_Nr // Aufruf-Parameter
|
||||
==I // Identisch ?
|
||||
R Dyn.Error.Entnahmepuffer_DL // EntnahmePufferdatenbank fehlerhaft
|
||||
R Dyn.Error.Undef_Entnahmepuffer // undefiniertes EntnahmePuffer
|
||||
JC en06 // Ja !
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Parameter-Übergabe
|
||||
L #EntnahmePuffer_Nr;
|
||||
|
||||
T "MW200" // Search-Daten
|
||||
L 275 ;//Einsprung Puffer-DL
|
||||
T #Para.Entnahmepuffer_DL_DB;//vor Aufruf übergeben!
|
||||
L 0;
|
||||
T #Para.Entnahmepuffer_DL_DW;
|
||||
|
||||
CALL FC "DatenOut" (SSDB:=Para.Entnahmepuffer_DL_DB, SSDW:=Para.Entnahmepuffer_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_EntnahmePuffer, OUTDATEN:=P#M220.0, Position:="MW196")
|
||||
NETWORK
|
||||
TITLE = Statische Entnahmepuffer-Parameter holen
|
||||
L #Puffer.EntnahmePuffer_Nr;//Nummer des EntnahmePuffers
|
||||
L #EntnahmePuffer_Nr ;//Aufruf-Parameter
|
||||
==I;//Identisch ?
|
||||
R #Dyn.Error.Entnahmepuffer_DL;//EntnahmePufferdatenbank fehlerhaft
|
||||
R #Dyn.Error.Undef_Entnahmepuffer;//undefiniertes EntnahmePuffer
|
||||
SPB en06;//Ja !
|
||||
|
||||
JBI G_Ok
|
||||
T "MW200";//Search-Daten
|
||||
|
||||
A "M199.0"
|
||||
JCN w060
|
||||
CALL "DatenOut"
|
||||
( SSDB := #Para.Entnahmepuffer_DL_DB ,
|
||||
SSDW := #Para.Entnahmepuffer_DL_DW ,
|
||||
PARA := WORD#16#0000 ,
|
||||
SEARCHDATEN := P#M200.0 ,
|
||||
RE_VAL := #Dyn.Rueckmld.RET_VAL_DL_EntnahmePuffer ,
|
||||
OUTDATEN := P#M220.0 ,
|
||||
Position := "MW196"
|
||||
);
|
||||
|
||||
SET
|
||||
= Dyn.Error.Entnahmepuffer_DL // EntnahmePufferdatenbank fehlerhaft
|
||||
SPBI G_Ok;
|
||||
|
||||
L 16#A061
|
||||
T Dyn.Stop_Ursache
|
||||
U "M199.0";
|
||||
SPBN w060;
|
||||
|
||||
BEU
|
||||
SET;
|
||||
= #Dyn.Error.Entnahmepuffer_DL;//EntnahmePufferdatenbank fehlerhaft
|
||||
|
||||
w060: SET
|
||||
S Dyn.Error.Undef_Entnahmepuffer // undefinierter EntnahmePuffer
|
||||
L 16#A061;
|
||||
T #Dyn.Stop_Ursache;
|
||||
|
||||
L 16#0062
|
||||
T Dyn.Stop_Ursache
|
||||
BEA;
|
||||
|
||||
BEU
|
||||
w060: SET;
|
||||
S #Dyn.Error.Undef_Entnahmepuffer;//undefinierter EntnahmePuffer
|
||||
|
||||
// Kennung + Datenbytes
|
||||
G_Ok: SET
|
||||
R Dyn.Error.Entnahmepuffer_DL // Gefälledatenbank fehlerhaft
|
||||
R Dyn.Error.Undef_Entnahmepuffer // undefinierte Gefällestrecke
|
||||
L 16#0062;
|
||||
T #Dyn.Stop_Ursache;
|
||||
|
||||
L 16#1004 // Kennung 10 + Word=04
|
||||
T LW0 // Any-Kennung, Datentyp
|
||||
L 20 // Datenwords speichern
|
||||
T LW2 // Wiederholungen
|
||||
BEA;
|
||||
|
||||
// Quelle-Pointer erzeugen:
|
||||
L 0 // Bei Merker = 0 !
|
||||
T LW4 // DB_Nummer
|
||||
L 220 // Adresse
|
||||
SLD 3
|
||||
L 16#8300_0000 // Kennung: Merker
|
||||
OD
|
||||
T LD6 // Kennung, Adresse
|
||||
//Kennung + Datenbytes
|
||||
G_Ok: SET;
|
||||
R #Dyn.Error.Entnahmepuffer_DL;//Gefälledatenbank fehlerhaft
|
||||
R #Dyn.Error.Undef_Entnahmepuffer;//undefinierte Gefällestrecke
|
||||
|
||||
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_EntnahmePuffer, DSTBLK:=Puffer) // Datenliste-Daten speichern | #Ziel
|
||||
L 16#1004;//Kennung 10 + Word=04
|
||||
T %LW0;//Any-Kennung, Datentyp
|
||||
L 20;//Datenwords speichern
|
||||
T %LW2;//Wiederholungen
|
||||
|
||||
L 16#0063
|
||||
T Dyn.Stop_Ursache
|
||||
//Quelle-Pointer erzeugen:
|
||||
L 0;//Bei Merker = 0 !
|
||||
T %LW4;//DB_Nummer
|
||||
L 220;//Adresse
|
||||
SLD 3;
|
||||
L 16#8300_0000;//Kennung: Merker
|
||||
OD;
|
||||
T %LD6;//Kennung, Adresse
|
||||
|
||||
L Dyn.Rueckmld.RET_VAL_BLKMOV_EntnahmePuffer // Rückmeldung
|
||||
L 0 // Fehler vorhanden ?
|
||||
<>I // Ja !
|
||||
= Dyn.Error.Err_BLKMov // Error bei Block kopieren
|
||||
BEC
|
||||
CALL BLKMOV//Datenliste-Daten speichern
|
||||
{blk_type := 'Variant'}
|
||||
( SRCBLK := #Quelle ,
|
||||
RET_VAL := #Dyn.Rueckmld.RET_VAL_BLKMOV_EntnahmePuffer ,
|
||||
DSTBLK := #Puffer //#Ziel
|
||||
);
|
||||
|
||||
L Puffer.Puffer_Typ // Puffertyp = 1278 (EntnahmePuffer)
|
||||
L 1278 // Dieser Aufruf-FB ?
|
||||
==I // Ja !
|
||||
JC w061
|
||||
L 16#0063;
|
||||
T #Dyn.Stop_Ursache;
|
||||
|
||||
SET
|
||||
S Dyn.Error.Undef_Entnahmepuffer // undefinierter EntnahmePuffer
|
||||
L #Dyn.Rueckmld.RET_VAL_BLKMOV_EntnahmePuffer;//Rückmeldung
|
||||
L 0;//Fehler vorhanden ?
|
||||
<>I;//Ja !
|
||||
= #Dyn.Error.Err_BLKMov ;//Error bei Block kopieren
|
||||
BEB;
|
||||
|
||||
L 0 // EntnahmePuffer ungültig !
|
||||
T Puffer.EntnahmePuffer_Nr // Nummer des EntnahmePuffers
|
||||
L #Puffer.Puffer_Typ ;//Puffertyp = 1278 (EntnahmePuffer)
|
||||
L 1278 ;//Dieser Aufruf-FB ?
|
||||
==I;//Ja !
|
||||
SPB w061;
|
||||
|
||||
L 16#0064
|
||||
T Dyn.Stop_Ursache
|
||||
SET;
|
||||
S #Dyn.Error.Undef_Entnahmepuffer;//undefinierter EntnahmePuffer
|
||||
|
||||
BEU
|
||||
L 0 ;//EntnahmePuffer ungültig !
|
||||
T #Puffer.EntnahmePuffer_Nr;//Nummer des EntnahmePuffers
|
||||
|
||||
// Defaultwerte übergeben:
|
||||
w061: NOP 0
|
||||
L 16#0064;
|
||||
T #Dyn.Stop_Ursache;
|
||||
|
||||
BEU
|
||||
BEA;
|
||||
|
||||
en06: NOP 0
|
||||
//Defaultwerte übergeben:
|
||||
w061: NOP 0;
|
||||
|
||||
BEA;
|
||||
|
||||
--- NW 3: Einfahrenden Trolley verarbeiten ---
|
||||
L Dyn.TrolleyID_Einfahrt
|
||||
T "MD220"
|
||||
L DINT#0
|
||||
==I
|
||||
JC NoNewT
|
||||
en06: NOP 0;
|
||||
|
||||
// Neue Position an Gesamt-Trolley-DL übergeben:
|
||||
CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Puffer.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Einfahrt, Position:=Puffer.Puffer_Position, ShopGroup:=Dint#0, Err:="M199.0")
|
||||
NETWORK
|
||||
TITLE = Einfahrenden Trolley verarbeiten
|
||||
L #Dyn.TrolleyID_Einfahrt;
|
||||
T "MD220";
|
||||
L DINT#0;
|
||||
==I;
|
||||
SPB NoNewT;
|
||||
|
||||
NoNewT: NOP 0
|
||||
//Neue Position an Gesamt-Trolley-DL übergeben:
|
||||
CALL "Trolley_DL_Neue_Pos"
|
||||
( Gesamt_Trolley_DL := #Puffer.Gesamt_Trolley_DL ,
|
||||
TrolleyID := #Dyn.TrolleyID_Einfahrt ,
|
||||
Position := #Puffer.Puffer_Position ,
|
||||
ShopGroup := Dint#0 ,
|
||||
Err := "M199.0"
|
||||
);
|
||||
|
||||
NoNewT: NOP 0;
|
||||
|
||||
--- NW 4: Error: Stau Bereich-Eingang ---
|
||||
// Sensor bei Bereichs-Einfahrt bleibt belegt?:
|
||||
AN B_LeerpufferEinfahrt // Sensor Trolley fährt in Bereich (kein Stau !)
|
||||
R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt
|
||||
JC X090 // StauZeit neu aufziehen
|
||||
NETWORK
|
||||
TITLE = Error: Stau Bereich-Eingang
|
||||
|
||||
AN "1s-Impuls"
|
||||
O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen
|
||||
JC Xn09
|
||||
//Sensor bei Bereichs-Einfahrt bleibt belegt?:
|
||||
UN #B_LeerpufferEinfahrt ;//Sensor Trolley fährt in Bereich (kein Stau !)
|
||||
R #Dyn.Error.Err_Stau_Einfahrt;//Stau bei Einfahrt
|
||||
SPB X090 ;//StauZeit neu aufziehen
|
||||
|
||||
L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s]
|
||||
+ +1
|
||||
T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s]
|
||||
UN "1s-Impuls";
|
||||
O #Dyn.Error.Err_Stau_Einfahrt;//Zeit bereits abgelaufen
|
||||
SPB Xn09;
|
||||
|
||||
L 25 // Stau-Zeit erreicht ?
|
||||
>=I // Ja !
|
||||
S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb
|
||||
JCN Xn09
|
||||
L #Dyn.Stau_Zeit ;//Sensor B_VorSep ist belegt [1s]
|
||||
+ +1;
|
||||
T #Dyn.Stau_Zeit ;//Sensor B_VorSep ist belegt [1s]
|
||||
|
||||
X090: L 0 // Zeiten löschen
|
||||
T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s]
|
||||
L 25 ;//Stau-Zeit erreicht ?
|
||||
>=I;//Ja !
|
||||
S #Dyn.Error.Err_Stau_Einfahrt;//Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb
|
||||
SPBN Xn09;
|
||||
|
||||
Xn09: NOP 0
|
||||
X090: L 0 ;//Zeiten löschen
|
||||
T #Dyn.Stau_Zeit ;//Sensor B_VorSep ist belegt [1s]
|
||||
|
||||
Xn09: NOP 0;
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,91 +1,122 @@
|
||||
=== FB 183: MHMÜbergang_ohne_Schleuse [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
ErrQuit : Bool
|
||||
B_Anfang : Bool
|
||||
B_Am_Übergang : Bool
|
||||
B_Stau_Antrieb_plus : Bool
|
||||
Antrieb_aktiv : Bool
|
||||
Antrieb_plus_aktiv : Bool
|
||||
Output:
|
||||
InOut:
|
||||
Antrieb_vor : Bool
|
||||
Antrieb_start : Bool
|
||||
Antrieb_stop : Bool
|
||||
Antrieb_plus_vor : Bool
|
||||
Antrieb_plus_start : Bool
|
||||
Static:
|
||||
Am_Übergang : "MSensoren"
|
||||
Stau_Antrieb_plus : "MSensoren"
|
||||
Temp:
|
||||
Antrieb : Bool
|
||||
Antrieb_gestoppt : Bool
|
||||
Constant:
|
||||
FUNCTION_BLOCK "MHMÜbergang_ohne_Schleuse"
|
||||
TITLE = Übergang ohne Schleuse zu anderem Antrieb
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
//COPYRIGHT by Ingenieurbüro A.Emmert
|
||||
//Ortsstr.33, D-869925 Fuchstal (Germany)
|
||||
//Tel.: 0049(0)8243-960629
|
||||
//
|
||||
//Version: HM-Omniflow 2100 / 11.2025
|
||||
//
|
||||
VAR_INPUT
|
||||
ErrQuit : Bool;
|
||||
B_Anfang : Bool;
|
||||
B_Am_Übergang : Bool;
|
||||
B_Stau_Antrieb_plus : Bool;
|
||||
Antrieb_aktiv : Bool;
|
||||
Antrieb_plus_aktiv : Bool;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Antrieb ansteuern ---
|
||||
SET
|
||||
R Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird!
|
||||
VAR_IN_OUT
|
||||
Antrieb_vor : Bool;
|
||||
Antrieb_start : Bool;
|
||||
Antrieb_stop : Bool;
|
||||
Antrieb_plus_vor : Bool;
|
||||
Antrieb_plus_start : Bool;
|
||||
END_VAR
|
||||
|
||||
// Antrieb starten:
|
||||
A ErrQuit
|
||||
O B_Anfang
|
||||
S Antrieb_start
|
||||
S Antrieb_vor
|
||||
VAR
|
||||
Am_Übergang { S7_SetPoint := 'False'} : "MSensoren";
|
||||
Stau_Antrieb_plus : "MSensoren";
|
||||
END_VAR
|
||||
|
||||
// Trolley am Übergang:
|
||||
AN "Am_Übergang".Stat.B_Akt
|
||||
JC Nix
|
||||
|
||||
// Antrieb stoppen:
|
||||
A Stau_Antrieb_plus.Stat.B_Akt
|
||||
S Antrieb_stop // Trolley stoppen
|
||||
S Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird!
|
||||
JC Nix
|
||||
|
||||
AN Stau_Antrieb_plus.Stat.B_Akt
|
||||
S Antrieb_plus_vor // Antrieb plus einschalten
|
||||
|
||||
SET
|
||||
S Antrieb_plus_start // Antrieb plus zeitlang starten
|
||||
|
||||
AN Antrieb_plus_aktiv
|
||||
S Antrieb_stop // Trolley stoppen
|
||||
S Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird!
|
||||
JC Nix
|
||||
|
||||
// Antrieb einschalten:
|
||||
SET
|
||||
S Antrieb_vor // Trolley weiterfahren
|
||||
|
||||
Nix: NOP 0
|
||||
VAR_TEMP
|
||||
Antrieb : Bool;
|
||||
Antrieb_gestoppt : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Antrieb plus zusätzlich ansteuern ---
|
||||
// Antrieb plus starten:
|
||||
A B_Stau_Antrieb_plus // Sensor
|
||||
O ErrQuit
|
||||
S Antrieb_plus_start // Antrieb plus zeitlang starten
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Antrieb ansteuern
|
||||
SET;
|
||||
R #Antrieb_gestoppt;//Falls bei Aufruf nicht gestoppt wird!
|
||||
|
||||
// Antrieb plus einschalten:
|
||||
A B_Stau_Antrieb_plus
|
||||
AN Stau_Antrieb_plus.Stat.B_Akt
|
||||
CLR // Nicht mehr!
|
||||
S Antrieb_plus_vor // Antrieb plus einschalten
|
||||
//Antrieb starten:
|
||||
U #ErrQuit;
|
||||
O #B_Anfang;
|
||||
S #Antrieb_start;
|
||||
S #Antrieb_vor;
|
||||
|
||||
//Trolley am Übergang:
|
||||
UN #Am_Übergang.Stat.B_Akt;
|
||||
SPB Nix;
|
||||
|
||||
--- NW 3: Trolley ist am Übergang ---
|
||||
A Antrieb_aktiv
|
||||
A Antrieb_plus_aktiv
|
||||
AN Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird!
|
||||
= Antrieb
|
||||
//Antrieb stoppen:
|
||||
U #Stau_Antrieb_plus.Stat.B_Akt;
|
||||
S #Antrieb_stop;//Trolley stoppen
|
||||
S #Antrieb_gestoppt;//Falls bei Aufruf nicht gestoppt wird!
|
||||
SPB Nix;
|
||||
|
||||
CALL FB "None" , (ESensor:="B_Am_Übergang", T_Ein:=1, T_Aus:=50, tein_aktiv:=1, taus_aktiv:=Antrieb)
|
||||
UN #Stau_Antrieb_plus.Stat.B_Akt;
|
||||
S #Antrieb_plus_vor ;//Antrieb plus einschalten
|
||||
|
||||
SET;
|
||||
S #Antrieb_plus_start;//Antrieb plus zeitlang starten
|
||||
|
||||
--- NW 4: Stau im Förderer plus ---
|
||||
CALL FB "None" , (ESensor:=B_Stau_Antrieb_plus, T_Ein:=100, T_Aus:=50, tein_aktiv:=1, taus_aktiv:=1)
|
||||
UN #Antrieb_plus_aktiv;
|
||||
S #Antrieb_stop;//Trolley stoppen
|
||||
S #Antrieb_gestoppt;//Falls bei Aufruf nicht gestoppt wird!
|
||||
SPB Nix;
|
||||
|
||||
//Antrieb einschalten:
|
||||
SET;
|
||||
S #Antrieb_vor;//Trolley weiterfahren
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
Nix: NOP 0;
|
||||
|
||||
NETWORK
|
||||
TITLE = Antrieb plus zusätzlich ansteuern
|
||||
|
||||
//Antrieb plus starten:
|
||||
U #B_Stau_Antrieb_plus;//Sensor
|
||||
O #ErrQuit;
|
||||
S #Antrieb_plus_start;//Antrieb plus zeitlang starten
|
||||
|
||||
//Antrieb plus einschalten:
|
||||
U #B_Stau_Antrieb_plus;
|
||||
UN #Stau_Antrieb_plus.Stat.B_Akt;
|
||||
CLR;//Nicht mehr!
|
||||
S #Antrieb_plus_vor ;//Antrieb plus einschalten
|
||||
|
||||
NETWORK
|
||||
TITLE = Trolley ist am Übergang
|
||||
U #Antrieb_aktiv;
|
||||
U #Antrieb_plus_aktiv;
|
||||
UN #Antrieb_gestoppt ;//Falls bei Aufruf nicht gestoppt wird!
|
||||
= #Antrieb;
|
||||
|
||||
CALL #Am_Übergang
|
||||
( ESensor := #B_Am_Übergang ,
|
||||
T_Ein := 1 ,
|
||||
T_Aus := 50 ,
|
||||
tein_aktiv := 1 ,
|
||||
taus_aktiv := #Antrieb
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Stau im Förderer plus
|
||||
CALL #Stau_Antrieb_plus
|
||||
( ESensor := #B_Stau_Antrieb_plus ,
|
||||
T_Ein := 100 ,
|
||||
T_Aus := 50 ,
|
||||
tein_aktiv := 1 ,
|
||||
taus_aktiv := 1
|
||||
);
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,122 +1,147 @@
|
||||
=== FB 100: MImpulsGeber [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
Ink_DB : Int // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler
|
||||
B_Zaehlen : Bool // Sensor zum Zählen
|
||||
Antrieb_aktiv : Bool // Antrieb ist aktiv
|
||||
Quit : Bool
|
||||
Zeit_Signal_zu_lang : Time := T#350ms
|
||||
Zeit_Kein_Signal : Time := T#500ms
|
||||
Output:
|
||||
Signal : Bool // Falls kein InkDB
|
||||
InOut:
|
||||
Err_Kein_Signal : Bool // Kein_Signal bei laufenden Antrieb
|
||||
Err_Signal_zu_lang : Bool // Signal bei laufenden Antrieb zu lang
|
||||
Static:
|
||||
Sensor_entprellen : Bool
|
||||
Timer_1 : TON_TIME
|
||||
Timer_2 : TON_TIME
|
||||
Timer_3 : TON_TIME
|
||||
Temp:
|
||||
Constant:
|
||||
FUNCTION_BLOCK "MImpulsGeber"
|
||||
TITLE = Modul Zähler über Zahnrad-Sensor Wert in Zähler-DB eintragen
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Ink_DB { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int; // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler
|
||||
B_Zaehlen : Bool; // Sensor zum Zählen
|
||||
Antrieb_aktiv : Bool; // Antrieb ist aktiv
|
||||
Quit : Bool;
|
||||
Zeit_Signal_zu_lang : Time := T#350ms;
|
||||
Zeit_Kein_Signal : Time := T#500ms;
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Initialisierung ---
|
||||
SET
|
||||
R Signal
|
||||
VAR_OUTPUT
|
||||
Signal : Bool; // Falls kein InkDB
|
||||
END_VAR
|
||||
|
||||
VAR_IN_OUT
|
||||
Err_Kein_Signal : Bool; // Kein_Signal bei laufenden Antrieb
|
||||
Err_Signal_zu_lang : Bool; // Signal bei laufenden Antrieb zu lang
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Sensor_entprellen : Bool;
|
||||
Timer_1 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
|
||||
Timer_2 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
|
||||
Timer_3 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
|
||||
END_VAR
|
||||
|
||||
|
||||
--- NW 2: Störungen ---
|
||||
// Störung quittieren:
|
||||
A Quit
|
||||
R Err_Signal_zu_lang
|
||||
R Err_Kein_Signal
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Initialisierung
|
||||
SET;
|
||||
R #Signal;
|
||||
|
||||
// Signal zu lang:
|
||||
A B_Zaehlen // Sensor zum Zählen
|
||||
A Antrieb_aktiv // Antrieb ist aktiv
|
||||
AN Quit
|
||||
= "M200.0"
|
||||
NETWORK
|
||||
TITLE = Störungen
|
||||
|
||||
CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Signal_zu_lang, Q:=?, ET:=?)
|
||||
//Störung quittieren:
|
||||
U #Quit;
|
||||
R #Err_Signal_zu_lang;
|
||||
R #Err_Kein_Signal;
|
||||
|
||||
A Timer_2.Q
|
||||
S Err_Signal_zu_lang
|
||||
//Signal zu lang:
|
||||
U #B_Zaehlen ;//Sensor zum Zählen
|
||||
U #Antrieb_aktiv ;//Antrieb ist aktiv
|
||||
UN #Quit;
|
||||
= "M200.0";
|
||||
|
||||
// Kein Signal:
|
||||
AN B_Zaehlen // Sensor zum Zählen
|
||||
A Antrieb_aktiv // Antrieb ist aktiv
|
||||
AN Quit
|
||||
= "M200.0"
|
||||
CALL #Timer_2
|
||||
{time_type := 'Time'}
|
||||
( IN := "M200.0" ,
|
||||
PT := #Zeit_Signal_zu_lang
|
||||
);
|
||||
|
||||
CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Kein_Signal, Q:=?, ET:=?)
|
||||
U #Timer_2.Q;
|
||||
S #Err_Signal_zu_lang;
|
||||
|
||||
A Timer_3.Q
|
||||
S Err_Kein_Signal
|
||||
//Kein Signal:
|
||||
UN #B_Zaehlen ;//Sensor zum Zählen
|
||||
U #Antrieb_aktiv ;//Antrieb ist aktiv
|
||||
UN #Quit;
|
||||
= "M200.0";
|
||||
|
||||
CALL #Timer_3
|
||||
{time_type := 'Time'}
|
||||
( IN := "M200.0" ,
|
||||
PT := #Zeit_Kein_Signal
|
||||
);
|
||||
|
||||
--- NW 3: Zählen über Sensor ---
|
||||
AN B_Zaehlen // Sensor zum Zählen
|
||||
A Sensor_entprellen // Sperre Auswertung schon erfolgt
|
||||
A Antrieb_aktiv // Antrieb ist aktiv
|
||||
= "M200.0"
|
||||
U #Timer_3.Q;
|
||||
S #Err_Kein_Signal;
|
||||
|
||||
CALL SYS "TON" (IN:="M200.0", PT:=t#50ms, Q:=?, ET:=?)
|
||||
NETWORK
|
||||
TITLE = Zählen über Sensor
|
||||
UN #B_Zaehlen ;//Sensor zum Zählen
|
||||
U #Sensor_entprellen ;//Sperre Auswertung schon erfolgt
|
||||
U #Antrieb_aktiv ;//Antrieb ist aktiv
|
||||
= "M200.0";
|
||||
|
||||
A Timer_1.Q
|
||||
R Sensor_entprellen // Sperre Auswertung schon erfolgt
|
||||
CALL #Timer_1
|
||||
{time_type := 'Time'}
|
||||
( IN := "M200.0" ,
|
||||
PT := t#50ms
|
||||
);
|
||||
|
||||
AN B_Zaehlen // Sensor zum Zählen
|
||||
O Sensor_entprellen
|
||||
BEC
|
||||
U #Timer_1.Q;
|
||||
R #Sensor_entprellen ;//Sperre Auswertung schon erfolgt
|
||||
|
||||
SET
|
||||
S Sensor_entprellen // Sperre Auswertung schon erfolgt
|
||||
S Signal // Für Signal-Auswertung ohne InkDB
|
||||
UN #B_Zaehlen ;//Sensor zum Zählen
|
||||
O #Sensor_entprellen;
|
||||
BEB;
|
||||
|
||||
SET;
|
||||
S #Sensor_entprellen ;//Sperre Auswertung schon erfolgt
|
||||
S #Signal ;//Für Signal-Auswertung ohne InkDB
|
||||
|
||||
--- NW 4: Übergabe an Inkrement-Baustein / max.Wert erreicht? ---
|
||||
L Ink_DB
|
||||
T "MW200"
|
||||
NETWORK
|
||||
TITLE = Übergabe an Inkrement-Baustein / max.Wert erreicht?
|
||||
L #Ink_DB;
|
||||
T "MW200";
|
||||
|
||||
L 0 // Sinnvolle Angabe?
|
||||
<=I // Nein!
|
||||
BEC // Also nur Signal-Auswertung !
|
||||
L 0;//Sinnvolle Angabe?
|
||||
<=I;//Nein!
|
||||
BEB;//Also nur Signal-Auswertung !
|
||||
|
||||
OPN DB["MW200"] // Zähler-DB öffnen
|
||||
AUF DB[ "MW200"] ;//Zähler-DB öffnen
|
||||
|
||||
L DBD80
|
||||
+ DINT#1 // Aktueller Zählerwert +1
|
||||
T DBD80
|
||||
L %DBD80;
|
||||
+ DINT#1 ;//Aktueller Zählerwert +1
|
||||
T %DBD80;
|
||||
|
||||
L DBD80 // Aktueller Zählerwert
|
||||
L DBD76 // Max. Wert erreicht ?
|
||||
<=D // Nein !
|
||||
R DBX74.5 // Ohne Flag-Lauf wurde beendet
|
||||
R DBX74.4 // Flag-Lauf wurde beendet
|
||||
BEC
|
||||
L %DBD80 ;//Aktueller Zählerwert
|
||||
L %DBD76 ;//Max. Wert erreicht ?
|
||||
<=D ;//Nein !
|
||||
R %DBX74.5 ;//Ohne Flag-Lauf wurde beendet
|
||||
R %DBX74.4 ;//Flag-Lauf wurde beendet
|
||||
BEB;
|
||||
|
||||
-D // Restwert als Startwert nehmen !
|
||||
T DBD80 // Keine Inkrementalgeber verbaut, sondern nur Sensor
|
||||
-D ;//Restwert als Startwert nehmen !
|
||||
T %DBD80 ;//Keine Inkrementalgeber verbaut, sondern nur Sensor
|
||||
|
||||
AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
||||
= DBX74.5 // Ohne Flag-Lauf wurde beendet
|
||||
A DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
||||
= DBX74.4 // Flag-Lauf wurde beendet
|
||||
UN %DBX74.3 ;//Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
||||
= %DBX74.5 ;//Ohne Flag-Lauf wurde beendet
|
||||
U %DBX74.3 ;//Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
||||
= %DBX74.4 ;//Flag-Lauf wurde beendet
|
||||
|
||||
AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
||||
= DBX74.3
|
||||
UN %DBX74.3 ;//Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
||||
= %DBX74.3;
|
||||
|
||||
// Zähler auf 000 setzen ?:
|
||||
AN DBX74.6 // Zähler Zero-Load
|
||||
BEC
|
||||
//Zähler auf 000 setzen ?:
|
||||
UN %DBX74.6 ;//Zähler Zero-Load
|
||||
BEB;
|
||||
|
||||
SET
|
||||
R DBX74.6
|
||||
SET;
|
||||
R %DBX74.6;
|
||||
|
||||
L 0
|
||||
T DBD80 // Zählerwert zum Setzen
|
||||
L 0;
|
||||
T %DBD80 ;//Zählerwert zum Setzen
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
@@ -1,87 +1,94 @@
|
||||
=== FB 91: MSensoren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
ESensor : Bool // Eingang des zu überwachenden Sensors
|
||||
T_Ein : Int := 1 // Einschaltzeitverzögerung (*100ms)
|
||||
T_Aus : Int := 5 // Ausschaltzeitverzögerung (*100ms)
|
||||
tein_aktiv : Bool := TRUE // Einschaltzeit aktivieren
|
||||
taus_aktiv : Bool := TRUE // Ausschaltzeit aktivieren
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Stat : "USensor_Ein_Aus" // Status des Endschalters
|
||||
Temp:
|
||||
Constant:
|
||||
FUNCTION_BLOCK "MSensoren"
|
||||
TITLE = Ein-/Ausschaltverzögerung für Entprellung der Sensoren
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : EAN
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
ESensor { ExternalWritable := 'False'} : Bool; // Eingang des zu überwachenden Sensors
|
||||
T_Ein { ExternalWritable := 'False'} : Int := 1; // Einschaltzeitverzögerung (*100ms)
|
||||
T_Aus { ExternalWritable := 'False'} : Int := 5; // Ausschaltzeitverzögerung (*100ms)
|
||||
tein_aktiv { ExternalWritable := 'False'} : Bool := TRUE; // Einschaltzeit aktivieren
|
||||
taus_aktiv { ExternalWritable := 'False'} : Bool := TRUE; // Ausschaltzeit aktivieren
|
||||
END_VAR
|
||||
|
||||
--- NW 1: Zeitwert löschen ---
|
||||
A ESensor
|
||||
A Stat.B_Akt
|
||||
O
|
||||
AN ESensor
|
||||
AN Stat.B_Akt
|
||||
JCN Nw02
|
||||
VAR
|
||||
Stat { ExternalWritable := 'False'} : "USensor_Ein_Aus"; // Status des Endschalters
|
||||
END_VAR
|
||||
|
||||
|
||||
tdel: L 0 // Zeitwert löschen
|
||||
T Stat.T_Zelle
|
||||
|
||||
BEU
|
||||
|
||||
--- NW 2: Einschaltzeit abgelaufen ? ---
|
||||
Nw02: L Stat.T_Ein_Akt // Gewollter Zeitwert
|
||||
L 9999 // angegeben ?
|
||||
<>I // Ja !
|
||||
JC w020
|
||||
|
||||
L T_Ein // Sollwert übergeben
|
||||
T Stat.T_Ein_Akt // Gewollter Zeitwert
|
||||
|
||||
w020: A Stat.B_Akt
|
||||
JC Nw03
|
||||
|
||||
L Stat.T_Zelle // Aktueller Zeitwert
|
||||
L Stat.T_Ein_Akt // Gewollter Zeitwert erreicht ?
|
||||
>=I
|
||||
S Stat.B_Akt // Sensor ist nach Einschaltzeit aktiv
|
||||
JC tdel // Zeit löschen
|
||||
|
||||
JU Nw04
|
||||
|
||||
--- NW 3: Ausschaltzeit abgelaufen ? ---
|
||||
Nw03: L Stat.T_Aus_Akt // Gewollter Zeitwert
|
||||
L 9999 // angegeben ?
|
||||
<>I // Ja !
|
||||
JC w030
|
||||
|
||||
L T_Aus // Sollwert übergeben
|
||||
T Stat.T_Aus_Akt // Gewollter Zeitwert
|
||||
|
||||
w030: AN Stat.B_Akt
|
||||
JC Nw04
|
||||
|
||||
L Stat.T_Zelle // Aktueller Zeitwert
|
||||
L Stat.T_Aus_Akt // Gewollter Zeitwert erreicht ?
|
||||
>=I
|
||||
R Stat.B_Akt // Sensor ist nach Ausschaltzeit nicht mehr aktiv
|
||||
JC tdel // Zeit löschen
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Zeitwert löschen
|
||||
U #ESensor;
|
||||
U #Stat.B_Akt;
|
||||
O;
|
||||
UN #ESensor;
|
||||
UN #Stat.B_Akt;
|
||||
SPBN Nw02;
|
||||
|
||||
|
||||
--- NW 4: Zeit läuft ---
|
||||
Nw04: AN "100ms-Impuls" // nur als Impuls
|
||||
O
|
||||
AN Stat.B_Akt // Einschaltzeit läuft
|
||||
AN tein_aktiv // aber Zeit einfrieren
|
||||
O
|
||||
A Stat.B_Akt // Ausschaltzeit läuft
|
||||
AN taus_aktiv // aber Zeit einfrieren
|
||||
BEC
|
||||
tdel: L 0;//Zeitwert löschen
|
||||
T #Stat.T_Zelle;
|
||||
|
||||
L Stat.T_Zelle
|
||||
L "MW2"
|
||||
+I
|
||||
T Stat.T_Zelle
|
||||
BEA;
|
||||
NETWORK
|
||||
TITLE = Einschaltzeit abgelaufen ?
|
||||
Nw02: L #Stat.T_Ein_Akt;//Gewollter Zeitwert
|
||||
L 9999;//angegeben ?
|
||||
<>I;//Ja !
|
||||
SPB w020;
|
||||
|
||||
L #T_Ein;//Sollwert übergeben
|
||||
T #Stat.T_Ein_Akt;//Gewollter Zeitwert
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
w020: U #Stat.B_Akt;
|
||||
SPB Nw03;
|
||||
|
||||
L #Stat.T_Zelle;//Aktueller Zeitwert
|
||||
L #Stat.T_Ein_Akt;//Gewollter Zeitwert erreicht ?
|
||||
>=I;
|
||||
S #Stat.B_Akt;//Sensor ist nach Einschaltzeit aktiv
|
||||
SPB tdel;//Zeit löschen
|
||||
|
||||
SPA Nw04;
|
||||
NETWORK
|
||||
TITLE = Ausschaltzeit abgelaufen ?
|
||||
Nw03: L #Stat.T_Aus_Akt;//Gewollter Zeitwert
|
||||
L 9999;//angegeben ?
|
||||
<>I;//Ja !
|
||||
SPB w030;
|
||||
|
||||
L #T_Aus;//Sollwert übergeben
|
||||
T #Stat.T_Aus_Akt;//Gewollter Zeitwert
|
||||
|
||||
w030: UN #Stat.B_Akt;
|
||||
SPB Nw04;
|
||||
|
||||
L #Stat.T_Zelle;//Aktueller Zeitwert
|
||||
L #Stat.T_Aus_Akt;//Gewollter Zeitwert erreicht ?
|
||||
>=I;
|
||||
R #Stat.B_Akt;//Sensor ist nach Ausschaltzeit nicht mehr aktiv
|
||||
SPB tdel;//Zeit löschen
|
||||
|
||||
NETWORK
|
||||
TITLE = Zeit läuft
|
||||
Nw04: UN "100ms-Impuls";//nur als Impuls
|
||||
O;
|
||||
UN #Stat.B_Akt;//Einschaltzeit läuft
|
||||
UN #tein_aktiv;//aber Zeit einfrieren
|
||||
O;
|
||||
U #Stat.B_Akt;//Ausschaltzeit läuft
|
||||
UN #taus_aktiv;//aber Zeit einfrieren
|
||||
BEB;
|
||||
|
||||
L #Stat.T_Zelle;
|
||||
L "MW2";
|
||||
+I;
|
||||
T #Stat.T_Zelle;
|
||||
|
||||
NETWORK
|
||||
TITLE = Ende
|
||||
BE;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user