6 PackML Data Representation Model

6.1 General

The OPC UA PackML information model is a representation of the PackML data model in OPC ObjectTypes, VariableTypes, DataTypes and ReferenceTypes.

This model generates standard types. All PackML types will be defined in their own Namespace and will begin with “PackML” A key point is a standard ObjectType representation of the StateMachines defined in PackML. The model also defines some standard instances that are expected as a starting point for this model.

The following conventions apply to ObjectType, VariableType and DataType naming:

All ObjectTypes include “ObjectType” as part of the name

All StateMachines will end in “StateMachine”, all States will end in “State”, All Transitions will end in “Transition”

All DataTypes that are structures include “DataType” as part of the name, this is to be able to differentiate them from any VariableTypes that will just end in Type.

All enumerations will end in “Enum”, to clearly identify that it is an enumeration.

All base DataTypes (int32, float, …) used in the OPC UA server will be those defined in OPC UA, see OPC 10000-6 for more detail on the representation of the datatypes. This specification is typically implemented in a PLC, Annex C provides a non-normative copy of the DataType mapping described in PLC Open

Figure 9 - System Overview

Figure 9 illustrates the scope of PackML in a typical environment, with units acting as OPC UA Servers and a line controller as an OPC UA Client application. It defines a standard set of interfaces to and from a unit/machine, so that it can be controlled as an element of an overall production line. It maps the internal states of the unit into a standard state model, and internal commands into a standard set of commands, hiding the details of the actual implementation of the unit’s code.

Figure 9 also illustrates another typical example in which units perform peer-to-peer communication to coordinate the states and modes of an entire line. In this situation, each unit could act as both an OPC UA Server (of their own local state) and an OPC UA Client to communicate to upstream and downstream units.

6.2 Instance AddressSpace

Figure 10 provides an overview of the instance object model for PackML

Figure 10 - PackML Object Instance Overview

The OPC UA Server shall have a PackMLObjects folder under the OPC defined Objects folder on a UA Server. This folder shall contain one or more instances of PackMLBaseObjectType (see 6.3.2 for definition of PackMLBaseObjectType). A single OPC UA Server might contain a single instance of a PackML system or it might contain multiple PackML systems.

The PackMLObjects node is formally defined in Table 2.

Table 2 – PackMLObjects definition
Attribute Value
BrowseNamePackMLObjects
References NodeClass BrowseName TypeDefinition
Organized by the Objects Folder defined in OPC 10000-5
HasTypeDefinitionObjectTypeFolderType

6.3 Objects and ObjectTypes

6.3.1 Overview

The PackML model when adapted to OPC UA results in a number of StateMachines (see section 6.3.5 for a definition). Instances of these StateMachines may not expose all states and transitions at all times. The actual list of AvailableStates and AvailableTransitions are configured and each instance would be defined by either the end user or the machine builder. The PackML model also includes other meta data such as available mode, current mode, see section 6.3.2 for a complete list

6.3.2 PackMLBaseObjectType

The PackMLBaseObjectType defines a base type that can be used with any machine or object. This base type provides all required information for a working PackML system.

Figure 11 - PackMLBaseObjectType Overview

Table 3 formally defines the PackMLBaseObjectType.

Table 3 – PackMLBaseObjectType Definition
Attribute Value
BrowseNamePackMLBaseObjectType
IsAbstractFalse
Reference Node Class BrowseName DataType TypeDefinition ModellingRule RW
Subtype of the BaseObjectType from OPC 10000-5.
HasPropertyVariableTagIDStringPropertyTypeOptionalR
HasPropertyVariablePackMLVersionStringPropertyTypeOptionalR
HasComponentObjectAdminPackMLAdminObjectTypeMandatory
HasComponent ObjectStatusPackMLStatusObjectTypeMandatory
HasComponentObjectBaseStateMachinePackMLBaseStateMachineTypeMandatory
HasComponent MethodSetUnitModeDefined in section 6.7.2Mandatory
HasComponentMethodSetMachSpeedDefined in section 6.7.3Mandatory
HasComponentMethodSetProductDefined in section 6.7.4Mandatory
HasComponentMethodSetParameterDefined in section 6.7.17Mandatory
HasComponentMethodRemoteCommandDefined in section 6.7.15Optional
HasComponentMethodSetInterlockDefined in section 6.7.16 Optional

TagID – provide an additional field in which an associated name (third party cross reference or other string) can be stored. It can also be an additional name used to identify this PackML System.

PackMLVersion – provides the version of the supported OMAC PackML

Admin provides administrative functionality required for the PackML OPC UA server. It is defined in section 6.3.4. The administrative functionality exposed by this Object should be restricted to only users with administrative rights.

Status provides the status information required for a PackML OPC UA Server. It is defined in section 6.3.3.

SetUnitMode method allows an OPC UA Client to change the mode of the machine. The available modes are part of the supported Modes and a Client can pass any of the values listed. The Method may return an error if the requested mode is not allowed based on either the current mode of the machine or the state of the machine. For additional details see the definition of the SetUnitMode Method in 6.7.2

SetMachSpeed Method allows a Client to change the machine speed.

SetProduct Method allows a Client to change the product(s) and the ProcessVariables and Ingredients. For additional details see the definition of SetProduct Method in 6.7.4 .

SetParameter Method allows a Client to set the parameters for the machine. For additional details see the definition of SetParameter Method in 6.7.17.

RemoteCommand Method allows a Client to send a command to the UA Server that is to be passed to the PackML Server and or upstream or downstream Servers. Parameters sent to the Remote system are typically used in the EXECUTE and STARTING states for a production task. With the restriction that RemoteCommand Parameter Values are limited to REAL values. For additional details see the definition of the RemoteCommand Method in 6.7.15

SetInterlock method allows a Client to set one of the interlocks associated with the system. For additional details see the definition of the SetInterlock Method in 6.7.16

6.3.3 PackMLStatusObjectType

The PackMLStatusObjectType defines an ObjectType that is used to group all of the status information that is part of the PackML information model. It is illustrated in Figure 12

Figure 12 - PackMLStatusObjectType Overview

Table 4 formally defines the PackMLStatusObjectType.

Table 4 – PackMLStatusObjectType Definition
Attribute Value
BrowseNamePackMLStatusObjectType
IsAbstractFalse
Reference Node Class BrowseName DataType TypeDefinition ModellingRule RW
Subtype of the BaseObjectType from OPC 10000-5.
HasComponentVariableUnitModeRequestedBooleanBaseDataVariableTypeOptionalR
HasPropertyVariableUnitSupportedModesNodeIdPropertyTypeMandatoryR
HasComponentVariableUnitModeCurrentEnumerationBaseDataVariableTypeMandatoryR
HasComponentVariable UnitModeChangeInProcessBooleanBaseDataVariableTypeOptionalR
HasComponentVariableStateRequestedInt32BaseDataVariableTypeOptionalR
HasComponentVariableStateChangeInProcessBooleanBaseDataVariableTypeOptionalR
HasComponentVariable MachSpeedFloatAnalogItemTypeMandatoryR
HasComponentVariable CurMachSpeedFloatAnalogItemTypeMandatoryR
HasComponentVariableEquipmentBlockedBooleanBaseDataVariableTypeMandatoryR
HasComponentVariableEquipmentStarvedBooleanBaseDataVariableTypeMandatoryR
HasComponentVariableMaterialInterlockedBooleanBaseDataVariableTypeOptionalR
HasInterlockVariableMaterialInterlockBoolean[]BaseDataVariableTypeOptionalR
HasComponentVariableParameterPackMLDescriptorDataType[]BaseDataVariableTypeOptionalR
HasComponentVariableRemoteParameterPackMLRemoteInterfaceDataType[]BaseDataVariableTypeOptionalR
HasComponentVariableProductPackMLProductDataType[]BaseDataVariableTypeOptionalR

