Samer AyadiandClaude Sonnet 5 97965e8ec7 TRO-Fluss: Weichenerkennung ohne Bahn-Sperre, Vario/1Sep-Sonderfaelle je Separator
_find_switch_separators: Regel 2 (naechster freier Separator <= 1500mm) lief
bisher nur auf einer Bahn, die Regel 1 (<=500mm) schon bestaetigt hatte. Bei
HundM05 lagen nach einer CAD-Aktualisierung alle 5 echten Weichen-Separatoren
gleichmaessig bei ca. 1013-1016mm - ausserhalb von Regel 1, wodurch die
Bahn-Sperre fuer jede Bahn zublieb und keine einzige Weiche mehr erkannt
wurde. Die Sperre entfaellt; SWITCH_FALLBACK_MM bleibt die alleinige Schranke
gegen Fehlzuordnungen (der eigentliche Schutz vor dem urspruenglichen
Mubea-Fehlfund, der 5-9m entfernte Separatoren betraf).

derive_tros, angetriebene Strecken (Schritt 2): zwei Faelle stufen einen
Separator trotz Host "Strecke" als 1Sep statt Vario ein:

- Letzter Separator vor dem Wiedereinschleusen auf die Kreisel-Bahn (in
  TrackIds-Reihenfolge) - reiner Vereinzeler ohne eigene VarioDrive-Strecke,
  die Kreisel-Bahn treibt ab dort selbst an (HundM05 VF_3 vor Ort bestaetigt).
- Ein nicht-letzter Separator, dessen vorangehendes Segment "horizontal"
  (keine aktive Antriebsrichtung) gefuehrt wird, dabei aber tatsaechlich an
  Hoehe verliert (> 30mm) - ein unbetriebenes Gefaelle-Teilstueck innerhalb
  einer gemischten VF/GF-Streckengruppe (HundM05 VF_1/0035).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-23 17:20:18 +02:00
2026-08-20 11:38:51 +02:00
2026-08-20 11:38:51 +02:00
2026-07-20 16:28:31 +02:00

sps_skel

Das Programm erhält ein mechanisches Layout von der Projektierung oder dem Angebotswesen zusammen mit dem elektrischen Layout (Liste aller Sensoren, Stopper, Weichen, etc.). Daraus soll es ein Skelett für die SPS-Programmierung (Siemens SCL, TIA Portal) erzeugen — aufgebaut aus TRO-Bausteinen (Transfer Route Object), den wiederkehrenden Steuerungseinheiten einer Fördertechnik-Anlage.

Stand des Projekts

Aus einem CSV-Export der mechanischen Planung (ILS 2.0) werden automatisch

  • der Materialfluss-Graph der mechanischen Objekte (Strecken, Gefällestrecken, Kreisel),
  • die daraus abgeleitete TRO-Liste samt eigenem Flussdiagramm,
  • eine annotierte Kopie der BricsCAD-Zeichnung mit einem Marker-Symbol pro TRO (danach in BricsCAD von Hand nachbearbeitbar — TROs verschieben, ergänzen, Typ ändern),
  • daraus zurückgelesen ein JSON-Modell der TROs (liest nur die Zeichnung, erfasst also auch von Hand vorgenommene Korrekturen), und
  • daraus ein SCL-Gerüst für FB_Main — ein REGION pro TRO mit Instanzaufruf und allen Parametern in der richtigen Reihenfolge, aber bewusst nicht lauffähig: jeder Wert, der aus der E-Planung stammen muss (Sensor-/Aktoradressen, Separator-/Weichennummern, Staubereiche, ungeprüfte Zeiten), ist als TODO(E-Planung) markiert statt geraten.

Diese fünf Werkzeuge liegen als CLI-Tools in lib/ und sind über bin/-Wrapper aufrufbar (siehe unten). Details, Domänenmodell und die verbleibende Roadmap stehen in doc/, allen voran doc/Python_Scripts.md.

Roadmap

Offen ist vor allem die JSON-Layout-Datei nach dem in doc/HundM/Json_Layout-Konzept.md beschriebenen Schema (plc, controlUnits, sensors[], conveyors[], tros[], loadingBooms[], emptyCarrBuffers[], routing, jamAreas[], scanners[], connections[], destinations[]) als von Hand editierbares Zwischenformat vor der SCL-Erzeugung, sowie die Generierung der übrigen Bausteine je Steuerung (FB_CallSensors, FC_Direction, FC_Call_Jams) — scl_skeleton.py deckt bisher nur FB_Main ab. Siehe CLAUDE.md (Abschnitt "Roadmap") für den aktuellen Stand der Planung dazu.

Projektstruktur

