Fehler aus UC Calls von AWL entfernt
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
FUNCTION "Arbeitsplatz_Draussen_FC" : Void
|
||||
TITLE = Draussen-FC: AMR Arbeitsplaetze
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
FAMILY : Module
|
||||
NAME : Draussen
|
||||
//SCL-Portierung des AWL-Bausteins FC1182 "Arbeitsplatz_Draussen_FC" (verhaltensgleich).
|
||||
//
|
||||
//Der Baustein hatte im AWL-Original die Bausteineigenschaft "Parameterversorgung
|
||||
//ueber Register" (ParameterPassing) aktiv und konnte daher nur per UC/CC aus AWL
|
||||
//aufgerufen werden. Da der Baustein ausschliesslich den globalen Merker MW190
|
||||
//(Schleusen-Nr) liest und die Zielbausteine voll qualifiziert aufruft, gibt es
|
||||
//keine echte Registerabhaengigkeit -> die Option entfaellt bei der SCL-Fassung,
|
||||
//der Baustein ist damit direkt aus SCL aufrufbar (CASE 1182 in MHMOmniSchleuse).
|
||||
//
|
||||
//Der indirekte Dispatch (AWL: je Netzwerk "L MW190 / L <Schleuse> / NE_I / JC")
|
||||
//ist als CASE ueber die Schleusen-Nr ausgefuehrt. Die Merker-Schnittstelle
|
||||
//(MW190 vom Aufrufer gesetzt) bleibt erhalten.
|
||||
//
|
||||
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
|
||||
// - Standort fuer Schleuse 3481 war im Original die Wort-Typkonstante "w#3481";
|
||||
// hier als W#16#3481 uebernommen. Wert pruefen!
|
||||
VAR_TEMP
|
||||
Position : Int;
|
||||
WeichenZiel : Int;
|
||||
END_VAR
|
||||
|
||||
BEGIN
|
||||
// NW1: Rueckmeldungen erst mal resetten (Weiterfahrt von Ziel-FC erlaubt)
|
||||
"M180.6" := FALSE;
|
||||
|
||||
// AWL: UC FC1182 dispatcht ueber MW190 (Schleusen-Nr, vom Aufrufer gesetzt)
|
||||
CASE WORD_TO_INT("MW190") OF
|
||||
|
||||
3481: // Schleuse 3481: Ausgefahren? (Einfahrt 180 Grad-ByPass)
|
||||
// Trolley am Arbeitsplatz reservieren:
|
||||
"Reservierung_in_Arbeitsplatz_eintragen"(
|
||||
TrolleyID := "DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DZuführung_OmniFahren".Schleuse_3481.Dyn.Trolley_EndZiel,
|
||||
Standort := W#16#3481,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
// Trolley an Arbeitsplatz uebergeben:
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DZuführung_OmniFahren".Schleuse_3481.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#B300,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
|
||||
3241: // Schleuse 3241: Ausgefahren? (Einfahrt PS5)
|
||||
// Trolley am Arbeitsplatz reservieren:
|
||||
"Reservierung_in_Arbeitsplatz_eintragen"(
|
||||
TrolleyID := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
Standort := W#16#3250,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
// Trolley an Arbeitsplatz uebergeben:
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#A500,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
|
||||
3271: // Schleuse 3271: Ausgefahren? (Einfahrt PS4)
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#A400,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
|
||||
3293: // Schleuse 3293: Ausgefahren? (Einfahrt PS3)
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#A300,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
|
||||
3331: // Schleuse 3331: Ausgefahren? (Einfahrt PS2)
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#A200,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
|
||||
3353: // Schleuse 3353: Ausgefahren? (Einfahrt PS1)
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#A100,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
|
||||
3390: // Schleuse 3390: Ausgefahren? (Einfahrt MPS3)
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#B300,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
|
||||
3421: // Schleuse 3421: Ausgefahren? (Einfahrt MPS2)
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#B200,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
|
||||
3450: // Schleuse 3450: Ausgefahren? (Einfahrt MPS1)
|
||||
"Trolley_in_Arbeitsplatz_eingefahren"(
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Ziel := "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel,
|
||||
AusfahrZiel := W#16#B100,
|
||||
Gesamt_Trolley_DL := 1000);
|
||||
// Gerade? Also zum OB-Bereich? (AWL: L Weichen_Ziel / L 16#3451 / NE_I / BEC)
|
||||
IF "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Weichen_Ziel = W#16#3451 THEN
|
||||
// Trolleydaten in DB1000 loeschen, da in AMR faehrt und danach kein Leser mehr!
|
||||
"Trolleydaten_löschen"(
|
||||
Gesamt_Trolley_DL := 1000,
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse);
|
||||
END_IF;
|
||||
|
||||
3455: // Schleuse 3455: Ausgefahren? (Platz1 MPS1)
|
||||
// Trolleydaten in DB1000 loeschen, da in AMR faehrt und danach kein Leser mehr!
|
||||
"Trolleydaten_löschen"(
|
||||
Gesamt_Trolley_DL := 1000,
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse);
|
||||
|
||||
3461: // Schleuse 3461: Ausgefahren? (Platz2 MPS1)
|
||||
"Trolleydaten_löschen"(
|
||||
Gesamt_Trolley_DL := 1000,
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse);
|
||||
|
||||
3465: // Schleuse 3465: Ausgefahren? (Platz3 MPS1)
|
||||
"Trolleydaten_löschen"(
|
||||
Gesamt_Trolley_DL := 1000,
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse);
|
||||
|
||||
ELSE
|
||||
; // unbekannte Schleusen-Nr -> nichts tun
|
||||
END_CASE;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,348 @@
|
||||
FUNCTION "Arbeitsplatz_Leser_FC" : Void
|
||||
TITLE = Leser-FC: AMR Arbeitsplätze
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
FAMILY : Module
|
||||
NAME : Leser
|
||||
//SCL-Portierung des AWL-Bausteins FC1180 "Arbeitsplatz_Leser_FC" (verhaltensgleich).
|
||||
//
|
||||
//Der Baustein hatte im AWL-Original die Bausteineigenschaft "Parameterversorgung
|
||||
//ueber Register" (ParameterPassing) aktiv und konnte daher nur per UC/CC aus AWL
|
||||
//aufgerufen werden. Da der Baustein ausschliesslich die globalen Merker MW190
|
||||
//(Schleusen-Nr) und M180.0/M180.1 (Lese-Status) liest und die Zielbausteine voll
|
||||
//qualifiziert aufruft, gibt es keine echte Registerabhaengigkeit -> die Option
|
||||
//entfaellt bei der SCL-Fassung, der Baustein ist direkt aus SCL aufrufbar
|
||||
//(CASE 1180 in MHMOmniSchleuse).
|
||||
//
|
||||
//Der indirekte Dispatch (AWL: je Netzwerk "L MW190 / L <Schleuse> / NE_I / JC")
|
||||
//ist als CASE ueber die Schleusen-Nr ausgefuehrt. Case-Labels sind die dezimalen
|
||||
//Int-Konstanten aus dem XML. Die Merker-Schnittstelle bleibt erhalten.
|
||||
//
|
||||
//Zweig-Muster je Schleuse (in JEDEM der 33 Netzwerke identisch geprueft):
|
||||
// AN M180.0 / JC Y / BEU -> bei Lesefehler (M180.0=1): nichts tun
|
||||
// Y: AN M180.1 / BEC -> nur weiter wenn unbekannt in TrolleysDL (M180.1=1)
|
||||
// L TrolleyID / L DINT#0 / EQ_D / BEC -> nur weiter wenn TrolleyID <> 0
|
||||
// CALL Trolleydaten_neu_anlegen(...)
|
||||
// => Aufruf nur wenn: NOT M180.0 AND M180.1 AND TrolleyID <> DINT#0
|
||||
//
|
||||
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
|
||||
// - NW1 "Rueckmeldung" setzt den Scratch-Merker MW196 (evtl. Zwischenziel) auf 0
|
||||
// (AWL: L 0 / T MW196). Hier als "MW196" := W#16#0000; uebernommen. Falls das
|
||||
// Symbol "MW196" in der Symboltabelle als Int deklariert ist, statt dessen
|
||||
// "MW196" := 0; verwenden.
|
||||
// - Endziel-Parameter war im Original die Wort-Literalkonstante 16#0000 -> hier W#16#0000.
|
||||
// - ShopGroup-Parameter war die getypte Konstante DINT#0 -> 1:1 uebernommen.
|
||||
// - Alle 33 Zweige nutzen das identische Muster; nur der Schleusen-DB-Pfad variiert.
|
||||
VAR_TEMP
|
||||
Zielebene : Word;
|
||||
END_VAR
|
||||
|
||||
BEGIN
|
||||
// NW1 "Rueckmeldung": Zwischenziel-Scratch (MW196) zuruecksetzen (AWL: L 0 / T MW196)
|
||||
"MW196" := W#16#0000;
|
||||
|
||||
// AWL: UC FC1180 dispatcht ueber MW190 (Schleusen-Nr, vom Aufrufer gesetzt)
|
||||
CASE WORD_TO_INT("MW190") OF
|
||||
|
||||
3481: // Schleuse 3481: (Vor 180 Grad-ByPass)
|
||||
// Daten in Datenbank neu anlegen:
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DZuführung_OmniFahren".Schleuse_3481.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3241: // Schleuse 3241: (Vor Einfahrt PS5)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3245: // Schleuse 3245: (ABP1/PS5)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS5_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS5_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS5_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3251: // Schleuse 3251: (ABP2/PS5)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS5_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS5_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS5_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3255: // Schleuse 3255: (ABP3/PS5)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS5_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS5_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS5_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3271: // Schleuse 3271: (Vor Einfahrt PS4)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS4_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3275: // Schleuse 3275: (ABP1/PS4)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS4_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS4_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS4_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3281: // Schleuse 3281: (ABP2/PS4)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS4_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS4_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS4_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3285: // Schleuse 3285: (ABP3/PS4)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS4_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS4_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS4_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3293: // Schleuse 3293: (Vor Einfahrt PS3)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS3_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3305: // Schleuse 3305: (ABP1/PS3)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS3_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3311: // Schleuse 3311: (ABP2/PS3)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS3_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3315: // Schleuse 3315: (ABP3/PS3)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS3_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3331: // Schleuse 3331: (Vor Einfahrt PS2)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS2_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3335: // Schleuse 3335: (ABP1/PS2)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS2_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3341: // Schleuse 3341: (ABP2/PS2)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS2_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3345: // Schleuse 3345: (ABP3/PS2)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS2_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3353: // Schleuse 3353: (Vor Einfahrt PS1)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3365: // Schleuse 3365: (ABP1/PS1)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS1_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3371: // Schleuse 3371: (ABP2/PS1)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS1_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3375: // Schleuse 3375: (ABP3/PS1)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DPS1_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3390: // Schleuse 3390: (Vor Einfahrt MPS3)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3395: // Schleuse 3395: (ABP1/MPS3)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS3_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3401: // Schleuse 3401: (ABP2/MPS3)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS3_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3405: // Schleuse 3405: (ABP3/MPS3)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS3_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3421: // Schleuse 3421: (Vor Einfahrt MPS2)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3425: // Schleuse 3425: (ABP1/MPS2)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS2_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3431: // Schleuse 3431: (ABP2/MPS2)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS2_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3435: // Schleuse 3435: (ABP3/MPS2)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS2_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3450: // Schleuse 3450: (Vor Einfahrt MPS1)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3455: // Schleuse 3455: (ABP1/MPS1)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS1_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3461: // Schleuse 3461: (ABP2/MPS1)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS1_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
3465: // Schleuse 3465: (ABP3/MPS1)
|
||||
IF NOT "M180.0" AND "M180.1" AND ("DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse <> DINT#0) THEN
|
||||
"Trolleydaten_neu_anlegen"(
|
||||
Gesamt_Trolley_DL := "DMPS1_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL,
|
||||
TrolleyID := "DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse,
|
||||
Endziel := W#16#0000,
|
||||
ShopGroup := DINT#0);
|
||||
END_IF;
|
||||
|
||||
ELSE
|
||||
; // unbekannte Schleusen-Nr -> nichts tun
|
||||
END_CASE;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,68 @@
|
||||
FUNCTION "HWtoAMRZielFC" : Void
|
||||
TITLE = Ziel-FC: HW>AMR
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
FAMILY : Module
|
||||
NAME : Ziel
|
||||
//SCL-Portierung des AWL-Bausteins FC181 "HWtoAMRZielFC" (verhaltensgleich).
|
||||
//
|
||||
//Der Baustein hatte im AWL-Original die Bausteineigenschaft "Parameterversorgung
|
||||
//ueber Register" (ParameterPassing) aktiv und konnte daher nur per UC/CC aus AWL
|
||||
//aufgerufen werden. Da der Baustein ausschliesslich den globalen Merker MW190
|
||||
//(Schleusen-Nr) liest und nur den Merker M180.6 (Freigabe Weiterfahrt) setzt,
|
||||
//gibt es keine echte Registerabhaengigkeit -> die Option entfaellt bei der
|
||||
//SCL-Fassung, der Baustein ist damit direkt aus SCL aufrufbar (CASE 181 in
|
||||
//MHMOmniSchleuse).
|
||||
//
|
||||
//Der indirekte Dispatch (AWL: je Netzwerk "L MW190 / L <Schleuse> / NE_I / JC")
|
||||
//ist als CASE ueber die Schleusen-Nr ausgefuehrt. Im Original wird nach einem
|
||||
//Treffer die Weiterfahrt freigegeben und der Baustein sofort verlassen (BEU);
|
||||
//da MW190 nur einen Wert hat, ist der CASE dazu aequivalent. Die Merker-
|
||||
//Schnittstelle (MW190 vom Aufrufer gesetzt, M180.6 Rueckmeldung) bleibt erhalten.
|
||||
//
|
||||
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
|
||||
// - Der TIA-Bausteinname enthaelt kein '>' (XML <Name>=HWtoAMRZielFC), obwohl der
|
||||
// Bausteintitel "Ziel-FC: HW>AMR" lautet. Der Aufruf in MHMOmniSchleuse.scl ist
|
||||
// "HWtoAMRZielFC"() -> die Funktion heisst hier ebenso HWtoAMRZielFC (kein '>').
|
||||
// - MW190 wird als WORD_TO_INT(MW190) gegen die dezimalen Schleusen-Nrn verglichen
|
||||
// (im AWL "L MW190 / L <n> / NE_I", n als Int-Konstante 3004 bzw. 3565).
|
||||
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-Laenge <= 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
|
||||
|
||||
BEGIN
|
||||
// NW1 "Rueckmeldung": Rueckmeldungen erst mal resetten
|
||||
"M180.6" := FALSE; // Weiterfahrt von Ziel-FC (noch nicht erlaubt)
|
||||
|
||||
// AWL: UC FC181 dispatcht ueber MW190 (Schleusen-Nr, vom Aufrufer gesetzt).
|
||||
// Je Treffer wird die Weiterfahrt freigegeben (S M180.6) und der Baustein
|
||||
// im Original per BEU verlassen.
|
||||
CASE WORD_TO_INT("MW190") OF
|
||||
|
||||
3004: // NW2 - Schleuse 3004: (BST 3)
|
||||
"M180.6" := TRUE; // Weiterfahrt ist erlaubt
|
||||
|
||||
3565: // NW3 - Schleuse 3565: (BST 4)
|
||||
"M180.6" := TRUE; // Weiterfahrt ist erlaubt
|
||||
|
||||
ELSE
|
||||
; // unbekannte Schleusen-Nr -> keine Weiterfahrt-Freigabe
|
||||
END_CASE;
|
||||
END_FUNCTION
|
||||
@@ -0,0 +1,63 @@
|
||||
FUNCTION "HWtoOB_Ziel_FC" : Void
|
||||
TITLE = Ziel-FC: HW>OB
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
AUTHOR : AE
|
||||
FAMILY : Module
|
||||
NAME : Ziel
|
||||
//SCL-Portierung des AWL-Bausteins FC2181 "HWtoOB_Ziel_FC" (verhaltensgleich).
|
||||
//(Bausteintitel im AWL-Original: "Ziel-FC: HW>OB".)
|
||||
//
|
||||
//Der Baustein hatte im AWL-Original die Bausteineigenschaft "Parameterversorgung
|
||||
//ueber Register" (ParameterPassing) aktiv und konnte daher nur per UC/CC aus AWL
|
||||
//aufgerufen werden. Da der Baustein ausschliesslich den globalen Merker MW190
|
||||
//(Schleusen-Nr) liest und nur einen globalen Merker (M180.6) setzt/rueckstellt,
|
||||
//gibt es keine echte Registerabhaengigkeit -> die Option entfaellt bei der
|
||||
//SCL-Fassung, der Baustein ist damit direkt aus SCL aufrufbar
|
||||
//(CASE 2181 in MHMOmniSchleuse).
|
||||
//
|
||||
//Der indirekte Dispatch (AWL: "L MW190 / L <Schleuse> / NE_I / JC <Ende>")
|
||||
//ist als CASE ueber die Schleusen-Nr ausgefuehrt. Die Merker-Schnittstelle
|
||||
//(MW190 vom Aufrufer gesetzt, M180.6 als Rueckmeldung) bleibt erhalten.
|
||||
//
|
||||
//ABWEICHUNGEN ZUM AWL-ORIGINAL (bei Inbetriebnahme pruefen!):
|
||||
// - Keine funktionalen Abweichungen. Der Baustein besitzt nur EINEN Dispatch-Zweig
|
||||
// (Schleuse 3014). Das AWL beendet diesen Zweig mit BEU (unbedingtes Bausteinende);
|
||||
// im SCL entspricht dies dem Ende des CASE-Zweiges (identisches Verhalten, da
|
||||
// danach im Original nur noch das Bausteinende BE folgt).
|
||||
// - Vergleich "L MW190 / L 3014 / NE_I" (Integer-Vergleich auf den Wort-Merker
|
||||
// MW190) ist als WORD_TO_INT("MW190") ausgefuehrt.
|
||||
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
|
||||
|
||||
BEGIN
|
||||
// NW1 Rueckmeldung: Rueckmeldungen erst mal resetten
|
||||
"M180.6" := FALSE; // Weiterfahrt von Ziel-FC erlaubt
|
||||
|
||||
// AWL: UC FC2181 dispatcht ueber MW190 (Schleusen-Nr, vom Aufrufer gesetzt)
|
||||
CASE WORD_TO_INT("MW190") OF
|
||||
|
||||
3014: // NW2 Schleuse 3014: (BST 3)
|
||||
"M180.6" := TRUE; // Weiterfahrt ist erlaubt
|
||||
|
||||
ELSE
|
||||
; // unbekannte Schleusen-Nr -> nichts tun
|
||||
END_CASE;
|
||||
END_FUNCTION
|
||||
Reference in New Issue
Block a user