In OPC UA defined StateMachines, a mandatory Variable CurrentState provides the current state of the StateMachine, which is the current state of the PackML device. CurrentState is defined in OPC 10000-5.

UnitModeRequested - If TRUE, indicates that a unit mode change was requested, reflects the status of the Command UnitModeRequested.

UnitSupportedModes – provides the NodeId of the enumeration DataType that describes the available modes for this PackML instance. A Server might have more than one of these instances; each instance might expose a different set of available modes and thus have a different enumeration.

UnitModeCurrent - is used to display the current mode of the instance of this type. The DataType is Enumeration which is abstract, but an instance shall be assigned a concrete enumeration, which corresponds to the enumeration listed in UnitSupportedModes.

UnitModeChangeInProcess – a flag that indicates a unit change has been requested and is in progress

StateRequested - This value is used for state transition checking, to ensure that transitions to a target state can be achieved. The target state, StateRequested, is a numerical value corresponding to a state in the base state model (shown above).

StateChangeInProcess – a flag that indicates that a state change has been requested and is in progress. The StateMachine will report the current state.

MachSpeed - Setpoint speed of the unit.

CurMachSpeed - Current speed of the unit.

EquipmentBlocked - If TRUE, then processing is suspended because downstream equipment is unable to receive material (e.g. downstream buffer is full)

EquipmentStarved - If TRUE, then processing is suspended because upstream equipment is unable to send material.

MaterialInterlocked – a flag that indicates this machine is interlocked. It is a summary of the interlock variable that is associated with this machine.

MaterialInterlock - this is an array and describes the status of the materials that are ready for processing. It is comprised of a series of Boolean with 1 equaling readyor not low, 0 equaling not ready or low. Each bit represents a different user material.

Parameter – Current parameters used in the production job. This reflects the last parameter sent via the SetParameter Method.

RemoteParameter – the last remote parameter that were sent to the machine. This is optional variable is provided only if sending remote parameters are supported, the RemoteCommand Method is provided this variable shall also be provided. For additional details see the RemoteCommand Method definition in 6.7.15.

Product – provides a list of the products supported by this machine. The array is typically needed for machines that run multiple products. It defines the IDs of the products and process & process variables associated with the product. The product data can come from either a local HMI or remote systems and are used to process the product on the unit machine.

6.3.4 PackMLAdminObjectType

The PackMLAdminObjectType defines an ObjectType that is used to group all of the Admin information that is part of the PackML information model. It is illustrated in Figure 13.

Figure 13 - PackMLAdminObjectType Overview

Table 5 formally defines the PackMLAdminObjectType.

Table 5 – PackMLAdminObjectType Definition
Attribute Value
BrowseNamePackMLAdminObjectType
IsAbstractFalse

Reference
Node Class BrowseName DataType TypeDefinition ModelingRule RW
Subtype of the BaseObjectType from OPC 10000-5.
HasComponentVariableParameterPackMLDescriptorDataType[]BaseDataVariableType OptionalR
HasAlarmVariableAlarmPackMLAlarmDataType[]BaseDataVariableTypeOptionalR
HasComponentVariableAlarmExtentInt32BaseDataVariableTypeOptionalR
HasAlarmHistoryVariableAlarmHistoryPackMLAlarmDataType[]BaseDataVariableTypeOptional R
HasComponentVariableAlarmHistoryExtentInt32BaseDataVariableTypeOptionalR
HasWarningVariableWarningPackMLAlarmDataType[]BaseDataVariableTypeOptional R
HasComponentVariableWarningExtentInt32BaseDataVariableTypeOptionalR
HasStopReasonVariableStopReasonPackMLAlarmDataTypeBaseDataVariableTypeOptional R
HasComponentVariableStopReasonExtentInt32BaseDataVariableTypeOptionalR
HasComponentVariableModeCurrentTimeInt32[]BaseDataVariableTypeOptionalR
HasComponentVariableModeCumulativeTimeInt32[]BaseDataVariableTypeOptionalR
HasComponentVariableStateCurrentTimeInt32[][]BaseDataVariableTypeOptionalR
HasComponentVariableStateCumulativeTimeInt32[][]BaseDataVariableTypeOptionalR
HasComponentVariableProdConsumedCountPackMLCountDataType []BaseDataVariableTypeOptionalR
HasComponentVariableProdProcessedCountPackMLCountDataType []BaseDataVariableTypeOptionalR
HasComponentVariableProdDefectiveCountPackMLCountDataType []BaseDataVariableTypeOptionalR
HasComponentVariableAccTimeSinceResetInt32BaseDataVariableTypeOptionalR
HasComponentVariableMachDesignSpeedFloatBaseDataVariableTypeOptionalR

Parameter - The parameter tags associated with the local interface are typically used as parameters that are displayed or used on the unit locally, for example from an HMI. These parameters can be used to display any quality, alarm, or machine downtime parameter. The Parameters are typically limited to parameters related the unit. The length of the array is the maximum number of parameters needed.

Alarm - Alarm Events (trigger, value, message, category,…). The alarm tags associated to the local interface are typically used as parameters that are displayed or used on the unit locally, for example from an HMI. These alarm parameters can be used to display any alarm, or machine downtime cause that is currently occurring in the system. The alarms are typically limited to the machine unit. Each machine can define as many alarms as are required for the machine.

AlarmExtent - Defines the maximum number of alarms available, for the machine annunciation or reporting

AlarmHistory - These alarm history parameters can be used to display any alarm history, or machine downtime cause.

AlarmHistoryExtend - associated with the maximum number of alarms needed to be archived or tagged as alarm history for the machine.

Warning - Array of warning information Events. Warnings are general events that do not cause the machine to stop, but may require operator action because a stoppage may be imminent. Warning elements have the same structure as Stop Reason elements.

WarningExtent - Defines the maximum number of warning elements available.

StopReason - A structure for the stop reason Event (similar to Alarms) which define the possible stop reasons (trigger, value, message, category). Stop Reason is typically used for “First Out Fault” Reporting and Other Stoppage Events. The stop reason is the first event captured during an abort, held, suspended or stop event.

StopReasonExtent - Defines the maximum number of stop reason elements or available.

ModeCurrentTime - The current amount of time, in seconds, that the machine has been in each mode. The array index for a mode is the Unit mode value. The values roll over to 0 at 2,147,483,647.

