8.38 ProductionOrderOrchestrationLayerType ObjectType

8.38.1 Overview

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
BrowseNameProductionOrderOrchestrationLayerType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the TMCDeviceType, i.e. inheriting the Instance Declarations of that Node.
0:HasPropertyVariableProductionOrdersRetentionTime0:UInt32M, RW
0:HasComponentObjectProductionOrders0:FolderTypeM
0:HasComponentMethodAbortProductionOrderSee below.M
0:HasComponentMethodAssignProductionOrderSee below.M
0:HasComponentMethodCompleteProductionOrderSee below.M
0:HasComponentMethodGetDataSetSee below.M
0:HasComponentMethodGetMaterialListSee below.M
0:HasComponentMethodGetProductionOrderSee below.M
0:HasComponentMethodReleaseProductionOrderSee below.M
0:HasComponentMethodStartProductionOrderSee below.M
0:HasComponentMethodUnassignProductionOrderSee below.M
0:HasComponentMethodUnreleaseProductionOrderSee 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
ProductionOrders0:HasComponent Object <ProductionOrderNumber>ProductionOrderExecutionStateMachineTypeOP
BrowseName Description
ProductionOrdersRetentionTimeThe 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.

8.38.2 AbortProductionOrder Method

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
POToAbortThe Production Order to be aborted.
ExecutionFeedbackThe result of the execution of the method.

8.38.3 AssignProductionOrder 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
POToAssignThe Production Order Header to be assigned.
MachineModuleUserNameThe 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.
ExecutionFeedbackThe result of the execution of the method.

8.38.4 CompleteProductionOrder 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
POToCompleteThe Production Order Header to be completed.
MachineModuleUserNameThe 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.
ExecutionFeedbackThe result of the execution of the method.

8.38.5 GetDataSet Method

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
POHeaderThe Production Order Header of the dataset to be retrieved.
MachineModuleUserNameThe 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.
DataSetThe DataSet for the production order with Production Order Header.
ExecutionFeedbackThe result of the execution of the method.

8.38.6 GetMaterialList 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
POHeaderThe Production Order Header of the Material List to be retrieved.
MaterialListThe Material List for the production order with Production Order Header.
MachineModuleUserNameThe 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.
ExecutionFeedbackThe result of the execution of the method.

8.38.7 GetProductionOrder 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
POHeaderThe Production Order Header of the Material List to be retrieved.
MachineModuleUserNameThe 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.
ProductionOrderThe complete Production Order with header Production Order Header.
ExecutionFeedbackThe result of the execution of the method.

8.38.8 ReleaseProductionOrder 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
POToReleaseThe Production Order Header for the Production Order to be released.
MachineModuleUserNameThe 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.
ExecutionFeedbackThe result of the execution of the method.

8.38.9 StartProductionOrder 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]  ProductionOrderHeaderType	POToStart,
	[in]  0:String					MachineModuleUserName,
	[in]  0:String[]					SourceMaterialLoadingPointIDs,
	[in]  0:String[]				 DestinationMaterialOutputPointIDs,
	 	[out] MethodExecutionFeedbackType	ExecutionFeedback);
Table 110 - StartProductionOrder Method Arguments
Argument Description
POToStartThe Production Order Header for the Production Order to be started.
MachineModuleUserNameThe 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.
SourceMaterialLoadingPointIDsThe MaterialLoadingPoints where input materials will be fed for the Production Order to be started.
DestinationMaterialOutputPointIDsThe MaterialOutputPoints where output materials will be directed to for the Production Order to be started.
ExecutionFeedbackThe result of the execution of the method.

8.38.10 UnassignProductionOrder 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
POToUnassignThe Production Order Header for the Production Order to be unassigned.
ExecutionFeedbackThe result of the execution of the method.

8.38.11 UnreleaseProductionOrder 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
POToUnreleaseThe Production Order Header for the Production Order to be unreleased.
ExecutionFeedbackThe result of the execution of the method.