Learn Automation with MINATA #62: PackML — A Common Language for Machine States
PackML: A Common Language for Machine States
PackML is a common language for machine states, so that several machines and a SCADA or MES system all read the same meaning from the same word. Treat it as a convention to align on — not as a library that must be copied verbatim into every PLC.
Why a state standard is worth having
When several machines are joined into a line, "Run" on one of them may mean a motor is turning, while on the next it means waiting for material. Without a shared convention, integration and the OEE calculation both turn into arguments about definitions. PackML offers a structured set of states and modes that every party can read the same way.
The set of states
PackML defines standard states; the group most often used is:
| State | Meaning |
|---|
| Stopped | Stopped, waiting for Reset or Start |
| Starting → Execute | Starting up, then running production |
| Holding → Held | Held deliberately, for instance waiting for material |
| Suspended | Stopped by an external condition — starved or blocked |
| Completing → Complete | Finishing a batch or lot |
| Aborting → Aborted | Stopped by a serious fault |
| Clearing | Clearing the fault before returning to Stopped |
Alongside the states come modes — production, maintenance, manual — which separate the operating context.
Map onto it; do not force it
Start by mapping: place the machine's existing states into the appropriate PackML groups. Do not force a complicated mechanical state into a tidy name while its transition conditions remain vague. The value of PackML comes from defining the entry and exit conditions clearly, not from using the right word.
A worked engineering situation
A line of three machines shares the PackML model. When the middle machine is waiting for material, it goes to Suspended rather than reporting a fault. The SCADA system can therefore tell "stopped for want of material" from "the machine has broken", and the OEE assigns the loss correctly. When a real fault occurs, the machine goes Aborting, Aborted, Clearing, with defined conditions at each step.
The choice of states, modes and transition conditions all follow the line integration requirements and the conventions of the plant.
Common mistakes
- Applying PackML names while the transition conditions stay vague.
- Folding starved and blocked into Fault, and distorting the OEE.
- Ignoring modes, and mixing production with maintenance.
- Copying a sample state machine without mapping it to reality.
- Failing to agree the definitions between machines on the same line.
PackML checklist
- [ ] Machine states are mapped to PackML groups with clear conditions.
- [ ] Suspended, an external cause, is distinguished from Aborted, a machine fault.
- [ ] Production, maintenance and manual modes separate the context.
- [ ] The definitions are consistent between machines on the line.
- [ ] The SCADA and OEE calculations read the states the same way.
A shared state language makes integration a matter of wiring rather than of debate. #63 goes into sequential programming: steps, conditions and timeouts.
Read more automation knowledge at MINATA: https://minatavn.com/en/blog/industrial-automation
Previous — #61: Machine states: Stop, Run and Fault: https://minatavn.com/en/blog/automation-61-machine-states-stop-run-fault
Next — #63: Sequential programming with SFC: https://minatavn.com/en/blog/automation-63-sequential-programming-sfc
View all MINATA technical articles