ModeCumulativeTime - The cumulative amount of time, in seconds, that the machine has been in each mode. The array index for a mode is the Unit mode value. The value is the cumulative elapsed time the machine has spent in each mode since its timers and counters were reset. The values roll over to 0 at 2,147,483,647.

StateCurrentTime - The current amount of time, in seconds, that the machine has been in each state for each mode. The first array index for is the Unit mode value, the second array index is the state value.. The values roll over to 0 at 2,147,483,647.

StateCumulativeTime - The cumulative amount of time, in seconds, that the machine has been in each state for each mode. The first array index for is the Unit mode value, the second array index is the state value. The value is the cumulative elapsed time the machine has spent in each mode and state since its timers and counters were reset. The values roll over to 0 at 2,147,483,647

ProdConsumedCount - Represents the material used/consumed in the production machine. An example of tag usage would be the number of bags consumed in a filler, or bagger packaging machine, or the amount of linear length used, or the number caps used. This tag can be used locally or remotely if needed. The extent of the array is typically limited to the number of raw materials needed to be counted. The array is typically used for unit machines that run multiple raw materials.

ProdProcessedCount - Represents the products processed in the production machine. An example of tag usage would be the number of products that were made, including all good and defective products. The structure of the ProdProcessedCount is the same as the ProdConsumedCount. The length of the array is typically limited to the number of products that need to be counted. The number of products processed minus the defective count is the number of non-defective products made by the machine. The array index of # = 0 should be reserved for the count of the number of units from the primary production stream.

ProdDefectiveCount - Represents the products marked as defective in the production machine. The structure of the ProdDefectiveCount is the same as the ProdConsumedCount. The length of the array is typically limited to the number of products that need to be counted. The number of products processed minus the defective count is the number of non-defective products made by the machine. The array index of # = 0 should be reserved for the count of the number of units from the primary production stream.

AccTimeSinceReset - Represents the amount of time, in seconds, since the last reset of all counters as triggered. Counters that are reset are:

