TwinCAT3

Dear existing & future PLC software developers, I have published part 15 of my free PLC programming using TwinCAT 3 tutorial.

The Automation Device Specification (ADS) is Beckhoffs middleware to communicate with Beckhoff PLCs. It’s used for all kinds of use cases, as software deployment, reading/writing of variables and for internal communication of software modules. In this part we’ll go through the theory and also write some C# software to communicate with a PLC. We’ll also do a simple C++ program running under Linux that talks to the PLC!

Read more

Dear existing & future PLC software developers, I have published part 14 of my free PLC programming using TwinCAT 3 tutorial.

After working for a few months and years, you’ll will be in a situation where you have to manage several PLCs and machines, and they will all be running different versions of TwinCAT. But we’ve so far only installed one version of TwinCAT on our development machine. What if we want to work with a machine that runs an older or newer version of TwinCAT? This part will go through how this is done.

Read more

Dear existing & future PLC software developers, I have published part 13 of my free PLC programming using TwinCAT 3 tutorial.

Proper version control is traditionally not done in the world of automation, which is a big shame. The question should not be whether version control should be used or not. The question should instead be what version control system should be used. In this part we will get an introduction to version control in general, and Git in particular. We will start with an introduction to some basic concepts of version control and then show you how you can put your automation projects under version control using Git, using free and open-source tools that are traditionally used in the software industry. You’ll learn how to do proper 100% free and Git-based version control using TwinCAT 3! Let’s start demanding more from our automation vendors and demand that the tooling for version control should be included by default, and get out of the dark ages!

Read more

Dear existing & future PLC software developers, I have published part 12 of my free PLC programming using TwinCAT 3 tutorial.

When installing the TwinCAT development environment and runtime you get access the core functionality, but sometimes you might want to extend this with additional functionality as for example adding an SQL database connection. In this chapter we will investigate some TwinCAT functions that can be added.

Read more

Dear existing & future PLC software developers, I have published part 11 of my free PLC programming using TwinCAT 3 tutorial.

When you start to develop PLC software and you’ve worked for a few projects, you will come to a point where you will notice that certain parts of the software, like function blocks, will be copied between the projects. You’ll either do it by simple rewriting the same functions or function blocks again, or you will simply copy and paste it from one project to another. Also, once a project gets big enough, you will want to utilize something called libraries. With this we can achieve code re-use.

Read more

If you want to write TwinCAT 3 software and run it, it’s not obvious how to get TwinCAT 3 to run on your desktop machine, be it directly on the machine or inside a virtual machine. The primary reason for this is because TwinCAT 3 is running in something called kernel space. While I was bored recently on a late afternoon, I discovered that Beckhoff had quietly added some files in the TwinCAT 3 folder in one of the newer releases of TwinCAT 3, that might change all of this.

How you may wonder? Let’s find out!

Read more

Dear existing & future PLC software developers, I have published part 10 of my free PLC programming using TwinCAT 3 tutorial.

When designing and building a control system you will eventually want the control system to actuate something, be it a relay, a motor, a pneumatic system or maybe a complete 6-axis robot. To get feedback of the actuation, sensors are needed. In this part we will cover how we communicate with the environment using inputs and outputs.

Read more

One of the things that have annoyed me ever since I started using TwinCAT is the fact that if you create an enumeration, it will automatically have a global scope. It will be accessible from all functions and function blocks. What’s even worse is that if you create a library project with an enumeration and include that library in another project, the enumeration will be visible there, too. This pollutes the namespace by creating unnecessary types. But no more.

Read more

Dear existing & future PLC software developers, I have published part 9 of my free PLC programming using TwinCAT 3 tutorial.
In this part we’ll learn how to use one of the most used Beckhoff libraries for various purposes. We’ll learn how to measure execution time of PLC code, how to use a FIFO buffer and how to combine the power of using a TwinCAT real-time program with an application running in user-space (Windows).

Read more

Dear existing & future PLC software developers, I have published part 8 of my free PLC programming using TwinCAT 3 tutorial.

As TwinCAT 3 conforms to the IEC61131-3 standard, there are certain things it has to be able to do. The Tc2_Standard library has many of the standard IEC functions such as timers and triggers, which we will look into in this part of the tutorial.

Read more