# Identifying the Control Units (TROs) from a Mechanical Layout
### Mubea seat-cover store — Schönenberger drawing `500573_60_1`
**Author:** Automation Engineering · **As of:** 2026-07-28 · **Source:** `500573_60_1.dxf` (23.8 MB)
---
## 0. For readers outside our team — what this document is
Schönenberger builds the **material-flow control software** (Siemens TIA Portal / SCL) that
runs conveyor systems. A lot of that PLC code is repetitive: the same control block appears
once per functional point on the conveyor, differing only in its parameters. We are building
a tool that **generates that repetitive code automatically** from the plant layout.
The unit of that code is a **TRO — "Transfer Route Object"**: the control logic for **one
hand-over point** on the conveyor. A TRO is, for example, *one* stopper, *one* switch, *one*
storage block, or *one* driven conveyor segment. A plant is described as a set of connected
TROs.
**This document is the first step for a new plant:** we take the *mechanical* CAD drawing of
the Mubea seat-cover store and work out **which TROs the control system will need, and why** —
before any code is written. It is an engineering proposal, not yet a verified list (see §6).
> **Key limitation, stated up front:** this DXF is a **mechanical / steel-construction
> drawing**. It contains **no TRO numbers and no electrical signal tags** — those live in the
> electrical documentation, not here. Every TRO below is therefore **inferred** from the
> physical equipment we can see (drives, a switch, separators, scanners, gravity lanes) and
> matched to our standard type catalogue in
> [../TRO_Katalog/TRO_Katalog.md](../TRO_Katalog/TRO_Katalog.md).
---
## 1. The plant in plain language
| | |
|---|---|
| **Customer / project** | Mubea — 500573 "Sitzbezügelager" (seat-cover store), Wendlingen |
| **Conveyor system** | Schönenberger **TX200** overhead hanger conveyor |
| **What moves** | **Bügelträger** — hanger carriers that carry seat covers (*Sitzpolster* = cushion, *Lehne* = backrest) |
| **What the plant does** | Empty hanger carriers are **loaded** with covers, **circulate** on a powered track, are **stored** when empty in a large **gravity buffer**, pass a **quality-control** point, and can take an **express** route |
**Indicative material flow** (components are certain; exact routing is to be confirmed):
```mermaid
flowchart LR
classDef store fill:#d4f0d4,stroke:#338833,color:#111
classDef swi fill:#ffe4a0,stroke:#cc8800,color:#111
classDef sep fill:#d4e8ff,stroke:#3388cc,color:#111
classDef vario fill:#e8d4f0,stroke:#883388,color:#111
AUF["Aufgabestation
load covers onto hangers"]:::sep
V["Powered track
(TX200 friction drive)"]:::vario
W["Weiche W.12000.1
diverter"]:::swi
QC["Qualitätskontrolle
inspection stop"]:::sep
EXP["Express route"]:::sep
STORE["PinStore — gravity buffer
~20 gravity lines · 1 separator per line"]:::store
AUF --> V --> W
W -->|standard| QC
W -->|express| EXP
QC --> STORE
STORE -->|release empties| AUF
```