•UnitName.Admin.ModeCurrentTime[#]

•UnitName.Admin.ModeCumulativeTime[#]

•UnitName.Admin.StateCurrentTime[#,#]

•UnitName.Admin.StateCumulativeTime[#,#]

•UnitName.Admin.ProdConsumedCount[#].Count

•UnitName.Admin.ProdProcessedCount[#].Count

•UnitName.Admin.ProdDefectiveCount[#].Count

•UnitName.Admin.AccTimeSinceReset

MachDesignSpeed - Represents the maximum design speed of the machine in primary packages per minute for the package configuration being run. This speed is NOT the maximum speed as specified by the manufacturer, but rather the speed of the machine is designed to run in its installed environment.

6.3.5 StateMachines Overview

The Figure 14 provides an overview of the StateMachines that are part of the model.

Figure 14 - PackML StateMachines Overview

A key point in PackML StateMachines is that all of the StateMachines defined in PackML shall require that the optional AvailableTransitions and AvailableStates component of the FiniteStateMachineType be provided on all instance of the StateMachine. This allows Clients to understand the available States and Transitions for the given instance of the StateMachine. A StateMachine may restrict the States and Transition that are currently available. The following figure provides an overview of the PackML States. The Stopped State is commonly the initial sub-state that will be the starting point for the Cleared parent state. The Running State commonly will use the Resetting State as the initial state, but not all instance of the Running State sub-state model will include Resetting, so no initial state is defined for the Running State. The proposed valid initial States for this model are the Idle or Resetting States. This is Server dependant. The initial state for the system is Aborted. Alternative it could be Cleared as parent state with the proposal of Stopped as initial sub state. Figure 15 - PackML States provide an overview of the states and transitions in the StateMachine. The model refers to the PackML state model Version 2015. The dashed lines for the Hold transitions are optional extensions of the state model

Figure 15 - PackML States

6.3.6 PackMLBaseStateMachineType

The PackMLBaseStateMachineType is the top level StateMachine for PackML. It is illustrated in Figure 16. The TR-88 specification does not define an initial State for this StateMachine, but typically the state machine uses either the Aborted or Stopped State as an initial State. Annex B provide recommended display names for the various states.

Figure 16 - PackMLBaseStateMachineType illustration

The PackMLBaseStateMachineType defines the available states in a PackML system. The type is defined in Table 6. StateTypes and TransitionTypes only exist in the type system, thus they do not have a modelling rule.

Table 6 – PackMLBaseStateMachineType Definition
Attribute Value
BrowseNamePackMLBaseStateMachineType
IsAbstractFalse
References Node
Class
BrowseName Data
Type
TypeDefinition Modelling
Rule
Subtype of the FiniteStateMachineType defined in OPC 10000-5
HasComponentVariable0:AvailableTransitionsNodeId[]BaseDataVariableTypeMandatory
HasComponentVariable0:AvailableStatesNodeId[]BaseDataVariableTypeMandatory
HasComponentObjectAbortingStateType
HasComponentObjectAbortedStateType
HasComponent ObjectClearedStateType
HasComponentObjectMachineStatePackMLMachineStateMachineTypeMandatory
HasComponentObjectAbortedToClearedTransitionType
HasComponentObjectAbortingToAbortedTransitionType
HasComponentObjectClearedToAbortingTransitionType
HasComponentMethodAbortDefined in 6.7.5Optional
HasComponentMethodClearDefined in 6.7.6Optional

The AvailableTransitions and AvailableStates are optional variables in the FiniteStateMachine, but they are overridden in the PackMLBaseStateMachine and are made Mandatory. The PackMLBaseStateMachine does include a sub-state machine that provides sub-states for the Cleared State.

Aborting - The ABORTING state can be entered at any time in response to the Abort command or on the occurrence of a machine fault. The aborting logic will bring the machine to a rapid safe stop. Operation of the emergency stop will cause the machine to be tripped by its safety system. It will also provide a signal to initiate the ABORT State. The value of this StateType is 8.

Aborted - This state maintains machine status information relevant to the Abort condition. The machine can only exit the ABORTED state after an explicit Clear command, subsequently to manual intervention to correct and reset the detected machine faults. The value of this StateType is 9.

Cleared – this state exposes the MachineState sub StateMachine and state associated with this substate machine. The value of this StateType is 19.

MachineState – A PackMLMachineStateMachineType defined in section 6.3.7.

Abort – a Method to trigger a change of state to Aborting. This will affect all sub-states in cleared state. Defined in 6.7.5.

Clear – a Method to trigger a change of state to the Cleared. Defined in 6.7.6.

Table 7 defines the available Transitions in the PackMLBaseStateMachineType.

Table 7 – PackMLBaseStateMachineType Additional References
Source Path Reference Type Is Forward Target Path
ClearedToAbortingToStateTrueAborting
FromStateTrueCleared
HasCauseTrueAbort
AbortingToAbortedToStateTrueAborted
FromStateTrueAborting
AbortedToClearedToStateTrueCleared
FromStateTrueAborted
HasCauseTrueClear

6.3.7 PackMLMachineStateMachineType

The PackMLMachineStateMachineType defines the machine level state machine. It is illustrated in Figure 17.

The TR-88 specification does not define an initial State for this StateMachine, but typically the state machine uses Stopped State as an initial State. Annex B provides recommended display names for the various states.

Figure 17 - PackMLMachineStateMachineType illustration

Table 8 defines the PackMLMachineStateMachineType. StateTypes and TransitionTypes only exist in the type system, thus they do not have a modelling rule.

Table 8 – PackMLMachineStateMachineType Definition
Attribute Value
BrowseNamePackMLMachineStateMachineType
IsAbstractFalse
Reference Node Class BrowseName DataType TypeDefinition ModellingRule
Subtype of the FiniteStateMachineType from OPC 10000-5.
HasComponentVariable0:AvailableTransitionsNodeId[]BaseDataVariableTypeMandatory
HasComponentVariable0:AvailableStatesNodeId[]BaseDataVariableTypeMandatory
HasComponentObjectStoppedStateType
HasComponentObjectStoppingStateType
HasComponentObjectClearingStateType
HasComponentObjectRunningStateType
HasComponentObjectExecuteStatePackMLExecuteStateMachineTypeMandatory
HasComponentObjectStoppingToStoppedTransitionType
HasComponentObjectClearingToStoppedTransitionType
HasComponentObjectStoppedToRunningTransitionType
HasComponentObjectRunningToStoppingTransitionType
HasComponentMethodStopDefined in 6.7.7Optional
HasComponentMethodResetDefined in 6.7.8Optional

The AvailableTransitions and AvailableStates are optional variables in the FiniteStateMachine, but they are overridden in the PackMLMachineStateMachineType and are made Mandatory. The PackMLMachineStateMachineType does include a sub-state machine that provides sub-states for the Run State.

Stopped - The machine is powered and stationary after completing the STOPPING state. All communications with other systems are functioning (if applicable). The value of this StateType is 2

Stopping - This state executes the logic which brings the machine to a controlled stop as reflected by the STOPPED state. The value of this StateType is 7.

Clearing - Initiated by a state command to clear faults that may have occurred when ABORTING, and are present in the ABORTED state. The value of this StateType is 1.

Running – the State that allows the ExecuteState machine to become active, enabling sub-states provided by this StateMachine. The value of this StateType is 18.

ExecuteStateStateMachine that provides additional sub states.

Stop – A Method to trigger a change of state to Stopping. This will affect all sub-states in Run state. Defined in 6.7.7

Reset – A Method to trigger a change of state to Running, enabling all of the sub-states of Running and the respective Methods that they expose. Defined in 6.7.8

The transitions are defined in Table 9.

Table 9 – PackMLMachineStateMachineType Additional References
Source Path Reference Type Is Forward Target Path
StoppedToRunningFromStateTrueStopped
ToStateTrueRunning
HasCauseTrueReset
StoppingToStoppedFromStateTrueStopping
ToStateTrueStopped
ClearingToStoppedFromStateTrueClearing
ToStateTrueStopped
RunningToStoppingFromStateTrueRunning
ToStateTrueStopping
HasCauseTrueStop

6.3.8 PackMLExecuteStateMachineType

The PackMLExecuteStateMachineType provides all of the base states defined in PackML. It is illustrated in Figure 18. The TR-88 specification does not define an initial State for this StateMachine, but typically the state machine use either the Idle or Resetting State as an initial State. Annex B provide recommended display names for the various states.

Figure 18 – PackMLExecuteStateMachineType illustration

The PackMLExecuteStateMachineType is defined in Table 10. StateTypes and TransitionTypes only exist in the type system, thus they do not have a modelling rule.

Table 10 – PackMLExecuteStateMachineType Definition
Attribute Value
BrowseNamePackMLExecuteStateMachineType
IsAbstractFalse
References NodeClass BrowseName DataType TypeDefinition Modelling
Rule
Subtype of the FiniteStateMachineType defined in OPC 10000-5
HasComponentVariable0: AvailableTransitionsNodeId[]BaseDataVariableTypeMandatory
HasComponentVariable0: AvailableStatesNodeId[]BaseDataVariableTypeMandatory
HasComponentObjectResettingStateType
HasComponentObjectIdleStateType
HasComponentObjectStartingStateType
HasComponentObjectSuspendingStateType
HasComponentObjectSuspendedStateType
HasComponentObjectUnsuspendingStateType
HasComponentObjectHoldingStateType
HasComponentObjectHeldStateType
HasComponentObjectUnholdingStateType
HasComponentObjectExecuteStateType
HasComponentObjectCompletingStateType
HasComponentObjectCompleteStateType
HasComponentObjectResettingToIdleTransitionType
HasComponentObjectIdleToStartingTransitionType
HasComponentObjectStartingToExecuteTransitionType
HasComponentObjectExecuteToSuspendingTransitionType
HasComponentObjectSuspendingToSuspendedTransitionType
HasComponentObjectSuspendedToUnsuspendingTransitionType
HasComponentObjectUnsuspendingToExecuteTransitionType
HasComponentObjectExecuteToHoldingTransitionType
HasComponentObjectHoldingToHeldTransitionType
HasComponentObjectHeldToUnholdingTransitionType
HasComponentObjectUnholdingToExecuteTransitionType
HasComponentObjectExecuteToCompletingTransitionType
HasComponentObjectCompletingToCompleteTransitionType
HasComponentObjectCompleteToResettingTransitionType
HasComponentObjectStartingToHoldingTransitionType
HasComponentObjectUnsuspendingToHoldingTransitionType
HasComponentObjectSuspendedToHoldingTransitionType
HasComponentObjectSuspendingToHoldingTransitionType
HasComponentObjectUnholdingToHoldingTransitionType
HasComponentMethodResetDefined in Clause 6.7.8Optional
HasComponentMethodToCompleteDefined in Clause 6.7.9Optional
HasComponentMethodStartDefined in Clause 6.7.10Optional
HasComponentMethodUnholdDefined in Clause 6.7.11Optional
HasComponentMethodSuspendDefined in Clause 6.7.12Optional
HasComponentMethodHoldDefined in Clause 6.7.14Optional
HasComponentMethodUnsuspendDefined in Clause 6.7.13Optional

*Not all transitions defined in ANSI/ISA - TR88.00.02 - 2015. Following additional transitions in the object prepared for potential future extensions in TR88: StartingToHolding, UnsuspendingToHolding, SuspendedToHolding, SuspendingToHolding, UnholdingToHolding.

This FiniteStateMachine supports multiple Active states. It also supports 19 Transitions and a Method for transition between states.

Resetting: In response to a Reset command, the unit/machine will transition to Resetting from either Stopped or Complete. In this state the unit/machine attempts to clear any standing errors or stop causes. If successful, the unit/machine transitions to Idle. No hazardous motion should happen in this state. The value of this StateType is 15

Idle: The unit/machine is in an error-free state, waiting to start. The unit/machine transitions automatically to Idle after all steps necessary for Resetting have been completed. All conditions achieved during Resetting are maintained. A Start command will transition the unit/machine from Idle to Starting. The value of this StateType is 4.

Starting: The unit/machine completes all steps necessary to begin execution of the active machine mode. A Start command will cause the unit/machine to transition from Idle to Starting. The unit/machine will transition automatically from Starting to Execute once all required steps have been completed. The value of this StateType is 3.

Suspending: The unit/machine will transition from Execute to Suspending if conditions external to the unit/machine require a pause in production. Such conditions include faults to upstream or downstream equipment. The decision to Suspend may be made be a supervisory system monitoring the production line conditions or by unit/machine sensors detecting downstream blockages or upstream product scarcity. (In the former case, the unit/machine is 'blocked”; in the latter case, the unit/machine is “starved”) After all steps required to suspend the machine have been completed, the unit/machine will automatically transition to Suspended state. The value of this StateType is 13.

Suspended: The unit/machine is paused, waiting for external process conditions to clear. In this state, the unit/machine shall not produce product, but may, if required, dry-cycle. Once external conditions have returned to normal, the unit/machine will transition to Unsuspending, typically without operator intervention. The value of this StateType is 5.

Unsuspending: After all external process conditions that caused the unit/machine to suspend have cleared, the unit/machine completes all steps required to resume execution of the active machine mode. Once all required actions to unsuspend the unit/machine have been completed, the unit/machine will automatically transition to Execute state. The value of this StateType is 14.

Holding: The unit/machine will transition from Execute to Holding if conditions internal to the unit/machine require a pause in production. Such conditions would include low levels on materials required for production or other minor issues requiring operator service, for example. The decision to hold may be made automatically by the unit/machine itself or by an operator. After all steps required to hold the machine have been completed, the unit/machine will transition automatically to Held state. The value of this StateType is 10.

Held: The unit/machine is paused, waiting for internal process conditions to clear. In this state, the unit/machine shall not produce product, though it may, if required, dry-cycle. A transition to Unholding will occur once internal machine conditions have cleared or if the Unhold command is initiated by an operator. The value of this StateType is 11.

Unholding: After all internal process conditions that caused the unit/machine to hold have cleared, the unit/machine completes all steps required to resume execution of the active machine mode. Once all required actions to unhold the machine have been completed, the unit/machine will transition automatically to Execute state. The value of this StateType is 12.

Execute: If the unit/machine is actively carrying out the behaviour or activity defined by the selected mode, then the machine is in Execute state. If the unit/machine is in production mode, for example, this means that the machine is producing product. The value of this StateType is 6.

Completing: Once the process associated with the current mode has reached a defined threshold (e.g. the required number of products for the current job have been produced), the unit/machine transitions from Execute to Completing. In this state all steps necessary to shut down the current process are carried out. The machine then transitions automatically to Complete state. The value of this StateType is 16.

Complete: Complete indicates the process associated with the active mode has come to its defined end. The unit/machine will wait in this state until a Reset command is issued (in which case it will transition to Resetting), or until the unit/machine is Stopped or Aborted. The value of this StateType is 17.

The Transitions are described in Table 11. This FiniteStateMachine also supports six Methods, for transitioning between states. This StateMachine includes transition to Holding from Unholding, Starting, Unsuspending, Suspended, Suspending, all of which are extension to the ISA-TR88.00.02-2015 specification.

Table 11 – PackMLExecuteStateMachineType Additional References
Source Path Reference Type Is Forward Target Path
ResettingToIdleFromStateTrueResetting
ToStateTrueIdle
IdleToStartingFromStateTrueIdle
ToStateTrueStarting
HasCauseTrueStart
StartingToExecuteFromStateTrueStarting
ToStateTrueExecute
ExecuteToSuspendingFromStateTrueExecute
ToStateTrueSuspending
HasCauseTrueSuspend
SuspendingToSuspendedFromStateTrueSuspending
ToStateTrueSuspended
SuspendedToUnsuspendingFromStateTrueSuspended
ToStateTrueUnsuspending
HasCauseTrueUnsuspend
UnsuspendingToExecuteFromStateTrueUnsuspending
ToStateTrueExecute
ExecuteToHoldingFromStateTrueExecute
ToStateTrueHolding
HasCauseTrueHold
StartingToHoldingFromStateTrueStarting
ToStateTrueHolding
HasCauseTrueHold
SuspendingToHoldingFromStateTrueSuspending
ToStateTrueHolding
HasCauseTrueHold
SuspendedToHoldingFromStateTrueSuspended
ToStateTrueHolding
HasCauseTrueHold
UnsuspendingToHoldingFromStateTrueUnsuspending
ToStateTrueHolding
HasCauseTrueHold
UnholdingToHoldingFromStateTrueUnholding
ToStateTrueHolding
HasCauseTrueHold
HoldingToHeldFromStateTrueHolding
ToStateTrueHeld
HeldToUnholdingFromStateTrueHeld
ToStateTrueUnholding
HasCauseTrueUnhold
UnholdingToExecuteFromStateTrueUnholding
ToStateTrueExecute
ExecuteToCompletingFromStateTrueExecute
ToStateTrueCompleting
HasCauseTrueToComplete
CompletingToCompleteFromStateTrueCompleting
ToStateTrueComplete
CompleteToResettingFromStateTrueComplete
ToStateTrueResetting
HasCauseTrueReset

*Not all transitions defined in ANSI/ISA - TR88.00.02 - 2015. Following additional transitions in the object prepared for potential future extensions in TR88: StartingToHolding, UnsuspendingToHolding, SuspendedToHolding, SuspendingToHolding, UnholdingToHolding.

6.4 Variables and VariableTypes

-

6.5 DataTypes

6.5.1 Overview

This section defines any enumeration or structure that are defined as part of the PackML specification.

6.5.2 ProductionMaintenanceModeEnum

The ProductionMaintenanceModeEnum describes the predefined modes. This is a default mode enumeration. A Server may define additional enumeration that describe the modes they support, but any such enumeration must include “Produce” as enumeration 1 and if Maintenance or Manual are include, they must be 2 and 3 respectively. Any additional mode must start at 4 or greater. If vendor specific or end user specific mode enumerations are included, they shall be defined as a subtype of this enumeration. The ProductionMaintenanceModeEnum is the default enumeration that shall be used if no vendor or end user mode enumeration is defined. The ProductionMaintenanceModeEnum is defined in Table 12.

Table 12 – ProductionMaintenanceModeEnum values
NameValueDescription
Invalid0This is an invalid mode
Produce1Machine is in production mode
Maintenance2Machine is in maintenance mode
Manual3Machine is in manual mode

where the following definition apply:

Produce corresponds to the PackML Production Mode which is routine production.

Maintenance corresponds to the PackML Maintenance Mode which is the ability to run a machine independent of other machine in a production line.

Manual corresponds to the PackML Manual Mode which provides direct control of the individual machine elements.

6.5.3 PackMLCountDataType

The PackMLCountDataType is used to generate summary information about the system. The information depending on the use might be related to produced product, defective materials or any other information that needs to be tracked. It is formally defined in Table 13

Table 13 – PackMLCountDataType Structure
Name Type Description
PackMLCountDataTypeStructure

ID

Int32A user defined value that represents the consumed (processed or defective) material. Typically, this is an SKU number or a user material master number.

Name

StringThe name is used to literally describe the material ID, and its associated material.

Unit

EUInformationThe unit tag is used to describe the names associated with a specific material used by the machine.

Count

Int32The amount of consumed (processed or defective) material on the current production job.

AccCount

Int32The cumulative count value of the material produced (or consumed). This counter gives the user a non-resetting counter that may be used for OEE calculations

6.5.4 PackMLDescriptorDataType

The PackMLDescriptorDataType provides the PackML Parameter structure. The PackMLDescriptorDataType is formally defined in Table 14

Table 14 – PackMLDescriptorDataType Structure
Name Type Description
PackMLDescriptorDataTypeStructure

ID

Int32A unique number assigned to the parameter.

Name

StringThe name of the parameter

Unit

EUInformationOPC UA engineering unit information

Value

FloatThis is the numeric value of the parameter
.

6.5.5 PackMLIngredientsDataType

The PackMLIngredientsDataType provides the PackML Parameter structure. The PackMLIngredientsDataType is formally defined in Table 15.

Table 15 – PackMLIngredientsDataType Structure
Name Type Description
PackMLIngredientsDataTypeStructure

IngredientID

Int32A unique number assigned to the ingredient.

Parameter

PackMLDescriptorDataType[]The array of Parameter that correspond to the ingredient

6.5.6 PackMLProductDataType

The PackMLProductDataType provides the PackML product information. The PackMLProductDataType is formally defined in Table 16.

Table 16 – PackMLProductDataType Structure
Name Type Description
PackMLProductDataTypeStructure

ProductID

Int32A unique number assigned to the product.

ProcessVariables

PackMLDescriptorDataType[]The array of Process variables associated with this product

Ingredients

PackMLIngredientsDataType[]The array of ingredients associated with this product.

6.5.7 PackMLRemoteInterfaceDataType

The PackMLRemoteInterfaceDataType provides the PackML remote connection information. The PackMLRemoteInterfaceDataType is formally defined in Table 17.

Table 17 – PackMLRemoteInterfaceDataType Structure
Name Type Description
PackMLRemoteInterfaceDataTypeStructureThis datatype is used with the RemoteCommand Method defined in 6.7.15..

Number

Int32This is the unique number for the downstream/upstream unit machine using a common tag structure as the unit machine. The number should correspond to a number on the communication network, such as network ID, or IP address identifier. This number corresponds to the “information sender” that is setting the command data in the RemoteInterface[#] structure of the unit machine.

ControlCmdNumber

Int32A user defined command number associated with coded value from a remote unit. This number is a coded value sent from one node on the network to another. The value can be associated with a unit mode change request, speed change request, a state change request, etc.

CmdValue

Int32

This is the command value associated with the ControlCmdNumber above. The command value may be the speed requested, state change, etc.

Example:For an upstream machine designated as #2 a control command number of 5 may be related to the speed setting value for the machine. A value of 400 can be used to modify the remote machine setpoint.

Command.RemoteInterface[1].Number = 2

Command.RemoteInterface[1].ControlCmdNumber = 5

Command.RemoteInterface[1].CmdValue = 400

Parameter

PackMLDescriptorDataType[]The parameter tags associated to commanded remote interface are typically used for command parameters that are given to the unit machine from remote machines. The parameters are typically needed for coordinating the unit machine or production with other machines. The parameter value may be anything from machine limit parameters to temperatures and counter presets. The parameters are typically limited to machine parameters as product and process parameters are described in later tags.

6.6 ReferenceTypes

6.6.1 HasInterlock

This reference type is used to point to an Interlock. It is defined in Table 18

Table 18 – HasInterlock reference type
Attributes Value
BrowseNameHasInterlock
InverseNameInterlockFor
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
Subtype of HasComponent defined in OPC 10000-5

6.6.2 HasAlarm

This reference type is used to point to an Alarm. It is defined in Table 19.

Table 19 – HasAlarm reference type
Attributes Value
BrowseNameHasAlarm
InverseNameAlarmFor
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
Subtype of HasComponent defined in OPC 10000-5

6.6.3 HasAlarmHistory

This reference type is used to point to an Alarm History. It is defined in Table 20

Table 20 – HasAlarmHistory reference type
Attributes Value
BrowseNameHasAlarmHistory
InverseNameAlarmHistoryFor
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
Subtype of HasComponent defined in OPC 10000-5

6.6.4 HasWarning

This reference type is used to point to a Warning. It is defined in Table 19.

Table 21 – HasWarning reference type
Attributes Value
BrowseNameHasWarning
InverseNameWarningFor
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
Subtype of HasComponent defined in OPC 10000-5

6.6.5 HasStopReason

This reference type is used to point to a StopReason. It is defined in Table 19.

Table 22 – HasStopReason reference type
Attributes Value
BrowseNameHasStopReason
InverseNameStopReasonFor
SymmetricFalse
IsAbstractFalse
References NodeClass BrowseName Comment
Subtype of HasComponent defined in OPC 10000-5

6.7 Methods

6.7.1 Overview

This section provides definition of the method used in this specification. These methods are referenced from more than one location or are part of more than one object in some cases. The functionality for the method is the same for all objects

6.7.2 SetUnitMode Method

This Method allows an OPC UA Client to change the mode of the unit. Parameters are defined in Table 23

Signature

	SetUnitMode(
		[in] Int32 RequestedMode
		);
Table 23 - SetUnitMode Method Parameters
Argument Description
RequestedModeThe requested mode from the list of available modes in the enumeration from NodeID “UnitSupportedModes” in PackMLStatusObjectType

Method result codes are defined in Table 24

Table 24 - SetUnitMode Method Result Codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)
Bad_ArgumentsMissingSee OPC 10000-4 – Services for the description of this result code (The Client did not specify all of the input arguments for the Method.)
Bad_TooManyArgumentsSee OPC 10000-4 – Services for the description of this result code (The Client specified more input arguments than defined for the Method.)
Bad_InvalidArgumentSee OPC 10000-4 – Services for the description of this result code. (Used to indicate in the operation level results that one or more of the input arguments are invalid. The inputArgumentResults contain the specific status code for each invalid argument.)
Bad_TypeMismatchSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that an input argument does not have the correct data type.)

Table 25 specifies the AddressSpace representation for the SetUnitMode Method. SetUnitMode includes an InputArgument, where the input argument details are provided in Table 23.

Table 25 - SetUnitMode Method AddressSpace Definition
Attribute Value
BrowseNameSetUnitMode
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory

6.7.3 SetMachSpeed Method

This Method allows an OPC UA Client to change the speed of the machine or unit. Parameters are defined in Table 26

Signature

	SetMachSpeed(
		[in] Float RequestedMachineSpeed
		);
Table 26 - SetMachSpeed Method Parameters
Argument Description
RequestedMachineSpeedThe target machine speed

Method result codes are defined in Table 27

Table 27 - SetMachSpeed Method ResultCodes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)
Bad_ArgumentsMissingSee OPC 10000-4 – Services for the description of this result code (The Client did not specify all of the input arguments for the Method.)
Bad_TooManyArgumentsSee OPC 10000-4 – Services for the description of this result code (The Client specified more input arguments than defined for the Method.)
Bad_InvalidArgumentSee OPC 10000-4 – Services for the description of this result code. (Used to indicate in the operation level results that one or more of the input arguments are invalid. The inputArgumentResults contain the specific status code for each invalid argument.)
Bad_TypeMismatchSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that an input argument does not have the correct data type.)

Table 28 specifies the AddressSpace representation for the SetMachSpeed Method. SetMachSpeed includes an array of InputArguments, where the input argument details are provided in Table 26.

Table 28 – SetMachSpeed Method AddressSpace Definition
Attribute Value
BrowseNameSetMachSpeed
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory

6.7.4 SetProduct Method

This Method allows an OPC UA Client to change product associated with this PackML system. Parameters are defined in Table 29.

Signature

	SetProduct(
		[in] PackMLProductDataType[] Product
	);
Table 29 - SetProduct Method Parameters
Argument Description
ProductThis structure is an array of product definition, which includes the ProductId, ProcessVariables array and Ingredients array. See 6.5.6 for a definition of the DataType.

Method result codes are defined in Table 30

Table 30 - SetProduct Method Result Codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)
Bad_ArgumentsMissingSee OPC 10000-4 – Services for the description of this result code (The Client did not specify all of the input arguments for the Method.)
Bad_TooManyArgumentsSee OPC 10000-4 – Services for the description of this result code (The Client specified more input arguments than defined for the Method.)
Bad_InvalidArgumentSee OPC 10000-4 – Services for the description of this result code. (Used to indicate in the operation level results that one or more of the input arguments are invalid. The inputArgumentResults contain the specific status code for each invalid argument.)
Bad_TypeMismatchSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that an input argument does not have the correct data type.)

Table 31 specifies the AddressSpace representation for the SetProduct Method. SetProduct includes an array of InputArguments, where the input argument details are provided in Table 29.

Table 31 – SetProduct Method AddressSpace Definition
Attribute Value
BrowseNameSetProduct
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory

6.7.5 Abort Method

This Method is used as part of the PackMLBaseStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Aborting state.

Signature

	Abort(
		);

Method result codes are defined in Table 32.

Table 32 - Abort Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)

Table 33 specifies the AddressSpace representation for the Abort Method. Abort has no input or output parameters and has no referenced objects or variables.

Table 33 – Abort Method AddressSpace Definition
Attribute Value
BrowseNameAbort
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.6 Clear Method

This Method is used as part of the PackMLBaseStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Cleared state.

Signature

	Clear(
		);

Method result codes are defined in Table 34.

Table 34 - Clear method result codes
Result CodeDescription
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)

Table 35 specifies the AddressSpace representation for the Clear Method. Clear has no input or output parameters and has no referenced objects or variables.

Table 35 – Clear Method AddressSpace Definition
Attribute Value
BrowseNameClear
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.7 Stop Method

This Method is used as part of the PackMLMachineStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Stopping state.

Signature

	Stop(
		); 

Method result codes are defined in Table 36

Table 36 - Stop Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)

