The ProductionOrderOrchestrationLayerType (POOL) ObjectType consists of a set of variables, generated events and methods that are used to orchestrate production orders for a set of Machine Modules that implement the MachineModuleProductionType and are variously connected in a production line. The production line is also known as a Process Cell according to ANSI/ISA-88.00.01-2010 Physical Model.

The POOL ObjectType is an external application, i.e. it is not implemented by a machine module. Nonetheless it is of interest for machine modules and their implementations because of the tight connection and interaction.

The ProductionOrderOrchestrationLayerType is formally defined in the following table.

Table 101 – ProductionOrderOrchestrationLayerType

Attribute

Value

BrowseName

ProductionOrderOrchestrationLayerType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Other

Subtype of the TMCDeviceType, i.e. inheriting the Instance Declarations of that Node.

0:HasProperty

Variable

ProductionOrdersRetentionTime

0:UInt32

M, RW

0:HasComponent

Object

ProductionOrders

0:FolderType

M

0:HasComponent

Method

AbortProductionOrder

See below.

M

0:HasComponent

Method

AssignProductionOrder

See below.

M

0:HasComponent

Method

CompleteProductionOrder

See below.

M

0:HasComponent

Method

GetDataSet

See below.

M

0:HasComponent

Method

GetMaterialList

See below.

M

0:HasComponent

Method

GetProductionOrder

See below.

M

0:HasComponent

Method

ReleaseProductionOrder

See below.

M

0:HasComponent

Method

StartProductionOrder

See below.

M

0:HasComponent

Method

UnassignProductionOrder

See below.

M

0:HasComponent

Method

UnreleaseProductionOrder

See below.

M

Conformance Units

TMC Production Order Orchestration Layer

The components of the ProductionOrderOrchestrationLayerType have additional subcomponents which are defined in the following table.

Table 102 – ProductionOrderOrchestrationLayerType Additional Subcomponents

BrowsePath

References

NodeClass

BrowseName

DataType

TypeDefinition

Others

ProductionOrders

0:HasComponent

Object

<ProductionOrderNumber>

ProductionOrderExecutionStateMachineType

OP

The components of the ProductionOrderOrchestrationLayerType are further described below.

BrowseName

Description

ProductionOrdersRetentionTime

The time in hours a ProductionOrderStateMachine is retained in memory after the production order is complete. When the ProductionOrdersRetentionTime is elapsed, the ProductionOrderExecutionStateMachine is discarded from memory and from the containing folder ProductionOrders.

ProductionOrders

ProductionOrders is a folder that organizes objects of type ProductionOrderExecutionStateMachineType i.e., one state machine per production order managed by POOL.

Production orders are managed by POOL from their release by a higher-level system, e.g. MES, MOM, to their normal or abnormal completion or un-release and afterwards are persisted for a period of time defined by ProductionOrdersRetentionTime after which production orders are discarded from memory.

The reader shall note that there is one production order state machine for any given production order for the entire process cell regardless of the number of machine modules, each having its own StateMachine of the Production object within the MachineModule. In ways that are defined in this section, ProductionOrderExecutionStateMachine consolidates and coordinates the state of all machine modules with respect to the production order.

The AbortProductionOrder Method is used to abort a production order that is in execution or starting or completing in the production line.

To execute the method, POOL will in turn invoke the AbortProductionOrder method at all the machine modules where the production order is present in the arrary AssignedProductionOrders.

The signature of this Method is specified below. Table 103 specifies the Arguments representation.

Signature

