[abcip] AbCip — Array-slice read addressing Tag[0..N] #319
Reference in New Issue
Block a user
Delete Branch "auto/abcip/1.3"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds
Tag[N..M]slice syntax toAbCipTagPath.TryParseand a newAbCipArrayReadPlannerthat issues a single libplctag read withElementCount=Nand decodes the contiguous buffer into per-index snapshots.AbCipTagPath.cs— slice parsing only on trailing segment; rejects slice+sub-element / slice+bit-index / multi-dim / M<N / negative starts. NewAbCipTagPathSlicerecord (Start,End,Count) andToLibplctagSliceArrayName().AbCipTagCreateParams.cs+LibplctagTagRuntime.cs— newElementCountfield threaded into libplctag's_tag.ElementCount.AbCipArrayReadPlanner.cs(new) — mirrors UDT-planner pattern.TryBuildreturns null for unsupported element types (Bool / String / Structure).Decodewalks the buffer at natural Logix stride.AbCipDriver.cs— newReadSliceAsyncpath keyed offparsedPath.Slice; one snapshot per slice tag whoseValueisobject?[]of decoded elements.EnsureSliceRuntimeAsynccaches the runtime keyed by tag full-name.Test plan
dotnet build(per-project) — clean (0 / 0)dotnet test tests/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Tests— 264 / 264 passed (11 new: 4 slice-parser positive + 9 invalid-shape, 5 planner units, 2 driver-level for DInt success + Bool BadNotSupported)🤖 Auto-generated by the Mode-B execution loop. Closes #227.
Closes #227