Time Constraints for Materials in Line Flows#
Available from SMT Template version 3.1.0 onwards
Overview#
The Time Constraints for Sub-Materials feature enables the definition and enforcement of time constraints between process steps on Line Flows, ensuring sensitive materials are processed within allowed time windows between specific manufacturing steps.
Electronics use case: limiting time between reflows
The most obvious use case for this feature for the context of SMT lines is the enforcement of the maximum time spent between the reflow of the top side of the panel and the reflow of the bottom side of the PCB panel. Minimizing the time spent between these two steps is critical to ensure that not too much moisture is absorved by the PCB before the second reflow process, which could lead to PCB delamination and/or component faults.
Concept#
When a material performs a configured "From Operation" at a specific source step, a time constraint is created in the SMTTimeConstraintTracker Generic Table which will be validated when the configured "To Operation" is performed at the configured target step. The time constraints are applicable across steps in the same or different line flows.
The time constraints are configured in the TimeConstraintsContext Smart Table, which allows flexible control of timing between key process events, rather than being limited to specific system actions.
Supported time constraint operations
The only operations that are supported for line flows are TrackIn, TrackOut and Rework.
Time constraint types#
Time constraints can be defined to enforce:
- A maximum delay between steps (e.g., to respect material floor life).
- A minimum delay (e.g., to allow proper cooling or curing).
Time constraint enforcement#
When a time constraint is violated, the following happens:
- If a rule is associated to the time constraint, execute the rule.
- Block the "To Operation" from being performed at the target step, preventing the Material from continuing in the process.
Executing the time constraint rules#
In order to execute the Time Limit Rule or the Warning Rule when the Warning Time or Time Limit deadlines are missed, a timer called SMTTimeConstraintTrackerTriggerActionsTimer is triggered regularly. When the previously mentioned timer is triggered, the following events will happen:
- The
SMTTimeConstraintTrackerTriggerActionsRulerule is triggered, which will execute the SMTTimeConstraintTrackerTriggerActions DEE - The SMTTimeConstraintTrackerTriggerActions DEE will find all the time constraints that have rules that should be executed, and will create Integration Entries for every rule to be executed. The rules' time constraints will have their system states changes to either
PostWarningorPostTimeLimitwhich indicate whether the Time Limit Rule or the Warning Rule have been triggered.- The Integration Entries will be of type
SMTExecuteTimeConstraintTrackerRuleand the event will be one ofSMTExecuteWarningLimitRuleorSMTExecuteTimeLimitRule, depending on which rule of the time constraint is meant to be executed.
- The Integration Entries will be of type
- The Integration Entries will execute the SMTExecuteTimeConstraintTrackerRule DEE, which will then execute the time constraint rule.
Cleaning up closed time constraints#
When a time constraint is successfully passed, its system state becomes Closed. This time constraint will be automatically removed from the SMTTimeConstraintTracker Generic Table via one of the following two mechanisms:
- The corresponding material is terminated, which leads to the deletion of all rows in the MES that reference that material (including the time constraints).
- The
SMTTimeConstraintTrackerPurgeClosedTimerdaily timer is triggered, which will remove all closed time constraints from the SMTTimeConstraintTracker GT.
Preconditions
- The Step property
Enable Time Constraintsmust be enabled in the steps where the time constraints will be created and validated. - The time constraints must be properly configured in the TimeConstraintsContext Smart Table.
- Any rule that is meant to be configured in a time constraint must have the scope
TimeConstraint.
Setting up time constraints#
Consider the scenario where the user wants to ensure that the time the PCB takes between leaving the Solder Paste printing machine and entering the Reflow Oven must not exceed 30 minutes. The user also wants to receive a warning if 25 minutes have passed and the PCB hasn't gone into the oven yet.
Configure the steps#
Open the step where you want to use time constraints and select the Edit button.
Make sure the Enable Time Constraints toggle is on, and save the step.
This must be done for every step where time constraints are created or validated.
Configure the warning rule#
Create a new rule with a scope of TimeConstraint and a DEE Action to suit your needs.
SendNotification DEE Code
UseReference("", "Cmf.Foundation.Common.Exceptions");
UseReference("Cmf.Navigo.BusinessObjects.dll", "Cmf.Navigo.BusinessObjects");
UseReference("Cmf.SMT.Common.dll", "Cmf.SMT.Common.Abstractions");
var serviceProvider = (IServiceProvider)Input["ServiceProvider"];
ISMTUtilities smtUtilities = serviceProvider.GetService<ISMTUtilities>();
IEntityFactory entityFactory = serviceProvider.GetService<IEntityFactory>();
smtUtilities.CreateNotificationAlert(
$"Warning: {(string)Input["Material"]}",
"Only 5 minutes until material can't be put in oven!",
AssignmentType.Everyone,
null,
null,
null,
false
);
Configure the TimeConstraintsContext Smart Table#
Go to the Administration menu and select Tables.
Select Smart Tables and then select the TimeConstraintsContext table.
Select Add.
Configure the table according to the required context.
The time constraint is now configured.
The values in the Multiplication Factor and Remove on Pass columns of the ST are irrelevant
All the time constraints for line flows are Remove on Pass by default.
Time constraints are only created and validated for the topmost materials in the line flow (i.e. panels)
Please be mindful of this detail if you configure time constraints for a specific material. Applying a time constraint to a specific board in a panel will not work: apply the time constraint to the board's panel instead.
Executing time constraints#
Consider the scenario of a panel going through an SMT line. Notice what happens to the SMTTimeConstraintTracker Generic Table when the panel is tracked out of SMT_Printing:
A new time constraint is created which will be validated we track in to the SMT_Oven step. In this Generic Table you are able to edit, create and delete all the time constraints for materials in line flows.
Notice now what happens to the SMTTimeConstraintTracker GT when the material is tracked in to SMT_Oven:
The material was tracked in well before the time limit date and successfully passed the time constraint, as you can tell by the fact that the time constraint's system state is now Closed.
Delayed panel scenario#
Now consider the exact same scenario, but now something happens to the panel that prevents it from being tracked in the oven in time. After 25 minutes, you will be presented with the following notification:
After another 5 minutes you will no longer be able to track in the panel:
At this point, the panel should be removed from production. Alternatively if the decision is made to track in the material anyways, the time constraint blocking the track in must be removed from the SMTTimeConstraintTracker Generic Table.
Administration#
To use this feature, the timer SMTTimeConstraintTrackerTriggerActionsTimer must be configured with the appropriate recurrence (the default is once every 5 minutes).
SMTTimeConstraintTrackerTriggerActionsTimer performance vs responsiveness
If the SMTTimeConstraintTrackerTriggerActionsTimer is set to execute very often (e.g. multiple times per minute), it will have a negative effect on the performance of the MES.
One must also avoid setting the timer's recurrence too low: doing such a thing might lead to an unnecessarily large amount of time constraint rules being executed all at once.













