# 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 ``` ![The DXF: conveyor plan (centre), sections (left), steel platform (right)](img/drawing_full.png) --- ## 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): ![PinStore gravity buffer — separators orange, scanners green, switch blue, drives red](img/buffer_zone.png) **Aufgabestation / loading zone** (drives + scanner feeding the store's track): ![Aufgabestation zone](img/aufgabe_zone.png) **Annotated overview** of the whole plan: ![Annotated overview](img/overview_annotated.png) --- ## 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.*