Contact and Coil | Nearly In Control



Beckhoff TwinCAT: a First Impression

Those of you who know me remember I’ve been itching to get my hands on a Beckhoff TwinCAT PLC industrial control system for a few years now, but I never found a project or customer willing to take on the risk of trying something new. Like a bunch of penguins on a cliff of ice, nobody wanted to be the first in the water.

I’ve recently had the opportunity to apply a TwinCAT PLC and HMI system to a relatively low-risk application, so I finally have something to share. Those of you who know me also know I don’t pull my punches when I talk about products, so here’s an honest review of the TwinCAT system: the good, the bad, and the ugly.



What draws you to TwinCAT is its combination of low cost with a ton of features. I can’t publish prices, but I encourage you to compare prices from Beckhoff, Allen-Bradley, Omron, and others. Beckhoff offers a similar or better feature-set, with as many or more communication options than it’s competitors, for significantly less money (it’s real-time PC control instead of dedicated hardware). On specs it can do everything, and doesn’t bend you over the table when it comes to the price.


First, Beckhoff TwinCAT PLC takes advantage of a PC CPU and memory, which means you can scale up the performance of your system for a fraction of the cost of scaling up to large PLC and PAC systems.

Secondly, if you use EtherCAT, you get to scale up your I/O sizes without as much impact on performance or price. The individual I/O slices are significantly cheaper than for other bus technologies, and the servo drives are less expensive because the bus speed is fast enough to close the loop from the PLC rather than in the device itself.

Where TwinCAT really shines is when you need to integrate it to the MES layer in your organization. Most other vendors require you to buy expensive OPC or other connection software, but Beckhoff provides a free DLL for Windows applications to communicate with the PLC over a communication protocol called ADS. (They also provide an OPC server as an add-on if you need it.)

What’s the Catch

Switching software vendors is never easy. If you’re used to your existing PLC software like RSLogix, you’ve got a bit of a learning curve ahead of you. Here are the things that down-right annoyed me about TwinCAT when I was coming from the RSLogix/PanelView realm:

  • When you do an online edit, it resets all of your forces. You have to reload your watch list to re-apply them. (Fortunately I always write perfect code the first time, so I never had to do an online change…)
  • The ladder logic editor doesn’t seem to auto-wrap (unless I’m missing a setting somewhere)
  • The HMI editor crashed a couple of times when I was modifying the HMI, and I had to restart the TwinCAT system (not the PC, just the software)
  • The English documention is lacking
  • The TwinCAT System Manager DeviceNET master configuration had a bug where it wouldn’t recognize EDS files where the Class value was stored as a 16 bit, rather than an 8 bit value. The EDS file was valid, according to EZ-EDS, but it wouldn’t read it. Changing the value to 8-bit made it recognize the parameter. This made it hard, but not impossible, to integrate an Allen-Bradley Point I/O DeviceNET node.
  • Even though the HMI will log an alarm history, there’s no alarm history control for you to view it in the HMI itself (it’s saved to a CSV file)

Here are some things that are just really different, but I’ve had no trouble adapting to:

  • You have to define all variables (tags) in a text syntax, instead of in a spreadsheet-like tag editor
  • I/O isn’t mapped directly. You define your hardware I/O and your program I/O and then you map them.
  • You don’t do online changes while you’re online with the PLC. You “log off”, then make your change, and then “log on” and tell it to upload your change. (You can do this while the machine is running.)

What’s Cool

Using a PC based controller opened up some interesting features, particularly in the HMI:

  • You can launch another application from a button click on the HMI (Excel, etc.)
  • You can configure some interesting alarm actions, like launching a program, or sending an email
  • There’s an (optional) add-in to let the PLC communicate in a limited fashion with a SQL Server
  • It runs on commodity hardware. PC hardware is cheap and you can get much larger touch screens for a lot less than the cost of an equivalent PanelView. The “fieldbus” card (EtherCAT) is under $100. Even a Beckhoff EtherCAT to DeviceNET master solution is cheaper than a straight-up DeviceNET card from another manufacturer.
  • TwinSAFE – a Safety Controller sitting right on your fieldbus for less than a stand-alone safety controller from another vendor.


I had nothing but superb support from the local Beckhoff technical support guys during this experience. They respond to emails personally usually within a couple of hours, and they have no problem taking the two hour drive to see us if we have any issues that can’t be resolved over the phone or with email. We’re not a “big” customer in any way.