Table 37 specifies the AddressSpace representation for the Stop Method. Stop has no input or output parameters and has no referenced objects or variables.

Table 37 – Stop Method AddressSpace Definition
Attribute Value
BrowseNameStop
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.8 Reset Method

This Method is used as part of the PackMLExecuteStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Resetting state.

Signature

	Reset(
		); 

Method result codes are defined in Table 38.

Table 38 - Reset Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)

Table 39 specifies the AddressSpace representation for the Reset Method. Reset has no input or output parameters and has no referenced Objects or Variables.

Table 39 – Reset Method AddressSpace Definition
Attribute Value
BrowseNameReset
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.9 ToComplete Method

This Method is used as part of the PackMLExecuteStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Complete state.

Signature

	ToComplete(
		);

Method result codes are defined in Table 40.

Table 40 - ToComplete Method result codes
Result CodeDescription
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)

Table 41 specifies the AddressSpace representation for the ToComplete Method. Complete has no input or output parameters and has no referenced objects or variables.

Table 41 – ToComplete Method AddressSpace Definition
Attribute Value
BrowseNameToComplete
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.10 Start Method

This Method is used as part of the PackMLExecuteStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Starting State and send parameters at the same time. Which is an extension to the ISA-TR88.00.02-2015 specification. The parameter is defined in Table 42

