From b25ee10a142e4e7141646ce8ee22080569f3105e Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 7 Oct 2026 22:39:33 -0400 Subject: [PATCH] =?UTF-8?q?test(abcip):=20real-press=20pass=203=20with=20p?= =?UTF-8?q?acket=20capture=20=E2=80=94=2017/17,=20zero=20write=20services,?= =?UTF-8?q?=204=20sequential=20sessions=20(Z-35162)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe --- ...-10-07-native-ab-transport-gate-results.md | 24 +- .../t21-pass3.txt | 369 ++++++++++++++++++ 2 files changed, 391 insertions(+), 2 deletions(-) create mode 100644 docs/plans/2026-10-07-native-ab-transport-t21/t21-pass3.txt diff --git a/docs/plans/2026-10-07-native-ab-transport-gate-results.md b/docs/plans/2026-10-07-native-ab-transport-gate-results.md index 767ea51b..5d81422c 100644 --- a/docs/plans/2026-10-07-native-ab-transport-gate-results.md +++ b/docs/plans/2026-10-07-native-ab-transport-gate-results.md @@ -223,7 +223,27 @@ There were **zero** 0x4D/0x53/0x4B. Both aborts (runs 1 and 5) were the simulato across TCP segments (1448 + 606), and ab_server answered with FIN. The harness aborted on the first connection-level failure, as designed. A real controller reassembles TCP; ab_server does not. -The T21 press result is recorded under `## Latency (T21)` and is not filled in here. +The T21 press result is recorded under `### Pass 3 — 2026-10-08 02:27–02:30 UTC (HEAD `8e2dbc67`, after the final-review fixes; same settings as pass 2) — with packet capture + +**17/17 passed.** Browse 3162 = 3162 tags; 20 UDT templates identical; 200 tags read with 0 unexpected divergences +(6 live); native 1 Forward Open, Forward Closes sent/acked 1/1; latency native p95 105.1 ms ≤ libplctag p95 197.3 ms +×1.10 = 217.1 ms → PASS. Raw output: [pass 3](2026-10-07-native-ab-transport-t21/t21-pass3.txt). + +Packet capture (`tcpdump -i utun4 host 10.209.70.160 and port 44818`, analysed with TCP sequence reassembly): + +| Session | Order | Window (s) | CIP services seen (requests) | Forward Close target | +|---|---|---|---|---| +| libplctag differential | 1 | 0.0 – 82.5 | 0x03, 0x4C, 0x52, 0x55, 0x5B ×1, 0x4E ×1 | Connection Manager 6/1 | +| native differential | 2 | 82.5 – 126.3 | 0x03, 0x4C, 0x52, 0x55, 0x5B ×1, 0x4E ×1 (+ UnRegisterSession) | Connection Manager 6/1 | +| libplctag latency | 3 | 126.5 – 152.4 | 0x0A (MSP), 0x52, 0x5B ×1, 0x4E ×1 | Connection Manager 6/1 | +| native latency | 4 | 152.4 – 176.5 | 0x0A (MSP), 0x52, 0x5B ×1, 0x4E ×1 (+ UnRegisterSession) | Connection Manager 6/1 | + +- **Zero write-class services** (no 0x4D Write Tag, 0x53 Write Tag Fragmented, 0x4B Execute PCCC, and no 0x4E to + anything but the Connection Manager). +- **Four sessions, strictly sequential** — each starts after the previous one's last packet; never two at once. +- Every session opened exactly one Large Forward Open and closed it with one Forward Close. + +## Latency (T21)` and is not filled in here. ## AdminUI /run (T19) @@ -342,7 +362,7 @@ Failures, and what they led to: | Writes | none — read-only source guard passes; `grep -c WriteAsync` = 0 over every Differential file | | libplctag failed-create orphans | 15 destroyed by the #578 fix, 0 rooted — no crash at exit | -⚠️ **Pass 2 has no independent packet capture**: the operator's `tcpdump` had stopped at 23:45 UTC, before pass 2 began, +⚠️ **Pass 2 has no independent packet capture** (pass 3 below re-ran it with one): the operator's `tcpdump` had stopped at 23:45 UTC, before pass 2 began, and this was not noticed until afterwards. The read-only evidence for pass 2 is the source guard and the harness's own Forward Open/Close counters; pass 1's capture is the wire-level proof for the same code paths. diff --git a/docs/plans/2026-10-07-native-ab-transport-t21/t21-pass3.txt b/docs/plans/2026-10-07-native-ab-transport-t21/t21-pass3.txt new file mode 100644 index 00000000..d77aa0f2 --- /dev/null +++ b/docs/plans/2026-10-07-native-ab-transport-t21/t21-pass3.txt @@ -0,0 +1,369 @@ + +Test run for /Users/dohertj2/Desktop/OtOpcUa/tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests/bin/Debug/net10.0/ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.dll (.NETCoreApp,Version=v10.0) +VSTest version 18.0.1 (arm64) + +Starting test execution, please wait... +A total of 1 test files matched the specified pattern. +/Users/dohertj2/Desktop/OtOpcUa/tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests/bin/Debug/net10.0/ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.dll +[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v3.0.2+dd36e86129 (64-bit .NET 10.0.5) +[xUnit.net 00:00:00.35] Discovering: ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests +[xUnit.net 00:00:00.49] Discovered: ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests +[xUnit.net 00:00:00.60] Starting: ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.DifferentialSafetyTests.Template_parity_fails_when_vacuous_or_undecodable [9 ms] + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.DifferentialSafetyTests.A_failing_endpoint_aborts_the_native_phase_after_exactly_one_connect [2 s] + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.DifferentialSafetyTests.The_default_selection_keeps_arrays_and_udt_members_at_any_cap [7 ms] + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.DifferentialSafetyTests.Volume_knobs_fail_fast_above_the_ceiling_instead_of_clamping [2 ms] + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.DifferentialSafetyTests.A_failing_endpoint_aborts_the_libplctag_phase_before_any_tag_is_read [6 s] + Standard Output Messages: + libplctag connects before the abort: 1 + + + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.PollLatencyComparisonTests.Tag_pick_takes_atomic_scalars_only_and_repeats_a_short_set_visibly [13 ms] + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.PollLatencyComparisonTests.Native_poll_p95_is_within_ten_percent_of_libplctag [2 m 56 s] + Standard Output Messages: + ## Latency — 10.209.70.160:44818 path '1,0' family CompactLogix (compactlogix, connection size 4002), max tags 200, max templates 20, pace 50 ms + Tags per pass: 95 (100 distinct); passes per transport: 50; gap between passes: 200 ms. + Types: SInt 6, DInt 8, Bool 17, Real 7, Int 57 + Dropped (libplctag refused at setup, removed from both sets): Local:1:I.Pad1, Local:2:I.Pad1, Local:3:I.Pad1, Local:5:C.CfgSize, Local:5:C.CfgIDNum + Native requests spent on setup (one read per tag): 95; native Forward Opens: 1; native Forward Closes sent/acked: 1/1; connections after the native phase: 0. + libplctag orphans destroyed so far: 15; rooted (unreleasable): 0. + + | Transport | Passes | p50 ms | p95 ms | min ms | max ms | CIP requests per pass (median) | Tag failures | + |---|---|---|---|---|---|---|---| + | libplctag | 50 | 101.8 | 197.3 | 54.6 | 219.2 | n/a | 0 | + | native | 50 | 99.4 | 105.1 | 76.0 | 139.3 | 2 | 0 | + + Criterion: native p95 105.1 ms ≤ libplctag p95 197.3 ms × 1.10 = 217.1 ms → PASS + + | Pass | libplctag ms | libplctag GC 0/1/2 | native ms | native GC 0/1/2 | native requests | native RTT min/mean/max ms | + |---|---|---|---|---|---|---| + | 1 | 99.9 | 0/0/0 | 99.6 | 0/0/0 | 2 | 45.0/49.4/53.8 | + | 2 | 101.7 | 0/0/0 | 101.3 | 0/0/0 | 2 | 48.1/50.5/53.0 | + | 3 | 100.0 | 0/0/0 | 99.6 | 0/0/0 | 2 | 45.7/49.7/53.7 | + | 4 | 102.4 | 0/0/0 | 98.9 | 1/0/0 | 2 | 48.2/49.4/50.5 | + | 5 | 105.8 | 0/0/0 | 97.1 | 0/0/0 | 2 | 44.8/48.5/52.2 | + | 6 | 103.5 | 0/0/0 | 99.8 | 0/0/0 | 2 | 45.3/49.8/54.3 | + | 7 | 100.5 | 0/0/0 | 105.1 | 0/0/0 | 2 | 51.2/52.5/53.8 | + | 8 | 105.7 | 0/0/0 | 94.4 | 0/0/0 | 2 | 43.3/47.1/50.9 | + | 9 | 99.8 | 0/0/0 | 99.1 | 0/0/0 | 2 | 47.0/49.5/51.9 | + | 10 | 102.8 | 0/0/0 | 98.1 | 0/0/0 | 2 | 48.4/49.0/49.5 | + | 11 | 54.6 | 0/0/0 | 98.7 | 0/0/0 | 2 | 44.0/49.3/54.5 | + | 12 | 99.8 | 0/0/0 | 105.2 | 0/0/0 | 2 | 44.6/52.5/60.5 | + | 13 | 101.5 | 0/0/0 | 94.9 | 0/0/0 | 2 | 43.7/47.4/51.0 | + | 14 | 109.8 | 0/0/0 | 98.9 | 0/0/0 | 2 | 46.9/49.4/51.8 | + | 15 | 106.7 | 0/0/0 | 96.3 | 0/0/0 | 2 | 43.2/48.0/52.8 | + | 16 | 165.0 | 0/0/0 | 99.4 | 0/0/0 | 2 | 46.6/49.6/52.5 | + | 17 | 197.3 | 0/0/0 | 101.3 | 0/0/0 | 2 | 45.7/50.6/55.4 | + | 18 | 71.0 | 0/0/0 | 98.8 | 0/0/0 | 2 | 45.3/49.3/53.4 | + | 19 | 219.2 | 0/0/0 | 101.0 | 0/0/0 | 2 | 48.0/50.4/52.8 | + | 20 | 168.8 | 0/0/0 | 100.5 | 0/0/0 | 2 | 46.2/50.1/54.1 | + | 21 | 95.3 | 0/0/0 | 98.3 | 0/0/0 | 2 | 45.7/49.0/52.4 | + | 22 | 133.9 | 0/0/0 | 98.9 | 0/0/0 | 2 | 46.4/49.4/52.3 | + | 23 | 163.0 | 0/0/0 | 97.2 | 0/0/0 | 2 | 44.9/48.5/52.1 | + | 24 | 184.5 | 0/0/0 | 101.4 | 0/0/0 | 2 | 49.1/50.6/52.2 | + | 25 | 130.9 | 0/0/0 | 97.2 | 0/0/0 | 2 | 43.7/48.5/53.3 | + | 26 | 76.8 | 0/0/0 | 103.2 | 0/0/0 | 2 | 47.3/51.5/55.8 | + | 27 | 99.6 | 0/0/0 | 76.0 | 0/0/0 | 1 | 75.8/75.8/75.8 | + | 28 | 113.8 | 0/0/0 | 100.3 | 0/0/0 | 2 | 46.4/50.1/53.7 | + | 29 | 100.9 | 0/0/0 | 96.0 | 0/0/0 | 2 | 44.2/47.9/51.6 | + | 30 | 106.0 | 0/0/0 | 103.0 | 0/0/0 | 2 | 49.9/51.4/53.0 | + | 31 | 107.3 | 0/0/0 | 103.7 | 0/0/0 | 2 | 47.4/51.8/56.1 | + | 32 | 100.9 | 0/0/0 | 102.4 | 0/0/0 | 2 | 47.4/51.1/54.8 | + | 33 | 99.9 | 0/0/0 | 98.6 | 0/0/0 | 2 | 46.0/49.2/52.4 | + | 34 | 101.4 | 0/0/0 | 98.7 | 0/0/0 | 2 | 46.7/49.3/51.8 | + | 35 | 97.8 | 0/0/0 | 98.9 | 0/0/0 | 2 | 46.3/49.4/52.5 | + | 36 | 98.7 | 0/0/0 | 98.5 | 0/0/0 | 2 | 45.2/49.2/53.2 | + | 37 | 101.2 | 0/0/0 | 100.1 | 0/0/0 | 2 | 45.2/49.9/54.7 | + | 38 | 102.6 | 0/0/0 | 100.0 | 0/0/0 | 2 | 44.0/49.9/55.8 | + | 39 | 103.5 | 0/0/0 | 97.7 | 0/0/0 | 2 | 45.0/48.8/52.5 | + | 40 | 104.5 | 0/0/0 | 99.6 | 0/0/0 | 2 | 46.0/49.7/53.5 | + | 41 | 103.0 | 0/0/0 | 99.4 | 0/0/0 | 2 | 45.4/49.6/53.9 | + | 42 | 101.8 | 0/0/0 | 98.7 | 0/0/0 | 2 | 46.0/49.2/52.4 | + | 43 | 101.8 | 0/0/0 | 139.3 | 0/0/0 | 2 | 45.6/69.6/93.6 | + | 44 | 109.4 | 0/0/0 | 96.6 | 0/0/0 | 2 | 43.2/48.2/53.3 | + | 45 | 101.6 | 0/0/0 | 96.6 | 0/0/0 | 2 | 43.2/48.2/53.2 | + | 46 | 101.6 | 0/0/0 | 102.8 | 0/0/0 | 2 | 47.9/51.3/54.8 | + | 47 | 204.5 | 0/0/0 | 101.0 | 0/0/0 | 2 | 47.3/50.4/53.5 | + | 48 | 108.0 | 0/0/0 | 100.0 | 0/0/0 | 2 | 47.4/49.9/52.4 | + | 49 | 99.7 | 0/0/0 | 101.3 | 0/0/0 | 2 | 48.3/50.6/52.8 | + | 50 | 99.7 | 0/0/0 | 99.4 | 1/1/1 | 2 | 46.0/49.6/53.2 | + + + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.The_native_side_closes_its_one_connection_with_exactly_one_forward_close [< 1 ms] + Standard Output Messages: + Native Forward Closes sent/acked: 1/1; connections after the native phase: 0. + + + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.No_failed_libplctag_tag_is_left_with_a_live_native_callback [< 1 ms] + Standard Output Messages: + libplctag orphans destroyed so far: 15; rooted (unreleasable): 0. + + + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.A_live_value_is_compared_structurally_and_a_stable_one_by_value [3 ms] + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.The_harness_is_read_only_by_construction [36 ms] + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.Browse_listings_decode_to_identical_tag_sets_through_both_enumerators [6 ms] + Standard Output Messages: + ## Browse — 10.209.70.160:44818 path '1,0' family CompactLogix (compactlogix, connection size 4002), max tags 200, max templates 20, pace 50 ms + libplctag: 3162 tag(s); native: 3162 tag(s) + + + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.The_comparison_flags_every_divergence_and_excuses_only_a_native_type_mismatch [< 1 ms] + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.Every_template_decodes_to_an_identical_shape_through_both_readers [< 1 ms] + Standard Output Messages: + ## Templates — 20 id(s); truncated by AB_DIFF_MAX_TEMPLATES: libplctag 74, native 74 + | Template | libplctag | native | Equal? | + |---|---|---|---| + | 283 | Recipe (5 members, 1680 B) | Recipe (5 members, 1680 B) | yes | + | 295 | UDT_PartStatus (5 members, 4 B) | UDT_PartStatus (5 members, 4 B) | yes | + | 344 | Recipe_Clamp (7 members, 420 B) | Recipe_Clamp (7 members, 420 B) | yes | + | 491 | ForceSegmentEnableCheck (3 members, 4 B) | ForceSegmentEnableCheck (3 members, 4 B) | yes | + | 527 | Recipe_PowerUnit (6 members, 24 B) | Recipe_PowerUnit (6 members, 24 B) | yes | + | 622 | UDT_TemperatureProfile_Segment (11 members, 40 B) | UDT_TemperatureProfile_Segment (11 members, 40 B) | yes | + | 676 | AB:5000_DO8_Diag:I:0 (14 members, 36 B) | AB:5000_DO8_Diag:I:0 (14 members, 36 B) | yes | + | 700 | AB:5000_AI4CJ:I:0 (12 members, 68 B) | AB:5000_AI4CJ:I:0 (12 members, 68 B) | yes | + | 706 | raM_UDT_ItfAD_5000Digital_Sts (11 members, 320 B) | raM_UDT_ItfAD_5000Digital_Sts (11 members, 320 B) | yes | + | 715 | TwoHand_Control (8 members, 16 B) | TwoHand_Control (8 members, 16 B) | yes | + | 752 | STR0016 (2 members, 20 B) | STR0016 (2 members, 20 B) | yes | + | 842 | STR0032 (2 members, 36 B) | STR0032 (2 members, 36 B) | yes | + | 862 | raM_UDT_ItfAD_5000Analog_Set (3 members, 4 B) | raM_UDT_ItfAD_5000Analog_Set (3 members, 4 B) | yes | + | 1129 | raM_Tec_LimitWithModulo (38 members, 120 B) | raM_Tec_LimitWithModulo (38 members, 120 B) | yes | + | 1144 | PartStatus (8 members, 12 B) | PartStatus (8 members, 12 B) | yes | + | 1166 | AB:5000_DI16:C:0 (18 members, 72 B) | AB:5000_DI16:C:0 (18 members, 72 B) | yes | + | 1192 | raM_UDT_ItfAD_5000Digital_Cmd (5 members, 4 B) | raM_UDT_ItfAD_5000Digital_Cmd (5 members, 4 B) | yes | + | 1206 | raM_Dvc_5000AI4_VCRT (77 members, 180 B) | raM_Dvc_5000AI4_VCRT (77 members, 180 B) | yes | + | 1289 | TimeString (12 members, 376 B) | TimeString (12 members, 376 B) | yes | + | 1313 | raM_Dvc_5000AO4 (73 members, 164 B) | raM_Dvc_5000AO4 (73 members, 164 B) | yes | + + + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.The_native_side_makes_exactly_one_forward_open_over_the_whole_run [< 1 ms] + Standard Output Messages: + Native Forward Opens over the run: 1. + + + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.Every_selected_tag_reads_identically_through_both_transports [3 ms] + Standard Output Messages: + ## Reads — 200 tag(s), 10.209.70.160:44818 path '1,0' family CompactLogix (compactlogix, connection size 4002), max tags 200, max templates 20, pace 50 ms + Selection by origin: array 20, udt member 20, scalar 160 + | Tag | Type | libplctag status | native status | libplctag probe | Equal? | + |---|---|---|---|---|---| + | `Program:Recipes._monitorID` | DInt[255] | Ok | Ok | stable | yes | + | `Local:1:I.InfoBits` | SInt | Ok | Ok | stable | yes | + | `__CONTAINER` | DInt | Ok | Ok | stable | yes | + | `Program:EM01_PowerUnit._VacuumCalibration_mA` | Real[10] | Ok | Ok | stable | yes | + | `Local:1:I.RunMode` | Bool | Ok | Ok | stable | yes | + | `WW_M4ActualTemp` | Real | Ok | Ok | **live** | live | + | `Program:EM01_PowerUnit._VacuumCalibration_PSIA` | Real[10] | Ok | Ok | stable | yes | + | `Local:1:I.ConnectionFaulted` | Bool | Ok | Ok | stable | yes | + | `WW_P1_Status_Msg` | DInt | Ok | Ok | stable | yes | + | `Program:EM01_PowerUnit.__fout9FB1561FA00D73F5` | Real[5] | Ok | Ok | **live** | live | + | `Local:1:I.DiagnosticActive` | Bool | Ok | Ok | stable | yes | + | `DI_CycleStart_PB` | Bool | Ok | Ok | stable | yes | + | `Program:EM01_PowerUnit.__foutA0A97D0B7D734500` | Real[2] | Ok | Ok | stable | yes | + | `Local:1:I.DiagnosticSequenceCount` | SInt | Ok | Ok | stable | yes | + | `test` | DInt | Ok | Ok | stable | yes | + | `Program:EM01_PowerUnit.__fout2A759FA1596561EC` | Real[2] | Ok | Ok | stable | yes | + | `Local:1:I.Pad1` | Int | NotFound | NotFound | NotFound | yes | + | `UN01_EventsPTR` | DInt | Ok | Ok | stable | yes | + | `Program:EM01_PowerUnit._SEQ_EP` | DInt[32] | Ok | Ok | stable | yes | + | `Local:2:I.InfoBits` | SInt | Ok | Ok | stable | yes | + | `Sts_Vacuum_Rerun` | Bool | Ok | Ok | stable | yes | + | `Program:EM01_PowerUnit.__fout02198332D12EF5E3` | Real[3] | Ok | Ok | stable | yes | + | `Local:2:I.RunMode` | Bool | Ok | Ok | stable | yes | + | `Ons_VacuumRerun` | Bool | Ok | Ok | stable | yes | + | `Program:EM02_Clamp._SEQ_EP` | DInt[32] | Ok | Ok | stable | yes | + | `Local:2:I.ConnectionFaulted` | Bool | Ok | Ok | stable | yes | + | `test2` | DInt | Ok | Ok | stable | yes | + | `Program:EM02_Clamp.__fout79B2713C88B35A28` | Real[3] | Ok | Ok | stable | yes | + | `Local:2:I.DiagnosticActive` | Bool | Ok | Ok | stable | yes | + | `_Val_PressurePVx` | Real | Ok | Ok | stable | yes | + | `Program:EM02_Clamp.__fout2F67CD35C2302EE0` | Real[4] | Ok | Ok | **live** | live | + | `Local:2:I.DiagnosticSequenceCount` | SInt | Ok | Ok | stable | yes | + | `C_LimitType_Outside` | DInt | Ok | Ok | stable | yes | + | `Program:ES03_EM01_Zone1.__fout25DE96F3D0E2B7BB` | Real[4] | Ok | Ok | **live** | live | + | `Local:2:I.Pad1` | Int | NotFound | NotFound | NotFound | yes | + | `Par_TargetTemperature_Tolerance` | Real | Ok | Ok | stable | yes | + | `Program:ES03_EM01_Zone1.__fout92848E133B44AF24` | Real[8] | Ok | Ok | **live** | live | + | `Local:3:I.InfoBits` | SInt | Ok | Ok | stable | yes | + | `Cfg_RapidHeatup_Tolerancex` | DInt | Ok | Ok | stable | yes | + | `Program:ES03_EM01_Zone1.__fout6DC7745628658A9D` | Real[2] | Ok | Ok | **live** | live | + | `Local:3:I.RunMode` | Bool | Ok | Ok | stable | yes | + | `Cfg_RapidHeatup_Tolerance` | Real | Ok | Ok | stable | yes | + | `Program:ES03_EM01_Zone1.__fout7C6F52924950A71D` | Real[2] | Ok | Ok | stable | yes | + | `Local:3:I.ConnectionFaulted` | Bool | Ok | Ok | stable | yes | + | `test_stop` | Bool | Ok | Ok | stable | yes | + | `Program:ES03_EM01_Zone1.__foutCBB7A04F2668DCD0` | Real[2] | Ok | Ok | stable | yes | + | `Local:3:I.DiagnosticActive` | Bool | Ok | Ok | stable | yes | + | `Sts_ScreenLock` | Bool | Ok | Ok | stable | yes | + | `Program:ES03_TemperatureControl._DisableStates` | DInt[32] | Ok | Ok | stable | yes | + | `Local:3:I.DiagnosticSequenceCount` | SInt | Ok | Ok | stable | yes | + | `xSts_ClearResult` | Bool | Ok | Ok | stable | yes | + | `Program:ES03_TemperatureControl._ModeNames` | String[32] | Ok | Ok | stable | yes | + | `Local:3:I.Pad1` | Int | NotFound | NotFound | NotFound | yes | + | `WS2_CLOSE_Delay_Setpoint` | Int | Ok | Ok | stable | yes | + | `Program:ES03_TemperatureControl._ModeTransitions` | DInt[32] | Ok | Ok | stable | yes | + | `Local:5:C.CfgSize` | DInt | NotFound | NotFound | NotFound | yes | + | `WS2_Force_AlarmDelay_Setpoint` | Int | Ok | Ok | stable | yes | + | `Program:ES03_TemperatureControl._SEQ_UP` | DInt[32] | Ok | Ok | stable | yes | + | `Local:5:C.CfgIDNum` | DInt | NotFound | NotFound | NotFound | yes | + | `WS2_Force_Red_Setpoint` | Real | Ok | Ok | stable | yes | + | `C_LimitType_Inside` | DInt | Ok | Ok | stable | yes | + | `xxCfg_WaterValve_MinTime` | Real | Ok | Ok | stable | yes | + | `WS2_Force_StartDelay_Setpoint` | Int | Ok | Ok | stable | yes | + | `WS2_Force_Yellow` | Real | Ok | Ok | stable | yes | + | `WS2_F_E10_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WW_Green` | Bool | Ok | Ok | stable | yes | + | `WW_Down` | Bool | Ok | Ok | stable | yes | + | `WS2_F_E1_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_F_E2_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_F_E3_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_F_E4_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_F_E5_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_F_E6_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_F_E7_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_F_E8_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_F_E9_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_HighMold_Red_Setpoint` | Int | Ok | Ok | stable | yes | + | `WS2_LowMold_Red_Setpoint` | Int | Ok | Ok | stable | yes | + | `WS2_Mold_AlarmDelay_Setpoint` | Int | Ok | Ok | stable | yes | + | `WS2_Mold_StartDelay_Setpoint` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E10_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E1_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E2_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E3_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E4_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E5_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E6_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E7_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E8_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_PH_E9_Mold3TempTermSetpt` | Int | Ok | Ok | stable | yes | + | `WS2_POSITION_SP` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z1Z3_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLDPLATEN_Z2Z4_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_MOLD_TEMP_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_HOLD_Time_Setpoint_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_RAMP_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG1` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG10` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG2` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG3` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG4` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG5` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG6` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG7` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG8` | Real | Ok | Ok | stable | yes | + | `WS2_PSI_SP_SEG9` | Real | Ok | Ok | stable | yes | + | `WS2_SPEED_SP` | Real | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z1Z3_HOLD_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_TEMPPLTEN_Z2Z4_HOLD_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_HOLD_Time_Setpoint_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG7` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG8` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_MOLD_HOLD_TEMP_SEG9` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_RAMP_SEG1` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_RAMP_SEG10` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_RAMP_SEG2` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_RAMP_SEG3` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_RAMP_SEG4` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_RAMP_SEG5` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_RAMP_SEG6` | Int | Ok | Ok | stable | yes | + | `WS2_TEMP_RAMP_SEG7` | Int | Ok | Ok | stable | yes | + + Unexpected divergences: 0; expected divergences: 0; live tags (value moved between the two libplctag reads; compared by status, length, type code, shape and every element that held still): 6 of 200. + - live: WW_M4ActualTemp (lib 4 byte(s) 20526943 = 233.3208; lib probe 4 byte(s) 908D6843 = 232.55298; native 4 byte(s) 501F6743 = 231.12231) + - live: Program:EM01_PowerUnit.__fout9FB1561FA00D73F5 (lib 20 byte(s) 0050C3487C144C403E0A8640C2F5F9C07C144C40 = [400000,3.1887503,4.1887503,-7.8112497,3.1887503]; lib probe 20 byte(s) 0050C3481C244A400E128540F2EDFAC01C244A40 = [400000,3.158454,4.158454,-7.841546,3.158454]; native 20 byte(s) 0050C34831AA454018D58240E82AFDC031AA4540 = [400000,3.0885127,4.0885124,-7.9114876,3.0885127]) + - live: Program:EM02_Clamp.__fout2F67CD35C2302EE0 (lib 16 byte(s) 96D41EB99A9919BF00D68349CDCCCCBE = [-0.00015147249,-0.6,1080000,-0.4]; lib probe 16 byte(s) A830FE389A9919BF00D68349CDCCCCBE = [0.00012120727,-0.6,1080000,-0.4]; native 16 byte(s) D34D8FB99A9919BF00D68349CDCCCCBE = [-0.0002733307,-0.6,1080000,-0.4]) + - live: Program:ES03_EM01_Zone1.__fout25DE96F3D0E2B7BB (lib 16 byte(s) 11E416C300000000000000C000000000 = [-150.89088,0,-2,0]; lib probe 16 byte(s) F1E910C300000000000000C000000000 = [-144.91383,0,-2,0]; native 16 byte(s) 194008C300000000000000C000000000 = [-136.25038,0,-2,0]) + - live: Program:ES03_EM01_Zone1.__fout92848E133B44AF24 (lib 32 byte(s) 91D52843C4085243000090C10022A14991D504C391D5524391D516430000A8C1 = [168.83424,210.03424,-18,1320000,-132.83424,210.83424,150.83424,-21]; lib probe 32 byte(s) CDD7224398074C43000090C10022A1499AAFFDC265D44C43CDD710430000A8C1 = [162.84297,204.02966,-18,1320000,-126.84297,204.82967,144.84297,-21]; native 32 byte(s) 2D311A4388634343000090C10022A1495A62ECC2553044432D3108430000A8C1 = [154.1921,195.3888,-18,1320000,-118.19209,196.1888,136.1921,-21]) + - live: Program:ES03_EM01_Zone1.__fout6DC7745628658A9D (lib 8 byte(s) 4DC71643E23E7142 = [150.77852,60.31141]; lib probe 8 byte(s) F5BA104388916742 = [144.7303,57.89212]; native 8 byte(s) 650B0843D5AB5942 = [136.04451,54.417805]) + + +[xUnit.net 00:03:06.03] Finished: ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests + Passed ZB.MOM.WW.OtOpcUa.Driver.AbCip.IntegrationTests.Differential.TransportDifferentialTests.Libplctag_and_native_are_never_connected_at_the_same_time [< 1 ms] + Standard Output Messages: + TCP connections to the target: baseline 0, before native 0, libplctag drain wait 1 ms. + + + +Test Run Successful. +Total tests: 17 + Passed: 17 + Total time: 3.1046 Minutes