AbortProductionOrder(

[in] ProductionOrderHeaderType POToAbort,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 103 – AbortProductionOrder Method Arguments

Argument

Description

POToAbort

The Production Order to be aborted.

ExecutionFeedback

The result of the execution of the method.

The AssignProductionOrder Method is used to assign a production order to one infeed machine module where it shall be executed.

To execute the method, POOL will in turn invoke the AssignProductionOrder method at the machine modules identified by the argument MachineModulesToAssign.

Assignment is required and useful because there are generally many machine modules that can execute a production order so that it is necessary to identify which machine module will be executing the specific one. The attentive reader shall note that a production order may require many infeed machine modules to execute the production order.

The signature of this Method is specified below. Table 104 specifies the Arguments representation.

Signature

AssignProductionOrder(

[in] ProductionOrderHeaderType POToAssign,

[in] 0:String[] MachineModuleUserName,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 104 - AssignProductionOrder Method Arguments

Argument

Description

POToAssign

The Production Order Header to be assigned.

MachineModuleUserName

The user name of the machine modules to which the PO is assigned. The machine module identifier is exposed in the UserName in the MachineModuleConfiguration of the machine module.

ExecutionFeedback

The result of the execution of the method.

The CompleteProductionOrder Method is used to complete a production order in execution.

To execute the method, POOL will in turn invoke the CompleteProductionOrder method at the machine module identified by the input argument MachineModuleToComplete.

The signature of this Method is specified below. Table 105 specifies the Arguments representation.

Signature

CompleteProductionOrder(

[in] ProductionOrderHeaderType POToComplete,

[in] 0:String MachineModuleUserName,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 105 - CompleteProductionOrder Method Arguments

Argument

Description

POToComplete

The Production Order Header to be completed.

MachineModuleUserName

The user name of the machine module where the PO is completed. The machine module identifier is exposed in the UserName in the MachineModuleConfiguration of the machine module.

ExecutionFeedback

The result of the execution of the method.

The GetDataset Method is used to retrieve the data set from a production order header. The primary intended use is for a memory constrained underlying system to retrieve the production order information just in time without storing it for all assigned production orders.

The signature of this Method is specified below. Table 106 specifies the Arguments representation.

Signature

GetDataSet(

[in] ProductionOrderHeaderType POHeader,

[in] 0:String MachineModuleUserName,

[out] DataSetType DataSet,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 106 - GetDataSet Method Arguments

Argument

Description

POHeader

The Production Order Header of the dataset to be retrieved.

MachineModuleUserName

The user name of the machine module for which the information is requested. The machine module identifier is exposed in the UserName in the MachineModuleConfiguration of the machine module.

DataSet

The DataSet for the production order with Production Order Header.

ExecutionFeedback

The result of the execution of the method.

The GetMaterialList Method is used to retrieve the material list information from a production order header. The primary intended use is for a memory constrained underlying system to retrieve the production order information just in time without storing it for all assigned production orders.

The signature of this Method is specified below. Table 107 specifies the Arguments representation.

Signature

GetMaterialList(

[in] ProductionOrderHeaderType POHeader,

[in] 0:String MachineModuleUserName,

[out] MaterialListType MaterialList,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 107 - GetMaterialList Method Arguments

Argument

Description

POHeader

The Production Order Header of the Material List to be retrieved.

MaterialList

The Material List for the production order with Production Order Header.

MachineModuleUserName

The user name of the machine module for which the information is requested. The machine module identifier is exposed in the UserName in the MachineModuleConfiguration of the machine module.

ExecutionFeedback

The result of the execution of the method.

The GetProductionOrder Method is used to retrieve the complete production order information starting with a production order header as an input argument. The primary intended use is for a memory constrained underlying system to retrieve the production order information just in time without storing it for many assigned production orders. In the memory constrained case, it is the responsibility of the underlying system to retrieve the production order information on time without delaying the production order execution start.

The signature of this Method is specified below. Table 108 specifies the Arguments representation.

Signature

GetProductionOrder(

[in] ProductionOrderHeaderType POHeader,

[in] 0:String MachineModuleUserName,

[out] ProductionOrderType ProductionOrder,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 108 - GetProductionOrder Method Arguments

Argument

Description

POHeader

The Production Order Header of the Material List to be retrieved.

MachineModuleUserName

The user name of the machine module for which the information is requested. The machine module identifier is exposed in the UserName in the MachineModuleConfiguration of the machine module.

ProductionOrder

The complete Production Order with header Production Order Header.

ExecutionFeedback

The result of the execution of the method.

The ReleaseProductionOrder Method is used to make a production order available to a machine module for orchestrated execution in a production line (Process Cell according to ANSI/ISA-88.00.01-2010 Physical Model).

When the method is executed successfully, a new ProductionOrderExecutionStateMachine is instantiated for the released production order when not already existing.

When the ProductionOrderExecutionStateMachine is in state Unreleased, the successful execution of the method causes the state transition to Releasing.

The signature of this Method is specified below.

Signature

ReleaseProductionOrder(

[in] OrchestrationProductionOrderType POToRelease,

[in] 0:String MachineModuleUserName,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 109 - ReleaseProductionOrder Method Arguments

Argument

Description

POToRelease

The Production Order Header for the Production Order to be released.

MachineModuleUserName

The user name of the machine module where the PO is released. The machine module identifier is exposed in the UserName in the MachineModuleConfiguration of the machine module.

ExecutionFeedback

The result of the execution of the method.

The StartProductionOrder Method is used to start the execution of a production order at a machine module specifying the loading points that input materials will be fed to and the output points where output will be directed.

To execute the method, POOL will in turn invoke the StartProductionOrder method at the machine module identified by the input argument MachineModuleToStart.

The signature of this Method is specified below.

Signature

StartProductionOrder(

[in] ProductionOrderHeaderTypePOToStart,

[in] 0:String MachineModuleUserName,

[in] 0:String[] SourceMaterialLoadingPointIDs,

[in] 0:String[] DestinationMaterialOutputPointIDs,

[out] MethodExecutionFeedbackTypeExecutionFeedback);

Table 110 - StartProductionOrder Method Arguments

Argument

Description

POToStart

The Production Order Header for the Production Order to be started.

MachineModuleUserName

The user name of the machine module where the PO is started. The machine module identifier is exposed in the UserName in the MachineModuleConfiguration of the machine module.

SourceMaterialLoadingPointIDs

The MaterialLoadingPoints where input materials will be fed for the Production Order to be started.

DestinationMaterialOutputPointIDs

The MaterialOutputPoints where output materials will be directed to for the Production Order to be started.

ExecutionFeedback

The result of the execution of the method.

The UnAssignProductionOrder Method is used to unassign a production order previously assigned to an infeed machine module. It reverses the effect of the AssignProductionOrder method when the production order is not yet in execution.

To execute the method, POOL will in turn invoke the UnAssignProductionOrder method at all the machine modules where the production order is present in the AssignedProductionOrders.

The signature of this Method is specified below.

Signature

UnassignProductionOrder(

[in] ProductionOrderHeaderType POToUnassign,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 111 - UnassignProductionOrder Method Arguments

Argument

Description

POToUnassign

The Production Order Header for the Production Order to be unassigned.

ExecutionFeedback

The result of the execution of the method.

The UnreleaseProductionOrder Method is used to reverse the effect of the ReleaseProductionOrder method and make a previously released production order unavailable for assignment and production.

For example, it is used prior to sending changes to an already released production order.

The signature of this Method is specified below. Table 109 specifies the Arguments representation.

Signature

ReleaseProductionOrder(

[in] ProductionOrderHeaderType POToUnrelease,

[out] MethodExecutionFeedbackType ExecutionFeedback);

Table 112 - UnreleaseProductionOrder Method Arguments

Argument

Description

POToUnrelease

The Production Order Header for the Production Order to be unreleased.

ExecutionFeedback

The result of the execution of the method.