Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

Commit 02d2b04

Browse files
[BUG]Provide blocking information in Cylinders if suspend methods are called more than once. (#760)
* Create draft PR for #759 * * provide blocking information into service view, fixed if suspend method is called more than one * + Do not render Tasks GroupBox if there are no tasks in component in generic service view --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: peterbarancek <62284244+peterbarancek@users.noreply.github.com>
1 parent 383c4bf commit 02d2b04

File tree

4 files changed

+67
-17
lines changed

4 files changed

+67
-17
lines changed

src/TcoCore/src/TcoCore.Wpf/TcoComponent/TcoComponentServiceView.xaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@
7676

7777
<RowDefinition />
7878
</Grid.RowDefinitions>
79-
<GroupBox Grid.ColumnSpan="2" Margin="10,0" Padding="10" Header="{x:Static p:strings.Tasks}" >
79+
<GroupBox Grid.ColumnSpan="2" Margin="10,0" Padding="10" Header="{x:Static p:strings.Tasks}"
80+
Visibility="{Binding HasTasks,Converter={tcoCore:BooleanToVisibilityConverter}}">
8081
<ItemsControl ItemsPanel="{StaticResource HorizontalWraped}" HorizontalAlignment="Left" ItemsSource="{Binding Tasks}">
8182

8283
<ItemsControl.ItemTemplate>

src/TcoCore/src/TcoCoreConnector/pex/TcoComponent/TcoComponent.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ public bool HasComponents
4646
get { return Components.Count()>0; }
4747
}
4848

49-
49+
public bool HasTask
50+
{
51+
get { return Tasks.Count() > 0; }
52+
}
5053

