FUNCTION_BLOCK "FB_PriorityLogic"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR 
      fbPrioTRO101_TRO106_TRO107 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
      fbPrioTRO102_TRO117 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
      fbPrioTRO111_TRO112 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
      fbPrioTRO124_TRO130 : "Fb_PriorityManagerV2";
   END_VAR

   VAR_TEMP 
      todo : "udt_InterruptParameter";
   END_VAR


BEGIN
	REGION Priority-Manager 
	    REGION Kreuzung TRO101/TRO106/TRO107
	        #fbPrioTRO101_TRO106_TRO107(xInQuit := "cTodoFalse",
	                                    tIn_ReleaseTime1 := T#25s,
	                                    tIn_ReleaseTime2 := t#25s,
	                                    tIn_ReleaseTime3 := t#25s,
	                                    xInClearJam := TRUE,
	                                    udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO101.TroOut,
	                                    udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO106.TroOut,
	                                    udtIn_Source3Req := "DB_Prozessdaten".stPriorityManager.udt_TRO107.TroOut,
	                                    udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO101.TroIn,
	                                    udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO106.TroIn,
	                                    udtOut_Source3Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO107.TroIn,
	                                    udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO101_TRO106_TRO107,
	                                    udt_InterruptParameter := #todo);
	    END_REGION
	    
	    REGION Kreuzung TRO102/TRO117
	        #fbPrioTRO102_TRO117(xInQuit := "cTodoFalse",
	                             tIn_ReleaseTime1 := T#25s,
	                             tIn_ReleaseTime2 := t#25s,
	                             tIn_SourceChangeDelayTime := T#5s,
	                             xInClearJam := TRUE,
	                             udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO102.TroOut,
	                             udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO117.TroOut,
	                             udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO102.TroIn,
	                             udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO117.TroIn,
	                             udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO102_TRO117,
	                             udt_InterruptParameter := #todo);
	    END_REGION
	    
	    
	    REGION Kreuzung TRO111/TRO112
	        #fbPrioTRO111_TRO112(xInQuit := "cTodoFalse",
	                             tIn_ReleaseTime1 := T#25s,
	                             tIn_ReleaseTime2 := t#25s,
	                             tIn_SourceChangeDelayTime := T#5s,
	                             xInClearJam := FALSE,
	                             udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO111.TroOut,
	                             udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO112.TroOut,
	                             udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO111.TroIn,
	                             udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO112.TroIn,
	                             udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO111_TRO112,
	                             udt_InterruptParameter := #todo);
	    END_REGION
	    
	    REGION Kreuzung TRO124/TRO130 NIU
	        // #fbPrioTRO124_TRO130(xInQuit := "cTodoFalse",
	        //                      tIn_ReleaseTime := T#10s,
	        //                      tIn_SourceChangeDelayTime := T#5s,
	        //                      xInClearJam := FALSE,
	        //                      udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO130.TroOut,
	        //                      udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO124.TroOut,
	        //                      udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO130.TroIn,
	        //                      udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO124.TroIn,
	        //                      udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO124_TRO130,
	        //                      udt_InterruptParameter := #todo);
	    END_REGION
	END_REGION
END_FUNCTION_BLOCK