I’ve just spent about 2 weeks coming up to speed on TwinCAT, having come from an AB/Omron background, with a smattering of other PC based controllers like Phoenix Contact’s Visual Logic Controller (VLC) and MultiProg (formerly PCWorx).

The ease-of-use of TwinCAT doesn’t measure up to RSLogix, but it’s comparable to Omron, and it blows products like PCWorx/MultiProg out of the water (I think I was using version 3 of PCWorx, and I know there’s a version 5 now). Most of my issues with TwinCAT are that its ladder editor just isn’t polished enough compared with RSLogix, but that’s not surprising given its roots in Germany. North America tends to favor ladder logic, where Europe seems to favor instruction list, structured text, and function block diagram. It feels like the TwinCAT ladder logic editor was neglected a bit, but it is certainly workable. Comparing the TwinCAT sequential function chart editor with the RSLogix sequential function chart editor, they were actually reasonably close. I liked that I didn’t have to position individual steps in TwinCAT – it just auto-arranged everything for me.

Price-wise, TwinCAT is significantly less expensive than any other serious player in the industrial automation equipment space, particularly when you start ramping up the amount of I/O and drives you need, and it has similar (and in some cases better) features to offer. It’s even significantly less expensive than the Phoenix Contact solution (from my memory), and given that, there’s no reason I’d ever recommend a PCWorx/MultiProg solution from Phoenix Contact. The Phoenix offering is worse and more expensive.

If you’re in a position where your facility is in the market for a new automation platform, I definitely recommend including the Beckhoff TwinCAT platform in your deliberations. It hits a really unique sweet-spot on price, flexibility, and features that nobody else seems to be able to offer right now. Now that we’re a few weeks in, we have a running machine, it looks like the project will be successful and I have no reservations about saying: if you don’t mind learning something new, give them a try.

