Files
Marc Schier 7fb986bd0d Add recycling operator console and sample container images (#4810)
# Description

Add a local browser-based operator console for the synthetic recycling
line, using direct, encrypted OPC UA connections and the existing typed
coordination interface.

- Extract a sample-local, non-packable `Recycling.Client` library shared
by the server and console. Preserve the model XML bytes, namespace/type
identifiers, resource identity, wire format and journal schema; the
server retains its .NET 8/9/10 targets.
- Add a .NET 10 ASP.NET Core workstation host with bounded SSE
state/trend delivery, native companion inspection, paged
material/genealogy reads, and role-limited coordinator commands. Exact
command envelopes are retained for explicit retries; uncertain outcomes
are not automatically reissued.
- Add the operator interface using local HTML/SVG, CSS and JavaScript
modules: ten process groups, substep inspection, faults/constraints,
persistent quality holds, trends, material tracing and simulator
administration. Show raw quality/provenance and handle stale data, run
changes, browser expiry and large identifiers explicitly. No
browser-generated plant telemetry or frontend framework/npm build is
introduced.
- Keep application/user credentials in external certificate stores. Use
strict X.509 trust, signed/encrypted UA sessions, local browser
bootstrap sessions, same-origin/CSRF checks, and a conservative
configured control ceiling. This is a local synthetic sample, not a
physical emergency-stop or shared remote-user system.
- Register `recyclingserver` and `recyclingclient` in the existing
Images CI matrix, using source/prebuilt Dockerfile stages and the
existing portable-IL/multiarchitecture packaging flow. Add an optional
loopback-published Compose console service. No new schedules or NuGet
publication entries are added.
- Add managed, real-UA, Chromium, NativeAOT and image-contract
qualification, with Microsoft.Playwright as a test-only centrally
managed dependency, and update usage/deployment documentation.

## Checklist

_Put an `x` in the boxes that apply. You can complete these step by step
after opening the PR._

- [ ] I have signed the
[CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf)
and read the
[CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md)
doc.
- [ ] I have added tests that prove my fix is effective or that my
feature works and increased code coverage.
- [x] I have added all necessary documentation.
- [x] I have verified that my changes do not introduce (new) build or
analyzer warnings.
- [ ] I ran **all** tests locally using the **UA.slnx** solution against
at least .net **framework** and .net **10**, and all passed.
- [ ] I fixed **all** failing and flaky tests in the CI pipelines and
**all** CodeQL warnings.
- [ ] I have addressed **all** PR feedback received.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-10-17 16:16:29 +02:00

6.8 KiB

Sample applications

This repository contains a large collection of platform-independent samples that demonstrate the stack's client, server, PubSub, companion-model, and developer-tooling APIs. Each sample has its own README.md with build and run instructions. If you are new to the SDK, start with the minimal samples.

Contents

Minimal samples

Getting started runs the Minimal Boiler Server and the Minimal Client together.

  • Minimal Boiler Server — minimal Boiler-model server with the fluent state-machine builder; Native-AOT publishable.
  • Minimal Client — hosted client that discovers a secure endpoint of the Minimal Boiler Server, creates a subscription, browses, and reads; Native-AOT publishable.
  • Minimal Calc Server — minimal server built on the source-generated NodeManager pipeline and Calc model.

Reference applications

PubSub samples

  • Console Reference PubSub Client — one executable with publisher, subscriber, and external external-server-adapter modes across the supported transport profiles.

Companion-model samples

  • Generic recycling simulation — one durable causal coordinator and ten process views with typed OPC UA coordination, native companion equipment, material genealogy and read-only committed measurements. Its optional operator console walkthrough covers browser inspection and role-limited controls with screenshots and an animated tour. The guide distinguishes synthetic simulation from calibration, original-source parity and formal companion certification.
  • Pump Device Integration Server — Device Integration Part 100 server using Opc.Ua.Di.Server's fluent builder.
  • AMB Server — OPC 10000-110 Asset Management Basics with AddAssetManagement next to AddMachinery: a cooling pump and a flow sensor (Device Integration devices) and a hydraulic press (a Machinery machine) as assets with configurable AssetIds, health alarms with root causes, maintenance activities, documentation links, locations and persistence, and a simulation that raises alarms and moves the maintenance on.
  • AMB Client — discovers every asset with AmbClient, prints snapshots and the location hierarchies, adds and removes a documentation link, and streams health alarms and maintenance activities.
  • Minimal Robot Server — OPC 40010 Robotics with independently configurable RSL/GPOS motion and live OpenUSD transforms.
  • Intent Enabled Robot — collaborative arm exposing task-level Robot Intent motion verbs, Part 10 program lifecycle, missions, command authority, and safety-aware refusal.
  • Intent Viewer Client — click a target in an OpenUSD viewport and watch the arm execute the resulting intent; it also runs headless.
  • Bin Picking Cell — Robot Intent, Vision, an eye-in-hand camera, and an in-address-space OpenUSD scene in one reference cell.
  • Bin Picking Client — closes the Vision-to-Robot-Intent loop, with optional MCP hosting and an OpenUSD viewport.
  • Visual Inspection Cell — hosts Vision, AI Model Management, ISA-95 Job Control V2, and an operator dialog for deterministic machined-bracket inspection.
  • Visual Inspection Agent — drives the inspection loop with typed clients, routes inference through deployment Invoke, applies recipe verdicts, schedules allowlisted jobs, and records operator ground truth.
  • AI Model Management sample — ModelManagementServer publishes the draft AI Model Management catalogue and routes inference; ModelManagementClient discovers deployments and exercises the Methods.
  • Machine Vision server and client — released OPC 40100-1/-2 in Machinery, with recipe/file workflows and a shared draft/native inspection engine.
  • MachineTool and WMTP — separate or combined MachineTool/peripheral hosting, independent simulated instances, retained and modern production, remote files, measurement configuration and record workflows.
  • GMS server and client — native systems, qualification, environmental conditions and typed result/characteristic/correction workflows.
  • Cranes and Hoists — Robotics-derived topology, acquisition quality and authorized simulated limit requests.
  • Combined companion suite — MachineTool, WMTP, GMS, CranesHoists and MachineVision on one DI/Machinery owner, with isolated instances and a bounded real-session self-check.
  • Minimal ISA-95 Server — hosts the OPC-10030 ISA-95 Common Model with OPC-10031-4 Job Control V1 and V2, using the typed common-model builder and in-memory Job Control provider.

OpenUSD site composition

  • Generator Server — simulated generating sets with datasheet-driven behavior and independent OpenUSD twins.
  • Site Composition Server — federates the pump and generator servers into one live OpenUSD site.

Run the complete site demo from the repository root:

pwsh samples/OpenUsd/SiteCompositionServer/run-site-composition-demo.ps1