Dual-Channel Input Stop with Test (DCST)
This instruction applies to the Compact GuardLogix 5370, GuardLogix 5570, Compact
GuardLogix 5380, GuardLogix 5580, and ControlLogix 5590 controllers.
The Dual-Channel Input Stop with Test (DCST) instruction monitors dual-input safety devices whose main function is to stop a machine safely, for example, an E-stop, light curtain, or safety gate. This instruction can only energize Output 1 when both safety inputs, Channel A and Channel B, are in the active state as determined by the Input Type operand, and the correct reset actions are carried out.
In addition, this instruction has the ability to force a functional test of the stop device upon request.
The timing diagrams from the Dual-Channel Input Stop (DCS) instruction are applicable to this instruction as well.
DCST operation diagrams in this instruction, highlight the features of the test-related operands such as Test Request and Test Command.
Available Languages
Ladder Diagram

Function Block
This instruction is not available in function block.
Structured Text
This instruction is not available in structured text.
Operands
WARNING:
ATTENTION:
If changing instruction
operands while in Run mode, accept the pending edits and cycle the controller mode from
Program to Run for the changes to take effect.
IMPORTANT:
Unexpected operation, including controller assert or a
Major Non-Recoverable Fault, can occur if:
- Backing tag members are written to.
- Backing tags are shared by multiple instruction invocations.
- Backing tag members are passed as parameters to an instruction controlled by the same backing tag.
- The backing tag.EnableInmember is referenced anywhere in the program..EnableInis a parameter that represents rung state into an instruction and is only intended for internal use.For examples of these incorrect backing tag usages, seeBacking tag usages that can cause unexpected operation.
IMPORTANT:
Make sure safety input points are configured as single, not Equivalent
or Complementary. These instructions provide all dual channel functionality necessary for
PLd (Cat. 3) or PLe (Cat. 4) safety functions.
The following table provides the operands that are used to configure the instruction. These operands cannot be changed at runtime.
Operand | Data Type | Format | Description |
---|---|---|---|
DCST | DCI_STOP_TEST | tag | DCST structure |
Safety Function | DINT | list item | This operand provides a text name for how this instruction is being used. Choices include E-stop, safety gate, light curtain, area scanner, safety mat, cable (rope) pull switch, and user-defined. This operand does not affect instruction behavior. It is for information/documentation purposes only. |
Input Type | DINT | list item | This operand selects input channel behavior. Equivalent - Active High (0): Inputs are in the active state when Channel A and Channel B inputs are 1.Complementary (2): Inputs are in the active state when Channel A is 1 and Channel B is 0. |
Discrepancy Time (ms) | DINT | immediate | The amount of time that the inputs can be in an inconsistent state before an instruction fault is generated. The inconsistent state depends on the Input Type. Equivalent: Inconsistent state is when: Channel A = 0 and Channel B =1, or Channel A =1 and Channel B =0 Complementary: Inconsistent state is when: Channel A = 0 and Channel B =0, or Channel A =1 and Channel B =1 The range is 5...3000 ms. |
Restart Type | BOOL | immediate | This input configures Output 1 for either manual or automatic restart. Manual (0): - A transition of the reset input from OFF (0) to ON (1), while all of the Output 1 enabling conditions are met, is required to energize Output 1Automatic (1): - Output 1 is energized 50 ms after all of the enabling conditions are met.Important: Automatic restart may only be used in application situations
where no unsafe conditions can occur as a result of its use, or the reset function
is being performed elsewhere in the safety circuit (for example, output
function). |
Cold Start Type | BOOL | list item | This operand specifies the Output 1 behavior when applying controller power or mode change to Run. Manual (0): - Output 1 is not energized when the Input Status becomes valid or when the Input Status fault is cleared. (The device must be tested before Output 1 can be energized.)Automatic (1): - Output 1 is energized immediately when the Input Status becomes valid or when the Input Status fault is cleared and both inputs are in their active state. |
The following table explains instruction inputs. The inputs may be field device signals from input devices or derived from user logic.
Operand | Data Type | Format | Description |
---|---|---|---|
Channel A 1 | BOOL | tag | This input is one of the two safety inputs to the instruction. |
Channel B 1 | BOOL | tag | This input is one of the two safety inputs to the instruction. |
Test Request | BOOL | tag | This signal forces a functional test to occur. ON (1) -> OFF (0): Triggers a functional test. Output 1 is de-energized and the Test Command output is energized, which prompts for a functional test to be performed. The functional test is complete and the Test Command output is de-energized when Channel A and Channel B go to the safe state. |
Input Status | BOOL | immediate tag | If instruction inputs are from a safety I/O module, this is the status from the I/O module (Connection Status or Combined Status). If instruction inputs are derived from internal logic, it is the application programmer’s responsibility to determine the conditions. ON (1): The inputs to this instruction are valid.
OFF (0): The inputs to this instruction are invalid. |
Reset 2 | BOOL | tag | If Restart Type = Manual, this input is used to energize Output 1 once Channel A and Channel B are both in the active state. If Restart Type = Automatic, this input is used to energize Output 1. This input clears instruction and circuit faults provided the fault condition is not present. OFF (0) -> ON (1): The FP (Fault Present) and Fault Code outputs are reset. |
1
If the input is from a Guard I/O
input module, make sure that the input is configured as single, not Equivalent or Complementary. 2
Some safety standards require monitoring the transition of the reset
input. When the reset is used to reset a safety function, additional logic may be
required to verify a transition of the reset input from High-to-Low or
Low-to-High.The following table explains the instruction outputs. The outputs can be external tags (safety output modules) or internal tags for use in other logic routines.
Operand | Data Type | Description |
---|---|---|
Output 1 (01) | BOOL | This output is energized when the input conditions have been satisfied. The output becomes de-energized when:
|
Test Command (TC) | BOOL | This output is energized when a functional test must be carried out. The operand is not safety-related. |
Fault Present (FP) | BOOL | ON (1): A fault is present in the instruction.
OFF (0): This instruction is operating normally. |
Fault Code | DINT | This output indicates the type of fault that occurred. See the Fault Codes section below for a list of fault codes. This operand is not safety-related. |
Diagnostic Code | DINT | This output indicates the diagnostic status of the instruction. See the Diagnostic Codes section below for a list of diagnostic codes. This operand is not safety-related. |
IMPORTANT:
Do not write to any instruction output tag under any
circumstances.
Affects Math Status Flags
No
Major/Minor Faults
None specific to this instruction. See Index Through Arrays for array-indexing faults.
Execution
Condition/State | Action Taken |
---|---|
Prescan | Same as Rung-condition-in is false. |
Rung-condition-in is false | The .O1, .TC and .FP are cleared to false. |
Rung-condition-in is true | The instruction executes as described in the Operation section. |
Postscan | Same as Rung-condition-in is false. |
Operation
Functional Test Operation (Manual Restart)
The timing diagram illustrates a manual functional test being performed on a safety device, for example, a safety gate, with the instruction configured for manual restart. At (A), a manual functional test is requested because the Test Request input transitions from ON (1) to OFF (0). This immediately de-energizes Output 1 and energizes the Test Command output, which prompts for a test of the device to be performed. At (B), the functional test is complete, so the Test Command output is de-energized. At (C), Output 1 is energized again when a reset is triggered.

