FUNCTION_BLOCK "FB_PriorityLogic"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR 
      fbPrioTRO501_TRO503_TRO529 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
      fbPrioTRO505_TRO509 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
      fbPrioTRO510_TRO513 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
      fbPrioTRO514_TRO517 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
      fbPrioTRO518_TRO521 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
      fbPrioTRO522_TRO525 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
   END_VAR

   VAR_TEMP 
      todo : "udt_InterruptParameter";
   END_VAR


BEGIN
	REGION Priority-Manager 
	    REGION Kreuzung TRO501/TRO503/TRO529
	        //TODO 501 und 503 sollen abwechselnd fahren z.B. zeitgesteuert, 529 soll interrupt machen (bekommt prio da händische freigabe) 
	        #fbPrioTRO501_TRO503_TRO529(xInQuit := "cTodoFalse",
	                                    tIn_ReleaseTime1 := T#10s,
	                                    tIn_ReleaseTime2 := T#10s,
	                                    xInClearJam := FALSE,
	                                    udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO501.TroOut,
	                                    udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO503.TroOut,
	                                 //   udtIn_Source3Req := "DB_Prozessdaten".stPriorityManager.udt_TRO529.TroOut,
	                                    udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO501.TroIn,
	                                    udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO503.TroIn,
	                              //      udtOut_Source3Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO529.TroIn,
	                                    udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO501_TRO503_TRO529,
	                                    udt_InterruptParameter := #todo);
	    END_REGION
	    
	    REGION Kreuzung TRO505/TRO509
	        #fbPrioTRO505_TRO509(xInQuit := "cTodoFalse",
	                             tIn_ReleaseTime1 := T#10s,
	                             tIn_ReleaseTime2 := T#10s,
	                             xInClearJam := FALSE,
	                             udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO505.TroOut,
	                             udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO509.TroOut,
	                             udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO505.TroIn,
	                             udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO509.TroIn,
	                             udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO505_TRO509,
	                             udt_InterruptParameter := #todo);
	    END_REGION
	    
	    
	    REGION Kreuzung TRO510/TRO513
	        #fbPrioTRO510_TRO513(xInQuit := "cTodoFalse",
	                             tIn_ReleaseTime1 := T#10s,
	                             tIn_ReleaseTime2 := T#10s,
	                             xInClearJam := FALSE,
	                             udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO510.TroOut,
	                             udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO513.TroOut,
	                             udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO510.TroIn,
	                             udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO513.TroIn,
	                             udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO510_TRO513,
	                             udt_InterruptParameter := #todo);
	    END_REGION
	    
	    REGION Kreuzung TRO514/TRO517
	        #fbPrioTRO514_TRO517(xInQuit := "cTodoFalse",
	                             tIn_ReleaseTime1 := T#10s,
	                             tIn_ReleaseTime2 := T#10s,
	                             xInClearJam := FALSE,
	                             udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO514.TroOut,
	                             udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO517.TroOut,
	                             udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO514.TroIn,
	                             udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO517.TroIn,
	                             udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO514_TRO517,
	                             udt_InterruptParameter := #todo);
	    END_REGION
	    
	    REGION Kreuzung TRO518/TRO521
	        #fbPrioTRO518_TRO521(xInQuit := "cTodoFalse",
	                             tIn_ReleaseTime1 := T#10s,
	                             tIn_ReleaseTime2 := T#10s,
	                             xInClearJam := FALSE,
	                             udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO518.TroOut,
	                             udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO521.TroOut,
	                             udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO518.TroIn,
	                             udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO521.TroIn,
	                             udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO518_TRO521,
	                             udt_InterruptParameter := #todo);
	    END_REGION
	    
	    REGION Kreuzung TRO522/TRO525
	        #fbPrioTRO522_TRO525(xInQuit := "cTodoFalse",
	                             tIn_ReleaseTime1 := T#10s,
	                             tIn_ReleaseTime2 := T#10s,
	                             xInClearJam := FALSE,
	                             udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO522.TroOut,
	                             udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO525.TroOut,
	                             udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO522.TroIn,
	                             udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO525.TroIn,
	                             udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO522_TRO525,
	                             udt_InterruptParameter := #todo);
	    END_REGION
	    
	END_REGION
END_FUNCTION_BLOCK

