8.6.5.4 Test Procedure, Confirmed Response Options (revision 2.7, subset level 2)

Device under test: Step Function I/O dnp3 outstation

10:57:26.620 Running procedure: 8.6.5.4
10:57:26.621 step: 1
10:57:26.621 - Cycle power to the DUT
10:57:26.621 [PLG] Cycling power
10:57:26.622 step: 2
10:57:26.622 - Issue a RESET_LINK_STATES (0xC0) using link control block 0xC0
10:57:26.622 - Verify that the DUT answers with a well-formed link frame
10:57:26.622 - Verify that the frame uses link control block 0x00
10:57:26.622 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: RESET_LINK_STATES(0x00) 0xC0 length: 5 dest: 1024 src: 1
10:57:26.622 --P-> 05 64 05 C0 00 04 01 00 D7 F7
10:57:26.623 <-P-- 05 64 05 00 01 00 00 04 27 70
10:57:26.623 <-L-- master: 0 pri: 0 fcb: 0 fcv: 0 func: ACK(0x00) 0x00 length: 5 dest: 1 src: 1024
10:57:26.623 step: 3
10:57:26.623 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:57:26.623 - g60v2, All Objects
10:57:26.623 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:57:26.623 g60v2, All Objects
10:57:26.623 --T-> fir: 1 fin: 1 seq: 0
10:57:26.623 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:26.623 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:26.623 C0 C1 01 3C 02 06 52 C3
10:57:26.623 step: 4
10:57:26.623 - Read any number of valid responses beginning w/ sequence(0x01) and incrementing by 1 modulo 16
10:57:26.623 - Verify that the IIN field contains IIN(DeviceRestart)
10:57:26.623 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
10:57:26.623 - Confirm each response that asks for a confirmation
10:57:26.623 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:57:26.623 C0 C1 81 90 00 73 EE
10:57:26.623 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:57:26.623 <-T-- fir: 1 fin: 1 seq: 0
10:57:26.623 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01 IIN(DeviceRestart, NeedTime)
10:57:26.624 step: 5
10:57:26.624 - Write(0x02) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02 using link options: { control == 0xF3, destination == 0xFFFE }
10:57:26.624 - g80v1, 1-Byte Start/Stop, start: 7 stop: 7
10:57:26.624 - [7] - BooleanValue(false)
10:57:26.624 --A-> Write(0x02) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
10:57:26.624 g80v1, 1-Byte Start/Stop, start: 7 stop: 7
10:57:26.624 [7] - BooleanValue(false)
10:57:26.624 --T-> fir: 1 fin: 1 seq: 0
10:57:26.624 --L-> master: 1 pri: 1 fcb: 1 fcv: 1 func: CONFIRMED_USER_DATA(0x03) 0xF3 length: 14 dest: 65534 src: 1
10:57:26.624 --P-> 05 64 0E F3 FE FF 01 00 23 6E
10:57:26.624 C0 C2 02 50 01 00 07 07 00 08 65
10:57:26.624 steps: 6 to 7
10:57:26.624 - Verify that no link layer frames are received within 2000 ms
10:57:28.626 frame receive timeout
10:57:28.626 step: 8
10:57:28.626 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
10:57:28.626 - g60v2, All Objects
10:57:28.626 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
10:57:28.626 g60v2, All Objects
10:57:28.626 --T-> fir: 1 fin: 1 seq: 0
10:57:28.626 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:28.626 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:28.626 C0 C3 01 3C 02 06 5E 85
10:57:28.627 step: 9
10:57:28.627 - Read a single fragment response w/ sequence(0x03)
10:57:28.627 - Verify that the response is empty
10:57:28.627 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:28.627 - Verify that the IIN field does not contain bits IIN(DeviceRestart)
10:57:28.627 - Verify that the IIN field contains IIN(Broadcast)
10:57:28.627 - Verify that an application layer confirmation is requested.
10:57:28.627 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:57:28.627 C1 E3 81 11 00 8A B6
10:57:28.627 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:57:28.627 <-T-- fir: 1 fin: 1 seq: 1
10:57:28.627 <-A-- Response(0x81) fir: 1 fin: 1 con: 1 uns: 0 seq: 0x03 IIN(NeedTime, Broadcast)
10:57:28.628 step: 10
10:57:28.628 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:28.628 - g60v2, All Objects
10:57:28.628 - Read a single fragment response w/ sequence(0x04)
10:57:28.628 - Verify that the IIN field does not contain bits IIN(DeviceRestart)
10:57:28.628 - Verify that the IIN field contains IIN(Broadcast)
10:57:28.628 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:28.628 g60v2, All Objects
10:57:28.628 --T-> fir: 1 fin: 1 seq: 0
10:57:28.628 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:28.628 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:28.628 C0 C4 01 3C 02 06 4C 6C
10:57:28.628 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:57:28.628 C2 E4 81 11 00 EA 05
10:57:28.628 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:57:28.628 <-T-- fir: 1 fin: 1 seq: 2
10:57:28.628 <-A-- Response(0x81) fir: 1 fin: 1 con: 1 uns: 0 seq: 0x04 IIN(NeedTime, Broadcast)
10:57:28.628 step: 11
10:57:28.628 - Confirm(0x00) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:28.628 --A-> Confirm(0x00) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:28.628 --T-> fir: 1 fin: 1 seq: 0
10:57:28.628 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 8 dest: 1024 src: 1
10:57:28.628 --P-> 05 64 08 C4 00 04 01 00 9A 19
10:57:28.628 C0 C4 00 F9 A1
10:57:28.628 step: 12
10:57:28.628 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
10:57:28.628 - g60v2, All Objects
10:57:28.628 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
10:57:28.628 g60v2, All Objects
10:57:28.628 --T-> fir: 1 fin: 1 seq: 0
10:57:28.628 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:28.628 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:28.628 C0 C5 01 3C 02 06 4A 4F
10:57:28.628 step: 13
10:57:28.628 - Read a single fragment response w/ sequence(0x05)
10:57:28.628 - Verify that the response is empty
10:57:28.628 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:28.628 - Verify that the IIN field does not contain bits IIN(DeviceRestart, Broadcast)
10:57:28.628 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:57:28.628 C3 C5 81 10 00 7D 4C
10:57:28.628 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:57:28.628 <-T-- fir: 1 fin: 1 seq: 3
10:57:28.629 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05 IIN(NeedTime)
10:57:28.629 step: 14
10:57:28.629 - Repeat the sequence with step 5's WRITE addressed to 0xFFFD. Verify that step 9 has CON=0 and step 10 has IIN1.0=0; the application confirmation in step 11 is left out.
10:57:28.629 step: 1
10:57:28.629 - Cycle power to the DUT
10:57:28.629 [PLG] Cycling power
10:57:28.630 step: 2
10:57:28.630 - Issue a RESET_LINK_STATES (0xC0) using link control block 0xC0
10:57:28.630 - Verify that the DUT answers with a well-formed link frame
10:57:28.630 - Verify that the frame uses link control block 0x00
10:57:28.630 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: RESET_LINK_STATES(0x00) 0xC0 length: 5 dest: 1024 src: 1
10:57:28.630 --P-> 05 64 05 C0 00 04 01 00 D7 F7
10:57:28.630 <-P-- 05 64 05 00 01 00 00 04 27 70
10:57:28.630 <-L-- master: 0 pri: 0 fcb: 0 fcv: 0 func: ACK(0x00) 0x00 length: 5 dest: 1 src: 1024
10:57:28.630 step: 3
10:57:28.630 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:57:28.630 - g60v2, All Objects
10:57:28.630 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:57:28.630 g60v2, All Objects
10:57:28.630 --T-> fir: 1 fin: 1 seq: 0
10:57:28.630 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:28.630 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:28.630 C0 C1 01 3C 02 06 52 C3
10:57:28.631 step: 4
10:57:28.631 - Read any number of valid responses beginning w/ sequence(0x01) and incrementing by 1 modulo 16
10:57:28.631 - Verify that the IIN field contains IIN(DeviceRestart)
10:57:28.631 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
10:57:28.631 - Confirm each response that asks for a confirmation
10:57:28.631 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:57:28.631 C0 C1 81 90 00 73 EE
10:57:28.631 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:57:28.631 <-T-- fir: 1 fin: 1 seq: 0
10:57:28.631 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01 IIN(DeviceRestart, NeedTime)
10:57:28.631 step: 5
10:57:28.631 - Write(0x02) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02 using link options: { control == 0xF3, destination == 0xFFFD }
10:57:28.631 - g80v1, 1-Byte Start/Stop, start: 7 stop: 7
10:57:28.631 - [7] - BooleanValue(false)
10:57:28.631 --A-> Write(0x02) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
10:57:28.631 g80v1, 1-Byte Start/Stop, start: 7 stop: 7
10:57:28.631 [7] - BooleanValue(false)
10:57:28.631 --T-> fir: 1 fin: 1 seq: 0
10:57:28.631 --L-> master: 1 pri: 1 fcb: 1 fcv: 1 func: CONFIRMED_USER_DATA(0x03) 0xF3 length: 14 dest: 65533 src: 1
10:57:28.631 --P-> 05 64 0E F3 FD FF 01 00 62 64
10:57:28.631 C0 C2 02 50 01 00 07 07 00 08 65
10:57:28.631 steps: 6 to 7
10:57:28.631 - Verify that no link layer frames are received within 2000 ms
10:57:30.633 frame receive timeout
10:57:30.633 step: 8
10:57:30.633 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
10:57:30.633 - g60v2, All Objects
10:57:30.633 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
10:57:30.633 g60v2, All Objects
10:57:30.634 --T-> fir: 1 fin: 1 seq: 0
10:57:30.634 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:30.634 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:30.634 C0 C3 01 3C 02 06 5E 85
10:57:30.634 step: 9
10:57:30.634 - Read a single fragment response w/ sequence(0x03)
10:57:30.634 - Verify that the response is empty
10:57:30.634 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:30.634 - Verify that the IIN field does not contain bits IIN(DeviceRestart)
10:57:30.634 - Verify that the IIN field contains IIN(Broadcast)
10:57:30.634 - Verify that the response doesn't ask for an application layer confirmation.
10:57:30.634 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:57:30.634 C1 C3 81 11 00 BD B5
10:57:30.634 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:57:30.634 <-T-- fir: 1 fin: 1 seq: 1
10:57:30.634 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03 IIN(NeedTime, Broadcast)
10:57:30.634 step: 10
10:57:30.634 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:30.634 - g60v2, All Objects
10:57:30.634 - Read a single fragment response w/ sequence(0x04)
10:57:30.634 - Verify that the IIN field does not contain bits IIN(DeviceRestart)
10:57:30.634 - Verify that the IIN field does not contain bits IIN(Broadcast)
10:57:30.635 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:30.635 g60v2, All Objects
10:57:30.635 --T-> fir: 1 fin: 1 seq: 0
10:57:30.635 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:30.635 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:30.635 C0 C4 01 3C 02 06 4C 6C
10:57:30.635 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:57:30.635 C2 C4 81 10 00 93 AD
10:57:30.635 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:57:30.635 <-T-- fir: 1 fin: 1 seq: 2
10:57:30.635 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04 IIN(NeedTime)
10:57:30.635 step: 12
10:57:30.635 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
10:57:30.635 - g60v2, All Objects
10:57:30.635 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
10:57:30.635 g60v2, All Objects
10:57:30.635 --T-> fir: 1 fin: 1 seq: 0
10:57:30.635 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:30.635 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:30.635 C0 C5 01 3C 02 06 4A 4F
10:57:30.635 step: 13
10:57:30.635 - Read a single fragment response w/ sequence(0x05)
10:57:30.635 - Verify that the response is empty
10:57:30.635 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:30.635 - Verify that the IIN field does not contain bits IIN(DeviceRestart, Broadcast)
10:57:30.635 <-P-- 05 64 0A 44 01 00 00 04 67 88
10:57:30.635 C3 C5 81 10 00 7D 4C
10:57:30.635 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 10 dest: 1 src: 1024
10:57:30.635 <-T-- fir: 1 fin: 1 seq: 3
10:57:30.635 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05 IIN(NeedTime)
10:57:30.635 Passed procedure: 8.6.5.4