Weihenstephan
| Document | n/a |
|---|---|
| Version | 1.00.0 |
| Published | 2021-07-12 |
| Namespace | http://opcfoundation.org/UA/Weihenstephan/ |
| Sector | Food / beverage |
The Weihenstephan companion specification brings the Weihenstephan Standards for brewing, beverage and food equipment into OPC UA. It defines WSMachineType and a set of state machines with clear PackML lineage, plus WSAlarmType and WSWarningType, which is why WS filling and packaging lines are comparatively easy to instrument for OEE.
Where it sits in the stack
Weihenstephan is structurally a PackML-lineage model: the base, execute, held and suspended state machines mirror the ISA-88 pattern, applied to the equipment classes the Weihenstephan Standards already cover. It is distinct from the older Weihenstephan Standard that brewery equipment has spoken for years over its own transport, and a machine can support that without exposing this OPC UA model. The nodeset has not changed since 1.00.0 in July 2021.
The types that matter
| Type | What it carries |
|---|---|
WSMachineType | The root object type for a Weihenstephan machine, aggregating the state machines, alarms and warnings. Check HasTypeDefinition against it to confirm you have the model and not a tag folder. |
WSBaseStateMachineType | The base state machine the others derive from, carrying the Part 16 CurrentState and LastTransition pattern and its transition events. |
WSExecuteStateMachineType | The substates while the machine is running, which is where a filler or labeller exposes what it is doing during nominal production. |
WSHeldStateMachineType | The structure for hold conditions, the machine's own reason for not producing. This is the blocked and faulted side of the availability picture. |
WSSuspendedStateMachineType | The structure for suspension, which by PackML lineage means an external cause: no supply upstream or no take-away downstream. This is the starved and blocked distinction. |
WSAlarmType | The alarm event type, the machine's fault reporting. Consumed as Part 9 events with a filter rather than polled. |
WSWarningType | The warning event type for conditions that do not stop production, useful as a leading indicator of a stoppage rather than a downtime reason. |
Using it on a real machine
- Confirm which Weihenstephan you haveAsk whether the machine exposes the OPC UA Weihenstephan namespace or the older Weihenstephan Standard over its own interface. They carry similar concepts and are not the same integration.
- Locate the machine objectRead NamespaceArray for http://opcfoundation.org/UA/Weihenstephan/, browse the Machines folder from Machinery where it is present, and read HasTypeDefinition against WSMachineType.
- Subscribe to the state machinesMonitor CurrentState on the machine state machine and on the held and suspended state machines, plus their transition events. Held against Suspended is the most valuable single distinction on a beverage line.
- Take alarms and warnings as eventsCreate an event monitored item selecting SourceNode, Time, Severity, Message and ActiveState, and call ConditionRefresh after connect so you start with the active set rather than waiting for the next change.
- Find the counters explicitlyBrowse for the machine's count nodes and confirm their reset behaviour with the machine builder before relying on them. Do not assume a PackML-shaped counter structure just because the state machines are PackML-shaped.
What it gives you for OEE
The state model is the payoff. Because the held and suspended state machines follow the PackML pattern, a Weihenstephan line gives you the distinction that dominates OEE on high-speed filling and packaging: the machine stopped because of its own fault (held) versus the machine stopped because the line around it stopped (suspended, meaning starved or blocked). On a beverage line most of the loss sits in the second category, and being able to attribute it without an operator interview is most of the value of an OEE system. WSAlarmType and WSWarningType give timestamped reasons as events, and the warnings are genuinely useful as leading indicators. Two honest limits. The alarms are not a standardised class taxonomy comparable to the MachineTool condition classes, so reason grouping still needs a per-vendor mapping table. And counting is where you must be specific with the machine builder: verify which count nodes exist and how they reset, rather than assuming a PackMLCountDataType equivalent.
Gotchas
- The OPC UA Weihenstephan model and the long-established Weihenstephan Standard are different things. A brewery running WS-capable fillers may have no OPC UA Weihenstephan namespace anywhere on the line.
- Brewing and beverage lines commonly mix models: PackML on one machine, Weihenstephan on the next, raw tags on the third. Plan for a per-machine mapping layer with one shared internal state vocabulary.
- Version 1.00.0 dates from July 2021 and has not been revised, so anything the model does not cover will not arrive through a version update.
- Held and Suspended are only as trustworthy as the builder's wiring of them. Validate a few real stoppages against what the operator says happened before you publish the split.
Once the machine speaks a companion spec, the OEE mapping is portable across vendors, which is the point at which analytics stops being a per-machine project.
See Jemba →Last verified 7 September 2026 against OPC UA 1.05.07. Version and publication date read from the released nodeset. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.