Signature

	Start(
		[in] PackMLDescriptorDataType[] Parameter
	); 
Table 42 - Start Method Parameters
Argument Description
ParameterThe array of parameter with Id, Name, Unit and Value can be used by the method. See 6.5.4 for the definition of the DataType.

Method result codes are defined in Table 43.

Table 43 - Start Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)
Bad_ArgumentsMissingSee OPC 10000-4 – Services for the description of this result code (The Client did not specify all of the input arguments for the Method.)
Bad_TooManyArgumentsSee OPC 10000-4 – Services for the description of this result code (The Client specified more input arguments than defined for the Method.)
Bad_InvalidArgumentSee OPC 10000-4 – Services for the description of this result code. (Used to indicate in the operation level results that one or more of the input arguments are invalid. The inputArgumentResults contain the specific status code for each invalid argument.)
Bad_TypeMismatchSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that an input argument does not have the correct data type.)

Table 44 specifies the AddressSpace representation for the Start Method. Start includes an array of InputArguments, where the input argument details are provided in Table 42.

Table 44 – Start Method AddressSpace Definition
Attribute Value
BrowseNameStart
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory

6.7.11 Unhold Method

This Method is used as part of the PackMLExecuteStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Unholding state.

Signature

	Unhold(
		);

Method result codes are defined in Table 45

