8.6.4b Test Procedure for Devices with Individual Remote Supervisory Control (revision 3.1r1, subset level 3)

Device under test: Step Function I/O dnp3 outstation

10:57:23.041 Running procedure: 8.6.4b
10:57:23.044 This procedure is enabled because the following options:
10:57:23.044 - supports.individualRemoteSupervisoryControl == true
10:57:23.044 - supports.binaryOutput.status == true
10:57:23.044 - supports.binaryOutput.commands == true
10:57:23.044 step: 2
10:57:23.044 - Set the DUT's remote supervisory control to 'Enabled' or 'Remote', globally and for every point
10:57:23.044 [PLG] Every binary output is under remote control
10:57:23.044 step: 3
10:57:23.044 - Binary outputs 0 and 10 must be online, have no exception flags, and be able to go to local mode separately
10:57:23.044 step: 4
10:57:23.044 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00
10:57:23.044 - g10v0, All Objects
10:57:23.044 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00
10:57:23.044 g10v0, All Objects
10:57:23.044 --T-> fir: 1 fin: 1 seq: 0
10:57:23.044 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:23.044 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:23.044 C0 C0 01 0A 00 06 53 98
10:57:23.044 steps: 5 to 6
10:57:23.044 - Read any number of valid responses beginning w/ sequence(0x00) and incrementing by 1 modulo 16
10:57:23.044 - Verify that the response contains objects
10:57:23.044 - Verify that the device responds with only variations: Set(g10v1, g10v2)
10:57:23.044 - Verify that the objects are in start/stop ranges with 1-octet (qualifier 0x00) or 2-octet (qualifier 0x01) indexes
10:57:23.044 - Verify that the IIN field does not contain bits IIN(LocalControl)
10:57:23.044 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
10:57:23.044 - Note each binary output's flags, to compare the later reads with
10:57:23.044 - Verify that binary output(s) 0, 10 are online, with no exception flags
10:57:23.044 - Confirm each response that asks for a confirmation
10:57:23.045 <-P-- 05 64 25 44 01 00 00 04 07 3D
10:57:23.045 C0 C0 81 90 00 0A 02 01 00 00 13 00 01 01 01 01 3A 43
10:57:23.045 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 BB C3
10:57:23.045 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 37 dest: 1 src: 1024
10:57:23.045 <-T-- fir: 1 fin: 1 seq: 0
10:57:23.045 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00 IIN(DeviceRestart, NeedTime)
10:57:23.045 g10v2, 2-Byte Start/Stop, start: 0 stop: 19
10:57:23.045 [0] - flags: 0x01
10:57:23.045 [1] - flags: 0x01
10:57:23.045 [2] - flags: 0x01
10:57:23.045 [3] - flags: 0x01
10:57:23.045 [4] - flags: 0x01
10:57:23.045 [5] - flags: 0x01
10:57:23.045 [6] - flags: 0x01
10:57:23.045 [7] - flags: 0x01
10:57:23.045 [8] - flags: 0x01
10:57:23.045 [9] - flags: 0x01
10:57:23.045 [10] - flags: 0x01
10:57:23.045 [11] - flags: 0x01
10:57:23.045 [12] - flags: 0x01
10:57:23.045 [13] - flags: 0x01
10:57:23.045 [14] - flags: 0x01
10:57:23.045 [15] - flags: 0x01
10:57:23.045 [16] - flags: 0x01
10:57:23.045 [17] - flags: 0x01
10:57:23.045 [18] - flags: 0x01
10:57:23.045 [19] - flags: 0x01
10:57:23.046 step: 7
10:57:23.046 - Put the output at index 0 in local control (its remote control switch or setting to 'Disabled' or 'Local')
10:57:23.046 [PLG] Binary output 0 is under local control
10:57:23.046 step: 8
10:57:23.046 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:57:23.046 - g10v0, All Objects
10:57:23.046 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:57:23.046 g10v0, All Objects
10:57:23.046 --T-> fir: 1 fin: 1 seq: 0
10:57:23.046 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:23.046 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:23.046 C0 C1 01 0A 00 06 55 BB
10:57:23.046 steps: 9 to 10
10:57:23.046 - Read any number of valid responses beginning w/ sequence(0x01) and incrementing by 1 modulo 16
10:57:23.046 - Verify that the response contains objects
10:57:23.046 - Verify that the device responds with only variations: Set(g10v1, g10v2)
10:57:23.046 - Verify that the objects are in start/stop ranges with 1-octet (qualifier 0x00) or 2-octet (qualifier 0x01) indexes
10:57:23.046 - Verify that the IIN field contains IIN(LocalControl)
10:57:23.046 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
10:57:23.046 - Verify that binary output 0 cleared ONLINE, that every binary output kept the state and other flags it had in the first read, and that binary output 10 is still online
10:57:23.046 - Confirm each response that asks for a confirmation
10:57:23.046 <-P-- 05 64 25 44 01 00 00 04 07 3D
10:57:23.046 C1 C1 81 B0 00 0A 02 01 00 00 13 00 00 01 01 01 97 63
10:57:23.046 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 BB C3
10:57:23.046 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 37 dest: 1 src: 1024
10:57:23.046 <-T-- fir: 1 fin: 1 seq: 1
10:57:23.047 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01 IIN(DeviceRestart, LocalControl, NeedTime)
10:57:23.047 g10v2, 2-Byte Start/Stop, start: 0 stop: 19
10:57:23.047 [0] - flags: 0x00
10:57:23.047 [1] - flags: 0x01
10:57:23.047 [2] - flags: 0x01
10:57:23.047 [3] - flags: 0x01
10:57:23.047 [4] - flags: 0x01
10:57:23.047 [5] - flags: 0x01
10:57:23.047 [6] - flags: 0x01
10:57:23.047 [7] - flags: 0x01
10:57:23.047 [8] - flags: 0x01
10:57:23.047 [9] - flags: 0x01
10:57:23.047 [10] - flags: 0x01
10:57:23.047 [11] - flags: 0x01
10:57:23.047 [12] - flags: 0x01
10:57:23.047 [13] - flags: 0x01
10:57:23.047 [14] - flags: 0x01
10:57:23.047 [15] - flags: 0x01
10:57:23.047 [16] - flags: 0x01
10:57:23.047 [17] - flags: 0x01
10:57:23.047 [18] - flags: 0x01
10:57:23.047 [19] - flags: 0x01
10:57:23.047 step: 11
10:57:23.047 - Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
10:57:23.047 - g12v1, 1-Byte Count and Index, count: 1
10:57:23.047 - [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:23.047 --A-> Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
10:57:23.047 g12v1, 1-Byte Count and Index, count: 1
10:57:23.048 [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:23.048 --T-> fir: 1 fin: 1 seq: 0
10:57:23.049 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 24 dest: 1024 src: 1
10:57:23.049 --P-> 05 64 18 C4 00 04 01 00 5B 61
10:57:23.049 C0 C2 05 0C 01 17 01 00 03 01 64 00 00 00 C8 00 ED 4B
10:57:23.049 00 00 00 FF FF
10:57:23.049 step: 12
10:57:23.049 - Read a single fragment response w/ sequence(0x02)
10:57:23.049 - Verify the response contains the exact object header:
10:57:23.049 - g12v1, 1-Byte Count and Index, count: 1
10:57:23.049 - [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 7 (LOCAL)
10:57:23.049 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:23.049 - Verify that the IIN field contains IIN(LocalControl)
10:57:23.049 <-P-- 05 64 1A 44 01 00 00 04 A6 F0
10:57:23.049 C2 C2 81 B0 00 0C 01 17 01 00 03 01 64 00 00 00 65 1C
10:57:23.049 C8 00 00 00 07 E2 78
10:57:23.049 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 26 dest: 1 src: 1024
10:57:23.049 <-T-- fir: 1 fin: 1 seq: 2
10:57:23.049 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02 IIN(DeviceRestart, LocalControl, NeedTime)
10:57:23.049 g12v1, 1-Byte Count and Index, count: 1
10:57:23.049 [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 7 (LOCAL)
10:57:23.050 step: 13
10:57:23.050 - Check that no binary control point operated
10:57:24.050 [PLG] Binary output did NOT operate
10:57:24.051 step: 14
10:57:24.051 - Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
10:57:24.051 - g12v1, 1-Byte Count and Index, count: 1
10:57:24.051 - [10] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:24.051 --A-> Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
10:57:24.051 g12v1, 1-Byte Count and Index, count: 1
10:57:24.051 [10] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:24.051 --T-> fir: 1 fin: 1 seq: 0
10:57:24.051 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 24 dest: 1024 src: 1
10:57:24.051 --P-> 05 64 18 C4 00 04 01 00 5B 61
10:57:24.051 C0 C3 05 0C 01 17 01 0A 03 01 64 00 00 00 C8 00 69 C1
10:57:24.051 00 00 00 FF FF
10:57:24.051 step: 15
10:57:24.051 - Read a single fragment response w/ sequence(0x03)
10:57:24.051 - Verify the response contains the exact object header:
10:57:24.051 - g12v1, 1-Byte Count and Index, count: 1
10:57:24.051 - [10] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:24.051 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:24.051 - Verify that the IIN field contains IIN(LocalControl)
10:57:24.051 <-P-- 05 64 1A 44 01 00 00 04 A6 F0
10:57:24.051 C3 C3 81 B0 00 0C 01 17 01 0A 03 01 64 00 00 00 D7 E0
10:57:24.051 C8 00 00 00 00 78 FB
10:57:24.051 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 26 dest: 1 src: 1024
10:57:24.051 <-T-- fir: 1 fin: 1 seq: 3
10:57:24.051 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03 IIN(DeviceRestart, LocalControl, NeedTime)
10:57:24.051 g12v1, 1-Byte Count and Index, count: 1
10:57:24.052 [10] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:24.052 step: 16
10:57:24.052 - Check that binary control point 10 operate
10:57:24.052 [PLG] Binary output 10 did operate
10:57:24.052 step: 17
10:57:24.052 - Set the DUT's remote supervisory control to 'Enabled' or 'Remote', globally and for every point
10:57:24.052 [PLG] Every binary output is under remote control
10:57:24.052 step: 18
10:57:24.052 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:24.052 - g10v0, All Objects
10:57:24.052 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:24.052 g10v0, All Objects
10:57:24.052 --T-> fir: 1 fin: 1 seq: 0
10:57:24.052 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:24.052 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:24.052 C0 C4 01 0A 00 06 4B 14
10:57:24.052 steps: 19 to 20
10:57:24.052 - Read any number of valid responses beginning w/ sequence(0x04) and incrementing by 1 modulo 16
10:57:24.052 - Verify that the response contains objects
10:57:24.052 - Verify that the device responds with only variations: Set(g10v1, g10v2)
10:57:24.052 - Verify that the objects are in start/stop ranges with 1-octet (qualifier 0x00) or 2-octet (qualifier 0x01) indexes
10:57:24.052 - Verify that the IIN field does not contain bits IIN(LocalControl)
10:57:24.052 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
10:57:24.052 - Verify that every binary output has the flags it had in the first read, but for the state of 10
10:57:24.052 - Confirm each response that asks for a confirmation
10:57:24.052 <-P-- 05 64 25 44 01 00 00 04 07 3D
10:57:24.052 C4 C4 81 90 00 0A 02 01 00 00 13 00 01 01 01 01 6A CD
10:57:24.052 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 BB C3
10:57:24.052 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 37 dest: 1 src: 1024
10:57:24.052 <-T-- fir: 1 fin: 1 seq: 4
10:57:24.053 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04 IIN(DeviceRestart, NeedTime)
10:57:24.053 g10v2, 2-Byte Start/Stop, start: 0 stop: 19
10:57:24.053 [0] - flags: 0x01
10:57:24.053 [1] - flags: 0x01
10:57:24.053 [2] - flags: 0x01
10:57:24.053 [3] - flags: 0x01
10:57:24.053 [4] - flags: 0x01
10:57:24.053 [5] - flags: 0x01
10:57:24.053 [6] - flags: 0x01
10:57:24.053 [7] - flags: 0x01
10:57:24.053 [8] - flags: 0x01
10:57:24.053 [9] - flags: 0x01
10:57:24.053 [10] - flags: 0x01
10:57:24.053 [11] - flags: 0x01
10:57:24.053 [12] - flags: 0x01
10:57:24.053 [13] - flags: 0x01
10:57:24.053 [14] - flags: 0x01
10:57:24.053 [15] - flags: 0x01
10:57:24.053 [16] - flags: 0x01
10:57:24.053 [17] - flags: 0x01
10:57:24.053 [18] - flags: 0x01
10:57:24.053 [19] - flags: 0x01
10:57:24.053 step: 21
10:57:24.053 - Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
10:57:24.053 - g12v1, 1-Byte Count and Index, count: 1
10:57:24.053 - [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:24.053 --A-> Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05
10:57:24.053 g12v1, 1-Byte Count and Index, count: 1
10:57:24.053 [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:24.053 --T-> fir: 1 fin: 1 seq: 0
10:57:24.053 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 24 dest: 1024 src: 1
10:57:24.053 --P-> 05 64 18 C4 00 04 01 00 5B 61
10:57:24.053 C0 C5 05 0C 01 17 01 00 03 01 64 00 00 00 C8 00 DC 0C
10:57:24.053 00 00 00 FF FF
10:57:24.053 step: 22
10:57:24.053 - Read a single fragment response w/ sequence(0x05)
10:57:24.053 - Verify the response contains the exact object header:
10:57:24.053 - g12v1, 1-Byte Count and Index, count: 1
10:57:24.053 - [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:24.053 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:24.053 - Verify that the IIN field does not contain bits IIN(LocalControl)
10:57:24.054 <-P-- 05 64 1A 44 01 00 00 04 A6 F0
10:57:24.054 C5 C5 81 90 00 0C 01 17 01 00 03 01 64 00 00 00 58 37
10:57:24.054 C8 00 00 00 00 78 FB
10:57:24.054 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 26 dest: 1 src: 1024
10:57:24.054 <-T-- fir: 1 fin: 1 seq: 5
10:57:24.054 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x05 IIN(DeviceRestart, NeedTime)
10:57:24.054 g12v1, 1-Byte Count and Index, count: 1
10:57:24.054 [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:24.054 step: 23
10:57:24.054 - Check that binary control point 0 operate
10:57:24.054 [PLG] Binary output 0 did operate
10:57:24.054 Passed procedure: 8.6.4b