QUOTE (whatjusthappened @ Nov 1 2009, 06:37 AM)

Thanks guys for the replies.
I was just looking for something simple and quick that explains the different components of an SFC, how they work, and maybe gives an example. I'm pretty familiar with Logix5000 but I've never done SFC programming. I do have the "SFC and ST Programming Languages" manual. It's just that I learn a little better if I see it done. Maybe I'll try it in a test program and post the code here for critique like you suggest KidPLC.
Thanks again
That's just about all you need to do. Just remember that an SFC is not a "first class citizen" in terms of IEC 61131 languages. In other words, unlike Ladder Logic, Structured Text, Instruction List, or Function Block, you really can't (without abusing the syntax) "write" your entire program in an SFC. The SFC has some capabilities can have little snippets of structured text on the diagram. But it's not designed as a full blown programming language. The idea here is to have a few "flags" which indicate the status of your system which the SFC follows. The SFC calls individual high level functions one at a time.
Look in AB's sample code database for "Power Programming" (under Tools & Resources) and "SFC" with the "Technologies and Functionalities" drop-down (leave the other entries blank). Also check out some of the presentations for this subject that they've done at their automation fairs. Don't worry about the over-reliance on Phase Manager. Phase Manager is effectively just a pre-programmed SFC with limited capabilities. It was more or less designed simply to satisfy the S88 folks, but missed the boat in terms of becoming a true full blown state machine system. SFC's are intended to be slightly generalized state machines (they allow parallel steps) but don't quite live up to the simplicity of a true state machine.
Typically what you'd actually do with an SFC is to start with a high level description of a sequence of events such as "add ingredient A, add ingredient B, add ingredient C, run mixer, dump batch". Or if you have an assembly line where you have a walking beam or a conveyor tying several individual stations together that all have to finish their steps before the conveyor can be indexed, each of those becomes a "step" on the SFC but they are written in parallel. The code that the SFC calls is usually very simple and very high level because the steps in an SFC only execute when the SFC calls them. Your low level code that runs continuously is usually located in a separate program. The SFC program and it's subroutines usually sits at a "top level" in your program design issuing commands and monitoring status bits from the lower level code that runs in a separate program.
As far as writing SFC's goes...just try playing with the editor. At first it will drive you nuts trying to use it. But once you get the basic idea, it's fairly intuitive on a ControlLogix system. It is anything but intuitive on a SLC or PLC-5 and I do not recommend using SFC's on either platform.