Table 45 - Unhold Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)

Table 46 specifies the AddressSpace representation for the Unhold Method. Unhold has no input or output parameters and has no referenced objects or variables.

Table 46 – Unhold Method AddressSpace Definition
Attribute Value
BrowseNameUnhold
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.12 Suspend Method

This Method is used as part of the PackMLExecuteStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Suspending state.

Signature

	Suspend(
		);

Method result codes are defined in Table 47

Table 47 - Suspend Method result codes
Result CodeDescription
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)

Table 48 specifies the AddressSpace representation for the Suspend Method. Suspend has no input or output parameters and has no referenced objects or variables.

Table 48 – Suspend Method AddressSpace Definition
Attribute Value
BrowseNameSuspend
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.13 Unsuspend Method

This Method is used as part of the PackMLExecuteStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Unsuspending state.

Signature

	Unsuspend(
		);

Method result codes are defined in Table 49

Table 49 - Unsuspend Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)

Table 50 specifies the AddressSpace representation for the Unsuspend Method. Unsuspend has no input or output parameters and has no referenced Objects or Variables.

Table 50 – Unsuspend Method AddressSpace Definition
Attribute Value
BrowseNameUnsuspend
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.14 Hold Method

This Method is used as part of the PackMLExecuteStateMachineType. It allows an OPC UA Client to change the state of this state machine to the Holding state.

