2152 lines
88 KiB
Plaintext
2152 lines
88 KiB
Plaintext
=== FB 276: MHM_Arbeitsplatz [STL] ===
|
|
INTERFACE:
|
|
Input:
|
|
Arbeitsplatz_Nr : Word // Aufruf für Arbeitsplatz
|
|
ErrQuit : Bool // Ablaufstörung quittieren
|
|
B_In_Schleuse_Vorstau : Bool // Sensor Trolley ist in Schleuse Vorstau
|
|
B_an_Platz_1 : Bool // Sensor Trolley ist an Platz 1
|
|
B_an_Platz_2 : Bool // Sensor Trolley ist an Platz 2
|
|
B_an_Platz_3 : Bool // Sensor Trolley ist an Platz 3
|
|
B_Nachstau_Einfahrt : Bool // Sensor Trolley fährt in Nachstau
|
|
B_Nachstau_Ausfahrt : Bool // Sensor Trolley ist am Nachstau-Sep
|
|
Y_Vorstau : Bool // Schleuse Vorstau geöffnet
|
|
Y_Platz_1 : Bool // Stopper Platz 1 geöffnet
|
|
Y_Platz_2 : Bool // Stopper Platz 2 geöffnet
|
|
Y_Platz_3 : Bool // Stopper Platz 3 geöffnet
|
|
Antrieb_Vorstau_aktiv : Bool // Vorstau-Antrieb aktiv
|
|
Antrieb_Nachstau_1_aktiv : Bool // Nachstau 1-Antrieb aktiv
|
|
Antrieb_Nachstau_2_aktiv : Bool // Nachstau 2-Antrieb aktiv
|
|
Antrieb_Nachstau_3_aktiv : Bool // Nachstau 3-Antrieb aktiv
|
|
Output:
|
|
Y_Weiche_zu_Platz_1 : Bool // Weiche zu Platz 1
|
|
Y_Weiche_zu_Platz_2 : Bool // Weiche zu Platz 2
|
|
Y_Weiche_von_Platz_1 : Bool // Weiche von Platz 1
|
|
Y_Weiche_von_Platz_2 : Bool // Weiche von Platz 2
|
|
Antrieb_Nachstau_1_vor : Bool // Nachstau 1-Antrieb einschalten
|
|
Antrieb_Nachstau_2_vor : Bool // Nachstau 2-Antrieb einschalten
|
|
Trolley_hat_ABS_erreicht : Bool
|
|
Reset_Vorstau_Schleuse : Bool // Reset-Impuls an Vorstau-Schleuse
|
|
Reset_Platz_1_Stopper : Bool // Reset-Impuls an Platz 1-Stopper
|
|
Reset_Platz_2_Stopper : Bool // Reset-Impuls an Platz 2-Stopper
|
|
Reset_Platz_3_Stopper : Bool // Reset-Impuls an Platz 3-Stopper
|
|
Error : Word // Störungen übergeben
|
|
InOut:
|
|
Antrieb_Vorstau_vor : Bool // Vorstau-Antrieb einschalten
|
|
Antrieb_Nachstau_3_vor : Bool // Nachstau 3-Antrieb einschalten
|
|
hStOk : Bool // Anzeige Start n. Störung aktivieren
|
|
Static:
|
|
Para : Struct // Parameter
|
|
AMR_DL_DB : Int // Einsprung AMR-Datenliste-DB
|
|
AMR_DL_DW : Int // Einsprung AMR-Datenliste-DW
|
|
Reserve : Array[1..3] of Int // Reserve
|
|
Arbeitsplatz : "UDLHM_Arbeitsplatz" // Statische Arbeitsplatzdaten (aus DL)
|
|
Dyn : Struct // Dynamische Daten
|
|
SS : Struct // Schnittstelle von/zu ausserhalb
|
|
>Trolley_ist_in_Vorstau_eingefahren : Bool // IN: Trolley ist in Vorstau eingefahren
|
|
PC>Trolley_zum_Platz_1_starten : Bool // Von PC: Trolley zum Platz 1 starten
|
|
PC>Trolley_zum_Platz_2_starten : Bool // Von PC: Trolley zum Platz 2 starten
|
|
PC>Trolley_zum_Platz_3_starten : Bool // Von PC: Trolley zum Platz 2 starten
|
|
Trolley_ist_in_Platz_1_eingefahren>PC : Bool // An PC: Trolley ist in Platz 1 eingefahren
|
|
Trolley_ist_in_Platz_2_eingefahren>PC : Bool // An PC: Trolley ist in Platz 2 eingefahren
|
|
Trolley_ist_in_Platz_3_eingefahren>PC : Bool // An PC: Trolley ist in Platz 3 eingefahren
|
|
Externe_Anzeige : Bool // Von PC: Externe gelbe Anzeige aktivieren
|
|
Frei610 : Bool
|
|
PC>Trolley_an_Platz_1_freigegeben : Bool // Von PC: Trolley ist an Platz 1 beladen / freigegeben
|
|
PC>Trolley_an_Platz_2_freigegeben : Bool // Von PC: Trolley ist an Platz 2 beladen / freigegeben
|
|
PC>Trolley_an_Platz_3_freigegeben : Bool // Von PC: Trolley ist an Platz 3 beladen / freigegeben
|
|
Trolley_ist_aus_Platz_1_ausgefahren>PC : Bool // An PC: Trolley ist aus Platz 1 ausgefahren
|
|
Trolley_ist_aus_Platz_2_ausgefahren>PC : Bool // An PC: Trolley ist aus Platz 2 ausgefahren
|
|
Trolley_ist_aus_Platz_3_ausgefahren>PC : Bool // An PC: Trolley ist aus Platz 3 ausgefahren
|
|
Status : Struct // Intern
|
|
Arbeitsplatz_aktiviert : Bool // ABP durch PC aktiviert
|
|
Trolley_fährt_in_Vorstau : Bool // Trolley fährt in Vorstau
|
|
Trolley_fährt_nach_Platz_1 : Bool // Trolley fährt nach Platz 1
|
|
Trolley_fährt_nach_Platz_2 : Bool // Trolley fährt nach Platz 2
|
|
Trolley_fährt_nach_Platz_3 : Bool // Trolley fährt nach Platz 3
|
|
Trolley_fährt_aus_Platz_1 : Bool // Trolley fährt aus Nachstau 1
|
|
Trolley_fährt_aus_Platz_2 : Bool // Trolley fährt aus Nachstau 2
|
|
Trolley_fährt_aus_Platz_3 : Bool // Trolley fährt aus Nachstau 3
|
|
Trolley_fährt_in_Nachstau : Bool
|
|
Trolley_hat_Nachstau_erreicht : Bool // Trolley ist in Nachstau eingefahren
|
|
Leer_Check : Bool // Vorstau-Leercheck aktiv
|
|
Error_aktiv : Bool // Störung vorhanden
|
|
Beladung_erfolgt : Bool // Für Prio (3 Minuten aktiv)
|
|
Reset_zum_Beladeplatz_aktiv : Bool // Reset Sk zum Beladeplatz aktiv
|
|
Reset_Platz_1_aktiv : Bool // Reset Platz 1 aktiv
|
|
Reset_Platz_2_aktiv : Bool // Reset Platz 2 aktiv
|
|
Reset_Platz_3_aktiv : Bool // Reset Platz 3 aktiv
|
|
Reset_aus_Beladeplatz_aktiv : Bool // Reset Sk aus Beladeplatz aktiv
|
|
HMI : Struct
|
|
Res_Trolleys : Int // Anzahl reservierte Trolleys (IN:PLC, OUT:PLC)
|
|
Frei_Plätze : Int // Freiplätze für Trolleys (IN:PLC, OUT:PLC)
|
|
Vorstau_Trolleys : Int // Anzahl Vorstau-Trolleys (IN:PLC, OUT:PLC)
|
|
Vorstau_resetten : Bool := 1 // Vorstau-Schleuse resetten (IN:HMI, Out:PLC)
|
|
Platz_1_resetten : Bool // Platz 1-Schleuse resetten (IN:HMI, Out:PLC)
|
|
Platz_2_resetten : Bool // Platz 2-Schleuse resetten (IN:HMI, Out:PLC)
|
|
Platz_3_resetten : Bool // Platz 3-Schleuse resetten (IN:HMI, Out:PLC)
|
|
Sk_zu_Plätze_resetten : Bool := 1
|
|
Sk_aus_Plätze_resetten : Bool := 1
|
|
Sk_zum_Beladeplatz : "USk_Omni" // Status der Schrittkette
|
|
Sk_aus_Beladeplatz : "USk" // Status der Schrittkette
|
|
Rueckmld : Struct
|
|
RET_VAL_BLKMOV_ABP : Int // Rückmeldung nach BLKMOV-Aufruf
|
|
RET_VAL_DL_ABP : Byte // Rückmeldung nach DatenOut-Aufruf
|
|
RET_VAL_SendFIFO : Byte
|
|
Error : "UErrHM_Arbeitsplatz"
|
|
Mindestzeit_Rein : Int // Mindestzeit [s]
|
|
Stop_Ursache_Rein : Word // Stop-Stelle: Nw + Position
|
|
Mindestzeit_Raus : Int // Mindestzeit [s]
|
|
Stop_Ursache_Raus : Word // Stop-Stelle: Nw + Position
|
|
Vorstau : Struct
|
|
Anzahl_Reservierungen : Int // Anzahl der reservierten Trolleys
|
|
Anzahl_Leertrolleys : Int // Anzahl der vorhandenen Leertrolleys
|
|
Freigabe_an_Stopper : Bool // Freigabe an Ziel-FC
|
|
Trolley_fährt_aus : Bool // Trolley hat Stopper verlassen
|
|
Gespeichert_Anzahl : Int // Aufgrund dieser Anzahl Eintrag in DL
|
|
Reserve : Array[1..6] of Int
|
|
Platz_1 : Struct
|
|
Beladestelle_wurde_angefahren : Bool // Beladestelle wurde angefahren
|
|
Trolley_ist_an_Beladung : Bool // Trolley ist an Beladestelle
|
|
Trolley_hat_Arbeitsplatz_verlassen : Bool // Trolley hat Arbeitsplatz verlassen (Draussen-FC)
|
|
Beladestelle_wurde_entsorgt : Bool // Beladestelle wurde entsorgt
|
|
Freigabe_an_Stopper : Bool // Freigabe an Ziel-FC
|
|
Trolley_fährt_aus : Bool // Trolley hat Stopper verlassen
|
|
TrolleyID_ausgefahren : DInt
|
|
Reserve : Array[1..2] of Int
|
|
Platz_2 : Struct
|
|
Beladestelle_wurde_angefahren : Bool // Beladestelle wurde angefahren
|
|
Trolley_ist_an_Beladung : Bool // Trolley ist an Beladestelle
|
|
Trolley_hat_Arbeitsplatz_verlassen : Bool // Trolley hat Arbeitsplatz verlassen (Draussen-FC)
|
|
Beladestelle_wurde_entsorgt : Bool // Beladestelle wurde entsorgt
|
|
Freigabe_an_Stopper : Bool // Freigabe an Ziel-FC
|
|
Trolley_fährt_aus : Bool // Trolley hat Stopper verlassen
|
|
TrolleyID_ausgefahren : DInt
|
|
Reserve : Array[1..2] of Int
|
|
Platz_3 : Struct
|
|
Beladestelle_wurde_angefahren : Bool // Beladestelle wurde angefahren
|
|
Trolley_ist_an_Beladung : Bool // Trolley ist an Beladestelle
|
|
Trolley_hat_Arbeitsplatz_verlassen : Bool // Trolley hat Arbeitsplatz verlassen (Draussen-FC)
|
|
Beladestelle_wurde_entsorgt : Bool // Beladestelle wurde entsorgt
|
|
Freigabe_an_Stopper : Bool // Freigabe an Ziel-FC
|
|
Trolley_fährt_aus : Bool // Trolley hat Stopper verlassen
|
|
TrolleyID_ausgefahren : DInt
|
|
Reserve : Array[1..2] of Int
|
|
LeerCheckZeit : Int
|
|
BeladungErfolgtZeit : Int
|
|
Simulation : Struct
|
|
Aktiviert : Bool // Von Simulation
|
|
Einen Trolley ausfahren : Bool // Von Simulation
|
|
Neustart : Bool // Von Simulation
|
|
Trolleys bereit : Bool // An SImulation
|
|
Trolley gestartet : Bool // An Simulation
|
|
Trolley 1 gefahren : Bool // Intern
|
|
Trolley 2 gefahren : Bool // Intern
|
|
Trolley 3 gefahren : Bool // Intern
|
|
Res200 : Array[1..7] of Int
|
|
Temp:
|
|
Quelle : Any // Zeiger, wo Rein-Daten sind
|
|
Ueb_akt : Bool // Überwachungszeit aktivieren
|
|
Weiter : Bool // Weiterschaltbedingung ist erfüllt
|
|
Warte_neu : Bool // Wartezeit neu triggern
|
|
Warte_stop : Bool // Wartezeit stoppen
|
|
Raus_Ueb_akt : Bool // Überwachungszeit aktivieren
|
|
Raus_Weiter : Bool // Weiterschaltbedingung ist erfüllt
|
|
Raus_Warte_neu : Bool // Wartezeit neu triggern
|
|
Raus_Warte_stop : Bool // Wartezeit stoppen
|
|
Vorstau_ist_leer : Bool // Vorstau zeitlang ohne Sensor
|
|
MindestZeit_Rein_Ok : Bool
|
|
MindestZeit_Raus_Ok : Bool
|
|
TrolleyID_Ok : Bool
|
|
Error_SendFIFO : Bool
|
|
Position : Int
|
|
BenötigteLeerTrolleys : Int // Zusätzlich benötigte Trolleys
|
|
Constant:
|
|
|
|
--- NW 1: Parameter-Übergabe ---
|
|
L Arbeitsplatz_Nr
|
|
|
|
L 276 // Einsprung AMR-DL
|
|
T Para.AMR_DL_DB // vor Aufruf übergeben!
|
|
L 0
|
|
T Para.AMR_DL_DW
|
|
|
|
|
|
--- NW 2: Anzeige OP ---
|
|
L 252 // Bereichsstop aktiv
|
|
AN Dyn.Sk_zum_Beladeplatz.Bereich_ok // Also: Bereichsstop / Not-Aus
|
|
JC w010
|
|
|
|
L 253
|
|
AN Dyn.Sk_zum_Beladeplatz.Auto_akt // Keine Betriebsart
|
|
AN Dyn.Sk_zum_Beladeplatz.Hand_akt
|
|
JC w010
|
|
|
|
L 255 // Handbetrieb aktiv
|
|
A Dyn.Sk_zum_Beladeplatz.Hand_akt
|
|
JC w010
|
|
|
|
L Dyn.Sk_zum_Beladeplatz.Akt_Schritt // Aktiver Schritt
|
|
w010: T Dyn.Sk_zum_Beladeplatz.OP_Schritt
|
|
|
|
|
|
--- NW 3: Out-Bits zum Zurücksetzen ---
|
|
SET
|
|
// R #Y_Weiche_zu_Platz_1
|
|
// R #Y_Weiche_zu_Platz_2
|
|
// R #Y_Weiche_von_Platz_1
|
|
// R #Y_Weiche_von_Platz_2
|
|
R Antrieb_Nachstau_1_vor
|
|
R Antrieb_Nachstau_2_vor
|
|
R Antrieb_Nachstau_3_vor
|
|
R Vorstau_ist_leer
|
|
R Reset_Vorstau_Schleuse
|
|
R Reset_Platz_1_Stopper // Nur 1 Zyklus
|
|
R Reset_Platz_2_Stopper
|
|
R Reset_Platz_3_Stopper
|
|
|
|
AN Y_Vorstau
|
|
R Trolley_hat_ABS_erreicht
|
|
|
|
SET // Jeden Zyklus neu
|
|
|
|
|
|
--- NW 4: HMI-Zeug ---
|
|
// Von HMI:
|
|
// Platz-Resets siehe dort!
|
|
A Dyn.HMI.Vorstau_resetten
|
|
R Dyn.HMI.Vorstau_resetten
|
|
JCN HMI_B // Negierter Sprung
|
|
|
|
SET
|
|
S Dyn.Status.Leer_Check
|
|
|
|
// LeerTrolley-Anforderung löschen:
|
|
CALL FC "AMR_LeerTrolley_Anforderung_Del" (ArbeitsPlatz:=Arbeitsplatz_Nr, Gespeicherte_LeerTrolleys:=Dyn.Vorstau.Gespeichert_Anzahl)
|
|
|
|
HMI_B: A Dyn.HMI."Sk_zu_Plätze_resetten"
|
|
R Dyn.HMI."Sk_zu_Plätze_resetten"
|
|
S Dyn.Sk_zum_Beladeplatz.Reset // SK zurücksetzen
|
|
|
|
A Dyn.HMI."Sk_aus_Plätze_resetten"
|
|
R Dyn.HMI."Sk_aus_Plätze_resetten"
|
|
S Dyn.Sk_aus_Beladeplatz.Reset // SK zurücksetzen
|
|
|
|
CLR
|
|
|
|
// An HMI:
|
|
L Dyn.Vorstau.Anzahl_Leertrolleys
|
|
T Dyn.HMI.Vorstau_Trolleys
|
|
|
|
L Dyn.Vorstau.Anzahl_Reservierungen
|
|
T Dyn.HMI.Res_Trolleys
|
|
|
|
L Arbeitsplatz.MaxAnzahl
|
|
L Dyn.Vorstau.Anzahl_Reservierungen
|
|
-I
|
|
L Dyn.Vorstau.Anzahl_Leertrolleys
|
|
-I
|
|
T Dyn.HMI."Frei_Plätze"
|
|
|
|
L 0
|
|
>=I
|
|
JC Anzahl_ok
|
|
|
|
T Dyn.HMI."Frei_Plätze" // Minimum übergeben
|
|
|
|
Anzahl_ok: L Dyn.HMI."Frei_Plätze"
|
|
T "BenötigteLeerTrolleys"
|
|
|
|
|
|
--- NW 5: Leer-Check im Vorstau ---
|
|
AN Dyn.Status.Leer_Check
|
|
JC RLCT
|
|
|
|
// Leer-Check aktiv:
|
|
A B_In_Schleuse_Vorstau
|
|
O Y_Vorstau
|
|
JC RLCT
|
|
|
|
AN B_In_Schleuse_Vorstau
|
|
S Antrieb_Vorstau_vor
|
|
|
|
AN Antrieb_Vorstau_aktiv
|
|
ON "1s-Impuls"
|
|
JC LCE
|
|
|
|
L Dyn.LeerCheckZeit
|
|
+ 1
|
|
T Dyn.LeerCheckZeit
|
|
|
|
// Leer-Check fertig ?
|
|
L 60 // 60s rum?
|
|
<I // Nein!
|
|
JC LCE
|
|
|
|
SET
|
|
R Dyn.Status.Leer_Check
|
|
|
|
L 0 // Keine Trolleys mehr vorhanden
|
|
T Dyn.Vorstau.Anzahl_Leertrolleys
|
|
|
|
// LeerCheck-Zeit neu aufziehen:
|
|
RLCT: L 0
|
|
T Dyn.LeerCheckZeit
|
|
|
|
LCE: NOP 0
|
|
|
|
|
|
--- NW 6: Beladung ist erfolgt (für Prio) ---
|
|
L Dyn.Vorstau.Anzahl_Reservierungen
|
|
L 0 // Trolleys zum ABP unterwegs?
|
|
>I // Ja !
|
|
O B_Nachstau_Ausfahrt // Trolley wartet auf Ausfahrt
|
|
S Dyn.Status.Beladung_erfolgt // Zusätzlich beim Starten aus ABP!
|
|
|
|
AN Dyn.Status.Beladung_erfolgt
|
|
JC RBET
|
|
|
|
A "DAMR_Bereich".A01_UH06.BereichErr
|
|
ON "1s-Impuls"
|
|
JC BEE
|
|
|
|
L Dyn.BeladungErfolgtZeit
|
|
+ 1
|
|
T Dyn.BeladungErfolgtZeit
|
|
|
|
// Keine erneute Beladung fertig ?
|
|
L 300 // 5 min rum?
|
|
<I // Nein!
|
|
JC BEE
|
|
|
|
SET
|
|
R Dyn.Status.Beladung_erfolgt
|
|
|
|
// LeerCheck-Zeit neu aufziehen:
|
|
RBET: L 0
|
|
T Dyn.BeladungErfolgtZeit
|
|
|
|
BEE: NOP 0
|
|
|
|
|
|
--- NW 7: Zusätzlich benötigte Leertrolleys ---
|
|
// Bei vielen benötigten Leer-Trolleys, Arbeitsplätze mit einbeziehen:
|
|
L Dyn.HMI."Frei_Plätze"
|
|
L 6
|
|
>=I
|
|
JCN Normal // Negierter Sprung
|
|
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
O Dyn.Platz_1.Trolley_ist_an_Beladung
|
|
JC ABP2 // Also kein weiterer LT benötigt
|
|
|
|
L "BenötigteLeerTrolleys"
|
|
+ 1 // Weiterer Trolley benötigt
|
|
T "BenötigteLeerTrolleys" // Zusätzlich benötigte Trolleys
|
|
|
|
ABP2: A Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
O Dyn.Platz_2.Trolley_ist_an_Beladung
|
|
JC ABP3 // Also kein weiterer LT benötigt
|
|
|
|
L "BenötigteLeerTrolleys"
|
|
+ 1 // Weiterer Trolley benötigt
|
|
T "BenötigteLeerTrolleys" // Zusätzlich benötigte Trolleys
|
|
|
|
ABP3: A Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
O Dyn.Platz_3.Trolley_ist_an_Beladung
|
|
JC Normal // Also kein weiterer LT benötigt
|
|
|
|
L "BenötigteLeerTrolleys"
|
|
+ 1 // Weiterer Trolley benötigt
|
|
T "BenötigteLeerTrolleys" // Zusätzlich benötigte Trolleys
|
|
|
|
Normal: NOP 0
|
|
|
|
|
|
--- NW 8: LeerTrolley-Anforderung ---
|
|
A Dyn.Status.Arbeitsplatz_aktiviert
|
|
AN Dyn.Status.Leer_Check
|
|
JC Anforderung
|
|
|
|
L 0 // Löschen, damit keine Anforderung
|
|
T "BenötigteLeerTrolleys"
|
|
T Dyn.Vorstau.Gespeichert_Anzahl
|
|
|
|
Anforderung: CALL FC "AMR_LeerTrolley_Anforderung" (LeerTrolleys_benötigt:="BenötigteLeerTrolleys", ArbeitsPlatz:=Arbeitsplatz_Nr, Gespeicherte_LeerTrolleys:=Dyn.Vorstau.Gespeichert_Anzahl)
|
|
|
|
|
|
--- NW 9: Rein-Schrittkette zurücksetzen ---
|
|
AN Dyn.HMI."Sk_zu_Plätze_resetten"
|
|
AN Dyn.Sk_zum_Beladeplatz.Reset // SK zurücksetzen
|
|
JC en04
|
|
|
|
// Schrittkette zurücksetzen:
|
|
L 0 // Schritt 0: Warten
|
|
T Dyn.Sk_zum_Beladeplatz.Akt_Schritt
|
|
|
|
L 0 // Zeitwert löschen
|
|
T Dyn.Sk_zum_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_zum_Beladeplatz.Tok_Zelle
|
|
T Dyn.Mindestzeit_Rein
|
|
|
|
SET
|
|
R Dyn.HMI."Sk_zu_Plätze_resetten"
|
|
R Dyn.Error.Err_BLKMov // Error bei Block kopieren
|
|
R Dyn.Sk_zum_Beladeplatz.Reset // SK zurücksetzen
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Schritt // Undefinierter Schritt
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Sofort weiter !
|
|
S Dyn.Sk_zum_Beladeplatz.Reset_Akt // Reset ist aktiv
|
|
S Reset_Vorstau_Schleuse
|
|
R Dyn.Vorstau."Trolley_fährt_aus"
|
|
R Dyn.Vorstau.Freigabe_an_Stopper
|
|
|
|
SET
|
|
R Dyn.Error.ABP_DL // AMR-Datenliste fehlerhaft
|
|
R Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz
|
|
R Dyn.Error.Err_Uebzeit_SK_Rein // Überwachungzeit ist abgelaufen
|
|
R Dyn.Error.Err_Schritt_Sk_Rein // Schritt-Nummer ist nicht definiert
|
|
R Dyn.Error.Err_BLKMov
|
|
|
|
// Defaultwerte übergeben:
|
|
L 0 // Damit statische Werte neu aus Datenbank geholt werden !
|
|
T Arbeitsplatz.ABP_Nr // Nummer des Arbeitsplatzes
|
|
|
|
BEU
|
|
|
|
en04: NOP 0
|
|
|
|
|
|
--- NW 10: Raus-Schrittkette zurücksetzen ---
|
|
AN Dyn.HMI."Sk_aus_Plätze_resetten"
|
|
AN Dyn.Sk_aus_Beladeplatz.Reset // SK zurücksetzen
|
|
JC en05
|
|
|
|
// Schrittkette zurücksetzen:
|
|
L 0 // Schritt 0: Warten
|
|
T Dyn.Sk_aus_Beladeplatz.Akt_Schritt
|
|
|
|
L 0 // Zeitwert löschen
|
|
T Dyn.Sk_aus_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_aus_Beladeplatz.Tok_Zelle
|
|
T Dyn.Mindestzeit_Raus
|
|
|
|
SET
|
|
R Dyn.HMI."Sk_aus_Plätze_resetten"
|
|
R Dyn.Sk_aus_Beladeplatz.Reset // SK zurücksetzen
|
|
R Dyn.Sk_aus_Beladeplatz.Err_Schritt // Undefinierter Schritt
|
|
R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit // Sofort weiter !
|
|
S Dyn.Sk_aus_Beladeplatz.Reset_Akt // Reset ist aktiv
|
|
S Reset_Platz_1_Stopper
|
|
S Dyn.Status.Reset_Platz_1_aktiv
|
|
R Dyn.Platz_1.Freigabe_an_Stopper
|
|
S Reset_Platz_2_Stopper
|
|
S Dyn.Status.Reset_Platz_2_aktiv
|
|
R Dyn.Platz_2.Freigabe_an_Stopper
|
|
S Reset_Platz_3_Stopper
|
|
S Dyn.Status.Reset_Platz_3_aktiv
|
|
R Dyn.Platz_3.Freigabe_an_Stopper
|
|
|
|
SET
|
|
R Dyn.Error.Err_Uebzeit_SK_Raus // Überwachungzeit ist abgelaufen
|
|
R Dyn.Error.Err_Schritt_Sk_Raus // Schritt-Nummer ist nicht definiert
|
|
|
|
BEU
|
|
|
|
en05: NOP 0
|
|
|
|
|
|
--- NW 11: Störungen nach Außen übergeben ---
|
|
L 0
|
|
T "MW200"
|
|
|
|
A Dyn.Error.ABP_DL // AMR-Datenliste fehlerhaft
|
|
= "M200.0"
|
|
A Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz
|
|
= "M200.1"
|
|
A Dyn.Error.Err_BLKMov // Error bei Block kopieren
|
|
= "M200.2"
|
|
A Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Überwachungzeit ist abgelaufen
|
|
= Dyn.Error.Err_Uebzeit_SK_Rein
|
|
= "M200.3"
|
|
A Dyn.Sk_zum_Beladeplatz.Err_Schritt // Schritt-Nummer ist nicht definiert
|
|
= Dyn.Error.Err_Schritt_Sk_Rein
|
|
= "M200.4"
|
|
A Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
= Dyn.Error.Err_Uebzeit_SK_Raus
|
|
= "M200.5"
|
|
A Dyn.Sk_aus_Beladeplatz.Err_Schritt
|
|
= "M200.6"
|
|
A Dyn.Error.Err_Platz_1
|
|
= "M200.7"
|
|
A Dyn.Error.Err_Platz_2
|
|
= "M201.0"
|
|
A Dyn.Error.Err_Platz_3
|
|
= "M201.1"
|
|
A Dyn.Error.Reset_Einfahren_akt
|
|
= "M201.2"
|
|
A Dyn.Error.Reset_Platz_1_akt
|
|
= "M201.3"
|
|
A Dyn.Error.Reset_Platz_2_akt
|
|
= "M201.4"
|
|
A Dyn.Error.Reset_Platz_2_akt
|
|
= "M201.5"
|
|
A Dyn.Error.Reset_Ausfahren_akt
|
|
= "M201.6"
|
|
CLR
|
|
= "M201.7"
|
|
|
|
L "MW200"
|
|
T Error // Schnittstelle nach Außen
|
|
|
|
// Störung vorhanden:
|
|
L 0
|
|
<>I // Ja !
|
|
= Dyn.Status.Error_aktiv
|
|
S hStOk
|
|
|
|
// Störungen pro Zyklus neu erzeugen:
|
|
SET
|
|
R Dyn.Error.ABP_DL // AMR-Datenliste fehlerhaft
|
|
R Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz
|
|
R Dyn.Error.Err_BLKMov
|
|
// R #Dyn.Sk_zum_Beladeplatz.Err_Uebzeit//Überwachungzeit ist abgelaufen
|
|
// R #Dyn.Sk_zum_Beladeplatz.Err_Schritt//Schritt-Nummer ist nicht definiert
|
|
// R #Dyn.Sk_aus_Beladeplatz.Err_Uebzeit//Überwachungzeit ist abgelaufen
|
|
// R #Dyn.Sk_aus_Beladeplatz.Err_Schritt//Schritt-Nummer ist nicht definiert
|
|
R Dyn.Error.Err_Platz_1
|
|
R Dyn.Error.Err_Platz_2
|
|
R Dyn.Error.Err_Platz_3
|
|
R Dyn.Error.Reset_Einfahren_akt
|
|
R Dyn.Error.Reset_Platz_1_akt
|
|
R Dyn.Error.Reset_Platz_1_akt
|
|
R Dyn.Error.Reset_Platz_1_akt
|
|
R Dyn.Error.Reset_Ausfahren_akt
|
|
|
|
|
|
--- NW 12: Statische Arbeitsplatz-Parameter holen ---
|
|
L Arbeitsplatz.ABP_Nr // Nummer des Lagers
|
|
L Arbeitsplatz_Nr // Aufruf-Parameter
|
|
==I // Identisch ?
|
|
R Dyn.Error.ABP_DL // AMR-Datenbank fehlerhaft
|
|
R Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz
|
|
JC en06 // Ja !
|
|
|
|
T "MW200" // Search-Daten
|
|
|
|
CALL FC "DatenOut" (SSDB:=Para.AMR_DL_DB, SSDW:=Para.AMR_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_ABP, OUTDATEN:=P#M220.0, Position:="MW196")
|
|
|
|
JBI G_Ok
|
|
|
|
A "M199.0"
|
|
JCN w060
|
|
|
|
SET
|
|
= Dyn.Error.ABP_DL // AMR-Datenbank fehlerhaft
|
|
|
|
L 16#A061
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
BEU
|
|
|
|
w060: SET
|
|
S Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz
|
|
|
|
L 16#A062
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
BEU
|
|
|
|
// Kennung + Datenbytes
|
|
G_Ok: SET
|
|
R Dyn.Error.ABP_DL // AMR-Datenbank fehlerhaft
|
|
R Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz
|
|
|
|
L 16#1004 // Kennung 10 + Word=04
|
|
T LW0 // Any-Kennung, Datentyp
|
|
L 20 // Datenwords speichern
|
|
T LW2 // Wiederholungen
|
|
|
|
// 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
|
|
|
|
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_ABP, DSTBLK:=Arbeitsplatz) // Datenliste-Daten speichern
|
|
|
|
L 16#A063
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
L Dyn.Rueckmld.RET_VAL_BLKMOV_ABP // Rückmeldung
|
|
L 0 // Fehler vorhanden ?
|
|
<>I // Ja !
|
|
= Dyn.Error.Err_BLKMov // Error bei Block kopieren
|
|
BEC
|
|
|
|
L Arbeitsplatz.ABP_Typ // AMR-Typ = 276 (Normal)
|
|
L 276 // Dieser Aufruf-FB ?
|
|
==I // Ja !
|
|
JC w061
|
|
|
|
SET
|
|
S Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz
|
|
|
|
L 0 // Lager ungültig !
|
|
T Arbeitsplatz.ABP_Nr // Nummer des Lagers
|
|
|
|
L 16#A064
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
BEU
|
|
|
|
// Defaultwerte übergeben:
|
|
w061: NOP 0
|
|
|
|
BEU
|
|
|
|
en06: NOP 0
|
|
|
|
|
|
--- NW 13: Trolley kommt in Vorstau / Antrieb zusätzlich starten ---
|
|
// Antrieb zusätlich starten:
|
|
A ErrQuit // Überwachungszeit abgelaufen quittieren
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit
|
|
|
|
|
|
--- NW 14: Indirekt adressierte Daten in temporäre Daten übergeben ---
|
|
A ErrQuit // Überwachungszeit abgelaufen quittieren
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit
|
|
R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
R Ueb_akt // Überwachungszeit aktivieren
|
|
|
|
|
|
--- NW 15: Einfahrenden Trolley in AMR verarbeiten ---
|
|
A Dyn.Status."Trolley_fährt_in_Vorstau"
|
|
R Dyn.Status."Trolley_fährt_in_Vorstau"
|
|
JCN NoNewT // Negierter Sprung
|
|
|
|
// Reservierungen -1:
|
|
L Dyn.Vorstau.Anzahl_Reservierungen
|
|
+ -1
|
|
T Dyn.Vorstau.Anzahl_Reservierungen
|
|
|
|
L 0 // Minimum unterschritten ?
|
|
>=I // Nein !
|
|
JC ResOk
|
|
|
|
T Dyn.Vorstau.Anzahl_Reservierungen // Minimum übergeben
|
|
|
|
// Leertrolleys +1:
|
|
ResOk: L Dyn.Vorstau.Anzahl_Leertrolleys
|
|
+ +1
|
|
T Dyn.Vorstau.Anzahl_Leertrolleys
|
|
|
|
NoNewT: NOP 0
|
|
|
|
|
|
--- NW 16: Platz 1 ---
|
|
// Freigabe von PC sinnlos!:
|
|
AN Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
R Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
|
|
// Trolley ist draussen:
|
|
AN Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen // Rückmeldung von Draussen-FC
|
|
JC P1HMI
|
|
|
|
// Reset war aktiv?:
|
|
A Dyn.Status.Reset_Platz_1_aktiv
|
|
R Dyn.Status.Reset_Platz_1_aktiv
|
|
JCN P1NoReset // Negierter Sprung!
|
|
|
|
SET
|
|
R Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
|
|
A B_an_Platz_1 // Trolley vorhanden
|
|
S Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
S Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC"
|
|
|
|
P1NoReset: AN B_an_Platz_1
|
|
R Dyn.Platz_1.Trolley_ist_an_Beladung // Trolley ist ausgefahren
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_1" // /wird in Raus-SK benötigt (Schritt 2!)
|
|
JC P1HMI
|
|
|
|
SET
|
|
R Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
|
|
|
|
// HMI-Platz-Reset:
|
|
P1HMI: A Dyn.HMI.Platz_1_resetten
|
|
R Dyn.HMI.Platz_1_resetten
|
|
JCN P1Check
|
|
|
|
// Trolley vorhanden:
|
|
A B_an_Platz_1 // Trolley vorhanden
|
|
AN Y_Platz_1 // Stopper GST
|
|
A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
JC P1Check // Kein Reset notwendig
|
|
|
|
// Kein Trolley vorhanden:
|
|
AN B_an_Platz_1 // Trolley vorhanden
|
|
AN Y_Platz_1 // Stopper GST
|
|
AN Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
JC P1Check // Kein Reset notwendig
|
|
|
|
// Unklarer Zustand -> Reset starten
|
|
SET
|
|
S Reset_Platz_1_Stopper
|
|
S Dyn.Status.Reset_Platz_1_aktiv
|
|
|
|
// Daten-/Sensor-Check:
|
|
P1Check: A Dyn.Status.Reset_Platz_1_aktiv
|
|
O Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
O Y_Platz_1
|
|
R Dyn.Error.Err_Platz_1
|
|
JC P1Ende
|
|
|
|
A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN B_an_Platz_1
|
|
O
|
|
AN Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
A B_an_Platz_1
|
|
= Dyn.Error.Err_Platz_1
|
|
|
|
P1Ende: NOP 0
|
|
|
|
|
|
--- NW 17: Platz 2 ---
|
|
// Freigabe von PC sinnlos!:
|
|
AN Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
R Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
|
|
// Trolley ist draussen:
|
|
AN Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen // Rückmeldung von Draussen-FC
|
|
JC P2HMI
|
|
|
|
// Reset war aktiv?:
|
|
A Dyn.Status.Reset_Platz_2_aktiv
|
|
R Dyn.Status.Reset_Platz_2_aktiv
|
|
JCN P2NoReset // Negierter Sprung!
|
|
|
|
SET
|
|
R Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
|
|
A B_an_Platz_2 // Trolley vorhanden
|
|
S Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
S Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC"
|
|
|
|
P2NoReset: AN B_an_Platz_2
|
|
R Dyn.Platz_2.Trolley_ist_an_Beladung // Trolley ist ausgefahren
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2" // /wird in Raus-SK benötigt (Schritt 2!)
|
|
JC P2HMI
|
|
|
|
SET
|
|
R Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
|
|
|
|
// HMI-Platz-Reset:
|
|
P2HMI: A Dyn.HMI.Platz_2_resetten
|
|
R Dyn.HMI.Platz_2_resetten
|
|
JCN P2Check
|
|
|
|
// Trolley vorhanden:
|
|
A B_an_Platz_2 // Trolley vorhanden
|
|
AN Y_Platz_2 // Stopper GST
|
|
A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
JC P2Check // Kein Reset notwendig
|
|
|
|
// Kein Trolley vorhanden:
|
|
AN B_an_Platz_2 // Trolley vorhanden
|
|
AN Y_Platz_2 // Stopper GST
|
|
AN Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
JC P2Check // Kein Reset notwendig
|
|
|
|
// Unklarer Zustand -> Reset starten
|
|
SET
|
|
S Reset_Platz_2_Stopper
|
|
S Dyn.Status.Reset_Platz_2_aktiv
|
|
|
|
// Daten-/Sensor-Check:
|
|
P2Check: A Dyn.Status.Reset_Platz_2_aktiv
|
|
O Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
O Y_Platz_2
|
|
R Dyn.Error.Err_Platz_2
|
|
JC P2Ende
|
|
|
|
A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN B_an_Platz_2
|
|
O
|
|
AN Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
A B_an_Platz_2
|
|
= Dyn.Error.Err_Platz_2
|
|
|
|
P2Ende: NOP 0
|
|
|
|
|
|
--- NW 18: Platz 3 ---
|
|
// Freigabe von PC sinnlos!:
|
|
AN Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
R Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
|
|
// Trolley ist draussen:
|
|
AN Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen // Rückmeldung von Draussen-FC
|
|
JC P3HMI
|
|
|
|
// Reset war aktiv?:
|
|
A Dyn.Status.Reset_Platz_3_aktiv
|
|
R Dyn.Status.Reset_Platz_3_aktiv
|
|
JCN P3NoReset // Negierter Sprung!
|
|
|
|
SET
|
|
R Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
|
|
A B_an_Platz_3 // Trolley vorhanden
|
|
S Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
S Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC"
|
|
|
|
P3NoReset: AN B_an_Platz_3
|
|
R Dyn.Platz_3.Trolley_ist_an_Beladung // Trolley ist ausgefahren
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_3" // /wird in Raus-SK benötigt (Schritt 2!)
|
|
JC P3HMI
|
|
|
|
SET
|
|
R Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
|
|
|
|
// HMI-Platz-Reset:
|
|
P3HMI: A Dyn.HMI.Platz_3_resetten
|
|
R Dyn.HMI.Platz_3_resetten
|
|
JCN P3Check
|
|
|
|
// Trolley vorhanden:
|
|
A B_an_Platz_3 // Trolley vorhanden
|
|
AN Y_Platz_3 // Stopper GST
|
|
A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
JC P3Check // Kein Reset notwendig
|
|
|
|
// Kein Trolley vorhanden:
|
|
AN B_an_Platz_3 // Trolley vorhanden
|
|
AN Y_Platz_3 // Stopper GST
|
|
AN Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
JC P3Check // Kein Reset notwendig
|
|
|
|
// Unklarer Zustand -> Reset starten
|
|
SET
|
|
S Reset_Platz_3_Stopper
|
|
S Dyn.Status.Reset_Platz_3_aktiv
|
|
|
|
// Daten-/Sensor-Check:
|
|
P3Check: A Dyn.Status.Reset_Platz_3_aktiv
|
|
O Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
O Y_Platz_3
|
|
R Dyn.Error.Err_Platz_3
|
|
JC P3Ende
|
|
|
|
A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN B_an_Platz_3
|
|
O
|
|
AN Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
A B_an_Platz_3
|
|
= Dyn.Error.Err_Platz_3
|
|
|
|
P3Ende: NOP 0
|
|
|
|
|
|
--- NW 19: CTMP-Telegramm Platz 1 ---
|
|
// CTMP: Nach Erreichen des Beladepunktes:
|
|
A "SGes".Ohne_PC_Fahren
|
|
R Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC"
|
|
|
|
// Telegramm an Host senden:
|
|
AN Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC"
|
|
JC NoCTMP1
|
|
|
|
// TrolleyID ermitteln
|
|
CALL FC "HMSchleuse_TrolleyID" (Schleuse:=Arbeitsplatz.Schleusen_Platz_1, TrolleyID:="Daten_für_SendFIFO".TrolleyID, Ok:=TrolleyID_Ok) // TrolleyID übergeben
|
|
|
|
AN TrolleyID_Ok
|
|
JC NoCTMP1
|
|
|
|
// CTMP: Nach Erreichen des Beladepunktes:
|
|
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='C', TelegrammKennung[2]:='T', TelegrammKennung[3]:='M', TelegrammKennung[4]:='P', TelegrammKennung[5]:=?, TelegrammKennung[6]:=?, TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=1, 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:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o.
|
|
|
|
AN Error_SendFIFO
|
|
R Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC"
|
|
|
|
NoCTMP1: NOP 0
|
|
|
|
|
|
--- NW 20: CTMP-Telegramm Platz 2 ---
|
|
// CTMP: Nach Erreichen des Beladepunktes:
|
|
A "SGes".Ohne_PC_Fahren
|
|
R Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC"
|
|
|
|
// Telegramm an Host senden:
|
|
AN Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC"
|
|
JC NoCTMP2
|
|
|
|
// TrolleyID ermitteln
|
|
CALL FC "HMSchleuse_TrolleyID" (Schleuse:=Arbeitsplatz.Schleusen_Platz_2, TrolleyID:="Daten_für_SendFIFO".TrolleyID, Ok:=TrolleyID_Ok) // TrolleyID übergeben
|
|
|
|
AN TrolleyID_Ok
|
|
JC NoCTMP2
|
|
|
|
// CTMP: Nach Erreichen des Beladepunktes:
|
|
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='C', TelegrammKennung[2]:='T', TelegrammKennung[3]:='M', TelegrammKennung[4]:='P', TelegrammKennung[5]:=?, TelegrammKennung[6]:=?, TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=2, 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:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o.
|
|
|
|
AN Error_SendFIFO
|
|
R Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC"
|
|
|
|
NoCTMP2: NOP 0
|
|
|
|
|
|
--- NW 21: CTMP-Telegramm Platz 3 ---
|
|
// CTMP: Nach Erreichen des Beladepunktes:
|
|
A "SGes".Ohne_PC_Fahren
|
|
R Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC"
|
|
|
|
// Telegramm an Host senden:
|
|
AN Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC"
|
|
JC NoCTMP3
|
|
|
|
// TrolleyID ermitteln
|
|
CALL FC "HMSchleuse_TrolleyID" (Schleuse:=Arbeitsplatz.Schleusen_Platz_3, TrolleyID:="Daten_für_SendFIFO".TrolleyID, Ok:=TrolleyID_Ok) // //TrolleyID übergeben
|
|
|
|
AN TrolleyID_Ok
|
|
JC NoCTMP3
|
|
|
|
// CTMP: Nach Erreichen des Beladepunktes:
|
|
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='C', TelegrammKennung[2]:='T', TelegrammKennung[3]:='M', TelegrammKennung[4]:='P', TelegrammKennung[5]:=?, TelegrammKennung[6]:=?, TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=3, 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:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o.
|
|
|
|
AN Error_SendFIFO
|
|
R Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC"
|
|
|
|
NoCTMP3: NOP 0
|
|
|
|
|
|
--- NW 22: UNLDResp-Telegramm Platz 1 ---
|
|
// UNLDResp: Nach Verlassen des Beladepunktes:
|
|
A "SGes".Ohne_PC_Fahren
|
|
R Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC"
|
|
|
|
// Telegramm an Host senden:
|
|
AN Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC"
|
|
JC NoUNLDResp1
|
|
|
|
// TrolleyID ermitteln
|
|
L Dyn.Platz_1.TrolleyID_ausgefahren
|
|
T "Daten_für_SendFIFO".TrolleyID // TrolleyID übergeben
|
|
L DINT#0
|
|
<>D
|
|
= TrolleyID_Ok
|
|
|
|
L 1 // Trolley ausgefahren
|
|
|
|
A TrolleyID_Ok
|
|
JC UNLDResp1_Ok
|
|
|
|
L 0 // Kein Trolley ausgefahren
|
|
|
|
UNLDResp1_Ok: T "Daten_für_SendFIFO".Status_1_Int // Status übergeben
|
|
|
|
// UNLDResp: Nach Verlassen des Beladepunktes:
|
|
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='U', TelegrammKennung[2]:='N', TelegrammKennung[3]:='L', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='s', TelegrammKennung[8]:='p', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=1, 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:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. | s.o.
|
|
|
|
AN Error_SendFIFO
|
|
R Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC"
|
|
JCN NoUNLDResp1
|
|
|
|
L DINT#0
|
|
T Dyn.Platz_1.TrolleyID_ausgefahren
|
|
|
|
NoUNLDResp1: NOP 0
|
|
|
|
|
|
--- NW 23: UNLDResp-Telegramm Platz 2 ---
|
|
// UNLDResp: Nach Verlassen des Beladepunktes:
|
|
A "SGes".Ohne_PC_Fahren
|
|
R Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC"
|
|
|
|
// Telegramm an Host senden:
|
|
AN Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC"
|
|
JC NoUNLDResp2
|
|
|
|
// TrolleyID ermitteln
|
|
L Dyn.Platz_2.TrolleyID_ausgefahren
|
|
T "Daten_für_SendFIFO".TrolleyID // TrolleyID übergeben
|
|
L DINT#0
|
|
<>D
|
|
= TrolleyID_Ok
|
|
|
|
L 1 // Trolley ausgefahren
|
|
|
|
A TrolleyID_Ok
|
|
JC UNLDResp2_Ok
|
|
|
|
L 0 // Kein Trolley ausgefahren
|
|
|
|
UNLDResp2_Ok: T "Daten_für_SendFIFO".Status_1_Int // Status übergeben
|
|
|
|
// UNLDResp: Nach Verlassen des Beladepunktes:
|
|
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='U', TelegrammKennung[2]:='N', TelegrammKennung[3]:='L', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='s', TelegrammKennung[8]:='p', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=2, 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:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. | s.o.
|
|
|
|
AN Error_SendFIFO
|
|
R Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC"
|
|
JCN NoUNLDResp2
|
|
|
|
L DINT#0
|
|
T Dyn.Platz_2.TrolleyID_ausgefahren
|
|
|
|
NoUNLDResp2: NOP 0
|
|
|
|
|
|
--- NW 24: UNLDResp-Telegramm Platz 3 ---
|
|
// UNLDResp: Nach Verlassen des Beladepunktes:
|
|
A "SGes".Ohne_PC_Fahren
|
|
R Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC"
|
|
|
|
// Telegramm an Host senden:
|
|
AN Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC"
|
|
JC NoUNLDResp3
|
|
|
|
// TrolleyID ermitteln
|
|
// TrolleyID ermitteln
|
|
L Dyn.Platz_3.TrolleyID_ausgefahren
|
|
T "Daten_für_SendFIFO".TrolleyID // TrolleyID übergeben
|
|
L DINT#0
|
|
<>D
|
|
= TrolleyID_Ok
|
|
|
|
L 1 // Trolley ausgefahren
|
|
|
|
A TrolleyID_Ok
|
|
JC UNLDResp3_Ok
|
|
|
|
L 0 // Kein Trolley ausgefahren
|
|
|
|
UNLDResp3_Ok: T "Daten_für_SendFIFO".Status_1_Int // Status übergeben
|
|
|
|
// UNLDResp: Nach Verlassen des Beladepunktes:
|
|
CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='U', TelegrammKennung[2]:='N', TelegrammKennung[3]:='L', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='s', TelegrammKennung[8]:='p', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=3, 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:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. | s.o.
|
|
|
|
AN Error_SendFIFO
|
|
R Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC"
|
|
JCN NoUNLDResp3
|
|
|
|
L DINT#0
|
|
T Dyn.Platz_3.TrolleyID_ausgefahren
|
|
|
|
NoUNLDResp3: NOP 0
|
|
|
|
|
|
--- NW 25: Simulation zu Starten von beladenen Trolleys ---
|
|
SET
|
|
R Dyn.Simulation."Trolleys bereit"
|
|
R Dyn.Simulation."Trolley gestartet"
|
|
|
|
AN Dyn.Simulation.Aktiviert
|
|
R Dyn.Simulation.Neustart
|
|
R Dyn.Simulation."Einen Trolley ausfahren"
|
|
JC SimEnde
|
|
|
|
// Neustart:
|
|
A Dyn.Simulation.Neustart
|
|
R Dyn.Simulation.Neustart
|
|
JCN TrolleyOk // Negierter Sprung
|
|
|
|
SET
|
|
R Dyn.Simulation."Trolley 1 gefahren"
|
|
R Dyn.Simulation."Trolley 2 gefahren"
|
|
R Dyn.Simulation."Trolley 3 gefahren"
|
|
|
|
// Trolley für Ausfahrt bereit:
|
|
TrolleyOk: A B_an_Platz_1 // Trolley vorhanden
|
|
A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN Dyn.Simulation."Trolley 1 gefahren"
|
|
O
|
|
A B_an_Platz_2 // Trolley vorhanden
|
|
A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN Dyn.Simulation."Trolley 2 gefahren"
|
|
O
|
|
A B_an_Platz_3 // Trolley vorhanden
|
|
A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN Dyn.Simulation."Trolley 3 gefahren"
|
|
= Dyn.Simulation."Trolleys bereit"
|
|
|
|
// Trolley starten:
|
|
New: AN Dyn.Simulation."Trolleys bereit"
|
|
ON Dyn.Simulation."Einen Trolley ausfahren"
|
|
R Dyn.Simulation."Einen Trolley ausfahren"
|
|
JC SimEnde
|
|
|
|
A B_an_Platz_1 // Trolley vorhanden
|
|
A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN Dyn.Simulation."Trolley 1 gefahren"
|
|
S Dyn.Simulation."Trolley 1 gefahren"
|
|
S Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
S Dyn.Simulation."Trolley gestartet"
|
|
R Dyn.Simulation."Einen Trolley ausfahren"
|
|
JC SimEnde
|
|
|
|
A B_an_Platz_2 // Trolley vorhanden
|
|
A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN Dyn.Simulation."Trolley 2 gefahren"
|
|
S Dyn.Simulation."Trolley 2 gefahren"
|
|
S Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
S Dyn.Simulation."Trolley gestartet"
|
|
R Dyn.Simulation."Einen Trolley ausfahren"
|
|
JC SimEnde
|
|
|
|
A B_an_Platz_3 // Trolley vorhanden
|
|
A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
AN Dyn.Simulation."Trolley 3 gefahren"
|
|
S Dyn.Simulation."Trolley 3 gefahren"
|
|
S Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
S Dyn.Simulation."Trolley gestartet"
|
|
R Dyn.Simulation."Einen Trolley ausfahren"
|
|
|
|
SET
|
|
R Dyn.Simulation."Trolley 1 gefahren"
|
|
R Dyn.Simulation."Trolley 2 gefahren"
|
|
R Dyn.Simulation."Trolley 3 gefahren"
|
|
|
|
A B_an_Platz_1 // Trolley vorhanden
|
|
A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
O
|
|
A B_an_Platz_2 // Trolley vorhanden
|
|
A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
O
|
|
A B_an_Platz_3 // Trolley vorhanden
|
|
A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok
|
|
JC New
|
|
|
|
SimEnde: NOP 0
|
|
|
|
|
|
--- NW 26: Mindestzeit Einfahren: ---
|
|
SET
|
|
R MindestZeit_Rein_Ok
|
|
|
|
AN Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
AN Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
AN Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
ON Dyn.Vorstau."Trolley_fährt_aus"
|
|
JCN TReinPlus // Negierter Sprung
|
|
|
|
L 0
|
|
T Dyn.Mindestzeit_Rein
|
|
|
|
JU TReinEnde
|
|
|
|
TReinPlus: AN Antrieb_Vorstau_aktiv
|
|
ON "1s-Impuls"
|
|
JC TReinCheck
|
|
|
|
L Dyn.Mindestzeit_Rein
|
|
+ 1
|
|
T Dyn.Mindestzeit_Rein
|
|
|
|
TReinCheck: NOP 0
|
|
L Dyn.Mindestzeit_Rein
|
|
L Arbeitsplatz.Mindestzeit_zum_ABP_1
|
|
>=I
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
JC TReinOk
|
|
|
|
CAC
|
|
L Arbeitsplatz.Mindestzeit_zum_ABP_2
|
|
>=I
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
JC TReinOk
|
|
|
|
CAC
|
|
L Arbeitsplatz.Mindestzeit_zum_ABP_3
|
|
>=I
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
JC TReinOk
|
|
|
|
JU TReinEnde // Negierter Sprung
|
|
|
|
TReinOk: T Dyn.Mindestzeit_Rein // Zeit einfrieren
|
|
|
|
SET
|
|
S MindestZeit_Rein_Ok
|
|
|
|
TReinEnde: NOP 0
|
|
|
|
|
|
--- NW 27: Mindestzeit Ausfahren: ---
|
|
SET
|
|
R MindestZeit_Raus_Ok
|
|
|
|
AN Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
AN Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
AN Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
ON Dyn.Status."Trolley_fährt_in_Nachstau"
|
|
JCN TRausPlus // Negierter Sprung
|
|
|
|
L 0
|
|
T Dyn.Mindestzeit_Raus
|
|
|
|
JU TRausEnde
|
|
|
|
TRausPlus: AN Antrieb_Nachstau_2_aktiv
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
ON Antrieb_Nachstau_1_aktiv
|
|
ON Antrieb_Nachstau_3_aktiv
|
|
ON "1s-Impuls"
|
|
JC TRausCheck
|
|
|
|
L Dyn.Mindestzeit_Raus
|
|
+ 1
|
|
T Dyn.Mindestzeit_Raus
|
|
|
|
TRausCheck: NOP 0
|
|
L Dyn.Mindestzeit_Raus
|
|
L Arbeitsplatz.Mindestzeit_aus_ABP_1
|
|
>=I
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
JC TRausOk
|
|
|
|
CAC
|
|
L Arbeitsplatz.Mindestzeit_aus_ABP_2
|
|
>=I
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
JC TRausOk
|
|
|
|
CAC
|
|
L Arbeitsplatz.Mindestzeit_aus_ABP_3
|
|
>=I
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
JC TRausOk
|
|
|
|
JU TRausEnde // Negierter Sprung
|
|
|
|
TRausOk: T Dyn.Mindestzeit_Raus // Zeit einfrieren
|
|
|
|
SET
|
|
S MindestZeit_Raus_Ok
|
|
|
|
TRausEnde: NOP 0
|
|
|
|
|
|
--- NW 28: Schrittkette anhalten ---
|
|
A Dyn.Sk_zum_Beladeplatz.Auto_akt // Automatik ist aktiv
|
|
A Dyn.Sk_zum_Beladeplatz.Bereich_ok
|
|
JU en08_Mig // Schrittkette nicht anhalten !
|
|
|
|
SET
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Störungen löschen
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Schritt
|
|
|
|
L 0 // Zeitwerte löschen
|
|
T Dyn.Sk_zum_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_zum_Beladeplatz.Tok_Zelle
|
|
|
|
BEU
|
|
|
|
en08_Mig: NOP 0
|
|
|
|
|
|
--- NW 29: Sprungverteiler Platz-Versorgung ---
|
|
L Dyn.Sk_zum_Beladeplatz.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll
|
|
L -1 // angegeben ?
|
|
==I // Nein !
|
|
JC NEU
|
|
|
|
CAC // Neuen Schritt übergeben
|
|
T Dyn.Sk_zum_Beladeplatz.Akt_Schritt
|
|
|
|
L -1 // Urzustand
|
|
T Dyn.Sk_zum_Beladeplatz.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll
|
|
|
|
NEU: SET
|
|
R Warte_neu // Wartezeit neutriggern
|
|
R Warte_stop // Wartezeit stoppen
|
|
|
|
L Dyn.Sk_zum_Beladeplatz.Akt_Schritt
|
|
JL Ende
|
|
JU s000 // Schritt 0
|
|
JU s001 // Schritt 1
|
|
JU s002 // Schritt 2
|
|
JU s003 // Schritt 3
|
|
JU s004 // Schritt 4
|
|
JU s005 // Schritt 5
|
|
JU s006 // Schritt 6
|
|
JU s007 // Schritt 7
|
|
JU s008 // Schritt 8
|
|
JU s009 // Schritt 9
|
|
JU s010 // Schritt 10
|
|
JU s011 // Schritt 11
|
|
JU s012 // Schritt 12
|
|
JU s013 // Schritt 13
|
|
JU s014 // Schritt 14
|
|
JU s015 // Schritt 15
|
|
JU s016 // Schritt 16
|
|
JU s017 // Schritt 17
|
|
JU s018 // Schritt 18
|
|
JU s019 // Schritt 19
|
|
JU s020 // Schritt 20
|
|
JU s021 // Schritt 21
|
|
JU s022 // Schritt 22
|
|
JU s023 // Schritt 23
|
|
JU s024 // Schritt 24
|
|
JU s025 // Schritt 25
|
|
JU s026 // Schritt 26
|
|
JU s027 // Schritt 27
|
|
JU s028 // Schritt 28
|
|
JU s029 // Schritt 29
|
|
JU s030 // Schritt 30
|
|
Ende: S Dyn.Sk_zum_Beladeplatz.Err_Schritt // Undefinierter Schritt
|
|
|
|
L 16#A131
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
JU Raus_NEU
|
|
|
|
Neu_Mig: A Dyn.Sk_zum_Beladeplatz.Err_Uebzeit
|
|
JCN Sk
|
|
|
|
L 16#A132
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
JU Raus_NEU
|
|
|
|
Sk: T Dyn.Sk_zum_Beladeplatz.Akt_Schritt
|
|
|
|
L 0 // Zeitwerte löschen
|
|
T Dyn.Sk_zum_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_zum_Beladeplatz.Tok_Zelle
|
|
|
|
JU NEU
|
|
|
|
// Nicht programmierte Schritte:
|
|
// s000: SPA Ende
|
|
// s001: SPA Ende
|
|
// s002: SPA Ende
|
|
// s003: SPA Ende
|
|
s004: JU Ende
|
|
s005: JU Ende
|
|
s006: JU Ende
|
|
s007: JU Ende
|
|
s008: JU Ende
|
|
s009: JU Ende
|
|
s010: JU Ende
|
|
s011: JU Ende
|
|
s012: JU Ende
|
|
s013: JU Ende
|
|
s014: JU Ende
|
|
s015: JU Ende
|
|
s016: JU Ende
|
|
s017: JU Ende
|
|
s018: JU Ende
|
|
s019: JU Ende
|
|
// s020: SPA Ende
|
|
// s021: SPA Ende
|
|
s022: JU Ende
|
|
s023: JU Ende
|
|
s024: JU Ende
|
|
s025: JU Ende
|
|
s026: JU Ende
|
|
s027: JU Ende
|
|
s028: JU Ende
|
|
s029: JU Ende
|
|
s030: JU Ende
|
|
|
|
|
|
--- NW 30: Schritt X: Reserve ---
|
|
SET // Weiterschaltbedingung
|
|
= Weiter
|
|
|
|
// Schrittaktionen:
|
|
SET
|
|
|
|
L 16#B001
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
A Dyn.Sk_zum_Beladeplatz.Reset_Akt // Reset ist aktiv
|
|
L 20 // Weiter mit Schritt 20
|
|
JC Neu_Mig // Bei diesem Schritt weiter
|
|
|
|
A Weiter // Weiterschaltbedingung ist erfüllt
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Sofort weiter !
|
|
L 0 // Angabe der Wartezeit (*10ms)
|
|
JC Plus // Nächsten Schritt starten
|
|
|
|
L 1 // Weiter mit Schritt 1
|
|
JC Neu_Mig // Bei diesem Schritt weiter
|
|
|
|
T Dyn.Sk_zum_Beladeplatz.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll
|
|
|
|
SET
|
|
A Dyn.Sk_zum_Beladeplatz.Auto_akt // Automatik ist aktiv
|
|
A Dyn.Sk_zum_Beladeplatz.Bereich_ok
|
|
= Ueb_akt // Überwachungszeit aktivieren
|
|
L 50 // Angabe der Überwachungszeit (*1s)
|
|
JU tueb // Überwachungszeit
|
|
|
|
JU Raus_NEU
|
|
|
|
|
|
--- NW 31: Schritt 0: Trolley ist in Schleuse / Auftrag erzeugen ---
|
|
s000: NOP 0
|
|
|
|
// Schrittaktionen:
|
|
A Dyn.Sk_zum_Beladeplatz.Reset_Akt // Reset ist aktiv
|
|
L 20 // Weiter mit Schritt 20
|
|
JC Neu_Mig // Bei diesem Schritt weiter
|
|
|
|
AN B_In_Schleuse_Vorstau // Trolley im Schleuse erkannt
|
|
O Y_Vorstau
|
|
O Dyn.Status.Reset_zum_Beladeplatz_aktiv
|
|
JC Raus_NEU
|
|
|
|
SET
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
R Dyn.Vorstau.Freigabe_an_Stopper
|
|
|
|
A(
|
|
O Dyn.SS."PC>Trolley_zum_Platz_1_starten"
|
|
O "SGes".Ohne_PC_Fahren
|
|
)
|
|
AN Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC" // Alt-Telegramm noch nicht gesendet
|
|
AN B_an_Platz_1
|
|
AN Y_Platz_1 // Arbeitsplatz ist geöffnet
|
|
AN Dyn.Platz_1.Beladestelle_wurde_angefahren // wegen FIFO-Versorgung
|
|
AN Dyn.Platz_1.Trolley_ist_an_Beladung
|
|
AN Dyn.Status.Reset_Platz_1_aktiv
|
|
S Dyn.Vorstau.Freigabe_an_Stopper
|
|
S Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
S Dyn.Platz_1.Beladestelle_wurde_angefahren
|
|
JC SX001
|
|
|
|
A(
|
|
O Dyn.SS."PC>Trolley_zum_Platz_2_starten"
|
|
O "SGes".Ohne_PC_Fahren
|
|
)
|
|
AN Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC" // Alt-Telegramm noch nicht gesendet
|
|
AN B_an_Platz_2
|
|
AN Y_Platz_2 // Arbeitsplatz ist geöffnet
|
|
AN Dyn.Platz_2.Beladestelle_wurde_angefahren // wegen FIFO-Versorgung
|
|
AN Dyn.Platz_2.Trolley_ist_an_Beladung
|
|
AN Dyn.Status.Reset_Platz_2_aktiv
|
|
S Dyn.Vorstau.Freigabe_an_Stopper
|
|
S Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
S Dyn.Platz_2.Beladestelle_wurde_angefahren
|
|
JC SX001
|
|
|
|
A(
|
|
O Dyn.SS."PC>Trolley_zum_Platz_3_starten"
|
|
O "SGes".Ohne_PC_Fahren
|
|
)
|
|
AN Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC" // Alt-Telegramm noch nicht gesendet
|
|
AN B_an_Platz_3
|
|
AN Y_Platz_3 // Arbeitsplatz ist geöffnet
|
|
AN Dyn.Platz_3.Beladestelle_wurde_angefahren // wegen FIFO-Versorgung
|
|
AN Dyn.Platz_3.Trolley_ist_an_Beladung
|
|
AN Dyn.Status.Reset_Platz_3_aktiv
|
|
S Dyn.Vorstau.Freigabe_an_Stopper
|
|
S Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
S Dyn.Platz_3.Beladestelle_wurde_angefahren
|
|
JC SX001
|
|
|
|
SET
|
|
R Dyn.Platz_1.Beladestelle_wurde_angefahren
|
|
R Dyn.Platz_2.Beladestelle_wurde_angefahren
|
|
R Dyn.Platz_3.Beladestelle_wurde_angefahren
|
|
|
|
JU Raus_NEU
|
|
|
|
SX001: L 1 // Weiter mit Schritt 1
|
|
JU Neu_Mig // Bei diesem Schritt weiter
|
|
|
|
|
|
--- NW 32: Schritt 1: Trolley gestartet ---
|
|
s001: SET // Weiterschaltbedingung
|
|
A Y_Vorstau
|
|
= Weiter
|
|
|
|
// Schrittaktionen:
|
|
|
|
A Weiter
|
|
R Dyn.Vorstau.Freigabe_an_Stopper
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit
|
|
L 0 // Angabe der Wartezeit (*100ms)
|
|
JC Plus // Nächsten Raus_Schritt starten************************************************
|
|
|
|
JU Raus_NEU
|
|
|
|
|
|
--- NW 33: Schritt 2: Ziel erreicht ? ---
|
|
s002: SET // Weiterschaltbedingung
|
|
A(
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
A B_an_Platz_1
|
|
O
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
A B_an_Platz_2
|
|
O
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
A B_an_Platz_3
|
|
)
|
|
A MindestZeit_Rein_Ok
|
|
= Weiter
|
|
|
|
// Schrittaktionen:
|
|
SET
|
|
S Antrieb_Vorstau_vor
|
|
|
|
AN B_In_Schleuse_Vorstau
|
|
S Dyn.Vorstau."Trolley_fährt_aus"
|
|
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
= Y_Weiche_zu_Platz_1
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
= Y_Weiche_zu_Platz_2
|
|
|
|
A Weiter
|
|
L 0
|
|
JC Plus // Nächsten Schritt starten
|
|
|
|
L 16#B061
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
JU Raus_NEU
|
|
|
|
--- NW 34: Schritt 3: Trolleydaten ändern ---
|
|
s003: SET // Weiterschaltbedingung
|
|
= Weiter
|
|
|
|
// Schrittaktionen:
|
|
SET
|
|
R Dyn.Vorstau."Trolley_fährt_aus"
|
|
S Trolley_hat_ABS_erreicht // Rückmeldung an Vorstau (Draussen-Sensor)
|
|
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
S Dyn.Platz_1.Trolley_ist_an_Beladung
|
|
R Dyn.SS."PC>Trolley_zum_Platz_1_starten"
|
|
R Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal kam zu früh
|
|
S Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC"
|
|
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
S Dyn.Platz_2.Trolley_ist_an_Beladung
|
|
R Dyn.SS."PC>Trolley_zum_Platz_2_starten"
|
|
R Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal kam zu früh
|
|
S Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC"
|
|
|
|
A Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
S Dyn.Platz_3.Trolley_ist_an_Beladung
|
|
R Dyn.SS."PC>Trolley_zum_Platz_3_starten"
|
|
R Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal kam zu früh
|
|
S Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC"
|
|
|
|
// Leertrolleys -1:
|
|
L Dyn.Vorstau.Anzahl_Leertrolleys
|
|
+ -1
|
|
T Dyn.Vorstau.Anzahl_Leertrolleys
|
|
|
|
L 0
|
|
>=I
|
|
JC ENDE_Mig
|
|
|
|
T Dyn.Vorstau.Anzahl_Leertrolleys // Minimum übergeben
|
|
|
|
JU ENDE_Mig
|
|
|
|
|
|
--- NW 35: Schritt 20: Einfahr-Sk resetten ---
|
|
s020: SET // Weiterschaltbedingung
|
|
A Antrieb_Vorstau_aktiv
|
|
= Weiter // Weiterschaltbedingung ist erfüllt
|
|
|
|
// Schrittaktionen:
|
|
SET
|
|
S Antrieb_Vorstau_vor // Kreiselantrieb starten
|
|
|
|
L 16#B201
|
|
T Dyn.Stop_Ursache_Rein
|
|
|
|
SET
|
|
S Antrieb_Vorstau_vor
|
|
|
|
A Weiter // Weiterschaltbedingung ist erfüllt
|
|
L 3000 // Angabe der Wartezeit (*10ms)
|
|
JC Plus // Nächsten Schritt starten
|
|
|
|
JU Raus_NEU
|
|
|
|
|
|
--- NW 36: Schritt 21: Reset ist zu Ende ---
|
|
s021: SET
|
|
R Dyn.Sk_zum_Beladeplatz.Reset_Akt // Reset ist aktiv
|
|
|
|
JU ENDE_Mig // Ende
|
|
|
|
|
|
--- NW 37: Schrittkette beenden ---
|
|
ENDE_Mig: L 0 // Schritt 0: Warten
|
|
T Dyn.Sk_zum_Beladeplatz.Akt_Schritt
|
|
|
|
L 0 // Zeitwert löschen
|
|
T Dyn.Sk_zum_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_zum_Beladeplatz.Tok_Zelle
|
|
|
|
SET
|
|
R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_1"
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_2"
|
|
R Dyn.Status."Trolley_fährt_nach_Platz_3"
|
|
R Dyn.Vorstau."Trolley_fährt_aus"
|
|
R Dyn.Vorstau.Freigabe_an_Stopper
|
|
|
|
JU Raus_NEU
|
|
|
|
|
|
--- NW 38: Nächsten Schritt aktivieren ---
|
|
Plus: T Dyn.Sk_zum_Beladeplatz.T_ok // Wartezeit übergeben
|
|
|
|
A Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Störung noch nicht quittiert
|
|
JC Raus_NEU
|
|
|
|
L 0 // keine Wartezeit ?
|
|
==I // Ja ! -> sofort weiter
|
|
JC w220
|
|
|
|
AN Warte_neu // Wartezeit neutriggern
|
|
JC W220_Mig
|
|
|
|
L 0
|
|
T Dyn.Sk_zum_Beladeplatz.Tok_Zelle // Wartezeit
|
|
|
|
W220_Mig: A Warte_stop // Wartezeit stoppen
|
|
JC Raus_NEU
|
|
|
|
L Dyn.Sk_zum_Beladeplatz.Tok_Zelle
|
|
L "MW4" // Wartezeit +10ms
|
|
+I
|
|
T Dyn.Sk_zum_Beladeplatz.Tok_Zelle // Wartezeit
|
|
L Dyn.Sk_zum_Beladeplatz.T_ok // abgelaufen ?
|
|
<I // Nein !
|
|
JC Raus_NEU
|
|
|
|
w220: L Dyn.Sk_zum_Beladeplatz.Akt_Schritt
|
|
+ 1 // Schritt +1
|
|
T Dyn.Sk_zum_Beladeplatz.Akt_Schritt
|
|
|
|
L 0 // Zeitwerte löschen
|
|
T Dyn.Sk_zum_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_zum_Beladeplatz.Tok_Zelle
|
|
|
|
JU Raus_NEU
|
|
|
|
|
|
--- NW 39: Überwachungszeit kontrollieren ---
|
|
tueb: A Ueb_akt
|
|
= Dyn.Sk_zum_Beladeplatz.Ueb_akt // Für Statuskontrolle
|
|
|
|
T Dyn.Sk_zum_Beladeplatz.T_Err // Für Statuskontrolle
|
|
L Dyn.Sk_zum_Beladeplatz.Terr_Zelle // Maximalzeit
|
|
>I // abgelaufen ?
|
|
AN Dyn.Sk_zum_Beladeplatz.Err_Uebzeit
|
|
JC en24 // Nein !
|
|
|
|
A Ueb_akt // Überwachungszeit aktivieren
|
|
S Dyn.Sk_zum_Beladeplatz.Err_Uebzeit
|
|
|
|
L 0 // Zeitwert löschen
|
|
T Dyn.Sk_zum_Beladeplatz.Terr_Zelle
|
|
|
|
JU Raus_NEU
|
|
|
|
en24: NOP 0
|
|
|
|
--- NW 40: Überwachungszeit +1 ---
|
|
AN Dyn.Sk_zum_Beladeplatz.Ueb_akt // Schrittaktion ist aktiv
|
|
ON "1s-Impuls"
|
|
JC Raus_NEU
|
|
|
|
L Dyn.Sk_zum_Beladeplatz.Terr_Zelle
|
|
+ 1 // Üb.zeit +1s
|
|
T Dyn.Sk_zum_Beladeplatz.Terr_Zelle
|
|
|
|
JU Raus_NEU
|
|
|
|
|
|
--- NW 41: Sprungverteiler SK-Rausfahren ---
|
|
Raus_NEU: SET
|
|
R Raus_Warte_neu // Wartezeit neutriggern
|
|
R Raus_Warte_stop // Wartezeit stoppen
|
|
|
|
L Dyn.Sk_aus_Beladeplatz.Akt_Schritt
|
|
JL Raus_Ende_Mig
|
|
JU Raus_s000 // Schritt 0
|
|
JU Raus_s001 // Schritt 1
|
|
JU Raus_s002 // Schritt 2
|
|
JU Raus_s003 // Schritt 3
|
|
JU Raus_s004 // Schritt 4
|
|
JU Raus_s005 // Schritt 5
|
|
JU Raus_s006 // Schritt 6
|
|
JU Raus_s007 // Schritt 7
|
|
JU Raus_s008 // Schritt 8
|
|
JU Raus_s009 // Schritt 9
|
|
JU Raus_s010 // Schritt 10
|
|
JU Raus_s011 // Schritt 11
|
|
JU Raus_s012 // Schritt 12
|
|
JU Raus_s013 // Schritt 13
|
|
JU Raus_s014 // Schritt 14
|
|
JU Raus_s015 // Schritt 15
|
|
JU Raus_s016 // Schritt 16
|
|
JU Raus_s017 // Schritt 17
|
|
JU Raus_s018 // Schritt 18
|
|
JU Raus_s019 // Schritt 19
|
|
JU Raus_s020 // Schritt 20
|
|
JU Raus_s021 // Schritt 21
|
|
JU Raus_s022 // Schritt 22
|
|
JU Raus_s023 // Schritt 23
|
|
JU Raus_s024 // Schritt 24
|
|
JU Raus_s025 // Schritt 25
|
|
JU Raus_s026 // Schritt 26
|
|
JU Raus_s027 // Schritt 27
|
|
JU Raus_s028 // Schritt 28
|
|
JU Raus_s029 // Schritt 29
|
|
JU Raus_s030 // Schritt 30
|
|
Raus_Ende_Mig: S Dyn.Sk_aus_Beladeplatz.Err_Schritt // Undefinierter Schritt
|
|
BEU
|
|
|
|
Raus_Neu_Mig: A Dyn.Sk_aus_Beladeplatz.Einzelschritt_akt // Einzelschritt fahren aktiv
|
|
S Dyn.Sk_aus_Beladeplatz.Einzelschritt_fertig // Einzelschritt ist ausgeführt
|
|
|
|
A Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
BEC
|
|
|
|
T Dyn.Sk_aus_Beladeplatz.Akt_Schritt
|
|
|
|
L 0 // Zeitwerte löschen
|
|
T Dyn.Sk_aus_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_aus_Beladeplatz.Tok_Zelle
|
|
|
|
JU Raus_NEU
|
|
|
|
// Nicht programmierte Schritte:
|
|
// Raus_s000 : SPA Raus_Ende_Mig
|
|
// Raus_s001 : SPA Raus_Ende_Mig
|
|
// Raus_s002 : SPA Raus_Ende_Mig
|
|
// Raus_s003 : SPA Raus_Ende_Mig
|
|
// Raus_s004 : SPA Raus_Ende_Mig
|
|
// Raus_s005 : SPA Raus_Ende_Mig
|
|
Raus_s006: JU Raus_Ende_Mig
|
|
Raus_s007: JU Raus_Ende_Mig
|
|
Raus_s008: JU Raus_Ende_Mig
|
|
Raus_s009: JU Raus_Ende_Mig
|
|
Raus_s010: JU Raus_Ende_Mig
|
|
Raus_s011: JU Raus_Ende_Mig
|
|
Raus_s012: JU Raus_Ende_Mig
|
|
Raus_s013: JU Raus_Ende_Mig
|
|
Raus_s014: JU Raus_Ende_Mig
|
|
Raus_s015: JU Raus_Ende_Mig
|
|
Raus_s016: JU Raus_Ende_Mig
|
|
Raus_s017: JU Raus_Ende_Mig
|
|
Raus_s018: JU Raus_Ende_Mig
|
|
Raus_s019: JU Raus_Ende_Mig
|
|
// Raus_s020 : SPA Raus_Ende_Mig
|
|
// Raus_s021 : SPA Raus_Ende_Mig
|
|
Raus_s022: JU Raus_Ende_Mig
|
|
Raus_s023: JU Raus_Ende_Mig
|
|
Raus_s024: JU Raus_Ende_Mig
|
|
Raus_s025: JU Raus_Ende_Mig
|
|
Raus_s026: JU Raus_Ende_Mig
|
|
Raus_s027: JU Raus_Ende_Mig
|
|
Raus_s028: JU Raus_Ende_Mig
|
|
Raus_s029: JU Raus_Ende_Mig
|
|
Raus_s030: JU Raus_Ende_Mig
|
|
|
|
|
|
--- NW 42: SK-Raus: Schritt 0: Raus-Auftrag erzeugen ---
|
|
Raus_s000: NOP 0
|
|
|
|
// Schrittaktionen:
|
|
|
|
A Dyn.Sk_aus_Beladeplatz.Reset_Akt // Reset ist aktiv
|
|
L 20 // Weiter mit Schritt 20
|
|
JC Raus_Neu_Mig // Bei diesem Schritt weiter
|
|
|
|
A B_Nachstau_Einfahrt
|
|
O Y_Platz_1 // Ein Arbeitsplatz geöffnet
|
|
O Y_Platz_2
|
|
O Y_Platz_3
|
|
O Dyn.Platz_1."Trolley_fährt_aus"
|
|
O Dyn.Platz_2."Trolley_fährt_aus"
|
|
O Dyn.Platz_3."Trolley_fährt_aus"
|
|
O Dyn.Status."Trolley_fährt_in_Nachstau"
|
|
O Dyn.Status.Reset_aus_Beladeplatz_aktiv
|
|
BEC // Kein Platz vor Nachstau-Schleuse
|
|
|
|
SET
|
|
R Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
R Dyn.Platz_1.Freigabe_an_Stopper
|
|
R Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
R Dyn.Platz_2.Freigabe_an_Stopper
|
|
R Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
R Dyn.Platz_3.Freigabe_an_Stopper
|
|
|
|
A B_an_Platz_1
|
|
AN Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC" // Alt-Telegramm noch nicht gesendet
|
|
A Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
AN Dyn.Platz_1.Beladestelle_wurde_entsorgt // wegen FIFO-Entsorgung
|
|
R Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
S Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
S Dyn.Platz_1.Beladestelle_wurde_entsorgt
|
|
S Dyn.Platz_1.Freigabe_an_Stopper
|
|
JC SXR000
|
|
|
|
A B_an_Platz_2
|
|
AN Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC" // Alt-Telegramm noch nicht gesendet
|
|
A Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
AN Dyn.Platz_2.Beladestelle_wurde_entsorgt // wegen FIFO-Entsorgung
|
|
R Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
S Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
S Dyn.Platz_2.Beladestelle_wurde_entsorgt
|
|
S Dyn.Platz_2.Freigabe_an_Stopper
|
|
JC SXR000
|
|
|
|
A B_an_Platz_3
|
|
AN Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC" // Alt-Telegramm noch nicht gesendet
|
|
A Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
AN Dyn.Platz_3.Beladestelle_wurde_entsorgt // wegen FIFO-Entsorgung
|
|
R Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen
|
|
S Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
S Dyn.Platz_3.Beladestelle_wurde_entsorgt
|
|
S Dyn.Platz_3.Freigabe_an_Stopper
|
|
JC SXR000
|
|
|
|
SET
|
|
R Dyn.Platz_1.Beladestelle_wurde_entsorgt
|
|
R Dyn.Platz_2.Beladestelle_wurde_entsorgt
|
|
R Dyn.Platz_3.Beladestelle_wurde_entsorgt
|
|
|
|
BEU
|
|
|
|
SXR000: L 1 // Weiter mit Schritt 1
|
|
JU Raus_Neu_Mig // Bei diesem Schritt weiter
|
|
|
|
|
|
--- NW 43: SK-Raus: Schritt 1: Trolley gestartet ---
|
|
Raus_s001: NOP 0 // Weiterschaltbedingung
|
|
A Dyn.Platz_1."Trolley_fährt_aus"
|
|
O Dyn.Platz_2."Trolley_fährt_aus"
|
|
O Dyn.Platz_3."Trolley_fährt_aus"
|
|
= Weiter
|
|
|
|
// Schrittaktionen:
|
|
SET
|
|
S Dyn.Status.Beladung_erfolgt
|
|
|
|
A Y_Platz_1
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
S Dyn.Platz_1."Trolley_fährt_aus"
|
|
R Dyn.Platz_1.Freigabe_an_Stopper
|
|
|
|
A Y_Platz_2
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
S Dyn.Platz_2."Trolley_fährt_aus"
|
|
R Dyn.Platz_2.Freigabe_an_Stopper
|
|
|
|
A Y_Platz_3
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
S Dyn.Platz_3."Trolley_fährt_aus"
|
|
R Dyn.Platz_3.Freigabe_an_Stopper
|
|
|
|
A Weiter
|
|
R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
R Dyn.Status.Trolley_hat_Nachstau_erreicht
|
|
L 0 // Angabe der Wartezeit (*100ms)
|
|
JC Raus_Plus // Nächsten Raus_Schritt starten************************************************
|
|
|
|
BEU
|
|
|
|
|
|
--- NW 44: SK-Raus: Schritt 2: Trolley hat Arbeitsplatz verlassen ---
|
|
Raus_s002: NOP 0
|
|
// Schrittaktionen:
|
|
A B_Nachstau_Einfahrt
|
|
S Dyn.Status.Trolley_hat_Nachstau_erreicht
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
= Y_Weiche_von_Platz_1
|
|
S Antrieb_Nachstau_1_vor
|
|
S Antrieb_Nachstau_3_vor
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
= Y_Weiche_von_Platz_2
|
|
S Antrieb_Nachstau_2_vor
|
|
S Antrieb_Nachstau_3_vor
|
|
S Antrieb_Nachstau_1_vor
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
S Antrieb_Nachstau_3_vor
|
|
S Antrieb_Nachstau_1_vor
|
|
|
|
// Weiterschaltbedingung:
|
|
A Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen // von Schleuse
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
R Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen
|
|
R Dyn.Platz_1."Trolley_fährt_aus"
|
|
S Dyn.Status."Trolley_fährt_in_Nachstau"
|
|
S Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC" // Signal von Platz-Schleuse
|
|
JC R2weiter
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
A Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen // von Schleuse
|
|
R Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen
|
|
R Dyn.Platz_2."Trolley_fährt_aus"
|
|
S Dyn.Status."Trolley_fährt_in_Nachstau"
|
|
S Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC" // Signal von Platz-Schleuse
|
|
JC R2weiter
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
A Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen // von Schleuse
|
|
R Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen
|
|
R Dyn.Platz_3."Trolley_fährt_aus"
|
|
S Dyn.Status."Trolley_fährt_in_Nachstau"
|
|
S Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC" // Signal von Platz-Schleuse
|
|
JC R2weiter
|
|
|
|
// Trolley fährt nicht in Nachstau:
|
|
A(
|
|
ON Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
O Antrieb_Nachstau_2_aktiv
|
|
)
|
|
A Antrieb_Nachstau_3_aktiv
|
|
A Antrieb_Nachstau_3_aktiv
|
|
= Raus_Ueb_akt // Überwachungszeit aktivieren
|
|
L 60 // Angabe der Überwachungszeit (*1s)
|
|
JU Raus_tueb // Überwachungszeit
|
|
|
|
R2weiter: SET
|
|
R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
L 0 // Angabe der Wartezeit (*100ms)
|
|
JU Raus_Plus // Nächsten Raus_Schritt starten************************************************
|
|
|
|
|
|
--- NW 45: SK-Raus: Schritt 3: Trolley in Nachstau fahren ---
|
|
Raus_s003: A Dyn.Status.Trolley_hat_Nachstau_erreicht
|
|
A Antrieb_Nachstau_3_aktiv // Nur bei aktivem Antrieb auswerten!
|
|
A MindestZeit_Raus_Ok
|
|
= Weiter
|
|
|
|
// Schrittaktionen:
|
|
A B_Nachstau_Einfahrt
|
|
S Dyn.Status.Trolley_hat_Nachstau_erreicht
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
= Y_Weiche_von_Platz_1
|
|
S Antrieb_Nachstau_1_vor
|
|
S Antrieb_Nachstau_3_vor
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
= Y_Weiche_von_Platz_2
|
|
S Antrieb_Nachstau_2_vor
|
|
S Antrieb_Nachstau_3_vor
|
|
S Antrieb_Nachstau_1_vor
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
S Antrieb_Nachstau_3_vor
|
|
S Antrieb_Nachstau_1_vor
|
|
|
|
A Weiter
|
|
R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
L 0 // Angabe der Wartezeit (*100ms)
|
|
JC Raus_Plus // Nächsten Raus_Schritt starten************************************************
|
|
|
|
// Trolley fährt nicht in Nachstau:
|
|
A(
|
|
ON Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
O Antrieb_Nachstau_2_aktiv
|
|
)
|
|
A Antrieb_Nachstau_3_aktiv
|
|
A Antrieb_Nachstau_3_aktiv
|
|
= Raus_Ueb_akt // Überwachungszeit aktivieren
|
|
L 60 // Angabe der Überwachungszeit (*1s)
|
|
JU Raus_tueb // Überwachungszeit
|
|
|
|
|
|
--- NW 46: SK-Raus: Schritt 4: 5s Weiterfahren ---
|
|
Raus_s004: SET // Weiterschaltbedingung
|
|
= Weiter
|
|
|
|
// Schrittaktionen:
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
AN Antrieb_Nachstau_2_aktiv
|
|
ON Antrieb_Nachstau_1_aktiv
|
|
ON Antrieb_Nachstau_3_aktiv
|
|
O Y_Platz_1 // Ein Arbeitsplatz noch geöffnet
|
|
O Y_Platz_2
|
|
O Y_Platz_3
|
|
S Raus_Warte_neu
|
|
S Raus_Warte_stop
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
= Y_Weiche_von_Platz_1
|
|
S Antrieb_Nachstau_1_vor
|
|
S Antrieb_Nachstau_3_vor
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
= Y_Weiche_von_Platz_2
|
|
S Antrieb_Nachstau_2_vor
|
|
S Antrieb_Nachstau_3_vor
|
|
S Antrieb_Nachstau_1_vor
|
|
|
|
A Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
S Antrieb_Nachstau_3_vor
|
|
S Antrieb_Nachstau_1_vor
|
|
|
|
L 50 // Angabe der Wartezeit (*100ms)
|
|
JU Raus_Plus // Nächsten Raus_Schritt starten************************************************
|
|
|
|
|
|
--- NW 47: SK-Raus: Schritt 5: Fertig ---
|
|
Raus_s005: NOP 0 // Weiterschaltbedingung
|
|
|
|
JU Raus_Ende
|
|
|
|
|
|
--- NW 48: SK-Raus: Schritt 20: Schleuse resetten ---
|
|
Raus_s020: SET // Weiterschaltbedingung
|
|
A Antrieb_Nachstau_1_aktiv
|
|
A Antrieb_Nachstau_2_aktiv
|
|
A Antrieb_Nachstau_3_aktiv
|
|
= Weiter // Weiterschaltbedingung ist erfüllt
|
|
|
|
// Schrittaktionen:
|
|
SET
|
|
S Antrieb_Nachstau_1_vor // Antriebe starten
|
|
S Antrieb_Nachstau_2_vor
|
|
S Antrieb_Nachstau_3_vor
|
|
|
|
L 16#B201
|
|
T Dyn.Stop_Ursache_Raus
|
|
|
|
A Weiter // Weiterschaltbedingung ist erfüllt
|
|
L 300 // Angabe der Wartezeit (*100ms)
|
|
JC Raus_Plus // Nächsten Raus_Schritt starten************************************************
|
|
|
|
BEU
|
|
|
|
|
|
--- NW 49: SK-Raus: Schritt 21: Reset ist zu Ende ---
|
|
Raus_s021: SET
|
|
R Dyn.Sk_aus_Beladeplatz.Reset_Akt // Reset ist aktiv
|
|
|
|
JU Raus_Ende // Ende
|
|
|
|
|
|
--- NW 50: SK-Raus: Schrittkette beenden ---
|
|
Raus_Ende: L 0 // Schritt 0: Warten
|
|
T Dyn.Sk_aus_Beladeplatz.Akt_Schritt
|
|
|
|
L 0 // Zeitwert löschen
|
|
T Dyn.Sk_aus_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_aus_Beladeplatz.Tok_Zelle
|
|
|
|
SET
|
|
R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
R Dyn.Status."Trolley_fährt_aus_Platz_1"
|
|
R Dyn.Platz_1."Trolley_fährt_aus"
|
|
R Dyn.Platz_1.Freigabe_an_Stopper
|
|
R Dyn.Status."Trolley_fährt_aus_Platz_2"
|
|
R Dyn.Platz_2."Trolley_fährt_aus"
|
|
R Dyn.Platz_2.Freigabe_an_Stopper
|
|
R Dyn.Status."Trolley_fährt_aus_Platz_3"
|
|
R Dyn.Platz_3."Trolley_fährt_aus"
|
|
R Dyn.Platz_3.Freigabe_an_Stopper
|
|
R Dyn.Status."Trolley_fährt_in_Nachstau"
|
|
|
|
BEU
|
|
|
|
|
|
--- NW 51: SK-Raus: Nächsten Schritt aktivieren ---
|
|
Raus_Plus: T Dyn.Sk_aus_Beladeplatz.T_ok // Wartezeit übergeben
|
|
|
|
A Dyn.Sk_aus_Beladeplatz.Err_Uebzeit // Störung noch nicht quittiert
|
|
BEC
|
|
|
|
L 0 // keine Wartezeit ?
|
|
==I // Ja ! -> sofort weiter
|
|
JC Raus_w220
|
|
|
|
AN Raus_Warte_neu // Wartezeit neutriggern
|
|
JC Nix_Neu
|
|
|
|
L 0
|
|
T Dyn.Sk_aus_Beladeplatz.Tok_Zelle // Wartezeit
|
|
|
|
Nix_Neu: A Raus_Warte_stop // Wartezeit stoppen
|
|
BEC
|
|
|
|
AN "100ms-Impuls" // 0,1s-Impuls
|
|
BEC
|
|
|
|
L Dyn.Sk_aus_Beladeplatz.Tok_Zelle
|
|
L "MW2" // Wartezeit +100ms
|
|
+I
|
|
T Dyn.Sk_aus_Beladeplatz.Tok_Zelle // Wartezeit
|
|
L Dyn.Sk_aus_Beladeplatz.T_ok // abgelaufen ?
|
|
<I // Nein !
|
|
BEC
|
|
|
|
Raus_w220: L Dyn.Sk_aus_Beladeplatz.Akt_Schritt
|
|
+ 1 // Schritt +1
|
|
T Dyn.Sk_aus_Beladeplatz.Akt_Schritt
|
|
|
|
L 0 // Zeitwerte löschen
|
|
T Dyn.Sk_aus_Beladeplatz.Terr_Zelle
|
|
T Dyn.Sk_aus_Beladeplatz.Tok_Zelle
|
|
|
|
SET
|
|
S Dyn.Sk_aus_Beladeplatz.Einzelschritt_fertig // Einzelschritt ist ausgeführt
|
|
|
|
BEU
|
|
|
|
|
|
--- NW 52: SK-Raus: Überwachungszeit kontrollieren ---
|
|
Raus_tueb: A Raus_Ueb_akt
|
|
= Dyn.Sk_aus_Beladeplatz.Ueb_akt // Für Statuskontrolle
|
|
|
|
T Dyn.Sk_aus_Beladeplatz.T_Err // Für Statuskontrolle
|
|
L Dyn.Sk_aus_Beladeplatz.Terr_Zelle // Maximalzeit
|
|
>I // abgelaufen ?
|
|
AN Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
JC en50 // Nein !
|
|
|
|
A Raus_Ueb_akt // Überwachungszeit aktivieren
|
|
S Dyn.Sk_aus_Beladeplatz.Err_Uebzeit
|
|
|
|
L 0 // Zeitwert löschen
|
|
T Dyn.Sk_aus_Beladeplatz.Terr_Zelle
|
|
|
|
BEU
|
|
|
|
en50: NOP 0
|
|
|
|
--- NW 53: SK-Raus: Überwachungszeit +1 ---
|
|
AN Dyn.Sk_aus_Beladeplatz.Ueb_akt // Schrittaktion ist aktiv
|
|
ON "1s-Impuls"
|
|
BEC
|
|
|
|
L Dyn.Sk_aus_Beladeplatz.Terr_Zelle
|
|
+ +1
|
|
T Dyn.Sk_aus_Beladeplatz.Terr_Zelle
|
|
|
|
BEU
|
|
|
|
|
|
--- NW 54: Ende ---
|
|
BE
|
|
|