6.4 KiB
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