Functional Test Operation (Automatic Restart)
The timing diagram illustrates a manual function test being performed with Restart Type equal to Automatic. At (A), Output 1 is de-energized because the Test Request transitions from ON (1) to OFF (0). The Test Command output is also energized at this point. At (B), the Test Command output is de-energized because the functional test is complete. At (C), Output 1 is automatically energized 50 ms after the safety inputs enter the active state because the restart type is automatic.

False Rung State Behavior
When the instruction is executed on a false rung, all instruction outputs are de-energized.
Fault Codes and Corrective Actions
Fault Code | Description | Corrective Action |
---|---|---|
0 | No fault. | None. |
16#20 32 | The Input Status input transitioned from ON (1) to OFF (0) while the instruction was executing. |
|
16#4000 16384 | Channel A and Channel B were in an inconsistent state for longer than the Discrepancy Time. At the time of the fault, Channel A was in the active state. Channel B was in the safe state. |
|
16#4001 16385 | Channel A and Channel B were in an inconsistent state for longer than the Discrepancy Time. At the time of the fault, Channel A was in the safe state. Channel B was in the active state. | |
16#4002 16386 | Channel A went to the safe state and back to the active state while Channel B remained active. | |
16#4003 16387 | Channel B went to the safe state and back to the active state while Channel A remained active. |
Diagnostic Codes and Corrective Actions
Diagnostic Code | Description | Corrective Action |
00H | No fault. | None. |
16#05 5 | The Reset input is held ON (1) | Set the Reset input to OFF (0) |
16#20 32 | The Input Status was OFF(0) when the instruction started. | Check the I/O module connection or the internal logic used to source input status. |
16#4000 16384 | The device has not been functionally tested at startup. | Perform a functional test of the inputs (put Channel A and Channel B in a safe state). |
16#4001 16385 | The device has not been functionally tested after a fault occurs. |
|
16#4030 16432 | Waiting for the manual functional test to occur. | Perform a functional test of the device (put Channel A and Channel B in a safe state). |
Provide Feedback