406 lines
16 KiB
Plaintext
406 lines
16 KiB
Plaintext
FUNCTION "FC_Direction" : Void
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
VAR_INPUT
|
|
nInSwitchNo : USInt;
|
|
END_VAR
|
|
|
|
VAR_OUTPUT
|
|
nOutDirection : USInt;
|
|
END_VAR
|
|
|
|
VAR_IN_OUT
|
|
InOutCarrier : "stCarrier";
|
|
END_VAR
|
|
|
|
VAR_TEMP
|
|
xDestB1 : Bool; // Ziel allgemein Block1
|
|
xDest211 : Bool; // Ziel befindet sich in erstem Viertel von B1
|
|
xDest212 : Bool; // Ziel befindet sich in zweitem Viertel von B1
|
|
xDest213 : Bool; // Ziel befindet sich in dritten Viertel von B1
|
|
xDest214 : Bool; // Ziel befindet sich in letztem Viertel von B1
|
|
xDestB2 : Bool; // Ziel allgemein Block2
|
|
xDest221 : Bool; // Ziel befindet sich in erstem Viertel von B2
|
|
xDest222 : Bool; // Ziel befindet sich in zweitem Viertel von B2
|
|
xDest223 : Bool; // Ziel befindet sich in dritten Viertel von B2
|
|
xDest224 : Bool; // Ziel befindet sich in letztem Viertel von B2
|
|
xDestB3 : Bool; // Ziel allgemein Block3
|
|
xDest231 : Bool; // Ziel befindet sich in erstem Viertel von B3
|
|
xDest232 : Bool; // Ziel befindet sich in zweitem Viertel von B3
|
|
xDest233 : Bool; // Ziel befindet sich in dritten Viertel von B3
|
|
xDest234 : Bool; // Ziel befindet sich in letztem Viertel von B3
|
|
END_VAR
|
|
|
|
|
|
BEGIN
|
|
|
|
//ÜBERARBEITEN, NEUE TRO NAMEN
|
|
|
|
REGION Lager Aufteilung
|
|
IF #InOutCarrier.nDestination >= 21100 AND #InOutCarrier.nDestination <= 21119 THEN
|
|
#xDestB1 := TRUE;
|
|
#xDest211 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 21200 AND #InOutCarrier.nDestination <= 21217 THEN
|
|
#xDestB1 := TRUE;
|
|
#xDest212 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 21300 AND #InOutCarrier.nDestination <= 21321 THEN
|
|
#xDestB1 := TRUE;
|
|
#xDest213 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 21400 AND #InOutCarrier.nDestination <= 21413 THEN
|
|
#xDestB1 := TRUE;
|
|
#xDest214 := TRUE;
|
|
////////////////////////////
|
|
ELSIF #InOutCarrier.nDestination >= 22100 AND #InOutCarrier.nDestination <= 22119 THEN
|
|
#xDestB2 := TRUE;
|
|
#xDest221 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 22200 AND #InOutCarrier.nDestination <= 22217 THEN
|
|
#xDestB2 := TRUE;
|
|
#xDest222 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 22300 AND #InOutCarrier.nDestination <= 22321 THEN
|
|
#xDestB2 := TRUE;
|
|
#xDest223 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 22400 AND #InOutCarrier.nDestination <= 22413 THEN
|
|
#xDestB2 := TRUE;
|
|
#xDest224 := TRUE;
|
|
////////////////////////////
|
|
ELSIF #InOutCarrier.nDestination >= 23100 AND #InOutCarrier.nDestination <= 23119 THEN
|
|
#xDestB3 := TRUE;
|
|
#xDest231 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 23200 AND #InOutCarrier.nDestination <= 23217 THEN
|
|
#xDestB3 := TRUE;
|
|
#xDest232 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 23300 AND #InOutCarrier.nDestination <= 23321 THEN
|
|
#xDestB3 := TRUE;
|
|
#xDest233 := TRUE;
|
|
ELSIF #InOutCarrier.nDestination >= 23400 AND #InOutCarrier.nDestination <= 23415 THEN
|
|
#xDestB3 := TRUE;
|
|
#xDest234 := TRUE;
|
|
END_IF;
|
|
END_REGION
|
|
|
|
|
|
REGION Vergabe Direction
|
|
CASE #nInSwitchNo OF
|
|
"cSwi313.1":
|
|
REGION Switch 313.1
|
|
IF #xDestB1 OR
|
|
#xDestB2 OR
|
|
#InOutCarrier.nDestination = "cDestLvl1B1" OR
|
|
#InOutCarrier.nDestination = "cDestLvl1B2"
|
|
THEN
|
|
//RECHTS ABBIEGEN
|
|
#nOutDirection := 2;
|
|
ELSIF
|
|
#xDestB3 OR
|
|
#InOutCarrier.nDestination = "cDestLvl1B3"
|
|
THEN
|
|
//LINKS ABBIEGEN
|
|
#nOutDirection := 1;
|
|
ELSE
|
|
//FALLBACK
|
|
#nOutDirection := 0; //nicht erlaubt
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi314.1":
|
|
REGION Switch 314.1
|
|
IF #xDestB1 OR
|
|
#InOutCarrier.nDestination = "cDestLvl1B1"
|
|
THEN
|
|
//RECHTS ABBIEGEN
|
|
#nOutDirection := 2;
|
|
ELSIF #xDestB2 OR
|
|
#InOutCarrier.nDestination = "cDestLvl1B2"
|
|
THEN
|
|
//LINKS ABBIEGEN
|
|
#nOutDirection := 1;
|
|
ELSE
|
|
;//30000, 0, 300, xDestB3
|
|
#nOutDirection := 2;
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi315.1":
|
|
REGION Switch 315.1
|
|
IF #xDestB1 THEN
|
|
//LINKS ABBIEGEN
|
|
#nOutDirection := 3;
|
|
ELSE
|
|
;//30000, 0, 200, 300, xDestB2, xDestB3
|
|
#nOutDirection := 3;
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi316.1":
|
|
REGION Switch 316.1
|
|
IF #InOutCarrier.nDestination = 300 OR
|
|
#xDestB3 THEN
|
|
;//RECHTS ABBIEGEN
|
|
ELSE
|
|
;//30000, 0, 200, 300, xDestB1, xDestB2
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi317.1":
|
|
REGION Switch 317.1
|
|
IF (#InOutCarrier.nDestination = "cDestLvl1B1") OR #InOutCarrier.nDestination = 11000 THEN
|
|
#nOutDirection := 2;
|
|
ELSIF #xDestB1 THEN
|
|
#nOutDirection := 1;
|
|
ELSE
|
|
#nOutDirection := 0;
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi318.1":
|
|
REGION Switch 318.1
|
|
IF #xDest211 OR #xDest212 THEN
|
|
//RECHTS ABBIEGEN
|
|
#nOutDirection := 2;
|
|
ELSIF #xDest213 OR #xDest214 THEN
|
|
//LINKS ABBIEGEN
|
|
#nOutDirection := 1;
|
|
ELSE
|
|
#nOutDirection := 0; // undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi319.1":
|
|
REGION Switch 319.1
|
|
IF #xDest212 OR
|
|
#InOutCarrier.nDestination = 21043 OR
|
|
#InOutCarrier.nDestination = 1 OR //AMR
|
|
#InOutCarrier.nDestination = 2 //F2H
|
|
THEN
|
|
#nOutDirection := 2; // GERADE/RECHTS ABBIEGEN, Block verlassen
|
|
ELSIF #xDest211
|
|
THEN
|
|
#nOutDirection := 1; //LINKS ABBIEGEN, im Block bleiben
|
|
ELSE
|
|
#nOutDirection := 1;
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi320.1":
|
|
REGION Switch 320.1
|
|
IF #InOutCarrier.nDestination = 21043 OR #InOutCarrier.nDestination = 1 OR #InOutCarrier.nDestination = 2
|
|
THEN //provisorisch den Jam-Namen vom Ziel genommen, todo
|
|
#nOutDirection := 2;
|
|
;//GERADE/RECHTS ABBIEGEN, Block verlassen zu Ausfahrt
|
|
ELSIF #xDest211 OR #xDest212 THEN //#xDestB1
|
|
#nOutDirection := 1;
|
|
;//LINKS ABBIEGEN, im Block bleiben
|
|
ELSE
|
|
#nOutDirection := 1; // undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi321.1":
|
|
REGION Switch 321.1
|
|
IF #xDest214 THEN
|
|
#nOutDirection := 2; ; //RECHTS ABBIEGEN, im Block bleiben
|
|
ELSIF #xDest213 OR
|
|
#InOutCarrier.nDestination = 21043 OR
|
|
#InOutCarrier.nDestination = 1 OR #InOutCarrier.nDestination = 2 OR #InOutCarrier.nDestination = 3 OR #InOutCarrier.nDestination = 4
|
|
THEN
|
|
#nOutDirection := 1; //GERADE/LINKS ABBIEGEN
|
|
ELSE
|
|
#nOutDirection := 0; //undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi322.1":
|
|
REGION Switch 322.1
|
|
IF #xDest213 OR #xDest214 THEN //#xDestB1
|
|
#nOutDirection := 2; //RECHTS ABBIEGEN, im Block bleiben
|
|
ELSIF #InOutCarrier.nDestination = 21043 OR #InOutCarrier.nDestination = 1 OR #InOutCarrier.nDestination = 2 OR #InOutCarrier.nDestination = 3 OR #InOutCarrier.nDestination = 4 THEN
|
|
#nOutDirection := 1; //GERADE/LINKS ABBIEGEN, Block verlassen zu Ausfahrt
|
|
ELSE
|
|
#nOutDirection := 0; //undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi339.1":
|
|
REGION Switch 339.1
|
|
IF #InOutCarrier.nDestination = "cDestLvl1B2" THEN
|
|
#nOutDirection := 2;
|
|
//TO LEVEL 1
|
|
//RECHTS ABBIEGEN
|
|
ELSIF #xDestB2 THEN
|
|
//TO SECTION 2.2
|
|
//LINKS ABBIEGEN
|
|
#nOutDirection := 1;
|
|
ELSE
|
|
//Undefined
|
|
#nOutDirection := 0;
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi340.1":
|
|
REGION Switch 340.1
|
|
IF #xDest221 OR #xDest222 THEN
|
|
//RECHTS ABBIEGEN
|
|
#nOutDirection := 2;
|
|
ELSIF #xDest223 OR #xDest224 THEN
|
|
//LINKS ABBIEGEN
|
|
#nOutDirection := 1;
|
|
ELSE
|
|
#nOutDirection := 0; // undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi341.1":
|
|
REGION Switch 341.1
|
|
IF #xDest222 OR
|
|
#InOutCarrier.nDestination = 1 OR
|
|
#InOutCarrier.nDestination = 2
|
|
THEN
|
|
#nOutDirection := 2; // GERADE/RECHTS ABBIEGEN, Block verlassen
|
|
ELSIF #xDest221
|
|
THEN
|
|
#nOutDirection := 1; //LINKS ABBIEGEN, im Block bleiben
|
|
ELSE
|
|
#nOutDirection := 1;
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi342.1":
|
|
REGION Switch 342.1
|
|
IF #InOutCarrier.nDestination = 1 OR
|
|
#InOutCarrier.nDestination = 2
|
|
THEN
|
|
#nOutDirection := 2; //GERADE/RECHTS ABBIEGEN, Block verlassen zu Ausfahrt
|
|
ELSIF #xDest221 OR #xDest222 THEN //#xDestB1
|
|
#nOutDirection := 1;
|
|
;//LINKS ABBIEGEN, im Block bleiben
|
|
ELSE
|
|
#nOutDirection := 1;
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi343.1":
|
|
REGION Switch 343.1
|
|
IF #xDest224 THEN
|
|
#nOutDirection := 2;
|
|
; //RECHTS ABBIEGEN, im Block bleiben
|
|
ELSIF #xDest223 OR
|
|
#InOutCarrier.nDestination = 22043 OR
|
|
#InOutCarrier.nDestination = 1 OR
|
|
#InOutCarrier.nDestination = 2
|
|
THEN
|
|
#nOutDirection := 1; //GERADE/LINKS ABBIEGEN
|
|
ELSE
|
|
#nOutDirection := 2; //undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
|
|
"cSwi344.1":
|
|
REGION switch 344.1
|
|
IF #xDest223 OR #xDest224 THEN //#xDestB1
|
|
#nOutDirection := 2; //RECHTS ABBIEGEN, im Block bleiben
|
|
ELSIF #InOutCarrier.nDestination = 22043 OR
|
|
#InOutCarrier.nDestination = 1 OR
|
|
#InOutCarrier.nDestination = 2
|
|
THEN
|
|
#nOutDirection := 1; //GERADE/LINKS ABBIEGEN, Block verlassen zu Ausfahrt
|
|
ELSE
|
|
#nOutDirection := 2; //undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
|
|
"cSwi361.1":
|
|
REGION Switch 361.1
|
|
IF #InOutCarrier.nDestination = "cDestLvl1B3" THEN // Level 1.3
|
|
#nOutDirection := 1;
|
|
ELSIF #xDestB3 THEN
|
|
#nOutDirection := 2;
|
|
ELSE
|
|
#nOutDirection := 0;
|
|
END_IF;
|
|
END_REGION
|
|
|
|
"cSwi362.1":
|
|
REGION Switch 362.1
|
|
IF #xDest231 OR #xDest232 THEN
|
|
//LINKS ABBIEGEN
|
|
#nOutDirection := 1;
|
|
ELSIF #xDest233 OR #xDest234 THEN
|
|
//LINKS ABBIEGEN
|
|
#nOutDirection := 2;
|
|
ELSE
|
|
#nOutDirection := 0; // undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
|
|
|
|
"cSwi363.1":
|
|
REGION Switch 363.1
|
|
IF #xDest232 OR
|
|
#InOutCarrier.nDestination = 23023 OR
|
|
#InOutCarrier.nDestination = "cDestF2HEmpty" OR
|
|
#InOutCarrier.nDestination = "cDestInboundEmpty" OR
|
|
#InOutCarrier.nDestination = "cDestAMRLoaded" OR
|
|
#InOutCarrier.nDestination = "cDestF2HLoaded"
|
|
THEN
|
|
#nOutDirection := 1; // Block verlassen
|
|
ELSIF #xDest231
|
|
THEN
|
|
#nOutDirection := 2; //im Block bleiben
|
|
ELSE
|
|
#nOutDirection := 2;
|
|
END_IF;
|
|
END_REGION
|
|
"cSwi364.1":
|
|
REGION Switch 364.1
|
|
IF #InOutCarrier.nDestination = 23023 OR
|
|
#InOutCarrier.nDestination = 2 OR
|
|
#InOutCarrier.nDestination = "cDestF2HEmpty" OR
|
|
#InOutCarrier.nDestination = "cDestInboundEmpty" OR
|
|
#InOutCarrier.nDestination = "cDestAMRLoaded" OR
|
|
#InOutCarrier.nDestination = "cDestF2HLoaded"
|
|
THEN //provisorisch den Jam-Namen vom Ziel genommen, todo
|
|
#nOutDirection := 1;
|
|
;//Block verlassen zu Ausfahrt
|
|
ELSIF #xDest231 OR #xDest232 THEN
|
|
#nOutDirection := 2;
|
|
;//LINKS ABBIEGEN, im Block bleiben
|
|
ELSE
|
|
#nOutDirection := 2; // undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
|
|
"cSwi365.1":
|
|
REGION Switch 365.1
|
|
IF #InOutCarrier.nDestination = 23023 OR #xDest233 OR
|
|
#InOutCarrier.nDestination = "cDestF2HEmpty" OR
|
|
#InOutCarrier.nDestination = "cDestInboundEmpty" OR
|
|
#InOutCarrier.nDestination = "cDestAMRLoaded" OR
|
|
#InOutCarrier.nDestination = "cDestF2HLoaded"
|
|
THEN //provisorisch den Jam-Namen vom Ziel genommen, todo
|
|
#nOutDirection := 2
|
|
;//GERADE/RECHTS ABBIEGEN, Block verlassen zu Ausfahrt
|
|
ELSIF #xDest234 THEN
|
|
#nOutDirection := 1;
|
|
;//LINKS ABBIEGEN, im Block bleiben
|
|
ELSE
|
|
#nOutDirection := 1; // undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
|
|
"cSwi366.1":
|
|
REGION Switch 366.1
|
|
IF #InOutCarrier.nDestination = 23023 OR
|
|
#InOutCarrier.nDestination = 1 OR
|
|
#InOutCarrier.nDestination = 2 OR
|
|
#InOutCarrier.nDestination = "cDestF2HEmpty" OR
|
|
#InOutCarrier.nDestination = "cDestInboundEmpty" OR
|
|
#InOutCarrier.nDestination = "cDestAMRLoaded" OR
|
|
#InOutCarrier.nDestination = "cDestF2HLoaded"
|
|
THEN //provisorisch den Jam-Namen vom Ziel genommen, todo
|
|
#nOutDirection := 2;
|
|
;//GERADE/RECHTS ABBIEGEN, Block verlassen zu Ausfahrt
|
|
ELSIF #xDest233 OR #xDest234 THEN
|
|
#nOutDirection := 1;
|
|
;//LINKS ABBIEGEN, im Block bleiben
|
|
ELSE
|
|
#nOutDirection := 1; // undefined, todo
|
|
END_IF;
|
|
END_REGION
|
|
ELSE
|
|
;
|
|
END_CASE;
|
|
END_REGION
|
|
|
|
|
|
|
|
|
|
|
|
END_FUNCTION
|
|
|