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

Device under test: Step Function I/O dnp3 outstation

10:57:21.799 Running procedure: 8.6.4a
10:57:21.803 This procedure is enabled because the following options:
10:57:21.803 - supports.globalRemoteSupervisoryControl == true
10:57:21.803 - supports.binaryOutput.status == true
10:57:21.803 - supports.binaryOutput.commands == true
10:57:21.803 step: 1.1
10:57:21.803 - Set the DUT's remote supervisory control to 'Enabled' or 'Remote', globally and for every point
10:57:21.805 [PLG] Every binary output is under remote control
10:57:21.805 step: 1.2
10:57:21.805 - Binary output 0, the one the controls go to, must be online and have no exception flags
10:57:21.805 step: 1.3
10:57:21.805 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00
10:57:21.805 - g10v0, All Objects
10:57:21.805 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00
10:57:21.805 g10v0, All Objects
10:57:21.805 --T-> fir: 1 fin: 1 seq: 0
10:57:21.806 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:21.806 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:21.806 C0 C0 01 0A 00 06 53 98
10:57:21.806 steps: 1.4 to 1.5
10:57:21.806 - Read any number of valid responses beginning w/ sequence(0x00) and incrementing by 1 modulo 16
10:57:21.806 - Verify that the response contains objects
10:57:21.806 - Verify that the device responds with only variations: Set(g10v1, g10v2)
10:57:21.806 - Verify that the objects are in start/stop ranges with 1-octet (qualifier 0x00) or 2-octet (qualifier 0x01) indexes
10:57:21.806 - Verify that the IIN field does not contain bits IIN(LocalControl)
10:57:21.806 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
10:57:21.806 - Note each binary output's flags, to compare the later reads with
10:57:21.806 - Verify that binary output(s) 0 are online, with no exception flags
10:57:21.806 - Confirm each response that asks for a confirmation
10:57:21.806 <-P-- 05 64 25 44 01 00 00 04 07 3D
10:57:21.806 C0 C0 81 90 00 0A 02 01 00 00 13 00 01 01 01 01 3A 43
10:57:21.806 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 BB C3
10:57:21.806 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 37 dest: 1 src: 1024
10:57:21.806 <-T-- fir: 1 fin: 1 seq: 0
10:57:21.807 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x00 IIN(DeviceRestart, NeedTime)
10:57:21.807 g10v2, 2-Byte Start/Stop, start: 0 stop: 19
10:57:21.807 [0] - flags: 0x01
10:57:21.807 [1] - flags: 0x01
10:57:21.807 [2] - flags: 0x01
10:57:21.807 [3] - flags: 0x01
10:57:21.807 [4] - flags: 0x01
10:57:21.807 [5] - flags: 0x01
10:57:21.807 [6] - flags: 0x01
10:57:21.807 [7] - flags: 0x01
10:57:21.807 [8] - flags: 0x01
10:57:21.807 [9] - flags: 0x01
10:57:21.807 [10] - flags: 0x01
10:57:21.807 [11] - flags: 0x01
10:57:21.807 [12] - flags: 0x01
10:57:21.807 [13] - flags: 0x01
10:57:21.807 [14] - flags: 0x01
10:57:21.807 [15] - flags: 0x01
10:57:21.807 [16] - flags: 0x01
10:57:21.807 [17] - flags: 0x01
10:57:21.807 [18] - flags: 0x01
10:57:21.807 [19] - flags: 0x01
10:57:21.809 step: 1.6
10:57:21.809 - Set the DUT's global remote supervisory switch to 'Disabled' or 'Local'
10:57:21.810 [PLG] Global remote supervisory control was enabled
10:57:21.810 step: 1.7
10:57:21.810 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:57:21.810 - g10v0, All Objects
10:57:21.810 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01
10:57:21.810 g10v0, All Objects
10:57:21.810 --T-> fir: 1 fin: 1 seq: 0
10:57:21.810 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:21.810 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:21.810 C0 C1 01 0A 00 06 55 BB
10:57:21.810 steps: 1.8 to 1.9
10:57:21.810 - Read any number of valid responses beginning w/ sequence(0x01) and incrementing by 1 modulo 16
10:57:21.810 - Verify that the response contains objects
10:57:21.810 - Verify that the device responds with only variations: Set(g10v1, g10v2)
10:57:21.810 - Verify that the objects are in start/stop ranges with 1-octet (qualifier 0x00) or 2-octet (qualifier 0x01) indexes
10:57:21.810 - Verify that the IIN field contains IIN(LocalControl)
10:57:21.810 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
10:57:21.810 - Verify that each binary output cleared ONLINE, that every binary output kept the state and other flags it had in the first read
10:57:21.810 - Confirm each response that asks for a confirmation
10:57:21.810 <-P-- 05 64 25 44 01 00 00 04 07 3D
10:57:21.810 C1 C1 81 B0 00 0A 02 01 00 00 13 00 00 00 00 00 3F E7
10:57:21.810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF
10:57:21.810 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 37 dest: 1 src: 1024
10:57:21.810 <-T-- fir: 1 fin: 1 seq: 1
10:57:21.811 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x01 IIN(DeviceRestart, LocalControl, NeedTime)
10:57:21.811 g10v2, 2-Byte Start/Stop, start: 0 stop: 19
10:57:21.811 [0] - flags: 0x00
10:57:21.811 [1] - flags: 0x00
10:57:21.811 [2] - flags: 0x00
10:57:21.811 [3] - flags: 0x00
10:57:21.811 [4] - flags: 0x00
10:57:21.811 [5] - flags: 0x00
10:57:21.811 [6] - flags: 0x00
10:57:21.811 [7] - flags: 0x00
10:57:21.811 [8] - flags: 0x00
10:57:21.811 [9] - flags: 0x00
10:57:21.811 [10] - flags: 0x00
10:57:21.811 [11] - flags: 0x00
10:57:21.811 [12] - flags: 0x00
10:57:21.811 [13] - flags: 0x00
10:57:21.811 [14] - flags: 0x00
10:57:21.811 [15] - flags: 0x00
10:57:21.811 [16] - flags: 0x00
10:57:21.811 [17] - flags: 0x00
10:57:21.811 [18] - flags: 0x00
10:57:21.811 [19] - flags: 0x00
10:57:21.812 step: 1.10
10:57:21.812 - Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
10:57:21.812 - g12v1, 1-Byte Count and Index, count: 1
10:57:21.812 - [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:21.812 --A-> Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02
10:57:21.812 g12v1, 1-Byte Count and Index, count: 1
10:57:21.812 [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:21.812 --T-> fir: 1 fin: 1 seq: 0
10:57:21.812 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 24 dest: 1024 src: 1
10:57:21.812 --P-> 05 64 18 C4 00 04 01 00 5B 61
10:57:21.812 C0 C2 05 0C 01 17 01 00 03 01 64 00 00 00 C8 00 ED 4B
10:57:21.812 00 00 00 FF FF
10:57:21.812 step: 1.11
10:57:21.812 - Read a single fragment response w/ sequence(0x02)
10:57:21.812 - Verify the response contains the exact object header:
10:57:21.812 - g12v1, 1-Byte Count and Index, count: 1
10:57:21.812 - [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 7 (LOCAL)
10:57:21.812 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:21.812 - Verify that the IIN field contains IIN(LocalControl)
10:57:21.812 <-P-- 05 64 1A 44 01 00 00 04 A6 F0
10:57:21.812 C2 C2 81 B0 00 0C 01 17 01 00 03 01 64 00 00 00 65 1C
10:57:21.812 C8 00 00 00 07 E2 78
10:57:21.812 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 26 dest: 1 src: 1024
10:57:21.812 <-T-- fir: 1 fin: 1 seq: 2
10:57:21.812 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x02 IIN(DeviceRestart, LocalControl, NeedTime)
10:57:21.812 g12v1, 1-Byte Count and Index, count: 1
10:57:21.812 [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 7 (LOCAL)
10:57:21.812 step: 1.12
10:57:21.812 - Check that no binary control point operated
10:57:22.813 [PLG] Binary output did NOT operate
10:57:22.813 step: 1.13
10:57:22.813 - Set the DUT's remote supervisory control to 'Enabled' or 'Remote', globally and for every point
10:57:22.814 [PLG] Every binary output is under remote control
10:57:22.814 step: 1.14
10:57:22.814 - Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
10:57:22.814 - g10v0, All Objects
10:57:22.814 --A-> Read(0x01) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03
10:57:22.814 g10v0, All Objects
10:57:22.814 --T-> fir: 1 fin: 1 seq: 0
10:57:22.814 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 11 dest: 1024 src: 1
10:57:22.814 --P-> 05 64 0B C4 00 04 01 00 CA 8A
10:57:22.814 C0 C3 01 0A 00 06 59 FD
10:57:22.814 step: 1.15
10:57:22.814 - Read any number of valid responses beginning w/ sequence(0x03) and incrementing by 1 modulo 16
10:57:22.814 - Verify that the response contains objects
10:57:22.814 - Verify that the device responds with only variations: Set(g10v1, g10v2)
10:57:22.814 - Verify that the objects are in start/stop ranges with 1-octet (qualifier 0x00) or 2-octet (qualifier 0x01) indexes
10:57:22.814 - Verify that the IIN field does not contain bits IIN(LocalControl)
10:57:22.814 - Verify that each fragment followed by another, or carrying events, asks for an application layer confirmation.
10:57:22.814 - Verify that every binary output has the flags it had in the first read
10:57:22.814 - Confirm each response that asks for a confirmation
10:57:22.815 <-P-- 05 64 25 44 01 00 00 04 07 3D
10:57:22.815 C3 C3 81 90 00 0A 02 01 00 00 13 00 01 01 01 01 86 27
10:57:22.815 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 BB C3
10:57:22.815 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 37 dest: 1 src: 1024
10:57:22.815 <-T-- fir: 1 fin: 1 seq: 3
10:57:22.815 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x03 IIN(DeviceRestart, NeedTime)
10:57:22.815 g10v2, 2-Byte Start/Stop, start: 0 stop: 19
10:57:22.815 [0] - flags: 0x01
10:57:22.815 [1] - flags: 0x01
10:57:22.815 [2] - flags: 0x01
10:57:22.815 [3] - flags: 0x01
10:57:22.815 [4] - flags: 0x01
10:57:22.815 [5] - flags: 0x01
10:57:22.815 [6] - flags: 0x01
10:57:22.815 [7] - flags: 0x01
10:57:22.815 [8] - flags: 0x01
10:57:22.815 [9] - flags: 0x01
10:57:22.815 [10] - flags: 0x01
10:57:22.815 [11] - flags: 0x01
10:57:22.815 [12] - flags: 0x01
10:57:22.815 [13] - flags: 0x01
10:57:22.815 [14] - flags: 0x01
10:57:22.815 [15] - flags: 0x01
10:57:22.815 [16] - flags: 0x01
10:57:22.815 [17] - flags: 0x01
10:57:22.815 [18] - flags: 0x01
10:57:22.815 [19] - flags: 0x01
10:57:22.816 step: 1.16
10:57:22.816 - Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:22.816 - g12v1, 1-Byte Count and Index, count: 1
10:57:22.816 - [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:22.816 --A-> Direct Operate(0x05) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04
10:57:22.816 g12v1, 1-Byte Count and Index, count: 1
10:57:22.816 [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:22.816 --T-> fir: 1 fin: 1 seq: 0
10:57:22.816 --L-> master: 1 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0xC4 length: 24 dest: 1024 src: 1
10:57:22.816 --P-> 05 64 18 C4 00 04 01 00 5B 61
10:57:22.816 C0 C4 05 0C 01 17 01 00 03 01 64 00 00 00 C8 00 C4 62
10:57:22.816 00 00 00 FF FF
10:57:22.817 step: 1.17
10:57:22.817 - Read a single fragment response w/ sequence(0x04)
10:57:22.817 - Verify the response contains the exact object header:
10:57:22.817 - g12v1, 1-Byte Count and Index, count: 1
10:57:22.817 - [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:22.817 - Verify that the IIN field does not contain bits IIN(ParamError, ObjectUnknown, FuncNotSupported)
10:57:22.817 - Verify that the IIN field does not contain bits IIN(LocalControl)
10:57:22.817 <-P-- 05 64 1A 44 01 00 00 04 A6 F0
10:57:22.817 C4 C4 81 90 00 0C 01 17 01 00 03 01 64 00 00 00 CC 14
10:57:22.817 C8 00 00 00 00 78 FB
10:57:22.817 <-L-- master: 0 pri: 1 fcb: 0 fcv: 0 func: UNCONFIRMED_USER_DATA(0x04) 0x44 length: 26 dest: 1 src: 1024
10:57:22.817 <-T-- fir: 1 fin: 1 seq: 4
10:57:22.817 <-A-- Response(0x81) fir: 1 fin: 1 con: 0 uns: 0 seq: 0x04 IIN(DeviceRestart, NeedTime)
10:57:22.817 g12v1, 1-Byte Count and Index, count: 1
10:57:22.817 [0] - code: 0x03 (LATCH_ON, NUL) count: 1 onTime: 100 offTime: 200 status: 0 (SUCCESS)
10:57:22.817 step: 1.18
10:57:22.817 - Check that binary control point 0 operate
10:57:22.817 [PLG] Binary output 0 did operate
10:57:22.817 Passed procedure: 8.6.4a