Docs: reflect implemented DXF->JSON->SCL first version
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>
This commit is contained in:
@@ -9,51 +9,37 @@
|
||||
|
||||
## Stand des Projekts
|
||||
|
||||
Der eigentliche SCL-Generator (JSON-Layout → TIA-Portal-Code) ist **noch nicht
|
||||
geschrieben**. Was bereits funktioniert, ist die Ableitung der Vorstufen dazu:
|
||||
aus einem CSV-Export der mechanischen Planung (ILS 2.0) werden automatisch
|
||||
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, und
|
||||
- die daraus abgeleitete **TRO-Liste** samt eigenem Flussdiagramm,
|
||||
- eine **annotierte Kopie der BricsCAD-Zeichnung** mit einem Marker-Symbol pro
|
||||
TRO
|
||||
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.
|
||||
|
||||
erzeugt. Diese drei Werkzeuge liegen als CLI-Tools in `lib/` und sind über
|
||||
Diese fünf Werkzeuge liegen als CLI-Tools in `lib/` und sind über
|
||||
`bin/`-Wrapper aufrufbar (siehe unten). Details, Domänenmodell und die
|
||||
Roadmap zum Generator stehen in `doc/`, allen voran `doc/Python_Scripts.md`.
|
||||
verbleibende Roadmap stehen in `doc/`, allen voran `doc/Python_Scripts.md`.
|
||||
|
||||
## Roadmap
|
||||
|
||||
`tro_annotate.py` ist aktuell die letzte Stufe: Der Nutzer kann die annotierte
|
||||
DXF-Kopie danach von Hand weiterbearbeiten — TROs verschieben, ergänzen oder
|
||||
deren Typ ändern (`TRO_INSERT`/`TRO_EDIT` im BricsCAD-Menü, siehe
|
||||
`doc/HundM/BricsCAD_TRO_Symbol.md`). Geplant sind zwei weitere Tools, die diese
|
||||
Zeichnung bis zum fertigen SCL-Code weiterführen:
|
||||
|
||||
1. **`tro_export.py`** (geplant) — liest die (ggf. von Hand nachbearbeitete)
|
||||
annotierte DXF zusammen mit dem CSV-Export und leitet daraus die
|
||||
JSON-Layout-Datei nach dem in `doc/HundM/Json_Layout-Konzept.md`
|
||||
beschriebenen Schema ab (`plc`, `controlUnits`, `sensors[]`, `conveyors[]`,
|
||||
`tros[]`, `loadingBooms[]`, `emptyCarrBuffers[]`, `routing`, `jamAreas[]`,
|
||||
`scanners[]`, `connections[]`, `destinations[]`). Timing-Werte pro TRO
|
||||
(`trailingTime`, `handlingTime`, `senFree`, `senWait`, `jamTime`, ...)
|
||||
kommen dabei standardmäßig aus der typspezifischen Default-Tabelle
|
||||
(`doc/TRO_Typen.md`); trägt das CAD-Symbol einen `OVERRIDE_TIMING_JSON`-Wert
|
||||
(siehe `doc/HundM/BricsCAD_TRO_Symbol.md`), gewinnt der Override. Die
|
||||
erzeugte JSON-Datei ist danach von Hand editierbar, um einzelne Defaults
|
||||
oder Zeiten anzupassen, bevor daraus SCL generiert wird.
|
||||
2. **`scl_gen.py`** (geplant) — liest die JSON-Layout-Datei und erzeugt daraus
|
||||
die `.scl`-Skeleton-Dateien für den direkten TIA-Portal-Import (`FB_Main`,
|
||||
`FB_CallSensors`, `FC_Direction`, `FC_Call_Jams` je Steuerung). Mit dem
|
||||
Schalter `--skip-json` läuft dieser Schritt auch ohne manuell
|
||||
nachbearbeitete JSON-Datei: `scl_gen.py` liest dann DXF und CSV direkt (wie
|
||||
`tro_export.py`) und erzeugt sofort SCL mit den Typ-Defaults, ohne eine
|
||||
Zwischen-JSON-Datei zu schreiben oder einzulesen — sinnvoll, wenn an den
|
||||
Defaults nichts manuell angepasst werden muss.
|
||||
|
||||
Beide Tools bekommen wie üblich ein `bin/<name>.bat`/`.sh`-Wrapper-Paar und
|
||||
werden in `doc/Python_Scripts.md` dokumentiert, sobald sie existieren.
|
||||
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
|
||||
|
||||
@@ -67,6 +53,8 @@ sps_skel/
|
||||
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)
|
||||
@@ -158,6 +146,14 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user