SERV2_04E_FC_FB
-
Upload
marinel-moraru -
Category
Documents
-
view
26 -
download
2
description
Transcript of SERV2_04E_FC_FB
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 1
Date: 18.11.2005File: SERV2_04E.1
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Functions and Function Blocks (1)
0.0 Start BOOL0.1 Stop BOOL2.0 Motor_on BOOL4.0 Speed INT
DB 5
Drive
FC10
in On_1 BOOLin On_2 BOOLout Off BOOL...
...A #On_1A #On_2= #Off...
CALL FB5, DB5Start :=I 0.0Stop :=I 0.1Motor_on :=Q8.0Speed :=QW12
Program execution
CALL FC 10On_1 := I 0.1On_2 := I 0.2Off := Q 8.0
FB 5
...A #StartAN #Stop= #Motor_on...
in Start BOOLin Stop BOOLout Motor_on BOOLout Speed INTstat ...Temp...
Contents Page
Objectives ........................................................................................................................................................ 2Variables - Overview ......................................................................................................................................... 3Temporary Variables .......................................................................................................................................... 4Total Usage of the Local Data Stack ................................................................................................................ 5Exercise 1: Recognizing Types of Variables ................................................................................................... 6Example: Fault Signal Displayed with Output LED ........................................................................................... 7Parameter-assignable Blocks ........................................................................................................................... 8Declaring the Formal Parameters in FC 20 ....................................................................................................... 9Editing a Parameter-assignable Block .............................................................................................................. 10Calling a Parameter-assignable Block ............................................................................................................... 11Exercise 2: Editing a Parameter-assignable Function ..................................................................................... 12Exercise 3: Calling a Parameter-assignable Function ..................................................................................... 13Function Blocks (FB) ......................................................................................................................................... 14Function Block for Fault Display ........................................................................................................................ 15Generating Instance Data Blocks ....................................................................................................................... 16Exercise 4: Editing a Function Block ................................................................................................................ 17Exercise 5: Calling a Function Block and Testing It ......................................................................................... 18Inserting/Deleting Block Parameters Later On ................................................................................................... 19Checking the Block Consistency ....................................................................................................................... 20Corrections when Calling Modified Blocks ........................................................................................................ 21Using the EN/ENO Output ................................................................................................................................. 22Summary: Block Calls ....................................................................................................................................... 23If You Want to Know More ................................................................................................................................ 24Comparison of Functions and Function Blocks ................................................................................................. 25Programming rules IEC 61131-3 ........................................................................................................................ 26Requirements for STEP 7 ................................................................................................................................... 27
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 2
Date: 18.11.2005File: SERV2_04E.2
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Objectives
Upon completion of this chapter the participant will ...
... be familiar with the purpose of parameter-assignable blocks
... be able to program parameter-assignable functions and their calls
... know the difference between functions (FCs) and function blocks(FBs)
... be familiar with the purpose of static variables
... be able to declare static variables and apply them in the program
... be able to program parameter-assignable function blocks and callthem
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 3
Date: 18.11.2005File: SERV2_04E.3
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Variables - Overview
Temporary Variables• are overwritten with undefinedvalues after the associatedblock is executed
• temporary storage in L stack
• usable in OBs / FCs / FBs
Static Variables• are retained even after theblock is executed
• permanent storage in DBs
• can be used in FBs only
Local Variables / Data(only valid in one block)
Global Variables / Data(valid in the entire program)
• PII / PIQ
• I / O Peripherals
• M / T / C
• DB areas
symbolicabsolute
Access
General Up until now, the inputs and outputs in our programs were coded directly withtheir actual address assignments. This type of programming is fixed to theseaddress locations and is therefore not well-suited for repetitive processes.Blocks that are not parameterized are best used for custom machinery wherethere is no repetition in the process. For frequently reoccurring functions in larger systems it is better to makereusable, parameter-assignable blocks (Functions, FCs and Function Blocks, FBs). These blocks use symbolic input and output parameters (local symbolnames), which are supplied with actual operands when the block is called. You have to assign these operands when you make a call to a Function or a Function Block. The program logic of the FC/FB remains unchanged and youcan therefore reuse the logic several times.
Local Variables Up until now, you used global variables (bit memories and data blocks) to save production data, for example. In this chapter you will find out more about datastorage in local variables.Local variables can be read only by the block in which they were originallycreated. Because of this, local variables cannot be used as data interfacesbetween different program blocks. There are two types of local variables: Temporary and Static.• Temporary Variables:
Temporary variables are variables that are stored only while the block isbeing executed. They can be declared in all program blocks (OB, FC, FB).
• Static Variables:If the data are to be retained even after the block is executed, the data mustbe stored in static variables.Static variables can only be declared in function blocks. The instance DB assigned to the FB is used as the storage location for these static variables.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 4
General Temporary variables can be used in all program blocks (OB, FC, FB). They areused to temporarily store information while the block is being executed. The dataare lost when the block is exited.The data are stored in the L stack (local data stack). It is a separate memory areain the CPU.
Declaration You define the variables in the declaration table of the block. In the "TEMP" rowyou enter a variable name and the associated data type.You can not predefine an initial value here.After you have saved the block, the memory location in the L stack is displayed in the "Address" column.
Access In Network 1, you see an example of the symbolic access to a temporaryvariable. The result of the subtraction is stored in the temporary variable "Result".You can also enter an absolute access (T LW0). You should, however, try to avoid absolute addressing since the program is more difficult to read.
Note Variable names that begin with the # special character are local variables whichare only valid within the block in which they are declared in the declaration table.The Program Editor automatically inserts the # character.
Date: 18.11.2005File: SERV2_04E.4
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Temporary Variables
Declaration
Use
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 5
Total Usage For every program execution level or priority class (such as, OB 1 with all blocks that are called in it or by it), a separate L stack is reserved. That is, a segment of defined size is reserved on the L stack of the CPU (allocation orreservation of memory space). The local variables of OB 1 as well as the local, temporary variables that are in blocks (FCs and FBs) called in or by OB 1 are stored in this L stack.
You can use the "Reference Data" tool to show to what extent an S7 programputs a burden on the Local stack. The reference data are dealt with in moredetail in the chapter "Troubleshooting".
Reference Data In the SIMATIC Manager, select the Blocks folder and choose the menuoptions Options Reference Data Display Program Structure
Note If the maximum number of local data is exceeded (overflow of the L stack) during program execution in the CPU, the CPU goes into the STOP mode. "STOP caused by error when allocating local data" is entered as the cause of error in the diagnostics buffer.
Date: 18.11.2005File: SERV2_04E.5
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Total Usage of the Local Data Stack
256
Byt
es
Result
Usage of the L stack
1
OB1
OB 1
1
Operatingsystem
FC 20
with temp.variables
OB1
FC20
FC17
3
3
OB1
FC17
4
4
OB1
FC17
6
6
FC 30
with temp.variables
OB1
FC30
FC17
5
5
FC 17
with temp.variables
2
OB1
FC17
2
7
OB1
7
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 6
Date: 18.11.2005File: SERV2_04E.6
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Exercise 1: Recognizing Types of Variables
Absolute Symbolic Static ParameterGlobal LocalL #Number_1
T #Maximum_value
T MW 40
Statement
L #Number_2
L "Number_1"
T #Number_2T MW 40
Task In the Statement section of the slide, you can see a program with different variables. In the table below it, assign the corresponding properties to thevariables.
What To Do In the table, mark the associated data type with an X and answer the followingquestion:What is not correct in the statement T#Number_2 ?
.......................................................................................................................
.......................................................................................................................
.......................................................................................................................
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 7
Description Problems (disturbances) that occur are to be displayed by an LED on theoperator console. When the problem occurs (I 1.1), the LED (Q 5.1) is to flashwith 2 Hz.The problem is acknowledged at the input I 1.2. If the problem has beencorrected in the meantime, the LED stops flashing. If the problem continues, theLED switches to a steady light until the problem is corrected.
Program An RLO edge detection of the fault signal is carried out, since the memory wouldotherwise be immediately reset when an existing problem is acknowledged. If the memory is set (message has not yet been acknowledged), the upper AND logic operation causes the LED to flash. With this, the bit memory M10.3, thatwas defined as a clock memory when parameter assignment was made in theCPU, is gated. The lower AND logic operation is used to cause a steady light for a problem thatis acknowledged but still exists.
Date: 18.11.2005File: SERV2_04E.7
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Example: Fault Signal Displayed with Output LED
Fault_Signal
Display
Acknowledge
Stored_Fault
Solution Suggestion
Task
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 8
Application You can program parameter-assignable blocks for frequently recurring programfunctions. This has the following advantages:• The program only has to be created once, which significantly reduces
programming time.• The block is only stored in the user memory once, which significantly
reduces the amount of memory used.• The block or the functionality implemented with the block can be called as
often as you like, each time with a different address. For this, the formal parameters (input, output, or in/out parameters) are supplied with different actual operands every time they are called.
Program Execution Statement List Language is shown in the above example as it is easier to followthe program execution. The STL program code above performs the same fault logic as the previous example. Statement List programming language will bediscussed further in a more advanced class.
When the block shown above is executed and the statement "A #Acknowledge" is evaluated, the parameter Acknowledge is replaced by the actual parametergiven during the call. If the input I 1.1 is given as the actual parameter for the parameter#Acknowledge, then the statement "A I 1.1" is evaluated instead of the logic yousee in the FC20 program block, "A #Acknowledge" .
Parameter- You can program FC or FB blocks as parameter-assignable. You cannotassignability program organization blocks as parameter-assignable since they are called
directly by the operating system. As no block call takes place in the userprogram, it is not possible to pass actual operands to an OB.
Our Example Even if the fault subroutine is required twice in the system, you only have to program FC 20 once as parameter-assignable. The FC 20 is then called twice for the two different faults and is assigned a different actual address each time.
Date: 18.11.2005File: SERV2_04E.8
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Parameter-assignable Blocks
A I 1.1
FP M 17.2
S M 17.1
A I 1.0
R M 17.1
A M 17.1
A M 10.3
O
AN M 17.1
A I 1.1
= Q 5.1
Solution with non-parameter-assignable block Call of FC 20 (e.g. in OB 1)
Fault_Signal
Stored_Fault
Acknowledge
Edge_Memory
Display
Flash_Freq.
FC 20
Formal parameters
A #Fault_Signal
FP #Edge_Memory
S #Stored_Fault
A #Acknowledge
R #Stored_Fault
A #Stored_Fault
A #Flash_Freq.
O
AN #Stored_Fault
A #Fault_Signal
= #Display
Solution with parameter-assignable block
Program in FC 20
M 17.1
M 17.2
I 1.1
I 1.0
M 10.3
Actual parameters
Q 5.1
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 9
Date: 18.11.2005File: SERV2_04E.9
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Declaring the Formal Parameters in FC 20
Use Graphic Display
Read only To the left of the block boxWrite only To the right of the block box
Type of Parameter
Input parameterOutput parameterIn/Out parameter
Declaration
inoutIn_out Read / Write To the left of the block box
Formal Parameters
Formal Parameters Before you can create the program for the parameter-assignable block, youhave to define the formal parameters in the declaration table.
Type of Parameter In the table in the slide, you can see the three different parameter types that areavailable for use in the block. It is up to the programmer to select the declarationtype for each formal paramater. The ‘in‘ declaration type should be assignedonly to declaration types that will be read for instructions in the subroutine. Usethe ‘out‘ declaration type for paramaters that will be written to within the function. Please make sure that formal parameters that have a reading access (queriedwith the operations A, O, L) and a writing access (assigned with the operationsS, R, T) are declared as ‘in/out‘ parameters.
Interface The interface of a block forms the IN, OUT, and IN_OUT parameters. TheRETURN parameter is a defined, additional OUT parameter that has a specificname according to IEC 61131-3. This parameter only exists in FCs in theinterface. The TEMP variables are - even though they are listed under "Interface" - notcomponents of the block interface, since they do not become visible when theblock is called or that no actual parameters have to be passed for the declaredTEMP variables in the calling block. To declare the parameters and TEMP variables, the type of parameter or TEMP must be selected in "Interface" (see lower picture). After that, in the tableappearing to the right, the names can be edited with the associated data typesand comments.
Example FC20 In the lower section of the slide, you can see the declaration table and/or theinterface of the FC 20 block "Fault Signal" (see previous page). Notice that sincethe formal parameters #Stored_Fault and #Edge_Memory are used for bothreading and writing instructions in connection with the operation FP, you have to declare these as in/out parameters.
Attention The declared formal parameters (IN, OUT and IN_OUT, not TEMP) of a block are its interface to the "outside". That is, they are "visible" or relevant to otherblocks, that call this block. If the interface of a block is changed by deleting oradding formal parameters later on, then the calls have to be updated. All blocksthat call this block must be updated.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 10
Date: 18.11.2005File: SERV2_04E.10
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Editing a Parameter-assignable Block
Notes It doesn‘t matter whether the names of the formal parameters are written withcapital or small letters. The "#" character in front of the name is automaticallyinserted by the PG/PC. The character is used to indicate that the parameter is a local variable that was defined in the variable declaration table of this block.
It is possible, that when you write the program in LAD / FBD, that the name isnot completely displayed in one line. This depends on how you have customizedthe settings in the Program Editor (Options Customize "LAD / FBD" tabAddress Field Width).
Symbols 1. If you use a symbolic name when you edit a block, the Editor first of all searches through the declaration table of the block. If the symbolic name is there, the symbol with a # in front of it is accepted in the program as a local variable. Capital and small letters may be corrected to match the way a symbol is entered in the declaration table.
2. If a symbol cannot be found as a local variable, the Editor searches throughthe program‘s symbol table for the global symbol.If the symbol is found there, the symbol is placed in quotation marks and isaccepted in the program as a global variable.
3. If you specified the same symbolic name in the symbol table as well as in thelocal declaration table, the Editor will always insert the local variable.If, however, you want to work with the global symbol, you must place thesymbol name in quotation marks when you make the entry.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 11
Date: 18.11.2005File: SERV2_04E.11
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Calling a Parameter-assignable Block
Programming a The call of a parameter-assignable block can be programmed by copying theBlock Call symbol of the desired block into the code section of the calling block. The drag &
drop method works nicely for this purpose. This symbol is found in the "FC Blocks" or "FB Blocks" folder of the Program Elements Catalog in the LAD / FBD / STL Editor. A field with question marks then automatically appears for eachformal parameter of the called block in which the actual parameters are to beentered.
Note When a parameter-assignable function (FC) is called, an actual parameter mustbe passed for every formal parameter. Exception:In the graphic programming languages LAD and FBD, the assignment of the EN and ENO parameters, which are automatically added by the Editor, is optional. Here we are not dealing with formal parameters, rather the possibility of calling a block conditionally.
Parameter All global and local addresses whose data type corresponds to the formalAssignment parameters of the called block can be passed as actual parameters.
The actual parameters can be passed with an absolute address or with a symbolic name just as in the global symbol table or in the declaration table of the calling block.
Passing On of Basically, a “passing on of parameters“ is also possible. That is, formalParameters parameters of the calling block are passed on as actual parameters to the called
block. For complex data type parameters, this is however only possible withlimitations. It is dealt with in greater detail in another more advanced course.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 12
Function of the When a fault occurs (switch on the simulator), an output LED light on theFault Evaluation simulator will begin flashing at a 2 Hertz rate. You can acknowledge the fault
using a pushbutton on the simulator.
When the fault is acknowledged one of two things will occur. If the fault is no longer valid (switch on the simulator is turned off), the output LED will turn off. Or, if it is still valid (switch on the simulator is still on), the output LED will change to a steady light. The steady light disappears as soon as the fault no longer exists.
Task Create a fault evaluation program in the parameter-assignable block FC 20 (“FC_Evaluate_Fault“).
What To Do 1. Insert the FC 20 block into your S7 Blocks folder.2. Declare the formal parameters as shown in the slide.3. Create the program as shown in the slide.4. Save the block and download it to the CPU.
Date: 18.11.2005File: SERV2_04E.12
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Exercise 2: Editing a Parameter-assignable Function
Declaring the Formal Parameter
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 13
Task Two process disturbances (two switches on the simulator) are to be evaluatedor displayed through an LED on the simulator. Accordingly, program two calls of FC 20 and assign parameters to it using the actual parameters shown in theslide.
What To Do 1. Program the FC 20 - calls in two new networks in the FC 17 block2. Save the modified FC 17 and download it to the CPU
Note You have parameterized the memory byte MB 10 as a clock memory byte in theCPU properties using the “Hardware Configuration“ tool. Should you have performed a memory reset in the meantime, you have to reload the system data you generated with HW Config into the CPU in order to make the bit memory M10.3 flash.
Date: 18.11.2005File: SERV2_04E.13
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Exercise 3: Calling a Parameter-assignable Function
1st. call of FC 20 fordisplay of Disturb. 1
2nd. call of FC 20 fordisplay of Disturb. 2
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 14
Special Features Unlike functions (FCs), function blocks (FBs) have a (recall) memory. Thatof FBs means that a local data block is assigned to the function block, the so-called
instance data block. When you call an FB, you also have to specify thenumber of the instance DB, which is automatically opened. An instance DB is used to save static variables. These local variables can onlybe used in the FB, in whose declaration table they are declared. When the block is exited, they are retained.
Exclusion Address By activating this option, you can assign properties to the FB parameters andand Termination static variables that are only relevant in connection with a process diagnosis. Address
Parameters When the function block is called, the values of the actual parameter are storedin the instance data block. If no actual parameters are assigned to a formal parameter in a block call, thenthe last value stored in the instance DB for this parameter is used in theprogram execution.You can specify different actual parameters with every FB call. When the function block is exited, the data in the data block is retained.
Static Variables Static local variables store block specific data that are not accessed exterior to the function block. In other words the variable is not passed in or out of theblock as a formal parameter.
FB Advantages • When you write a program for an FC, you must search for empty bit memoryaddress areas or data areas and you must maintain them yourself. The staticvariables of an FB, on the other hand, are maintained by the STEP 7 software.
• When you use static variables you avoid the risk of assigning bit memoryaddress areas or data areas twice.
• Instead of the formal parameters "Stored Fault" and "Edge Memory" of theFC20, you use the static variables "Stored_Fault" and "Edge_Memory" in the FB. This makes the block call simpler since the two formal parametersare dropped.
Date: 18.11.2005File: SERV2_04E.14
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Function Blocks (FB)
FB 20EN
Fault_Signal
Acknowledge Display
Flash_Freq. ENO
DB 2
Declaration Tableof the
Function Block
Call of Function Blocksuch as in OB1
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 15
Fault Display In an earlier exercise you created a parameter-assignable FC 20 block fordisplaying a fault message (indicating a problem). Instead of bit memories, that were used in the FC20 to save the fault signal and its RLO edge detection, you can use so-called static variables in an FB. Theyare stored in the instance DB referencing the FB.
Instance DB When a DB is generated and assigned to an FB, STEP7 creates the dataStructure structure of the data block using the structure specified in the local declaration
table for the function block. After you save the DB, the data block is created and can then be used as an instance DB.
Note As of STEP 7 V5.2, instance data blocks will be opened with the “Parameter assignment of data blocks“ tool by default. As an alternative, you can open the data block with the DB Editor in LAD / FBD / STL. To do so, click on the “No“ button.
Date: 18.11.2005File: SERV2_04E.15
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Function Block for Fault Display
Declaration Tableof the
Function BlockInstance
Data block
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 16
Generating There are two ways of generating an instance data block:
• When you call an FB, you specify with which instance DB the FB is to work.The following message then pops up: "The instance data block DB x does not exist. Do you want to generate it?".
• When you create a new DB, you select the option "Data block referencing a function block".
Notes One instance DB can only reference one FB. However, one FB can bereferenced by a different instance DB every time it is called.If you modify the FB (by adding parameters or static variables), you must thenalso generate the instance DB again.
Date: 18.11.2005File: SERV2_04E.16
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Generating Instance Data Blocks
1. Generate instance DB with FB call 2. Create new instance DB
In the LAD / FBD / STL Editor In the SIMATIC Manager
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 17
Date: 18.11.2005File: SERV2_04E.17
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Exercise 4: Editing a Function Block
Task An additional fault (simulator switch) is to be evaluated. The easiest way to do this would be to program another FC 20 call.However, in order to make use of the given advantages of an FB solution, youare to program a parameter-assignable FB 20 for the evaluation of this thirdfault. Static variables are to be used to store the Edge Memory and Stored Fault.These static variables are to be stored in the instance DB of the FB.In the slide you can see the declaration table of FB 20 with the input and outputparameters and the beginning of the program.
What To Do 1. Insert the FB 20 block into the S7 Blocks folder .2. Declare the formal parameters and the static variables of the block as shown
in the slide.3. Write the program code for FB 20. The easiest method of doing this is to
copy and paste the necessary network from the already programmed FC 20 block.
4. Save the new block and download it into the CPU.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 18
Task: The evaluation of Fault #2 (programmed up until now through the call of FC 20) and the evaluation of the new Fault #3 is to be implemented with the newlycreated FB 20.The parameter-assigned block FB 20 must be called twice in the FC 17 for this. Each time FB 20 is called, assign a different instance data block.
What To Do 1. In FC 17 delete the second call of FC 20, since the evaluation of Fault #2 is to be subsequently implemented with FB 20.
2. Program both calls of FB 20 as shown in the slide in two new networks in FC 17. Let the Editor generate the instance DBs 2 and 3.
3. Save the modified FC 17 offline only, for the time being.4. First download both generated instance data blocks DB 2 and DB3 from the
SIMATIC® Manager into the CPU and then the modified FC 17.5. Test the functioning of your program.
Task 2 After successfully testing your function block for fault evaluation, you can, forexample, use the following process signals as Fault Signal instead of thesimulator switch: • Bit memory signal M17.0 "Conveyor belt fault condition" from FC17.• Simultaneous initiation of both proximity switches BAY 1 and BAY 2 in Auto
mode. This second task is not relevant for the continuation of your next exercises.
Date: 18.11.2005File: SERV2_04E.18
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Exercise 5: Calling a Function Block and Testing It
Current situation Result after the exercise
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 19
Date: 18.11.2005File: SERV2_04E.19
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Inserting/Deleting Block Parameters Later On
Save
Problem If you have to adjust or supplement the interfaces or the code of individualblocks during or after program creation, it can lead to time stamp conflicts. Time stamp conflicts can, in turn, lead to block inconsistencies between calling and called blocks or reference blocks and thus to a great degree of correction. If block parameters are added or deleted later on to a block already called in theprogram, you also have to update the calls of the block in other blocks. If this isneglected, the CPU either goes into STOP or the block function can no longerbe guaranteed since additionally declared formal parameters are not suppliedwith actual parameters when called. In the example, the additional input parameter "Check_lights" was insertedwhich has to be supplied later on with an actual parameter in all block calls.When you save a block whose interface was modified by adding or deletingformal parameters, a message pops up warning you of possible problems.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 20
Date: 18.11.2005File: SERV2_04E.20
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Checking the Block Consistency
Block inconsistency
Area of Use The function Check block consistency Compile clears up most of all time stamp conflicts and block inconsistencies.Interface conflicts occur when the interface of a parameter-assignable block ismodified, after the block‘s calls have already been programmed in other blocks. Block inconsistencies also occur when, for example, addresses are accessedsymbolically, and the assignment Symbol Absolute address is changedlater on in the global symbol table or in data blocks.As you can see in the slide, blocks that have inconsistencies that could not becleared up automatically (such as for interface conflicts) have symbols to indicate this (see online help). These blocks can then be opened and correctedby the user with the respective Editor using the right mouse button (please seenext page).
Tree View... The tree view shows the logic/interface dependencies or references of theblocks of the selected block folder. The tree view can be displayed either as Dependency Tree or as Reference Tree using View Reference Tree / Dependency Tree.
...as Reference Tree The reference tree shows in levels from left to right the dependencies of all blocks or their nesting. Just as with the Reference data Program structure, thecall paths are displayed from left to right starting from nesting depth 1. Thus, thereference tree gives an overview of the nesting depths in the individual programexecution levels.
...as Dependency The dependency tree shows in levels from left to right the dependencies of allTree blocks or their nesting. In this case the displayed call paths don‘t start from
nesting depth 1 but from the individual blocks. Accordingly, all blocks of theblock folder are listed in the far left level. The following levels (to the right) showthe dependencies or the blocks from which they are called. Just as with theReference data-Cross reference list, the dependency tree supplies you withinformation about blocks call which blocks.
.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 21
Date: 18.11.2005File: SERV2_04E.21
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Corrections when Calling Modified Blocks
Once with the right
Updating a Call Inconsistent calls of a block (in the slide FB 20) are marked in red in the opened, calling block (in the slide OB 1).By clicking on the inconsistent call with the right mouse button, you can selectthe function Update Block Call in the follow-up dialog box. A window thenappears in which the old (faulty) and the new block call (in the slide with theadditional parameter "Check_Lights") is displayed. After confirming with "OK", you can pass the missing actual parameter for the formal parameter"Check_Lights".The Instance_DB is then regenerated for function blocks.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 22
Standard FCs The following rules exist for the execution of standard FCs:• If EN = “0“, the block is not executed and ENO is also =“0“. • If EN = “1“, the block is executed and if it is executed without errors ENO is
also = “1“.If an error occurs while the block is being executed, ENO becomes = “0“.
User FCs It doesn‘t matter whether a user block was written in LAD, FBD or STL, when itis called in LAD / FBD, the parameters EN and ENO are added as well. EN/ENO do not exist in STL. You can, however, emulate them.You must program - irregardless of the programming language - an errorevaluation.
Interconnection In LAD / FBD, several boxes can be grouped together one after the other and linked logically with EN / ENO.
Date: 18.11.2005File: SERV2_04E.22
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
LAD/FBD STL
Using the EN/ENO Output
CALL FC 1 NOP 0
FC 1
EN ENO...Unconditional call
A I 0.1 JNB _001 CALL FC 1
_001: A BR = Q 5.0
FC 1EN ENOI 0.1 =
Q5.0
Conditional call
Example
...
ADD_I
EN ENO
MUL_I
EN ENO
DIV_I
EN ENO =
Q 5.1
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 23
CALL The "CALL" instruction is used for calling program blocks (FC, FB, SFC, SFB). In the graphic programming languages LAD and FBD, the block call can bemade dependent on a condition (RLO) using the EN input of the CALL box. In the STL programming language the block call is absolute, that is, regardless of the RLO.If you call an FB or SFB with "CALL", you must also specify the relevant instance DB. You can use either the absolute or the symbolic name for theblock.For example: "CALL FB2, DB2" or "CALL valve, level".
UC The "UC" instruction is an unconditional call of a block of the type FC or FB. TheUC operation is only allowed if the FC or FB called is not parameter-assignable. As well, no static variables may be declared in an FB called with UC.
CC The "CC" instruction is a conditional call of a block of the type FC or FB. The CC operation is only allowed if the FC or FB called is not parameter-assignable. As well, no static variables may be declared in an FB called with CC.
Note The UC and CC instructions do not convert to Ladder or Function Block Diagram representation. Also, the program editor will allow the UC or CC call of a parameter assigned block. When the program is downloaded an ”AREA ERROR when Reading” system fault will occur.
Parameters The formal parameters declared in the declaration table of a block are theinterface of the block. When a parameter-assignable FC is called, an actualparameter must be passed for every formal parameter. This parameter passingis not mandatory when an FB is called.Static and temporary variables are not parameters and are accordingly not partof the block interface. As a result, no parameter passing for static or temporaryvariables can take place in block calls.
Date: 18.11.2005File: SERV2_04E.23
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Summary: Block Calls
• CALL FC1• UC FC1• CC FC1
STL
LAD
FBDFC1
EN
ENO
FC1EN ENO
FC1
( CALL )
FB
not available
w/o parm., w/o stat var.
not available
• UC FB1• CC FB1
CALL
with parameters
• CALL FC2Par1: ...Par2: ...Par3: ...
FC2EN ENO
Par3
Par1
Par2
FC2EN
ENO
Par1
Par2
Par3
with parm., and/or stat var
• CALL FB2, DB3Par1: ...Par2: ...Par3: ...
FB2EN ENO
Par3
Par1
Par2
DB3
FB2EN
ENO
Par3
Par1
Par2
DB3
without parametersLan-guage
FC
FC1
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 24
Date: 18.11.2005File: SERV2_04E.24
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
If You Want to Know More
Note The following pages contain either further information or are for reference to complete a topic.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 25
Date: 18.11.2005File: SERV2_04E.25
SIMATIC S7Siemens AG 2005. All rights reserved.
SITRAIN Training forAutomation and Industrial Solutions
Comparison of Functions and Function Blocks
0.0 Start BOOL0.1 Stop BOOL2.0 Motor_on BOOL4.0 Speed INT
DB 5
Drive
FC10
in On_1 BOOLin On_2 BOOLout Off BOOL...
...A #On_1A #On_2= #Off...
CALL FB5, DB5Start :=I 0.0Stop :=I 0.1Motor_on :=Q8.0Speed :=QW12
Program execution
CALL FC 10On_1 := I 0.1On_2 := I 0.2Off := Q 8.0
FB 5
...A #StartAN #Stop= #Motor_on...
in Start BOOLin Stop BOOLout Motor_on BOOLout Speed INTstat ...Temp...
Functions FC Functions are parameter-assignable blocks without a memory. In STEP 7, functions can have as many input, output and in/out parameters as you like. Functions have no memory because they don‘t have their own permanent dataarea for storing results. Intermediate results that occur during function executioncan only be stored in temporary variables of the local data stack.Functions expand the command set of the processor in the traditional manner.
Area of Use Functions are mainly used when function values are to be given back to callingblocks (such as, mathematical functions or individual control with binary logic).
Function Blocks Function blocks (FB) are user program blocks and are, according to IEC 61131-3, logic blocks with memory. They can be called by OBs, FBs and FCs. Function blocks can each have as many input, output and in/out parameters as well as static and temporary variables as you like. Unlike FCs, FBs are instantiated. That is, an FB is assigned its own private dataarea in which the FB can, for example, "remember" process states from one callto the next. In its simplest form, this private data area is its own DB, the so-called Instance DB.
Memory In the Declaration Table of a function block, the programming person candeclare static variables in which the function block can "remember" informationfrom one call to the next. This is the main difference to functions.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 26
Programming rules IEC 61131-31. Identifiers are written using correct spelling rules.2. If an identifier is made up of a combination of several words, each
word begins with a capital letter if this follows correct spelling rules.3. Identifiers of constants only consist of capital letters if they are not
standard constants.4. Type identifiers are preceded by a t. Pointer types have an
additional identifier (e.g. Ref, or p)5. Each instruction is in its own line6. begin and end are each in their own line7. Instruction sequences are indented by a constant number of 2-4
positions between begin and end. begin and end are located left-justified under the control instructions and are not further indented.
8. Instruction parts of control instructions are also indented.9. In the program head, the task that fulfills the program is described,
not the mode of operation.10. Parameters have a comment.11. Formal parameters have an identifier indicating what type of
transfer it is. (in, io, out).12. There is a maximum of 3 parameters of the same type and the
same transfer type in one line.13. Run variables in for loops are not manipulated within the loop.14. At crucial program locations, the status of the program execution
is described.15. Each variable used by a function is passed on as a parameter. No
global variables are manipulated.16. Each parameter not manipulated by the function is passed as a
value parameter.17. Each function is understood to be a function in the mathematical
sense. Each parameter is a value parameter. Only arrays and structures are the exception.
18. Value parameters are not to be misused as local variables.19. Each parameter is used according to its purpose. Input variables
are read exclusively. Output variables are only written. In/out variables are read in one location in the function and also only written in one location.
20. A monospace font (Courier New, or similar) is to be used for better readability.
SITRAIN Training forAutomation and Industrial Solutions
ST-SERV2Functions and Function Blocks (1)Page 27
Application for Programming with STL / LAD / FBD
To 11. Even physical inputs are input parameters and are therefore not written. Equally, PLC outputs are not used for reading.
To 12. Each parameter is in its own line, if programming is not done ina source.
To 13. The run variables of the LOOP are not manipulated in the loop body.
To 15. Bit memories are global variables, just as inputs and outputs are therefore not manipulated in a function (FC) or in a function block (FB)
To 18. Input parameters of FB or FC are not to be misused as local variables
Requirements for STEP 7