The MachineModuleProductionType Object provides information about the current production order and quantity produced as well as affordances to start/stop a production order and reset totals for the machine module.
The MachineModuleProductionType is formally defined in the table below.
Table 29 – MachineModuleProductionType Definition
Attribute |
Value |
||||
BrowseName |
MachineModuleProductionType |
||||
IsAbstract |
False |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
Other |
Subtype of the BaseObjectType defined in OPC 10000-5 - Part 5: Information Model, i.e. inheriting the Instance Declarations of that Node. |
|||||
0:HasComponent |
Method |
AbortProductionOrder |
See below. |
O |
|
0:HasProperty |
Variable |
AssignedProductionOrders |
ProductionOrderType[] |
0:PropertyType |
O, RO |
0:HasComponent |
Method |
AssignProductionOrder |
See below. |
O |
|
0:HasProperty |
Variable |
AutoComplete |
0:Boolean |
0:PropertyType |
O, RW |
0:HasProperty |
Variable |
AutoStart |
0:Boolean |
0:PropertyType |
O, RW |
0:HasComponent |
Method |
ClearProductionOrder |
See below. |
O |
|
0:HasComponent |
Method |
CompleteProductionOrder |
See below. |
M |
|
0:HasComponent |
Object |
Data |
|
0:FolderType |
O |
0:HasProperty |
Variable |
ProductionOrder |
ProductionOrderHeaderType |
0:PropertyType |
M, RO |
0:HasProperty |
Variable |
ProductionStatus |
ProductionStatusEnumeration |
0:PropertyType |
M, RO |
0:HasComponent |
Method |
ResetProductionTotals |
See below. |
M |
|
0:HasComponent |
Method |
StartAssignedProductionOrder |
See below. |
O |
|
0:HasComponent |
Method |
StartProductionOrder |
See below. |
M |
|
0:HasComponent |
Object |
StateMachine |
|
MachineModuleProductionStateMachineType |
O |
0:HasComponent |
Method |
UnassignProductionOrder |
See below. |
O |
|
0:GeneratesEvent |
ObjectType |
POStartedLogType |
|
|
|
0:GeneratesEvent |
ObjectType |
POStoppedLogType |
|
|
|
Conformance Units |
|||||
TMC Core Production |
|||||
TMC Single PO Production |
|||||
TMC Multi PO Production |
When the machine production is orchestrated by the ProductionOrderOrchestrationLayerType, all the MachineModuleProductionType components are mandatory.
The components of the MachineModuleProductionType are further described below.
BrowseName |
Description |
AssignedProductionOrders |
The AssignedProductionOrders array contains the production orders that have been assigned to the machine module and have not yet been started or unassigned. |
AutoComplete |
The AutoComplete Boolean defines how to trigger the machine module to complete the execution of a production order. When AutoComplete is False, the completion of a production order at the machine module is triggered with the method CompleteProductionOrder. When AutoComplete is True, the machine module initiates the completion of the production order when all the active upstream machine modules running the production order are in state complete. |
AutoStart |
The Autostart Boolean defines how to trigger the machine module to start a production order. When AutoStart is True and AssignedProductionOrders[] contains one PO, the assigned machine module initiates the starting sequence automatically for the assigned production order. When AutoStart is False, the start of a production order at the machine module is triggered with the method StartProductionOrder. StartProductionOrder is also invoked when AutoStart is True and AssignedProductionOrders[] contains more than one production order. |
Data |
The Data folder provides additional production data that is not identified elsewhere in this specification. e.g. a shift report. |
ProductionOrder |
The production order header in execution at the machine module. |
ProductionStatus |
The execution status of the production order. |
StateMachine |
The StateMachine extends ProductionStatus and provides detailed production execution status as well as methods to trigger the transitions and events when the transitions occur. |
The AbortProductionOrder method is used to abnormally terminate, or abort, a production order that is in execution or starting or completing. Aborting cannot be reversed or undone.
The signature of this Method is specified below. Table 30 specifies the Arguments representation.
Signature
AbortProductionOrder (
[in] ProductionOrderHeaderType POToAbort,
[out] MethodExecutionFeedbackType ExecutionFeedback);
Table 30 – AbortProductionOrder Method Arguments
Argument |
Description |
POToAbort |
The production order to be aborted. The argument is unnecessary for execution (since at most one production order can be executed at any time in the machine module) but provided as a safety net since aborting cannot be reversed. |
ExecutionFeedback |
The extended feedback returning a detailed message in case of execution failure. |
When the StateMachine is in state Starting, Execute or Completing, invoking the method causes the transition to state Aborting.
When the method is invoked in any other state, the method property Executable is False and when the method is invoked, the status code Bad_NotSupported is returned.
Aborting a production order is a non-reversible way to abnormally terminate a production order which requires removing all product or parts from the machine modules either automatically or manually depending on the implementation specifics. Because of the non-reversible impact, before executing the command to the underlying system, the server will verify that the ProductionOrder is the same as in the method argument provided as an additional safety net.
If the ProductionOrder is not the same as the POToAbort input argument, the execution of the method is terminated abnormally and reported via the execution feedback “The PO to be aborted is not running.”
The AssignProductionOrder Method is used to transfer the information of an upcoming production order to the machine module.
The signature of this Method is specified below. Table 31 specifies the Arguments representation.
Signature
AssignProductionOrder (
[in] ProductionOrderType POToAssign,
[out] MethodExecutionFeedbackType ExecutionFeedback);
Table 31 – AssignProductionOrder Method Arguments
Argument |
Description |
POToAssign |
The production order to assign to the machine module for later execution. |
ExecutionFeedback |
The extended feedback returning a detailed message in case of execution failure. |
The successful execution of the method causes the POToAssign production order argument to be added to the AssignedProductionOrders array when it is not already there, to overwrite the production order element in the AssignedProductionOrders array when it is.
The AssignProductionOrder method is executed by infeed machine modules. When the machine module is not an infeed machine module in the current configuration, a negative execution feedback is reported detailing the issue.
The ClearProductionOrder method is used to positively confirm that the machine module where a production order is aborted has been cleared of the product or parts left by the aborted production order.
The signature of this Method is specified below. Table 32 specifies the Arguments representation.
Signature
ClearProductionOrder (
[out] MethodExecutionFeedbackType ExecutionFeedback);
Table 32 – ClearProductionOrder Method Arguments
Argument |
Description |
ExecutionFeedback |
The extended feedback returning a detailed message in case of execution failure. |
When the StateMachine is in state Aborted, invoking the method causes the transition to state Complete. When the method is invoked in any other state, the method property Executable is False and when the method is invoked, the status code Bad_NotSupported is returned.
The CompleteProductionOrder method is used to complete a production order in execution.
The signature of this Method is specified below. Table 33 specifies the Arguments representation.
Signature
CompleteProductionOrder (
[out] MethodExecutionFeedbackType ExecutionFeedback);
Table 33 – CompleteProductionOrder Method Arguments
Argument |
Description |
ExecutionFeedback |
The extended feedback returning a detailed message in case of execution failure. |
When the StateMachine is in state Execute, the successful execution of the method causes the transition to state Completing.
When the method is invoked in any other state, the method property Executable is False and when the method is invoked, the status code Bad_NotSupported is returned.
The StartAssignedProductionOrder Method starts a production order whose state is Assigned at the machine module.
The signature of this Method is specified below. Table 34 specifies the Arguments representation.
Signature
StartAssignedProductionOrder (
[in] ProductionOrderHeaderTypePOHeaderToStart,
[in] 0:String[] SourceMaterialLoadingPointIDs,
[in] 0:String[] DestinationMaterialOutputPointIDs,
[out] MethodExecutionFeedbackTypeExecutionFeedback);
Table 34 – StartAssignedProductionOrder Method Arguments
Argument |
Description |
POHeaderToStart |
The header of the production order to be started. |
SourceMaterialLoadingPointIDs |
The list of material loading points that are going to be used by the production order to be started. |
DestinationMaterialOutputPointIDs |
The list of material output points that are going to be used by the production order to be started. |
ExecutionFeedback |
The extended feedback returning a detailed message in case of execution failure. |
When no production order is in execution, invoking the method causes the machine module to start the execution of a production order present in AssignedProductionOrders[]. The POToStart argument is copied to ProductionOrder and is removed from AssignedProductionOrders[].
The StartAssignedProductionOrder method can be invoked for infeed machine modules (i.e. machine modules without an active upstream connected machine module and machines modules with all MaterialPoints with PropagatesProductionOrder False) and for machine modules with AutoStart false. When AutoStart is True the Executable property of the method is set to False and when the method is invoked, the status code Bad_NotSupported is returned.
The StartAssignedProductionOrder method requires input arguments specifying the loading point(s) where the input materials will be loaded and the output point(s) where the output material will be collected.
When the StateMachine is in state Assigned, the successful execution of the method shall cause a transition to state Starting. In case the method execution terminates unsuccessfully, no transition shall occur.
When the method is invoked in any other state, the method property Executable is False and when the method is invoked, the status code Bad_NotSupported is returned.
The StartProductionOrder Method starts a production order at the machine module.
The signature of this Method is specified below. Table 35 specifies the Arguments representation.
Signature
StartProductionOrder (
[in] ProductionOrderType POToStart,
[in] 0:String[] SourceMaterialLoadingPointIDs,
[in] 0:String[] DestinationMaterialOutputPointIDs,
[out] MethodExecutionFeedbackTypeExecutionFeedback);
Table 35 – StartProductionOrder Method Arguments
Argument |
Description |
POToStart |
The production order to be started. |
SourceMaterialLoadingPointIDs |
The list of material loading points that are going to be used by the production order to be started. |
DestinationMaterialOutputPointIDs |
The list of material output points that are going to be used by the production order to be started. |
ExecutionFeedback |
The extended feedback returning a detailed message in case of execution failure. |
When no production order is in execution and StateMachine is implemented, invoking the method causes the machine module to start the execution of a production order present in AssignedProductionOrders[]. The POToStart argument is copied to ProductionOrder and is removed from AssignedProductionOrders[].
The StartProductionOrder method can be invoked for infeed machine modules (i.e. machine modules without an active upstream connected machine module and machines modules with all MaterialPoints with PropagatesProductionOrder False) and for machine modules with AutoStart false. When AutoStart is True the Executable property of the method is set to False and when the method is invoked, the status code Bad_NotSupported is returned.
The StartProductionOrder method requires input arguments specifying the loading point(s) where the input materials will be loaded and the output point(s) where the output material will be collected.
When the StateMachine is in state Assigned, the successful execution of the method shall cause a transition to state Starting. In case the method execution terminates unsuccessfully, no transition shall occur.
When the method is invoked in any other state, the method property Executable is False and when the method is invoked, the status code Bad_NotSupported is returned.
When no production order is in execution and StateMachine is not implemented, invoking the method causes the machine module to start the execution of the production order.
The underlying system will be responsible to verify that the production order information is complete and will otherwise terminate the method execution with a negative execution feedback.
The UnassignProductionOrder method is used to remove the specified production order from AssignedProductionOrders[] of an infeed machine module.
The signature of this Method is specified below. Table 36 specifies the Arguments representation.
Signature
UnassignProductionOrder (
[in] ProductionOrderHeaderType POToUnassign,
[out] MethodExecutionFeedbackType ExecutionFeedback);
Table 36 – UnassignProductionOrder Method Arguments
Argument |
Description |
POToUnassign |
The production order to be unassigned at the machine module. |
ExecutionFeedback |
The extended feedback returning a detailed message in case of execution failure. |
When the machine module is not an infeed machine module in the current configuration, the following StatusCode Bad_NotSupported is reported back.
The Method ResetProductionTotals simultaneously resets the totals of the machine components belonging to the following machine folders: DefectDetectionSensors, MaterialLoadingPoints, MaterialOutputPoints, MaterialRejectionPoints.
The master totals belonging to the same objects are not reset.
The signature of this Method is specified below. Table 37 specifies the Arguments representation.
Signature
ResetProductionTotals (
[out] MethodExecutionFeedbackType ExecutionFeedback);
Table 37 – ResetProductionTotals Method Arguments
Argument |
Description |
ExecutionFeedback |
The extended feedback returning a detailed message in case of execution failure. |