---
## 2. How we read the drawing (method & evidence)
Parsed with the `ezdxf` library. A full-text scan confirmed there are **no `TRO…` labels and
no `BG/MA/MB/BX…` electrical tags**. Identification therefore relies on four things a
mechanical drawing *does* contain:
1. **Named component blocks** — the mechanical part library (`S-SP` separator, `SCAN`, …).
2. **Equipment serials** carried as block attributes — `M.12000` (drive motor),
`W.12000.1` (switch), motor spec `TX200FD · WF20 · 0.37 kW · pitch 127`.
3. **Layer names** (German construction codes) — decisive for the gravity finding:
- `ABH-GEF-DRT` — *Abhängung **Gefälle** DRT* → **gravity (sloped) track** ✔ the store lines
- `TX200FD` — *Friction Drive* → the **powered** circulation track
- `5SEP-SP` — *Separator/Sperre*, `ZZSCANNER` — scanners, `3-BO-90/180` — curves
4. **Station labels** (text) — `Aufgabestation`, `Qualitätskontrolle`, `Express`,
`leere Bügelträger Rückführung`.
### Equipment actually present (main plan, duplicate detail removed)
| Element (block / tag) | What it is | Count | Powered? |
|---|---|---:|---|
| `M.12000` friction drives (`TX200-41019-D`) | motorised track segments | ~7 | powered (`TX200FD`) |
| `W.12000.1` switch (`TX200-41302-D`) | one diverter / Weiche | 1 | powered |
| `S-SP` separators (`5SEP-SP`) | one stopper per storage line | ~22 | on **gravity** lines |
| storage lanes (`ABH-GEF-DRT`) | gravity accumulation lines | ~20 | **gravity** |
| `SCAN` (`ZZSCANNER`) | barcode read points | 8 | — |
| `3-BO-90/180`, curves | passive track bends (not TROs) | many | — |
---
## 3. What changed vs. the first draft (corrections)
Three domain corrections from review, now applied:
1. **The big multi-lane block is the PinStore**, not an "empty-carrier buffer". It is the
single storage block that holds **all** the lines. → type **`PinStore_Auto`**.
2. **The storage lines are gravity lines** (layer `ABH-GEF-DRT`, *Gefälle*), not driven —
carriers roll down each lane and are held by the line separator. This is now the defining
evidence for the PinStore.
3. **There is no `Vario_workStation`.** The `Aufgabestation` and `Qualitätskontrolle` are
stop points on the track, not driven manual-station modules. They are modelled as simple
separators (`1Sep`).
---
## 4. Identified TROs
Types refer to [../TRO_Katalog/TRO_Katalog.md](../TRO_Katalog/TRO_Katalog.md). IDs are
provisional — the plant has no control numbering yet.
| TRO (provisional) | Type | Why we chose this type | Confidence |
|---|---|---|---|
| **Store** — *leere Bügelträger Rückführung* | **`PinStore_Auto`** | One storage block holding **all ~20 lines**; each line is a **gravity** lane (`ABH-GEF-DRT`) with its own `S-SP` separator that releases carriers one at a time — the defining pattern of a pin/line store | **Very high** |
| **Weiche `W.12000.1`** | **`1Sep1Swi`** | The single diverter in the plant (serial `W.12000.1`): one entry, two exits (standard vs. Express) | **High** |
| **Transport segments** ×~5–7 | **`Vario`** | Each `M.12000` friction-drive motor (`TX200FD`, 0.37 kW) powers one section of the circulation track — a driven conveyor segment | High (type) / Medium (count) |
| **Read stop(s)** at scanners | **`1Sep_SSCC`** / `1Sep`+scanner | Where a `SCAN` sits at a stopper, the carrier is halted and its barcode read before release | Medium |
| **Aufgabestation** (loading) | **`1Sep`** | A stop where an operator loads covers, then releases the carrier — a plain separator, **not** a driven work-station module | Medium |
| **Qualitätskontrolle** (inspection) | **`1Sep`** | A stop point for manual inspection on the powered track | Medium |
| **Express branch** | **`1Sep`** | The stopper feeding the switch's express exit | Low–Medium |
**PinStore — the heart of the plant** (gravity lines, one `S-SP` separator each):

**Aufgabestation / loading zone** (drives + scanner feeding the store's track):

**Annotated overview** of the whole plan:

---
## 5. Glossary (German ↔ meaning)
| Term | Meaning |
|---|---|
| **TRO** | *Transfer Route Object* — our control block for one hand-over point |
| **Bügelträger** | hanger carrier (holds the seat covers) |
| **Aufgabestation** | loading / infeed station |
| **Qualitätskontrolle** | quality control |
| **Weiche** | switch / diverter (two-way) |
| **Vereinzeler / Sperre** (`S-SP`) | separator / stopper — releases one carrier at a time |
| **Gefälle** (`ABH-GEF`) | gravity slope — the lines the carriers roll down |
| **PinStore** | multi-line gravity accumulation store |
| **Vario** | driven (friction/chain) conveyor segment |
| **TX200** | Schönenberger overhead-conveyor product line (`FD` = friction drive) |
---
## 6. Assumptions & next steps
- **Certain:** the plant is built around **one gravity PinStore** and **one switch**, served
by a **friction-driven** TX200 loop with barcode scanners. The *component types* are solid.
- **Approximate:** the **number and boundaries of the `Vario` segments** and the **exact
routing** are read from geometry and need confirmation.
- **A detail sub-region is drawn twice** (shifted ~55.7 m in X, same serials `M.12000` /
`W.12000.1`) — counted once here.
- **To turn this into a verified TRO list** we need the same inputs as a normal project:
the **electrical I/O list** (for the sensor/motor tags per unit) and, once it exists, the
**`FB_Main`** call sites (for TRO numbering, direction logic and jam areas) — the workflow
described in [../HundM/EA-Listen-Analyse.md](../HundM/EA-Listen-Analyse.md) and
[../HundM/Json_Layout-Konzept.md](../HundM/Json_Layout-Konzept.md).
*Figures generated from `500573_60_1.dxf` with `ezdxf`; markers overlaid on the block-insert
coordinates.*