Introduction to sequential function chart (SFC)




The Sequential Function Chart (SFC) is the basic design tool for sequential control
applications. 
The IEC 61131-3 SFC language is derived from the IEC 848 function chart standard. 
SFC describes graphically the sequential behavior of a control program

Elements of a sequential function chart

The general form of the function chart is shown below. The function chart has the following major parts:

  • Steps of the sequential operation
  • Transition conditions to move to the next step
  • Actions of each step



Initial step

The initial step is indicated by the double-line rectangle. The initial step is the initial
state of the program when the controller is first powered up or when the operator resets
the operation.

Steps

The steps of the operation are shown as an ordered set of labeled steps
(rectangles) on the left side of the diagram. Unless shown by an arrow, the progression
of the steps proceeds from top to bottom.

Transition conditions

The transition condition is shown as a horizontal bar between steps. If a step is active and the transition condition below that step becomes true, the step becomes inactive, and the next step becomes active. The stepwise flow (called step evolution) continues to the bottom of the diagram

Branching

Branching is permitted to cause the step evolution to lead back to an earlier step or to proceed along multiple paths.

Actions

The actions associated with a step are shown to the right of the step. Each step action is shown separately and may have up to four parts, as is seen in below figure:
a – action qualifier
b – action name
c – Boolean indicator variable
d – action description using the IL, ST, LD, FBD, or SFC language.

Action Qualifier:

The action qualifier is a letter or a combination of letters describing how the step action
is processed. If the action qualifier is absent, it is assumed to be N. Possible action
qualifiers are defined in below table:

Action name:

Action name (b) is the only item that is mandatory in the action block. It can either be a boolean variable or the name of the action whose description is shown in the “d” field.

Boolean Indicator Variable:

The “c” field is an optional boolean indicator variable, set by the action to signify step completion, time-out, error condition, and so on.

Action description:

IEC 61131-3 defines the “d” field as a box below the action name. Below figure shows an action defined as ladder logic, an FBD, ST, and an SFC. An action may also be defined as an IL.

Rules of evolution

The flow of active steps in an SFC is called step evolution and generally starts with the
initial step and proceeds downward abiding the following rules:
• Two steps are never directly linked; they are always separated by a transition.
• Two transitions are never directly linked; they are always separated by a step.

Sequence selection is also possible, causing the step evolution to choose between two or
more different paths. 
An example sequence selection divergence, and its corresponding convergence, is shown in below figure. The transition conditions must be mutually exclusive; that is, no more than one can be true. 



The evolution out of a step can cause multiple sequences to be executed, called simultaneous sequences. An example of simultaneous sequence divergence, and its
corresponding convergence, is shown in below figure. 



In this Figure, if the Prestart_Check step is active and Pre_OK becomes true, all three branches are executed.
One branch adds ingredient A followed by ingredient X. A second branch adds
ingredient B. The third branch starts the agitator after the tank level reaches a certain value. 

When all these actions are completed, the step evolution causes the Heat_Reac
step to be active. The three wait steps are generally needed to provide a holding state for
each branch when waiting for one or more of the other two branches to complete.

Comments

Popular posts from this blog

Control system documentation

Introduction to structure text (ST)

Introduction to IEC61131-3 programming languages