docs(abcip): Large Forward Open refusal targets and ConnectionSize honouring (T21 review r1 M6)
The 5069-L3x supports the Large open, as the press proved. The narrow/refusing case is a pre-v20 1769-L3x or a bridge. AbCipDeviceOptions.ConnectionSize: the native transport honours it on the wire; libplctag ignores it. Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
@@ -120,7 +120,7 @@ happens when a non-safety write lands on a real `1756-L8xS` — is not exercised
|
|||||||
|
|
||||||
Since T21 the CompactLogix profile defaults to a **Large** Forward Open (4002), matching what libplctag
|
Since T21 the CompactLogix profile defaults to a **Large** Forward Open (4002), matching what libplctag
|
||||||
opens for `plc=compactlogix`. The old 504 default was cosmetic under libplctag, which never received it,
|
opens for `plc=compactlogix`. The old 504 default was cosmetic under libplctag, which never received it,
|
||||||
and cost the native transport ~3× the round trips per poll. A narrower 5069-L3x / pre-v20 target that refuses
|
and cost the native transport ~3× the round trips per poll. A pre-v20 CompactLogix (1769-L3x) or a bridge that refuses
|
||||||
the Large open is handled by `CipConnection`'s fallback (a regular open at min(size, 504) in the same
|
the Large open is handled by `CipConnection`'s fallback (a regular open at min(size, 504) in the same
|
||||||
throttled attempt). That fallback is pinned by unit tests against a fake target only: `ab_server` accepts
|
throttled attempt). That fallback is pinned by unit tests against a fake target only: `ab_server` accepts
|
||||||
any size, so a refusing controller is never exercised here.
|
any size, so a refusing controller is never exercised here.
|
||||||
|
|||||||
@@ -129,11 +129,9 @@ public sealed class AbCipDriverOptions
|
|||||||
/// touching every other device on the same family.</param>
|
/// touching every other device on the same family.</param>
|
||||||
/// <param name="ConnectionSize">Per-device override for the Forward Open
|
/// <param name="ConnectionSize">Per-device override for the Forward Open
|
||||||
/// ConnectionSize (Large Forward Open packet size in bytes). <c>null</c> inherits the family
|
/// ConnectionSize (Large Forward Open packet size in bytes). <c>null</c> inherits the family
|
||||||
/// profile's <c>DefaultConnectionSize</c>. Honoured by the driver layer; the underlying
|
/// profile's <c>DefaultConnectionSize</c>. The native transport honours it on the wire (its Forward
|
||||||
/// libplctag 1.5.2 wrapper has no direct <c>ConnectionSize</c> property, so the value is
|
/// Open size). The libplctag transport ignores it: the libplctag 1.5.2 wrapper has no
|
||||||
/// plumbed through <see cref="AbCipTagCreateParams"/> for forward-compat with future wrapper
|
/// <c>ConnectionSize</c> property, so libplctag opens with its own size for the <c>plc</c> attribute.</param>
|
||||||
/// versions or a custom tag-attribute path; current builds use the family profile default at
|
|
||||||
/// the wire layer regardless.</param>
|
|
||||||
public sealed record AbCipDeviceOptions(
|
public sealed record AbCipDeviceOptions(
|
||||||
string HostAddress,
|
string HostAddress,
|
||||||
AbCipPlcFamily PlcFamily = AbCipPlcFamily.ControlLogix,
|
AbCipPlcFamily PlcFamily = AbCipPlcFamily.ControlLogix,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public sealed record AbCipPlcFamilyProfile(
|
|||||||
LibplctagPlcAttribute: "compactlogix",
|
LibplctagPlcAttribute: "compactlogix",
|
||||||
// Large Forward Open, matching libplctag: `plc=compactlogix` opens Large (0x5B, 4002) and the
|
// Large Forward Open, matching libplctag: `plc=compactlogix` opens Large (0x5B, 4002) and the
|
||||||
// native transport must not pack into a third of the window (T21 latency harness: 504 cost ~3x
|
// native transport must not pack into a third of the window (T21 latency harness: 504 cost ~3x
|
||||||
// the round trips per poll). A narrower 5069-L3x / pre-v20 target that refuses the Large open
|
// the round trips per poll). A pre-v20 CompactLogix (1769-L3x) or a bridge that refuses the Large open
|
||||||
// is covered by CipConnection's fallback — a regular open at min(size, 504) inside the same
|
// is covered by CipConnection's fallback — a regular open at min(size, 504) inside the same
|
||||||
// throttled attempt. An explicit ConnectionSize (driver options or per device) still wins.
|
// throttled attempt. An explicit ConnectionSize (driver options or per device) still wins.
|
||||||
DefaultConnectionSize: 4002,
|
DefaultConnectionSize: 4002,
|
||||||
|
|||||||
Reference in New Issue
Block a user