compare · South Africa
CODESYS vs TwinCAT vs STEP 7: Training and Platform Choice
CODESYS vs TwinCAT vs STEP 7 for South African learners: compare engineering, runtimes, simulation, licences, portability and practical platform checks.

CODESYS vs TwinCAT vs STEP 7 is a useful comparison only after you separate the engineering software from the controller runtime and the simulation environment. CODESYS and TwinCAT name wider automation platforms. STEP 7 names Siemens engineering software, including versions used within TIA Portal. These are not three interchangeable soft PLCs that you can rank by one headline scan time.
For South African learners, start with the equipment or course you need to support. For a machine builder, start with the customer specification, required interfaces, support arrangements and acceptance criteria. The best learning route and the best production architecture are related decisions, but they are not identical.
This site has a commercial connection to PLC Simulator. Its educational tools can support general programming practice, but they do not reproduce all three vendors' native engineering environments, licences or controller behaviour. The illustrations on this page are conceptual learning scenes rather than screenshots of the software being compared.
Separate engineering, runtime and simulation
An engineering environment is where you organise a project, write code, configure devices and inspect diagnostics. A runtime executes the control application on a supported target. A simulator provides a model or virtual environment for specified testing tasks. One installation may include several components, but their roles remain different.
The target might be a dedicated controller, an embedded computer or an industrial PC, depending on the product. “PC-based” does not mean that any office laptop is a suitable production controller. Hardware support, operating system, real-time configuration, interfaces and licensing must all be checked for the intended deployment.
| Question | CODESYS | TwinCAT | STEP 7 and the Siemens environment |
|---|---|---|---|
| Where do I develop? | CODESYS Development System or the relevant manufacturer environment | TwinCAT engineering, commonly identified as XAE | The required STEP 7 version, including STEP 7 in TIA Portal |
| What executes the application? | A compatible runtime on a specified target | The supported TwinCAT runtime and target | The specified SIMATIC controller or supported software-controller product |
| How do I practise without the intended machine? | A suitable supported simulation or runtime arrangement | A suitable licensed test/runtime arrangement | A compatible S7-PLCSIM product or other specified test setup |
| What must I verify? | Device package, runtime, libraries and licences | Build, target, operating system, functions and licences | Engineering version, controller compatibility, options and simulation limits |
Treat this table as a list of questions to resolve, not a compatibility certificate. A project compiling successfully does not establish that the chosen target has the required fieldbus, performance or physical I/O.
CODESYS: a development platform with target-specific details
The CODESYS Development System overview describes IEC 61131-3 editors, library reuse, debugging, project exchange and support for devices from multiple manufacturers. This makes it relevant when you want to study a common engineering approach across compatible devices. It does not make every controller from every listed manufacturer compatible with every project.
CODESYS licensing guidance distinguishes the free Development System from separately specified products and extensions. Manufacturer-supplied compatible devices may already contain the necessary licences, subject to that manufacturer's terms. Check the actual runtime and optional functions rather than interpreting a free editor as a free production system or an open-source licence.
What portability means in practice
Separate reusable application logic from device-specific configuration. A function that works with ordinary values may be easier to reuse than code tied to a particular drive library, I/O address or hardware service. Even then, check data types, library versions, task assumptions and compiler behaviour on the new target.
Create a portability inventory before promising a customer that one project will support several hardware variants. List the device description, required libraries, visualisation components, communication roles and any vendor-specific APIs. Mark each item as confirmed, requiring adaptation or unknown. Do not infer portability simply because two products mention CODESYS.
The CODESYS project-transfer guidance recommends fixing relevant versions and preserving project dependencies when moving engineering work to another computer for the same controller. That is already a narrower problem than changing controller vendors. It illustrates why reproducible archives matter; it is not a promise of cross-device migration without testing.
For a learner, the CODESYS training guide provides a route into concepts and practice. Use the environment required by your course or device supplier when its packages and workflow differ from a generic tutorial.

