What is PackML?
PackML (Packaging Machine Language) is an industry standard, published as ISA-TR88.00.02, that defines a common state model, a set of operating modes and standardised data tags (PackTags) for packaging and other discrete machines. As a result, every machine in a line behaves the same way towards the operator, the MES and neighbouring machines, regardless of the machine builder or PLC brand. PackML was developed by OMAC together with ISA and builds on the state and procedural concepts of ISA-88.
π°οΈ Where does PackML come from?
In the early 2000s the OMAC (Organization for Machine Automation and Control) Packaging Workgroup set up three subcommittees: PackSoft (programming languages), PackConnect (fieldbuses) and PackML as the integration method bridging the two. In parallel, the WBFβs Make2Pack workgroup started in 2004 to apply ISA-88 to machines. OMAC became affiliated with ISA in 2005, after which the strands of work converged.
| Year | Milestone |
|---|---|
| early 2000s | OMAC guidelines PackML v1 to v3, with separate PackTags documents |
| 2008 | ANSI/ISA-TR88.00.02-2008: PackML and PackTags harmonised with ISA-88 terminology |
| 2015 | ANSI/ISA-TR88.00.02-2015: revised edition and the reference for most vendor libraries for years |
| 2020 | OPC Foundation publishes OPC 30050 PackML β Packaging Control (v1.01) |
| 2022 | ANSI/ISA-TR88.00.02-2022: simplified, with a minimum set of states and tags |
The official title is Machine and Unit States: An implementation example of ANSI/ISA-88.00.01. Strictly speaking it is a technical report rather than a formal standard, but across the packaging industry it serves as the de facto standard.
π§ How does the PackML state model work?
At the heart of PackML is a state machine with up to 17 states. A machine is always in exactly one state; transitions are triggered by a command (Reset, Start, Stop, Hold, Unhold, Suspend, Unsuspend, Abort, Clear) or by State Complete, the signal that an intermediate phase has finished. There are two kinds of state:
- Acting states β the machine is doing something and moves on automatically when finished (for example Starting β Execute)
- Wait states β the machine is stable and waits for a command or event
| State | No. | Type | Meaning |
|---|---|---|---|
| Clearing | 1 | acting | Clearing faults after an abort |
| Stopped | 2 | wait | Machine at rest, ready to be reset |
| Starting | 3 | acting | Start-up sequence |
| Idle | 4 | wait | Ready to start |
| Suspended | 5 | wait | Paused by an external cause (blocked/starved) |
| Execute | 6 | acting | Productive: the machine does what the mode is meant for |
| Stopping | 7 | acting | Controlled stop |
| Aborting | 8 | acting | Fast stop, for example after an emergency stop |
| Aborted | 9 | wait | Stopped after an abort, waiting for Clear |
| Holding | 10 | acting | Moving to a pause caused internally |
| Held | 11 | wait | Paused by an internal cause (fault, material refill) |
| Unholding | 12 | acting | Resuming after a hold |
| Suspending | 13 | acting | Moving to a pause caused upstream or downstream |
| Unsuspending | 14 | acting | Resuming after a suspend |
| Resetting | 15 | acting | Returning to Idle |
| Completing | 16 | acting | Finishing an order or batch |
| Complete | 17 | wait | Order finished, waiting for Reset |
The distinction between Held (cause inside the machine) and Suspended (cause outside it, such as a full discharge conveyor) is exactly what makes downtime analysis at line level possible. A machine does not have to use every state: for each operating mode you define which states are active, and transitions into disabled states simply drop out.
π§ Which operating modes does PackML define?
Alongside states, PackML defines unit modes. Each mode uses (part of) the same state model, but with a different meaning:
- Production (1) β normal production; time in Execute counts as production time
- Maintenance (2) β maintenance and test cycles, possibly at reduced speed; not counted as production
- Manual (3) β manual operation of individual axes or components
Machine builders may add their own modes, such as Cleaning or Changeover. A mode change normally takes place in a stable wait state, such as Stopped or Idle, designated by the machine builder.
π How are PackTags structured?
PackTags are fixed names for the tags a machine uses to communicate. They fall into three groups:
| Group | Purpose | Examples |
|---|---|---|
| Command | Instructions to the machine from outside |
Command.CntrlCmd, Command.UnitMode, Command.MachSpeed,
Command.Parameter[]
|
| Status | Current condition of the machine |
Status.StateCurrent, Status.UnitModeCurrent, Status.CurMachSpeed, Status.EquipmentInterlock
|
| Admin | Production, alarm and timing data |
Admin.ProdProcessedCount, Admin.ProdDefectiveCount, Admin.StopReason, Admin.StateCurrentTime
|
Because a Status.StateCurrent value of 6 means βExecuteβ on every PackML machine, SCADA, MES and HMI systems can connect a line of machines from different suppliers without custom mapping. The 2022
edition also designates a minimum mandatory set and adds tags that describe the machine configuration to a
supervisory system.
π― What are the benefits of PackML?
-
Faster line integration β machines from different OEMs speak the same language;
blocked/starved signals via
EquipmentInterlocksimplify line coordination -
Reliable OEE β OEE follows directly from state times and counters: availability from time in Execute within
Production mode, quality from
ProdProcessedCountandProdDefectiveCount - Uniform operation β operators see the same states and buttons on every HMI, which reduces training time and operating errors
- Reusable code β machine builders use one software skeleton across their entire portfolio
π Which vendors support PackML?
All major PLC platforms offer ready-made building blocks:
- Rockwell Automation β Machine Builder Libraries in Studio 5000 Application Code Manager, which generate ISA-TR88.00.02-based logic
- Siemens β the LPMLV30 library (OMAC PackML V3.0) for S7-1200 and S7-1500 in TIA Portal
- Beckhoff β TwinCAT libraries Tc3_PackML_V2 (2015 edition) and Tc3_PackML_V3 (2022 edition)
- B&R β the mapp component for OMAC PackML in Automation Studio
- Schneider Electric, Mitsubishi and IEC 61131-3 environments such as CODESYS β their own PackML libraries and example projects
π How does PackML relate to OPC UA and Weihenstephan?
PackML defines what a machine reports; a protocol determines how. The companion specification OPC 30050 PackML β Packaging Control, developed by the OPC Foundation and OMAC, maps the state model, the commands (as methods) and all PackTags into an OPC UA information model. An MES can then read the state and issue commands without knowing the PLCβs internal structure. In a Unified Namespace, PackML states and counters are regularly used to give machine status a uniform structure.
The Weihenstephan Standards (WS) were developed by a working group of machine builders, IT vendors and technologists led by the Technical University of Munich at Weihenstephan, originally for bottling lines in the beverage industry. Variants now include WS Pack (filling and packaging lines), WS Food, WS Bake and WS Brew. Whereas PackML standardises machine control and the state model, WS focuses on the data interface to MES and production data acquisition. The OPC UA model for Weihenstephan, OPC 40600, explicitly builds on OPC 30050, so the two complement each other. For process modules, Module Type Package is the related approach.
π οΈ How do you implement PackML on a new packaging machine?
- Specify it in the URS β require ISA-TR88.00.02 (preferably the 2022 edition) and OPC 30050 in your user requirement specification to the machine builder
- Choose modes and states β decide per mode which of the 17 states the machine really needs and disable the rest
- Use a vendor library β start from your PLC platformβs PackML template instead of writing your own state machine
- Hook in the machine logic β run the existing sequences (start-up, run-out) inside the acting states and define what State Complete means for each state
-
Define stop reasons β populate
Admin.StopReasonand the alarm list from a line-wide code table, otherwise downtime analysis stays superficial - Expose the PackTags β via OPC UA to SCADA and MES, restricting write access to Command tags to authorised systems
- Test at the FAT β walk through every state transition, check counters and timers, and compare the calculated OEE with a manual measurement
β Frequently asked questions
Is PackML only for packaging machines?
No. PackML originated in the packaging industry, but its state model and PackTags suit almost any discrete machine, including assembly cells, converting lines and robot cells. PackML is also widely used in the food and pharmaceutical industries.
What is the difference between PackML and ISA-88?
ISA-88 is the batch control standard, with general concepts for modes, states and procedures. PackML, published as ISA-TR88.00.02, is a concrete implementation example of those concepts for machines, with a fixed state model and standardised PackTags.
How many states does PackML have?
The PackML state model has 17 states: six wait states (such as Idle, Held and Stopped) and the rest acting states, with Execute as the productive state. A machine does not need to use all 17 states; unused states can be disabled.
What are PackTags?
PackTags are the standardised data tags of PackML, divided into Command, Status and Admin. They include the current state, machine speed, production counters and stop reasons, so that supervisory systems can read every PackML machine in the same way.
How does PackML help with calculating OEE?
PackML supplies the building blocks of OEE directly from the machine: time per state and mode for availability, current and design speed for performance, and counters of good and rejected products for quality. Because every machine uses the same definitions, OEE figures become comparable across lines and plants.
Do I need OPC UA to use PackML?
No, PackML runs inside the PLC and can be exposed over any protocol. However, OPC UA with the OPC 30050 companion specification is the standardised way to offer PackML states and PackTags to SCADA and MES in a vendor-neutral and secure manner.
π In summary
PackML (ISA-TR88.00.02) gives every machine the same 17-state model, fixed operating modes and standardised PackTags, so that lines built from different suppliersβ machines can be integrated, operated and measured as one. With OPC UA and the OPC 30050 information model, PackML becomes the common language between machine, SCADA and MES.