5154
public object StatusControl
5255
{

src/TcoPneumatics/src/XaeTcoPneumatics/TcoPneumatics/POUs/Cylinders/TcoCylinder.TcPOU

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ VAR
1515
increment: INT;
1616
_suspendedHome:BOOL;
1717
_suspendedWork:BOOL;
18+
{attribute 'hide'}
19+
_suspendedHomeCounter:INT;
20+
{attribute 'hide'}
21+
_suspendedWorkCounter:INT;
1822
END_VAR
1923
VAR
2024
_config : TcoCylinderConfig;
@@ -23,6 +27,8 @@ VAR
2327
END_VAR]]></Declaration>
2428
<Implementation>
2529
<ST><![CDATA[SUPER^(inoAtHomePos := inoAtHomePos, inoAtWorkPos := inoAtWorkPos, inoToHomePos := inoToHomePos, inoToWorkPos := inoToWorkPos);
30+
_suspendedHomeCounter:=0;
31+
_suspendedWorkCounter:=0;
2632
2733
2834
IF(_atHomePos AND _atWorkPos) THEN Messenger.Error('<#Home and work position sensors are both active. Check the position of sensors!#>'); END_IF;
@@ -309,7 +315,10 @@ VAR
309315
_signalInfo : TcoSignalInfo;
310316
END_VAR]]></Declaration>
311317
<Implementation>
312-
<ST><![CDATA[_suspendedHome:=inoDisableCondition;
318+
<ST><![CDATA[IF inoDisableCondition THEN
319+
_suspendedHomeCounter:=_suspendedHomeCounter+1;
320+
END_IF
321+
_suspendedHome:=_suspendedHomeCounter>0;
313322
314323
IF (_toHomePos OR _moveHomeDefault.Busy) AND inoDisableCondition THEN
315324
_signalInfo.GetSignalInfo(SIZEOF(inoDisableCondition), ADR(inoDisableCondition));
@@ -328,7 +337,10 @@ VAR_INPUT
328337
END_VAR
329338
]]></Declaration>
330339
<Implementation>
331-
<ST><![CDATA[_suspendedHome:=inDisableCondition;
340+
<ST><![CDATA[IF inDisableCondition THEN
341+
_suspendedHomeCounter:=_suspendedHomeCounter+1;
342+
END_IF
343+
_suspendedHome:=_suspendedHomeCounter>0;
332344
333345
IF (_toHomePos OR _moveHomeDefault.Busy) AND inDisableCondition THEN
334346
Messenger.Warning(CONCAT('<#Movement suspended due to#> : ' , inMessage));
@@ -366,7 +378,10 @@ VAR
366378
_signalInfo : TcoSignalInfo;
367379
END_VAR]]></Declaration>
368380
<Implementation>
369-
<ST><![CDATA[_suspendedHome:=inoDisableCondition;
381+
<ST><![CDATA[IF inoDisableCondition THEN
382+
_suspendedHomeCounter:=_suspendedHomeCounter+1;
383+
END_IF
384+
_suspendedHome:=_suspendedHomeCounter>0;
370385
371386
IF (_toHomePos OR _moveHomeDefault.Busy) AND not inoDisableCondition THEN
372387
_signalInfo.GetSignalInfo(SIZEOF(inoDisableCondition), ADR(inoDisableCondition));
@@ -405,7 +420,11 @@ VAR
405420
_signalInfo : TcoSignalInfo;
406421
END_VAR]]></Declaration>
407422
<Implementation>
408-
<ST><![CDATA[_suspendedWork:=inoDisableCondition;
423+
<ST><![CDATA[IF inoDisableCondition THEN
424+
_suspendedWorkCounter:=_suspendedWorkCounter+1;
425+
END_IF
426+
_suspendedWork:=_suspendedWorkCounter>0;
427+
409428
IF (_toWorkPos OR _moveWorkDefault.Busy) AND inoDisableCondition THEN
410429
_signalInfo.GetSignalInfo(SIZEOF(inoDisableCondition), ADR(inoDisableCondition));
411430
Messenger.Warning(CONCAT('<#Movement suspended due to#> : ' , _signalInfo.SymbolPath));
@@ -423,7 +442,10 @@ VAR_INPUT
423442
END_VAR
424443
]]></Declaration>
425444
<Implementation>
426-
<ST><![CDATA[_suspendedWork := inDisableCondition;
445+
<ST><![CDATA[IF inDisableCondition THEN
446+
_suspendedWorkCounter:=_suspendedWorkCounter+1;
447+
END_IF
448+
_suspendedWork:=_suspendedWorkCounter>0;
427449
428450
IF (_toWorkPos OR _moveWorkDefault.Busy) AND inDisableCondition THEN
429451
Messenger.Warning(CONCAT('<#Movement suspended due to#> : ', inMessage));
@@ -463,7 +485,10 @@ VAR
463485
_signalInfo : TcoSignalInfo;
464486
END_VAR]]></Declaration>
465487
<Implementation>
466-
<ST><![CDATA[_suspendedWork := inoDisableCondition;
488+
<ST><![CDATA[IF inoDisableCondition THEN
489+
_suspendedWorkCounter:=_suspendedWorkCounter+1;
490+
END_IF
491+
_suspendedWork:=_suspendedWorkCounter>0;
467492
468493
IF (_toWorkPos OR _moveWorkDefault.Busy) AND not inoDisableCondition THEN
469494
_signalInfo.GetSignalInfo(SIZEOF(inoDisableCondition), ADR(inoDisableCondition));

src/TcoPneumatics/src/XaeTcoPneumatics/TcoPneumatics/POUs/Cylinders/TcoDoubleCylinder.TcPOU

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ VAR
1515
increment : INT;
1616
_suspendedHome : BOOL;
1717
_suspendedWork : BOOL;
18-
18+
{attribute 'hide'}
19+
_suspendedHomeCounter:INT;
20+
{attribute 'hide'}
21+
_suspendedWorkCounter:INT;
1922
END_VAR
2023
VAR
2124
_config : TcoCylinderConfig;
@@ -24,7 +27,8 @@ VAR
2427
END_VAR]]></Declaration>
2528
<Implementation>
2629
<ST><![CDATA[SUPER^(inoAtHomePos1 := inoAtHomePos1,inoAtHomePos2 := inoAtHomePos2, inoAtWorkPos1 := inoAtWorkPos1,inoAtWorkPos2 := inoAtWorkPos2, inoToHomePos := inoToHomePos, inoToWorkPos := inoToWorkPos);
27-
30+
_suspendedHomeCounter:=0;
31+
_suspendedWorkCounter:=0;
2832
2933
IF(_atHomePos AND _atWorkPos) THEN Messenger.Error('<#Home and work position sensors are both active. Check the position of sensors!#>'); END_IF;
3034
@@ -308,7 +312,10 @@ VAR
308312
_signalInfo : TcoSignalInfo;
309313
END_VAR]]></Declaration>
310314
<Implementation>
311-
<ST><![CDATA[_suspendedHome:=inoDisableCondition;
315+
<ST><![CDATA[IF inoDisableCondition THEN
316+
_suspendedHomeCounter:=_suspendedHomeCounter+1;
317+
END_IF
318+
_suspendedHome:=_suspendedHomeCounter>0;
312319
313320
IF (_toHomePos OR _moveHomeDefault.Busy) AND inoDisableCondition THEN
314321
_signalInfo.GetSignalInfo(SIZEOF(inoDisableCondition), ADR(inoDisableCondition));
@@ -328,8 +335,10 @@ VAR_INPUT
328335
END_VAR
329336
]]></Declaration>
330337
<Implementation>
331-
<ST><![CDATA[_suspendedHome := inDisableCondition;
332-
338+
<ST><![CDATA[IF inDisableCondition THEN
339+
_suspendedHomeCounter:=_suspendedHomeCounter+1;
340+
END_IF
341+
_suspendedHome:=_suspendedHomeCounter>0;
333342
IF (_toHomePos OR _moveHomeDefault.Busy) AND inDisableCondition THEN
334343
Messenger.Warning(CONCAT('<#Movement suspended due to#> : ', inMessage));
335344
_toHomePos := FALSE;
@@ -369,7 +378,10 @@ VAR
369378
_signalInfo : TcoSignalInfo;
370379
END_VAR]]></Declaration>
371380
<Implementation>
372-
<ST><![CDATA[_suspendedHome := inoDisableCondition;
381+
<ST><![CDATA[IF inoDisableCondition THEN
382+
_suspendedHomeCounter:=_suspendedHomeCounter+1;
383+
END_IF
384+
_suspendedHome:=_suspendedHomeCounter>0;
373385
374386
IF (_toHomePos OR _moveHomeDefault.Busy) AND NOT inoDisableCondition THEN
375387
_signalInfo.GetSignalInfo(SIZEOF(inoDisableCondition), ADR(inoDisableCondition));
@@ -411,7 +423,10 @@ VAR
411423
_signalInfo : TcoSignalInfo;
412424
END_VAR]]></Declaration>
413425
<Implementation>
414-
<ST><![CDATA[_suspendedWork := inoDisableCondition;
426+
<ST><![CDATA[IF inoDisableCondition THEN
427+
_suspendedWorkCounter:=_suspendedWorkCounter+1;
428+
END_IF
429+
_suspendedWork:=_suspendedWorkCounter>0;
415430
416431
IF (_toWorkPos OR _moveWorkDefault.Busy) AND inoDisableCondition THEN
417432
_signalInfo.GetSignalInfo(SIZEOF(inoDisableCondition), ADR(inoDisableCondition));
@@ -436,7 +451,10 @@ VAR
436451
inoDisableCondition: BOOL;
437452
END_VAR]]></Declaration>
438453
<Implementation>
439-
<ST><![CDATA[_suspendedWork := inDisableCondition;
454+
<ST><![CDATA[IF inDisableCondition THEN
455+
_suspendedWorkCounter:=_suspendedWorkCounter+1;
456+
END_IF
457+
_suspendedWork:=_suspendedWorkCounter>0;
440458
441459
IF (_toWorkPos OR _moveWorkDefault.Busy) AND inDisableCondition THEN
442460
Messenger.Warning(CONCAT('<#Movement suspended due to#> : ', inMessage));
@@ -477,7 +495,10 @@ VAR
477495
_signalInfo : TcoSignalInfo;
478496
END_VAR]]></Declaration>
479497
<Implementation>
480-
<ST><![CDATA[_suspendedWork := inoDisableCondition;
498+
<ST><![CDATA[IF inoDisableCondition THEN
499+
_suspendedWorkCounter:=_suspendedWorkCounter+1;
500+
END_IF
501+
_suspendedWork:=_suspendedWorkCounter>0;
481502
482503
IF (_toWorkPos OR _moveWorkDefault.Busy) AND NOT inoDisableCondition THEN
483504
_signalInfo.GetSignalInfo(SIZEOF(inoDisableCondition), ADR(inoDisableCondition));

0 commit comments

Comments
 (0)