Obsidean_VM/04-SIDEL/06 - E5.007363 - Modifica O.../Source/source/CIPLocal_ExecSimpleCIP.md

6.4 KiB

FUNCTION "CIPLocal_ExecSimpleCIP" : Void
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.0
   VAR_INPUT 
      Start : Bool;
      Hold : Bool;
      StepUp : Bool;
      StepDown : Bool;
      Inizialize : Bool;
      Clock : Bool;
   END_VAR

   VAR_TEMP 
      mInizialize_ONS : Bool;
      mStepUp_ONS : Bool;
      mStepDown_ONS : Bool;
      mClock_ONS : Bool;
      mRecipeChanged_ONS : Bool;
      mCycleCount : Int;
      mCIPTotalTime : Int;
      mStepTotalTime : Int;
      i : Int;
      j : Int;
   END_VAR


BEGIN
	
	
	"ONS_R"(Enable_ONS := #Inizialize,  
	    Aux_ONS := "mInizialize_ONS",
	    ONS_R => #mInizialize_ONS );  
	"ONS_R"(Enable_ONS := #StepUp AND NOT "CIP_Program_Variables".Status.Completed,  
	    Aux_ONS := "mStepUp_ONS",
	    ONS_R => #mStepUp_ONS );  
	"ONS_R"(Enable_ONS := #StepDown AND NOT "CIP_Program_Variables".Status.Inizialized,  
	    Aux_ONS := "mStepDown_ONS",
	    ONS_R => #mStepDown_ONS );  
	"ONS_R"(Enable_ONS := #Clock,  
	    Aux_ONS := "mClock_ONS",
	    ONS_R => #mClock_ONS );  
	IF #mInizialize_ONS THEN
	    "CIPLocal_ProgInizialize"();
	    "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram :="HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[1] ;
	ELSE
	    "CIP_Program_Variables".General_Data.ActualSimpleNum := LIMIT (MN:= 1, IN:= "CIP_Program_Variables".General_Data.ActualSimpleNum, MX:= "CIP_Program_Variables".General_Data.CIPMaxSimpleNum) ;
	    "CIP_Program_Variables".General_Data.ActualStepNum := LIMIT (MN:= 1, IN:= "CIP_Program_Variables".General_Data.ActualStepNum, MX:= "CIP_Program_Variables".General_Data.CIPMaxStepNum) ;
	    IF #mStepUp_ONS THEN
	        "CIPLocal_ProgStepUp"() ;
	    END_IF ;
	    IF #mStepDown_ONS THEN
	        "CIPLocal_ProgStepDown"() ;
	    END_IF ;
	    #i := "CIP_Program_Variables".General_Data.ActualSimpleNum ;
	    "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[#i], 
	        i_StepNumber:= "CIP_Program_Variables".General_Data.ActualStepNum, o_Step=> "CIP_Program_Variables".mCIP_ActualStep);
	    "CIP_Program_Variables".General_Data.mStepTimeValue := "CIP_Program_Variables".mCIP_ActualStep.CIP_StepTime ;
	    #mCycleCount := 0 ;
	    WHILE "CIP_Program_Variables".General_Data.mStepTimeValue = 0 AND NOT "CIP_Program_Variables".Status.Completed AND NOT "CIP_Program_Variables".Status.Inizialized
	        AND NOT (#mCycleCount>"CIP_Program_Variables".General_Data.CIPMaxSimpleNum*"CIP_Program_Variables".General_Data.CIPMaxStepNum) DO
	        #mCycleCount := #mCycleCount + 1 ;
	        IF #mStepUp_ONS OR  ("CIP_Program_Variables".CIP_Run.Running AND "CIP_Program_Variables".General_Data.mStepTimeValue = 0) THEN
	            "mSteppingUp" := TRUE ;
	        END_IF ;
	        IF #mStepDown_ONS THEN
	            "mSteppingDown" := TRUE ;
	        END_IF ;
	        IF "mSteppingUp" THEN
	            "CIPLocal_ProgStepUp"() ;
	        ELSIF NOT ("mSteppingUp" OR "mSteppingDown") THEN
	            EXIT ;
	        END_IF ;
	        IF "mSteppingDown" THEN
	            "CIPLocal_ProgStepDown"() ;
	        ELSIF NOT ("mSteppingUp" OR "mSteppingDown") THEN
	            EXIT ;
	        END_IF ;
	        #i := "CIP_Program_Variables".General_Data.ActualSimpleNum ;
	        "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[#i], 
	            i_StepNumber:= "CIP_Program_Variables".General_Data.ActualStepNum, o_Step=> "CIP_Program_Variables".mCIP_ActualStep);
	        "CIP_Program_Variables".General_Data.mStepTimeValue := "CIP_Program_Variables".mCIP_ActualStep.CIP_StepTime ;
	    END_WHILE ;
	    "mSteppingUp" := FALSE ;
	    "mSteppingDown" := FALSE ;
	    IF #mStepDown_ONS THEN
	        IF "CIP_Program_Variables".General_Data.StepActualTime=0 THEN
	            "CIP_Program_Variables".General_Data.TotalElapsedTime := "CIP_Program_Variables".General_Data.TotalElapsedTime - "CIP_Program_Variables".General_Data.mStepTimeValue ;
	        ELSE
	            "CIP_Program_Variables".General_Data.TotalElapsedTime := "CIP_Program_Variables".General_Data.TotalElapsedTime - "CIP_Program_Variables".General_Data.StepActualTime ;
	        END_IF ;
	        "CIP_Program_Variables".General_Data.StepActualTime := 0 ;
	    END_IF ;
	    IF #Start THEN
	        "CIPLocal_ExecStep"() ;
	    END_IF ;
	END_IF ;
	"ONS_R"(Enable_ONS := ("HMI_Variables_Cmd".RecipeCIP.Download AND "HMI_Variables_Cmd".RecipeCIP.Work_Rec_is_Active_Recip) OR #mInizialize_ONS,  
	    Aux_ONS := "mRecipeChanged_ONS",
	    ONS_R => #mRecipeChanged_ONS );  
	IF #mRecipeChanged_ONS THEN
	    #mCIPTotalTime := 0 ;
	    FOR #i:=1 TO "CIP_Program_Variables".General_Data.CIPMaxSimpleNum DO
	        FOR #j:= 1 TO "CIP_Program_Variables".General_Data.CIPMaxStepNum DO
	            "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[#i],i_StepNumber:= #j, 
	                o_Step=> "CIP_Program_Variables".mCIP_ActualStep);
	            #mCIPTotalTime := #mCIPTotalTime + "CIP_Program_Variables".mCIP_ActualStep.CIP_StepTime ;
	        END_FOR ;
	    END_FOR ;
	    "HMI_Local_CIP_Variables".CIP_AnalogValues._TotalTime := #mCIPTotalTime ;
	END_IF ;
	#mStepTotalTime := 0 ;
	FOR #j:= 1 TO "CIP_Program_Variables".General_Data.CIPMaxStepNum DO
	    "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram, i_StepNumber:= #j, o_Step=> "CIP_Program_Variables".mCIP_ActualStep);
	    #mStepTotalTime := #mStepTotalTime + "CIP_Program_Variables".mCIP_ActualStep.CIP_StepTime ;
	END_FOR ;
	"HMI_Local_CIP_Variables".CIP_AnalogValues._StepTime := #mStepTotalTime ;
	"HMI_Local_CIP_Variables".CIP_AnalogValues._StepElapsedTime := "CIP_Program_Variables".General_Data.mStepTotalActualTime ;
	"HMI_Local_CIP_Variables".CIP_AnalogValues._ElapsedTime := LIMIT (MN:=0, IN:="CIP_Program_Variables".General_Data.TotalElapsedTime, MX:="CIP_Program_Variables".General_Data.TotalElapsedTime ) ;
	"HMI_Local_CIP_Variables".CIP_AnalogValues._StepNum := "CIP_Program_Variables".General_Data.ActualSimpleNum ;
	"HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram.CIP_SimpleCode := "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog["CIP_Program_Variables".General_Data.ActualSimpleNum].CIP_SimpleCode ;
	"HMI_Local_CIP_Variables".CIP_SimpleEditType := "HMI_Local_CIP_Variables".Cip_Recipe.EditLinkProgram.CIP_Simple_Prog["HMI_Local_CIP_Variables".Cip_SimpleEditPhaseNum].CIP_SimpleCode ;
	
	
END_FUNCTION