Tutorial Grafcet Rockwell
Tutorial Grafcet Rockwell
Tutorial Grafcet Rockwell
Catalog Numbers 1756 ControlLogix, 1769 CompactLogix, 1789 SoftLogix, 1794 FlexLogix, PowerFlex 700S with DriveLogix Programming Manual
Identifies information about practices or circumstances that can cause an explosion in a hazardous environment, which may lead to personal injury or death, property damage, or economic loss.
IMPORTANT ATTENTION
Identifies information that is critical for successful application and understanding of the product.
Identifies information about practices or circumstances that can lead to personal injury or death, property damage, or economic loss. Attentions help you identify a hazard, avoid a hazard, and recognize the consequence
SHOCK HAZARD
Labels may be on or inside the equipment, for example, a drive or motor, to alert people that dangerous voltage may be present.
BURN HAZARD
Labels may be on or inside the equipment, for example, a drive or motor, to alert people that surfaces may reach dangerous temperatures.
Allen-Bradley, Rockwell Automation, CompactLogix, ControlLogix, DriveLogix, FlexLogix, Logix5000, PowerFlex 700S, Rockwell Software, RSLogix 5000, SoftLogix, TechConnect are trademarks of Rockwell Automation, Inc. Trademarks not belonging to Rockwell Automation are property of their respective companies.
Summary of Changes
Summary of Changes
Change
This manual contains new and updated information. Changes throughout this revision are marked by change bars, as shown to the right of this paragraph.
Page 42
Summary of Changes
Notes:
Table of Contents
Preface
Purpose of This Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 How to Use This Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Table of Contents
Table of Contents
Table of Contents
Notes:
Preface
This manual shows how to design and program Sequential Function Charts (SFCs) for Logix5000 controllers to execute. This manual is one of a set of related manuals that show common procedures for programming and operating Logix5000 controllers. For a complete list of common procedures manuals, see the Logix5000 Controllers Common Procedures Programming Manual, publication 1756-PM001. The term Logix5000 controller refers to any controller that is based on the Logix5000 operating system. CompactLogix controllers ControlLogix controllers DriveLogix controllers FlexLogix controllers SoftLogix5800 controllers
the actual name of an item that you Right-click User-Defined see on your screen or in an example information that you must supply based on your application (a variable) Right-click name_of_program Press [Enter].
Preface
Notes:
10
Chapter
Introduction
An SFC is similar to a flowchart of your process. It defines the steps or states through which your system progresses. Organize the functional specification for your system. Program and control your system as a series of steps and transitions. By using an SFC to specify your process, you gain these advantages. Since an SFC is a graphical representation of your process, it is easier to organize and read than a textual version. Add notes that clarify steps or capture important information for use later on. Print the SFC to share the information with other individuals. Since Logix5000 controllers support SFCs, you do not have to enter the specification a second time. You are programming your system as you specify it. By using an SFC to program your process, you gain these advantages. Graphical division of processes into its major logic pieces (steps) Faster repeated execution of individual pieces of your logic Simpler screen display Reduced time to design and debug your program Faster and easier troubleshooting Direct access to the point in the logic where a machine faulted Easy updates and enhancements
11
A sequential function chart (SFC) is similar to a flowchart. It uses steps and transitions to perform specific operations or actions. This example shows the elements of an SFC.
Figure 1.1 SFC Example A step represents a major function of your process. It contains the actions that occur at a particular time, phase, or station. An action is one of the functions that a step performs.
A transition is the true or false condition that tells the SFC when to go to the next step. A qualifier determines when an action starts and stops.
12
Figure 1.2 SFC Example (continued from previous page) A selection branch chooses between different execution paths.
A text box lets you add descriptive text or notes to your SFC.
A wire connects one element to another element anywhere on the chart. This wire takes you to the conveyor step on Figure 1.1 on the previous page.
13
14
The first step in the development of an SFC is to separate the configuration and regulation of devices from the commands to those devices. Logix5000 controllers let you divide your project into one continuous task and multiple periodic tasks and event tasks. 1. Organize your project.
These functions Configure and regulate devices Command a device to a specific state Sequence the execution of your process Go here Periodic task SFC in the continuous task
2. For those functions that go in a periodic task, group the functions according to similar update rates. Create a periodic task for each update rate. For example, 2-state devices may require faster updates than PID loops. Use separate periodic tasks for each. In this example, a project uses two periodic tasks to regulate motors, valves, and temperature loops. An SFC to control the process. Define the Tasks
This task (periodic) uses Function Block diagrams to turn on or off motors and open or close valves. The SFC in MainTask commands the state for each device. The Function Block diagrams set and maintain that state.
EXAMPLE
This task (periodic) uses Function Block diagrams to configure and regulate temperature loops. The SFC in MainTask commands the temperatures. The Function Block diagrams set and maintain those temperatures.
This task (continuous) executes the sequential function chart (SFC). The SFC commands the specific state or temperature for each device or temperature loop.
15
To execute an SFC, either configure it as the main routine for a program or call it as a subroutine.
Then Configure the SFC as the main routine for the program. 1. Configure another routine as the main routine for the program. 2. Use the main routine to call the SFC as a subroutine.
The SFC is the only routine in the program. The SFC calls all the other routines of the program. The program requires other routines to execute independent of the SFC. The SFC uses boolean actions.
If the SFC uses boolean actions, then other logic must run independent of the SFC and monitor status bits of the SFC.
A step represents a major function of your process. It contains the actions that occur at a particular time, phase, or station.
Step A step executes continuously until a transition tells the SFC to go to the next step.
Do this
Actions
MIX
and do this
A transition ends a step. The transition defines the physical conditions that must occur or change in order to go to the next step.
16
Step Guidelines
Follows these guidelines. Start with large steps and refine the steps in several passes.
First pass Paint Second pass Transfer_In Third pass Transfer_In
Paint
Paint_Flow
Air_Flow
Elec_Charg
Clean Transfr_Out
Clean Transfr_Out
When you first open an SFC routine, it contains an initial step and transition. Use this step to initialize your process.
Initial step
Initial transition
The controller executes the initial step in these situations. After a project download when the controller goes into Run mode If the SFC is configured to, when the controller transitions to Run mode and on power-up When the routine containing the chart is modified online and a reset is required, and the controller transitions to or from Test mode To identify a step, look for a physical change in your system, such as new part that is in position, a temperature that is reached, a preset time that is reached, or a recipe selection that occurs. The step is the actions that take place before that change.
17
SFC_STEP Structure
Each step uses a tag to provide information about the step. Access this information via either the Step Properties dialog box or the Monitor Tags tab of the Tags window.
If you want to Determine how long a step has been active (milliseconds) Flag when the step has been active for a specific length of time (milliseconds) Then check or set Data type this member T DINT Details When a step becomes active, the Timer (T) value resets and then starts to count up in milliseconds. The timer continues to count up until the step goes inactive, regardless of the Preset (PRE) value. Enter the time in the Preset (PRE) member. When the Timer (T) reaches the Preset value, the Done (DN) bit turns on and stays on until the step becomes active again. As an option, enter a numeric expression that calculates the time at runtime. DN Flag if a step did not execute long enough LimitLow BOOL DINT When the Timer (T) reaches the Preset (PRE) value, the Done (DN) bit turns on and stays on until the step becomes active again. Enter the time in the LimitLow member (milliseconds). If the step goes inactive before the Timer (T) reaches the LimitLow value, the AlarmLow bit turns on. The AlarmLow bit stays on until you reset it. To use this alarm function, turn on (check) the AlarmEnable (AlarmEn) bit. As an option, enter a numeric expression that calculates the time at runtime. AlarmEn AlarmLow BOOL BOOL To use the alarm bits, turn on (check) the AlarmEnable (AlarmEn) bit. If the step goes inactive before the Timer (T) reaches the LimitLow value, the AlarmLow bit turns on. The bit stays on until you reset it. To use this alarm function, turn on (check) the AlarmEnable (AlarmEn) bit.
PRE
DINT
18
Details Enter the time in the LimitHigh member (milliseconds). If the Timer (T) reaches the LimitHigh value, the AlarmHigh bit turns on. The AlarmHigh bit stays on until you reset it. To use this alarm function, turn on (check) the AlarmEnable (AlarmEn) bit. As an option, enter a numeric expression that calculates the time at runtime.
AlarmEn AlarmHigh
BOOL BOOL
To use the alarm bits, turn on (check) the AlarmEnable (AlarmEn) bit. If the Timer (T) reaches the LimitHigh value, the AlarmHigh bit turns on. The bit stays on until you reset it. To use this alarm function, turn on (check) the AlarmEnable (AlarmEn) bit.
Do something while the step is active (including first and last scan) Do something one time when the step becomes active
BOOL
The X bit is on the entire time the step is active (executing). Typically, we recommend that you use an action with a N Non-Stored qualifier to accomplish this.
FS(1)
BOOL
The FS bit is on during the first scan of the step. Typically, we recommend that you use an action with a P1 Pulse (Rising Edge) qualifier to accomplish this.
Do something while the step is active, except on the first and last scan Do something one time on the last scan of the step
SA
BOOL
The SA bit is on when the step is active except during the first and last scan of the step. The LS bit is on during the last scan of the step. Use this bit only if on the Controller Properties dialog box, SFC Execution tab, you set the Last Scan of Active Step to Dont Scan or Programmatic reset. Typically, we recommend that you use an action with a P0 Pulse (Falling Edge) qualifier to accomplish this.
LS(1)
BOOL
Reset
BOOL
An SFC Reset (SFR) instruction resets the SFC to a step or stop that the instruction specifies. The Reset bit indicates to which step or stop the SFC will go to begin executing again. Once the SFC executes, the Reset bit clears.
Determine the maximum time that a step has been active during any of its executions Determine if the Timer (T) value rolls over to a negative value
TMax
DINT
Use this for diagnostic purposes. The controller clears this value only when you select the Restart Position of Restart at initial step and the controller changes modes or experiences a power cycle. Use this for diagnostic purposes.
OV
BOOL
19
If you want to Determine how many times a step has become active
Details This is not a count of scans of the step. The count increments each time the step becomes active. It increments again only after the step goes inactive and then active again. The count resets only if you configure the SFC to restart at the initial step. With that configuration, it resets when the controller changes from program mode to run mode.
Use one tag for the various status bits of this step
Status
DINT
(1)
The FS and LS bits are only active during a steps execution. Once a step finishes executing the code within its actions, the FS and/or LS bits are reset. If you reference either of these bits in code outside of the SFC routine in a different part of the project, the bits are always cleared (0).
This diagram shows the relationship of the X, FS, SA, and LS bits.
step_name.X
step_name.FS
step_name.SA
20
Once you define the steps of your process, organize them into sequences, simultaneous branches, selection branches, or loops.
Use this structure Sequence With these considerations
Selection Branch
Simultaneous Branch
21
45
46
Selection Branch
Drill
Polish
Simultaneous Branch
Control
Comms
BTs
Sequence
Ramp Maintain Cool
Sequence
Drill Tap Bolt
Wire
Not OK OK start of SFC Step 12
22
Sequence
A sequence is a group of steps that execute one after the other.
Do this
THEN this
THEN this
Selection Branch
A selection branch represents a choice between one path (step or group of steps) or another path (an OR structure). Only one path executes. By default the SFC checks the transitions from left to right. The SFC takes the first true path. RSLogix 5000 software lets you change the order in which the SFC checks the transitions (see chapter 2).
Single horizontal line Each path has its own transition Do this OR this OR this
23
Simultaneous Branch
A simultaneous branch represents paths (steps or group of steps) that occur at the same time (an AND structure). All paths execute. All paths must finish before continuing with the SFC. The SFC checks the transition after the last step of each path has executed at least once.
Do this
AND this
AND this
24
go to this step
Use actions to divide a step into the different functions that the step performs, such as commanding a motor, setting the state of a valve, or placing a group of devices in a specific mode.
Step
Do this
Actions
MIX
and do this
25
26
When the S_Complete_the_Batch step is active, the S_Open_Outlet action executes. The action sets the Outlet.ProgCommand tag equal to 1, which opens the outlet valve. Re-use logic in multiple steps Use another language to program the action, such as ladder logic Nest an SFC When the S_Complete_the_Batch step is active, the S_Open_Outlet action executes. The action calls the Open_Outlet routine. Open_Outlet Routine Call a subroutine.
When the Open_Outlet routine executes, the OTE instruction sets the Outlet.ProgCommand tag equal to 1, which opens the outlet valve.
You cannot reuse a non-boolean action within the same SFC except to reset a stored action. Only one instance of a specific non-boolean action is permitted per SFC.
27
EXAMPLE
When the S_Complete_the_Batch step is active, the S_Open_Outlet action executes. When the action is active, its Q bit turns on.
A ladder Logic routine monitors the Q bit (S_Open_Outlet.Q). When the Q bit is on, the JSR instruction executes and opens the outlet valve.
You can reuse a boolean action multiple times within the same SFC.
28
SFC_ACTION Structure
Each action (non-boolean and boolean) uses a tag to provide information about the action. Access this information via either the Action Properties dialog or the Monitor Tags tab of the Tags window.
If you want to Determine when the action is active Then check or set this member Q Data type BOOL Details The status of the Q bit depends on whether the action is a boolean action or non-boolean action. If the action is Boolean Non-boolean Then the Q bit is On (1) the entire time the action is active, including the last scan of the action On (1) while the action is active but Off (0) at the last scan of the action To use a bit to determine when an action is active, use the Q bit. A Determine how long an action has been active (milliseconds) T BOOL DINT The A bit is on the entire time the action is active. When an action becomes active, the Timer (T) value resets and then starts to count up in milliseconds. The timer continues to count up until the action goes inactive, regardless of the Preset (PRE) value. Enter the time limit or delay in the Preset (PRE) member. The action starts or stops when the Timer (T) reaches the Preset value. As an option, enter a numeric expression that calculates the time at runtime. Determine how many times an action has become active Count DINT This is not a count of scans of the action. The count increments each time the action becomes active. It increments again only after the action goes inactive and then active again. The count resets only if you configure the SFC to restart at the initial step. With that configuration, it resets when the controller changes from program mode to run mode. Use one tag for the various status bits of this action Status DINT For this member Q A Use this bit 30 31
PRE
DINT
29
To organize the logic for an action, first describe the action in pseudocode. Use a series of short statements that describe what should happen. Use terms or symbols, such as: if, then, otherwise, until, and, or, =, >, <. Sequence the statements in the order that they should execute. If necessary, name the conditions to check first (when 1st) and then the action to take second (what 2nd). Enter the pseudocode into the body of the action. Refine the pseudocode so it executes as structured text. Use the pseudocode to design your logic and leave the pseudocode as comments. Since all Structured Text comments download to the controller, your pseudocode is always available as documentation for the action. To convert the pseudocode to structured text comments, add these comment symbols.
For a comment On a single line That spans more than one line Use one of these formats //comment (*start of comment . . . end of comment*)
Each action (non-boolean and boolean) uses a qualifier to determine when it starts and stops. The default qualifier is Non-Stored. The action starts when the step is activated and stops when the step is deactivated.
30
Start a specific time after the step is activated, Stay active until a Reset action turns off this action even if the step is deactivated before this time Execute once when the step is activated Start when the step is deactivated Turn off (reset) a stored action S SL DS SD Stored Stored and Time Limited Delayed and Stored Stored and Time Delayed Execute once when the step is deactivated Execute only once
The transition is the physical conditions that must occur or change in order to go to the next step.
The transition tells the SFC when to go to the next step.
Transition
31
Selection branch
Transitions
Simultaneous branch
Transitions
EXAMPLE
You want to complete these steps. a. Turn on 2 compressors. When a compressor is on, the Device1State bit is on. b. When both compressors are on, go to the next step.
Init Init_Done compressor_1.Device1State = on (1) and compressor_2.Device1State = on (1)
32
EXAMPLE
You want to complete these steps. a. Package the product. When the product is in the package, the package_done bit turns on. b. Pack the product either 8 per carton or 16 per carton.
Package
carton_16
Transition Tag
Each transition uses a BOOL tag to represent the true or false state of the transition.
If the transition is True False The value is 1 0 And The SFC goes to the next step. The SFC continues to execute the current step.
33
bool_tag_a
dint_tag_a > 8
Call a Subroutine
To use a subroutine to control a transition, include an End Of Transition (EOT) instruction in the subroutine. The EOT instruction returns the state of the conditions to the transition, as shown below.
2 3 1
JSR - or -
If condition_1 & condition_2 & condition_3 then BOOL_tag := 1; Else BOOL_tag := 0; End_if;
EOT(BOOL_tag);
1. Call a subroutine. 2. Check for the required conditions. When those conditions are true, turn on a BOOL tag. 3. Use an EOT instruction to set the state of the transition equal to the value of the BOOL tag. When the BOOL tag is on (true), the transition is true.
Each step of the SFC includes a millisecond timer that runs whenever the step is active. Use the timer to for these situations. Signal when the step has run for the required time and the SFC should go to the next step. Signal when the step has run too long and the SFC should go to an error step.
Figure 1.3 Action of a timer and associated bits of a step
Description
35
Figure 1.4 Action of the low and high alarms for a step
Description
36
Here is an example of the use of the Preset time of a step. EXAMPLE The functional specification has these requirements. a. Cook the ingredients in the tank for 20 seconds. b. Empty the tank.
Here is an example of the use of the high alarm of a step. The functional specification has these requirements. a. Home 8 devices. b. If all 8 devices are not home within 20 seconds, then shutdown the system.
EXAMPLE
37
When the SFC leaves a step, you have several options on how to turn off devices that the step turned on.
Programmatic Reset
Automatic Reset
Each option requires you to make these decisions. Choose a last scan option. Based on the last scan option, develop your logic so that the last scan returns data to the desired values.
38
This table compares the different options for handling the last scan of a step.
Characteristic Execution actions During the last scan of a step, this option does Dont scan Only P and P0 actions execute. They execute according to their logic. Programmatic reset All actions execute according to their logic. Automatic reset P and P0 actions execute according to their logic. All other actions execute in Postscan mode. On the next scan of the routine, the P and P0 actions execute in Postscan mode. Retention of data values All data keeps its current values. All data keeps its current values. Data reverts to its values for postscan. Tags to the left of [:=] assignments clear to zero. Method for clearing data Use P and P0 actions. Use either of these. Status bits of the step or action to condition logic P and P0 actions Reset of a nested SFC A nested SFCs remains at its current step. A nested SFCs remains at its current step. Use either of these. [:=] assignment (non-retentive assignment) instructions that clear their data during postscan For the Restart Position property, if you choose the Restart at initial step option, then these occur. a nested SFC resets to its initial step The X bit of a stop element in a nested SFC clears to zero
39
EXAMPLE
This action turns on the conveyor. When conveyor_state turns on, the conveyor turns on. Before the SFC leaves the step, the P0 action turns off the conveyor. On the last scan of the step, conveyor_state turns off. This turns off the conveyor.
40
EXAMPLE
When the step is not on its last scan (conveyor_fwd.LS = 0), this statement turns on conveyor_state. When conveyor_state turns on, the conveyor turns on. On the last scan of the step (conveyor_fwd.LS =1), this statement turns off conveyor_state. When conveyor_state turns off, the conveyor turns off.
41
For an action that uses one of the stored qualifiers, use the Q bit of the action to condition your logic. Use the Programmatic Reset Option and the Q Bit
EXAMPLE
When the action is not on its last scan (conveyor_start.Q =1), this statement turns on conveyor_state. When conveyor_state turns on, the conveyor turns on. On the last scan of the action (conveyor_start.Q =0), this statement turns off conveyor_state. When conveyor_state turns off, the conveyor turns off.
You can also use a P0 Pulse (Falling Edge) action to clear data. This example uses an action to turn on a conveyor at the start of a step. A different action turns off the conveyor at the end of the step. Use the Programmatic Reset Option and a P0 Action
EXAMPLE
This action turns on the conveyor. When conveyor_state turns on, the conveyor turns on. Before the SFC leaves the step, the P0 action turns off the conveyor. On the last scan of the step, conveyor_state turns off. This turns off the conveyor.
42
Postscan is similar to prescan in that most instructions are executed as if they are false. Some instructions have specific postscan behavior. In RLL, OTE instructions are turned off and non-retentive timers are reset. In structured text, the destination of a non-retentive assignment "[:=]" is cleared. A JSR instruction invokes its subroutine but parameters are not passed and the logic in the subroutine is executed in postscan mode. An Add-On Instruction executes its logic routine in postscan mode and then executes its postscan logic in normal mode (if a postscan routine is configured). Any nested SFC (SFC that an action calls as a subroutine) is reset.
IMPORTANT
The postscan of an action actually occurs when the action goes from active to inactive. Depending on the qualifier of the action, the postscan could occur before or after the last scan of the step.
As a general rule, the postscan executes instructions as if all conditions are false. For example, the Output Energize (OTE) instruction clears its data during postscan. Follow these steps to automatically turn off (clear) devices at the end of a step. 1. In the Last Scan of Active Steps property, select the Automatic reset option. 2. To turn off a device at the end of the step, control the state of the device with an assignment or instruction. [:=] assignment (non-retentive assignment) Output Energize (OTE) instruction in a subroutine Some instructions do not follow the general rule during postscan. For a description of how a specific instruction executes during postscan, see these publications. Logix5000 Controllers General Instructions Reference Manual, publication 1756-RM003 Logix5000 Controllers Process and Drives Instructions Reference Manual, publication 1756-RM006 Logix5000 Controllers Motion Instruction Set Reference Manual, publication MOTION-RM002
43
Here is an example that uses a non-retentive assignment to control a conveyor. It turns on a conveyor at the start of a step and automatically turns off the conveyor when the step is done. Automatically Clear Data
EXAMPLE
This action turns on the conveyor. When conveyor_state turns on, the conveyor turns on. When the SFC leaves the step, conveyor_state turns off. This turns off the conveyor.
Option Use a Simultaneous Branch Make a separate step that controls the device.
Transfer_In
Paint
Fan
Clean Transfr_Out
Store and Reset an Action Note the step that turns on the device and the step that turns off the device. Later, define a Stored and Reset Action pair to control the device.
Transfer_In
Paint
Clean Transfr_Out Use One Large Step Paint Use one large step that contains all the actions that occur while the device is on.
Turn off the fan
44
EXAMPLE
Paint_Flow
Air_Flow
Elec_Charg
Fan
Clean Transfr_Out
45
more steps
Action_Name
Same name as the stored action
When the SFC leaves the step that stores the action, RSLogix 5000 software continues to show the stored action as active. (By default, a green border displays around the action.) This lets you know that the SFC is executing the logic of that action. To use a stored action, follow these guidelines. The Reset action only turns off the stored action. It does not automatically turn off the devices of the action. To turn off the device, follow the Reset action with another action that turns off the device. Or use the Automatic reset option described on page 42. Before the SFC reaches a stop element, reset any stored actions that you do not want to execute at the stop. An active stored action remains active even if the SFC reaches a stop. Use caution when you jump in between a step that stores an action and a step that resets the action. Once you reset an action, it only starts when you execute the step that stores the action.
46
In this example, steps 1 - 4 require a fan to be on. At the end of step_4, the fan is reset (turned off). When the SFC jumps back to step_3, the fan remains off.
step_1 Turn on the fan (stored)
step_2
step_4
To turn the fan back on, the SFC has to jump back to step_1.
EXAMPLE
47
Once an SFC completes its last step, it does not automatically restart at the first step. You must tell the SFC what to do when it finishes the last step.
Do this Wire the last transition to the top of the step to which you want to go. Use a Stop Element.
EXAMPLE
When the SFC reaches last_step and process_done is true, the execution of the SFC stops.
48
This example shows the use of the SFC Reset (SFR) instruction to restart the SFC and clear the X bit of the stop element. Restart (Reset) the SFC If SFC_a_stop.X = on (SFC_a is at the stop) and SFC_a_reset = on (time to reset the SFC) then for one scan (ons[0] = on): Reset SFC_a to SFC_a_Step_1 SFC_a_stop.X = 0
EXAMPLE
49
SFC_STOP Structure
Each stop uses a tag to provide information about the stop element.
If you want to Determine when the SFC is at the stop Then check or set this member X Data type BOOL Details When the SFC reaches the stop, the X bit turns on. The X bit clears if you configure the SFCs to restart at the initial step and the controller changes from program to run mode. In a nested SFC, the X bit also clears if you configure the SFCs for automatic reset and the SFC leaves the step that calls the nested SFC. Determine the target of an SFC Reset (SFR) instruction Reset BOOL An SFC Reset (SFR) instruction resets the SFC to a step or stop that the instruction specifies. The Reset bit indicates to which step or stop the SFC will go to begin executing again. Once the SFC executes, the Reset bit clears. Determine how many times a stop has become active Count DINT This is not a count of scans of the stop. The count increments each time the stop becomes active. It increments again only after the stop goes inactive and then active again. The count resets only if you configure the SFC to restart at the initial step. With that configuration, it resets when the controller changes from program mode to run mode. Use one tag for the various status bits of this stop Status DINT For this member Reset X Use this bit 22 31
50
Nest an SFC
One method for organizing your project is to create one SFC that provides a high-level view of your process. Each step of that SFC calls another SFC that performs the detailed procedures of the step (nested SFC). This figure shows one way to nest an SFC. In this method, the last scan option of the SFC is configured for either Programmatic reset or Dont scan. If you configure the SFC for Automatic reset, then step 1 is unnecessary.
SFC_a
SFC_b
3 1. Reset the nested SFC. The SFR instruction restarts SFC_b at SFC_b_Step_1. Each time SFC_a leaves this step and then returns, you have to reset SFC_b. The action also clears the X bit of the stop element. 2. Call SFC_b. 3. Stop SFC_b. This sets the X bit of the stop element. 4. Use the X bit of the stop element to signal that SFC_b is done and it is time to go to the next step.
51
Pass Parameters
To pass parameters to or from an SFC, place a Subroutine/Return element in the SFC.
Input Parameters Return Parameters
SFC_b
By default, an SFC executes a step or group of simultaneous steps and then returns to the operating system (OS) or the calling routine (JSR).
Default
You have the option of letting the SFC execute until it reaches a false transition. If several transitions are true at the same time, this option reduces the time to get to the desired step. Use the Execute until FALSE transition option only when either of these are true. You dont have to update JSR parameters before each step. Parameters update only when the SFC returns to the JSR. A false transition occurs within the watchdog timer for the task. If the time that it takes to return to a JSR and complete the rest of the task is greater than the watchdog timer, a major fault occurs.
52
Two optional instructions are available that give you further control over the execution of your SFC.
If you want to Pause an SFC Reset an SFC to a specific step or stop Then use this instruction Pause SFC (SFP) Reset SFC (SFR)
Both instructions are available in the ladder logic and Structured Text programming languages.
Execution Diagrams
The following diagrams show the execution of an SFC with different organizations of steps or different selections of execution options.
For a diagram of the Execution of a Sequence Execution of a Simultaneous Branch Execution of a Selection Branch When parameters enter and exit an SFC Options for Execution Control Page 54 55 56 56 57
53
step_1
false
return to OS/JSR
Last scan
step_2
false
return to OS/JSR
Last scan
54
Last scan
step_2
step_3
tran_2 true
false
step_3
false
return to OS/JSR
Last scan
step_3
55
return to OS/JSR
Last scan
false
false
Last scan
false
tran_1 true
return parameters
input parameters
Last scan
56
false
return to OS/JSR
tran_1 true
false
return to OS/JSR
step_1
Last scan
step_2
false
tran_2 true
false
return to OS/JSR
step_2
Last scan
57
Notes:
58
Chapter
Introduction
Green dot
59
3. To wire (connect) two elements together, click a pin on one of the elements A and then click the pin on the other element B . A green dot shows a valid connection point.
IMPORTANT
Use caution when copying and pasting components between different versions of RSLogix 5000 programming software. RSLogix 5000 software only supports pasting to the same version or newer version of RSLogix 5000. Pasting to a prior version of RSLogix 5000 software is not supported. When pasting to a prior version, the paste action may succeed but the results may not be as intended.
Green dot
60
2. To add a path to the branch, select (click) the first step of the path that is to the left of where you want to add the new path. Click
A B
Green dot
3. To wire the simultaneous branch to the preceding transition, click the bottom pin of the transition A and then click the horizontal line of the branch B . A green dot shows a valid connection point.
61
B A
Green dot
4. To wire the simultaneous branch to the transition, click the top pin of the transition A and then click the horizontal line of the branch B . A green dot shows a valid connection point.
2. To add a path to the branch, select (click) the first transition of the path that is to the left of where you want to add the new path. Click
A B
Green dot
3. To wire the selection branch to the preceding step, click the bottom pin of the step A and then click the horizontal line of the branch B . A green dot shows a valid connection point.
62
2. On the SFC toolbar, click 3. Add the step that follows the selection branch.
B A
Green dot
4. To wire the selection branch to the step, click the top pin of the step A and then click the horizontal line of the branch B . A green dot shows a valid connection point.
By default, the SFC checks the transitions that start a selection branch from left to right. If you want to check a different transition first, assign a priority to each path of the selection branch. For example, it is a good practice to check for error conditions first. Then check for normal conditions. 1. Right-click the horizontal line that starts the branch and select Set Sequence Priorities.
63
2. Clear (uncheck) the Use default priorities check box and select a transition.
Use the Move buttons to raise or lower the priority of the transition. 3. When all the transitions have the desired priority, click OK. When you clear (uncheck) the Use default priorities check box, numbers show the priority of each transition.
1. Click the lower pin of the transition that signals the jump. Then click the top pin of the step to which you want to go. A green dot shows a valid connection point. Typically, the resulting connection orients itself along the center of the flowchart and is hard to see. 2. To make the jump easier to read, drag its horizontal bar above the step to which the jump goes. You may also have to reposition some of the SFC elements.
64
1.
2.
Click here.
Green dot
Hide a Wire
If a wire gets in the way of other parts of your SFC, hide the wire to make the SFC easier to read. To hide a wire, right-click the wire and select Hide Wire.
To see the SFC element to which the wire goes, click the grid location on the wire.
65
Configure a Step
2. On the General tab, type the time for the step, in milliseconds. 3. Click OK. When the step is active for the preset time (Timer = Preset), the DN bit of the step turns on. To calculate the preset time for a step at runtime, see Use an Expression to Calculate a Time on page 67.
Type the time for the high alarm and low alarm, in milliseconds. 3. Click OK.
66
Type a numeric expression that defines the time. Use the buttons alongside the dialog box to help you complete the expression. 4. Click OK. 5. To close the Step Properties dialog box, click OK.
67
Program a Transition
BOOL_expression
This example shows three transitions that use a BOOL expression. EXAMPLE Enter a BOOL Expression
Call a Subroutine
1. Right-click the transition and select Set JSR. 2. Select the routine that contains the logic for the transition.
68
3. Click OK.
JSR(routine_name)
Add an Action
To add an action to a step, right-click the step in which the action executes and select Add Action.
Configure an Action
69
If you chose a timed qualifier, type the time limit or delay for the action, in milliseconds. These are the timed qualifiers. L Time Limited SL Stored and Time Limited D Time Delayed DS Delayed and Stored SD Stored and Time Delayed
3. Click OK.
Type a numeric expression that defines the preset time. Use the buttons alongside the dialog box to help you complete the expression. 4. Click OK. 5. To close the Action Properties dialog box, click OK.
70
Program an Action
Completes these steps to program an action. Enter Structured Text Call a Subroutine
1. Double-click the text area of the action. 2. Type the required structured text. 3. To close the text entry window, press [Ctrl] + [Enter].
//comment statement;
71
Call a Subroutine
Use a Jump to Subroutine (JSR) instruction to execute a subroutine when the action is active. 1. In the SFC, right-click the text entry area of the action and select Set JSR.
2. Choose the routine that you want to call. 3. To pass a parameter to the routine, click an empty Input Parameters text box. Then use the down arrow to select the tag that contains the parameter. 4. To receive a parameter from the routine, click an empty Return Parameters text box. Then use the down arrow to select the tag in which to store the parameter from the routine. 5. Click OK.
72
To change the order in which an action executes, drag the action to the desired location in the sequence. A green bar shows a valid placement location.
Document an SFC
To document this General information about the SFC Step
Transition
Download the documentation to the controller Have the option of showing or hiding the documentation Position the documentation anywhere in the SFC
Add Structured Text Comments Add a Text Box -orAdd a Tag Description Add Structured Text Comments Add a Text Box -orAdd a Tag Description
73
Language Switching
With RSLogix 5000 software, version 17, you have the option to display project documentation, such as tag descriptions and rung comments for any supported localized language. You can store project documentation for multiple languages in a single project file rather than in language-specific project files. You define all the localized languages that the project will support and set the current, default, and optional custom localized language. The software uses the default language if the current language's content is blank for a particular component of the project. However, you can use a custom language to tailor documentation to a specific type of project file user.Enter the localized descriptions in your RSLogix 5000 project, either when programming in that language or by using the import/export utility to translate the documentation off-line and then import it back into the project. Once you enable language switching in RSLogix 5000 software, you can dynamically switch between languages as you use the software. Project documentation that supports multiple translations within a project includes these logic elements. Component descriptions in tags, routines, programs, user-defined data types, and Add-On Instructions Equipment phases Trends Controllers Alarm Messages (in ALARM_ANALOG and ALARM_DIGITAL configuration) Tasks Property descriptions for modules in the Controller Organizer Rung comments, SFC text boxes, and FBD text boxes For more information on enabling a project to support multiple translations of project documentation, see the online help.
//comment statement;
2. Click the Tag tab and type the description for the element.
3. Click OK. 4. Drag the description box to the desired location on the SFC.
75
2. Drag the text box to a location near the element to which it applies. 3. Double-click the text box and type the note. Then press [Ctrl] + [Enter]. 4. As you move the element on the SFC, what do you want the text box to do?
If you the text box to Stay in the same spot Move with the element to which it applies Then Stop. You are done. Go to step 5.
B A Green dot
5. Click the pin symbol in the text box and then click the SFC element to which you want to attach the text box. A green dot shows a valid connection point.
76
3. Click OK.
The SFC Execution tab of the controller properties lets you configure these decisions. What to do when a transition is true. Where to start after a transition to the Run mode or recovery from a power loss. What to do on the last scan of a step.
Publication 1756-PM006D-EN-P - August 2010
77
3. Choose one of the following. whether or not to return to the OS/JSR if a transition is true. where to restart the SFC. The restart position applies when the controller loses power or leaves the Run or Remote Run mode. Select.
If you want to restart at the Last step that was running Initial step Select Restart at most recently executed step Select Restart at initial step
The restart position isnt for major faults. After you clear a major fault, the SFC always restarts at the initial step. what to do on the last scan of a step. 4. Click OK.
78
As you program your routine, periodically verify your work. 1. In the top-most toolbar of the RSLogix 5000 window, click 2. Follows these steps if any errors are listed at the bottom of the window. a. To go to the first error or warning, press [F4]. b. Correct the error according to the description in the Results window. c. Go to step 1. 3. To close the Results window, press [Alt] + [1]. To check your SFC, you can do either of these options. force transitions step through the SFC
Firmware revision 13 added support for editing SFCs online. When you transition the controller to test or un-test edits, the controller resets the SFC and starts execution at the initial step. Keep these guidelines in mind if you edit an SFC online. Time when you test or untest edits to coincide with the SFC executing the initial step. Place structured text logic in subroutines to minimize the impact of online edits. Use an SFR instruction to programmatically shift SFC execution to the desired step.
Notes:
80
Chapter
Force Steps
Introduction
Use a force to override data that your logic either uses or produces. Test and debug your logic. Temporarily keep your process functioning when an input device has failed. Use forces only as a temporary measure. They are not intended to be a permanent part of your application.
Precautions
ATTENTION
Forcing can cause unexpected machine motion that could injure personnel. Before you use a force, determine how the force will effect your machine or process and keep personnel away from the machine area. Enabling SFC forces causes your machine or process to go to a different state or phase. Removing forces may still leave forces in the enabled state. If forces are enabled and you install a force, the new force immediately takes effect.
Enable Forces
For a force to take effect, you enable forces. You can only enable and disable forces at the controller level. You can enable I/O forces and SFC forces separately or at the same time. You cannot enable or disable forces for a specific module, tag collection, or tag element.
IMPORTANT
If you download a project that has forces enabled, the programming software prompts you to enable or disable forces after the download completes.
81
Force Steps
Changes to forces can cause unexpected machine motion that could injure personnel. Before you disable or remove forces, determine how the change will effect your machine or process and keep personnel away from the machine area.
Before you use a force, determine the status of forces for the controller.
To determine the status of I/O forces Use any of the following Online toolbar FORCE LED GSV instruction SFC forces Online Toolbar
82
Force Steps
The Online toolbar shows the status of forces. It shows the status of I/O forces and SFC forces separately.
Forces tab
This Enabled
Means If the project contains any forces of this type, they overriding your logic. If you add a force of this type, the new force immediately takes effect
Forces of this type are inactive. If the project contains any forces of this type, they are not overriding your logic. At least one force of this type exists in the project. No forces of this type exist in the project.
FORCE LED
If your controller has a FORCE LED, use the LED to determine the status of any I/O forces.
IMPORTANT
The FORCE LED shows only the status of I/O forces. It does not show that status of SFC forces.
Then No tags contain force values. I/O forces are inactive (disabled). At least one tag contains a force value. I/O forces are inactive (disabled). I/O forces are active (enabled). Force values may or may not exist.
83
Force Steps
GSV Instruction
IMPORTANT
The ForceStatus attribute shows only the status of I/O forces. It does not show the status of SFC forces.
This example shows how to use a GSV instruction to get the status of forces.
To override a false transition one time and go from an active step to the next step, use the Step Through option. You do not have to add, enable, disable, or remove forces. The next time the SFC reaches the transition, it executes according to the conditions of the transition. This option also lets you override one time the false force of a simultaneous path. When you step through the force, the SFC executes the steps of the path.
Follows these steps to step through the transition of an active step or a force of a simultaneous path. 1. Open the SFC routine. 2. Right-click the transition or the path that is forced and choose Step Through.
84
Force Steps
Force a Transition
To override the conditions of a transition through repeated executions of an SFC, force the transition. The force remains until you remove it or disable forces.
If you want to Prevent the SFC from going to the next step Cause the SFC go to the next step regardless of transition conditions Then Force the transition false Force the transition true
If you force a transition within a simultaneous branch to be false, the SFC stays in the simultaneous branch as long as the force is active (installed and enabled). To leave a simultaneous branch, the last step of each path must execute at least one time and the transition below the branch must be true. Forcing a transition false prevents the SFC from reaching the last step of a path. When you remove or disable the force, the SFC can execute the rest of the steps in the path.
85
Force Steps
For example, to exit this branch, the SFC must be able to complete these actions. Execute Step_011 at least once Get past Tran_011 and execute Step_012 at least once Determine that Tran_012 is true
86
Force Steps
If you force a path of a simultaneous branch to be false, the SFC stays in the simultaneous branch as long as the force is active (installed and enabled). To leave a simultaneous branch, the last step of each path must execute at least one time and the transition below the branch must be true. Forcing a path false prevents the SFC from entering a path and executing its steps. When you remove or disable the force, the SFC can execute the steps in the path.
To override the logic of an SFC, use an SFC force. Forcing can cause unexpected machine motion that could injure personnel. Before you use a force, determine how the force will effect your machine or process and keep personnel away from the machine area. Enabling SFC forces causes your machine or process to go to a different state or phase. If forces are enabled and you install a force, the new force immediately takes effect. 1. What is the state of the SFC Forces indicator?
If Off Flashing Then No SFC forces currently exist. No SFC forces are active. But at least one force already exists in your project. When you enable SFC forces, all existing SFC forces will also take effect. SFC forces are enabled (active). When you install (add) a force, it immediately takes effect.
Solid
2. Open the SFC routine. 3. Right-click the transition or start of a simultaneous path that you want to force, and choose either Force TRUE (only for a transition) or Force FALSE. 4. Are SFC forces enabled? (See step 1.)
If No Yes Then From the Logic menu, choose SFC Forcing > Enable All SFC Forces. Then choose Yes to confirm. Stop.
87
Force Steps
Changes to forces can cause unexpected machine motion that could injure personnel. Before you disable or remove forces, determine how the change will effect your machine or process and keep personnel away from the machine area.
88
Installation Assistance
If you experience an anomoly within the first 24 hours of installation, review the information that is contained in this manual. You can contact Customer Support for initial help in getting your product up and running. United States or Canada Outside United States or Canada 1.440.646.3434 Use the Worldwide Locator at http://www.rockwellautomation.com/support/americas/phone_en.html, or contact your local Rockwell Automation representative.
Documentation Feedback
Your comments will help us serve your documentation needs better. If you have any suggestions on how to improve this document, complete this form, publication RA-DU002, available at http://www.rockwellautomation.com/literature/.