Skip to content

Commit 0a80572

Browse files
committed
optimize signal usage
1 parent 685e345 commit 0a80572

2 files changed

Lines changed: 12 additions & 11 deletions

File tree

src/Actuator2Way.st

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ NAMESPACE Simatic.Ax.Actuators
2727

2828
// Read sensor states.
2929
_isInHomePos := I_InHomePosition.IsActivated();
30-
_currentState := THIS.GetState();
3130
_isInWorkPos := I_InWorkPosition.IsActivated();
31+
_currentState := THIS.GetState();
32+
3233

3334
// Handle state transitions based on the current state.
3435
CASE _currentState OF
@@ -58,12 +59,12 @@ NAMESPACE Simatic.Ax.Actuators
5859
// Move to Work position: Transition to work position.
5960
//##############################################
6061
ActuatorState#MoveToWorkPosition:
61-
IF THIS.StateHasChanged() THEN
62+
IF THIS.StateHasChanged() AND NOT(_isInWorkPos) THEN
6263
Q_ToWorkPosition.Set();
6364
Q_ToHomePosition.Reset();
6465
I_InWorkPosition.StartMonitoring(TMonToWorkPosition);
6566
END_IF;
66-
IF (I_InWorkPosition.IsActivated()) THEN
67+
IF (_isInWorkPos) THEN
6768
THIS.SetDone();
6869
Q_ToWorkPosition.Hold();
6970
THIS.ChangeState(ActuatorState#InWorkPosition);
@@ -80,12 +81,12 @@ NAMESPACE Simatic.Ax.Actuators
8081
// Move to Home position: Transition to home position.
8182
//##############################################
8283
ActuatorState#MoveToHomePosition:
83-
IF (THIS.StateHasChanged()) THEN
84+
IF (THIS.StateHasChanged() aND NOT(_isInHomePos)) THEN
8485
Q_ToHomePosition.Set();
8586
Q_ToWorkPosition.Reset();
8687
I_InHomePosition.StartMonitoring(TMonToHomePosition);
8788
END_IF;
88-
IF (I_InHomePosition.IsActivated()) THEN
89+
IF (_isInHomePos) THEN
8990
THIS.ChangeState(ActuatorState#InHomePosition);
9091
Q_ToHomePosition.Hold();
9192
THIS.SetDone();

src/Actuator3Way.st

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ NAMESPACE Simatic.Ax.Actuators
7070
// MoveToWorkPosition
7171
//##############################################
7272
ActuatorState#MoveToWorkPosition:
73-
IF (THIS.StateHasChanged()) THEN
73+
IF (THIS.StateHasChanged() AND NOT(_isInWorkPos)) THEN
7474
Q_ToHomePosition.Reset();
7575
Q_ToWorkPosition.Set();
7676
Q_ToWorkPosition2.Reset();
7777
I_InWorkPosition.StartMonitoring();
7878
END_IF;
79-
IF (I_InWorkPosition.IsActivated()) THEN
79+
IF (_isInWorkPos) THEN
8080
Q_ToWorkPosition.Hold();
8181
THIS.SetDone();
8282
THIS.ChangeState(ActuatorState#InWorkPosition);
@@ -93,13 +93,13 @@ NAMESPACE Simatic.Ax.Actuators
9393
// MoveToWorkPosition
9494
//##############################################
9595
ActuatorState#MoveToWorkPosition2:
96-
IF (THIS.StateHasChanged()) THEN
96+
IF (THIS.StateHasChanged() AND NOT (_isInWorkPos2)) THEN
9797
Q_ToHomePosition.Reset();
9898
Q_ToWorkPosition.Reset();
9999
Q_ToWorkPosition2.Set();
100100
I_InWorkPosition2.StartMonitoring();
101101
END_IF;
102-
IF (I_InWorkPosition2.IsActivated()) THEN
102+
IF (_isInWorkPos2) THEN
103103
Q_ToWorkPosition2.Hold();
104104
THIS.SetDone();
105105
THIS.ChangeState(ActuatorState#InWorkPosition2);
@@ -115,13 +115,13 @@ NAMESPACE Simatic.Ax.Actuators
115115
// Move to home position
116116
//##############################################
117117
ActuatorState#MoveToHomePosition:
118-
IF (THIS.StateHasChanged()) THEN
118+
IF (THIS.StateHasChanged() AND NOT(_isInHomePos)) THEN
119119
Q_ToHomePosition.Set();
120120
Q_ToWorkPosition.Reset();
121121
Q_ToWorkPosition2.Reset();
122122
I_InHomePosition.StartMonitoring();
123123
END_IF;
124-
IF (I_InHomePosition.IsActivated()) THEN
124+
IF (_isInHomePos) THEN
125125
Q_ToHomePosition.Hold();
126126
THIS.SetDone();
127127
THIS.ChangeState(ActuatorState#InHomePosition);

0 commit comments

Comments
 (0)