refactor(driver-abcip): extract AbCipDriverOptions to .Contracts
Move AbCipDriverOptions (and AbCipDataType enum) to a new Driver.AbCip.Contracts sibling project. AbCipDataTypeExtensions (which uses DriverDataType from Core.Abstractions) stays in the runtime driver as AbCipDataTypeExtensions.cs. Replace two doc-comment <see cref="Core.Abstractions.IAlarmSource"/> and <see cref="Core.Abstractions.IHostConnectivityProbe"/> with <c>X</c> per the approved decision — no compilable using was present. The runtime Driver.AbCip project gains a ProjectReference to .Contracts; the .slnx is updated accordingly.
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Contracts.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/ZB.MOM.WW.OtOpcUa.Driver.S7.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7/ZB.MOM.WW.OtOpcUa.Driver.S7.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip/ZB.MOM.WW.OtOpcUa.Driver.AbCip.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip/ZB.MOM.WW.OtOpcUa.Driver.AbCip.csproj" />
|
||||||
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.csproj" />
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
namespace ZB.MOM.WW.OtOpcUa.Driver.AbCip;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Logix atomic + string data types, plus a <c>Structure</c> marker used when a tag
|
||||||
|
/// references a UDT / predefined structure (Timer, Counter, Control). The concrete UDT
|
||||||
|
/// shape is resolved via the CIP Template Object at discovery time.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Mirrors the shape of <c>ModbusDataType</c>. Atomic Logix names (BOOL / SINT / INT / DINT /
|
||||||
|
/// LINT / REAL / LREAL / STRING / DT) map one-to-one; BIT + BOOL-in-DINT collapse into
|
||||||
|
/// <c>Bool</c> with the <c>.N</c> bit-index carried on the <c>AbCipTagPath</c>
|
||||||
|
/// rather than the data type itself.
|
||||||
|
/// </remarks>
|
||||||
|
public enum AbCipDataType
|
||||||
|
{
|
||||||
|
Bool,
|
||||||
|
SInt, // signed 8-bit
|
||||||
|
Int, // signed 16-bit
|
||||||
|
DInt, // signed 32-bit
|
||||||
|
LInt, // signed 64-bit
|
||||||
|
USInt, // unsigned 8-bit (Logix 5000 post-V21)
|
||||||
|
UInt, // unsigned 16-bit
|
||||||
|
UDInt, // unsigned 32-bit
|
||||||
|
ULInt, // unsigned 64-bit
|
||||||
|
Real, // 32-bit IEEE-754
|
||||||
|
LReal, // 64-bit IEEE-754
|
||||||
|
String, // Logix STRING (DINT Length + SINT[82] DATA — flattened to .NET string by libplctag)
|
||||||
|
Dt, // Date/Time — Logix DT == DINT representing seconds-since-epoch per Rockwell conventions
|
||||||
|
/// <summary>
|
||||||
|
/// UDT / Predefined Structure (Timer / Counter / Control / Message / Axis). Shape is
|
||||||
|
/// resolved at discovery time; reads + writes fan out to member Variables unless the
|
||||||
|
/// caller has explicitly opted into whole-UDT decode.
|
||||||
|
/// </summary>
|
||||||
|
Structure,
|
||||||
|
}
|
||||||
+2
-2
@@ -45,7 +45,7 @@ public sealed class AbCipDriverOptions
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Task #177 — when <c>true</c>, declared ALMD tags are surfaced as alarm conditions
|
/// Task #177 — when <c>true</c>, declared ALMD tags are surfaced as alarm conditions
|
||||||
/// via <see cref="Core.Abstractions.IAlarmSource"/>; the driver polls each subscribed
|
/// via <c>IAlarmSource</c>; the driver polls each subscribed
|
||||||
/// alarm's <c>InFaulted</c> + <c>Severity</c> members + fires <c>OnAlarmEvent</c> on
|
/// alarm's <c>InFaulted</c> + <c>Severity</c> members + fires <c>OnAlarmEvent</c> on
|
||||||
/// state transitions. Default <c>false</c> — operators explicitly opt in because
|
/// state transitions. Default <c>false</c> — operators explicitly opt in because
|
||||||
/// projection semantics don't exactly mirror Rockwell FT Alarm & Events; shops
|
/// projection semantics don't exactly mirror Rockwell FT Alarm & Events; shops
|
||||||
@@ -158,7 +158,7 @@ public enum AbCipPlcFamily
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Background connectivity-probe settings. Enabled by default; the probe reads a cheap tag
|
/// Background connectivity-probe settings. Enabled by default; the probe reads a cheap tag
|
||||||
/// on the PLC at the configured interval to drive <see cref="Core.Abstractions.IHostConnectivityProbe"/>
|
/// on the PLC at the configured interval to drive <c>IHostConnectivityProbe</c>
|
||||||
/// state transitions + Admin UI health status.
|
/// state transitions + Admin UI health status.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed class AbCipProbeOptions
|
public sealed class AbCipProbeOptions
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||||
|
</PropertyGroup>
|
||||||
|
<!-- NO PackageReference. -->
|
||||||
|
</Project>
|
||||||
-35
@@ -2,41 +2,6 @@ using ZB.MOM.WW.OtOpcUa.Core.Abstractions;
|
|||||||
|
|
||||||
namespace ZB.MOM.WW.OtOpcUa.Driver.AbCip;
|
namespace ZB.MOM.WW.OtOpcUa.Driver.AbCip;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Logix atomic + string data types, plus a <see cref="Structure"/> marker used when a tag
|
|
||||||
/// references a UDT / predefined structure (Timer, Counter, Control). The concrete UDT
|
|
||||||
/// shape is resolved via the CIP Template Object at discovery time (see
|
|
||||||
/// <see cref="CipTemplateObjectDecoder"/> + <see cref="AbCipTemplateCache"/>).
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Mirrors the shape of <c>ModbusDataType</c>. Atomic Logix names (BOOL / SINT / INT / DINT /
|
|
||||||
/// LINT / REAL / LREAL / STRING / DT) map one-to-one; BIT + BOOL-in-DINT collapse into
|
|
||||||
/// <see cref="Bool"/> with the <c>.N</c> bit-index carried on the <see cref="AbCipTagPath"/>
|
|
||||||
/// rather than the data type itself.
|
|
||||||
/// </remarks>
|
|
||||||
public enum AbCipDataType
|
|
||||||
{
|
|
||||||
Bool,
|
|
||||||
SInt, // signed 8-bit
|
|
||||||
Int, // signed 16-bit
|
|
||||||
DInt, // signed 32-bit
|
|
||||||
LInt, // signed 64-bit
|
|
||||||
USInt, // unsigned 8-bit (Logix 5000 post-V21)
|
|
||||||
UInt, // unsigned 16-bit
|
|
||||||
UDInt, // unsigned 32-bit
|
|
||||||
ULInt, // unsigned 64-bit
|
|
||||||
Real, // 32-bit IEEE-754
|
|
||||||
LReal, // 64-bit IEEE-754
|
|
||||||
String, // Logix STRING (DINT Length + SINT[82] DATA — flattened to .NET string by libplctag)
|
|
||||||
Dt, // Date/Time — Logix DT == DINT representing seconds-since-epoch per Rockwell conventions
|
|
||||||
/// <summary>
|
|
||||||
/// UDT / Predefined Structure (Timer / Counter / Control / Message / Axis). Shape is
|
|
||||||
/// resolved at discovery time; reads + writes fan out to member Variables unless the
|
|
||||||
/// caller has explicitly opted into whole-UDT decode.
|
|
||||||
/// </summary>
|
|
||||||
Structure,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>Map a Logix atomic type to the driver-surface <see cref="DriverDataType"/>.</summary>
|
/// <summary>Map a Logix atomic type to the driver-surface <see cref="DriverDataType"/>.</summary>
|
||||||
public static class AbCipDataTypeExtensions
|
public static class AbCipDataTypeExtensions
|
||||||
{
|
{
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts\ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts.csproj"/>
|
||||||
<ProjectReference Include="..\..\Core\ZB.MOM.WW.OtOpcUa.Core.Abstractions\ZB.MOM.WW.OtOpcUa.Core.Abstractions.csproj"/>
|
<ProjectReference Include="..\..\Core\ZB.MOM.WW.OtOpcUa.Core.Abstractions\ZB.MOM.WW.OtOpcUa.Core.Abstractions.csproj"/>
|
||||||
<ProjectReference Include="..\..\Core\ZB.MOM.WW.OtOpcUa.Core\ZB.MOM.WW.OtOpcUa.Core.csproj"/>
|
<ProjectReference Include="..\..\Core\ZB.MOM.WW.OtOpcUa.Core\ZB.MOM.WW.OtOpcUa.Core.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user