Refine XML docs for historian, OPC UA, and tests

This commit is contained in:
Joseph Doherty
2026-03-26 15:33:14 -04:00
parent 3c326e2d45
commit ce0b291664
14 changed files with 215 additions and 3 deletions

View File

@@ -54,8 +54,19 @@ namespace ZB.MOM.WW.LmxOpcUa.Host.OpcUa
private sealed class TagMetadata
{
/// <summary>
/// Gets or sets the MXAccess data type code used to map Galaxy values into OPC UA variants.
/// </summary>
public int MxDataType { get; set; }
/// <summary>
/// Gets or sets a value indicating whether the source Galaxy attribute should be exposed as an array node.
/// </summary>
public bool IsArray { get; set; }
/// <summary>
/// Gets or sets the declared array length from Galaxy metadata when the attribute is modeled as an array.
/// </summary>
public int? ArrayDimension { get; set; }
}
@@ -70,14 +81,49 @@ namespace ZB.MOM.WW.LmxOpcUa.Host.OpcUa
private sealed class AlarmInfo
{
/// <summary>
/// Gets or sets the full tag reference for the process value whose alarm state is tracked.
/// </summary>
public string SourceTagReference { get; set; } = "";
/// <summary>
/// Gets or sets the OPC UA node identifier for the source variable that owns the alarm condition.
/// </summary>
public NodeId SourceNodeId { get; set; } = NodeId.Null;
/// <summary>
/// Gets or sets the operator-facing source name used in generated alarm events.
/// </summary>
public string SourceName { get; set; } = "";
/// <summary>
/// Gets or sets the most recent in-alarm state so duplicate transitions are not reissued.
/// </summary>
public bool LastInAlarm { get; set; }
/// <summary>
/// Gets or sets the retained OPC UA condition node associated with the source alarm.
/// </summary>
public AlarmConditionState? ConditionNode { get; set; }
/// <summary>
/// Gets or sets the Galaxy tag reference that supplies runtime alarm priority updates.
/// </summary>
public string PriorityTagReference { get; set; } = "";
/// <summary>
/// Gets or sets the Galaxy tag reference or attribute binding used to resolve the alarm message text.
/// </summary>
public string DescAttrNameTagReference { get; set; } = "";
/// <summary>
/// Gets or sets the cached OPC UA severity derived from the latest alarm priority value.
/// </summary>
public ushort CachedSeverity { get; set; }
/// <summary>
/// Gets or sets the cached alarm message used when emitting active and cleared events.
/// </summary>
public string CachedMessage { get; set; } = "";
}
@@ -124,6 +170,8 @@ namespace ZB.MOM.WW.LmxOpcUa.Host.OpcUa
/// <param name="namespaceUri">The namespace URI that identifies the Galaxy model to clients.</param>
/// <param name="mxAccessClient">The runtime client used to service reads, writes, and subscriptions.</param>
/// <param name="metrics">The metrics collector used to track node manager activity.</param>
/// <param name="historianDataSource">The optional historian adapter used to satisfy OPC UA history read requests.</param>
/// <param name="alarmTrackingEnabled">Enables alarm-condition state generation for Galaxy attributes modeled as alarms.</param>
public LmxNodeManager(
IServerInternal server,
ApplicationConfiguration configuration,
@@ -444,6 +492,8 @@ namespace ZB.MOM.WW.LmxOpcUa.Host.OpcUa
/// <summary>
/// Incrementally syncs the address space by detecting changed gobjects and rebuilding only those subtrees. (OPC-010)
/// </summary>
/// <param name="hierarchy">The latest Galaxy object hierarchy snapshot to compare against the currently published model.</param>
/// <param name="attributes">The latest Galaxy attribute snapshot to compare against the currently published variables.</param>
public void SyncAddressSpace(List<GalaxyObjectInfo> hierarchy, List<GalaxyAttributeInfo> attributes)
{
lock (Lock)
@@ -1140,9 +1190,9 @@ namespace ZB.MOM.WW.LmxOpcUa.Host.OpcUa
#region Condition Refresh
/// <summary>
/// Reports all active retained alarm conditions during a condition refresh.
/// </summary>
/// <inheritdoc />
/// <param name="context">The OPC UA request context for the condition refresh operation.</param>
/// <param name="monitoredItems">The monitored event items that should receive retained alarm conditions.</param>
public override ServiceResult ConditionRefresh(OperationContext context, IList<IEventMonitoredItem> monitoredItems)
{
foreach (var kvp in _alarmInAlarmTags)