TwinCAT: distinguish XAE from XAR and check the target
TwinCAT separates engineering and runtime responsibilities. XAE refers to the engineering environment; XAR refers to the runtime. This distinction matters when choosing a development computer, a controller and an operating system. A supported runtime operating system does not automatically mean the engineering environment runs on that same system.
Beckhoff's TwinCAT/BSD overview describes a runtime platform while keeping engineering on a Windows development computer with TwinCAT XAE. Beckhoff also documents TwinCAT Runtime for Linux, based on its own Linux distribution. Check the exact hardware, build and required functions; do not assume every feature has identical support on every operating system.
TwinCAT is not categorically limited to Beckhoff PCs
Beckhoff's licensing documentation for non-Beckhoff IPCs explicitly discusses those computers and requires a TwinCAT licence dongle for the described platform levels. That corrects the blanket claim that TwinCAT can run only on Beckhoff hardware. It does not establish that an arbitrary third-party computer meets real-time or support requirements.
When evaluating a target, ask for the supported processor, network interface, operating-system image and runtime configuration. Clarify who supports the combined system if you source components independently. A licence entitlement and a technically suitable installation are separate requirements.
Evaluate motion and integration against the actual application
If the machine specification calls for EtherCAT, motion control or integration with other software, identify the exact functions and supported devices needed. Ask how the proposed system will be tested and diagnosed. Do not reduce the decision to “TwinCAT is faster” without a defined workload and an acceptance test.
A useful training exercise may involve creating a project, mapping variables and explaining task execution. A production motion application introduces additional requirements that a small logic demonstration cannot validate. Keep course exercises and deployment qualification separate, even when both use the same engineering software.
STEP 7: specify Classic or TIA Portal
STEP 7 is not simply an obsolete name replaced by TIA Portal. Siemens documents STEP 7 engineering options within TIA Portal. When someone asks for STEP 7 experience, establish which engineering version, controller family and project environment they mean.
An existing installation may require competence with STEP 7 Classic and its associated project structure. Another course or project may require STEP 7 in TIA Portal. Choose according to the actual work. There is no useful universal rule that a beginner must avoid Classic if the equipment they are being trained to maintain requires it.
The Siemens PLC training guide helps you identify the course and software questions to ask. Obtain the exact course prerequisites and version requirements before installing software or purchasing a starter kit.
PLCSIM Advanced is a simulator, not the production software controller
Siemens describes S7-PLCSIM Advanced as a simulation product for testing supported controllers without physical controller hardware. Siemens separately offers the SIMATIC S7-1500S Software Controller for PC-based control. Similar terminology does not make these products interchangeable.
For simulation, check the supported CPU, firmware, engineering release, communication features and restrictions in the relevant product documentation. Do not assume that simulating an application demonstrates every physical interface or real-time property of a deployed controller. For production PC-based control, obtain the software-controller requirements and licence applicable to that target.
Migration also needs its own assessment. Opening, converting or rebuilding an older project may require supported hardware, libraries and feature replacements. Preserve the original archive and plan testing; do not assume a migration tool guarantees that every existing project transfers unchanged.

