IEC 62541 · Access type

Part 10: Programs

Document numberOPC 10000-10
IEC designationIEC 62541-10
ColloquiallyPart 10
GroupAccess type

Part 10 defines how a server exposes an invocable program - a batch, a recipe, a self-test - as a state machine a client can start, suspend, resume, halt and reset, with intermediate and final result data. It is a small part with a real design, and very few servers implement it.

What it defines

ProgramStateMachineType: an object whose CurrentState moves between Ready, Running, Suspended and Halted, with Start, Suspend, Resume, Halt and Reset methods causing the transitions. Alongside the state it defines where a program publishes its parameters, its intermediate output while running, and its FinalResultData once complete, plus a diagnostic structure recording the last invocation, who called it and how it ended. The state machine itself is ordinary Part 16 machinery.

Why it matters conceptually

Part 10 is the standard's answer to a question every machine integration eventually asks: how do I represent something that takes time? A Method call is synchronous and returns once. A program is a long-running activity with a lifecycle, an owner, a cancel path and a result you can collect later. The pattern - a state machine plus control methods plus a result object - reappears throughout the companion specifications even where Part 10 itself is not used.

Where the industry actually went

In practice, domain models define their own job and result structures rather than inheriting ProgramStateMachineType. The ISA-95 job control model, the Machinery Jobs and Machinery Result models, and the machine-vision recipe and job models all define long-running work in their own vocabulary. If your requirement is start a job on a machine and collect its result, the companion model for that sector is almost always the better implementation target, and Part 10 is the background reading that explains its shape.

What it defines

ConceptWhat it is
ProgramStateMachineTypeThe object type that represents an invocable program. It is a subtype of the finite state machine machinery in Part 16, so its state nodes behave like any other.
Ready, Running, Suspended, HaltedThe four states. Ready means loaded and idle, Halted means finished or aborted and needing a Reset before it can run again.
Start, Suspend, Resume, Halt, ResetThe control methods. Each is only callable from the states the transition table permits, and an out-of-state call fails rather than being queued.
FinalResultDataWhere the program publishes its outcome once it reaches Halted. Structure is program-specific, which is exactly why domain models prefer their own typed result objects.
Intermediate result dataOptional output published while the program runs, so a client can follow progress without polling a proprietary status word.
Program diagnosticsA structure recording the last invocation: who called it, when it started, when it ended, the last transition and the last method call result.
Relationship to Method CallA program is not a long Method. Call is synchronous; a program is an object with persistent state that survives the call that started it and survives your session.

Do you need to read it?

Modellers designing a machine interface that has to expose long-running operations, and anyone reading a companion specification and wondering where its job or recipe pattern came from. Integrators rarely meet Part 10 directly, and if a vendor claims Part 10 support it is worth confirming what is actually browsable.

Traps that trace back to this part

  • Adoption is thin. If a specification or a tender asks for Part 10 programs, check whether what is actually wanted is a sector job model - ISA-95 job control, or the machinery job and result models - which is what real equipment implements.
  • The state is a Part 16 state machine, so read the Id of CurrentState rather than its DisplayName. Comparing localised text to a string literal is the standard way this integration breaks when someone changes the server locale.
  • Calling a control method from the wrong state returns BadInvalidState rather than an argument error, and some servers return a method-level result code instead of failing the call. Check both the service result and the per-method result before deciding a Start succeeded.

Last verified 7 September 2026 against OPC UA 1.05.07. The specification parts themselves are published by the OPC Foundation. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login