brands · South Africa
CODESYS PLC training — IEC 61131-3 across vendors
CODESYS PLC training for South Africa. Practical IEC 61131-3 programming on Wago, Beckhoff, Eaton and Schneider hardware with a free browser simulator.
CODESYS is the controller brand that is not a controller brand. It is an IDE — an integrated development environment — and a runtime, written by a German software house, sold to and OEM'd by a long list of hardware vendors who do not write their own programming software because writing a serious IEC 61131-3 IDE costs more than building the hardware. If you are starting CODESYS PLC training in 2026 and you want to know which hardware actually runs the runtime, what the IDE looks like in 2026 versus what the older guides describe, and where the CODESYS angle fits into a South African integrator career, this is the page. We work with Wago controllers in building automation, Beckhoff controllers on motion-heavy machines, Eaton XC-series in a few rural water panels, and Schneider M241 / M251 in a handful of OEM skids — all of which speak CODESYS or a CODESYS-derived runtime. We are not a CODESYS-authorised training partner. We are an independent simulator and curriculum that thinks the "learn CODESYS once, program five vendors" angle is the most under-marketed story in PLC training and that the official courseware does a poor job of selling it.
Try the simulator →CODESYS is a runtime, not a vendor
The thing that catches new learners off guard is the basic positioning. CODESYS GmbH (the German software house formerly known as 3S-Smart Software Solutions, now CODESYS Group after the renaming a few years back) does not sell a single controller. They sell two things: the CODESYS Development System, which is the IDE you install on a Windows engineering laptop, and the CODESYS Control runtime, which they license to hardware vendors who embed it in their own controllers. The hardware brand on the front of the cabinet is one company. The software you program it with is a second company. The runtime executing your code on the CPU is a third licensing relationship under the bonnet. This is unusual in the PLC world. Siemens writes TIA Portal and the S7 firmware in-house. Rockwell writes Studio 5000 and the ControlLogix firmware in-house. Mitsubishi writes GX Works3 and the iQ-R / FX firmware in-house. CODESYS broke the vertical and built a horizontal layer instead.
The practical implication is the headline of this page. Learn CODESYS once, program five vendors. The vendors that ship CODESYS-based runtimes are a long list — Wago (the 750 and PFC200 and Compact Controller 100 lines), Beckhoff (TwinCAT, which is a CODESYS-derived runtime that has since diverged — more on that below), Eaton (XC100 / XC200 / XC300 and the older easyControl), Schneider Electric (Modicon M241, M251, M258, M262 and the older Twido replacements), Festo (CPX-E and the CECC line), ABB (the AC500 family), Bosch Rexroth (some of the IndraLogic line), Wieland (the samos PRO safety controllers), and a long tail of smaller OEMs who license the runtime for their own hardware. The exact list shifts as licence deals are signed and broken, and the most accurate current view is the partner page on the official site. If you are a self-funded learner trying to decide which brand to put time into and you find the CODESYS option, it is the closest thing in the industry to a "buy one, get five free" shortcut on the IDE side of the learning curve.
Where CODESYS shows up in SA
The South African install base is concentrated in three areas, and almost none of them are the heavy-process side of the country.
Building automation is the largest cluster. Wago 750-series and PFC200 controllers run a large amount of HVAC plant-room sequencing, lighting control, and energy-management work in commercial blocks across Sandton, Rosebank, Cape Town CBD, the V&A precinct, and the larger shopping-centre developments along the N1 corridor. Wago has been the quiet default in SA building automation for fifteen years, and the panel guys who specialise in BMS work install Wago by default unless the consulting engineer has written a specific spec for a different brand. The Wago install base teaches you a particular flavour of CODESYS — heavy use of the BACnet stack, Modbus TCP to chiller controllers and VSDs, and a strong emphasis on data-logging and trend recording over high-speed motion.
Specialist motion is the second cluster, mostly Beckhoff. TwinCAT runs on real-time Windows kernels and is the platform of choice on the few SA machines that need genuinely fast motion — printing presses, high-speed packaging lines, the occasional CNC retrofit, and a small number of test rigs in research labs. The Beckhoff footprint in SA is small but technically strong, and the integrators who specialise in it tend to sit at the top of the pay scale.
Low-cost OEM machines and small water-utility panels are the third cluster. Eaton XC-series and Schneider M241 turn up on imported machinery — small extrusion lines, benchtop test rigs, water-booster panels in commercial buildings, and a scatter of irrigation controllers on commercial farms in the Western Cape. The CODESYS angle on these jobs is mostly accidental: the OEM picked the controller for price, the runtime happens to be CODESYS, and the SA integrator who inherits the support contract finds themselves needing CODESYS skills they did not plan on acquiring.
The CODESYS IDE
The CODESYS Development System is a free download. No licence, no nag screen, no online activation, no per-seat fee. You go to store.codesys.com — yes, "store", though most of the IDE is free — register an account, download the installer, and it runs. This is the second under-marketed fact about the CODESYS world. Siemens TIA Portal Professional is around USD 4,000 a seat. Rockwell Studio 5000 is around USD 2,500 a seat for the equivalent tier. Mitsubishi GX Works3 is around USD 4,500. The CODESYS Development System is zero. The vendors who ship CODESYS-based hardware recoup the IDE cost in the controller price, and that pricing model is one reason the brand has spread the way it has.
The IDE supports the full IEC 61131-3 language family — ladder diagram (LD), function block diagram (FBD), instruction list (IL, though deprecated in the newer IEC editions and being phased out), structured text (ST), sequential function chart (SFC), and continuous function chart (CFC, which is CODESYS's own graphical language for free-form function-block wiring outside the strict SFC step-and-transition model). The current major version is V3.5, which has been the main line for years and continues to receive service-pack updates — the SP releases (SP19, SP20, SP21 at the time of writing) are the minor version stamps you will see in real-world projects. CODESYS V4 is the next-generation rewrite that has been on the public roadmap for a while; it is best to treat V3.5 as the production version and to read V4 announcements with the usual skepticism reserved for any large IDE rewrite. Most of the SA install base will be on V3.5 SP-something for years to come.
The IDE also includes a project-tree view, a symbol manager, a library manager (with package-manager-style installation of motion libraries, drive function blocks, BACnet stacks, and so on), a network-configuration view for fieldbus topology, and a built-in simulator we will return to in a moment.
Languages and project structure
The unit of code in CODESYS is the POU — Program Organization Unit. A POU is one of three things: a PRG (program, the runnable unit), an FB (function block, instanced state with persistent local variables across calls), or a FUN (function, stateless return-a-value-from-inputs). The conventional entry point is a PRG called MAIN, which lives in the Application node of the project tree and gets called by a task. Tasks are configured separately in the Task Configuration view: you create a task (cyclic at 10 ms, cyclic at 100 ms, freewheeling, event-triggered) and you assign one or more PRGs to it. The IEC 61131-3 task model is the foundation here, and the standard itself is the cross-vendor reference: iec.ch/standards/iec-61131-3.
Variables sit in three places. Local variables inside a POU are declared in the variable section at the top of the POU body and are scoped to that POU only. Global variables sit in a Global Variable List (GVL) — a separate object in the project tree, with a name like GVL_Conveyor or GVL_Network, holding variables visible across the application. Persistent variables (declared VAR PERSISTENT or VAR RETAIN PERSISTENT) survive a power cycle and a download depending on the modifier. The discipline of using GVLs sparingly — most variables should be local to a POU or member-of an FB instance — is the part of CODESYS style that beginners get wrong. If your project has one giant GVL_Everything with three hundred globals, you are writing 1990s-style spaghetti, not modern IEC 61131-3.
Function blocks are the workhorse. An FB is a class with state — you declare an FB once, and you instance it multiple times with myMotor1 : FB_Motor; in some other POU, and each instance carries its own copy of the local variables across calls. A function (FUN) has no instance and no state; it is result := FUN_Add(3, 4); and the result is computed from the inputs every call. The mental model maps directly to a Siemens FB versus FC, and to a Rockwell AOI versus a routine — same idea, different vendor wrappers.
CODESYS Control Win — the simulator
This is the part of the story that makes CODESYS special for self-funded learners. CODESYS Control Win is a Windows runtime that ships with the IDE and runs the actual CODESYS runtime executable on your engineering laptop. It is not a simulated CPU in the lightweight sense — it is the real runtime, running on Windows instead of on embedded hardware. You can connect the IDE to it as if it were a real controller, download a project, run it, single-step, watch variables, force I/O, and exercise pretty much the entire IDE workflow against a real runtime on your own laptop. This is the closest thing to a free industrial runtime that exists in the PLC world without buying hardware.
There are two adjacent products worth knowing. CODESYS Control RTE is the real-time variant — it runs on a Windows machine with a real-time kernel extension, gives you deterministic scan-time behaviour, and is the basis for soft-PLC deployments where the controller is a hardened industrial PC rather than a brick-style controller. CODESYS Control SoftPLC is the Linux-flavour runtime that runs on standard Linux distributions and on the Raspberry Pi (the Pi runtime is free for non-commercial use, paid for commercial). These three together — Control Win, Control RTE, Control SoftPLC — give you the option of running CODESYS as a free local simulator, a soft-PLC on a Windows industrial PC, or a Linux-based controller on commodity hardware, without ever touching vendor-branded brick controllers.
For a learner, the practical sequence is: install the CODESYS Development System on a personal laptop, install Control Win at the same time (it is part of the installer bundle), build small projects against the Control Win runtime, and treat that combination as your free local PLC. The barrier between you and a working CODESYS environment is a download and an account registration, nothing else.
Where our browser simulator fits
The CODESYS Control Win simulator is excellent and we cannot match it on completeness. What we offer is a different and complementary thing.
Our simulator runs in a browser tab. No installation, no Windows machine, no admin rights — any laptop or Chromebook with a current Chrome or Firefox is enough. The scan engine matches IEC 61131-3 semantics: rung-by-rung evaluation in ladder, instance-data persistence on function block calls, deterministic timer behaviour with TON / TOF / TP function blocks, and the same race conditions you would see on a real CODESYS runtime when set and reset rungs fight on the same scan. The languages our simulator focuses on are LD and ST — the two you will spend ninety percent of your CODESYS time in — and the tag-based addressing model maps directly to CODESYS variable declarations.
What you build in our simulator transfers directly to CODESYS because IEC 61131-3 semantics are the foundation of both. The TON behaviour is the same. The sealed-in start-stop pattern is the same. The SR latch is the same. The function-block instance pattern is the same. When you eventually open the CODESYS Development System for the first time, you are not learning the language — you are learning the IDE wrapper around a language you already speak. That is a much smaller mountain to climb. Our wiring track and sensor school cover the field-side of a Wago 750 input card, an Eaton XC analogue channel, and a Beckhoff EL-series terminal, with engineering-unit scaling that maps directly to the CODESYS function-block input parameters you will set in real projects.
The honest split is this. Use our browser simulator to build IEC 61131-3 reflexes and pattern fluency on any laptop, anywhere, in five-minute increments between client visits. Then install CODESYS Development System and Control Win on a Windows machine and build the brand-specific layer — the Wago BACnet stack, the Beckhoff EtherCAT motion FBs, the Schneider M2x1-specific function libraries — against the real runtime. The two are different rungs of the same ladder.
TwinCAT note
A point of professional honesty. Beckhoff's TwinCAT is often described as "CODESYS-based" in entry-level guides, and that description is technically correct but practically misleading. TwinCAT 2 was indeed built on a CODESYS V2 runtime under licence. TwinCAT 3 is a separate product that diverged from the CODESYS codebase years ago — it runs as a Visual Studio shell extension (TwinCAT 3 is a VS plug-in, which catches new users by surprise), it supports C++ for real-time tasks alongside the IEC 61131-3 languages, and the runtime is a Beckhoff-developed real-time kernel extension on Windows rather than a CODESYS runtime. Beckhoff engineers will correct you politely but firmly if you describe TwinCAT 3 as "CODESYS". They are not wrong.
The practical view. If you learn CODESYS Development System and you sit in front of TwinCAT 3 for the first time, the IEC 61131-3 language semantics will transfer one-for-one. The IDE wrapping will not — TwinCAT 3 is a Visual Studio experience, the project structure is different, the task configuration UI is different, and the motion library naming is Beckhoff-specific. Treat TwinCAT 3 as a separate but adjacent skill, with maybe sixty percent of your CODESYS knowledge transferring directly and forty percent needing a fresh pass on the IDE. That is honest and accurate, and it is a better basis for career planning than the "CODESYS does TwinCAT for free" line some YouTube channels run with.
What we don't claim
This page is going to be honest about what we are and aren't. We are not a CODESYS-authorised training partner. CODESYS GmbH (formerly 3S-Smart Software Solutions) runs an official certification programme through their own training centres in Germany and through licensed partners in selected countries — we are not in that programme and we do not issue CODESYS-equivalent certificates. We are not SAQA-registered and we are not nationally accredited. We are also not MerSETA-accredited. We have not pursued QCTO accreditation either. Our completion certificates are course-level only and have no regulatory standing — not in South Africa and not internationally.
What we are: an independent simulator and curriculum that helps you build IEC 61131-3 reflexes before you spend time downloading the CODESYS Development System and staring at an empty MAIN PRG. The vendor IDE, the Control Win runtime, and any official CODESYS GmbH training are separate from us. We are honest brokers. If you specifically need a SETA-aligned learnership for B-BBEE skills development reasons, we are not the right product. If you want pattern fluency before you install the IDE on a Sunday afternoon and start writing real Wago or Eaton or Schneider code, we are exactly the right product.
How to start
Five steps. Sandbox first — open our browser simulator, drag a contact and a coil, write your name across the screen in rungs. Then a start-stop with the IEC 61131-3 mental model — write the classic three-wire control with a sealed-in start, a stop button and an output coil, and consciously frame it as a future CODESYS PRG with local variables bStart, bStop, bRun and an output assignment. Then a sealed-in motor with overload — add a thermal overload contact and learn what a "field check" interlock pattern looks like before you write one against a real Wago 750 input. Then a small sequencer using SFC — five-step bottle-filling cycle, with timer behaviour and step-transition logic that maps directly to SFC steps in the CODESYS Development System. Then a function-block walkthrough — wrap the sealed-in motor logic in a reusable FB with bStart, bStop, bOL, bRun as inputs and outputs, instance it twice for two motors, and feel for the first time why FB-based design beats copy-paste rungs on real machines.
Free tier first — no credit card. Spend a weekend on the sandbox and the first few lessons. If the format works, move to Basic at $12 a month. Once the patterns are solid, download the CODESYS Development System from codesys.com, install Control Win alongside it, and rebuild the same five exercises against the real runtime. Most learners reach that handover point in three to four weeks of part-time practice.
Try the simulator →