PLC Sequencer Programming – Tutorial on SQI SQO Instructions in RSLogix 5000 Ladder Logic [Part 1] | Video instructions

PLC Sequencer Programming – Tutorial on SQI SQO Instructions in RSLogix 5000 Ladder Logic [Part 1]

PLC Sequencer Programming – Tutorial on SQI SQO Instructions in RSLogix 5000 Ladder Logic [Part 1]

Visit for more Tutorials, Information & to connect with the Community

Programming a Sequencer in Ladder Logic on a PLC is an advanced skill. It’s a technique which utilizes SQI and SQO instructions in order to create a sequence of events which is based on specific steps & allows the PLC to follow a prescribed sequence of events. Although the squencer isn’t something you’d expect to use on a regular basis, it’s an advanced technique which shines in specific applications.

In this tutorial, we will be going over the use cases of a sequencer, how the SQI and SQO instructions are setup as well as a practical example of a sequencer.

The Sequencer Implementation Strategy
At the core, the sequencer is built from three components: Inputs, Outputs & Step Logic. The inputs are used to determine what’s currently energized and how it enables the sequencer. The outputs are used to identify what needs to be enabled at each step of the sequence. Lastly, the step logic is what will control what’s required to transition from one step to another and which outputs need to be set in a specific step.

A sequencer will work best in applications which are defined by multiple steps which are dependant on each other. As you develop PLC based applications, you will develop an intuition on where to use sequencers. A general rule of thumb is that if you have a process with 3 steps or less, you may implement a simple routine which goes through a series of MOV Instructions instead of a sequencer. As you go beyond this limit, the sequencer will be the preferred method of choice.

PLC Programmers have gotten used to implementing a sequencer through the use of MOV Instructions as mentioned above. Although this technique isn’t advised for larger applications; here’s an example of how this works:

An integer is created & will be used to store the current step of the sequence.
A MOV Instruction is used to change the step of the sequence by writing a specific value into the integer created above.
An EQU Instruction is used to compare the value to a constant & allow certain actions to be carried out accordingly.
Once the actions have been completed, the next step is initiated.
The process is repeated until there aren’t any steps or the sequence is reset.

Full Tutorial:

Find us on social media:

Other Cool Content:
PLC Input Output Mapping / Buffering | IO Addressing Basics in RSLogix Studio 5000 Allen Bradley

PLC HMI Programming Project | Development Tutorial Beginners Ladder Logic Diagram RSLogix | Part 3

RSLogix & Studio 5000 Produced and Consumed Tags | PLC Data Concentrator SCADA, Messaging, EtherNet

HMI Development | FactoryTalk View Studio ME Rotation Animation Tutorial | Pump Fan Motor Program

PLC Vlog#1 – Which PLC Hardware to Buy, When to Invest & What You Should Know before Purchasing PLCs

Relevant Search Terms
plc sequencer tutorial, plc sequence programming, plc sequencer function, plc sequencing, plc sqo, sqo rslogix 500, plc sequential logic, plc sequencing,

About the author


  1. Thank you very much! I was having an issue with an SQO and could not get a valve open during our step 10 production mode. With your video I was able to find it in the data table and fix the issue. Your video was awesome!

  2. Kind of irks me to hear you call the step sequencer or number sequencer, unprofessional. Over years of experience , I've found that that type of sequencer is the easiest for those on the floor to troubleshoot and other to add processes or paths too. I mean, would PACML be the most professional sequence using that logic. If thats so, I prefer unprofessional. Some benefits too the simple sequencer is that it can be restrated started easily mid sequence, or even run backwards with little extra code, if that puts the process in a better stopping condition.

  3. I'm working on an implementation now where I saw this as an option, but I don't think it's right for me. Application is multiple batch processes running on multiple tanks. Tanks all have matching I/O and processes are all the same. Tactic I am taking is building an array of states with the outputs, then building an array of requirements with the inputs.

    Procedures are defined as array steps with a states and requirements selected from the arrays mentioned. As program cycles through states and requirements are copied from the arrays to the current state and current requirements for a given tank. From there, just add an incrementor for each tank and use that to pull data from the arrays.

    It allows all the tanks to run concurrently using different sequences all at different steps. By having the states and requirements in an array, they can be reused on various steps as well, heavily cutting down on the amount of memory required for all these things.

    I'm still interested in this functionality, but it doesn't appear great for scalability.

  4. FOR GOODNESS SAKE! Please make a far simpler explanation for us beginners! I'm just trying to figure out how to get these instructions working for my simple class assignment; I'm not trying to program an entire brewery or bakery yet lol

  5. The good thing about using MOVs or latching individual bits of a DINT for a sequencer is that you can normally see the problem in ladder. Anyone capable of going online can just scroll down until they see the last MOV instruction and see what is keeping the rung from moving to the next step. They don't have to decode masks or other crap that is going on inside this function.

    This isn't that much different than doing things Bitwise, and while it may be a great way to program some things it is also a hot mess to decode if you don't know what's going on. You can comment all you want, but typically someone has to sit you down and walk you through it.

  6. Ive been wanting to try these instructions for a filter backwash but i always default to the old school way of incrementing a value and using EQU and MOV blocks. Might try these next filter job i get

  7. im confused because at 7:40 you change the array for SeqAr[1] but the you go back to the logic and the SQI is looking at DeqAr[0] yet it seems to still work and wait for both input 1 and 2 to be true before moving to the next position

  8. Would the SQI and SQO be a good application for controlling the steps of a servo. Say I need to pull material to three different steps and at each step I have there is a process that has to happen before the next step. Like sandblasting, then cutting, the pull and release then go back to home and start over again?

  9. Can the SQI instruction use OR logic to advance the state? For example, the tank level setpoint is reached OR the operator presses the manual advance button?

Leave a Reply

Your email address will not be published. Required fields are marked *