Which platform should a South African learner study first?
Choose a platform that lets you practise a relevant task with legitimate access to the required tools and help. A current employer, apprenticeship, college lab or named course may already determine the environment. If you are exploring independently, use a small learning objective and evaluate available instruction before committing to several installations.
For example, a learner preparing to assist with a particular Siemens project should establish its engineering version. Someone joining a machine builder with a TwinCAT project should ask which build and target are used. Someone working with a CODESYS-compatible device should obtain its device package and supplier instructions. These are situational examples, not claims about national market shares.
Beginners without a target employer
Start with signals, Boolean logic, state, timing and testing. Pick an accessible learning environment and learn to explain one small program before comparing every possible runtime. Once you have a concrete interest, inspect relevant job descriptions and course syllabuses for actual named requirements.
The IEC 61131-3 language-choice guide helps relate language choices to tasks. Knowing Structured Text syntax is useful, but it does not automatically give you experience with a vendor's project organisation, online tools or commissioning workflow.
Technicians supporting an existing installation
Ask for the authorised project archive, exact versions and approved training environment. Study how the application is organised and how observations are interpreted before making changes. Do not download a modified training project to production equipment or assume that a different version of the engineering software is harmless.
A practical course should match the maintenance tasks expected of you. Reading diagnostics, understanding a sequence and producing a controlled backup are different objectives from designing a new machine. Choose instruction that covers the actual role rather than the broadest feature list.
Machine builders and system integrators
Begin with the customer specification and a requirements review. Identify the required controller environment, communication roles, lifecycle expectations, spare-parts plan and engineering handover. A greenfield project may permit a wider choice, but that freedom does not remove the need to prove compatibility and support.
For South African delivery, confirm who provides local assistance, what remote support includes and how replacement equipment and licences are obtained. Ask about actual arrangements for your location, whether Johannesburg, Cape Town, Durban or elsewhere. Do not infer response times or availability from a vendor's global presence.
Compare fieldbus roles and interfaces, not just protocol names
A brochure listing PROFINET, EtherCAT, EtherNet/IP, Modbus or OPC UA is a starting point. Establish the role required, the supported target and any hardware or licence option. A system that can connect in one role may not provide the different role your machine requires.
Record the device model, configuration file, software release and expected data exchange. Include error handling and reconnection requirements. Test the actual combination in an appropriate environment before treating a communication option as accepted. A screenshot showing values changing does not cover interrupted communication, invalid data or startup behaviour.
Keep control data separate from its quality and freshness. An application may need to know whether a value is current and valid, not merely that a number remains in memory. Define the required behaviour when information is unavailable. This is an application requirement to implement and verify, not a universal property supplied automatically by any named platform.

A worked comparison exercise that does not invent a benchmark
Use the same small requirement to practise reading, coding and testing in the environments you can legitimately access. The following fictional exercise controls an on-screen indicator only. It is not a safety function, machine-control design or proof of real hardware performance.
There are three Boolean inputs: Request, Available and Inhibit. The indicator is true only when Request and Available are true and Inhibit is false. There is no stored state, timer, output wiring or automatic retry. Evaluate the result once for each supplied input combination.
| Request | Available | Inhibit | Expected indicator |
|---|---|---|---|
| False | False | False | False |
| False | False | True | False |
| False | True | False | False |
| False | True | True | False |
| True | False | False | False |
| True | False | True | False |
| True | True | False | True |
| True | True | True | False |
Only one of the eight combinations produces a true result. The two rows where Request and Available are both true distinguish the inhibited case from the permitted case. A test that checks only the permitted case can miss an implementation that ignores Inhibit.
Write the requirement in plain language before implementing it. In a supported text language, its logical relationship can be expressed as Request AND Available AND NOT Inhibit. Use each environment's actual declaration and assignment syntax. Do not assume an entire project file can be copied between systems because that expression is familiar.
Record the evidence from each environment
For each attempt, record the engineering version, execution environment, implementation, eight observed results and any assistance used. If you only inspected the code and did not execute it, mark execution as not performed. If a trial licence or unavailable target prevents a run, record the unresolved requirement rather than inventing a passing result.
This page's truth table is checked as a logical specification; it does not report native execution in CODESYS, TwinCAT or STEP 7. To compare your own runs, attach results from the actual environments. A generic simulator can help practise the logic but cannot establish those native results for you.
After all eight cases pass, change the requirement deliberately: suppose a new request says the indicator should be true whenever Request is true, even when Available is false. Update the written requirement and expected cases first. This makes the change reviewable and prevents an unexplained code edit from silently redefining success.
What this exercise can and cannot tell you
It can reveal whether you understand the Boolean relationship and can use the selected environment to implement and observe it. It can expose a missing condition or an incorrect negation. It cannot rank real-time performance, demonstrate fieldbus compatibility or prove competence to commission a machine.
Time spent finding a menu may inform your training needs. It is not a reliable benchmark of platform productivity after sustained use. Likewise, an empty test project's execution time does not represent a loaded production application with communications, motion and other tasks.

