Timer/Counter
Timer and Counter are the two production process monitoring tools available in Line Control. A timer monitors the time a part has spent on the production line between two processes. A counter monitors how many times a part underwent a specific process.
Timer and Counter definitions are stored in Line Control TypeData structures. For each pair <TypeNo> - <TypeVar> there may exist several Timer or Counter definitions.
When Line Control creates a part’s data record (e.g. on ProcessEnd), it collects the TypeData for the corresponding <TypeNo> - <TypeVar>, where existing. Where TypeData is available, Line Control also creates the corresponding Timer and/or Counter objects in the Line Control Database.
During the production process Line Control updates part timer and counter information. Finally, when deleting a part’s data record, Line Control also deletes all timers and counters created for that part.
TypeData for Timer and Counter definitions can be obtained from Setup Specs by activating the Type Data Replicator functionality in Line Control by importing the Opcon.Settings.xml of the legacy Line Control service.
Timer
A timer’s state is set to running
as soon as the part reaches the configured start process, and stops when the part reaches the configured stop process. Besides the start and stop processes, Line Control uses also the Timer’s TriggerType to know when a timer needs to be started or stopped. TriggerType can be either ProcessEnd or ProcessRequest (for more information refer to Timer Types ).
There are two types of Timers: Min Timer and Max Timer.
-
Min Timer
This timer defines a minimum period of time required to elapse between two part processing operations.
-
Max Timer
This timer defines the maximum period of time allowed to elapse between the part processing operations. An expired Max timer is stopped at ProcessRequest even if it did not reach the configured trigger process, applying the configured trigger effect.
Upon stop of a timer, Line Control checks the timer’s elapsed time (computed for each timer type in a different way, see section Timer Types ): for a Min Timer, the timer is set to have triggered if the elapsed time is less than the configured duration; whereas a Max Timer is said to have triggered if the elapsed time exceeds the configured duration.
If a timer entered the triggered status Line Control executes the associated action, as defined in the TypeData.
The following timer actions can be configured:
-
None
No activity will be triggered.
-
Block
The part will be blocked.
-
Rework
The part will be blocked and coded to be routed to the reworking station.
-
Scrap
The part will be blocked and marked as scrap.
If the action is executed in the context of a ProcessEnd, the part’s result is changed (e.g. from good to bad or scrapped).
If the action is executed in the context of a ProcessRequest, the calling station might be denied processing permission (e.g. for Block action) and the part’s properties might also be changed e.g. by "moving" the part to the Rework station or setting the part to scrap.
How it works (example)
A Max timer, with action block is configured to start with a ProcessEnd from process 10 and stop with a ProcessRequest from process 20. Process 10 is the first process in the route list. The part is created here. The timer is set to 120 seconds.
On ProcessEnd from process 10, Line Control checks whether a timer is configured for the product status of the part, and creates the timer instances. As the timer is configured to start on ProcessEnd in process 10, Line Control also starts the timer.
From a database standpoint, starting the timer means, the configured duration is added to the current time and the result is stored to the timer’s property ExpiryTimeStamp
.
After 100 seconds, the part reaches process 20; the station sends a ProcessRequest and Line Control stops the configured timer. The current timestamp is compared with the timer’s ExpiryTimeStamp
. In this example, the Max timer limit was not reached. The timer is stopped without triggering.
If, on the other hand, the part reaches process 20 after 125 seconds, the timer triggers because the total elapsed time exceeds the configured duration and, in this example, the part is blocked.
The process is the same for Min timers.
In Line Control it is possible to use Timers and Counters also for groups. Timers/Counters that are specified for groups will not be applied to the sub-parts; similarly, Timers/Counters that are specified for sub-parts will not be applied to groups. |
Counter
With the Line Control counter it is possible to how many times did a part undergo a specific process. The counter value is incremented by the configurable value for each ProcessEnd call for the configured process. The counter is incremented regardless of the processing result. The counter value is checked each time a ProcessRequest is sent for the configured process. If the counter value is greater than or equal to the configured maximum value, the counter is triggered.
The following counter actions can be configured:
-
None
No activity will be triggered.
-
Block
The part will be blocked.
-
Rework
The part will be blocked and coded to be routed to the reworking station.
-
Scrap
The part will be blocked and marked as scrap.
When a counter is triggered, the calling station might be denied processing permission (e.g. for Block action) and the part’s properties might also be changed (via vMDT) e.g. by "moving" the part to the Rework station or setting the part to Scrap
.
How it works (example)
A type is only allowed to have a certain process (e.g. insert a screw) repeated on the part two times. After that, the risk of weakening the material is considered too high, and the part must be scrapped. A counter is configured to watch the process, with MaxValue 2
and Action set to Scrap
. The part is sent for processing, on ProcessRequest, the counter is checked, and it’s value is 0
, so the part is cleared for processing. When the part is processed, at the ProcessEnd call, the counter value is increased to 1
. At a later step, it turns out that the part must be reworked, and the screw must be removed. After the rework, the part arrives to the screw process for the second time. The counter is checked again, it’s value is 1
, so yet again, the part is cleared for processing, and at the end, the counter value is increased to 2
.
If the part turned out to be faulty again, and it got back to the screw process, the counter value would be 2
at ProcessRequest, triggering the counter, creating a block, and setting the part state to Scrap
automatically.
In Line Control it is possible to use timers and counters also for groups. Timers or counters that are specified for groups are not applied to sub-parts and timers/counters that are specified for sub-parts are not applied for groups. |
Timer Types
This section describes in detail the types of timers available in Line Control. Each type can either be a MaxTimer or a MinTimer.
In the following configuration documentation, the ChecktTypes of the SingleIntervalTimer are in reverse order: the value 1 for the MaxTimer and the value 2 for the MinTimer. This is not a mistake. It’s due to historical reason. For the other Timer types, it is always the odd integer value for the MinTimer and the even integer value for the MaxTimer. |
SingleIntervalTimer
One start; one stop. After the stop, Line Control will not restart the timer.
total time = time elapsed between start and stop.
Characteristic | Description | ||
---|---|---|---|
Check type |
1: MaxTimer 2: MinTimer |
||
Start trigger |
0: ProcessRequest 1: ProcessEnd |
||
End trigger |
0: ProcessRequest 1: ProcessEnd 2: ProcessRequestAndPartForStation
|
||
Triggered condition |
Elapsed time is the time between start and stop. MinTimer: The timer triggers if elapsed time < duration MaxTimer : The timer triggers if elapsed time > duration |
||
Description |
This type of timer is the standard in Line Control. Once the timer has expired or has been stopped, Line Control will not restart it. Line Control starts the timer either on ProcessEnd or ProcessRequest, as specified by the field StartTrigger Line Control stops the timer either on ProcessEnd or ProcessRequest, as specified by the field EndTrigger Once the Timer has been stopped (regardless of whether it triggers or not), it will never be restarted again. |
AutoResetTimer
This type of timer can be stopped and restarted several times. At each stop, the triggering condition is evaluated.
The elapsed time is calculated as the time elapsed between the latest start and the latest stop (i.e. the previous intervals are not considered).
After stopping, the timer can always be restarted, regardless of whether or not it has triggered at the latest stop (the elapsed time is practically reset at every new start).
This type of timer can be reused several times, meaning that its life span does not end when being stopped or when the trigger condition is met.
total time = time elapsed between start and stop.
Characteristic | Description | ||
---|---|---|---|
Check type |
3: AutoReset-MinTimer 4: AutoReset-MaxTimer |
||
Start trigger |
0: ProcessRequest 1: ProcessEnd |
||
End trigger |
0: ProcessRequest 1: ProcessEnd 2: ProcessRequestAndPartForStation
|
||
Triggered condition |
Elapsed time is the time between the most recent start and stop pair. MinTimer: The timer triggers if elapsed time < duration. MaxTimers: The timer triggers if elapsed time > duration. Example: AutoResetMaxTimer: Line Control starts the timer at T1 and stops it at T2, restarts it at T3 and stops it at T4. The total time after the last stop is the time between T3 and T4 |
||
Description |
This timer is similar to SingleIntervalTimer (as far as the trigger condition is concerned). Line Control starts the timer either on ProcessEnd or ProcessRequest, as specified by the StartTrigger field. Line Control stops the timer either on ProcessEnd or ProcessRequest, as specified by the EndTrigger field. After the stop, however, regardless of whether the timer triggered or not, Line Control can restart the timer, should the StartTrigger condition become true again (see StartTrigger). When the timer is re-started, it behaves as if it were a new timer, started for the first time, resulting in the expiry time being reset. |
CumulativeIntervalsTimer
This type of timer can be stopped and started several times by Line Control. At each stop, the triggering condition is evaluated.
The elapsed time is the sum of all start/stop intervals (i.e. only the time in which the timer was in state=running is considered for the computation).
The timer triggers upon stop, if the current total time exceeds the configured duration.
total time = the cumulated time on the completed start/stop intervals; that is, only the time in which the timer.state is running is considered.
Characteristic | Description | ||
---|---|---|---|
Check type |
5: CumulativeInterval-MinTimer 6: CumulativeInterval-MaxTimer |
||
Start trigger |
5: ProcessRequest 6: ProcessEnd |
||
End trigger |
0: ProcessRequest 1: ProcessEnd 2: ProcessRequestAndPartForStation
|
||
Triggered condition |
The total elapsed time is computed by cumulating the time elapsed during each start/stop interval (i.e. the time the Timer was in the Running state). The timer triggers upon stop if the current total time exceeds the configured duration. Example: Line Control starts the timer at T1 and stops it at T2, after e.g. 100 seconds, it restarts it at T3 and stops it at T4. The total time after the last stop is the time between T1 and T2 plus the time between T3 and T4. |
||
Description |
This type of timer can be stopped and restarted several times. Line Control starts the timer either on ProcessEnd or ProcessRequest, as specified by the StartTrigger field. Line Control stops the timer either on ProcessEnd or ProcessRequest, as specified by the EndTrigger field. |
ContinuousIntervalTimer
Line Control can restart and stop this type of timer several times. At each stop, the triggering condition is evaluated.
However, only the first start and the last stop are considered in computing the elapsed time, meaning that the interval being considered keeps growing as Line Control restarts and stops the timer.
total time = total time between the very first start and the very last stop (time during which the Timer.State=Paused or Timer.State=closed are also considered). If this time exceeds the configured duration, the timer triggers.
Characteristic | Description | ||
---|---|---|---|
Check type |
7: ContinuousInterval-MinTimer 8: ContinuousInterval-MaxTimer |
||
Start trigger |
5: ProcessRequest 6: ProcessEnd |
||
End trigger |
0: ProcessRequest 1: ProcessEnd 2: ProcessRequestAndPartForStation
|
||
Triggered condition |
At each stop, the elapsed time is calculated as the time elapsed between the very first start and the current stop (regardless of how many times Line Control stopped and restarted the timer in between). If the elapsed time exceeds the configured duration, the timer triggers and the associated action is executed! Example: Line Control starts the timer at T1 and stops it at T2, after e.g. 100 seconds, it restarts it at T3 and stops it at T4: The total time after the last stop is the time between T1 and T4. |
||
Description |
This type of timer can be stopped and restarted several times for as long as it has not expired (i.e. has not triggered). Line Control starts the timer either on ProcessEnd or ProcessRequest, as specified by the StartTrigger field. Line Control stops the timer either on ProcessEnd or ProcessRequest, as specified by the EndTrigger field. |
Configuring the timer/counter
Timers and counters are managed type data related within the module Setup Specs. In Line Control you need to configure the type data replication by uploading the Opcon.Settings.xml to enable the replication of the type data from Setup specs.
Timer configuration parameters
Name | Data type | Description |
---|---|---|
|
int |
Specifies the object type for which the timer is created. It must be set to either |
|
string |
Unique name of the timer. |
|
int |
Duration of the timer in seconds. |
|
string |
Specifies where the timer is to be started. This can be a process number or a location. |
|
int |
Specifies the trigger that starts the timer. 0: ProcessRequest 1: ProcessEnd (default value) |
|
string |
Specifies where the timer is to be stopped. This can be a process number or a location. |
|
int |
Specifies the trigger that stops the timer. 0: ProcessRequest (default value) 1: ProcessEnd 2: ProcessRequestAndPartForStation |
|
int |
Specifies the timer type (described in Timer Types ). 1: SingleIntervalMaxTimer 2: SingleIntervalMinTimer 3: AutoResetMinTimer 4: AutoResetMaxTimer 5: CumulativeIntervalMinTimer 6: CumulativeIntervalMaxTimer 7: ContinuousIntervalMinTimer 8: ContinuousIntervalMaxTimer |
|
string |
Specifies the action to be executed if the timer configuration is over- or undershot.
|
|
int |
Specifies the severity of the block that is generated due to the timer. Value range: 0-100 Default value: |
Counter configuration parameters:
Name | Data type | Description |
---|---|---|
|
int |
Specifies the object type for which the counter is created. It must be set to either |
|
string |
Unique name of the counter. |
|
int |
Specifies the starting value of the counter. |
|
int |
Specifies the maximum value of the counter. |
|
int |
Specifies the warning limit of the counter. Currently, this parameter is not used. |
|
int |
Specifies the incrementing value of the counter for each counting operation. |
|
string |
Specifies the process when the counter is incremented (at ProcessEnd) or triggered (at ProcessRequest). |
|
string |
Specifies the action to be executed if the maximum value of the counter is reached:
|
|
int |
Specifies the severity of the block that is generated due to the timer. Value range: 0-100 Default value: |