---
title: "Set up the PLC module"
---

# Set up the PLC module

Requirements, turning the PLC environment on, the Get Started walkthrough and a smoke test before connecting anything.

The PLC module is part of the Editor; there is nothing separate to install for editing projects. Building and acting on controllers also needs the vendor tools as you already use them and the engineering host helper. Nothing on this page has been run on Windows yet: the requirements below are what the code expects, not a tested configuration.

## Requirements

| What | Needed for | Notes |
|---|---|---|
| A trusted workspace | Everything | In Restricted Mode nothing PLC runs; a notification says why and offers Manage Workspace Trust |
| A copy of the project under Git | Recommended for everything | Every edit then shows in Source Control and can be undone |
| Windows 10 or 11 engineering machine | Builds and controller actions | The vendor engines run only on Windows. On Linux and macOS the module edits files and connects over ADS and HTTPS, and tool discovery logs that it does not look for vendor tools |
| TwinCAT 3.1.4024 or 4026 (XAE in TcXaeShell or Visual Studio) | TwinCAT builds and controller actions | Your installation and licences, unchanged |
| CODESYS V3.5 (SP17 to SP22), or an OEM version | CODESYS builds, online actions, libraries, tasks | Found only through the setting `neuralInverse.plc.paths.codesys` |
| TIA Portal V17 to V21 with Openness | TIA Portal builds, download, PLC tags | Your user must be in the Windows group "Siemens TIA Openness" |
| PLCSIM Advanced | Simulated S7-1500 instances | Its Runtime API is loaded from your installation |
| .NET Framework 4.8 | The engineering host | Part of Windows 10 and 11; the helper needs no administrator rights |
| A bench controller on an isolated network | Online values, writes, downloads | TwinCAT: a route on the PLC for this machine's AMS Net ID and ADS on TCP 48898. S7-1500: the web server enabled and a web server user |

## Turn the PLC environment on

1. Open the folder that holds your project, ideally a copy of a TwinCAT project with its `.sln`, and trust it when the Editor asks.
2. When the folder holds a TwinCAT, CODESYS or TIA Portal project, the Editor offers once per workspace to enable the PLC environment. Accept it, or run **Neural Inverse: Enable PLC Environment** from the Command Palette. The command asks for workspace trust first, then sets `neuralInverse.plc.enabled` for the workspace (for the user when no folder is open).
3. The side bar gets a **PLC** container with the views **TwinCAT Projects**, **Watch**, **S7-1500 Diagnostics** and **S7-1500 Watch (Web API)**; all but the first can be hidden. All PLC commands are in the Command Palette under **Neural Inverse PLC**.
4. The module's log is in the **Output** panel, channel **PLC**.

To turn it off, run **Disable PLC Environment**. Turning it off stops every PLC feature: agent tools are removed, live values are hidden and a running trace ends, with their ADS notifications deleted, and an S7-1500 session is logged out.

## The Get Started walkthrough

The Welcome page has a walkthrough, **Get Started with PLC Engineering**. Its six steps tick only when the outcome is shown, never on a click alone:

| Step | What it asks you to do |
|---|---|
| Open Your TwinCAT Project | Open the folder of your TwinCAT solution; the TwinCAT Projects view reads it |
| Check Your Structured Text | Open a POU; its Structured Text is outlined and checked as you type |
| Find Your Vendor Tools | Run Show PLC Toolchain |
| Connect to a Controller | Add a TwinCAT target and connect read-only |
| Watch Live Values | Upload the symbols and add watches |
| Write a Value | Write one value after the confirmation |

The walkthrough covers TwinCAT only.

## Smoke test without a controller

Before connecting anything:

1. Look at the **TwinCAT Projects** view: the solution, TwinCAT project, PLC projects with folders and objects, libraries, tasks and I/O devices, as in XAE's Solution Explorer.
2. Click an object: its file opens with an outline (Ctrl+Shift+O).
3. Create `test.st` with a function block that has an `IF` and no `END_IF`: you see colouring, the outline, and a problem for the open `IF`.
4. Run **Show PLC Toolchain** and keep its output.
5. Run `git status` in the project folder: opening writes nothing.

If a step fails, keep the **PLC** output for the report. See [Reference and troubleshooting](https://neuralinverse.com/docs/modules/plc/reference/).

## Next steps

- [Vendor tools and the engineering host](https://neuralinverse.com/docs/modules/plc/toolchain/): point the module at TwinCAT, CODESYS and TIA Portal.
- [Connect to controllers](https://neuralinverse.com/docs/modules/plc/targets/): add a TwinCAT or S7-1500 target.
