Files
UA-.NETStandard/samples/GeneratorServer/Model/Opc.Ua.Generators.NodeSet2.csv
Marc Schier ca89ac85a7 Add a Generators companion-spec sample and compose servers at a site level (#4180)
# Description

Adds a **Generators companion-specification sample** alongside the
existing pump sample, and a **`SiteCompositionServer`** that composes
several device servers into one OpenUSD scene at a supervisory level —
demonstrating that servers can be aggregated without mirroring their
address spaces.

Three things, in dependency order:

### 1. `GeneratorServer`

A self-contained server realising the draft Generators spec
(`http://opcfoundation.org/UA/Generators/`) end to end: N simulated
generating sets, DI + Machinery integration, a twelve-state operating
state machine, four protection alarms per set, six control methods, and
a per-set OpenUSD twin.

The organising idea is that **load fraction is the only independent
variable**. Everything else is a function of it:

```
V̇_f(x) = 3.67 + 100·x                fuel rate      [L/h]
η(x)   = P(x) / (V̇_f(x) · ρ · LHV)   efficiency
S = P / PF     I = S / (√3·V_LL)     f = N·p / 120
```

This is not stylistic. When each measurement is an independent
oscillator — as the pump sample's simulation once was — a server happily
publishes a duty point no real machine could occupy, and no test can
catch it because there is nothing for the values to be inconsistent
*with*. Deriving them from one variable means `P = √3·V·I·PF` and `η =
P/(V̇·ρ·LHV)` hold at every tick by construction. The published
`DATASHEET.md`, the engineering ranges, the trip points and the
simulation all read the same constants in `GeneratorDatasheet.cs`, so
the document and the server cannot describe different machines.

The machine is a fictitious **SimGen Systems GenX-500** (400 kW prime /
440 kW standby, 400/230 V, 50 Hz, four-pole). Figures are representative
of a real industrial genset class; no vendor is named anywhere in the
code or docs.

### 2. Cross-server composition in the connector

`RemoteSessionFactory` already existed in the client library but the
connector CLI never set it, so cross-server composition was unreachable.
`--federate` wires it up: the connector opens a session to each server
named by a component binding, discovers its representations and drives
its bindings into the same stage.

It is **opt-in** because the endpoint the connector dials comes from the
server being rendered rather than from the operator, which makes
honouring it a trust decision. Federation is best-effort per component —
a subordinate that is down is logged and skipped, and the rest of the
scene still renders — which is the only `src/` change in this PR.

### 3. `SiteCompositionServer`

Owns no devices. It publishes a site stage plus one cross-server
component binding per subordinate, carrying that server's
`ComponentServerUri` and `ComponentEndpointUrl`. Nothing is mirrored, so
there is no cache to invalidate and no second copy of the truth.

## Notes for reviewers

**Everything interesting in this PR was found by running the servers,
not by reading the code.** Six defects, none of which looked wrong in
review:

- `IsShutdown` and `SubsystemName` are *optional* on
`GeneratorProtectionAlarmType`, so the generated factory does not
materialise them. `CreateOrReplace` alone produces a child that exists,
appears in `GetChildren` and holds the right value — but carries **no
`ReferenceTypeId`**, so no browse can reach it. Every alarm was
publishing its trip without saying whether the trip stops the machine or
which subsystem to go to. `AddXxx(context)` first is what gives the
child its `HasProperty` reference.
- **The protections could never fire.** Every trip point sits outside
the band the datasheet curves produce — that is what a datasheet *means*
— so all four alarms, the shutdown class, `ResetFaults` and the whole
`Fault` branch of the state machine were unreachable while the README
documented them as observable. Overload was worse: the load clamp
ceiling was set to exactly the trip point, making a
strictly-greater-than comparison unsatisfiable. Faults are now
injectable, and the first set — the one the hero camera frames —
develops one on a slow rotation.
- **A shutdown trip removes the condition that caused it**, because oil
pressure and coolant temperature are only supervised while the engine
turns. Each alarm went active for one tick and cleared, leaving an
operator with a stopped machine and no indication of why. Shutdown-class
alarms now latch until the set leaves the shutdown state. Every unit
test that checked the *condition* passed throughout — the defect only
appears when the trip and the supervision interact over time.
- **`Synchronizing` and `Paralleled` were declared, drawn in the README
and never entered.** The first set now energises a dead bus and closes
onto it while every other set synchronises to a live one — both how a
real plant parallels, and what makes the two states observable.
- **The tick raced client method calls.** The simulation tick runs on a
thread-pool thread while method calls arrive on request threads, and
both transition sets and write the same nodes. A tick moving a set to
`Cooldown` and a concurrent `EmergencyStop` could interleave the paired
`CurrentState` / `CurrentState.Id` writes and leave a client with a
state *name* from one transition and a state *node* from the other — the
exact failure the paired write exists to prevent, reintroduced by the
threading model. Both paths now take one gate.
- Low oil pressure supervised from raw speed **tripped every set during
cranking**, because pressure has not built yet. Now gated on
`IsSpinning`, which is what a real start-up bypass does.

Smaller fixes: shutdown trips are applied after the whole evaluation
pass (stopping mid-loop made the remaining conditions read healthy,
collapsing simultaneous trips to whichever came first in the table);
`ResetFaults` reports its clears as events (a client learns of condition
state changes only through events, so a silent clear leaves an
alarm-list client showing it forever); the start counter moved into the
transition so commanded starts are counted; the federated connector
closes the remote session if the connector constructor throws between
taking ownership and registering it; and `prepare_machinery_nodeset.py`
now *asserts* the IA namespace is last before removing it rather than
only claiming so in its docstring — removing any earlier entry would
silently renumber every namespace after it and rebind their NodeIds.

**A model limitation is left visible rather than papered over.**
`GeneratorStateMachineType` declares an emergency stop only out of
`Running`, `Loaded` and `Paralleled`, so the sample refuses
`EmergencyStop` from `Starting` and `Warmup`. A real panel stops from
anywhere. That is the specification's shape, not this sample's choice,
so it is pinned by a test and named in the docs.

**`Model/` vendors a reduced Machinery nodeset**, derived mechanically
by whitelist. The full official nodeset does not survive the model
source generator (`MODELGEN003`) and drags in IA through a single
optional `Stacklight` member a generating set does not have. Deriving it
by script keeps the provenance checkable; the whitelist is the only
thing to edit when more types are needed. **Never hand-edit the
generated output.**

**The federated scene renders end to end.** Getting there surfaced three
more defects, all of which produced a plausible-looking scene with
nothing in it: the generator sample's plant aggregation was created
under an already-registered `DeviceSet` and so was invisible to every
client (it had *never* rendered geometry, standalone or federated); the
connector's asset fetch ran on the primary session only, so composition
referenced layers that were never downloaded; and both generator colour
bindings wrote `primvars:displayColor` to prims that did not declare it,
so the renderer rejected every update while the file still looked
correct. Cross-server components compose under the subordinate's own
root, so the site layer now *places* `/Plant` and `/Powerhouse` rather
than leaving them stacked on the origin.

**`OpenUsdRepresentation` is now mounted with `HasAddIn`, not
`HasComponent`** (review feedback). The nodeset says so explicitly —
*"Mounted with HasAddIn"* — but every server in the tree used plain
`HasComponent`. It survived because `HasAddIn` is a *subtype* of
`HasComponent`: the representation still browses, still aggregates and
still drives a twin, so every functional test passed before the fix and
after it, and only a conformance checker could tell. Seven mount sites
corrected. `PumpDeviceIntegrationServer` and `MinimalRobotServer` had
hand-rolled the mount instead of calling the shared
`CreateRepresentation` helper, which is exactly how they drifted from
it. Both sample E2E suites now assert the reference type across
**every** discovered representation — a narrower check would have missed
the plant-level representation that arrived later from master still
carrying `HasComponent`.

**Live colour is not achievable in the current OpenUSD viewer, and that
is now documented rather than worked around.** Proven with a standalone
probe: `primvars:displayColor` resolves as `color3f[]` from the
`UsdGeomGprim` schema whatever the layer declares, and the `OpenUsd
0.4.0-alpha` managed API has no writer for that type. Bound
`UsdPreviewSurface` materials are not shaded either, so geometry renders
grey unless it also carries an explicit `displayColor` primvar. The
**visibility** bindings carry no such caveat and are what the samples
rely on to show state. Filed upstream as
[openusd-dotnet#2](https://github.com/marcschier/openusd-dotnet/issues/2),
[#3](https://github.com/marcschier/openusd-dotnet/issues/3) and
[#4](https://github.com/marcschier/openusd-dotnet/issues/4), and linked
from `docs/OpenUsd.md` so a reader can check whether they have since
been fixed.

## Related Issues

No tracking issue — this is additive sample and documentation work with
a single small, self-contained change to `src/` (per-component error
isolation and session-ownership hardening in
`OpenUsdConnector.Composition.cs`). Happy to open one if maintainers
would prefer it tracked.

## Checklist

- [x] 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.
- [x] 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.
- [x] 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.

### Testing

The generator fixtures live in `tests/Opc.Ua.OpenUsd.Tests/Generator` —
**82 tests**, no new project. `Opc.Ua.Di.Tests` would have been the
natural home next to the pump fixtures, but both device samples
source-generate their own reduced `Opc.Ua.Machinery` model and expose it
via `InternalsVisibleTo`, so referencing both from one assembly makes
every Machinery type ambiguous (CS0433); `Opc.Ua.OpenUsd.Tests`
references no other sample and already hosts `RobotAssetContractTests`.
The suite runs **870** on net10.0 and net48 (784 existing + 86) and
**788** on net472, where the sample does not exist and only the
framework-independent asset-contract tests run — forgetting exactly that
exclusion broke CI on the sibling pump PR.

The tests target the things in this sample that fail *quietly*:

- **Datasheet conformance** holds the model to its own claim — rated
speed is `120·f/p`, rated current follows from the rating, the fuel
curve reproduces the published table, and `η = P/(V̇·ρ·LHV)` reconciles
at every load. Efficiency is swept across the whole simulated range to
show it stays inside (0,100) and rises monotonically; a fit that goes
negative somewhere in its range is a coincidence that happens to look
right at the duty point, not a model. A further test reads
`DATASHEET.md` and checks the document quotes the figures the server
actually serves.
- **Drift between the two descriptions of the state machine** — the
physics' `IsLegalTransition` and the model's `GeneratorStateMap` — is
checked in *both* directions. A transition the physics permits but the
map lacks moves a machine without telling a client; one the map holds
but the physics refuses is dead weight that looks supported.
- **Reachability at run time**, not just in the declared table — the
test that catches states the model declares and nothing ever enters.
- **That every protection can actually fire**, which is the half of the
alarm contract that "a healthy set annunciates nothing" does not cover.

A **hosted end-to-end fixture** connects a real client and asserts what
the address space actually exposes — the aggregation at
`/Powerhouse/Generators`, its component binding, and every per-set twin.
That is the only kind of test that catches the registration defect
above: the node object had the right browse name, binding and asset
reference, so every test that inspected objects passed while no client
could see it.

**Every state-machine and protection fix was checked by mutation.**
Restoring the clamp ceiling, the direct `Running → Loaded` path, the old
start-counter placement, or removing the alarm opt-in each makes the
corresponding test fail, naming the specific defect. A test that has
never been seen to fail has not been shown to work.

Verified against a running plant: `Synchronizing`, `Paralleled` and
`Fault` all observed on a two-set server, with
`HighCoolantTemperatureAlarm` seen active on the fault subject. Method
behaviour verified separately — per-set distinct `CurrentState` nodes,
`EmergencyStop` → `EmergencyStopped` with `Start` then refused as
`BadInvalidState`, `ResetFaults` → `Off`, `SetOperatingMode(9999)`
refused with the mode unchanged, and the other sets untouched
throughout. Also verified as a three-server federated stage.

0 warnings on a clean Release rebuild of both samples, the client
library, the connector and the tests, across every TFM.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: fe608993-f3c9-4779-a6b9-9a9eabfc24ba
2026-08-07 10:48:02 +02:00

24 KiB

1GeneratorOperatingModeEnum3001DataType
2GeneratorOperatingModeEnum_EnumStrings3901Variable
3FuelTypeEnum3002DataType
4FuelTypeEnum_EnumStrings3902Variable
5GeneratorApplicationRatingEnum3003DataType
6GeneratorApplicationRatingEnum_EnumStrings3903Variable
7ElectricalConnectionEnum3004DataType
8ElectricalConnectionEnum_EnumStrings3904Variable
9ExcitationTypeEnum3005DataType
10ExcitationTypeEnum_EnumStrings3905Variable
11CoolingMethodEnum3006DataType
12CoolingMethodEnum_EnumStrings3906Variable
13AspirationEnum3007DataType
14AspirationEnum_EnumStrings3907Variable
15EmissionsStandardEnum3008DataType
16EmissionsStandardEnum_EnumStrings3908Variable
17CanBusStateEnum3009DataType
18CanBusStateEnum_EnumStrings3909Variable
19TransferSwitchPositionEnum3010DataType
20TransferSwitchPositionEnum_EnumStrings3910Variable
21TransferTransitionTypeEnum3011DataType
22TransferTransitionTypeEnum_EnumStrings3911Variable
23AtsOperatingStateEnum3012DataType
24AtsOperatingStateEnum_EnumStrings3912Variable
25AlarmSeverityEnum3013DataType
26AlarmSeverityEnum_EnumStrings3913Variable
27GeneratorProtectionFunctionEnum3014DataType
28GeneratorProtectionFunctionEnum_EnumStrings3914Variable
29ParallelingSystemStateEnum3015DataType
30ParallelingSystemStateEnum_EnumStrings3915Variable
31AftertreatmentStateEnum3016DataType
32AftertreatmentStateEnum_EnumStrings3916Variable
33J1939LampStatusEnum3017DataType
34J1939LampStatusEnum_EnumStrings3917Variable
35DiagnosticTroubleCodeType3050DataType
36DiagnosticTroubleCodeType_DefaultBinary6001Object
37DiagnosticTroubleCodeType_DefaultXml6002Object
38GeneratorIdentificationType1016ObjectType
39GeneratorIdentificationType_SpecificationNumber6003Variable
40GeneratorIdentificationType_ProductFamily6004Variable
41GeneratorIdentificationType_EngineModel6005Variable
42GeneratorIdentificationType_EngineSerialNumber6006Variable
43GeneratorIdentificationType_AlternatorModel6007Variable
44GeneratorIdentificationType_AlternatorSerialNumber6008Variable
45GeneratorIdentificationType_ControllerModel6009Variable
46GeneratorIdentificationType_FuelType6010Variable
47GeneratorIdentificationType_EmissionsStandard6011Variable
48GeneratorIdentificationType_RatedRealPower6012Variable
49GeneratorIdentificationType_RatedRealPower_EngineeringUnits6013Variable
50GeneratorIdentificationType_RatedApparentPower6014Variable
51GeneratorIdentificationType_RatedApparentPower_EngineeringUnits6015Variable
52GeneratorIdentificationType_RatedVoltage6016Variable
53GeneratorIdentificationType_RatedVoltage_EngineeringUnits6017Variable
54GeneratorIdentificationType_RatedFrequency6018Variable
55GeneratorIdentificationType_RatedFrequency_EngineeringUnits6019Variable
56GeneratorIdentificationType_SoundRatingAt7m6020Variable
57GeneratorStateMachineType1011ObjectType
58GeneratorStateMachineType_Off6021Object
59GeneratorStateMachineType_Off_StateNumber6022Variable
60GeneratorStateMachineType_Ready6023Object
61GeneratorStateMachineType_Ready_StateNumber6024Variable
62GeneratorStateMachineType_Starting6025Object
63GeneratorStateMachineType_Starting_StateNumber6026Variable
64GeneratorStateMachineType_Warmup6027Object
65GeneratorStateMachineType_Warmup_StateNumber6028Variable
66GeneratorStateMachineType_Running6029Object
67GeneratorStateMachineType_Running_StateNumber6030Variable
68GeneratorStateMachineType_Loaded6031Object
69GeneratorStateMachineType_Loaded_StateNumber6032Variable
70GeneratorStateMachineType_Synchronizing6033Object
71GeneratorStateMachineType_Synchronizing_StateNumber6034Variable
72GeneratorStateMachineType_Paralleled6035Object
73GeneratorStateMachineType_Paralleled_StateNumber6036Variable
74GeneratorStateMachineType_Cooldown6037Object
75GeneratorStateMachineType_Cooldown_StateNumber6038Variable
76GeneratorStateMachineType_Stopping6039Object
77GeneratorStateMachineType_Stopping_StateNumber6040Variable
78GeneratorStateMachineType_Fault6041Object
79GeneratorStateMachineType_Fault_StateNumber6042Variable
80GeneratorStateMachineType_EmergencyStopped6043Object
81GeneratorStateMachineType_EmergencyStopped_StateNumber6044Variable
82GeneratorStateMachineType_OffToReady6045Object
83GeneratorStateMachineType_OffToReady_TransitionNumber6046Variable
84GeneratorStateMachineType_ReadyToStarting6047Object
85GeneratorStateMachineType_ReadyToStarting_TransitionNumber6048Variable
86GeneratorStateMachineType_ReadyToOff6049Object
87GeneratorStateMachineType_ReadyToOff_TransitionNumber6050Variable
88GeneratorStateMachineType_StartingToWarmup6051Object
89GeneratorStateMachineType_StartingToWarmup_TransitionNumber6052Variable
90GeneratorStateMachineType_StartingToFault6053Object
91GeneratorStateMachineType_StartingToFault_TransitionNumber6054Variable
92GeneratorStateMachineType_WarmupToRunning6055Object
93GeneratorStateMachineType_WarmupToRunning_TransitionNumber6056Variable
94GeneratorStateMachineType_RunningToLoaded6057Object
95GeneratorStateMachineType_RunningToLoaded_TransitionNumber6058Variable
96GeneratorStateMachineType_RunningToSynchronizing6059Object
97GeneratorStateMachineType_RunningToSynchronizing_TransitionNumber6060Variable
98GeneratorStateMachineType_SynchronizingToParalleled6061Object
99GeneratorStateMachineType_SynchronizingToParalleled_TransitionNumber6062Variable
100GeneratorStateMachineType_SynchronizingToRunning6063Object
101GeneratorStateMachineType_SynchronizingToRunning_TransitionNumber6064Variable
102GeneratorStateMachineType_ParalleledToLoaded6065Object
103GeneratorStateMachineType_ParalleledToLoaded_TransitionNumber6066Variable
104GeneratorStateMachineType_LoadedToCooldown6067Object
105GeneratorStateMachineType_LoadedToCooldown_TransitionNumber6068Variable
106GeneratorStateMachineType_RunningToCooldown6069Object
107GeneratorStateMachineType_RunningToCooldown_TransitionNumber6070Variable
108GeneratorStateMachineType_CooldownToStopping6071Object
109GeneratorStateMachineType_CooldownToStopping_TransitionNumber6072Variable
110GeneratorStateMachineType_StoppingToOff6073Object
111GeneratorStateMachineType_StoppingToOff_TransitionNumber6074Variable
112GeneratorStateMachineType_RunningToFault6075Object
113GeneratorStateMachineType_RunningToFault_TransitionNumber6076Variable
114GeneratorStateMachineType_LoadedToFault6077Object
115GeneratorStateMachineType_LoadedToFault_TransitionNumber6078Variable
116GeneratorStateMachineType_ParalleledToFault6079Object
117GeneratorStateMachineType_ParalleledToFault_TransitionNumber6080Variable
118GeneratorStateMachineType_FaultToOff6081Object
119GeneratorStateMachineType_FaultToOff_TransitionNumber6082Variable
120GeneratorStateMachineType_RunningToEmergencyStopped6083Object
121GeneratorStateMachineType_RunningToEmergencyStopped_TransitionNumber6084Variable
122GeneratorStateMachineType_LoadedToEmergencyStopped6085Object
123GeneratorStateMachineType_LoadedToEmergencyStopped_TransitionNumber6086Variable
124GeneratorStateMachineType_ParalleledToEmergencyStopped6087Object
125GeneratorStateMachineType_ParalleledToEmergencyStopped_TransitionNumber6088Variable
126GeneratorStateMachineType_EmergencyStoppedToOff6089Object
127GeneratorStateMachineType_EmergencyStoppedToOff_TransitionNumber6090Variable
128J1939DiagnosticInterfaceType1010ObjectType
129J1939DiagnosticInterfaceType_ProtocolName6091Variable
130J1939DiagnosticInterfaceType_NetworkName6092Variable
131J1939DiagnosticInterfaceType_SourceAddress6093Variable
132J1939DiagnosticInterfaceType_Baudrate6094Variable
133J1939DiagnosticInterfaceType_BusState6095Variable
134J1939DiagnosticInterfaceType_AmberWarningLamp6096Variable
135J1939DiagnosticInterfaceType_RedStopLamp6097Variable
136J1939DiagnosticInterfaceType_MalfunctionIndicatorLamp6098Variable
137J1939DiagnosticInterfaceType_ProtectLamp6099Variable
138J1939DiagnosticInterfaceType_ActiveDiagnosticTroubleCodes6100Variable
139J1939DiagnosticInterfaceType_PreviouslyActiveDiagnosticTroubleCodes6101Variable
140J1939DiagnosticInterfaceType_ClearPreviouslyActiveDtcs6102Method
141ExhaustAftertreatmentType1018ObjectType
142ExhaustAftertreatmentType_AftertreatmentState6103Variable
143ExhaustAftertreatmentType_DefLevel6104Variable
144ExhaustAftertreatmentType_DefLevel_EngineeringUnits6105Variable
145ExhaustAftertreatmentType_DefTemperature6106Variable
146ExhaustAftertreatmentType_DefTemperature_EngineeringUnits6107Variable
147ExhaustAftertreatmentType_DefQuality6108Variable
148ExhaustAftertreatmentType_DefQuality_EngineeringUnits6109Variable
149ExhaustAftertreatmentType_DpfSootLoad6110Variable
150ExhaustAftertreatmentType_DpfSootLoad_EngineeringUnits6111Variable
151ExhaustAftertreatmentType_DpfAshLoad6112Variable
152ExhaustAftertreatmentType_DpfAshLoad_EngineeringUnits6113Variable
153ExhaustAftertreatmentType_ExhaustGasTemperature6114Variable
154ExhaustAftertreatmentType_ExhaustGasTemperature_EngineeringUnits6115Variable
155ExhaustAftertreatmentType_RegenerationRequired6116Variable
156ExhaustAftertreatmentType_RegenerationInhibited6117Variable
157ExhaustAftertreatmentType_InitiateRegeneration6118Method
158ExhaustAftertreatmentType_InhibitRegeneration6119Method
159ExhaustAftertreatmentType_InhibitRegeneration_InputArguments6120Variable
160EngineType1002ObjectType
161EngineType_Speed6121Variable
162EngineType_Speed_EngineeringUnits6122Variable
163EngineType_PercentLoad6123Variable
164EngineType_PercentLoad_EngineeringUnits6124Variable
165EngineType_PercentTorque6125Variable
166EngineType_PercentTorque_EngineeringUnits6126Variable
167EngineType_OilPressure6127Variable
168EngineType_OilPressure_EngineeringUnits6128Variable
169EngineType_OilTemperature6129Variable
170EngineType_OilTemperature_EngineeringUnits6130Variable
171EngineType_CoolantTemperature6131Variable
172EngineType_CoolantTemperature_EngineeringUnits6132Variable
173EngineType_CoolantPressure6133Variable
174EngineType_CoolantPressure_EngineeringUnits6134Variable
175EngineType_FuelRate6135Variable
176EngineType_FuelRate_EngineeringUnits6136Variable
177EngineType_FuelTemperature6137Variable
178EngineType_FuelTemperature_EngineeringUnits6138Variable
179EngineType_IntakeManifoldPressure6139Variable
180EngineType_IntakeManifoldPressure_EngineeringUnits6140Variable
181EngineType_IntakeManifoldTemperature6141Variable
182EngineType_IntakeManifoldTemperature_EngineeringUnits6142Variable
183EngineType_ExhaustGasTemperature6143Variable
184EngineType_ExhaustGasTemperature_EngineeringUnits6144Variable
185EngineType_BarometricPressure6145Variable
186EngineType_BarometricPressure_EngineeringUnits6146Variable
187EngineType_EngineHours6147Variable
188EngineType_EngineHours_EngineeringUnits6148Variable
189EngineType_NumberOfStarts6149Variable
190EngineType_Aspiration6150Variable
191EngineType_Displacement6151Variable
192EngineType_Displacement_EngineeringUnits6152Variable
193EngineType_CylinderCount6153Variable
194EngineType_RatedSpeed6154Variable
195EngineType_RatedSpeed_EngineeringUnits6155Variable
196EngineType_CanInterface6156Object
197EngineType_Aftertreatment6157Object
198AlternatorPhaseType1004ObjectType
199AlternatorPhaseType_LineToNeutralVoltage6158Variable
200AlternatorPhaseType_LineToNeutralVoltage_EngineeringUnits6159Variable
201AlternatorPhaseType_LineToLineVoltage6160Variable
202AlternatorPhaseType_LineToLineVoltage_EngineeringUnits6161Variable
203AlternatorPhaseType_Current6162Variable
204AlternatorPhaseType_Current_EngineeringUnits6163Variable
205AlternatorPhaseType_RealPower6164Variable
206AlternatorPhaseType_RealPower_EngineeringUnits6165Variable
207AlternatorPhaseType_ReactivePower6166Variable
208AlternatorPhaseType_ReactivePower_EngineeringUnits6167Variable
209AlternatorPhaseType_ApparentPower6168Variable
210AlternatorPhaseType_ApparentPower_EngineeringUnits6169Variable
211AlternatorPhaseType_PowerFactor6170Variable
212AlternatorType1003ObjectType
213AlternatorType_Frequency6171Variable
214AlternatorType_Frequency_EngineeringUnits6172Variable
215AlternatorType_AverageLineToLineVoltage6173Variable
216AlternatorType_AverageLineToLineVoltage_EngineeringUnits6174Variable
217AlternatorType_AverageLineToNeutralVoltage6175Variable
218AlternatorType_AverageLineToNeutralVoltage_EngineeringUnits6176Variable
219AlternatorType_AverageCurrent6177Variable
220AlternatorType_AverageCurrent_EngineeringUnits6178Variable
221AlternatorType_TotalRealPower6179Variable
222AlternatorType_TotalRealPower_EngineeringUnits6180Variable
223AlternatorType_TotalReactivePower6181Variable
224AlternatorType_TotalReactivePower_EngineeringUnits6182Variable
225AlternatorType_TotalApparentPower6183Variable
226AlternatorType_TotalApparentPower_EngineeringUnits6184Variable
227AlternatorType_AveragePowerFactor6185Variable
228AlternatorType_TotalRealEnergy6186Variable
229AlternatorType_TotalRealEnergy_EngineeringUnits6187Variable
230AlternatorType_LoadPercent6188Variable
231AlternatorType_LoadPercent_EngineeringUnits6189Variable
232AlternatorType_WindingTemperature16190Variable
233AlternatorType_WindingTemperature1_EngineeringUnits6191Variable
234AlternatorType_WindingTemperature26192Variable
235AlternatorType_WindingTemperature2_EngineeringUnits6193Variable
236AlternatorType_WindingTemperature36194Variable
237AlternatorType_WindingTemperature3_EngineeringUnits6195Variable
238AlternatorType_BearingTemperatureDriveEnd6196Variable
239AlternatorType_BearingTemperatureDriveEnd_EngineeringUnits6197Variable
240AlternatorType_BearingTemperatureNonDriveEnd6198Variable
241AlternatorType_BearingTemperatureNonDriveEnd_EngineeringUnits6199Variable
242AlternatorType_Connection6200Variable
243AlternatorType_ExcitationType6201Variable
244AlternatorType_NumberOfPoles6202Variable
245AlternatorType_VoltageSetpoint6203Variable
246AlternatorType_VoltageSetpoint_EngineeringUnits6204Variable
247AlternatorType_FieldCurrent6205Variable
248AlternatorType_FieldCurrent_EngineeringUnits6206Variable
249AlternatorType_L16207Object
250AlternatorType_L26208Object
251AlternatorType_L36209Object
252FuelSystemType1005ObjectType
253FuelSystemType_FuelType6210Variable
254FuelSystemType_FuelLevel6211Variable
255FuelSystemType_FuelLevel_EngineeringUnits6212Variable
256FuelSystemType_FuelVolume6213Variable
257FuelSystemType_FuelVolume_EngineeringUnits6214Variable
258FuelSystemType_FuelConsumptionRate6215Variable
259FuelSystemType_FuelConsumptionRate_EngineeringUnits6216Variable
260FuelSystemType_FuelPressure6217Variable
261FuelSystemType_FuelPressure_EngineeringUnits6218Variable
262FuelSystemType_FuelTemperature6219Variable
263FuelSystemType_FuelTemperature_EngineeringUnits6220Variable
264FuelSystemType_GasSupplyPressure6221Variable
265FuelSystemType_GasSupplyPressure_EngineeringUnits6222Variable
266FuelSystemType_RuntimeRemaining6223Variable
267FuelSystemType_RuntimeRemaining_EngineeringUnits6224Variable
268FuelSystemType_TotalFuelConsumed6225Variable
269FuelSystemType_TotalFuelConsumed_EngineeringUnits6226Variable
270FuelSystemType_WaterInFuel6227Variable
271CoolingSystemType1006ObjectType
272CoolingSystemType_CoolantTemperature6228Variable
273CoolingSystemType_CoolantTemperature_EngineeringUnits6229Variable
274CoolingSystemType_CoolantLevel6230Variable
275CoolingSystemType_CoolantLevel_EngineeringUnits6231Variable
276CoolingSystemType_CoolantPressure6232Variable
277CoolingSystemType_CoolantPressure_EngineeringUnits6233Variable
278CoolingSystemType_CoolingMethod6234Variable
279CoolingSystemType_AmbientTemperature6235Variable
280CoolingSystemType_AmbientTemperature_EngineeringUnits6236Variable
281CoolingSystemType_RadiatorFanRunning6237Variable
282CoolingSystemType_JacketWaterHeaterActive6238Variable
283LubricationSystemType1007ObjectType
284LubricationSystemType_OilPressure6239Variable
285LubricationSystemType_OilPressure_EngineeringUnits6240Variable
286LubricationSystemType_OilTemperature6241Variable
287LubricationSystemType_OilTemperature_EngineeringUnits6242Variable
288LubricationSystemType_OilLevel6243Variable
289LubricationSystemType_OilLevel_EngineeringUnits6244Variable
290LubricationSystemType_OilFilterDifferentialPressure6245Variable
291LubricationSystemType_OilFilterDifferentialPressure_EngineeringUnits6246Variable
292StartingSystemType1008ObjectType
293StartingSystemType_BatteryVoltage6247Variable
294StartingSystemType_BatteryVoltage_EngineeringUnits6248Variable
295StartingSystemType_BatteryChargingCurrent6249Variable
296StartingSystemType_BatteryChargingCurrent_EngineeringUnits6250Variable
297StartingSystemType_BatteryChargerActive6251Variable
298StartingSystemType_StartAttempts6252Variable
299GeneratorControllerType1009ObjectType
300GeneratorControllerType_ControllerFamily6253Variable
301GeneratorControllerType_FirmwareVersion6254Variable
302GeneratorControllerType_ApplicationSoftwareVersion6255Variable
303GeneratorControllerType_ConfigurationVersion6256Variable
304GeneratorControllerType_InAutoMode6257Variable
305GeneratorControllerType_NotInAuto6258Variable
306GeneratorControllerType_RemoteStartEnabled6259Variable
307GeneratorControllerType_RemoteControlEnabled6260Variable
308GeneratorControllerType_CloudConnected6261Variable
309GeneratorControllerType_ModbusEnabled6262Variable
310GeneratorControllerType_SignalStrength6263Variable
311GeneratorControllerType_SignalStrength_EngineeringUnits6264Variable
312GeneratorRatingType1012ObjectType
313GeneratorRatingType_ApplicationRating6265Variable
314GeneratorRatingType_RatedRealPower6266Variable
315GeneratorRatingType_RatedRealPower_EngineeringUnits6267Variable
316GeneratorRatingType_RatedApparentPower6268Variable
317GeneratorRatingType_RatedApparentPower_EngineeringUnits6269Variable
318GeneratorRatingType_RatedPowerFactor6270Variable
319GeneratorRatingType_RatedVoltage6271Variable
320GeneratorRatingType_RatedVoltage_EngineeringUnits6272Variable
321GeneratorRatingType_RatedCurrent6273Variable
322GeneratorRatingType_RatedCurrent_EngineeringUnits6274Variable
323GeneratorRatingType_RatedFrequency6275Variable
324GeneratorRatingType_RatedFrequency_EngineeringUnits6276Variable
325GeneratorRatingType_RatedSpeed6277Variable
326GeneratorRatingType_RatedSpeed_EngineeringUnits6278Variable
327GeneratorRatingType_PhaseCount6279Variable
328GeneratorRatingType_Connection6280Variable
329GeneratorRatingType_AmbientTemperature6281Variable
330GeneratorRatingType_AmbientTemperature_EngineeringUnits6282Variable
331GeneratorRatingType_Altitude6283Variable
332GeneratorRatingType_Altitude_EngineeringUnits6284Variable
333GeneratorProtectionAlarmType1017ObjectType
334GeneratorProtectionAlarmType_ProtectionFunction6285Variable
335GeneratorProtectionAlarmType_GeneratorAlarmSeverity6286Variable
336GeneratorProtectionAlarmType_IsShutdown6287Variable
337GeneratorProtectionAlarmType_Spn6288Variable
338GeneratorProtectionAlarmType_Fmi6289Variable
339GeneratorProtectionAlarmType_SubsystemName6290Variable
340GeneratorSetType1001ObjectType
341GeneratorSetType_Identification6291Object
342GeneratorSetType_MachineryBuildingBlocks6292Object
343GeneratorSetType_MachineryBuildingBlocks_MachineryItemState6293Object
344GeneratorSetType_MachineryBuildingBlocks_MachineryOperationMode6294Object
345GeneratorSetType_OperatingState6295Object
346GeneratorSetType_OperatingMode6296Variable
347GeneratorSetType_EmissionsStandard6297Variable
348GeneratorSetType_Application6298Variable
349GeneratorSetType_GeneratorBreakerClosed6299Variable
350GeneratorSetType_GeneratorBreakerAvailable6300Variable
351GeneratorSetType_RemoteStartInput6301Variable
352GeneratorSetType_RunRequest6302Variable
353GeneratorSetType_LoadInhibit6303Variable
354GeneratorSetType_AvailableToLoad6304Variable
355GeneratorSetType_Engine6305Object
356GeneratorSetType_Alternator6306Object
357GeneratorSetType_Controller6307Object
358GeneratorSetType_FuelSystem6308Object
359GeneratorSetType_CoolingSystem6309Object
360GeneratorSetType_LubricationSystem6310Object
361GeneratorSetType_StartingSystem6311Object
362GeneratorSetType_Ratings6312Object
363GeneratorSetType_Ratings_Rating6313Object
364GeneratorSetType_Start6314Method
365GeneratorSetType_Stop6315Method
366GeneratorSetType_EmergencyStop6316Method
367GeneratorSetType_ResetFaults6317Method
368GeneratorSetType_SetOperatingMode6318Method
369GeneratorSetType_SetOperatingMode_InputArguments6319Variable
370GeneratorSetType_StartTest6320Method
371GeneratorSetType_StartTest_InputArguments6321Variable
372TransferSwitchSourceType1019ObjectType
373TransferSwitchSourceType_Available6322Variable
374TransferSwitchSourceType_Acceptable6323Variable
375TransferSwitchSourceType_Voltage6324Variable
376TransferSwitchSourceType_Voltage_EngineeringUnits6325Variable
377TransferSwitchSourceType_Frequency6326Variable
378TransferSwitchSourceType_Frequency_EngineeringUnits6327Variable
379TransferSwitchSourceType_PhaseRotation6328Variable
380AutomaticTransferSwitchType1013ObjectType
381AutomaticTransferSwitchType_Identification6329Object
382AutomaticTransferSwitchType_Position6330Variable
383AutomaticTransferSwitchType_OperatingState6331Variable
384AutomaticTransferSwitchType_TransitionType6332Variable
385AutomaticTransferSwitchType_Source16333Object
386AutomaticTransferSwitchType_Source26334Object
387AutomaticTransferSwitchType_PreferredSource6335Variable
388AutomaticTransferSwitchType_Source1Connected6336Variable
389AutomaticTransferSwitchType_Source2Connected6337Variable
390AutomaticTransferSwitchType_TransferInhibited6338Variable
391AutomaticTransferSwitchType_TransferInhibitReason6339Variable
392AutomaticTransferSwitchType_RatedCurrent6340Variable
393AutomaticTransferSwitchType_RatedCurrent_EngineeringUnits6341Variable
394AutomaticTransferSwitchType_PoleCount6342Variable
395AutomaticTransferSwitchType_ServiceEntranceRated6343Variable
396AutomaticTransferSwitchType_LoadCurrent6344Variable
397AutomaticTransferSwitchType_LoadCurrent_EngineeringUnits6345Variable
398AutomaticTransferSwitchType_TransferCount6346Variable
399AutomaticTransferSwitchType_LastTransferTime6347Variable
400AutomaticTransferSwitchType_EngineStartDelay6348Variable
401AutomaticTransferSwitchType_TransferToEmergencyDelay6349Variable
402AutomaticTransferSwitchType_RetransferToNormalDelay6350Variable
403AutomaticTransferSwitchType_CooldownDelay6351Variable
404AutomaticTransferSwitchType_Transfer6352Method
405AutomaticTransferSwitchType_Retransfer6353Method
406AutomaticTransferSwitchType_InhibitTransfer6354Method
407AutomaticTransferSwitchType_InhibitTransfer_InputArguments6355Variable
408ParallelingControllerType1014ObjectType
409ParallelingControllerType_SystemState6356Variable
410ParallelingControllerType_BusVoltage6357Variable
411ParallelingControllerType_BusVoltage_EngineeringUnits6358Variable
412ParallelingControllerType_BusFrequency6359Variable
413ParallelingControllerType_BusFrequency_EngineeringUnits6360Variable
414ParallelingControllerType_TotalBusRealPower6361Variable
415ParallelingControllerType_TotalBusRealPower_EngineeringUnits6362Variable
416ParallelingControllerType_TotalBusReactivePower6363Variable
417ParallelingControllerType_TotalBusReactivePower_EngineeringUnits6364Variable
418ParallelingControllerType_SynchronizationAngle6365Variable
419ParallelingControllerType_SynchronizationAngle_EngineeringUnits6366Variable
420ParallelingControllerType_SlipFrequency6367Variable
421ParallelingControllerType_SlipFrequency_EngineeringUnits6368Variable
422ParallelingControllerType_VoltageDifference6369Variable
423ParallelingControllerType_VoltageDifference_EngineeringUnits6370Variable
424ParallelingControllerType_FrequencyDifference6371Variable
425ParallelingControllerType_FrequencyDifference_EngineeringUnits6372Variable
426ParallelingControllerType_SyncCheckPermissive6373Variable
427ParallelingControllerType_DeadBus6374Variable
428ParallelingControllerType_LoadSharePercent6375Variable
429ParallelingControllerType_LoadSharePercent_EngineeringUnits6376Variable
430ParallelingControllerType_AvailableCapacity6377Variable
431ParallelingControllerType_AvailableCapacity_EngineeringUnits6378Variable
432ParallelingControllerType_SpinningReserve6379Variable
433ParallelingControllerType_SpinningReserve_EngineeringUnits6380Variable
434ParallelingControllerType_GeneratorBreakerClosed6381Variable
435ParallelingControllerType_UtilityBreakerClosed6382Variable
436ParallelingControllerType_UtilityImportPower6383Variable
437ParallelingControllerType_UtilityImportPower_EngineeringUnits6384Variable
438ParallelingControllerType_UtilityExportPower6385Variable
439ParallelingControllerType_UtilityExportPower_EngineeringUnits6386Variable
440ParallelingControllerType_ConnectToBus6387Method
441ParallelingControllerType_DisconnectFromBus6388Method
442GeneratorSystemType1015ObjectType
443GeneratorSystemType_GeneratorSets6389Object
444GeneratorSystemType_GeneratorSets_GeneratorSet6390Object
445GeneratorSystemType_ParallelingController6391Object
446GeneratorSystemType_TransferSwitches6392Object
447GeneratorSystemType_TransferSwitches_TransferSwitch6393Object
448GeneratorSystemType_NumberOfGeneratorSets6394Variable
449GeneratorSystemType_TotalSystemCapacity6395Variable
450GeneratorSystemType_TotalSystemCapacity_EngineeringUnits6396Variable
451GeneratorSystemType_TotalSystemLoad6397Variable
452GeneratorSystemType_TotalSystemLoad_EngineeringUnits6398Variable
453GeneratorSystemType_RedundancyScheme6399Variable