diff --git a/src/TcoDrivesBeckhoff/src/TcoDrivesBeckhoff.Wpf/TcoDriveSimple/TcoDriveSimpleServiceView.xaml b/src/TcoDrivesBeckhoff/src/TcoDrivesBeckhoff.Wpf/TcoDriveSimple/TcoDriveSimpleServiceView.xaml index 1074b41f0..8991cc058 100644 --- a/src/TcoDrivesBeckhoff/src/TcoDrivesBeckhoff.Wpf/TcoDriveSimple/TcoDriveSimpleServiceView.xaml +++ b/src/TcoDrivesBeckhoff/src/TcoDrivesBeckhoff.Wpf/TcoDriveSimple/TcoDriveSimpleServiceView.xaml @@ -187,7 +187,27 @@ - + + + + + + + + + + + + + + + + + diff --git a/src/TcoDrivesBeckhoff/src/XaeTcoDrivesBeckhoff/TcoDrivesBeckhoff/POUs/Prototypes/TcoDriveSimple/TcoDriveSimple.TcPOU b/src/TcoDrivesBeckhoff/src/XaeTcoDrivesBeckhoff/TcoDrivesBeckhoff/POUs/Prototypes/TcoDriveSimple/TcoDriveSimple.TcPOU index 018002acb..d204d6eb8 100644 --- a/src/TcoDrivesBeckhoff/src/XaeTcoDrivesBeckhoff/TcoDrivesBeckhoff/POUs/Prototypes/TcoDriveSimple/TcoDriveSimple.TcPOU +++ b/src/TcoDrivesBeckhoff/src/XaeTcoDrivesBeckhoff/TcoDrivesBeckhoff/POUs/Prototypes/TcoDriveSimple/TcoDriveSimple.TcPOU @@ -444,11 +444,15 @@ PROPERTY Override : LREAL]]> METHOD Restore : ITcoRestorable]]> 0.0 AND _override<=100.0) THEN + _override := 100; +END_IF RestoreTasks(); _resetTask.Restore();]]> diff --git a/src/TcoTixonFeeding/README.md b/src/TcoTixonFeeding/README.md index 0a96149ed..cf52372b8 100644 --- a/src/TcoTixonFeeding/README.md +++ b/src/TcoTixonFeeding/README.md @@ -71,8 +71,15 @@ The package consists of a PLC library providing control logic and its .NET twin | ErrorTimeHopper | TIME | T#0S | | OutOfBoxSensorDisabled | BOOL | FALSE | | SeparatorHasWorkPosition | BOOL | FALSE | +| BufferStuckedOnFillingSensor | TIME | T#30S | --- +### NOTE! + This option BufferStuckedOnFillingSensor is introduced due screw stuck on Filling sensor. (Required new step feed to push this stucked component) See picture below (Thx AdamPitak) + +![](assets/stuckedscrew.png) + + ## Tixon Vibro ![](assets/TixonVibro_side_signals.png) diff --git a/src/TcoTixonFeeding/assets/stuckedscrew.png b/src/TcoTixonFeeding/assets/stuckedscrew.png new file mode 100644 index 000000000..27f8df437 Binary files /dev/null and b/src/TcoTixonFeeding/assets/stuckedscrew.png differ diff --git a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/DUTs/TcoTixonGenericConfig.TcDUT b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/DUTs/TcoTixonGenericConfig.TcDUT index d1ffd5743..f99216dbc 100644 --- a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/DUTs/TcoTixonGenericConfig.TcDUT +++ b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/DUTs/TcoTixonGenericConfig.TcDUT @@ -20,9 +20,11 @@ STRUCT BufferIdleTime : TIME := T#5S; {attribute addProperty Name "<#Buffer full blow time after#> - T_BUF_BLOW_FULL"} BufferBlowFullTime : TIME := T#1S; + {attribute addProperty Name "<#Buffer blow active #>"} BufferBlowActive : BOOL := TRUE; + {attribute addProperty Name "<#Time when component in separator #> - T_BUFSEP_ON"} TimeToComponentInSeparator : TIME := T#300MS; {attribute addProperty Name "<#Time when component is out of separator #> - T_FLY_OFF"} diff --git a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/DUTs/TixonStep/TcoTixonStep_Config_v_1_x_x.TcDUT b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/DUTs/TixonStep/TcoTixonStep_Config_v_1_x_x.TcDUT index 79ef07e97..ba7866597 100644 --- a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/DUTs/TixonStep/TcoTixonStep_Config_v_1_x_x.TcDUT +++ b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/DUTs/TixonStep/TcoTixonStep_Config_v_1_x_x.TcDUT @@ -24,6 +24,8 @@ {attribute addProperty Name "<#Separator has work position (usualy TRUE when pushing to up direction)#>"} SeparatorHasWorkPosition : BOOL := FALSE; + {attribute addProperty Name "<#Buffer stucked on filing sensor#> - T_BUF_STUCK_FIL_SENSOR"} + BufferStuckedOnFillingSensor : TIME := T#20S; END_STRUCT END_TYPE ]]> diff --git a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TiconPickStep/TcoTixonPickStep_v_1_x_x.TcPOU b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TiconPickStep/TcoTixonPickStep_v_1_x_x.TcPOU index 0a9207449..c377bcbf2 100644 --- a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TiconPickStep/TcoTixonPickStep_v_1_x_x.TcPOU +++ b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TiconPickStep/TcoTixonPickStep_v_1_x_x.TcPOU @@ -107,6 +107,17 @@ UpdateControl();]]> _bufferTask.AutoRestore:=false;]]> + + + + + + + + + @@ -194,6 +205,17 @@ _hopperTask.AutoRestore:=false; ]]> + + + + + + + + + @@ -231,6 +253,18 @@ _hopperTask.Restore(); ]]> + + + + + + + + + + + + + + + + + + _bufferTask.AutoRestore:=false;]]> + + + + + + + + + @@ -193,6 +204,17 @@ _hopperTask.AutoRestore:=false; ]]> + + + + + + + + + @@ -231,6 +253,18 @@ _hopperTask.Restore(); ]]> + + + + + + + + + _bufferTask.AutoRestore:=false;]]> + + + + + + + + + @@ -180,6 +191,17 @@ _hopperTask.AutoRestore:=false; ]]> + + + + + + + + + @@ -215,6 +237,18 @@ _hopperTask.Restore(); ]]> + + + + + + + + + ').Append(_varInfo.Symbol).ToString()); - IF inoStatus.SeparatorHomePos THEN + + THIS^.Messenger.OnCondition(_infoTimer.Q AND inoStatus.ComponentOutOfBox AND NOT inoConfig.OutOfBoxSensorDisabled ).Error(_sb.Clear().Append('<#Check component at the separator output. The component is probably stuck!.#>').Append(_varInfo.Symbol).ToString()).Pin(); + IF _infoTimer.Q AND inoStatus.ComponentOutOfBox and NOT inoConfig.OutOfBoxSensorDisabled THEN + THIS^.ThrowWhen(_errorTimer.Q ); + ELSIF inoStatus.SeparatorHomePos AND NOT inoStatus.ComponentOutOfBox THEN _progress := _progress + 1; _timer(In:=FALSE); END_IF; diff --git a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonStep/Tasks/Step/TcoTixonStepTask.TcPOU b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonStep/Tasks/Step/TcoTixonStepTask.TcPOU index 18a28a132..b1d3a7a14 100644 --- a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonStep/Tasks/Step/TcoTixonStepTask.TcPOU +++ b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonStep/Tasks/Step/TcoTixonStepTask.TcPOU @@ -11,6 +11,7 @@ END_VAR VAR _timerIsFull : TON; + _timerIsStucked : TON; END_VAR]]> IF _progress = 1 THEN Messenger.Debug('<#Waiting for buffer empty#>'); _timer(IN:=NOT inoStatus.FillingSensor,Pt:=inoConfig.BufferEmptyTime); + _timerIsStucked(in:=inoConfig.BufferStuckedOnFillingSensor<>T#0S AND inoControl.FeedingA AND inoStatus.FillingSensor AND NOT inoStatus.SeparatorPresent,Pt:=inoConfig.BufferStuckedOnFillingSensor); IF _timer.Q AND inoControl.FeedingA THEN _progress := _progress + 1; _timer(In:=FALSE); + ELSIF _timerIsStucked.Q AND inoControl.FeedingA AND inoStatus.FillingSensor AND NOT inoStatus.SeparatorPresent THEN + _progress := _progress + 1; + _timer(In:=FALSE); END_IF END_IF; IF _progress = 2 THEN @@ -146,7 +151,8 @@ THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore ac '; END_IF; CallTimers(FALSE); -_timerIsFull(In:=FALSE);]]> +_timerIsFull(In:=FALSE); +_timerIsStucked(in:=FALSE);]]> @@ -164,6 +170,7 @@ METHOD Restore : ITcoRestorable]]> diff --git a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonStep/TcoTixonStep_v_1_x_x.TcPOU b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonStep/TcoTixonStep_v_1_x_x.TcPOU index 02199402e..0ed94a1ac 100644 --- a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonStep/TcoTixonStep_v_1_x_x.TcPOU +++ b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonStep/TcoTixonStep_v_1_x_x.TcPOU @@ -113,6 +113,17 @@ UpdateControl();]]> _bufferTask.AutoRestore:=false;]]> + + + + + + + + + @@ -200,6 +211,17 @@ _hopperTask.AutoRestore:=false; ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + IF _progress = 1 THEN inoControl.SepareComponent:=FALSE; _varInfo :=__VARINFO( inoStatus.SeparatorHomePos); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.SeparatorHomePos).Warning(_sb.Clear().Append('<#Waiting for #>').Append(_varInfo.Symbol).ToString()); - IF inoStatus.SeparatorHomePos THEN + THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.SeparatorHomePos).Warning(_sb.Clear().Append('<#Waiting for #>').Append(_varInfo.Symbol).ToString()); + THIS^.Messenger.OnCondition(_infoTimer.Q AND inoStatus.ComponentOutOfBox AND NOT inoConfig.OutOfBoxSensorDisabled ).Error(_sb.Clear().Append('<#Check component at the separator output. The component is probably stuck!.#>').Append(_varInfo.Symbol).ToString()).Pin(); + IF _infoTimer.Q AND inoStatus.ComponentOutOfBox and NOT inoConfig.OutOfBoxSensorDisabled THEN + THIS^.ThrowWhen(_errorTimer.Q ); + ELSIF inoStatus.SeparatorHomePos AND NOT inoStatus.ComponentOutOfBox THEN _progress := _progress + 1; _timer(In:=FALSE); END_IF; diff --git a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonVibro/TcoTixonVibro_v_1_x_x.TcPOU b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonVibro/TcoTixonVibro_v_1_x_x.TcPOU index b062c5f05..8829ddb78 100644 --- a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonVibro/TcoTixonVibro_v_1_x_x.TcPOU +++ b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/TcoTixonFeeding/POUs/Prototypes/TixonVibro/TcoTixonVibro_v_1_x_x.TcPOU @@ -114,6 +114,17 @@ UpdateControl();]]> _bufferTask.AutoRestore:=false;]]> + + + + + + + + + @@ -190,6 +201,17 @@ _hopperTask.AutoRestore:=false; ]]> + + + + + + + + + + + + + + + + + + END_IF CASE _testedTixon OF + eTypeOfTixon.TixonStep: + _tixonStepFeeder( inControllerInAuto:=GVL_iXlinker.ECAT_x.EK1200.IA1.Channel_1.Input , inNotEmptyFeeder:=GVL_iXlinker.ECAT_x.EK1200.IA1.Channel_2.Input , @@ -114,6 +116,7 @@ CASE _testedTixon OF outHopper=>GVL_iXlinker.ECAT_x.EK1200.qA1.Channel_6.Output, outStepperValve=>GVL_iXlinker.ECAT_x.EK1200.qA1.Channel_7.Output, outShotComponent=>GVL_iXlinker.ECAT_x.EK1200.qA1.Channel_8.Output ); + _tixonStepFeeder.Service(); diff --git a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/XaeTcoTixonFeeding.tsproj b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/XaeTcoTixonFeeding.tsproj index bb6028c96..f9b697f7a 100644 --- a/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/XaeTcoTixonFeeding.tsproj +++ b/src/TcoTixonFeeding/src/XaeTcoTixonFeeding/XaeTcoTixonFeeding.tsproj @@ -200,7 +200,7 @@ - + TcoTixonFeedingTests Instance {08500001-0000-0000-F000-000000000064}