Signature

Hold(

);

Method result codes are defined in Table 51

Table 51 - Hold Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)

Table 52 specifies the AddressSpace representation for the Hold Method. Hold has no input or output parameters and has no referenced objects or variables.

Table 52 – Hold Method AddressSpace Definition
Attribute Value
BrowseNameHold
References NodeClass BrowseName DataType TypeDefinition ModellingRule

6.7.15 RemoteCommand Method

This Method is used to issue a command to the UA Server that can then be passed on to any other internal system as illustrated in Figure 19 or it can be used to pass information on to an upstream or downstream system as illustrated in Figure 20. In both cases, it is up to the UA Server and/or the underlying system to determine when the command is passed on.

Figure 19 - Remote Command and Internal systems
Figure 20 - Remote Command – Line and Upstream/Downstream systems

The RemoteCommand Method parameters are defined in Table 53

Signature

	RemoteCommand(
		 [in] PackMLRemoteInterfaceDataType[] RemoteInterface);
Table 53 - RemoteCommand Method Parameters
Argument Description
RemoteInterfaceThis structure is an array of remote interface information which include Number, ControlCmdNumber, CmdValue and Parameter. Parameter itself is a structure formally defined in 6.5.4. The PackMLRemoteInterfaceDataType is formally defined in 6.5.7

Method result codes are defined in Table 54.

Table 54 - RemoteCommand Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_ArgumentsMissingSee OPC 10000-4 – Services for the description of this result code (The Client did not specify all of the input arguments for the Method.)
Bad_TooManyArgumentsSee OPC 10000-4 – Services for the description of this result code (The Client specified more input arguments than defined for the Method.)
Bad_InvalidArgumentSee OPC 10000-4 – Services for the description of this result code. (Used to indicate in the operation level results that one or more of the input arguments are invalid. The inputArgumentResults contain the specific status code for each invalid argument.)
Bad_TypeMismatchSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that an input argument does not have the correct data type.)

Table 55 specifies the AddressSpace representation for the RemoteCommand Method. RemoteCommand includes an array of InputArguments, where the input argument details are provided in Table 53.

Table 55 – RemoteCommand Method AddressSpace Definition
Attribute Value
BrowseNameRemoteCommand
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory

6.7.16 SetInterlock Method

This Method allows an OPC UA Client to set an interlock associated with this PackML system parameter. The parameters for the SetInterlock Method are defined in Table 56.

Signature

	SetInterlock(
	 	 [in] Int32 InterlockId,
	 	 [in] Boolean State);
Table 56 - SetInterlock Method Parameters
Argument Description
InterlockIdID of the target interlock to set or reset. The ID typically refer to the element in the Boolean Array in the MaterialInterlock tag.
StateThe state that the targeted interlock should be set to. True is set to interlocked, false is not interlocked.

Method result codes are defined in Table 57

Table 57 - SetInterlock Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.)
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_ArgumentsMissingSee OPC 10000-4 – Services for the description of this result code (The Client did not specify all of the input arguments for the Method.)
Bad_TooManyArgumentsSee OPC 10000-4 – Services for the description of this result code (The Client specified more input arguments than defined for the Method.)
Bad_InvalidArgumentSee OPC 10000-4 – Services for the description of this result code. (Used to indicate in the operation level results that one or more of the input arguments are invalid. The inputArgumentResults contain the specific status code for each invalid argument.)
Bad_TypeMismatchSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that an input argument does not have the correct data type.)

Table 58 specifies the AddressSpace representation for the SetInterlock Method. SetInterlock includes an array of InputArguments, where the input argument details are provided in Table 56.

Table 58 – SetInterlock Method AddressSpace Definition
Attribute Value
BrowseNameSetInterlock
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory

6.7.17 SetParameter Method

This Method allows an OPC UA Client to set the parameters that are by the machine.

Signature

	SetParameter(
		 [in] PackMLDescriptorDataType[] Parameter
		); 
Table 59 - SetParameter Method Parameters
Argument Description
ParameterThe array of parameter that can be used by the method

Method result codes are defined in Table 60

Table 60 - SetParameter Method result codes
Result Code Description
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)
Bad_NotImplementedSee OPC 10000-4 – Services for the description of this result code. (Requested operation is not implemented.)
Bad_NodeIdUnknownSee OPC 10000-4 – Services for the description of this result code. (Used to indicate that the specified Object is not valid)
Bad_InvalidStateSee OPC 10000-4 – Services for the description of this result code. (The operation cannot be completed because the Object is closed, uninitialized or in some other invalid state.). If a machine determines that it is not in a state that allows parameter changes this error is returned.
Bad_MethodInvalidSee OPC 10000-4 – Services for the description of this result code. (The Method id does not refer to a Method for the specified Object.)

Table 61 specifies the AddressSpace representation for the SetParameter Method. SetParameter includes an array of InputArguments, where the input argument details are provided in Table 59.

Table 61 – SetParameter Method AddressSpace Definition
Attribute Value
BrowseNameSetParameter
References NodeClass BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory

6.8 Alarms

6.8.1 Overview

The section defines alarms. Alarms in PackML are provided via a set of tags. Alarms in OPC UA are provided via events and a full alarming system. This is a preferred method for providing alarms, but it does require some additional overhead. To allow the PackML information model to be implemented in smaller devices it was decided to initially support the existing Tag based representation of Alarm information, and to add the OPC UA Event based definition of alarms in the next release. Servers shall be able to report alarms in both manners, and Clients can use the manner that is most appropriate for them. Some smaller device might find it easier to just access the tags for Alarm information, but display system or other HMIs would probably make use of the OPC UA Event based system for alarming.

6.8.2 Alarm Tags

6.8.2.1 Overview

The following VariableType is used to report alarms in the PackML unit. In addition, the data is also available as a structured datatype, which is much like an event.

6.8.2.2 PackMLAlarmDataType

The PackMLAlarmDataType provides the PackML tag alarm structure. It is formally defined in Table 62.

Table 62 – PackMLAlarmDataType Structure
Name Type Description
PackMLAlarmDataTypeStructure

ID

Int32A unique number assigned to each type of alarm, stop or warning.

Value

Int32An alarm, stop or warning message number associated to the ID to allow for user specific detail or to break down the Alarm.ID to greater detail

Message

StringThe actual text of the alarm, stop or warning for those machines capable of providing string information

Category

Int32A user defined value which indicates what type of alarm, stop or warning has occurred. E.g. electrical, mechanical, process limit, …

DateTime

UtcTimeThe date and time that the alarm, stop or warning occurred

AckDateTime

UtcTimeThe date and time that the alarm, stop or warning was Acknowledged,

Trigger

BooleanThis variable is true when the alarm is active

6.8.3 Alarm Events

[note: This section will be defined in a future release]