lib/scl_skeleton.py and lib/tro_extract.py already run the pipeline end-to-end (annotated DXF -> TRO-JSON -> FB_Main SCL skeleton), but CLAUDE.md and README.md still described these as unwritten tools (tro_export.py / scl_gen.py). Update the current-state docs: - CLAUDE.md: project purpose, reading order, roadmap section, and standard-template notes now describe the built pipeline plus the parts still open (full layout JSON schema, other per-controller blocks, timing defaults, --skip-json). - README.md: bin/ tree and usage examples for tro_extract/scl_skeleton. - doc/Python_Scripts.md: intro counts (8 modules / 5 CLI tools), header date, pipeline diagram, and tro_overrides.py in the lib list. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.1 KiB
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— einREGIONpro 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 alsTODO(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) aufPATHfuer--tosvg, optional aber empfohlen - fuer
tro_annotate.py:ezdxf(wird perrequirements.txtinstalliert)
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)