> For the complete documentation index, see [llms.txt](https://wiki.codeandcompile.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.codeandcompile.com/product-reviews/smart-devices/smart-weighing-indicator-controller/ind590-codesys-course.md).

# IND590 CODESYS Course

The **Mettler Toledo IND590** is not just a weighing terminal, it hosts a full **CODESYS soft-PLC** runtime. That means the same box that measures your weight can also run your control logic, serve a browser-based HMI, drive its own on-device panel, and exchange custom data with any PLC on your line, no gateway box and no extra hardware.

{% embed url="<https://canva.link/i03d3nlfs2m9ssx>" %}

This course is a hands-on, build-along series that takes you from your very first login all the way to a production-grade PROFINET data exchange with a Siemens S7-1500. Every episode is practical: you build the project, deploy it to real hardware, and end up with something you can reuse on the factory floor.

{% hint style="info" %}
**Course launching soon**

The full **IND590 CODESYS course** is not public yet. It is scheduled to go live in the **first week of September**. This page is your roadmap, bookmark it and check back, or subscribe on the [Code and Compile YouTube channel](https://www.youtube.com/@CodeandCompile) to be notified the moment it drops.
{% endhint %}

***

### 🎯 Who This Course Is For

* **Automation engineers** who already own an IND590 and want to unlock its CODESYS capability instead of leaving it as a simple indicator
* **System integrators** who need the IND590 to talk to a PLC, an HMI, or a SCADA system
* **Controls developers** curious about running IEC 61131-3 logic directly on a weighing controller
* Anyone moving from **reading weight data** to **building real applications** around it

{% hint style="success" %}
No prior CODESYS experience is required. The course starts from the very first login and builds up one concept at a time.
{% endhint %}

***

### 🔑 What You Will Learn

By the end of this series you will be able to:

* Activate and configure the **CODESYS runtime** on the IND590
* Read live **weight, status, and scale data** into your own PLC program
* Build a **stateful weighing application** using Function Blocks the right way
* Design a **browser-based WebVisu HMI** and a **TargetVisu on-device panel**
* Stream weight data to **Node-RED** over raw TCP/IP, and send commands back
* Exchange **custom data** with a **Siemens S7-1500 over PROFINET** using Shared Variables
* Understand when to use **standard weighing interfaces** versus **custom PLC template mode**, and pick the right tool for each job

***

### 🛠️ Prerequisites

| Requirement                  | Details                                                                 | Status     |
| ---------------------------- | ----------------------------------------------------------------------- | ---------- |
| Mettler Toledo IND590        | With CODESYS runtime and network access via Ethernet                    | ● Required |
| CODESYS Development System   | The IDE used to write and download your logic                           | ● Required |
| CODESYS license              | Test mode, pre-installed, or a separate license (covered in the course) | ● Required |
| Web browser                  | For the WebVisu HMI and IND590 web server                               | ● Required |
| Siemens S7-1500 + TIA Portal | For the PROFINET data-exchange episodes                                 | Use Case   |
| Node-RED                     | Installed locally or on a server, for the TCP/IP integration            | Use Case   |

{% hint style="warning" %}
**Library and firmware versions must match.** The ParameterManager and Scale libraries used in the later episodes must match your IND590 firmware version, or you will hit unresolved-reference errors on download. When in doubt, update the libraries together and contact your OEM for proprietary library updates.
{% endhint %}

***

### 📚 Course Roadmap

The course builds in a deliberate order, each module assumes the one before it.

{% stepper %}
{% step %}

### Getting Started with CODESYS on the IND590

Your first login, user management, and understanding what the CODESYS license actually unlocks. You will learn the three ways to experience CODESYS on the IND590 (test mode, pre-installed, separate license), the difference between the **PLC Interface** and a **CODESYS license**, and how activation works via `activation.mt.com`.
{% endstep %}

{% step %}

### Building Your First Weighing Program

Reading live weight values into CODESYS and structuring your logic properly. The key lesson: use **Function Blocks (not Functions)** for stateful weighing operations like Tare, Zero, Preset, and Clear, because Functions re-trigger every scan and corrupt values on a filling line. You will also meet the **flag pattern**, where lower-priority tasks only set request flags and the MainTask exclusively executes state changes to avoid race conditions.
{% endstep %}

{% step %}

### WebVisu – A Browser-Based HMI

Build and style a browser-based operator screen served straight from the IND590. Live weight display, setpoint entry, button command logic, a dynamic progress bar, and a professional dark theme. You will also see how to deploy the HMI to any third-party browser or device on the network.
{% endstep %}

{% step %}

### TargetVisu – The On-Device Panel

Build the UI that runs on the IND590's own panel at its native 800×480 resolution, including handling keypad-only (non-touchscreen) hardware and the fixed F-key assignments for Clear, Preset Tare, Tare, and Zero.
{% endstep %}

{% step %}

### TCP/IP Integration with Node-RED

Stream Gross, Net, Tare, and status from the IND590 into a live **Node-RED** dashboard over raw TCP, no middleware and no broker. Then close the loop by sending Setpoint and command values back down to CODESYS. Bidirectional TCP with a weighing controller done cleanly, end to end.
{% endstep %}

{% step %}

### Shared Variables – Custom Data over PROFINET

The finale: exchange your own **custom data** with a **Siemens S7-1500 over PROFINET** using the **ParameterManager** library and **Shared Variables**, in both directions. The PLC sends down a target weight and tolerance; the IND590 weighs the part, classifies it Under / OK / Over, and sends the verdict plus live values back, all flowing straight into your Siemens tag table. Two worked examples: a bare live-coded mechanism, then a production-ready pattern you can drop onto a real line.
{% endstep %}
{% endstepper %}

{% hint style="success" %}
Source code, presentations, and companion material for each episode will be available in the course platform once it is public.
{% endhint %}

***

## ♥️ Work With Me

I regularly test and build with **industrial automation and IIoT devices**. If you would like me to **review your product** or feature it in my courses and YouTube channel:

📧 Email: <rajvir@codeandcompile.com> or drop me a message on [LinkedIn](https://www.linkedin.com/in/singhrajvir/)
