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

Device under test: Step Function I/O dnp3 outstation

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