· · ·


  • ed schultz · June 14, 2010 at 10:33 am

    Hi Scott;

    can I ask where you are located and if you are here in the the West coast area, interesting points that you bring up.

    Thanks much

  • Author comment by Scott Whitlock · June 14, 2010 at 12:09 pm

    Hi Ed. I’m in Ontario, Canada (close to New York). Thanks for reading!

  • Angel · August 28, 2010 at 5:09 pm

    Hi Scott
    First of all, thanks for the article, I think it’s great. I’m in Orkney (Scotland) and just starting with Beckhoff’s stuff comming from Siemens PLC. So far my feelings are quite good in terms of performance and prices. Our application is a tidal turbine and for this reason we are using the IP67 I/O modules. Once I finish my test bench assembly and done the first tests I’ll share with you guys all my experiences. Cheers

  • Author comment by Scott Whitlock · August 29, 2010 at 7:06 am

    @Angel: Great! We’re interested in using some IP67 stuff from Beckhoff, so I’d definitely be interested in hearing your experiences.

  • Allan Vaitses · October 13, 2010 at 10:38 am

    I’m a recent convert to the Beckhoff system, and my experience with it is very similar.

    Regarding the alarm log history, we do display it on the HMI, although I wouldn’t recommend it for large logs because it seems to stop the HMI while loading. (In general, the HMI system is a bit lacking.) Happily, the alarm system can be configured to automatically start a new log so the file size can be managed.

    The system does have some quirks, but overall it has been fantastic!

  • Author comment by Scott Whitlock · October 13, 2010 at 12:15 pm


    True. I guess it should be noted that the HMI add-in from Beckhoff is rather basic, but does the job. There are 3rd party HMI packages that can do more “heavy-lifting” if necessary (for a higher cost, of course).

  • Krish · January 6, 2011 at 4:55 am

    Is is possible to customize Beckhoff products. If Yes, What all products can be customized and what will be the increase in price for an standard product and customized product.
    1. operator panel with additional serial interface
    2. additional software function

  • Ahmed · August 27, 2011 at 6:33 am

    Hi Scott,

    I’m recently start with the Beckhoff system in our new company Interior Automation/ Dubai branch.

    We concentrate in Home Automation applications,
    1- so what you think does beckhoff have the required support for this kind of applications?

    2- What about Siemenz in comparison with Twincat and Allen-Bradley?


  • Author comment by Scott Whitlock · August 27, 2011 at 10:32 am

    @Ahmed: I think TwinCAT is a good choice if you have a very large home automation project. I prefer the more open architecture and technology of TwinCAT over more proprietary home automation systems where you have to buy everything from one vendor.

    As far as Siemens, I don’t have enough experience to make a fair comparison. I will say that it’s probably going to be the target of a lot of security exploits very soon, since all of the discussion of Siemens vulnerabilities since Stuxnet. Of course, it’s only a matter of time until other vendors are going to find lots of security vulnerabilities discovered in their products. No matter what you install, you need to protect it from intrusion.

    Compared with Allen-Bradley, I would recommend TwinCAT for a home automation system, unless you’re already very familiar with the Allen-Bradley hardware and software and you don’t want to tackle the TwinCAT learning curve.

  • Shaun · December 21, 2011 at 7:46 pm

    I have gone in the opposite direction to you. I started working with Beckhoff and have now been forced to Siemens. I have to say I am definately missing the many features of the Beckhoff. Particularly the Scope. That was absolutely brilliant for tweaking the system and wringing every last ounce of performance out of it.

  • Jovial · June 2, 2012 at 10:37 am

    Dear Scott,

    im a newbie in this automation field and in a learning stage. stated with the basics of AB and siemens and right now doing a project a with Beckhoff CX controllers. I would appreciate if you could help me about the communication between CX and CP. It will be helpfull for me if you could explain about ADS communication. Is there any other way for communication between CP and CX????

    Thanks and Regards,
    Jovial K J

  • Jovial · June 2, 2012 at 10:41 am

    Can you explain the use of persistent variables in a simple form????

  • Author comment by Scott Whitlock · June 2, 2012 at 3:41 pm

    @Jovial – sorry, not familiar with their CP products. I have used ADS communications quite a bit. I suggest taking a look at their Infosys, which is a free online help system. There are some good examples for ADS in there.

    Regarding persistent variables, when you define a block of variables as persistent (VAR PERSISTENT instead of VAR), they are written to retained memory (or disk) when the controller is shutting down, and reloaded when the controller starts up. Otherwise, they just fall back to their initial values on a restart. There are also “retained” variables, which keep their values after a controller reset, but not through a power outage. I never use “retained” since, if I want a value to be saved, I always want it saved.

  • Dale M · July 28, 2012 at 3:20 pm

    I have an Omron-Siemens-Allen Bradley background but started using TwinCAT about 3 years ago. I settled on the CX1020 Platform running WinCE which I use at my mfg Plant for most new automation projects and all retrofits of control systems, even motion control. I’m even using the CX1020 for simple data collection tasks. Unlike what you are doing, however, I do not use the Beckhoff HMI, I use Indusoft which resides right on the hard drive of the PLC itself and use the CX1020 DVI port to connect a ELO touchmonitor as my HMI. the Indusoft gives me full HMI/Scada capability using native TwinCAT drivers and a full connection to MsSQL…and now you know why the CX1020 is my choice for data collection from the plant floor! It is a great platform and I’ve had nothing but top notch support from Beckhoff in Minneapolis.

  • The TwinCAT 3 Review · Contact and Coil · February 16, 2013 at 12:12 pm

    […] back in 2010 I wrote about my first impression of TwinCAT 2 and later that same year I wondered if automation programmers would accept TwinCAT 3. I was lucky […]

  • Ryan Maw · February 17, 2013 at 12:22 pm

    You mention that “you have to define all variables (tags) in a text syntax, instead of in a spreadsheet-like tag editor”. Actually, you can right-click in the tag definition pane and on the popup menu you will see an option to change the view to a spreadsheet like setup. The spreadsheet editor is very limited, so I tend to use the text syntax more, but I still find uses for both.

  • Michael · December 12, 2013 at 2:25 am

    I have been using TwinCAT 3.1 for a while now and absolutely love it. I use a lot of the motion control stuff with Kollmorgen servo drives and motors, also Omron 3G3MX2 inverters with the EtherCAT communication card (the comm card is worth more than the drive funnily enough). I have nothing but praise for the system although TwinCAT 3 is still pretty much in development. Documentation is severely lacking and I have been working out how things work on my own.

    I use the TwinSAFE stuff extensively and it is also fantastic for implementing integrally safe machinery.

    The only thing missing from TwinCAT 3 is the HMI (Visualization it is called) however I write custom HMIs with .NET in C# giving me access to a myriad of extremely high end controls, data access facilities etc.
    It does mean however that it is a little harder to manage for most typical PLC programmers that I have encountered, but for our purposes, the data access to/from live databases makes it far better to do it this way anyway. For reference, we are retrieving data from a live and custom made manufacturing database with “recipes” (we don’t call them that) and also then upload data with manufactured items, then retrieve serial numbers, lot numbers etc which then is associated with the manufactured part. We also log extensive amounts of information and then verify it meets certain criteria to ensure it is within acceptable limits. Doing this in a PLC type programming language would be horrible, messy and unmanageable.

    I am in Melbourne, Australia and the Beckhoff support here is very very very good. I am in the same boat in that we are not a big company by any means (less than 20 and I am the only person who does any design, development, maintenance etc).
    My background is Electrical Engineering and also lots of database driven software engineering for enterprise applications as a subcontractor.

  • sahar · January 26, 2015 at 5:49 am

    hello Scott
    I want to execute a program when an alarm occurs by execute option, How can I do it. I also want to check a variable and when it reach it’s threshold for third time, an alarm there any option in alarm part which can help me? I don’t want to use any language for doing it and I just want to use alarm part.Is it possible?
    thank you for your attention

  • Author comment by Scott Whitlock · January 26, 2015 at 6:58 am

    @sahar – I really haven’t used Beckhoff’s Visualization/HMI package except once with TwinCAT 2 (never with TwinCAT 3). I remember trying the email function when an alarm occurred and it kind of worked, but if the network connection to the email server was down, it would freeze/crash the HMI. I never tried it again. I don’t remember there being a count option in the alarms either, but you could always use a counter in the program.

  • Anasse · April 9, 2015 at 2:00 pm

    Hi everybody,
    I start using Beckhoff CX9020 and it seems to be a good on performance, but it’s not really stable.
    I’m using TwinCat 2 and I often get “Timeout” message
    i loss the connexion, it’s very unconfortable and today the PLC crash at startup and i can’t connect
    I didn’t find how it’s possible to reset the PLC, i’m not satisfied by Beckhoff product.Wago PLC are better even if it’s electronics from beckhoff.The fact is that Wago is so simple to program with only one file *.pro rather than ten files. Webvisualisation is free of charge with wago and not with Beckhoff.I change from wago to beckhoff only to improve cycle time.But finally i think that i’m losing time.Their technical support is horrible

  • Joseph Wills · January 29, 2016 at 9:01 am

    Ansse, I sorry to hear you are having issues with the CX9020. I have 10 of them installed and they have not missed a tick. With Twincat 3 on them I have had no connection issues. They have as much power as the CX 1020 as Dale brought up earlier. I’m using them for Can test station for automotive with no problems.

  • John · September 16, 2016 at 7:24 pm

    The real power of TwinCAT is apparent when you make the leap from LL to ST. LL is inherently limited, and while you can theoretically do the same things in LL and ST, it is impractical to do so. With PC based real time control you have the horsepower to use ST everywhere. The way I think of it is: LL is for logic (simple boolean operations) and ST is for software (algorithms, structures, OOP, polymorphism, etc). It’s not a fair assessment until you also change the way you program (:

  • Author comment by Scott Whitlock · September 17, 2016 at 7:26 pm

    @John – I’m sure you’re aware, but in case other readers aren’t, that Rockwell has had a structured text editor as part of their RSLogix 5000 / Studio 5000 software for many years now, not to mention SFC, etc.

    As an experienced C# programmer I can assure you that the use cases for imperative programming (such as ST lends itself to) and functional programming (such as LD) are often quite different. The way TwinCAT 3 works you can use the OOP and polymorphism features with any of the 5 languages. The implementation is separate from the interface.

    Your audience isn’t just other programmers, but electricians and maintenance personnel. They typically don’t know what OOP and polymorphism are. When a plant is down it’s sometimes losing thousands of dollars per minute. It would be a mistake to use fancier programming methodologies where straightforward ladder logic will suffice, especially when the latter can be grokked by the first responder (typically an electrician) and the former cannot. The popularity of PLCs and ladder is due to its ease of troubleshooting in the field, not its expressiveness as a language. Unfortunately every new generation of automation programmers has to learn this the hard way. 🙁

    We need to pick the right language for the task, and one of the requirements is that an electrician can understand it. One of the things holding TwinCAT back is that Beckhoff doesn’t understand this (and thus their LD editor sucks), and Rockwell Automation certainly gets it.

Leave a Reply



Theme Design by