Programming a certain industrial process using a PLC can be very simple and easy to achieve provided that you are able to use the many tools available within the PLC, these tools are there to help you reach your programming goals easily and fast and also help you write an easy to read, follow and debug code.
One of these many tools in a PLC is the Function blocks or FCs. In this article we will get to know the basics of function blocks, what are they, when to use them, and how to use them.
- Simple process.
- More complicated process.
- What is a Function (FC)?
- How to create and use an FC?
- Program simulation.
Let’s consider a simple industrial process where you have a conveyor belt M1 that runs to transfer a product (P1) to the end of the line. The conveyor will run when a start S1 signal is available after a presence sensor B1 detects the product on the Belt.
The conveyor will start running and continue to run until the product is transferred to the end of the line and a detection sensor B2 detects the product, then the belt will stop. See picture 1.
Coding this process in your PLC will be fairly simple and easy, considering you have few inputs and outputs in this logic.
When coding this logic in Siemens TIA Portal, it will be as follows:
- Create your project.
- Configure your PLC (in our example we used CPU 1512C-1 PN).
- Define your input/output tags: see picture 2.
- Start push button S1 %I10.0
- Detection sensor B1 %I10.1
- Detection sensor B2 %I10.2
- Conveyor Motor M1 %Q4.0
4. Open your main OB1 and write your code. See picture 3.
5. Compile and run your logic.
As you can see from picture 3, the logic of this process is very simple and it works as follows:
When a product is at the start of the belt and the start Push button is pressed the conveyor will run and it will keep running until the product is detected at the end of the line.
More Complicated Process
Now, imagine your production line has 50 conveyor belts all of them need to be controlled in the same manner as conveyor M1. One approach to achieve this will be by repeating steps 3 through 5 fifty times. This is not wrong, but now you have to write the same logic 50 times, and even if you just copied network 1 in picture 3 and paste it fifty times, you still have to redefine and reassign the new tags to the new networks.
Another hustle you might face is when you need to add a new parameter for your control, for example, you need to add a stop push button in your logic to stop the conveyor belt at any time the button is pressed. That means you will now define the new input signal and you will have to write it fifty times for your fifty networks, See picture 4.
You see, you will have to make this change in all fifty networks of your logic. And if you forget one, your code will not work as desired and most likely it will not be something that your compiler can detect. So programming your logic this way has a lot of disadvantages.
The Best approach is to use Function Blocks or FCs.
What is a Function Block (FC)?
A function block or FC is simply a block that contains a specific logic made by a programmer, this logic or FC will be executed whenever it is called.
Functions can be used, for example, for the following purposes:
- To return function values to the calling block, e.g. for mathematical functions.
- To execute technological functions, e.g. individual controls using bit logic operations.
You have been using functions all along, maybe you haven’t noticed, but some of the basic instructions you usually use in your codes are actually function blocks, and each time you use this instruction you just call the FC and assign your parameters to it.
Examples of these functions are mathematical instructions like ADD & MOVE instruction. See picture 5.
How to Create and Use an FC?
Now, back to our fifty conveyor belt process, how can we apply the FC concept to our logic?
The simple concept is that you will create a function block that has the logic of operation of the conveyor belt created inside, and each time to need to run a certain conveyor belt you will just call the FC and assign the parameter of this conveyor.
For example, if I want to run the conveyor belt 20 in my process, I will call this function and give it the parameters of the conveyor belt 20. Same if I want to run belt 46 or any other conveyor.
That means I will create the logic only one time. And reuse it whenever I need to. It also means, if at any point I decided to add something to my logic, I will only make that edit in the main FC block, that change will automatically be included each time you call the function.
Functions in PLC Programming
To create an FC Block, we do the following Steps.
In Siemens TIA Portal, Create a function block, by pressing the add new block icon, see picture 6.
Create the conveyor belt logic as you did before, but don’t assign specific IOs for that logic, instead define IOs inside the function block interface, so it can be reused again. See picture 7.
You now finished coding your function; you can call this function anytime you want to execute that logic. See picture 8.
Notice, that each time you call the function, it will ask you to assign the inputs/outputs parameters of the function. That way you can use the same logic for different conveyors.
If for example, I need to operate conveyors 1 and 15 I will call the function twice and give each call the parameters of a certain conveyor. See picture 9.
Now, imagine you need to edit your logic and add some extra functionality, for example, you want to add an output that will be ON whenever the conveyor is running, and you will use this output for an indication lamp to notify the operators that this conveyor is now running.
Using the concept of FCs, you will just have to edit your logic inside the function and it will be implied whenever you use your function. See picture 10.
Now, each time you call the function it will ask for the indication lamp output tag for each call. See picture 11.
We will now, simulate our program to see how a function works. Follow the next steps:
Compile your PLC code and start a new simulation.
At first, you see the Function is called twice, for conveyors 1 and 15 see picture 12.
Now, try to run conveyor 1 by activating S1 and B1, see picture 13.
Notice, how only belt 1 is running, even though we have two calls for the same function, but conveyor 15 is not running as its conditions are not met yet.
Now, try to run conveyor 15, and notice that its operation is completely separate from the conveyor 1 process, even though it is the same function. See picture 14.
Did you notice, how after a while conveyor 1 stopped as the B2 signal is now true? While conveyor 15 still running. That is how a function block in a plc can be created and used.
Using function blocks or FCs in your logic will optimize your code and make it clean and easy to understand. It will also give you the advantage of reusing your code as many times as you want in one program which will reduce a lot of coding and editing time and also will reduce errors in your program.
If you liked this article, then please subscribe to our YouTube Channel for PLC and SCADA video tutorials.
You can also follow us on Facebook and Twitter to receive daily updates.
- How to use JUMP Instruction
- Program to Count Running Hours
- Water Level Control Logic
- Tank Level Detection Switches
- Industrial Automation Systems
1 thought on “What are Functions in PLC Programming? (FCs)”
Thanks for the precious knoledge your giving us