namespace ZB.MOM.WW.OtOpcUa.Driver.TwinCAT; /// /// TwinCAT ADS driver configuration. One instance supports N targets (each identified by /// an AMS Net ID + port). Compiles + runs without a local AMS router but every wire call /// fails with BadCommunicationError until a router is reachable. /// public sealed class TwinCATDriverOptions { public IReadOnlyList Devices { get; init; } = []; public IReadOnlyList Tags { get; init; } = []; public TwinCATProbeOptions Probe { get; init; } = new(); public TimeSpan Timeout { get; init; } = TimeSpan.FromSeconds(2); } /// /// One TwinCAT target. must parse via /// ; misconfigured devices fail driver initialisation. /// public sealed record TwinCATDeviceOptions( string HostAddress, string? DeviceName = null); /// /// One TwinCAT-backed OPC UA variable. is the full TwinCAT /// symbolic name (e.g. MAIN.bStart, GVL.Counter, Motor1.Status.Running). /// public sealed record TwinCATTagDefinition( string Name, string DeviceHostAddress, string SymbolPath, TwinCATDataType DataType, bool Writable = true, bool WriteIdempotent = false); public sealed class TwinCATProbeOptions { public bool Enabled { get; init; } = true; public TimeSpan Interval { get; init; } = TimeSpan.FromSeconds(5); public TimeSpan Timeout { get; init; } = TimeSpan.FromSeconds(2); }