Introduction to the ControlLogix Sequential Flow Chart (SFC)
The ControlLogix Sequential Flow Chart (SFC) routines allow you to graphically see the flow of your logic. In order to use the Sequential Flow Chart (SFC), you need to have a proper license in Studio 5000. In this section, we’ll take a look at a simple SFC. This will give you a good idea of how they work, and how to troubleshoot SFC routines.
In a way, SFC’s remind me of sequencers. That is to say, we execute an action, then we wait for a transition bit to go true. At this point, we advance to the next step.
There are many ways to use the SFC’s. One way is to call a ladder logic routine to execute. At that point, we wait for a transition bit to go high, then we advance to the next step. In a way, this reminds me of how the Apollo computers worked. When landing on the moon, they would run one “program” at a time. On completion each step, they would transition to the next program. With SFC’s though, we can branch steps.
Our goal on this simple project is to simply start two motors (cooling fans), one at a time. We’ll start MotorA, then wait for it’s feedback. Let’s say, this is a centrifugal switch. Therefore once MotorA reaches a certain speed to engage the switch, we’ll call for MotorB to energize. Once again, we’ll wait for it’s feedback. Once both motors are running, we’ll issue a STOP instruction.
Create your Sequential Flow Chart (SFC) routine
Before we add our routine, let’s create some tags.
To create the routine, right click on a program, and add a new routine. We’ll make sure to set this as an SFC.
Add Your Logic
At this point, we are ready to add some logic. Keep in mind that SFC’s are mainly made up of steps and transition. During each step, we can also add an action. Additionally, we can time each step.
Let’s Right-Click Step_000 and “Add Action”. The action will be in Structured Text form. We’ll turn on the MotorAcmd bit.
While we’re at it, let’s do the same for Step_001. Once again, right-click and add an action. This time, we’ll turn on MotorBcmd.
At last, we are ready to configure the transitions. Remember, once we start motor A, we want to wait on it’s feedback before we transition to the next step. This is in the form of an expression.
Likewise, Trans_001 will wait on MotorBfeedback.
Keep in mind that each step can have a timer preset as well as alarms. Hit the ellipsis on the transition instruction to see what options we have. We’ll set the first one to an Initial type. The others will be normal. If you wish to have a timed transition, simply use the DN bit of the step tag as part of your transition condition. (id. Step_000.DN AND MotorBfeedback).
Don’t forget to add your JSR to the MainRoutine. In this case, we’ll have the motors start when the processor starts. We’ll need to reset the SFC, and shut off the commands to our motors. That way, they don’t try to restart at the same time. Additionally, we’ll shut off the X bit for the stop block.
Remember, the purpose of this post is just to show you what an SFC is. In another post, we’ll get into some more detail. There is some other logic we could add for fault detection, and better ways to restart the motors. In this case, though will keep this one simple.
Finalize your edits.
Test Your Sequential Flow Chart (SFC) Logic
Let’s go back to the SFC Routine. As you can see, we are in Step_000. We are waiting on the transition bit to go high. If you look at your tags, you will see that MotorAcmd did go high.
Once we get our feedback, we will enter Step_001. MotorBcmd bit is set. We are now waiting on feedback from MotorB.
Once we get our feedback from MotorB, we are ready to stop the logic.
If you wish to use timed steps, then your transitions would look more like this:
Just make sure to put a preset in each step.
Summary of the Sequential Flow Chart (SFC)
In short, SFC’s are an easy way to show the flow of your logic. You must have a proper license to use them. I haven’t seem them widely used yet in industry, but if you come across one now, you should have no problem troubleshooting them. Just keep in mind, that if a step appears to be “stuck” check the properties. It could be a timed step
For more information, visit the ControlLogix Category Page!
— Ricky Bryce