sps_skel/
  bin/                      Umgebungsskripte + ein .bat/.sh-Wrapper-Paar je CLI-Tool
    setenv.bat/.sh          Umgebungsvariablen setzen
    install_py.bat/.sh      venv erstellen + pip install
    activate_venv.bat/.sh   venv aktivieren
    get_cmd.bat/.sh         Shell mit Umgebung oeffnen
    material_flow.bat/.sh   Wrapper fuer lib/material_flow.py
    tro_flow.bat/.sh        Wrapper fuer lib/tro_flow.py
    tro_annotate.bat/.sh    Wrapper fuer lib/tro_annotate.py
    tro_extract.bat/.sh     Wrapper fuer lib/tro_extract.py
    scl_skeleton.bat/.sh    Wrapper fuer lib/scl_skeleton.py
  cad/                      generiertes BricsCAD-LISP (tro_types.lsp) fuer den TROEDIT-Dialog
  cfg/                      Konfigurationsdateien (INI/JSON); dxf_registration.json
  data/                     Eingabedaten - CSV-Exporte, DXF (nicht im Git)
  doc/                      Dokumentation, siehe doc/Python_Scripts.md
  examples/                 Beispieldateien
  lib/                      Python-Quellcode (CLI-Tools + Bibliotheken)
  log/                      Log-Dateien (nicht im Git)
  results/                  Ergebnisse der CLI-Tools (.dot/.svg/.md/.dxf, nicht im Git)
  tests/                    Unit Tests
  .gitignore
  LICENSE
  README.md
  requirements.txt

Umgebungsvariablen

Variable Beschreibung
SPS_SKEL Wurzelverzeichnis
SKEL_BIN Skriptverzeichnis
SKEL_LIB Python-Quellcode
SKEL_CFG Konfigurationsdateien
SKEL_DATA Eingabedaten
SKEL_DOC Dokumentation
SKEL_LOG Log-Dateien
SKEL_RESULTS Ergebnisse
SKEL_EXAMPLES Beispieldateien
SKEL_TESTS Unit Tests
PYTHONPATH Erweitert um SKEL_LIB

Installation

Voraussetzungen

  • Python 3.10 oder hoeher
  • Graphviz (dot) auf PATH fuer --tosvg, optional aber empfohlen
  • fuer tro_annotate.py: ezdxf (wird per requirements.txt installiert)

Setup (Windows)

bin\install_py.bat

Setup (Linux / macOS)

bash bin/install_py.sh

Nutzung

Umgebung setzen

bin\setenv.bat              # Windows
source bin/setenv.sh        # Linux / macOS

Shell mit gesetzten Variablen oeffnen

bin\get_cmd.bat             # Windows
source bin/get_cmd.sh       # Linux / macOS

venv aktivieren

bin\activate_venv.bat       # Windows
source bin/activate_venv.sh # Linux / macOS

CLI-Tools ausführen

Jedes Tool wird über seinen bin/<name>.bat/.sh-Wrapper aufgerufen; dieser setzt die Umgebung, aktiviert .venv und ruft dann das Python-Modul auf. --file/--dxf akzeptieren entweder einen Dateinamen (wird gegen %SKEL_DATA% aufgelöst) oder einen vollen Pfad; Ausgaben landen in %SKEL_RESULTS%.

REM 1) Materialfluss der mechanischen Objekte
bin\material_flow.bat --file mubea.csv --tosvg --doc

REM 2) TRO-Liste + eigenes Flussdiagramm ableiten
bin\tro_flow.bat --file mubea.csv --tosvg --doc

REM 3) TROs als Marker-Symbole in eine Kopie der CAD-Zeichnung einbrennen
bin\tro_annotate.bat --file mubea.csv --dxf 500573_60_1.dxf --flow --fb --legend

REM (Zeichnung optional in BricsCAD von Hand nachbearbeiten)

REM 4) TROs aus der (ggf. bearbeiteten) Zeichnung zurueck in JSON lesen
bin\tro_extract.bat --dxf export_annotated.dxf

REM 5) FB_Main-SCL-Geruest aus dem JSON erzeugen
bin\scl_skeleton.bat --json export_tro.json --start TRO07

Alle Switches, Ausgabedateien und Exit-Codes der drei Tools sind in doc/Python_Scripts.md dokumentiert; das Domänenmodell (TRO-Typen, geplantes JSON-Layout, I/O-Listen-Analyse) findet sich in den übrigen Dokumenten unter doc/.

Lizenz

MIT License - siehe LICENSE

Autor

Michael Stangl (GitHub: mistamichael)

S
Description
No description provided
Readme MIT
20 MiB
Languages
Python 94.6%
Shell 2.7%
Batchfile 2.6%