Evaluate timing with a defined measurement plan
Before comparing cycle-time claims, specify what matters: task period, execution duration, jitter, communication update interval or end-to-end response. These are different measurements. Define the target hardware, operating system, runtime build and representative workload for each measurement.
Use the vendor's supported diagnostic tools and record the test conditions. Identify what competing tasks, communication load and logging were active. State how many observations were made and which conditions remain untested. A measured maximum in one test is not automatically a guaranteed worst-case bound under all conditions.
The PLC scan-cycle guide explains why scan reasoning needs clear assumptions. Apply those ideas to the documented task and I/O model of your chosen controller. Avoid assigning a universal millisecond range to an entire platform or assuming PC-based control is always faster than dedicated hardware.
For learning, separate functional correctness from timing measurements. First establish what the application should do. Then test whether the implementation meets the applicable timing requirements in the intended environment. Passing a Boolean truth table does not answer that second question.
Build a licence and support checklist before spending
List engineering software, runtime, optional functions, simulation tools and maintenance arrangements separately. For each item, record the product identifier, licence scope, target or workstation restrictions, activation method and renewal or update terms. Ask for a dated quotation in the currency actually offered.
For a South African budget, include applicable tax, payment charges, training, hardware and delivery where relevant. Do not use an invented rand range for a complex platform configuration. Two quotations with the same platform name may cover very different functions and support periods.
Also agree how the system will be handed over. Identify who receives project sources, dependency archives, documentation and licences, and who handles recovery after a computer or controller replacement. A low initial price can leave an important requirement unresolved if nobody has responsibility for maintaining the engineering environment.
Keep unknowns visible in the decision record. Use confirmed, unsuitable or pending for each mandatory requirement, with a source or test attached. Do not convert a missing answer into a neutral score that allows it to disappear inside an average.
Use general practice to support vendor-specific learning
An educational environment can help you practise conditions, loops, state and test design before or between vendor lessons. Inspect PLC Simulator's Structured Text learning scope when you want additional conceptual practice. Keep its syntax and feature boundaries distinct from those of your target tool.
For test design, review PLC Simulator's program-testing activities. Use the relevant activities to improve your explanation of expected behaviour. They do not replace native vendor training, licences, supported runtime testing or supervised work on physical equipment.
A useful portfolio names both the concept and the environment. “Tested eight input combinations in an educational model” is precise. Claiming experience with three industrial runtimes because you completed that model is not. Accurate descriptions help a reviewer see what you know and what training you still need.

Questions learners ask about CODESYS, TwinCAT and STEP 7
Is CODESYS free and open source?
The Development System is available without a licence fee under its end-user terms. That is different from an open-source licence or a promise that every runtime and extension is free. Verify the terms of the specific products and target you intend to use.
Can TwinCAT run on a non-Beckhoff computer?
Beckhoff documents non-Beckhoff IPC licensing. The computer must still meet the relevant technical and support requirements, and the described licensing arrangements include a dongle. Do not treat this as approval for any arbitrary laptop or operating-system combination.
Is STEP 7 the same as TIA Portal?
STEP 7 is engineering software that also exists within TIA Portal; Classic versions are a separate version-specific context. Ask which release and controller the course or employer means. The two names should not be used as a simple old-versus-new opposition.
Is PLCSIM Advanced a production soft PLC?
It is a simulation product. Siemens' software-controller products have their own deployment requirements and licences. A simulated controller used for development should not be presented as an interchangeable production runtime.
Which platform is best for South African automation jobs?
Use the requirements of the roles, employers and courses you are actually considering. This comparison does not establish national market shares or salary premiums. Choose relevant practice and build truthful evidence of the tasks you can perform.
Can I move a Structured Text project between all three?
Some programming concepts and logic may be reusable, but project formats, declarations, libraries, device configuration and runtime assumptions differ. Treat migration as work requiring compatibility checks and tests, not as a guaranteed consequence of using a related language.
What should I ask an AI assistant when comparing these platforms?
Provide the exact controller or IPC, engineering release, required interfaces, available computer and learning objective. Ask it to separate engineering, runtime and simulation, cite manufacturer documentation and mark unknown compatibility details. Confirm consequential choices with the relevant provider rather than accepting an unsupported ranking.