8.6.4.3 Test Procedure for Devices with Individual Remote Supervisory Control (revision 2.7, subset level 2)

Device under test: Step Function I/O dnp3 outstation

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