Tool · Simulator
Microsoft OPC PLC simulator
| Vendor | Microsoft (Azure Industrial IoT) |
|---|---|
| Cost | Open source |
| Platforms | Container image; cross-platform .NET |
| Type | Simulator |
The Microsoft OPC PLC simulator, published as iot-edge-opc-plc, is a containerised OPC UA server with PLC-like simulated tags. Its --aa switch auto-accepts client certificates, which is why the OPC Publisher documentation uses it: it removes the certificate hurdle while you get the rest of a data pipeline working.
What you actually use it for
- Standing up a data pipeline end to end in containers before any real machine is available.
- Testing OPC Publisher, Telegraf, Node-RED or your own collector against a server whose values change predictably.
- Deferring the certificate problem deliberately while you debug topics, encodings and downstream storage, then putting it back.
- Running many simulated servers at once to test how a collector behaves at scale, including connect-storm behaviour.
- Reproducing a data-type or encoding issue in a pipeline against a server you can restart at will.
Walkthrough
- Run the container and publish port 4840Start the image with the OPC UA port published to the host. Give the container a stable hostname or supply the hostname the server should advertise, because an unreachable advertised endpoint URL is the most common first failure in container setups.
- Use --aa only while you are buildingThe --aa switch makes the server auto-accept any client certificate. That is exactly what you want for the first hour and exactly what you must not ship. Note it in the deployment as a temporary setting with an owner.
- Browse the simulated tags and choose your test setConnect with any client and browse. Pick a slow-changing value, a fast-changing value and a counter, so your downstream tests cover deadband behaviour, sampling rates and counter rollover.
- Persist the PKI volume once you turn security onWhen you drop --aa and use real trust, mount the server's pki directory on a volume. Without it the application instance certificate is regenerated on every restart and every peer's trust list goes stale each time you redeploy.
- Point your collector at it and validate the payload, not just the connectionCheck that what arrives downstream carries the timestamps, StatusCodes and types you expect. In JSON encoding a Good StatusCode is omitted, so a missing status field means Good, not missing data.
- Scale it out to test the collector, not the serverRun several instances on different ports and connect them all. This is where you find out whether your collector staggers its connections or opens them all at once.
What it will not do
- PLC-like tags, not machine semantics: no companion specifications, no state machines, no condition classes.
- Auto-accepting certificates is a development convenience that will mask exactly the problem that bites hardest in production.
- No meaningful historical access or alarms and conditions depth.
- Behaviour is deterministic and well-mannered, so it will not reproduce a real PLC server's session limits, revision behaviour or timestamp quirks.
- Command-line switches and image names move with the Azure Industrial IoT release train, so older examples may not run.
Alternatives
| Instead of this | When |
|---|---|
| umati-sample-server | When the point is companion specification semantics rather than tags in a pipeline. |
| consolereferenceserver | When you need the reference stack's behaviour and its compliance-oriented configuration. |
| prosys-simulation-server | When you want a desktop simulator with a GUI and hand-created nodes rather than a container. |
| asyncua-uaserver-populate | When a single Python command is the fastest route to any server at all. |
Verify before you rely on this: The image name, registry location, available command-line switches including --aa, and the simulated node set all move with the Azure Industrial IoT release train, and support lifecycles for those releases are published and do expire. Confirm the current image reference, switch list and supported release in the project's own documentation, and treat any auto-accept setting as something to remove before a deployment review.
Related tools
Related status codes
Concepts on this page
Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.