Download to the panel
Downloading is one button in the editor (the blue ⭳ icon, or F5).
There is no separate application, you need neither Python nor PlatformIO,
and you do not have to know what happens underneath. This chapter is about
what happens underneath — because during commissioning it comes in useful
exactly once.
Two different things: the runtime and the program
| Runtime | Program (pack) | |
|---|---|---|
| what it is | the panel's firmware | your screens, tags and logic |
| when it is written | on a new board or a new ctrl32 version | on every project change |
| how | Flash runtime on the board page (USB, esptool) | the ⭳ button / F5 |
| takes | tens of seconds | seconds |
Changing a screen does not mean reflashing the panel. The visualization is data, not code — the panel reads it straight from flash.
What happens when you press ⭳
- The editor builds the project into a binary pack. If the build fails, nothing else happens and a window opens with the whole output.
- The pack goes over the serial port in chunks (2 kB, each acknowledged).
- It is written into the inactive slot — the panel has two (
visu_a,visu_b) and is currently running from one of them. - The panel verifies the whole pack: CRC, format, schema version and target board.
- Only then does it switch the active slot and restart.
A download cannot brick the panel
When anything is wrong — a broken cable, a bad pack, the wrong board — the switch simply does not happen. The old pack stays in the other slot and the panel keeps running. That is not luck; it is the point of having two slots.
Pick the port here
The port selector in both transfer dialogs starts empty and the action stays disabled until you choose one. Nothing is preselected on purpose: a port nobody picked reads as a setting, and the first sign that it was not would be bytes going to a device that is not there.
Why the panel refuses a pack
| Message | Cause |
|---|---|
ERR: size/slot |
the pack is larger than the partition (or the slot cannot be opened) |
ERR: crc |
the transfer was corrupted — try again, check the cable |
| invalid target | the project is for a different board than the one connected |
| old format version | the runtime is older than the pack → flash the runtime |
The target-board check is deliberately strict. A pack for a panel with a different display and different pins would load and run — and the machine would do something other than what you expect.
Transport: always the serial port
Downloading goes over USB / the serial line, not over WiFi or Ethernet. That is a deliberate decision: during commissioning a cable is the one thing that always works, and putting a program into a machine over a network is something to secure properly first. Network download comes later.
The same port is used for online monitoring — monitoring therefore parks itself for the duration of a download and reconnects by itself after the panel restarts.
Download into a machine that is standing still
Writing to flash stalls cache access for both cores, so the logic does not run while it happens, even at the highest priority. The panel therefore allows a download only in STOP — the same reason an S7 has a RUN/STOP switch.
Runtime
The firmware is written from a catalog of prebuilt binaries for the board
(runtimes/), not compiled on your PC. You need no toolchain installed
and you get exactly the binary we tested.
It runs on its own thread, so the editor keeps drawing meanwhile, and it does not touch the pack slots — your program stays in the panel after a runtime flash.
What is downloaded together with the program
The pack contains everything the panel needs, in one file:
- the header (magic, schema version, target board, CRC32),
- the tables of strings, tags, alarms and styles,
- assets (fonts, icons, images),
- screens,
- the program bytecode and the ST source (used to prove identity when going online).
The panel parses nothing out of it — it maps it from flash and reads it directly. Loading a screen takes less than a millisecond.
Licence
Downloading into a real panel is a paid part. Drawing, programming and simulating work in DEMO too — see Licensing.