8.16.2.2.5 Binary Counter, Freeze, No Acknowledge (revision 3.1r1, subset level 3)

Device under test: Step Function I/O dnp3 outstation

05:29:52.053 Running procedure: 8.16.2.2.5
05:29:52.054 This procedure is enabled because the following options:
05:29:52.054 - supports.frozenCounter == true
05:29:52.054 - supports.frozenCounterReads == true
05:29:52.055 step: 1
05:29:52.055 - Freeze No Ack(0x08) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
05:29:52.055 - g20v0, All Objects
05:29:52.055 --A-> Freeze No Ack(0x08) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
05:29:52.055 g20v0, All Objects
05:29:52.055 --T-> fir: 1 fin: 1 seq: 0
05:29:52.055 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
05:29:52.055 --P-> 05 64 0B C4 00 04 01 00 CA 8A
05:29:52.055 C0 C1 08 14 00 06 3B C2
05:29:52.055 step: 2
05:29:52.055 - Expect no response.
05:29:54.557 step: 3.1
05:29:54.557 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
05:29:54.557 - g23v0, All Objects
05:29:54.557 - g21v0, All Objects
05:29:54.557 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
05:29:54.557 g23v0, All Objects
05:29:54.557 g21v0, All Objects
05:29:54.557 --T-> fir: 1 fin: 1 seq: 0
05:29:54.557 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 14 dest: 1024 src: 1
05:29:54.557 --P-> 05 64 0E C4 00 04 01 00 43 72
05:29:54.557 C0 C2 01 17 00 06 15 00 06 45 14
05:29:54.557 steps: 3.2 to 3.5
05:29:54.557 - Read any number of valid responses beginning w/ sequence(0x02) and incrementing by 1 modulo 16
05:29:54.557 - Verify that the response holds frozen counter events (g23v1 or g23v2, qualifier 0x17 or 0x28), followed by frozen counters (g21v1, g21v2, g21v9 or g21v10, qualifier 0x00 or 0x01), and nothing else
05:29:54.557 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
05:29:54.557 - Verify that every point is reported in both objects, and that each point's latest event (g23) has the value of its frozen counter (g21)
05:29:54.557 - Verify that the response only contains objects, variations, and qualifiers specified in table 8-6
05:29:54.557 - Verify that the response contains objects
05:29:54.557 - Confirm each response that asks for a confirmation
05:29:54.558 <-P-- 05 64 7A 44 01 00 00 04 59 AF
05:29:54.558 C0 E2 81 90 00 17 01 28 0A 00 00 00 01 00 00 00 E3 25
05:29:54.558 00 01 00 01 00 00 00 00 02 00 01 00 00 00 00 03 FD 0D
05:29:54.558 00 01 00 00 00 00 04 00 01 00 00 00 00 05 00 01 F0 14
05:29:54.558 00 00 00 00 06 00 01 00 00 00 00 07 00 01 00 00 97 3C
05:29:54.558 00 00 08 00 01 00 00 00 00 09 00 01 00 00 00 00 67 B4
05:29:54.558 15 02 01 00 00 09 00 01 00 00 01 00 00 01 00 00 C7 5B
05:29:54.558 01 00 00 01 00 00 01 00 00 01 00 00 01 00 00 01 FE 85
05:29:54.558 00 00 01 00 00 47 E6
05:29:54.558 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 122 dest: 1 src: 1024
05:29:54.558 <-T-- fir: 1 fin: 1 seq: 0
05:29:54.558 <-A-- Response(0x81) fir: 1 fin: 1 con: 1 uns: 0 seq: 0x02 IIN(DeviceRestart, NeedTime)
05:29:54.558 g23v1, 2-Byte Count and Index, count: 10
05:29:54.558 [0] - flags: 0x01 count: 0
05:29:54.558 [1] - flags: 0x01 count: 0
05:29:54.558 [2] - flags: 0x01 count: 0
05:29:54.558 [3] - flags: 0x01 count: 0
05:29:54.558 [4] - flags: 0x01 count: 0
05:29:54.558 [5] - flags: 0x01 count: 0
05:29:54.558 [6] - flags: 0x01 count: 0
05:29:54.558 [7] - flags: 0x01 count: 0
05:29:54.558 [8] - flags: 0x01 count: 0
05:29:54.558 [9] - flags: 0x01 count: 0
05:29:54.558 g21v2, 2-Byte Start/Stop, start: 0 stop: 9
05:29:54.558 [0] - flags: 0x01 count: 0
05:29:54.558 [1] - flags: 0x01 count: 0
05:29:54.558 [2] - flags: 0x01 count: 0
05:29:54.558 [3] - flags: 0x01 count: 0
05:29:54.558 [4] - flags: 0x01 count: 0
05:29:54.558 [5] - flags: 0x01 count: 0
05:29:54.558 [6] - flags: 0x01 count: 0
05:29:54.558 [7] - flags: 0x01 count: 0
05:29:54.558 [8] - flags: 0x01 count: 0
05:29:54.558 [9] - flags: 0x01 count: 0
05:29:54.558 --A-> Confirm(0x00) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
05:29:54.558 --T-> fir: 1 fin: 1 seq: 0
05:29:54.558 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 8 dest: 1024 src: 1
05:29:54.559 --P-> 05 64 08 C4 00 04 01 00 9A 19
05:29:54.559 C0 C2 00 D6 8D
05:29:54.559 step: 5
05:29:54.559 - Note the counters' current values, for a later check
05:29:54.559 [PLG] Recorded values:
05:29:54.559 [PLG] Updated Counter 0: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 1: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 2: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 3: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 4: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 5: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 6: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 7: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 8: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 [PLG] Updated Counter 9: value=0, flags=1, timestamp=0 (INVALID_TIME)
05:29:54.559 step: 6
05:29:54.559 - Make every binary counter count up
05:29:54.559 [PLG] Updated Counter 0: value=1, flags=1, timestamp=1793251794559 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 1: value=1, flags=1, timestamp=1793251794559 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 2: value=1, flags=1, timestamp=1793251794560 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 3: value=1, flags=1, timestamp=1793251794560 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 4: value=1, flags=1, timestamp=1793251794560 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 5: value=1, flags=1, timestamp=1793251794560 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 6: value=1, flags=1, timestamp=1793251794560 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 7: value=1, flags=1, timestamp=1793251794560 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 8: value=1, flags=1, timestamp=1793251794560 (UNSYNCHRONIZED_TIME)
05:29:54.560 [PLG] Updated Counter 9: value=1, flags=1, timestamp=1793251794560 (UNSYNCHRONIZED_TIME)
05:29:54.560 step: 7
05:29:54.560 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
05:29:54.560 - g21v0, All Objects
05:29:54.560 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
05:29:54.560 g21v0, All Objects
05:29:54.560 --T-> fir: 1 fin: 1 seq: 0
05:29:54.560 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
05:29:54.560 --P-> 05 64 0B C4 00 04 01 00 CA 8A
05:29:54.560 C0 C3 01 15 00 06 48 AA
05:29:54.561 steps: 8 to 11
05:29:54.561 - Read any number of valid responses beginning w/ sequence(0x03) and incrementing by 1 modulo 16
05:29:54.561 - Verify that the response only contains objects, variations, and qualifiers specified in table 8-6
05:29:54.561 - Verify that the response contains objects
05:29:54.561 - Verify that the flags behave as the note on flags in Section 2 requires (Note 5 in 2.7, Note 6 in 3.1r1).
05:29:54.561 - Verify that each counter still equals its recorded value
05:29:54.561 - Confirm each response that asks for a confirmation
05:29:54.561 <-P-- 05 64 2F 44 01 00 00 04 6C 81
05:29:54.561 C1 C3 81 94 00 15 02 01 00 00 09 00 01 00 00 01 14 0B
05:29:54.561 00 00 01 00 00 01 00 00 01 00 00 01 00 00 01 00 DB 49
05:29:54.561 00 01 00 00 01 00 00 01 00 00 61 8D
05:29:54.561 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 47 dest: 1 src: 1024
05:29:54.561 <-T-- fir: 1 fin: 1 seq: 1
05:29:54.561 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03 IIN(DeviceRestart, NeedTime, Class2Events)
05:29:54.561 g21v2, 2-Byte Start/Stop, start: 0 stop: 9
05:29:54.561 [0] - flags: 0x01 count: 0
05:29:54.561 [1] - flags: 0x01 count: 0
05:29:54.561 [2] - flags: 0x01 count: 0
05:29:54.561 [3] - flags: 0x01 count: 0
05:29:54.561 [4] - flags: 0x01 count: 0
05:29:54.561 [5] - flags: 0x01 count: 0
05:29:54.561 [6] - flags: 0x01 count: 0
05:29:54.561 [7] - flags: 0x01 count: 0
05:29:54.561 [8] - flags: 0x01 count: 0
05:29:54.561 [9] - flags: 0x01 count: 0
05:29:54.562 [PLG] Verified 10 counter point(s)
05:29:54.562 step: 12
05:29:54.562 - Freeze No Ack(0x08) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
05:29:54.562 - g20v0, All Objects
05:29:54.562 --A-> Freeze No Ack(0x08) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
05:29:54.562 g20v0, All Objects
05:29:54.562 --T-> fir: 1 fin: 1 seq: 0
05:29:54.562 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
05:29:54.562 --P-> 05 64 0B C4 00 04 01 00 CA 8A
05:29:54.562 C0 C4 08 14 00 06 25 6D
05:29:54.562 step: 13
05:29:54.562 - Expect no response.
05:29:57.065 step: 14.1
05:29:57.065 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
05:29:57.065 - g23v0, All Objects
05:29:57.065 - g21v0, All Objects
05:29:57.065 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
05:29:57.065 g23v0, All Objects
05:29:57.065 g21v0, All Objects
05:29:57.065 --T-> fir: 1 fin: 1 seq: 0
05:29:57.065 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 14 dest: 1024 src: 1
05:29:57.065 --P-> 05 64 0E C4 00 04 01 00 43 72
05:29:57.065 C0 C5 01 17 00 06 15 00 06 3B 76
05:29:57.065 steps: 14.2 to 16
05:29:57.065 - Read any number of valid responses beginning w/ sequence(0x05) and incrementing by 1 modulo 16
05:29:57.065 - Verify that the response holds frozen counter events (g23v1 or g23v2, qualifier 0x17 or 0x28), followed by frozen counters (g21v1, g21v2, g21v9 or g21v10, qualifier 0x00 or 0x01), and nothing else
05:29:57.065 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
05:29:57.065 - Verify that every point is reported in both objects, and that each point's latest event (g23) has the value of its frozen counter (g21)
05:29:57.065 - Verify that the response only contains objects, variations, and qualifiers specified in table 8-6
05:29:57.065 - Verify that the response contains objects
05:29:57.065 - Verify that each counter equals its recorded value plus the counts generated since that value was recorded
05:29:57.065 - Confirm each response that asks for a confirmation
05:29:57.066 <-P-- 05 64 7A 44 01 00 00 04 59 AF
05:29:57.066 C2 E5 81 94 00 17 01 28 0A 00 00 00 01 01 00 00 E7 D1
05:29:57.066 00 01 00 01 01 00 00 00 02 00 01 01 00 00 00 03 1C C2
05:29:57.066 00 01 01 00 00 00 04 00 01 01 00 00 00 05 00 01 62 75
05:29:57.066 01 00 00 00 06 00 01 01 00 00 00 07 00 01 01 00 94 04
05:29:57.066 00 00 08 00 01 01 00 00 00 09 00 01 01 00 00 00 01 60
05:29:57.066 15 02 01 00 00 09 00 01 01 00 01 01 00 01 01 00 9D C5
05:29:57.066 01 01 00 01 01 00 01 01 00 01 01 00 01 01 00 01 9F 75
05:29:57.066 01 00 01 01 00 0F 6E
05:29:57.066 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 122 dest: 1 src: 1024
05:29:57.066 <-T-- fir: 1 fin: 1 seq: 2
05:29:57.066 <-A-- Response(0x81) fir: 1 fin: 1 con: 1 uns: 0 seq: 0x05 IIN(DeviceRestart, NeedTime, Class2Events)
05:29:57.066 g23v1, 2-Byte Count and Index, count: 10
05:29:57.066 [0] - flags: 0x01 count: 1
05:29:57.066 [1] - flags: 0x01 count: 1
05:29:57.066 [2] - flags: 0x01 count: 1
05:29:57.066 [3] - flags: 0x01 count: 1
05:29:57.066 [4] - flags: 0x01 count: 1
05:29:57.066 [5] - flags: 0x01 count: 1
05:29:57.066 [6] - flags: 0x01 count: 1
05:29:57.066 [7] - flags: 0x01 count: 1
05:29:57.066 [8] - flags: 0x01 count: 1
05:29:57.066 [9] - flags: 0x01 count: 1
05:29:57.066 g21v2, 2-Byte Start/Stop, start: 0 stop: 9
05:29:57.066 [0] - flags: 0x01 count: 1
05:29:57.066 [1] - flags: 0x01 count: 1
05:29:57.066 [2] - flags: 0x01 count: 1
05:29:57.066 [3] - flags: 0x01 count: 1
05:29:57.066 [4] - flags: 0x01 count: 1
05:29:57.066 [5] - flags: 0x01 count: 1
05:29:57.066 [6] - flags: 0x01 count: 1
05:29:57.066 [7] - flags: 0x01 count: 1
05:29:57.066 [8] - flags: 0x01 count: 1
05:29:57.066 [9] - flags: 0x01 count: 1
05:29:57.066 --A-> Confirm(0x00) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
05:29:57.066 --T-> fir: 1 fin: 1 seq: 0
05:29:57.066 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 8 dest: 1024 src: 1
05:29:57.066 --P-> 05 64 08 C4 00 04 01 00 9A 19
05:29:57.066 C0 C5 00 B7 0A
05:29:57.067 [PLG] Verified 10 counter point(s)
05:29:57.067 Passed procedure: 8.16.2.2.5