Concept Flow - Up-down counter
Start
Check Up Signal?
No→Check Down Signal?
Increment Count
Output Count
End
The counter checks if the up or down signal is active, increments or decrements the count accordingly, then outputs the current count.
IF UpSignal THEN Count := Count + 1; ELSIF DownSignal THEN Count := Count - 1; END_IF; Output := Count;
| Step | UpSignal | DownSignal | Count Before | Condition | Action | Count After | Output |
|---|---|---|---|---|---|---|---|
| 1 | TRUE | FALSE | 0 | UpSignal TRUE | Increment Count | 1 | 1 |
| 2 | TRUE | FALSE | 1 | UpSignal TRUE | Increment Count | 2 | 2 |
| 3 | FALSE | TRUE | 2 | DownSignal TRUE | Decrement Count | 1 | 1 |
| 4 | FALSE | FALSE | 1 | No Signal TRUE | Hold Count | 1 | 1 |
| 5 | TRUE | FALSE | 1 | UpSignal TRUE | Increment Count | 2 | 2 |
| 6 | FALSE | TRUE | 2 | DownSignal TRUE | Decrement Count | 1 | 1 |
| 7 | FALSE | FALSE | 1 | No Signal TRUE | Hold Count | 1 | 1 |
| 8 | FALSE | FALSE | 1 | No Signal TRUE | Hold Count | 1 | 1 |
| Variable | Start | After 1 | After 2 | After 3 | After 4 | After 5 | After 6 | After 7 | After 8 |
|---|---|---|---|---|---|---|---|---|---|
| Count | 0 | 1 | 2 | 1 | 1 | 2 | 1 | 1 | 1 |
| Output | 0 | 1 | 2 | 1 | 1 | 2 | 1 | 1 | 1 |
Up-down counter syntax: IF UpSignal THEN Count := Count + 1; ELSIF DownSignal THEN Count := Count - 1; END_IF; Outputs current count. UpSignal increments, DownSignal decrements, no signal holds count.
up-down counter in PLC programming?CU = 1 (pulse)
CD = 0
R = 0
Initial count = 3
Limit = 5
CU = 0
CD = 1 (pulse)
R = 1 (pulse)
Initial count = 2
Limit = 5
Pass the test and this pattern moves unknown