With the recent release of TIA Portal V14 and V14 SP1, several new additions have been added to increase the efficiency and organization of code written in SCL (structured control language).
Recently, I have been using many of these new features while writing code in SCL and wanted to share them with you. We will start by defining SCL and its uses in programming, then we will compare ladder to SCL, next we will discuss inline SCL networks, Regions and Region Synchronization, and will finish by reviewing the streamlined Surround With...
What is SCL and When Should I Program Using it?
SCL stands for Structured Control Language and is a text-based form of programming Siemens PLCs.
SCL opens up several new constructs that are unavailable while programming in conventional ladder logic, including the FOR and WHILE loops as well as the CASE statement. These are particularly useful when dealing with large amounts of data in an array form. Using SCL also increases the readability of any sort of arithmetic calculation.
What Does SCL Look Like?
Below is an example of code written in both ladder and SCL to accomplish the same result.
Ladder Logic
I have created an array of five integers and I would like to check and see if any indexes of my array are equal to three. In order to get this information in a single scan of my logic, in Ladder, I would need to check each index individually to determine if any of them are equal to 3.
For a small array, writing this code in ladder logic doesn’t seem so bad. However, imagine I had an array of a hundred or even a thousand integers and I needed to check all them.
SCL
Examining SCL logic, suddenly, the ladder logic solution seems inefficient in comparison. Using a combination of a FOR loop, IF statement and an EXIT, I can easily check an array of any size in a single scan.
If my application required, I could even nest FOR loops within each other in order to check or set values of a UDT which contains an array of variables.
Inline SCL Networks
In TIA Portal V14, there is now the ability to create function blocks and function calls that contain code written in both LAD and SCL. An SCL network can easily be inserted into a function without the need to create a separate SCL function.
For example, it was previously necessary to use LAD math operations or a separate SCL function to string together a complex calculation that can now easily be written in an SCL network.
Regions
- Regions are a new SCL organizational tool that provides a similar level of organization as a network does in a LAD function.
- Regions are collapsible and easy to navigate through the sidebar.
- Regions can be nested, if needed, to provide an even greater level of organization.
- Keep in mind that regions cannot cross logical boundaries. For example, if a region begins inside one case of a case statement, it must also end in the same case. Failure to do so will result in a compiler error.
- Regions make lines of comments that serve only as a separator for a new section of code unnecessary.
BEFORE
AFTER
Synchronizing Regions
- The sidebar navigation that shows the regions in an SCL function can also be set to be synchronized with the code. This means that when expanding or contracting a region in the sidebar, the body of code will reflect the change.
- With synchronization turned on, large bodies of SCL code can easily be minimized or maximized without heavy use of the scroll wheel to find where a region starts.
- Keep in mind that logical statements like IF...THEN... can also be expanded or contracted but are not synchronized with the region they are within.
SYNCRONIZED, COLLAPSED
SYNCRONIZED, ALL EXPANDED (NESTED REGIONS)
Surround With
As of V14 SP1, the ability to add logical statements, regions, and comments to existing code has been greatly streamlined with the addition of the “Surround with…” option.
Simply highlight a body of code, right-click it and choose what you would like to surround it with. This is especially helpful for quickly adding regions to code written previously to V14 or to quickly comment out chunks of code while debugging.
Hopefully, some of these tips will allow you to create more efficient PLC code and increase your development speed at the same time.
If you are in need of DMC's expertise, check out our Siemens PLC Programming Services or Contact Us to get started on a project today.