---
title: "PLC module"
---

# PLC module

What the Editor's PLC module does for TwinCAT 3, CODESYS V3.5 and TIA Portal projects, how it drives the vendor engine, and exactly what has and has not been run against real tools and controllers.

The PLC module lets controls, commissioning and maintenance engineers work on IEC 61131-3 projects in the Editor instead of the vendor's engineering environment. It reads and writes the vendor's own project files, and drives the vendor's own engine for what only that engine can do: compiling, downloading to a controller, online change. The compiler, soft PLC, controllers and licences stay the customer's and run as separate processes; no vendor SDK, assembly or device description ships with the Editor.

Three vendor families are in scope: Beckhoff TwinCAT 3 (3.1.4024 and 4026), CODESYS V3.5 (SP17 to SP22, with its OEM development systems) and Siemens TIA Portal (V17 to V21). TwinCAT is furthest along. CODESYS and TIA Portal are reached through the vendor engine for builds, libraries, tasks, tags and controller actions, but their project files are not opened as files yet. For a short summary of every domain module, see [Domain modules](https://neuralinverse.com/docs/build/domain-modules/).

## Verification state: read this first

The module is pre-release. **No capability is verified.** Everything has run on Linux only, against real TwinCAT files from public repositories, a model of a TwinCAT router on real TCP, a model of an S7-1500 web server on real HTTPS, a model of the engineering host and models of the Windows tools.

- No vendor tool has been run: not TwinCAT XAE, not CODESYS, not TIA Portal, not PLCSIM Advanced.
- No controller has been connected.
- Nothing has run on Windows, which is where every vendor engine runs.
- Verification kits for a lab (TwinCAT project round trip, TwinCAT ADS, the engineering host, TcUnit tests, S7-1500 web API) are written and waiting for their first report.

Each capability is in one of these states, and moves only on evidence:

| State | Meaning in this module |
|---|---|
| Not built | Nothing built; listed on [What's next](https://neuralinverse.com/docs/modules/plc/whats-next/) |
| Modelled | Built and tested against a model of the vendor engine or controller (a router model on real TCP, a stand-in engineering host, models of Windows tools), or on files TwinCAT wrote that are held as test fixtures |
| Kit shipped | As modelled, and a verification kit exists that runs it on the real vendor tool or controller; waiting for its report |
| Verified | Run against the real vendor tool or controller, with edition, version and operating system recorded |
| Verified by a customer | Run by a customer's engineer on their own project |

Every page of this section states the state of what it describes. Do not use the module for production work, and never against a machine in production or a plant network. Use a bench controller on an isolated network with nothing on its outputs that can move, heat or switch anything.

## What it covers

| Area | TwinCAT 3 | CODESYS V3.5 | TIA Portal |
|---|---|---|---|
| Open the project | Kit shipped | Project file detected; read through the engine per function | Project file detected; read through the engine per function |
| Edit project objects, round trip | Kit shipped | Not built | Not built |
| Structured Text language service | Modelled | Modelled (the TwinCAT and CODESYS extensions; the rest of the CODESYS dialect not built) | Not built (SCL) |
| Declaration table | Modelled | Not built | Not built |
| LD, FBD, SFC and CFC diagrams | Modelled, kit shipped | Not built | Not built |
| Build with the vendor compiler | Kit shipped | Kit shipped | Kit shipped |
| Libraries | References modelled; save as library kit shipped | References and installed libraries kit shipped | Not built |
| Tasks, I/O and tags | Tasks and I/O links modelled | Task configuration kit shipped | PLC tags kit shipped |
| Download, start, stop, boot project | Modelled | Modelled (login, online change, start, stop, resets, logout) | Modelled (download to an S7-1500 or PLCSIM Advanced) |
| Soft PLC | Not built | Not built | PLCSIM Advanced instances modelled |
| Watch values and writes | Kit shipped (ADS) | Modelled | S7-1500 web API, read only: kit shipped |
| Live values in the code | Kit shipped (ADS) | Not built | Not built |
| Trace | Kit shipped | Not built | Not built |
| Diagnostics | Not built | Not built | S7-1500 diagnostic buffer: kit shipped |
| Tests in the Testing view | TcUnit: kit shipped | Not built | Not built |
| Per-object compare with Git | Modelled | Not built | Not built |
| Agent tools | Modelled | Modelled | Modelled |

Safety programs are edited in the certified vendor editors. [What's next](https://neuralinverse.com/docs/modules/plc/whats-next/) lists everything that is not built, such as static analysis, forcing, breakpoints and TwinCAT online change.

## How the module runs

- **Behind a setting.** The module runs only while `neuralInverse.plc.enabled` is on and the workspace is trusted. It is off by default. A workspace that holds a TwinCAT, CODESYS or TIA Portal project gets a one-time offer to turn it on; the Editor never turns it on by itself. See [Set up](https://neuralinverse.com/docs/modules/plc/set-up/).
- **Vendor engines through the engineering host.** Builds, downloads and other actions that need the vendor engine run through the engineering host, a helper program on the Windows engineering machine that binds at run time to the customer's TwinCAT Automation Interface, CODESYS scripting engine, TIA Portal Openness and PLCSIM Advanced Runtime API. It has been compiled and its protocol tested on Linux; it has not yet run on Windows or against any vendor engine. See [Vendor tools and the engineering host](https://neuralinverse.com/docs/modules/plc/toolchain/).
- **The module's own code for formats and protocols.** The TwinCAT project reader and writer, the Structured Text language service, the diagram reader, the ADS client and the S7-1500 web API client are the module's own code, written from real files and from published sources.
- **Every action on a controller is confirmed and logged.** See [Approvals and audit](https://neuralinverse.com/docs/modules/plc/approvals-and-audit/).

## Pages in this section

Set up and tools:
- [Set up](https://neuralinverse.com/docs/modules/plc/set-up/): requirements, turning the environment on, the walkthrough and a smoke test.
- [Vendor tools and the engineering host](https://neuralinverse.com/docs/modules/plc/toolchain/): tool discovery, path settings and the helper that runs the vendor engines.

Projects and editing:
- [Open TwinCAT projects](https://neuralinverse.com/docs/modules/plc/projects/): the TwinCAT Projects view, and how CODESYS and TIA Portal projects appear.
- [Add, rename, move and remove objects](https://neuralinverse.com/docs/modules/plc/project-objects/): project edits with minimal diffs.
- [Structured Text](https://neuralinverse.com/docs/modules/plc/structured-text/): the language service.
- [Declaration table](https://neuralinverse.com/docs/modules/plc/declaration-table/): variable declarations as an editable table.
- [LD, FBD, SFC and CFC diagrams](https://neuralinverse.com/docs/modules/plc/diagrams/): graphical bodies drawn and edited.
- [Libraries](https://neuralinverse.com/docs/modules/plc/libraries/): TwinCAT and CODESYS library references, save as library.
- [Tasks and I/O links](https://neuralinverse.com/docs/modules/plc/tasks-and-io/): TwinCAT tasks and I/O links, CODESYS task configuration.
- [TIA Portal PLC tags](https://neuralinverse.com/docs/modules/plc/tia-portal-tags/): tag tables through Openness.

Build and download:
- [Build with the vendor compiler](https://neuralinverse.com/docs/modules/plc/build/).
- [Activate and download to TwinCAT](https://neuralinverse.com/docs/modules/plc/twincat-controller/).
- [CODESYS online actions](https://neuralinverse.com/docs/modules/plc/codesys-online/).
- [Download to S7-1500 and PLCSIM Advanced](https://neuralinverse.com/docs/modules/plc/tia-portal-download/).

Online:
- [Connect to controllers](https://neuralinverse.com/docs/modules/plc/targets/): TwinCAT and S7-1500 targets.
- [Watch values](https://neuralinverse.com/docs/modules/plc/watch/): the Watch views for TwinCAT, CODESYS and S7-1500.
- [Live values in the code](https://neuralinverse.com/docs/modules/plc/live-values/).
- [Write values](https://neuralinverse.com/docs/modules/plc/write-values/).
- [Trace](https://neuralinverse.com/docs/modules/plc/trace/).
- [S7-1500 diagnostic buffer](https://neuralinverse.com/docs/modules/plc/s7-1500-diagnostics/).

Test, review and governance:
- [TcUnit tests](https://neuralinverse.com/docs/modules/plc/tests/).
- [Review changes](https://neuralinverse.com/docs/modules/plc/review-changes/): compare TwinCAT objects with Git.
- [Approvals and audit](https://neuralinverse.com/docs/modules/plc/approvals-and-audit/): confirmations, outcomes and the PLC log.
- [Agent tools](https://neuralinverse.com/docs/modules/plc/agents/): what agents can read and change.
- [Reference and troubleshooting](https://neuralinverse.com/docs/modules/plc/reference/): settings, commands, views, formats and fixes.
- [What's next](https://neuralinverse.com/docs/modules/plc/whats-next/): everything not built yet.
