Howdy mates, after finishing that fundamental a part of ladder logic programming, allow us to in the present day undergo one subject which isn’t important to know to finish a PLC ladder program however it can be crucial t have our code readable program and reusable items of code. That would occur by utilizing what so-called a subroutine. So what’s a subroutine? Nicely, it’s a piece of code that features a few rungs to carry out particular duties. that piece of code could be reused quite a few instances by way of this system when we have to name it for performing that process. That subroutine permits us to construction our code like constructing blocks in order that this system will likely be readable very simple and in addition reusable later in different initiatives. The concept of dividing this system into routines to use the divide and conquer method may be very essential to ease the coding of your program particularly on the subject of the large-scale program which is the frequent trigger in the very best trade apply. Every routine achieves one particular process and they’re built-in to perform the entire mission. By programming in that means, the code is extra readable and reusable that means that one routine may very well be referred to as many instances as a substitute of preserving repeating the strains of code or ladder rungs in every single place we’d like it. On this tutorial, we’re going to be very acquainted with subroutine-based programming together with other ways to name a subroutine and the directions which might be used for dealing with subroutines. And sure we’re going to apply examples that program that subroutines in ladder logic so let’s get began.
Forms of routines
Routines could be categorised into two primary sorts: the calling routines that decision subroutines. And routines which might be being referred to as. Determine 1 exhibits the very typical situation of calling one subroutine. It exhibits the situation when the calling routine reaches the calling instruction when the subroutine is being referred to as with the worth of the parameter handed by the calling routine after which the subroutine has a return instruction to take the execution to the next instruction of the calling instruction. So you possibly can think about the calling instruction is within the calling routine which is usually the primary program and the referred to as subroutine is accountable to return the management or the execution level to the instruction subsequent to the calling instruction.
Passing parameters
There are two primary methods for passing parameters between the calling routine and the subroutine that’s being referred to as. The 2 methods are calling by worth and calling by reference. Within the calling by worth technique, the calling routine passes a duplicate of the unique parameters so the referred to as subroutine works on a duplicate. Subsequently, there aren’t any modifications may occur to the unique parameters within the calling routine. In distinction, within the second technique which is known as name by reference, the parameters are shareable between the calling routine and the subroutine that’s being referred to as. So, modifications occurred to the parameters however the referred to as subroutine mirrored on the unique ones. Determine 2 depicts a case situation of the 2 forms of passing parameters. In that very instance, the primary routine calls subroutine “Call_Val” to use an increment of operand “Op1” passing the parameter Op1 utilizing the strategy “calling by worth” whereas it calls “Call_ref” to do the identical course of however in that case, it passes parameter Op1 by utilizing the strategy of “calling by reference”. As you possibly can see, within the case it makes use of the “calling by worth” technique, it doesn’t change the worth of parameter Op1 as a result of it makes use of a duplicate of the parameter and increments that replicate not the unique parameters. Then again, when it has used the opposite technique, “calling by reference”, to increment the identical parameter Op1, it does change the unique operand as a result of it makes use of a reference that factors to the unique parameter tackle. In one other phrase, calling a subroutine based mostly on a name by worth works on a duplicate of the parameters and doesn’t change the unique variables whereas calling by reference works on the initially handed parameters so it does change the parameters. The benefit of calling by reference is saving the reminiscence because it doesn’t want an occasion of the variables or a separate knowledge block. Then again, calling by worth must have a separate knowledge block to incorporate that replicate of passing parameters. Nevertheless, it may be referred to as many instances with a separate copy with none conflicts.
Program sequence:
Determine 3 exhibits this system sequence when utilizing multilevel branching utilizing subroutines. For instance, the primary module retains finishing up the community net1, and net2, and it calls the subroutine “Sub x” in-network net3. Then subroutine “sub x ” begins executing from community net1 to net3 at which, it calls subroutine “Sub y”. Then subroutine “Sub y” carries out ranging from the community “web 1”, and community “web 2” calls subroutine “Sub a”. You possibly can discover subroutine “Sub a” returns to the calling routine “Sub y” which returns to subroutine to its calling routine “Sub x” which returns to its calling routine which is the primary routine. So, you possibly can discover what number of ranges of subroutine calls? Sure, they’re quite a bit. However, it is suggested to be as a lot as wanted for 2 causes. First, many branching causes some complications in processing when it comes to reminiscence and time. Reminiscence is represented within the knowledge block that’s wanted for every subroutine each single branching or subroutine calling and time is represented in further directions of calling and returning and stacking knowledge associated to the referred to as routine and the returning addresses.
Subroutine directions
There are two primary directions used for calling a subroutine and returning to the calling routine. Determine 4 exhibits the community rung that calls a subroutine referred to as “Auto Mode”. It’ll name the subroutine at any time when the “System OK” reminiscence contact MB180 is true. So I hope you possibly can really feel now how your program is extra organized and readable whenever you undergo the primary program and simply can catch what this system does by studying the names of the referred to as subroutines. Precisely, having a significant title for subroutines is essential to present the benefit of the readability of your program. So, my mates please be sure to selected a purposeful title on your subroutines.
Additionally fig. 5 exhibits the community rung that represents the returning command to the calling routine. It exhibits when the alarm is true represented by reminiscence contact MB32 and pump standing “Cease Pump” represented by reminiscence bit64, the return command will likely be enabled for returning the execution level to the community simply subsequent to the calling community within the calling program. For instance, if the calling community is at rung quantity 3, then the return command within the subroutine will return the execution at rung quantity 4 within the calling routine. By the best way, normally of ladder logic programming, you may not discover a return instruction as a result of it’s inherently carried out by finishing the referred to as subroutine however we simply embody it right here as in fig. 5 to indicate up how the method of calling a subroutine and returning to the calling routine.
Determine 6 depicts the entire picture of the situation of calling one subroutine. In rung 3, a subroutine referred to as “Auto mode” is being referred to as by having the reminiscence contact MB18 true. Then after that subroutine, “Auto mode” is accomplished it returns to the calling routine on the subsequent rung to the calling rung which is on this case instance rung quantity 4. As we acknowledged earlier, you possibly can discover that there are actually returning directions however routinely, the referred to as subroutine returns to the calling routine on the instruction simply subsequent to the calling instruction.
Working towards Subroutine in ladder logic
My mates, allow us to go to our lab as standard and do some hands-on practising subroutine utilizing the simulator. However earlier than going additional in apply subroutine we wish to elaborate on the several types of subroutines in Siemens programming. Desk 1 compares the subroutine implementation based mostly on operate and performance block. It exhibits that subroutine could be applied by both operate FC or operate block FB. And each methods can use enter, output, and in-out parameters.
FC doesn’t use static knowledge or knowledge block (DB) whereas FB makes use of DB and passing parameters by making an occasion of the variables which is looking by worth. FC passes the parameter by pointing to the tackle of the variable which calling by reference method.
Desk 1: Comparability between FC and FB subroutine in Siemens
Attribute
|
FC
|
FB
|
Can be utilized as a subroutine
|
Sure
|
Sure
|
Can use parameters for Inputs, Outputs, and Enter
|
Sure
|
Sure
|
Can use non permanent variables
|
Sure
|
Sure
|
Can use static variables (with remanence)
|
No
|
Sure
|
Want an auxiliary (occasion) DB for every name
|
No
|
Sure
|
Parameters are handed because the tackle for inside use
|
Sure
|
No
|
Parameters are copied to/from a DB (occasion) for inside use
|
No
|
Sure
|
Can name internally a FB or FC
|
Sure
|
Sure
|
May be referred to as for a FB or FC
|
Sure
|
Sure
|
Can name a FB as multi-instance
|
No
|
Sure
|
May be referred to as with out filling all parameters
|
No
|
Sure
|
Subroutine in ladder logic programming
Once more, there are two methods of calling a subroutine in Siemens ladder programming as proven in fig. 7. We’ve developed a pattern ladder program that calls a easy subroutine so as to add two enter operands. Within the first rung, it makes use of operate “FC1” referred to as “fun_A” and within the second rung, it makes use of a operate block FB1 referred to as “FB_A” as you possibly can discover operate block makes use of a knowledge block occasion for passing a duplicate of the operands whereas operate FC doesn’t use a knowledge block and makes use of the tackle of the enter and output parameters.
Determine 8 exhibits the operate block FB_A. the operate block has two enter operands that are “op1” and ‘’op2” and one output operand which is “sum”.
As a result of the operate block passes parameters as copies or cases, fig. 9 exhibits the associated knowledge block DB1 which accommodates the parameters of the operate block. It’s composed of many buildings for holding enter, output, enter, and static knowledge as effectively.
Then again, the operate makes use of the addresses of the parameters. Subsequently, it doesn’t want a knowledge block as proven in fig. 10. It makes use of many buildings to move enter, output, enter, non permanent, and fixed knowledge sorts.
Simulation work
Now let’s examine the work with the simulator. Determine 11 exhibits the outcomes of simulating the calling subroutine based mostly on operate FC_A that provides two static operands exhibiting the calling path from the primary group block to the operate.
Then again, calling a subroutine based mostly on a operate block makes use of an occasion of parameters in a knowledge block as proven in fig. 12. This implies one other occasion of information is used each time we referred to as that subroutine whereas utilizing the operate it’s referencing the identical variables on the similar addresses.
What’s subsequent
Thanks guys for following me as much as this very level of our tutorial and being very assured by understanding the subroutine you now are all set to put in writing an organized program and readable and reusable piece of code utilizing ladder logic programming. the subsequent time we’re going to discuss probably the most vital matters in PLC programming which is grasp reset management exhibiting what’s it about and its significance for PLC and management mission and for certain will apply with our simulator lab. So be prepared and let’s meet within the subsequent tutorial to get pleasure from studying and apply the PLC ladder programming collection.