566 lines
20 KiB
Plaintext
566 lines
20 KiB
Plaintext
=== FB 181: MAusfahrFreigabe [STL] ===
|
|
INTERFACE:
|
|
Input:
|
|
Antrieb_aktiv : Bool
|
|
Kommt_1 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_2 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_3 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_4 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_5 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_6 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_7 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_8 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_9 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_10 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_11 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_12 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_13 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_14 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_15 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_16 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_17 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_18 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_19 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_20 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_21 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_22 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_23 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_24 : Bool // BM fährt aus Strecke ausgefahren
|
|
Kommt_25 : Bool // BM fährt aus Strecke ausgefahren
|
|
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
|
|
Nur_1 : Bool // Nachtriggern nur bei Vorbei_1
|
|
Output:
|
|
InOut:
|
|
Static:
|
|
Para : Struct
|
|
Sicherheit : Int := 60 // Sicherheitszeit dazu[100ms]
|
|
Abstand_Lines : Int := 20 // Abstand zwischen 2 Linien [100ms]
|
|
Position_Vorbei_1 : Int // Vorbei-Sensor in Höhe Linie X
|
|
Position_Vorbei_2 : Int // Vorbei-Sensor in Höhe Linie X
|
|
Position_Vorbei_3 : Int // Vorbei-Sensor in Höhe Linie X
|
|
Position_Vorbei_4 : Int // Vorbei-Sensor in Höhe Linie X
|
|
Position_Vorbei_5 : Int // Vorbei-Sensor in Höhe Linie X
|
|
Dyn : Struct
|
|
RestZeit : Int // BM noch unterwegs [s]
|
|
Aktiv_Line : Int // Aktive Linie
|
|
Last_Line : Int // Letzte aktive Linie
|
|
Nachtrigger_Freigabe : Int // Nachtriggern der Freigabe der ausfahrenden Linie
|
|
Out : Struct
|
|
Line_1_Ok : Bool
|
|
Line_2_Ok : Bool
|
|
Line_3_Ok : Bool
|
|
Line_4_Ok : Bool
|
|
Line_5_Ok : Bool
|
|
Line_6_Ok : Bool
|
|
Line_7_Ok : Bool
|
|
Line_8_Ok : Bool
|
|
Line_9_Ok : Bool
|
|
Line_10_Ok : Bool
|
|
Line_11_Ok : Bool
|
|
Line_12_Ok : Bool
|
|
Line_13_Ok : Bool
|
|
Line_14_Ok : Bool
|
|
Line_15_Ok : Bool
|
|
Line_16_Ok : Bool
|
|
Line_17_Ok : Bool
|
|
Line_18_Ok : Bool
|
|
Line_19_Ok : Bool
|
|
Line_20_Ok : Bool
|
|
Line_21_Ok : Bool
|
|
Line_22_Ok : Bool
|
|
Line_23_Ok : Bool
|
|
Line_24_Ok : Bool
|
|
Line_25_Ok : Bool
|
|
Temp:
|
|
Constant:
|
|
|
|
--- NW 1: Erst mal ---
|
|
SET
|
|
R Out.Line_1_Ok
|
|
R Out.Line_2_Ok
|
|
R Out.Line_3_Ok
|
|
R Out.Line_4_Ok
|
|
R Out.Line_5_Ok
|
|
R Out.Line_6_Ok
|
|
R Out.Line_7_Ok
|
|
R Out.Line_8_Ok
|
|
R Out.Line_9_Ok
|
|
R Out.Line_10_Ok
|
|
R Out.Line_11_Ok
|
|
R Out.Line_12_Ok
|
|
R Out.Line_13_Ok
|
|
R Out.Line_14_Ok
|
|
R Out.Line_15_Ok
|
|
R Out.Line_16_Ok
|
|
R Out.Line_17_Ok
|
|
R Out.Line_18_Ok
|
|
R Out.Line_19_Ok
|
|
R Out.Line_20_Ok
|
|
R Out.Line_21_Ok
|
|
R Out.Line_22_Ok
|
|
R Out.Line_23_Ok
|
|
R Out.Line_24_Ok
|
|
R Out.Line_25_Ok
|
|
|
|
|
|
--- NW 2: Vorbei.Sensoren auswerten ---
|
|
AN Vorbei_1
|
|
JC V002
|
|
|
|
L Para.Position_Vorbei_1
|
|
L Para.Abstand_Lines
|
|
*I
|
|
L Para.Sicherheit
|
|
+I // Neue RestZeit ermitteln
|
|
L Dyn.RestZeit // Neuer Wert kleiner?
|
|
<I // Ja !
|
|
JC V002 // Ohne Speicherung weiter
|
|
|
|
CAC // Neuen Wert übernehmen
|
|
T Dyn.RestZeit // Wert speichern
|
|
|
|
V002: AN Vorbei_2
|
|
O Nur_1 // Nachtriggern nur bei Vorbei_1
|
|
JC V003
|
|
|
|
L Para.Position_Vorbei_2
|
|
L Para.Abstand_Lines
|
|
*I
|
|
L Para.Sicherheit
|
|
+I // Neue RestZeit ermitteln
|
|
L Dyn.RestZeit // Neuer Wert kleiner?
|
|
<I // Ja !
|
|
JC V003 // Ohne Speicherung weiter
|
|
|
|
CAC // Neuen Wert übernehmen
|
|
T Dyn.RestZeit // Wert speichern
|
|
|
|
V003: AN Vorbei_3
|
|
O Nur_1 // Nachtriggern nur bei Vorbei_1
|
|
JC V004
|
|
|
|
L Para.Position_Vorbei_3
|
|
L Para.Abstand_Lines
|
|
*I
|
|
L Para.Sicherheit
|
|
+I // Neue RestZeit ermitteln
|
|
L Dyn.RestZeit // Neuer Wert kleiner?
|
|
<I // Ja !
|
|
JC V004 // Ohne Speicherung weiter
|
|
|
|
CAC // Neuen Wert übernehmen
|
|
T Dyn.RestZeit // Wert speichern
|
|
|
|
V004: AN Vorbei_4
|
|
O Nur_1 // Nachtriggern nur bei Vorbei_1
|
|
JC V005
|
|
|
|
L Para.Position_Vorbei_4
|
|
L Para.Abstand_Lines
|
|
*I
|
|
L Para.Sicherheit
|
|
+I // Neue RestZeit ermitteln
|
|
L Dyn.RestZeit // Neuer Wert kleiner?
|
|
<I // Ja !
|
|
JC V005 // Ohne Speicherung weiter
|
|
|
|
CAC // Neuen Wert übernehmen
|
|
T Dyn.RestZeit // Wert speichern
|
|
|
|
V005: AN Vorbei_5
|
|
O Nur_1 // Nachtriggern nur bei Vorbei_1
|
|
JC V00E
|
|
|
|
L Para.Position_Vorbei_5
|
|
L Para.Abstand_Lines
|
|
*I
|
|
L Para.Sicherheit
|
|
+I // Neue RestZeit ermitteln
|
|
L Dyn.RestZeit // Neuer Wert kleiner?
|
|
<I // Ja !
|
|
JC V00E // Ohne Speicherung weiter
|
|
|
|
CAC // Neuen Wert übernehmen
|
|
T Dyn.RestZeit // Wert speichern
|
|
|
|
V00E: NOP 0
|
|
|
|
|
|
--- NW 3: Aus-/vorbeifahrendes BM -> Aktivzeit speichern ---
|
|
L 25
|
|
A Kommt_25
|
|
JC Save
|
|
L 24
|
|
A Kommt_24
|
|
JC Save
|
|
L 23
|
|
A Kommt_23
|
|
JC Save
|
|
L 22
|
|
A Kommt_22
|
|
JC Save
|
|
L 21
|
|
A Kommt_21
|
|
JC Save
|
|
L 20
|
|
A Kommt_20
|
|
JC Save
|
|
L 19
|
|
A Kommt_19
|
|
JC Save
|
|
L 18
|
|
A Kommt_18
|
|
JC Save
|
|
L 17
|
|
A Kommt_17
|
|
JC Save
|
|
L 16
|
|
A Kommt_16
|
|
JC Save
|
|
L 15
|
|
A Kommt_15
|
|
JC Save
|
|
L 14
|
|
A Kommt_14
|
|
JC Save
|
|
L 13
|
|
A Kommt_13
|
|
JC Save
|
|
L 12
|
|
A Kommt_12
|
|
JC Save
|
|
L 11
|
|
A Kommt_11
|
|
JC Save
|
|
L 10
|
|
A Kommt_10
|
|
JC Save
|
|
L 9
|
|
A Kommt_9
|
|
JC Save
|
|
L 8
|
|
A Kommt_8
|
|
JC Save
|
|
L 7
|
|
A Kommt_7
|
|
JC Save
|
|
L 6
|
|
A Kommt_6
|
|
JC Save
|
|
L 5
|
|
A Kommt_5
|
|
JC Save
|
|
L 4
|
|
A Kommt_4
|
|
JC Save
|
|
L 3
|
|
A Kommt_3
|
|
JC Save
|
|
L 2
|
|
A Kommt_2
|
|
JC Save
|
|
L 1
|
|
A Kommt_1
|
|
JC Save
|
|
|
|
JU Zeit
|
|
|
|
Save: T Dyn.Aktiv_Line // Aktive Linie speichern
|
|
|
|
L Para.Abstand_Lines
|
|
*I
|
|
L Para.Sicherheit
|
|
+I // RestZeit ermitteln
|
|
L Dyn.RestZeit // Neuer Wert größer?
|
|
>=I // Ja !
|
|
JC Ok
|
|
|
|
// Ausgefahrene Stelle ist kleiner:
|
|
L 0 // Löschen
|
|
T Dyn.Aktiv_Line // Aktive Linie
|
|
T Dyn.Nachtrigger_Freigabe // Nachtriggern der Freigabe der ausfahrenden Linie
|
|
|
|
BEU
|
|
|
|
Ok: CAC // Neuen Wert übernehmen
|
|
T Dyn.RestZeit // Wert speichern
|
|
|
|
// Freigabe aus aktiver Linie verlängern aktivieren:
|
|
L Para.Sicherheit
|
|
L Para.Abstand_Lines
|
|
+I
|
|
L 10
|
|
/I
|
|
L 2 // /Nach 2 Sekunden
|
|
T Dyn.Nachtrigger_Freigabe // Nachtriggern der Freigabe der ausfahrenden Linie
|
|
|
|
|
|
--- NW 4: Aktiv-/Nachtrigger-Zeit verändern ---
|
|
Zeit: AN Antrieb_aktiv // Antrieb aktiv
|
|
ON "1s-Impuls" // 1s-Impuls
|
|
JC Chk
|
|
|
|
// BM ist unterwegs:
|
|
L Dyn.RestZeit
|
|
+ -10 // 10*100ms = 1s
|
|
T Dyn.RestZeit
|
|
|
|
L 0 // Minimum erreicht?
|
|
>I // Nein !
|
|
JC Trig
|
|
|
|
T Dyn.RestZeit // Minimum übergeben
|
|
|
|
// Freigabe nachtriggern:
|
|
Trig: L Dyn.Nachtrigger_Freigabe // Nachtriggern der Freigabe der ausfahrenden Linie
|
|
+ -1
|
|
T Dyn.Nachtrigger_Freigabe // Nachtriggern der Freigabe der ausfahrenden Linie
|
|
|
|
L 0 // Minimum erreicht?
|
|
>I // Nein !
|
|
JC Chk
|
|
|
|
T Dyn.Nachtrigger_Freigabe // Minimum übergeben
|
|
T Dyn.Aktiv_Line
|
|
T Dyn.Last_Line
|
|
|
|
|
|
--- NW 5: Nachtriggern der Freigabe der ausfahrenden Linie ---
|
|
Chk: L Dyn.Aktiv_Line // Aktive Linie
|
|
L Dyn.Last_Line
|
|
<>I // Unterschiedlich !
|
|
JC More
|
|
|
|
CAC
|
|
JL ENDE_Mig
|
|
JU ENDE_Mig // Bei 0
|
|
JU Li01 // Linie 1 war aktiv
|
|
JU Li02
|
|
JU Li03
|
|
JU Li04
|
|
JU Li05
|
|
JU Li06
|
|
JU Li07
|
|
JU Li08
|
|
JU Li09
|
|
JU Li10
|
|
JU Li11
|
|
JU Li12
|
|
JU Li13
|
|
JU Li14
|
|
JU Li15
|
|
JU Li16
|
|
JU Li17
|
|
JU Li18
|
|
JU Li19
|
|
JU Li20
|
|
JU Li21
|
|
JU Li22
|
|
JU Li23
|
|
JU Li24
|
|
JU Li25 // Linie 25 war aktiv
|
|
ENDE_Mig: JU More
|
|
|
|
Li01: SET
|
|
S Out.Line_1_Ok
|
|
BEU
|
|
Li02: SET
|
|
S Out.Line_2_Ok
|
|
BEU
|
|
Li03: SET
|
|
S Out.Line_3_Ok
|
|
BEU
|
|
Li04: SET
|
|
S Out.Line_4_Ok
|
|
BEU
|
|
Li05: SET
|
|
S Out.Line_5_Ok
|
|
BEU
|
|
Li06: SET
|
|
S Out.Line_6_Ok
|
|
BEU
|
|
Li07: SET
|
|
S Out.Line_7_Ok
|
|
BEU
|
|
Li08: SET
|
|
S Out.Line_8_Ok
|
|
BEU
|
|
Li09: SET
|
|
S Out.Line_9_Ok
|
|
BEU
|
|
Li10: SET
|
|
S Out.Line_10_Ok
|
|
BEU
|
|
Li11: SET
|
|
S Out.Line_11_Ok
|
|
BEU
|
|
Li12: SET
|
|
S Out.Line_12_Ok
|
|
BEU
|
|
Li13: SET
|
|
S Out.Line_13_Ok
|
|
BEU
|
|
Li14: SET
|
|
S Out.Line_14_Ok
|
|
BEU
|
|
Li15: SET
|
|
S Out.Line_15_Ok
|
|
BEU
|
|
Li16: SET
|
|
S Out.Line_16_Ok
|
|
BEU
|
|
Li17: SET
|
|
S Out.Line_17_Ok
|
|
BEU
|
|
Li18: SET
|
|
S Out.Line_18_Ok
|
|
BEU
|
|
Li19: SET
|
|
S Out.Line_19_Ok
|
|
BEU
|
|
Li20: SET
|
|
S Out.Line_20_Ok
|
|
BEU
|
|
Li21: SET
|
|
S Out.Line_21_Ok
|
|
BEU
|
|
Li22: SET
|
|
S Out.Line_22_Ok
|
|
BEU
|
|
Li23: SET
|
|
S Out.Line_23_Ok
|
|
BEU
|
|
Li24: SET
|
|
S Out.Line_24_Ok
|
|
BEU
|
|
Li25: SET
|
|
S Out.Line_25_Ok
|
|
BEU
|
|
|
|
More: NOP 0
|
|
|
|
|
|
--- NW 6: Freigaben an Pufferstrecken aufgrund der fahrenden BM ---
|
|
L Dyn.RestZeit
|
|
L 10
|
|
/I
|
|
JL Ende
|
|
JU Ok01 // Restzeit in 0 Sekunden
|
|
JU Ok01 // Restzeit in 1 Sekunden
|
|
JU Ok02 // Restzeit in 2 Sekunden
|
|
JU Ok02 // Restzeit in 3 Sekunden
|
|
JU Ok03 // Restzeit in 4 Sekunden
|
|
JU Ok03 // Restzeit in 5 Sekunden
|
|
JU Ok04 // Restzeit in 6 Sekunden
|
|
JU Ok04 // Restzeit in 7 Sekunden
|
|
JU Ok05 // Restzeit in 8 Sekunden
|
|
JU Ok05 // Restzeit in 9 Sekunden
|
|
JU Ok06 // Restzeit in 10 Sekunden
|
|
JU Ok06 // Restzeit in 11 Sekunden
|
|
JU Ok07 // Restzeit in 12 Sekunden
|
|
JU Ok07 // Restzeit in 13 Sekunden
|
|
JU Ok08 // Restzeit in 14 Sekunden
|
|
JU Ok08 // Restzeit in 15 Sekunden
|
|
JU Ok09 // Restzeit in 16 Sekunden
|
|
JU Ok09 // Restzeit in 17 Sekunden
|
|
JU Ok10 // Restzeit in 18 Sekunden
|
|
JU Ok10 // Restzeit in 19 Sekunden
|
|
JU Ok11 // Restzeit in 20 Sekunden
|
|
JU Ok11 // Restzeit in 21 Sekunden
|
|
JU Ok12 // Restzeit in 22 Sekunden
|
|
JU Ok12 // Restzeit in 23 Sekunden
|
|
JU Ok13 // Restzeit in 24 Sekunden
|
|
JU Ok13 // Restzeit in 25 Sekunden
|
|
JU Ok14 // Restzeit in 26 Sekunden
|
|
JU Ok14 // Restzeit in 27 Sekunden
|
|
JU Ok15 // Restzeit in 28 Sekunden
|
|
JU Ok15 // Restzeit in 29 Sekunden
|
|
JU Ok16 // Restzeit in 30 Sekunden
|
|
JU Ok16 // Restzeit in 31 Sekunden
|
|
JU Ok17 // Restzeit in 32 Sekunden
|
|
JU Ok17 // Restzeit in 33 Sekunden
|
|
JU Ok18 // Restzeit in 34 Sekunden
|
|
JU Ok18 // Restzeit in 35 Sekunden
|
|
JU Ok19 // Restzeit in 36 Sekunden
|
|
JU Ok19 // Restzeit in 33 Sekunden
|
|
JU Ok20 // Restzeit in 38 Sekunden
|
|
JU Ok20 // Restzeit in 39 Sekunden
|
|
JU Ok21 // Restzeit in 40 Sekunden
|
|
JU Ok21 // Restzeit in 41 Sekunden
|
|
JU Ok22 // Restzeit in 42 Sekunden
|
|
JU Ok22 // Restzeit in 43 Sekunden
|
|
JU Ok23 // Restzeit in 44 Sekunden
|
|
JU Ok23 // Restzeit in 45 Sekunden
|
|
JU Ok24 // Restzeit in 46 Sekunden
|
|
JU Ok24 // Restzeit in 43 Sekunden
|
|
JU Ok25 // Restzeit in 48 Sekunden
|
|
JU Ok25 // Restzeit in 49 Sekunden
|
|
Ende: JU En04
|
|
|
|
Ok01: SET
|
|
S Out.Line_1_Ok
|
|
Ok02: SET
|
|
S Out.Line_2_Ok
|
|
Ok03: SET
|
|
S Out.Line_3_Ok
|
|
Ok04: SET
|
|
S Out.Line_4_Ok
|
|
Ok05: SET
|
|
S Out.Line_5_Ok
|
|
Ok06: SET
|
|
S Out.Line_6_Ok
|
|
Ok07: SET
|
|
S Out.Line_7_Ok
|
|
Ok08: SET
|
|
S Out.Line_8_Ok
|
|
Ok09: SET
|
|
S Out.Line_9_Ok
|
|
Ok10: SET
|
|
S Out.Line_10_Ok
|
|
Ok11: SET
|
|
S Out.Line_11_Ok
|
|
Ok12: SET
|
|
S Out.Line_12_Ok
|
|
Ok13: SET
|
|
S Out.Line_13_Ok
|
|
Ok14: SET
|
|
S Out.Line_14_Ok
|
|
Ok15: SET
|
|
S Out.Line_15_Ok
|
|
Ok16: SET
|
|
S Out.Line_16_Ok
|
|
Ok17: SET
|
|
S Out.Line_17_Ok
|
|
Ok18: SET
|
|
S Out.Line_18_Ok
|
|
Ok19: SET
|
|
S Out.Line_19_Ok
|
|
Ok20: SET
|
|
S Out.Line_20_Ok
|
|
Ok21: SET
|
|
S Out.Line_21_Ok
|
|
Ok22: SET
|
|
S Out.Line_22_Ok
|
|
Ok23: SET
|
|
S Out.Line_23_Ok
|
|
Ok24: SET
|
|
S Out.Line_24_Ok
|
|
Ok25: SET
|
|
S Out.Line_25_Ok
|
|
|
|
En04: NOP 0
|
|
|
|
|
|
--- NW 7: Letzten aktiven Puffer speichern ---
|
|
L Dyn.Aktiv_Line // Aktive Linie
|
|
T Dyn.Last_Line // speichern
|
|
|
|
|
|
--- NW 8: Ende ---
|
|
BE
|
|
|