OPCFoundation.NetStandard.Opc.Ua.Pumps.Server
2.0.1
Prefix Reserved
dotnet add package OPCFoundation.NetStandard.Opc.Ua.Pumps.Server --version 2.0.1
NuGet\Install-Package OPCFoundation.NetStandard.Opc.Ua.Pumps.Server -Version 2.0.1
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Pumps.Server" Version="2.0.1" />
<PackageVersion Include="OPCFoundation.NetStandard.Opc.Ua.Pumps.Server" Version="2.0.1" />
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Pumps.Server" />
paket add OPCFoundation.NetStandard.Opc.Ua.Pumps.Server --version 2.0.1
#r "nuget: OPCFoundation.NetStandard.Opc.Ua.Pumps.Server, 2.0.1"
#:package OPCFoundation.NetStandard.Opc.Ua.Pumps.Server@2.0.1
#addin nuget:?package=OPCFoundation.NetStandard.Opc.Ua.Pumps.Server&version=2.0.1
#tool nuget:?package=OPCFoundation.NetStandard.Opc.Ua.Pumps.Server&version=2.0.1
Opc.Ua.Pumps.Server
Server hosting for OPC 40223 — OPC UA for Pumps and Vacuum Pumps.
builder.Services
.AddOpcUaServer(configuration)
.AddPumps()
.ConfigurePumps(async context =>
{
IPumpBuilder pump = await context.Manager.CreatePumpAsync(
new QualifiedName("Pump_1", context.Manager.InstanceNamespaceIndex),
context.CancellationToken);
pump.WithNameplate(new PumpNameplate
{
NodeId = NodeId.Null,
Manufacturer = new LocalizedText("Acme Pumps"),
SerialNumber = "SN-001",
Model = new LocalizedText("PumpX-2000"),
CountryOfOrigin = "DE"
});
pump.Measurements
.SetAnalog(BrowseNames.MassFlow, 12.5, EngineeringUnits.KilogramsPerSecond)
.SetAnalog(BrowseNames.DifferentialPressure, 350_000, EngineeringUnits.Pascal);
pump.Supervision(BrowseNames.SupervisionProcessFluid)
.SetDiscrete(BrowseNames.Cavitation, false);
pump.AddPort(PumpPortKind.InletConnection, "Suction")
.SetAnalog(BrowseNames.MaximumAllowableInletPressure, 1_600_000);
});
What it does
PumpsNodeManager derives from DiNodeManager — a pump is a Device
Integration device — and loads DI, OPC 10000-200 IA, OPC 40001-1 Machinery and
OPC 40223 Pumps into one address space, in that order (Machinery's
Stacklight is typed by an IA type, so IA has to be loaded first).
CreatePumpAsync materialises a PumpType instance below DeviceSet and
organizes it into the Machinery Machines folder as well, so both a DI client
and a Machinery client find it.
Building a pump
Nothing is materialised until it is asked for. The full PumpType surface is
about 3000 nodes; a pump that publishes a flow rate and a cavitation flag
should publish those, not 3000 mostly empty variables.
IPumpBuilder exposes the seven groups and their sub-groups as properties, and
IPumpGroupBuilder addresses everything below them by browse name — Add,
Set, SetAnalog, SetDiscrete, With, Nested. Children are created
through the model's own CreateChild, so each one gets the type, data type,
access level and default value the specification declares; a name the group
does not declare is rejected rather than quietly creating a non-conforming
node. Pass the generated Opc.Ua.Pumps.BrowseNames constants and a rename in
the model breaks the build.
SetDiscrete handles both shapes OPC 40223 uses for a boolean: the
TwoStateDiscreteType variables of the supervision groups, and the
DiscreteInput/DiscreteOutputObjectType objects of the signal and actuation
groups whose value sits one level down.
Typed fluent accessors
This package also supplies the typed Opc.Ua.Server.Fluent accessors for the
whole Pumps model, so builder.Node<PumpState>(id).Components().Events() and
friends are available to servers that wire per-node callbacks directly.
Ownership
AddPumps claims the Device Integration address space, so it cannot be
combined with AddOpcUaDi or another DI-owning registration. A server that
already has a DI manager loads the model into it with
nodes.AddOpcUaPumps(context) and configures it through
ConfigureDevicesFor<TNodeManager>().
For the client side use Opc.Ua.Pumps.Client; the model and the shared
snapshot contracts live in Opc.Ua.Pumps.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- BitFaster.Caching (>= 2.6.1)
- BouncyCastle.Cryptography (>= 2.7.0)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.12)
- Microsoft.Bcl.HashCode (>= 6.0.0)
- Microsoft.Bcl.TimeProvider (>= 10.0.12)
- Microsoft.Extensions.Configuration (>= 10.0.12)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Diagnostics (>= 10.0.12)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Http (>= 10.0.12)
- Microsoft.Extensions.Logging (>= 10.0.12)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Options (>= 10.0.12)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.12)
- OPCFoundation.NetStandard.Opc.Ua.Di.Server (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.IA (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.Pumps (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.1)
- System.Buffers (>= 4.6.1)
- System.Collections.Immutable (>= 9.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.12)
- System.Formats.Asn1 (>= 10.0.12)
- System.Memory (>= 4.6.3)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
- System.Text.Json (>= 10.0.12)
- System.Threading.Channels (>= 10.0.12)
- System.Threading.RateLimiting (>= 10.0.12)
- System.Threading.Tasks.Extensions (>= 4.6.3)
-
net10.0
- BitFaster.Caching (>= 2.6.1)
- Microsoft.Bcl.TimeProvider (>= 10.0.12)
- Microsoft.Extensions.Configuration (>= 10.0.12)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Diagnostics (>= 10.0.12)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Http (>= 10.0.12)
- Microsoft.Extensions.Logging (>= 10.0.12)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Options (>= 10.0.12)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.12)
- OPCFoundation.NetStandard.Opc.Ua.Di.Server (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.IA (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.Pumps (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.1)
- System.Threading.RateLimiting (>= 10.0.12)
-
net8.0
- BitFaster.Caching (>= 2.6.1)
- Microsoft.Bcl.TimeProvider (>= 10.0.12)
- Microsoft.Extensions.Configuration (>= 10.0.12)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Diagnostics (>= 10.0.12)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Http (>= 10.0.12)
- Microsoft.Extensions.Logging (>= 10.0.12)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Options (>= 10.0.12)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.12)
- OPCFoundation.NetStandard.Opc.Ua.Di.Server (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.IA (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.Pumps (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.1)
- System.Collections.Immutable (>= 9.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.12)
- System.Formats.Asn1 (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
- System.Threading.Channels (>= 10.0.12)
- System.Threading.RateLimiting (>= 10.0.12)
-
net9.0
- BitFaster.Caching (>= 2.6.1)
- Microsoft.Bcl.TimeProvider (>= 10.0.12)
- Microsoft.Extensions.Configuration (>= 10.0.12)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Diagnostics (>= 10.0.12)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Http (>= 10.0.12)
- Microsoft.Extensions.Logging (>= 10.0.12)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Options (>= 10.0.12)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.12)
- OPCFoundation.NetStandard.Opc.Ua.Di.Server (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.IA (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.Pumps (>= 2.0.1)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 2.0.1)
- System.Diagnostics.DiagnosticSource (>= 10.0.12)
- System.Formats.Asn1 (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
- System.Threading.Channels (>= 10.0.12)
- System.Threading.RateLimiting (>= 10.0.12)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.